hotshot_contract_adapter/bindings/
lightclientarbitrumv2.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(Default, Debug, PartialEq, Eq, Hash)]
22    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
23    #[derive(Clone)]
24    pub struct BaseField(alloy::sol_types::private::primitives::aliases::U256);
25    const _: () = {
26        use alloy::sol_types as alloy_sol_types;
27        #[automatically_derived]
28        impl alloy_sol_types::private::SolTypeValue<BaseField>
29        for alloy::sol_types::private::primitives::aliases::U256 {
30            #[inline]
31            fn stv_to_tokens(
32                &self,
33            ) -> <alloy::sol_types::sol_data::Uint<
34                256,
35            > as alloy_sol_types::SolType>::Token<'_> {
36                alloy_sol_types::private::SolTypeValue::<
37                    alloy::sol_types::sol_data::Uint<256>,
38                >::stv_to_tokens(self)
39            }
40            #[inline]
41            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
42                <alloy::sol_types::sol_data::Uint<
43                    256,
44                > as alloy_sol_types::SolType>::tokenize(self)
45                    .0
46            }
47            #[inline]
48            fn stv_abi_encode_packed_to(
49                &self,
50                out: &mut alloy_sol_types::private::Vec<u8>,
51            ) {
52                <alloy::sol_types::sol_data::Uint<
53                    256,
54                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
55            }
56            #[inline]
57            fn stv_abi_packed_encoded_size(&self) -> usize {
58                <alloy::sol_types::sol_data::Uint<
59                    256,
60                > as alloy_sol_types::SolType>::abi_encoded_size(self)
61            }
62        }
63        #[automatically_derived]
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(
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(
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 alloy_sol_types::SolType for BaseField {
96            type RustType = alloy::sol_types::private::primitives::aliases::U256;
97            type Token<'a> = <alloy::sol_types::sol_data::Uint<
98                256,
99            > as alloy_sol_types::SolType>::Token<'a>;
100            const SOL_NAME: &'static str = Self::NAME;
101            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
102                256,
103            > as alloy_sol_types::SolType>::ENCODED_SIZE;
104            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
105                256,
106            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
107            #[inline]
108            fn valid_token(token: &Self::Token<'_>) -> bool {
109                Self::type_check(token).is_ok()
110            }
111            #[inline]
112            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
113                <alloy::sol_types::sol_data::Uint<
114                    256,
115                > as alloy_sol_types::SolType>::type_check(token)
116            }
117            #[inline]
118            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
119                <alloy::sol_types::sol_data::Uint<
120                    256,
121                > as alloy_sol_types::SolType>::detokenize(token)
122            }
123        }
124        #[automatically_derived]
125        impl alloy_sol_types::EventTopic for BaseField {
126            #[inline]
127            fn topic_preimage_length(rust: &Self::RustType) -> usize {
128                <alloy::sol_types::sol_data::Uint<
129                    256,
130                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
131            }
132            #[inline]
133            fn encode_topic_preimage(
134                rust: &Self::RustType,
135                out: &mut alloy_sol_types::private::Vec<u8>,
136            ) {
137                <alloy::sol_types::sol_data::Uint<
138                    256,
139                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
140            }
141            #[inline]
142            fn encode_topic(
143                rust: &Self::RustType,
144            ) -> alloy_sol_types::abi::token::WordToken {
145                <alloy::sol_types::sol_data::Uint<
146                    256,
147                > as alloy_sol_types::EventTopic>::encode_topic(rust)
148            }
149        }
150    };
151    #[derive(Default, Debug, PartialEq, Eq, Hash)]
152    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
153    #[derive(Clone)]
154    pub struct ScalarField(alloy::sol_types::private::primitives::aliases::U256);
155    const _: () = {
156        use alloy::sol_types as alloy_sol_types;
157        #[automatically_derived]
158        impl alloy_sol_types::private::SolTypeValue<ScalarField>
159        for alloy::sol_types::private::primitives::aliases::U256 {
160            #[inline]
161            fn stv_to_tokens(
162                &self,
163            ) -> <alloy::sol_types::sol_data::Uint<
164                256,
165            > as alloy_sol_types::SolType>::Token<'_> {
166                alloy_sol_types::private::SolTypeValue::<
167                    alloy::sol_types::sol_data::Uint<256>,
168                >::stv_to_tokens(self)
169            }
170            #[inline]
171            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
172                <alloy::sol_types::sol_data::Uint<
173                    256,
174                > as alloy_sol_types::SolType>::tokenize(self)
175                    .0
176            }
177            #[inline]
178            fn stv_abi_encode_packed_to(
179                &self,
180                out: &mut alloy_sol_types::private::Vec<u8>,
181            ) {
182                <alloy::sol_types::sol_data::Uint<
183                    256,
184                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
185            }
186            #[inline]
187            fn stv_abi_packed_encoded_size(&self) -> usize {
188                <alloy::sol_types::sol_data::Uint<
189                    256,
190                > as alloy_sol_types::SolType>::abi_encoded_size(self)
191            }
192        }
193        #[automatically_derived]
194        impl ScalarField {
195            /// The Solidity type name.
196            pub const NAME: &'static str = stringify!(@ name);
197            /// Convert from the underlying value type.
198            #[inline]
199            pub const fn from(
200                value: alloy::sol_types::private::primitives::aliases::U256,
201            ) -> Self {
202                Self(value)
203            }
204            /// Return the underlying value.
205            #[inline]
206            pub const fn into(
207                self,
208            ) -> alloy::sol_types::private::primitives::aliases::U256 {
209                self.0
210            }
211            /// Return the single encoding of this value, delegating to the
212            /// underlying type.
213            #[inline]
214            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
215                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
216            }
217            /// Return the packed encoding of this value, delegating to the
218            /// underlying type.
219            #[inline]
220            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
221                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
222            }
223        }
224        #[automatically_derived]
225        impl alloy_sol_types::SolType for ScalarField {
226            type RustType = alloy::sol_types::private::primitives::aliases::U256;
227            type Token<'a> = <alloy::sol_types::sol_data::Uint<
228                256,
229            > as alloy_sol_types::SolType>::Token<'a>;
230            const SOL_NAME: &'static str = Self::NAME;
231            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
232                256,
233            > as alloy_sol_types::SolType>::ENCODED_SIZE;
234            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
235                256,
236            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
237            #[inline]
238            fn valid_token(token: &Self::Token<'_>) -> bool {
239                Self::type_check(token).is_ok()
240            }
241            #[inline]
242            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
243                <alloy::sol_types::sol_data::Uint<
244                    256,
245                > as alloy_sol_types::SolType>::type_check(token)
246            }
247            #[inline]
248            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
249                <alloy::sol_types::sol_data::Uint<
250                    256,
251                > as alloy_sol_types::SolType>::detokenize(token)
252            }
253        }
254        #[automatically_derived]
255        impl alloy_sol_types::EventTopic for ScalarField {
256            #[inline]
257            fn topic_preimage_length(rust: &Self::RustType) -> usize {
258                <alloy::sol_types::sol_data::Uint<
259                    256,
260                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
261            }
262            #[inline]
263            fn encode_topic_preimage(
264                rust: &Self::RustType,
265                out: &mut alloy_sol_types::private::Vec<u8>,
266            ) {
267                <alloy::sol_types::sol_data::Uint<
268                    256,
269                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
270            }
271            #[inline]
272            fn encode_topic(
273                rust: &Self::RustType,
274            ) -> alloy_sol_types::abi::token::WordToken {
275                <alloy::sol_types::sol_data::Uint<
276                    256,
277                > as alloy_sol_types::EventTopic>::encode_topic(rust)
278            }
279        }
280    };
281    #[derive(Default, Debug, PartialEq, Eq, Hash)]
282    /**```solidity
283struct G1Point { BaseField x; BaseField y; }
284```*/
285    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
286    #[derive(Clone)]
287    pub struct G1Point {
288        #[allow(missing_docs)]
289        pub x: <BaseField as alloy::sol_types::SolType>::RustType,
290        #[allow(missing_docs)]
291        pub y: <BaseField as alloy::sol_types::SolType>::RustType,
292    }
293    #[allow(
294        non_camel_case_types,
295        non_snake_case,
296        clippy::pub_underscore_fields,
297        clippy::style
298    )]
299    const _: () = {
300        use alloy::sol_types as alloy_sol_types;
301        #[doc(hidden)]
302        type UnderlyingSolTuple<'a> = (BaseField, BaseField);
303        #[doc(hidden)]
304        type UnderlyingRustTuple<'a> = (
305            <BaseField as alloy::sol_types::SolType>::RustType,
306            <BaseField as alloy::sol_types::SolType>::RustType,
307        );
308        #[cfg(test)]
309        #[allow(dead_code, unreachable_patterns)]
310        fn _type_assertion(
311            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
312        ) {
313            match _t {
314                alloy_sol_types::private::AssertTypeEq::<
315                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
316                >(_) => {}
317            }
318        }
319        #[automatically_derived]
320        #[doc(hidden)]
321        impl ::core::convert::From<G1Point> for UnderlyingRustTuple<'_> {
322            fn from(value: G1Point) -> Self {
323                (value.x, value.y)
324            }
325        }
326        #[automatically_derived]
327        #[doc(hidden)]
328        impl ::core::convert::From<UnderlyingRustTuple<'_>> for G1Point {
329            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
330                Self { x: tuple.0, y: tuple.1 }
331            }
332        }
333        #[automatically_derived]
334        impl alloy_sol_types::SolValue for G1Point {
335            type SolType = Self;
336        }
337        #[automatically_derived]
338        impl alloy_sol_types::private::SolTypeValue<Self> for G1Point {
339            #[inline]
340            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
341                (
342                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x),
343                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y),
344                )
345            }
346            #[inline]
347            fn stv_abi_encoded_size(&self) -> usize {
348                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
349                    return size;
350                }
351                let tuple = <UnderlyingRustTuple<
352                    '_,
353                > as ::core::convert::From<Self>>::from(self.clone());
354                <UnderlyingSolTuple<
355                    '_,
356                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
357            }
358            #[inline]
359            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
360                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
361            }
362            #[inline]
363            fn stv_abi_encode_packed_to(
364                &self,
365                out: &mut alloy_sol_types::private::Vec<u8>,
366            ) {
367                let tuple = <UnderlyingRustTuple<
368                    '_,
369                > as ::core::convert::From<Self>>::from(self.clone());
370                <UnderlyingSolTuple<
371                    '_,
372                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
373            }
374            #[inline]
375            fn stv_abi_packed_encoded_size(&self) -> usize {
376                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
377                    return size;
378                }
379                let tuple = <UnderlyingRustTuple<
380                    '_,
381                > as ::core::convert::From<Self>>::from(self.clone());
382                <UnderlyingSolTuple<
383                    '_,
384                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
385            }
386        }
387        #[automatically_derived]
388        impl alloy_sol_types::SolType for G1Point {
389            type RustType = Self;
390            type Token<'a> = <UnderlyingSolTuple<
391                'a,
392            > as alloy_sol_types::SolType>::Token<'a>;
393            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
394            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
395                '_,
396            > as alloy_sol_types::SolType>::ENCODED_SIZE;
397            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
398                '_,
399            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
400            #[inline]
401            fn valid_token(token: &Self::Token<'_>) -> bool {
402                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
403            }
404            #[inline]
405            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
406                let tuple = <UnderlyingSolTuple<
407                    '_,
408                > as alloy_sol_types::SolType>::detokenize(token);
409                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
410            }
411        }
412        #[automatically_derived]
413        impl alloy_sol_types::SolStruct for G1Point {
414            const NAME: &'static str = "G1Point";
415            #[inline]
416            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
417                alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 x,uint256 y)")
418            }
419            #[inline]
420            fn eip712_components() -> alloy_sol_types::private::Vec<
421                alloy_sol_types::private::Cow<'static, str>,
422            > {
423                alloy_sol_types::private::Vec::new()
424            }
425            #[inline]
426            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
427                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
428            }
429            #[inline]
430            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
431                [
432                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x).0,
433                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y).0,
434                ]
435                    .concat()
436            }
437        }
438        #[automatically_derived]
439        impl alloy_sol_types::EventTopic for G1Point {
440            #[inline]
441            fn topic_preimage_length(rust: &Self::RustType) -> usize {
442                0usize
443                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
444                        &rust.x,
445                    )
446                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
447                        &rust.y,
448                    )
449            }
450            #[inline]
451            fn encode_topic_preimage(
452                rust: &Self::RustType,
453                out: &mut alloy_sol_types::private::Vec<u8>,
454            ) {
455                out.reserve(
456                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
457                );
458                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
459                    &rust.x,
460                    out,
461                );
462                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
463                    &rust.y,
464                    out,
465                );
466            }
467            #[inline]
468            fn encode_topic(
469                rust: &Self::RustType,
470            ) -> alloy_sol_types::abi::token::WordToken {
471                let mut out = alloy_sol_types::private::Vec::new();
472                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
473                    rust,
474                    &mut out,
475                );
476                alloy_sol_types::abi::token::WordToken(
477                    alloy_sol_types::private::keccak256(out),
478                )
479            }
480        }
481    };
482    use alloy::contract as alloy_contract;
483    /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
484
485See the [wrapper's documentation](`BN254Instance`) for more details.*/
486    #[inline]
487    pub const fn new<
488        T: alloy_contract::private::Transport + ::core::clone::Clone,
489        P: alloy_contract::private::Provider<T, N>,
490        N: alloy_contract::private::Network,
491    >(
492        address: alloy_sol_types::private::Address,
493        provider: P,
494    ) -> BN254Instance<T, P, N> {
495        BN254Instance::<T, P, N>::new(address, provider)
496    }
497    /**A [`BN254`](self) instance.
498
499Contains type-safe methods for interacting with an on-chain instance of the
500[`BN254`](self) contract located at a given `address`, using a given
501provider `P`.
502
503If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
504documentation on how to provide it), the `deploy` and `deploy_builder` methods can
505be used to deploy a new instance of the contract.
506
507See the [module-level documentation](self) for all the available methods.*/
508    #[derive(Clone)]
509    pub struct BN254Instance<T, P, N = alloy_contract::private::Ethereum> {
510        address: alloy_sol_types::private::Address,
511        provider: P,
512        _network_transport: ::core::marker::PhantomData<(N, T)>,
513    }
514    #[automatically_derived]
515    impl<T, P, N> ::core::fmt::Debug for BN254Instance<T, P, N> {
516        #[inline]
517        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
518            f.debug_tuple("BN254Instance").field(&self.address).finish()
519        }
520    }
521    /// Instantiation and getters/setters.
522    #[automatically_derived]
523    impl<
524        T: alloy_contract::private::Transport + ::core::clone::Clone,
525        P: alloy_contract::private::Provider<T, N>,
526        N: alloy_contract::private::Network,
527    > BN254Instance<T, P, N> {
528        /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
529
530See the [wrapper's documentation](`BN254Instance`) for more details.*/
531        #[inline]
532        pub const fn new(
533            address: alloy_sol_types::private::Address,
534            provider: P,
535        ) -> Self {
536            Self {
537                address,
538                provider,
539                _network_transport: ::core::marker::PhantomData,
540            }
541        }
542        /// Returns a reference to the address.
543        #[inline]
544        pub const fn address(&self) -> &alloy_sol_types::private::Address {
545            &self.address
546        }
547        /// Sets the address.
548        #[inline]
549        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
550            self.address = address;
551        }
552        /// Sets the address and returns `self`.
553        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
554            self.set_address(address);
555            self
556        }
557        /// Returns a reference to the provider.
558        #[inline]
559        pub const fn provider(&self) -> &P {
560            &self.provider
561        }
562    }
563    impl<T, P: ::core::clone::Clone, N> BN254Instance<T, &P, N> {
564        /// Clones the provider and returns a new instance with the cloned provider.
565        #[inline]
566        pub fn with_cloned_provider(self) -> BN254Instance<T, P, N> {
567            BN254Instance {
568                address: self.address,
569                provider: ::core::clone::Clone::clone(&self.provider),
570                _network_transport: ::core::marker::PhantomData,
571            }
572        }
573    }
574    /// Function calls.
575    #[automatically_derived]
576    impl<
577        T: alloy_contract::private::Transport + ::core::clone::Clone,
578        P: alloy_contract::private::Provider<T, N>,
579        N: alloy_contract::private::Network,
580    > BN254Instance<T, P, N> {
581        /// Creates a new call builder using this contract instance's provider and address.
582        ///
583        /// Note that the call can be any function call, not just those defined in this
584        /// contract. Prefer using the other methods for building type-safe contract calls.
585        pub fn call_builder<C: alloy_sol_types::SolCall>(
586            &self,
587            call: &C,
588        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
589            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
590        }
591    }
592    /// Event filters.
593    #[automatically_derived]
594    impl<
595        T: alloy_contract::private::Transport + ::core::clone::Clone,
596        P: alloy_contract::private::Provider<T, N>,
597        N: alloy_contract::private::Network,
598    > BN254Instance<T, P, N> {
599        /// Creates a new event filter using this contract instance's provider and address.
600        ///
601        /// Note that the type can be any event, not just those defined in this contract.
602        /// Prefer using the other methods for building type-safe event filters.
603        pub fn event_filter<E: alloy_sol_types::SolEvent>(
604            &self,
605        ) -> alloy_contract::Event<T, &P, E, N> {
606            alloy_contract::Event::new_sol(&self.provider, &self.address)
607        }
608    }
609}
610///Module containing a contract's types and functions.
611/**
612
613```solidity
614library IPlonkVerifier {
615    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; }
616    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; }
617}
618```*/
619#[allow(
620    non_camel_case_types,
621    non_snake_case,
622    clippy::pub_underscore_fields,
623    clippy::style,
624    clippy::empty_structs_with_brackets
625)]
626pub mod IPlonkVerifier {
627    use super::*;
628    use alloy::sol_types as alloy_sol_types;
629    #[derive()]
630    /**```solidity
631struct 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; }
632```*/
633    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
634    #[derive(Clone)]
635    pub struct PlonkProof {
636        #[allow(missing_docs)]
637        pub wire0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
638        #[allow(missing_docs)]
639        pub wire1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
640        #[allow(missing_docs)]
641        pub wire2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
642        #[allow(missing_docs)]
643        pub wire3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
644        #[allow(missing_docs)]
645        pub wire4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
646        #[allow(missing_docs)]
647        pub prodPerm: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
648        #[allow(missing_docs)]
649        pub split0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
650        #[allow(missing_docs)]
651        pub split1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
652        #[allow(missing_docs)]
653        pub split2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
654        #[allow(missing_docs)]
655        pub split3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
656        #[allow(missing_docs)]
657        pub split4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
658        #[allow(missing_docs)]
659        pub zeta: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
660        #[allow(missing_docs)]
661        pub zetaOmega: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
662        #[allow(missing_docs)]
663        pub wireEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
664        #[allow(missing_docs)]
665        pub wireEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
666        #[allow(missing_docs)]
667        pub wireEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
668        #[allow(missing_docs)]
669        pub wireEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
670        #[allow(missing_docs)]
671        pub wireEval4: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
672        #[allow(missing_docs)]
673        pub sigmaEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
674        #[allow(missing_docs)]
675        pub sigmaEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
676        #[allow(missing_docs)]
677        pub sigmaEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
678        #[allow(missing_docs)]
679        pub sigmaEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
680        #[allow(missing_docs)]
681        pub prodPermZetaOmegaEval: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
682    }
683    #[allow(
684        non_camel_case_types,
685        non_snake_case,
686        clippy::pub_underscore_fields,
687        clippy::style
688    )]
689    const _: () = {
690        use alloy::sol_types as alloy_sol_types;
691        #[doc(hidden)]
692        type UnderlyingSolTuple<'a> = (
693            BN254::G1Point,
694            BN254::G1Point,
695            BN254::G1Point,
696            BN254::G1Point,
697            BN254::G1Point,
698            BN254::G1Point,
699            BN254::G1Point,
700            BN254::G1Point,
701            BN254::G1Point,
702            BN254::G1Point,
703            BN254::G1Point,
704            BN254::G1Point,
705            BN254::G1Point,
706            BN254::ScalarField,
707            BN254::ScalarField,
708            BN254::ScalarField,
709            BN254::ScalarField,
710            BN254::ScalarField,
711            BN254::ScalarField,
712            BN254::ScalarField,
713            BN254::ScalarField,
714            BN254::ScalarField,
715            BN254::ScalarField,
716        );
717        #[doc(hidden)]
718        type UnderlyingRustTuple<'a> = (
719            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
720            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
721            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
722            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
723            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
724            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
725            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
726            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
727            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
728            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
729            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
730            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
731            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
732            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
733            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
734            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
735            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
736            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
737            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
738            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
739            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
740            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
741            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
742        );
743        #[cfg(test)]
744        #[allow(dead_code, unreachable_patterns)]
745        fn _type_assertion(
746            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
747        ) {
748            match _t {
749                alloy_sol_types::private::AssertTypeEq::<
750                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
751                >(_) => {}
752            }
753        }
754        #[automatically_derived]
755        #[doc(hidden)]
756        impl ::core::convert::From<PlonkProof> for UnderlyingRustTuple<'_> {
757            fn from(value: PlonkProof) -> Self {
758                (
759                    value.wire0,
760                    value.wire1,
761                    value.wire2,
762                    value.wire3,
763                    value.wire4,
764                    value.prodPerm,
765                    value.split0,
766                    value.split1,
767                    value.split2,
768                    value.split3,
769                    value.split4,
770                    value.zeta,
771                    value.zetaOmega,
772                    value.wireEval0,
773                    value.wireEval1,
774                    value.wireEval2,
775                    value.wireEval3,
776                    value.wireEval4,
777                    value.sigmaEval0,
778                    value.sigmaEval1,
779                    value.sigmaEval2,
780                    value.sigmaEval3,
781                    value.prodPermZetaOmegaEval,
782                )
783            }
784        }
785        #[automatically_derived]
786        #[doc(hidden)]
787        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PlonkProof {
788            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
789                Self {
790                    wire0: tuple.0,
791                    wire1: tuple.1,
792                    wire2: tuple.2,
793                    wire3: tuple.3,
794                    wire4: tuple.4,
795                    prodPerm: tuple.5,
796                    split0: tuple.6,
797                    split1: tuple.7,
798                    split2: tuple.8,
799                    split3: tuple.9,
800                    split4: tuple.10,
801                    zeta: tuple.11,
802                    zetaOmega: tuple.12,
803                    wireEval0: tuple.13,
804                    wireEval1: tuple.14,
805                    wireEval2: tuple.15,
806                    wireEval3: tuple.16,
807                    wireEval4: tuple.17,
808                    sigmaEval0: tuple.18,
809                    sigmaEval1: tuple.19,
810                    sigmaEval2: tuple.20,
811                    sigmaEval3: tuple.21,
812                    prodPermZetaOmegaEval: tuple.22,
813                }
814            }
815        }
816        #[automatically_derived]
817        impl alloy_sol_types::SolValue for PlonkProof {
818            type SolType = Self;
819        }
820        #[automatically_derived]
821        impl alloy_sol_types::private::SolTypeValue<Self> for PlonkProof {
822            #[inline]
823            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
824                (
825                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire0),
826                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire1),
827                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire2),
828                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire3),
829                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire4),
830                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
831                        &self.prodPerm,
832                    ),
833                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split0),
834                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split1),
835                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split2),
836                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split3),
837                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split4),
838                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.zeta),
839                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
840                        &self.zetaOmega,
841                    ),
842                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
843                        &self.wireEval0,
844                    ),
845                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
846                        &self.wireEval1,
847                    ),
848                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
849                        &self.wireEval2,
850                    ),
851                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
852                        &self.wireEval3,
853                    ),
854                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
855                        &self.wireEval4,
856                    ),
857                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
858                        &self.sigmaEval0,
859                    ),
860                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
861                        &self.sigmaEval1,
862                    ),
863                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
864                        &self.sigmaEval2,
865                    ),
866                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
867                        &self.sigmaEval3,
868                    ),
869                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
870                        &self.prodPermZetaOmegaEval,
871                    ),
872                )
873            }
874            #[inline]
875            fn stv_abi_encoded_size(&self) -> usize {
876                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
877                    return size;
878                }
879                let tuple = <UnderlyingRustTuple<
880                    '_,
881                > as ::core::convert::From<Self>>::from(self.clone());
882                <UnderlyingSolTuple<
883                    '_,
884                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
885            }
886            #[inline]
887            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
888                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
889            }
890            #[inline]
891            fn stv_abi_encode_packed_to(
892                &self,
893                out: &mut alloy_sol_types::private::Vec<u8>,
894            ) {
895                let tuple = <UnderlyingRustTuple<
896                    '_,
897                > as ::core::convert::From<Self>>::from(self.clone());
898                <UnderlyingSolTuple<
899                    '_,
900                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
901            }
902            #[inline]
903            fn stv_abi_packed_encoded_size(&self) -> usize {
904                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
905                    return size;
906                }
907                let tuple = <UnderlyingRustTuple<
908                    '_,
909                > as ::core::convert::From<Self>>::from(self.clone());
910                <UnderlyingSolTuple<
911                    '_,
912                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
913            }
914        }
915        #[automatically_derived]
916        impl alloy_sol_types::SolType for PlonkProof {
917            type RustType = Self;
918            type Token<'a> = <UnderlyingSolTuple<
919                'a,
920            > as alloy_sol_types::SolType>::Token<'a>;
921            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
922            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
923                '_,
924            > as alloy_sol_types::SolType>::ENCODED_SIZE;
925            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
926                '_,
927            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
928            #[inline]
929            fn valid_token(token: &Self::Token<'_>) -> bool {
930                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
931            }
932            #[inline]
933            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
934                let tuple = <UnderlyingSolTuple<
935                    '_,
936                > as alloy_sol_types::SolType>::detokenize(token);
937                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
938            }
939        }
940        #[automatically_derived]
941        impl alloy_sol_types::SolStruct for PlonkProof {
942            const NAME: &'static str = "PlonkProof";
943            #[inline]
944            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
945                alloy_sol_types::private::Cow::Borrowed(
946                    "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,uint256 wireEval0,uint256 wireEval1,uint256 wireEval2,uint256 wireEval3,uint256 wireEval4,uint256 sigmaEval0,uint256 sigmaEval1,uint256 sigmaEval2,uint256 sigmaEval3,uint256 prodPermZetaOmegaEval)",
947                )
948            }
949            #[inline]
950            fn eip712_components() -> alloy_sol_types::private::Vec<
951                alloy_sol_types::private::Cow<'static, str>,
952            > {
953                let mut components = alloy_sol_types::private::Vec::with_capacity(13);
954                components
955                    .push(
956                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
957                    );
958                components
959                    .extend(
960                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
961                    );
962                components
963                    .push(
964                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
965                    );
966                components
967                    .extend(
968                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
969                    );
970                components
971                    .push(
972                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
973                    );
974                components
975                    .extend(
976                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
977                    );
978                components
979                    .push(
980                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
981                    );
982                components
983                    .extend(
984                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
985                    );
986                components
987                    .push(
988                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
989                    );
990                components
991                    .extend(
992                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
993                    );
994                components
995                    .push(
996                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
997                    );
998                components
999                    .extend(
1000                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1001                    );
1002                components
1003                    .push(
1004                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1005                    );
1006                components
1007                    .extend(
1008                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1009                    );
1010                components
1011                    .push(
1012                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1013                    );
1014                components
1015                    .extend(
1016                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1017                    );
1018                components
1019                    .push(
1020                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1021                    );
1022                components
1023                    .extend(
1024                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1025                    );
1026                components
1027                    .push(
1028                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1029                    );
1030                components
1031                    .extend(
1032                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1033                    );
1034                components
1035                    .push(
1036                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1037                    );
1038                components
1039                    .extend(
1040                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1041                    );
1042                components
1043                    .push(
1044                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1045                    );
1046                components
1047                    .extend(
1048                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1049                    );
1050                components
1051                    .push(
1052                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1053                    );
1054                components
1055                    .extend(
1056                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1057                    );
1058                components
1059            }
1060            #[inline]
1061            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1062                [
1063                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1064                            &self.wire0,
1065                        )
1066                        .0,
1067                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1068                            &self.wire1,
1069                        )
1070                        .0,
1071                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1072                            &self.wire2,
1073                        )
1074                        .0,
1075                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1076                            &self.wire3,
1077                        )
1078                        .0,
1079                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1080                            &self.wire4,
1081                        )
1082                        .0,
1083                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1084                            &self.prodPerm,
1085                        )
1086                        .0,
1087                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1088                            &self.split0,
1089                        )
1090                        .0,
1091                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1092                            &self.split1,
1093                        )
1094                        .0,
1095                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1096                            &self.split2,
1097                        )
1098                        .0,
1099                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1100                            &self.split3,
1101                        )
1102                        .0,
1103                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1104                            &self.split4,
1105                        )
1106                        .0,
1107                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1108                            &self.zeta,
1109                        )
1110                        .0,
1111                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1112                            &self.zetaOmega,
1113                        )
1114                        .0,
1115                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1116                            &self.wireEval0,
1117                        )
1118                        .0,
1119                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1120                            &self.wireEval1,
1121                        )
1122                        .0,
1123                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1124                            &self.wireEval2,
1125                        )
1126                        .0,
1127                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1128                            &self.wireEval3,
1129                        )
1130                        .0,
1131                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1132                            &self.wireEval4,
1133                        )
1134                        .0,
1135                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1136                            &self.sigmaEval0,
1137                        )
1138                        .0,
1139                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1140                            &self.sigmaEval1,
1141                        )
1142                        .0,
1143                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1144                            &self.sigmaEval2,
1145                        )
1146                        .0,
1147                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1148                            &self.sigmaEval3,
1149                        )
1150                        .0,
1151                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1152                            &self.prodPermZetaOmegaEval,
1153                        )
1154                        .0,
1155                ]
1156                    .concat()
1157            }
1158        }
1159        #[automatically_derived]
1160        impl alloy_sol_types::EventTopic for PlonkProof {
1161            #[inline]
1162            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1163                0usize
1164                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1165                        &rust.wire0,
1166                    )
1167                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1168                        &rust.wire1,
1169                    )
1170                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1171                        &rust.wire2,
1172                    )
1173                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1174                        &rust.wire3,
1175                    )
1176                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1177                        &rust.wire4,
1178                    )
1179                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1180                        &rust.prodPerm,
1181                    )
1182                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1183                        &rust.split0,
1184                    )
1185                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1186                        &rust.split1,
1187                    )
1188                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1189                        &rust.split2,
1190                    )
1191                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1192                        &rust.split3,
1193                    )
1194                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1195                        &rust.split4,
1196                    )
1197                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1198                        &rust.zeta,
1199                    )
1200                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1201                        &rust.zetaOmega,
1202                    )
1203                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1204                        &rust.wireEval0,
1205                    )
1206                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1207                        &rust.wireEval1,
1208                    )
1209                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1210                        &rust.wireEval2,
1211                    )
1212                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1213                        &rust.wireEval3,
1214                    )
1215                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1216                        &rust.wireEval4,
1217                    )
1218                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1219                        &rust.sigmaEval0,
1220                    )
1221                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1222                        &rust.sigmaEval1,
1223                    )
1224                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1225                        &rust.sigmaEval2,
1226                    )
1227                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1228                        &rust.sigmaEval3,
1229                    )
1230                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1231                        &rust.prodPermZetaOmegaEval,
1232                    )
1233            }
1234            #[inline]
1235            fn encode_topic_preimage(
1236                rust: &Self::RustType,
1237                out: &mut alloy_sol_types::private::Vec<u8>,
1238            ) {
1239                out.reserve(
1240                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
1241                );
1242                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1243                    &rust.wire0,
1244                    out,
1245                );
1246                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1247                    &rust.wire1,
1248                    out,
1249                );
1250                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1251                    &rust.wire2,
1252                    out,
1253                );
1254                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1255                    &rust.wire3,
1256                    out,
1257                );
1258                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1259                    &rust.wire4,
1260                    out,
1261                );
1262                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1263                    &rust.prodPerm,
1264                    out,
1265                );
1266                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1267                    &rust.split0,
1268                    out,
1269                );
1270                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1271                    &rust.split1,
1272                    out,
1273                );
1274                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1275                    &rust.split2,
1276                    out,
1277                );
1278                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1279                    &rust.split3,
1280                    out,
1281                );
1282                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1283                    &rust.split4,
1284                    out,
1285                );
1286                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1287                    &rust.zeta,
1288                    out,
1289                );
1290                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1291                    &rust.zetaOmega,
1292                    out,
1293                );
1294                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1295                    &rust.wireEval0,
1296                    out,
1297                );
1298                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1299                    &rust.wireEval1,
1300                    out,
1301                );
1302                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1303                    &rust.wireEval2,
1304                    out,
1305                );
1306                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1307                    &rust.wireEval3,
1308                    out,
1309                );
1310                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1311                    &rust.wireEval4,
1312                    out,
1313                );
1314                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1315                    &rust.sigmaEval0,
1316                    out,
1317                );
1318                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1319                    &rust.sigmaEval1,
1320                    out,
1321                );
1322                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1323                    &rust.sigmaEval2,
1324                    out,
1325                );
1326                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1327                    &rust.sigmaEval3,
1328                    out,
1329                );
1330                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1331                    &rust.prodPermZetaOmegaEval,
1332                    out,
1333                );
1334            }
1335            #[inline]
1336            fn encode_topic(
1337                rust: &Self::RustType,
1338            ) -> alloy_sol_types::abi::token::WordToken {
1339                let mut out = alloy_sol_types::private::Vec::new();
1340                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
1341                    rust,
1342                    &mut out,
1343                );
1344                alloy_sol_types::abi::token::WordToken(
1345                    alloy_sol_types::private::keccak256(out),
1346                )
1347            }
1348        }
1349    };
1350    #[derive()]
1351    /**```solidity
1352struct 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; }
1353```*/
1354    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1355    #[derive(Clone)]
1356    pub struct VerifyingKey {
1357        #[allow(missing_docs)]
1358        pub domainSize: alloy::sol_types::private::primitives::aliases::U256,
1359        #[allow(missing_docs)]
1360        pub numInputs: alloy::sol_types::private::primitives::aliases::U256,
1361        #[allow(missing_docs)]
1362        pub sigma0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1363        #[allow(missing_docs)]
1364        pub sigma1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1365        #[allow(missing_docs)]
1366        pub sigma2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1367        #[allow(missing_docs)]
1368        pub sigma3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1369        #[allow(missing_docs)]
1370        pub sigma4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1371        #[allow(missing_docs)]
1372        pub q1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1373        #[allow(missing_docs)]
1374        pub q2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1375        #[allow(missing_docs)]
1376        pub q3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1377        #[allow(missing_docs)]
1378        pub q4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1379        #[allow(missing_docs)]
1380        pub qM12: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1381        #[allow(missing_docs)]
1382        pub qM34: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1383        #[allow(missing_docs)]
1384        pub qO: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1385        #[allow(missing_docs)]
1386        pub qC: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1387        #[allow(missing_docs)]
1388        pub qH1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1389        #[allow(missing_docs)]
1390        pub qH2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1391        #[allow(missing_docs)]
1392        pub qH3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1393        #[allow(missing_docs)]
1394        pub qH4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1395        #[allow(missing_docs)]
1396        pub qEcc: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1397        #[allow(missing_docs)]
1398        pub g2LSB: alloy::sol_types::private::FixedBytes<32>,
1399        #[allow(missing_docs)]
1400        pub g2MSB: alloy::sol_types::private::FixedBytes<32>,
1401    }
1402    #[allow(
1403        non_camel_case_types,
1404        non_snake_case,
1405        clippy::pub_underscore_fields,
1406        clippy::style
1407    )]
1408    const _: () = {
1409        use alloy::sol_types as alloy_sol_types;
1410        #[doc(hidden)]
1411        type UnderlyingSolTuple<'a> = (
1412            alloy::sol_types::sol_data::Uint<256>,
1413            alloy::sol_types::sol_data::Uint<256>,
1414            BN254::G1Point,
1415            BN254::G1Point,
1416            BN254::G1Point,
1417            BN254::G1Point,
1418            BN254::G1Point,
1419            BN254::G1Point,
1420            BN254::G1Point,
1421            BN254::G1Point,
1422            BN254::G1Point,
1423            BN254::G1Point,
1424            BN254::G1Point,
1425            BN254::G1Point,
1426            BN254::G1Point,
1427            BN254::G1Point,
1428            BN254::G1Point,
1429            BN254::G1Point,
1430            BN254::G1Point,
1431            BN254::G1Point,
1432            alloy::sol_types::sol_data::FixedBytes<32>,
1433            alloy::sol_types::sol_data::FixedBytes<32>,
1434        );
1435        #[doc(hidden)]
1436        type UnderlyingRustTuple<'a> = (
1437            alloy::sol_types::private::primitives::aliases::U256,
1438            alloy::sol_types::private::primitives::aliases::U256,
1439            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1440            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1441            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1442            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1443            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1444            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1445            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1446            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1447            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1448            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1449            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1450            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1451            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1452            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1453            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1454            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1455            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1456            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1457            alloy::sol_types::private::FixedBytes<32>,
1458            alloy::sol_types::private::FixedBytes<32>,
1459        );
1460        #[cfg(test)]
1461        #[allow(dead_code, unreachable_patterns)]
1462        fn _type_assertion(
1463            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1464        ) {
1465            match _t {
1466                alloy_sol_types::private::AssertTypeEq::<
1467                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1468                >(_) => {}
1469            }
1470        }
1471        #[automatically_derived]
1472        #[doc(hidden)]
1473        impl ::core::convert::From<VerifyingKey> for UnderlyingRustTuple<'_> {
1474            fn from(value: VerifyingKey) -> Self {
1475                (
1476                    value.domainSize,
1477                    value.numInputs,
1478                    value.sigma0,
1479                    value.sigma1,
1480                    value.sigma2,
1481                    value.sigma3,
1482                    value.sigma4,
1483                    value.q1,
1484                    value.q2,
1485                    value.q3,
1486                    value.q4,
1487                    value.qM12,
1488                    value.qM34,
1489                    value.qO,
1490                    value.qC,
1491                    value.qH1,
1492                    value.qH2,
1493                    value.qH3,
1494                    value.qH4,
1495                    value.qEcc,
1496                    value.g2LSB,
1497                    value.g2MSB,
1498                )
1499            }
1500        }
1501        #[automatically_derived]
1502        #[doc(hidden)]
1503        impl ::core::convert::From<UnderlyingRustTuple<'_>> for VerifyingKey {
1504            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1505                Self {
1506                    domainSize: tuple.0,
1507                    numInputs: tuple.1,
1508                    sigma0: tuple.2,
1509                    sigma1: tuple.3,
1510                    sigma2: tuple.4,
1511                    sigma3: tuple.5,
1512                    sigma4: tuple.6,
1513                    q1: tuple.7,
1514                    q2: tuple.8,
1515                    q3: tuple.9,
1516                    q4: tuple.10,
1517                    qM12: tuple.11,
1518                    qM34: tuple.12,
1519                    qO: tuple.13,
1520                    qC: tuple.14,
1521                    qH1: tuple.15,
1522                    qH2: tuple.16,
1523                    qH3: tuple.17,
1524                    qH4: tuple.18,
1525                    qEcc: tuple.19,
1526                    g2LSB: tuple.20,
1527                    g2MSB: tuple.21,
1528                }
1529            }
1530        }
1531        #[automatically_derived]
1532        impl alloy_sol_types::SolValue for VerifyingKey {
1533            type SolType = Self;
1534        }
1535        #[automatically_derived]
1536        impl alloy_sol_types::private::SolTypeValue<Self> for VerifyingKey {
1537            #[inline]
1538            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
1539                (
1540                    <alloy::sol_types::sol_data::Uint<
1541                        256,
1542                    > as alloy_sol_types::SolType>::tokenize(&self.domainSize),
1543                    <alloy::sol_types::sol_data::Uint<
1544                        256,
1545                    > as alloy_sol_types::SolType>::tokenize(&self.numInputs),
1546                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma0),
1547                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma1),
1548                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma2),
1549                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma3),
1550                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma4),
1551                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q1),
1552                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q2),
1553                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q3),
1554                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q4),
1555                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM12),
1556                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM34),
1557                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qO),
1558                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qC),
1559                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH1),
1560                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH2),
1561                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH3),
1562                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH4),
1563                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qEcc),
1564                    <alloy::sol_types::sol_data::FixedBytes<
1565                        32,
1566                    > as alloy_sol_types::SolType>::tokenize(&self.g2LSB),
1567                    <alloy::sol_types::sol_data::FixedBytes<
1568                        32,
1569                    > as alloy_sol_types::SolType>::tokenize(&self.g2MSB),
1570                )
1571            }
1572            #[inline]
1573            fn stv_abi_encoded_size(&self) -> usize {
1574                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
1575                    return size;
1576                }
1577                let tuple = <UnderlyingRustTuple<
1578                    '_,
1579                > as ::core::convert::From<Self>>::from(self.clone());
1580                <UnderlyingSolTuple<
1581                    '_,
1582                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
1583            }
1584            #[inline]
1585            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1586                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
1587            }
1588            #[inline]
1589            fn stv_abi_encode_packed_to(
1590                &self,
1591                out: &mut alloy_sol_types::private::Vec<u8>,
1592            ) {
1593                let tuple = <UnderlyingRustTuple<
1594                    '_,
1595                > as ::core::convert::From<Self>>::from(self.clone());
1596                <UnderlyingSolTuple<
1597                    '_,
1598                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
1599            }
1600            #[inline]
1601            fn stv_abi_packed_encoded_size(&self) -> usize {
1602                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
1603                    return size;
1604                }
1605                let tuple = <UnderlyingRustTuple<
1606                    '_,
1607                > as ::core::convert::From<Self>>::from(self.clone());
1608                <UnderlyingSolTuple<
1609                    '_,
1610                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
1611            }
1612        }
1613        #[automatically_derived]
1614        impl alloy_sol_types::SolType for VerifyingKey {
1615            type RustType = Self;
1616            type Token<'a> = <UnderlyingSolTuple<
1617                'a,
1618            > as alloy_sol_types::SolType>::Token<'a>;
1619            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
1620            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1621                '_,
1622            > as alloy_sol_types::SolType>::ENCODED_SIZE;
1623            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1624                '_,
1625            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1626            #[inline]
1627            fn valid_token(token: &Self::Token<'_>) -> bool {
1628                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
1629            }
1630            #[inline]
1631            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1632                let tuple = <UnderlyingSolTuple<
1633                    '_,
1634                > as alloy_sol_types::SolType>::detokenize(token);
1635                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
1636            }
1637        }
1638        #[automatically_derived]
1639        impl alloy_sol_types::SolStruct for VerifyingKey {
1640            const NAME: &'static str = "VerifyingKey";
1641            #[inline]
1642            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
1643                alloy_sol_types::private::Cow::Borrowed(
1644                    "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)",
1645                )
1646            }
1647            #[inline]
1648            fn eip712_components() -> alloy_sol_types::private::Vec<
1649                alloy_sol_types::private::Cow<'static, str>,
1650            > {
1651                let mut components = alloy_sol_types::private::Vec::with_capacity(18);
1652                components
1653                    .push(
1654                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1655                    );
1656                components
1657                    .extend(
1658                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1659                    );
1660                components
1661                    .push(
1662                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1663                    );
1664                components
1665                    .extend(
1666                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1667                    );
1668                components
1669                    .push(
1670                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1671                    );
1672                components
1673                    .extend(
1674                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1675                    );
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            }
1798            #[inline]
1799            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1800                [
1801                    <alloy::sol_types::sol_data::Uint<
1802                        256,
1803                    > as alloy_sol_types::SolType>::eip712_data_word(&self.domainSize)
1804                        .0,
1805                    <alloy::sol_types::sol_data::Uint<
1806                        256,
1807                    > as alloy_sol_types::SolType>::eip712_data_word(&self.numInputs)
1808                        .0,
1809                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1810                            &self.sigma0,
1811                        )
1812                        .0,
1813                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1814                            &self.sigma1,
1815                        )
1816                        .0,
1817                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1818                            &self.sigma2,
1819                        )
1820                        .0,
1821                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1822                            &self.sigma3,
1823                        )
1824                        .0,
1825                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1826                            &self.sigma4,
1827                        )
1828                        .0,
1829                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1830                            &self.q1,
1831                        )
1832                        .0,
1833                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1834                            &self.q2,
1835                        )
1836                        .0,
1837                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1838                            &self.q3,
1839                        )
1840                        .0,
1841                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1842                            &self.q4,
1843                        )
1844                        .0,
1845                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1846                            &self.qM12,
1847                        )
1848                        .0,
1849                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1850                            &self.qM34,
1851                        )
1852                        .0,
1853                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1854                            &self.qO,
1855                        )
1856                        .0,
1857                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1858                            &self.qC,
1859                        )
1860                        .0,
1861                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1862                            &self.qH1,
1863                        )
1864                        .0,
1865                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1866                            &self.qH2,
1867                        )
1868                        .0,
1869                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1870                            &self.qH3,
1871                        )
1872                        .0,
1873                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1874                            &self.qH4,
1875                        )
1876                        .0,
1877                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1878                            &self.qEcc,
1879                        )
1880                        .0,
1881                    <alloy::sol_types::sol_data::FixedBytes<
1882                        32,
1883                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2LSB)
1884                        .0,
1885                    <alloy::sol_types::sol_data::FixedBytes<
1886                        32,
1887                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2MSB)
1888                        .0,
1889                ]
1890                    .concat()
1891            }
1892        }
1893        #[automatically_derived]
1894        impl alloy_sol_types::EventTopic for VerifyingKey {
1895            #[inline]
1896            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1897                0usize
1898                    + <alloy::sol_types::sol_data::Uint<
1899                        256,
1900                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1901                        &rust.domainSize,
1902                    )
1903                    + <alloy::sol_types::sol_data::Uint<
1904                        256,
1905                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1906                        &rust.numInputs,
1907                    )
1908                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1909                        &rust.sigma0,
1910                    )
1911                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1912                        &rust.sigma1,
1913                    )
1914                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1915                        &rust.sigma2,
1916                    )
1917                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1918                        &rust.sigma3,
1919                    )
1920                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1921                        &rust.sigma4,
1922                    )
1923                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1924                        &rust.q1,
1925                    )
1926                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1927                        &rust.q2,
1928                    )
1929                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1930                        &rust.q3,
1931                    )
1932                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1933                        &rust.q4,
1934                    )
1935                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1936                        &rust.qM12,
1937                    )
1938                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1939                        &rust.qM34,
1940                    )
1941                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1942                        &rust.qO,
1943                    )
1944                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1945                        &rust.qC,
1946                    )
1947                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1948                        &rust.qH1,
1949                    )
1950                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1951                        &rust.qH2,
1952                    )
1953                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1954                        &rust.qH3,
1955                    )
1956                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1957                        &rust.qH4,
1958                    )
1959                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1960                        &rust.qEcc,
1961                    )
1962                    + <alloy::sol_types::sol_data::FixedBytes<
1963                        32,
1964                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2LSB)
1965                    + <alloy::sol_types::sol_data::FixedBytes<
1966                        32,
1967                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2MSB)
1968            }
1969            #[inline]
1970            fn encode_topic_preimage(
1971                rust: &Self::RustType,
1972                out: &mut alloy_sol_types::private::Vec<u8>,
1973            ) {
1974                out.reserve(
1975                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
1976                );
1977                <alloy::sol_types::sol_data::Uint<
1978                    256,
1979                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1980                    &rust.domainSize,
1981                    out,
1982                );
1983                <alloy::sol_types::sol_data::Uint<
1984                    256,
1985                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1986                    &rust.numInputs,
1987                    out,
1988                );
1989                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1990                    &rust.sigma0,
1991                    out,
1992                );
1993                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1994                    &rust.sigma1,
1995                    out,
1996                );
1997                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1998                    &rust.sigma2,
1999                    out,
2000                );
2001                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2002                    &rust.sigma3,
2003                    out,
2004                );
2005                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2006                    &rust.sigma4,
2007                    out,
2008                );
2009                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2010                    &rust.q1,
2011                    out,
2012                );
2013                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2014                    &rust.q2,
2015                    out,
2016                );
2017                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2018                    &rust.q3,
2019                    out,
2020                );
2021                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2022                    &rust.q4,
2023                    out,
2024                );
2025                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2026                    &rust.qM12,
2027                    out,
2028                );
2029                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2030                    &rust.qM34,
2031                    out,
2032                );
2033                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2034                    &rust.qO,
2035                    out,
2036                );
2037                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2038                    &rust.qC,
2039                    out,
2040                );
2041                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2042                    &rust.qH1,
2043                    out,
2044                );
2045                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2046                    &rust.qH2,
2047                    out,
2048                );
2049                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2050                    &rust.qH3,
2051                    out,
2052                );
2053                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2054                    &rust.qH4,
2055                    out,
2056                );
2057                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2058                    &rust.qEcc,
2059                    out,
2060                );
2061                <alloy::sol_types::sol_data::FixedBytes<
2062                    32,
2063                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2064                    &rust.g2LSB,
2065                    out,
2066                );
2067                <alloy::sol_types::sol_data::FixedBytes<
2068                    32,
2069                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2070                    &rust.g2MSB,
2071                    out,
2072                );
2073            }
2074            #[inline]
2075            fn encode_topic(
2076                rust: &Self::RustType,
2077            ) -> alloy_sol_types::abi::token::WordToken {
2078                let mut out = alloy_sol_types::private::Vec::new();
2079                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2080                    rust,
2081                    &mut out,
2082                );
2083                alloy_sol_types::abi::token::WordToken(
2084                    alloy_sol_types::private::keccak256(out),
2085                )
2086            }
2087        }
2088    };
2089    use alloy::contract as alloy_contract;
2090    /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
2091
2092See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
2093    #[inline]
2094    pub const fn new<
2095        T: alloy_contract::private::Transport + ::core::clone::Clone,
2096        P: alloy_contract::private::Provider<T, N>,
2097        N: alloy_contract::private::Network,
2098    >(
2099        address: alloy_sol_types::private::Address,
2100        provider: P,
2101    ) -> IPlonkVerifierInstance<T, P, N> {
2102        IPlonkVerifierInstance::<T, P, N>::new(address, provider)
2103    }
2104    /**A [`IPlonkVerifier`](self) instance.
2105
2106Contains type-safe methods for interacting with an on-chain instance of the
2107[`IPlonkVerifier`](self) contract located at a given `address`, using a given
2108provider `P`.
2109
2110If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
2111documentation on how to provide it), the `deploy` and `deploy_builder` methods can
2112be used to deploy a new instance of the contract.
2113
2114See the [module-level documentation](self) for all the available methods.*/
2115    #[derive(Clone)]
2116    pub struct IPlonkVerifierInstance<T, P, N = alloy_contract::private::Ethereum> {
2117        address: alloy_sol_types::private::Address,
2118        provider: P,
2119        _network_transport: ::core::marker::PhantomData<(N, T)>,
2120    }
2121    #[automatically_derived]
2122    impl<T, P, N> ::core::fmt::Debug for IPlonkVerifierInstance<T, P, N> {
2123        #[inline]
2124        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2125            f.debug_tuple("IPlonkVerifierInstance").field(&self.address).finish()
2126        }
2127    }
2128    /// Instantiation and getters/setters.
2129    #[automatically_derived]
2130    impl<
2131        T: alloy_contract::private::Transport + ::core::clone::Clone,
2132        P: alloy_contract::private::Provider<T, N>,
2133        N: alloy_contract::private::Network,
2134    > IPlonkVerifierInstance<T, P, N> {
2135        /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
2136
2137See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
2138        #[inline]
2139        pub const fn new(
2140            address: alloy_sol_types::private::Address,
2141            provider: P,
2142        ) -> Self {
2143            Self {
2144                address,
2145                provider,
2146                _network_transport: ::core::marker::PhantomData,
2147            }
2148        }
2149        /// Returns a reference to the address.
2150        #[inline]
2151        pub const fn address(&self) -> &alloy_sol_types::private::Address {
2152            &self.address
2153        }
2154        /// Sets the address.
2155        #[inline]
2156        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
2157            self.address = address;
2158        }
2159        /// Sets the address and returns `self`.
2160        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
2161            self.set_address(address);
2162            self
2163        }
2164        /// Returns a reference to the provider.
2165        #[inline]
2166        pub const fn provider(&self) -> &P {
2167            &self.provider
2168        }
2169    }
2170    impl<T, P: ::core::clone::Clone, N> IPlonkVerifierInstance<T, &P, N> {
2171        /// Clones the provider and returns a new instance with the cloned provider.
2172        #[inline]
2173        pub fn with_cloned_provider(self) -> IPlonkVerifierInstance<T, P, N> {
2174            IPlonkVerifierInstance {
2175                address: self.address,
2176                provider: ::core::clone::Clone::clone(&self.provider),
2177                _network_transport: ::core::marker::PhantomData,
2178            }
2179        }
2180    }
2181    /// Function calls.
2182    #[automatically_derived]
2183    impl<
2184        T: alloy_contract::private::Transport + ::core::clone::Clone,
2185        P: alloy_contract::private::Provider<T, N>,
2186        N: alloy_contract::private::Network,
2187    > IPlonkVerifierInstance<T, P, N> {
2188        /// Creates a new call builder using this contract instance's provider and address.
2189        ///
2190        /// Note that the call can be any function call, not just those defined in this
2191        /// contract. Prefer using the other methods for building type-safe contract calls.
2192        pub fn call_builder<C: alloy_sol_types::SolCall>(
2193            &self,
2194            call: &C,
2195        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
2196            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
2197        }
2198    }
2199    /// Event filters.
2200    #[automatically_derived]
2201    impl<
2202        T: alloy_contract::private::Transport + ::core::clone::Clone,
2203        P: alloy_contract::private::Provider<T, N>,
2204        N: alloy_contract::private::Network,
2205    > IPlonkVerifierInstance<T, P, N> {
2206        /// Creates a new event filter using this contract instance's provider and address.
2207        ///
2208        /// Note that the type can be any event, not just those defined in this contract.
2209        /// Prefer using the other methods for building type-safe event filters.
2210        pub fn event_filter<E: alloy_sol_types::SolEvent>(
2211            &self,
2212        ) -> alloy_contract::Event<T, &P, E, N> {
2213            alloy_contract::Event::new_sol(&self.provider, &self.address)
2214        }
2215    }
2216}
2217///Module containing a contract's types and functions.
2218/**
2219
2220```solidity
2221library LightClient {
2222    struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
2223    struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
2224}
2225```*/
2226#[allow(
2227    non_camel_case_types,
2228    non_snake_case,
2229    clippy::pub_underscore_fields,
2230    clippy::style,
2231    clippy::empty_structs_with_brackets
2232)]
2233pub mod LightClient {
2234    use super::*;
2235    use alloy::sol_types as alloy_sol_types;
2236    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2237    /**```solidity
2238struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
2239```*/
2240    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2241    #[derive(Clone)]
2242    pub struct LightClientState {
2243        #[allow(missing_docs)]
2244        pub viewNum: u64,
2245        #[allow(missing_docs)]
2246        pub blockHeight: u64,
2247        #[allow(missing_docs)]
2248        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2249    }
2250    #[allow(
2251        non_camel_case_types,
2252        non_snake_case,
2253        clippy::pub_underscore_fields,
2254        clippy::style
2255    )]
2256    const _: () = {
2257        use alloy::sol_types as alloy_sol_types;
2258        #[doc(hidden)]
2259        type UnderlyingSolTuple<'a> = (
2260            alloy::sol_types::sol_data::Uint<64>,
2261            alloy::sol_types::sol_data::Uint<64>,
2262            BN254::ScalarField,
2263        );
2264        #[doc(hidden)]
2265        type UnderlyingRustTuple<'a> = (
2266            u64,
2267            u64,
2268            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2269        );
2270        #[cfg(test)]
2271        #[allow(dead_code, unreachable_patterns)]
2272        fn _type_assertion(
2273            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2274        ) {
2275            match _t {
2276                alloy_sol_types::private::AssertTypeEq::<
2277                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2278                >(_) => {}
2279            }
2280        }
2281        #[automatically_derived]
2282        #[doc(hidden)]
2283        impl ::core::convert::From<LightClientState> for UnderlyingRustTuple<'_> {
2284            fn from(value: LightClientState) -> Self {
2285                (value.viewNum, value.blockHeight, value.blockCommRoot)
2286            }
2287        }
2288        #[automatically_derived]
2289        #[doc(hidden)]
2290        impl ::core::convert::From<UnderlyingRustTuple<'_>> for LightClientState {
2291            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2292                Self {
2293                    viewNum: tuple.0,
2294                    blockHeight: tuple.1,
2295                    blockCommRoot: tuple.2,
2296                }
2297            }
2298        }
2299        #[automatically_derived]
2300        impl alloy_sol_types::SolValue for LightClientState {
2301            type SolType = Self;
2302        }
2303        #[automatically_derived]
2304        impl alloy_sol_types::private::SolTypeValue<Self> for LightClientState {
2305            #[inline]
2306            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2307                (
2308                    <alloy::sol_types::sol_data::Uint<
2309                        64,
2310                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
2311                    <alloy::sol_types::sol_data::Uint<
2312                        64,
2313                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
2314                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2315                        &self.blockCommRoot,
2316                    ),
2317                )
2318            }
2319            #[inline]
2320            fn stv_abi_encoded_size(&self) -> usize {
2321                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2322                    return size;
2323                }
2324                let tuple = <UnderlyingRustTuple<
2325                    '_,
2326                > as ::core::convert::From<Self>>::from(self.clone());
2327                <UnderlyingSolTuple<
2328                    '_,
2329                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2330            }
2331            #[inline]
2332            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2333                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2334            }
2335            #[inline]
2336            fn stv_abi_encode_packed_to(
2337                &self,
2338                out: &mut alloy_sol_types::private::Vec<u8>,
2339            ) {
2340                let tuple = <UnderlyingRustTuple<
2341                    '_,
2342                > as ::core::convert::From<Self>>::from(self.clone());
2343                <UnderlyingSolTuple<
2344                    '_,
2345                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2346            }
2347            #[inline]
2348            fn stv_abi_packed_encoded_size(&self) -> usize {
2349                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2350                    return size;
2351                }
2352                let tuple = <UnderlyingRustTuple<
2353                    '_,
2354                > as ::core::convert::From<Self>>::from(self.clone());
2355                <UnderlyingSolTuple<
2356                    '_,
2357                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2358            }
2359        }
2360        #[automatically_derived]
2361        impl alloy_sol_types::SolType for LightClientState {
2362            type RustType = Self;
2363            type Token<'a> = <UnderlyingSolTuple<
2364                'a,
2365            > as alloy_sol_types::SolType>::Token<'a>;
2366            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2367            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2368                '_,
2369            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2370            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2371                '_,
2372            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2373            #[inline]
2374            fn valid_token(token: &Self::Token<'_>) -> bool {
2375                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2376            }
2377            #[inline]
2378            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2379                let tuple = <UnderlyingSolTuple<
2380                    '_,
2381                > as alloy_sol_types::SolType>::detokenize(token);
2382                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2383            }
2384        }
2385        #[automatically_derived]
2386        impl alloy_sol_types::SolStruct for LightClientState {
2387            const NAME: &'static str = "LightClientState";
2388            #[inline]
2389            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2390                alloy_sol_types::private::Cow::Borrowed(
2391                    "LightClientState(uint64 viewNum,uint64 blockHeight,uint256 blockCommRoot)",
2392                )
2393            }
2394            #[inline]
2395            fn eip712_components() -> alloy_sol_types::private::Vec<
2396                alloy_sol_types::private::Cow<'static, str>,
2397            > {
2398                alloy_sol_types::private::Vec::new()
2399            }
2400            #[inline]
2401            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2402                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2403            }
2404            #[inline]
2405            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2406                [
2407                    <alloy::sol_types::sol_data::Uint<
2408                        64,
2409                    > as alloy_sol_types::SolType>::eip712_data_word(&self.viewNum)
2410                        .0,
2411                    <alloy::sol_types::sol_data::Uint<
2412                        64,
2413                    > as alloy_sol_types::SolType>::eip712_data_word(&self.blockHeight)
2414                        .0,
2415                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2416                            &self.blockCommRoot,
2417                        )
2418                        .0,
2419                ]
2420                    .concat()
2421            }
2422        }
2423        #[automatically_derived]
2424        impl alloy_sol_types::EventTopic for LightClientState {
2425            #[inline]
2426            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2427                0usize
2428                    + <alloy::sol_types::sol_data::Uint<
2429                        64,
2430                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2431                        &rust.viewNum,
2432                    )
2433                    + <alloy::sol_types::sol_data::Uint<
2434                        64,
2435                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2436                        &rust.blockHeight,
2437                    )
2438                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2439                        &rust.blockCommRoot,
2440                    )
2441            }
2442            #[inline]
2443            fn encode_topic_preimage(
2444                rust: &Self::RustType,
2445                out: &mut alloy_sol_types::private::Vec<u8>,
2446            ) {
2447                out.reserve(
2448                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2449                );
2450                <alloy::sol_types::sol_data::Uint<
2451                    64,
2452                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2453                    &rust.viewNum,
2454                    out,
2455                );
2456                <alloy::sol_types::sol_data::Uint<
2457                    64,
2458                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2459                    &rust.blockHeight,
2460                    out,
2461                );
2462                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2463                    &rust.blockCommRoot,
2464                    out,
2465                );
2466            }
2467            #[inline]
2468            fn encode_topic(
2469                rust: &Self::RustType,
2470            ) -> alloy_sol_types::abi::token::WordToken {
2471                let mut out = alloy_sol_types::private::Vec::new();
2472                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2473                    rust,
2474                    &mut out,
2475                );
2476                alloy_sol_types::abi::token::WordToken(
2477                    alloy_sol_types::private::keccak256(out),
2478                )
2479            }
2480        }
2481    };
2482    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2483    /**```solidity
2484struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
2485```*/
2486    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2487    #[derive(Clone)]
2488    pub struct StakeTableState {
2489        #[allow(missing_docs)]
2490        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
2491        #[allow(missing_docs)]
2492        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2493        #[allow(missing_docs)]
2494        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2495        #[allow(missing_docs)]
2496        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2497    }
2498    #[allow(
2499        non_camel_case_types,
2500        non_snake_case,
2501        clippy::pub_underscore_fields,
2502        clippy::style
2503    )]
2504    const _: () = {
2505        use alloy::sol_types as alloy_sol_types;
2506        #[doc(hidden)]
2507        type UnderlyingSolTuple<'a> = (
2508            alloy::sol_types::sol_data::Uint<256>,
2509            BN254::ScalarField,
2510            BN254::ScalarField,
2511            BN254::ScalarField,
2512        );
2513        #[doc(hidden)]
2514        type UnderlyingRustTuple<'a> = (
2515            alloy::sol_types::private::primitives::aliases::U256,
2516            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2517            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2518            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2519        );
2520        #[cfg(test)]
2521        #[allow(dead_code, unreachable_patterns)]
2522        fn _type_assertion(
2523            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2524        ) {
2525            match _t {
2526                alloy_sol_types::private::AssertTypeEq::<
2527                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2528                >(_) => {}
2529            }
2530        }
2531        #[automatically_derived]
2532        #[doc(hidden)]
2533        impl ::core::convert::From<StakeTableState> for UnderlyingRustTuple<'_> {
2534            fn from(value: StakeTableState) -> Self {
2535                (
2536                    value.threshold,
2537                    value.blsKeyComm,
2538                    value.schnorrKeyComm,
2539                    value.amountComm,
2540                )
2541            }
2542        }
2543        #[automatically_derived]
2544        #[doc(hidden)]
2545        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StakeTableState {
2546            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2547                Self {
2548                    threshold: tuple.0,
2549                    blsKeyComm: tuple.1,
2550                    schnorrKeyComm: tuple.2,
2551                    amountComm: tuple.3,
2552                }
2553            }
2554        }
2555        #[automatically_derived]
2556        impl alloy_sol_types::SolValue for StakeTableState {
2557            type SolType = Self;
2558        }
2559        #[automatically_derived]
2560        impl alloy_sol_types::private::SolTypeValue<Self> for StakeTableState {
2561            #[inline]
2562            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2563                (
2564                    <alloy::sol_types::sol_data::Uint<
2565                        256,
2566                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
2567                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2568                        &self.blsKeyComm,
2569                    ),
2570                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2571                        &self.schnorrKeyComm,
2572                    ),
2573                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2574                        &self.amountComm,
2575                    ),
2576                )
2577            }
2578            #[inline]
2579            fn stv_abi_encoded_size(&self) -> usize {
2580                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2581                    return size;
2582                }
2583                let tuple = <UnderlyingRustTuple<
2584                    '_,
2585                > as ::core::convert::From<Self>>::from(self.clone());
2586                <UnderlyingSolTuple<
2587                    '_,
2588                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2589            }
2590            #[inline]
2591            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2592                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2593            }
2594            #[inline]
2595            fn stv_abi_encode_packed_to(
2596                &self,
2597                out: &mut alloy_sol_types::private::Vec<u8>,
2598            ) {
2599                let tuple = <UnderlyingRustTuple<
2600                    '_,
2601                > as ::core::convert::From<Self>>::from(self.clone());
2602                <UnderlyingSolTuple<
2603                    '_,
2604                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2605            }
2606            #[inline]
2607            fn stv_abi_packed_encoded_size(&self) -> usize {
2608                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2609                    return size;
2610                }
2611                let tuple = <UnderlyingRustTuple<
2612                    '_,
2613                > as ::core::convert::From<Self>>::from(self.clone());
2614                <UnderlyingSolTuple<
2615                    '_,
2616                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2617            }
2618        }
2619        #[automatically_derived]
2620        impl alloy_sol_types::SolType for StakeTableState {
2621            type RustType = Self;
2622            type Token<'a> = <UnderlyingSolTuple<
2623                'a,
2624            > as alloy_sol_types::SolType>::Token<'a>;
2625            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2626            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2627                '_,
2628            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2629            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2630                '_,
2631            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2632            #[inline]
2633            fn valid_token(token: &Self::Token<'_>) -> bool {
2634                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2635            }
2636            #[inline]
2637            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2638                let tuple = <UnderlyingSolTuple<
2639                    '_,
2640                > as alloy_sol_types::SolType>::detokenize(token);
2641                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2642            }
2643        }
2644        #[automatically_derived]
2645        impl alloy_sol_types::SolStruct for StakeTableState {
2646            const NAME: &'static str = "StakeTableState";
2647            #[inline]
2648            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2649                alloy_sol_types::private::Cow::Borrowed(
2650                    "StakeTableState(uint256 threshold,uint256 blsKeyComm,uint256 schnorrKeyComm,uint256 amountComm)",
2651                )
2652            }
2653            #[inline]
2654            fn eip712_components() -> alloy_sol_types::private::Vec<
2655                alloy_sol_types::private::Cow<'static, str>,
2656            > {
2657                alloy_sol_types::private::Vec::new()
2658            }
2659            #[inline]
2660            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2661                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2662            }
2663            #[inline]
2664            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2665                [
2666                    <alloy::sol_types::sol_data::Uint<
2667                        256,
2668                    > as alloy_sol_types::SolType>::eip712_data_word(&self.threshold)
2669                        .0,
2670                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2671                            &self.blsKeyComm,
2672                        )
2673                        .0,
2674                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2675                            &self.schnorrKeyComm,
2676                        )
2677                        .0,
2678                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2679                            &self.amountComm,
2680                        )
2681                        .0,
2682                ]
2683                    .concat()
2684            }
2685        }
2686        #[automatically_derived]
2687        impl alloy_sol_types::EventTopic for StakeTableState {
2688            #[inline]
2689            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2690                0usize
2691                    + <alloy::sol_types::sol_data::Uint<
2692                        256,
2693                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2694                        &rust.threshold,
2695                    )
2696                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2697                        &rust.blsKeyComm,
2698                    )
2699                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2700                        &rust.schnorrKeyComm,
2701                    )
2702                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2703                        &rust.amountComm,
2704                    )
2705            }
2706            #[inline]
2707            fn encode_topic_preimage(
2708                rust: &Self::RustType,
2709                out: &mut alloy_sol_types::private::Vec<u8>,
2710            ) {
2711                out.reserve(
2712                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2713                );
2714                <alloy::sol_types::sol_data::Uint<
2715                    256,
2716                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2717                    &rust.threshold,
2718                    out,
2719                );
2720                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2721                    &rust.blsKeyComm,
2722                    out,
2723                );
2724                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2725                    &rust.schnorrKeyComm,
2726                    out,
2727                );
2728                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2729                    &rust.amountComm,
2730                    out,
2731                );
2732            }
2733            #[inline]
2734            fn encode_topic(
2735                rust: &Self::RustType,
2736            ) -> alloy_sol_types::abi::token::WordToken {
2737                let mut out = alloy_sol_types::private::Vec::new();
2738                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2739                    rust,
2740                    &mut out,
2741                );
2742                alloy_sol_types::abi::token::WordToken(
2743                    alloy_sol_types::private::keccak256(out),
2744                )
2745            }
2746        }
2747    };
2748    use alloy::contract as alloy_contract;
2749    /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
2750
2751See the [wrapper's documentation](`LightClientInstance`) for more details.*/
2752    #[inline]
2753    pub const fn new<
2754        T: alloy_contract::private::Transport + ::core::clone::Clone,
2755        P: alloy_contract::private::Provider<T, N>,
2756        N: alloy_contract::private::Network,
2757    >(
2758        address: alloy_sol_types::private::Address,
2759        provider: P,
2760    ) -> LightClientInstance<T, P, N> {
2761        LightClientInstance::<T, P, N>::new(address, provider)
2762    }
2763    /**A [`LightClient`](self) instance.
2764
2765Contains type-safe methods for interacting with an on-chain instance of the
2766[`LightClient`](self) contract located at a given `address`, using a given
2767provider `P`.
2768
2769If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
2770documentation on how to provide it), the `deploy` and `deploy_builder` methods can
2771be used to deploy a new instance of the contract.
2772
2773See the [module-level documentation](self) for all the available methods.*/
2774    #[derive(Clone)]
2775    pub struct LightClientInstance<T, P, N = alloy_contract::private::Ethereum> {
2776        address: alloy_sol_types::private::Address,
2777        provider: P,
2778        _network_transport: ::core::marker::PhantomData<(N, T)>,
2779    }
2780    #[automatically_derived]
2781    impl<T, P, N> ::core::fmt::Debug for LightClientInstance<T, P, N> {
2782        #[inline]
2783        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2784            f.debug_tuple("LightClientInstance").field(&self.address).finish()
2785        }
2786    }
2787    /// Instantiation and getters/setters.
2788    #[automatically_derived]
2789    impl<
2790        T: alloy_contract::private::Transport + ::core::clone::Clone,
2791        P: alloy_contract::private::Provider<T, N>,
2792        N: alloy_contract::private::Network,
2793    > LightClientInstance<T, P, N> {
2794        /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
2795
2796See the [wrapper's documentation](`LightClientInstance`) for more details.*/
2797        #[inline]
2798        pub const fn new(
2799            address: alloy_sol_types::private::Address,
2800            provider: P,
2801        ) -> Self {
2802            Self {
2803                address,
2804                provider,
2805                _network_transport: ::core::marker::PhantomData,
2806            }
2807        }
2808        /// Returns a reference to the address.
2809        #[inline]
2810        pub const fn address(&self) -> &alloy_sol_types::private::Address {
2811            &self.address
2812        }
2813        /// Sets the address.
2814        #[inline]
2815        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
2816            self.address = address;
2817        }
2818        /// Sets the address and returns `self`.
2819        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
2820            self.set_address(address);
2821            self
2822        }
2823        /// Returns a reference to the provider.
2824        #[inline]
2825        pub const fn provider(&self) -> &P {
2826            &self.provider
2827        }
2828    }
2829    impl<T, P: ::core::clone::Clone, N> LightClientInstance<T, &P, N> {
2830        /// Clones the provider and returns a new instance with the cloned provider.
2831        #[inline]
2832        pub fn with_cloned_provider(self) -> LightClientInstance<T, P, N> {
2833            LightClientInstance {
2834                address: self.address,
2835                provider: ::core::clone::Clone::clone(&self.provider),
2836                _network_transport: ::core::marker::PhantomData,
2837            }
2838        }
2839    }
2840    /// Function calls.
2841    #[automatically_derived]
2842    impl<
2843        T: alloy_contract::private::Transport + ::core::clone::Clone,
2844        P: alloy_contract::private::Provider<T, N>,
2845        N: alloy_contract::private::Network,
2846    > LightClientInstance<T, P, N> {
2847        /// Creates a new call builder using this contract instance's provider and address.
2848        ///
2849        /// Note that the call can be any function call, not just those defined in this
2850        /// contract. Prefer using the other methods for building type-safe contract calls.
2851        pub fn call_builder<C: alloy_sol_types::SolCall>(
2852            &self,
2853            call: &C,
2854        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
2855            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
2856        }
2857    }
2858    /// Event filters.
2859    #[automatically_derived]
2860    impl<
2861        T: alloy_contract::private::Transport + ::core::clone::Clone,
2862        P: alloy_contract::private::Provider<T, N>,
2863        N: alloy_contract::private::Network,
2864    > LightClientInstance<T, P, N> {
2865        /// Creates a new event filter using this contract instance's provider and address.
2866        ///
2867        /// Note that the type can be any event, not just those defined in this contract.
2868        /// Prefer using the other methods for building type-safe event filters.
2869        pub fn event_filter<E: alloy_sol_types::SolEvent>(
2870            &self,
2871        ) -> alloy_contract::Event<T, &P, E, N> {
2872            alloy_contract::Event::new_sol(&self.provider, &self.address)
2873        }
2874    }
2875}
2876/**
2877
2878Generated by the following Solidity interface...
2879```solidity
2880library BN254 {
2881    type BaseField is uint256;
2882    type ScalarField is uint256;
2883    struct G1Point {
2884        BaseField x;
2885        BaseField y;
2886    }
2887}
2888
2889library IPlonkVerifier {
2890    struct PlonkProof {
2891        BN254.G1Point wire0;
2892        BN254.G1Point wire1;
2893        BN254.G1Point wire2;
2894        BN254.G1Point wire3;
2895        BN254.G1Point wire4;
2896        BN254.G1Point prodPerm;
2897        BN254.G1Point split0;
2898        BN254.G1Point split1;
2899        BN254.G1Point split2;
2900        BN254.G1Point split3;
2901        BN254.G1Point split4;
2902        BN254.G1Point zeta;
2903        BN254.G1Point zetaOmega;
2904        BN254.ScalarField wireEval0;
2905        BN254.ScalarField wireEval1;
2906        BN254.ScalarField wireEval2;
2907        BN254.ScalarField wireEval3;
2908        BN254.ScalarField wireEval4;
2909        BN254.ScalarField sigmaEval0;
2910        BN254.ScalarField sigmaEval1;
2911        BN254.ScalarField sigmaEval2;
2912        BN254.ScalarField sigmaEval3;
2913        BN254.ScalarField prodPermZetaOmegaEval;
2914    }
2915    struct VerifyingKey {
2916        uint256 domainSize;
2917        uint256 numInputs;
2918        BN254.G1Point sigma0;
2919        BN254.G1Point sigma1;
2920        BN254.G1Point sigma2;
2921        BN254.G1Point sigma3;
2922        BN254.G1Point sigma4;
2923        BN254.G1Point q1;
2924        BN254.G1Point q2;
2925        BN254.G1Point q3;
2926        BN254.G1Point q4;
2927        BN254.G1Point qM12;
2928        BN254.G1Point qM34;
2929        BN254.G1Point qO;
2930        BN254.G1Point qC;
2931        BN254.G1Point qH1;
2932        BN254.G1Point qH2;
2933        BN254.G1Point qH3;
2934        BN254.G1Point qH4;
2935        BN254.G1Point qEcc;
2936        bytes32 g2LSB;
2937        bytes32 g2MSB;
2938    }
2939}
2940
2941library LightClient {
2942    struct LightClientState {
2943        uint64 viewNum;
2944        uint64 blockHeight;
2945        BN254.ScalarField blockCommRoot;
2946    }
2947    struct StakeTableState {
2948        uint256 threshold;
2949        BN254.ScalarField blsKeyComm;
2950        BN254.ScalarField schnorrKeyComm;
2951        BN254.ScalarField amountComm;
2952    }
2953}
2954
2955interface LightClientArbitrumV2 {
2956    error AddressEmptyCode(address target);
2957    error DeprecatedApi();
2958    error ERC1967InvalidImplementation(address implementation);
2959    error ERC1967NonPayable();
2960    error FailedInnerCall();
2961    error InsufficientSnapshotHistory();
2962    error InvalidAddress();
2963    error InvalidArgs();
2964    error InvalidHotShotBlockForCommitmentCheck();
2965    error InvalidInitialization();
2966    error InvalidMaxStateHistory();
2967    error InvalidProof();
2968    error MissingEpochRootUpdate();
2969    error NoChangeRequired();
2970    error NotInitializing();
2971    error OutdatedState();
2972    error OwnableInvalidOwner(address owner);
2973    error OwnableUnauthorizedAccount(address account);
2974    error ProverNotPermissioned();
2975    error UUPSUnauthorizedCallContext();
2976    error UUPSUnsupportedProxiableUUID(bytes32 slot);
2977    error WrongStakeTableUsed();
2978
2979    event Initialized(uint64 version);
2980    event NewEpoch(uint64 epoch);
2981    event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
2982    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
2983    event PermissionedProverNotRequired();
2984    event PermissionedProverRequired(address permissionedProver);
2985    event Upgrade(address implementation);
2986    event Upgraded(address indexed implementation);
2987
2988    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
2989    function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
2990    function blocksPerEpoch() external view returns (uint64);
2991    function currentBlockNumber() external view returns (uint256);
2992    function currentEpoch() external view returns (uint64);
2993    function disablePermissionedProverMode() external;
2994    function epochFromBlockNumber(uint64 _blockNum, uint64 _blocksPerEpoch) external pure returns (uint64);
2995    function epochStartBlock() external view returns (uint64);
2996    function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
2997    function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
2998    function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
2999    function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
3000    function getStateHistoryCount() external view returns (uint256);
3001    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
3002    function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
3003    function initializeV2(uint64 _blocksPerEpoch, uint64 _epochStartBlock) external;
3004    function isEpochRoot(uint64 blockHeight) external view returns (bool);
3005    function isGtEpochRoot(uint64 blockHeight) external view returns (bool);
3006    function isPermissionedProverEnabled() external view returns (bool);
3007    function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 blockThreshold) external view returns (bool);
3008    function newFinalizedState(LightClient.LightClientState memory, IPlonkVerifier.PlonkProof memory) external pure;
3009    function newFinalizedState(LightClient.LightClientState memory newState, LightClient.StakeTableState memory nextStakeTable, IPlonkVerifier.PlonkProof memory proof) external;
3010    function owner() external view returns (address);
3011    function permissionedProver() external view returns (address);
3012    function proxiableUUID() external view returns (bytes32);
3013    function renounceOwnership() external;
3014    function setPermissionedProver(address prover) external;
3015    function setStateHistoryRetentionPeriod(uint32 historySeconds) external;
3016    function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
3017    function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
3018    function stateHistoryFirstIndex() external view returns (uint64);
3019    function stateHistoryRetentionPeriod() external view returns (uint32);
3020    function transferOwnership(address newOwner) external;
3021    function updateEpochStartBlock(uint64 newEpochStartBlock) external;
3022    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
3023    function votingStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
3024}
3025```
3026
3027...which was generated by the following JSON ABI:
3028```json
3029[
3030  {
3031    "type": "function",
3032    "name": "UPGRADE_INTERFACE_VERSION",
3033    "inputs": [],
3034    "outputs": [
3035      {
3036        "name": "",
3037        "type": "string",
3038        "internalType": "string"
3039      }
3040    ],
3041    "stateMutability": "view"
3042  },
3043  {
3044    "type": "function",
3045    "name": "_getVk",
3046    "inputs": [],
3047    "outputs": [
3048      {
3049        "name": "vk",
3050        "type": "tuple",
3051        "internalType": "struct IPlonkVerifier.VerifyingKey",
3052        "components": [
3053          {
3054            "name": "domainSize",
3055            "type": "uint256",
3056            "internalType": "uint256"
3057          },
3058          {
3059            "name": "numInputs",
3060            "type": "uint256",
3061            "internalType": "uint256"
3062          },
3063          {
3064            "name": "sigma0",
3065            "type": "tuple",
3066            "internalType": "struct BN254.G1Point",
3067            "components": [
3068              {
3069                "name": "x",
3070                "type": "uint256",
3071                "internalType": "BN254.BaseField"
3072              },
3073              {
3074                "name": "y",
3075                "type": "uint256",
3076                "internalType": "BN254.BaseField"
3077              }
3078            ]
3079          },
3080          {
3081            "name": "sigma1",
3082            "type": "tuple",
3083            "internalType": "struct BN254.G1Point",
3084            "components": [
3085              {
3086                "name": "x",
3087                "type": "uint256",
3088                "internalType": "BN254.BaseField"
3089              },
3090              {
3091                "name": "y",
3092                "type": "uint256",
3093                "internalType": "BN254.BaseField"
3094              }
3095            ]
3096          },
3097          {
3098            "name": "sigma2",
3099            "type": "tuple",
3100            "internalType": "struct BN254.G1Point",
3101            "components": [
3102              {
3103                "name": "x",
3104                "type": "uint256",
3105                "internalType": "BN254.BaseField"
3106              },
3107              {
3108                "name": "y",
3109                "type": "uint256",
3110                "internalType": "BN254.BaseField"
3111              }
3112            ]
3113          },
3114          {
3115            "name": "sigma3",
3116            "type": "tuple",
3117            "internalType": "struct BN254.G1Point",
3118            "components": [
3119              {
3120                "name": "x",
3121                "type": "uint256",
3122                "internalType": "BN254.BaseField"
3123              },
3124              {
3125                "name": "y",
3126                "type": "uint256",
3127                "internalType": "BN254.BaseField"
3128              }
3129            ]
3130          },
3131          {
3132            "name": "sigma4",
3133            "type": "tuple",
3134            "internalType": "struct BN254.G1Point",
3135            "components": [
3136              {
3137                "name": "x",
3138                "type": "uint256",
3139                "internalType": "BN254.BaseField"
3140              },
3141              {
3142                "name": "y",
3143                "type": "uint256",
3144                "internalType": "BN254.BaseField"
3145              }
3146            ]
3147          },
3148          {
3149            "name": "q1",
3150            "type": "tuple",
3151            "internalType": "struct BN254.G1Point",
3152            "components": [
3153              {
3154                "name": "x",
3155                "type": "uint256",
3156                "internalType": "BN254.BaseField"
3157              },
3158              {
3159                "name": "y",
3160                "type": "uint256",
3161                "internalType": "BN254.BaseField"
3162              }
3163            ]
3164          },
3165          {
3166            "name": "q2",
3167            "type": "tuple",
3168            "internalType": "struct BN254.G1Point",
3169            "components": [
3170              {
3171                "name": "x",
3172                "type": "uint256",
3173                "internalType": "BN254.BaseField"
3174              },
3175              {
3176                "name": "y",
3177                "type": "uint256",
3178                "internalType": "BN254.BaseField"
3179              }
3180            ]
3181          },
3182          {
3183            "name": "q3",
3184            "type": "tuple",
3185            "internalType": "struct BN254.G1Point",
3186            "components": [
3187              {
3188                "name": "x",
3189                "type": "uint256",
3190                "internalType": "BN254.BaseField"
3191              },
3192              {
3193                "name": "y",
3194                "type": "uint256",
3195                "internalType": "BN254.BaseField"
3196              }
3197            ]
3198          },
3199          {
3200            "name": "q4",
3201            "type": "tuple",
3202            "internalType": "struct BN254.G1Point",
3203            "components": [
3204              {
3205                "name": "x",
3206                "type": "uint256",
3207                "internalType": "BN254.BaseField"
3208              },
3209              {
3210                "name": "y",
3211                "type": "uint256",
3212                "internalType": "BN254.BaseField"
3213              }
3214            ]
3215          },
3216          {
3217            "name": "qM12",
3218            "type": "tuple",
3219            "internalType": "struct BN254.G1Point",
3220            "components": [
3221              {
3222                "name": "x",
3223                "type": "uint256",
3224                "internalType": "BN254.BaseField"
3225              },
3226              {
3227                "name": "y",
3228                "type": "uint256",
3229                "internalType": "BN254.BaseField"
3230              }
3231            ]
3232          },
3233          {
3234            "name": "qM34",
3235            "type": "tuple",
3236            "internalType": "struct BN254.G1Point",
3237            "components": [
3238              {
3239                "name": "x",
3240                "type": "uint256",
3241                "internalType": "BN254.BaseField"
3242              },
3243              {
3244                "name": "y",
3245                "type": "uint256",
3246                "internalType": "BN254.BaseField"
3247              }
3248            ]
3249          },
3250          {
3251            "name": "qO",
3252            "type": "tuple",
3253            "internalType": "struct BN254.G1Point",
3254            "components": [
3255              {
3256                "name": "x",
3257                "type": "uint256",
3258                "internalType": "BN254.BaseField"
3259              },
3260              {
3261                "name": "y",
3262                "type": "uint256",
3263                "internalType": "BN254.BaseField"
3264              }
3265            ]
3266          },
3267          {
3268            "name": "qC",
3269            "type": "tuple",
3270            "internalType": "struct BN254.G1Point",
3271            "components": [
3272              {
3273                "name": "x",
3274                "type": "uint256",
3275                "internalType": "BN254.BaseField"
3276              },
3277              {
3278                "name": "y",
3279                "type": "uint256",
3280                "internalType": "BN254.BaseField"
3281              }
3282            ]
3283          },
3284          {
3285            "name": "qH1",
3286            "type": "tuple",
3287            "internalType": "struct BN254.G1Point",
3288            "components": [
3289              {
3290                "name": "x",
3291                "type": "uint256",
3292                "internalType": "BN254.BaseField"
3293              },
3294              {
3295                "name": "y",
3296                "type": "uint256",
3297                "internalType": "BN254.BaseField"
3298              }
3299            ]
3300          },
3301          {
3302            "name": "qH2",
3303            "type": "tuple",
3304            "internalType": "struct BN254.G1Point",
3305            "components": [
3306              {
3307                "name": "x",
3308                "type": "uint256",
3309                "internalType": "BN254.BaseField"
3310              },
3311              {
3312                "name": "y",
3313                "type": "uint256",
3314                "internalType": "BN254.BaseField"
3315              }
3316            ]
3317          },
3318          {
3319            "name": "qH3",
3320            "type": "tuple",
3321            "internalType": "struct BN254.G1Point",
3322            "components": [
3323              {
3324                "name": "x",
3325                "type": "uint256",
3326                "internalType": "BN254.BaseField"
3327              },
3328              {
3329                "name": "y",
3330                "type": "uint256",
3331                "internalType": "BN254.BaseField"
3332              }
3333            ]
3334          },
3335          {
3336            "name": "qH4",
3337            "type": "tuple",
3338            "internalType": "struct BN254.G1Point",
3339            "components": [
3340              {
3341                "name": "x",
3342                "type": "uint256",
3343                "internalType": "BN254.BaseField"
3344              },
3345              {
3346                "name": "y",
3347                "type": "uint256",
3348                "internalType": "BN254.BaseField"
3349              }
3350            ]
3351          },
3352          {
3353            "name": "qEcc",
3354            "type": "tuple",
3355            "internalType": "struct BN254.G1Point",
3356            "components": [
3357              {
3358                "name": "x",
3359                "type": "uint256",
3360                "internalType": "BN254.BaseField"
3361              },
3362              {
3363                "name": "y",
3364                "type": "uint256",
3365                "internalType": "BN254.BaseField"
3366              }
3367            ]
3368          },
3369          {
3370            "name": "g2LSB",
3371            "type": "bytes32",
3372            "internalType": "bytes32"
3373          },
3374          {
3375            "name": "g2MSB",
3376            "type": "bytes32",
3377            "internalType": "bytes32"
3378          }
3379        ]
3380      }
3381    ],
3382    "stateMutability": "pure"
3383  },
3384  {
3385    "type": "function",
3386    "name": "blocksPerEpoch",
3387    "inputs": [],
3388    "outputs": [
3389      {
3390        "name": "",
3391        "type": "uint64",
3392        "internalType": "uint64"
3393      }
3394    ],
3395    "stateMutability": "view"
3396  },
3397  {
3398    "type": "function",
3399    "name": "currentBlockNumber",
3400    "inputs": [],
3401    "outputs": [
3402      {
3403        "name": "",
3404        "type": "uint256",
3405        "internalType": "uint256"
3406      }
3407    ],
3408    "stateMutability": "view"
3409  },
3410  {
3411    "type": "function",
3412    "name": "currentEpoch",
3413    "inputs": [],
3414    "outputs": [
3415      {
3416        "name": "",
3417        "type": "uint64",
3418        "internalType": "uint64"
3419      }
3420    ],
3421    "stateMutability": "view"
3422  },
3423  {
3424    "type": "function",
3425    "name": "disablePermissionedProverMode",
3426    "inputs": [],
3427    "outputs": [],
3428    "stateMutability": "nonpayable"
3429  },
3430  {
3431    "type": "function",
3432    "name": "epochFromBlockNumber",
3433    "inputs": [
3434      {
3435        "name": "_blockNum",
3436        "type": "uint64",
3437        "internalType": "uint64"
3438      },
3439      {
3440        "name": "_blocksPerEpoch",
3441        "type": "uint64",
3442        "internalType": "uint64"
3443      }
3444    ],
3445    "outputs": [
3446      {
3447        "name": "",
3448        "type": "uint64",
3449        "internalType": "uint64"
3450      }
3451    ],
3452    "stateMutability": "pure"
3453  },
3454  {
3455    "type": "function",
3456    "name": "epochStartBlock",
3457    "inputs": [],
3458    "outputs": [
3459      {
3460        "name": "",
3461        "type": "uint64",
3462        "internalType": "uint64"
3463      }
3464    ],
3465    "stateMutability": "view"
3466  },
3467  {
3468    "type": "function",
3469    "name": "finalizedState",
3470    "inputs": [],
3471    "outputs": [
3472      {
3473        "name": "viewNum",
3474        "type": "uint64",
3475        "internalType": "uint64"
3476      },
3477      {
3478        "name": "blockHeight",
3479        "type": "uint64",
3480        "internalType": "uint64"
3481      },
3482      {
3483        "name": "blockCommRoot",
3484        "type": "uint256",
3485        "internalType": "BN254.ScalarField"
3486      }
3487    ],
3488    "stateMutability": "view"
3489  },
3490  {
3491    "type": "function",
3492    "name": "genesisStakeTableState",
3493    "inputs": [],
3494    "outputs": [
3495      {
3496        "name": "threshold",
3497        "type": "uint256",
3498        "internalType": "uint256"
3499      },
3500      {
3501        "name": "blsKeyComm",
3502        "type": "uint256",
3503        "internalType": "BN254.ScalarField"
3504      },
3505      {
3506        "name": "schnorrKeyComm",
3507        "type": "uint256",
3508        "internalType": "BN254.ScalarField"
3509      },
3510      {
3511        "name": "amountComm",
3512        "type": "uint256",
3513        "internalType": "BN254.ScalarField"
3514      }
3515    ],
3516    "stateMutability": "view"
3517  },
3518  {
3519    "type": "function",
3520    "name": "genesisState",
3521    "inputs": [],
3522    "outputs": [
3523      {
3524        "name": "viewNum",
3525        "type": "uint64",
3526        "internalType": "uint64"
3527      },
3528      {
3529        "name": "blockHeight",
3530        "type": "uint64",
3531        "internalType": "uint64"
3532      },
3533      {
3534        "name": "blockCommRoot",
3535        "type": "uint256",
3536        "internalType": "BN254.ScalarField"
3537      }
3538    ],
3539    "stateMutability": "view"
3540  },
3541  {
3542    "type": "function",
3543    "name": "getHotShotCommitment",
3544    "inputs": [
3545      {
3546        "name": "hotShotBlockHeight",
3547        "type": "uint256",
3548        "internalType": "uint256"
3549      }
3550    ],
3551    "outputs": [
3552      {
3553        "name": "hotShotBlockCommRoot",
3554        "type": "uint256",
3555        "internalType": "BN254.ScalarField"
3556      },
3557      {
3558        "name": "hotshotBlockHeight",
3559        "type": "uint64",
3560        "internalType": "uint64"
3561      }
3562    ],
3563    "stateMutability": "view"
3564  },
3565  {
3566    "type": "function",
3567    "name": "getStateHistoryCount",
3568    "inputs": [],
3569    "outputs": [
3570      {
3571        "name": "",
3572        "type": "uint256",
3573        "internalType": "uint256"
3574      }
3575    ],
3576    "stateMutability": "view"
3577  },
3578  {
3579    "type": "function",
3580    "name": "getVersion",
3581    "inputs": [],
3582    "outputs": [
3583      {
3584        "name": "majorVersion",
3585        "type": "uint8",
3586        "internalType": "uint8"
3587      },
3588      {
3589        "name": "minorVersion",
3590        "type": "uint8",
3591        "internalType": "uint8"
3592      },
3593      {
3594        "name": "patchVersion",
3595        "type": "uint8",
3596        "internalType": "uint8"
3597      }
3598    ],
3599    "stateMutability": "pure"
3600  },
3601  {
3602    "type": "function",
3603    "name": "initialize",
3604    "inputs": [
3605      {
3606        "name": "_genesis",
3607        "type": "tuple",
3608        "internalType": "struct LightClient.LightClientState",
3609        "components": [
3610          {
3611            "name": "viewNum",
3612            "type": "uint64",
3613            "internalType": "uint64"
3614          },
3615          {
3616            "name": "blockHeight",
3617            "type": "uint64",
3618            "internalType": "uint64"
3619          },
3620          {
3621            "name": "blockCommRoot",
3622            "type": "uint256",
3623            "internalType": "BN254.ScalarField"
3624          }
3625        ]
3626      },
3627      {
3628        "name": "_genesisStakeTableState",
3629        "type": "tuple",
3630        "internalType": "struct LightClient.StakeTableState",
3631        "components": [
3632          {
3633            "name": "threshold",
3634            "type": "uint256",
3635            "internalType": "uint256"
3636          },
3637          {
3638            "name": "blsKeyComm",
3639            "type": "uint256",
3640            "internalType": "BN254.ScalarField"
3641          },
3642          {
3643            "name": "schnorrKeyComm",
3644            "type": "uint256",
3645            "internalType": "BN254.ScalarField"
3646          },
3647          {
3648            "name": "amountComm",
3649            "type": "uint256",
3650            "internalType": "BN254.ScalarField"
3651          }
3652        ]
3653      },
3654      {
3655        "name": "_stateHistoryRetentionPeriod",
3656        "type": "uint32",
3657        "internalType": "uint32"
3658      },
3659      {
3660        "name": "owner",
3661        "type": "address",
3662        "internalType": "address"
3663      }
3664    ],
3665    "outputs": [],
3666    "stateMutability": "nonpayable"
3667  },
3668  {
3669    "type": "function",
3670    "name": "initializeV2",
3671    "inputs": [
3672      {
3673        "name": "_blocksPerEpoch",
3674        "type": "uint64",
3675        "internalType": "uint64"
3676      },
3677      {
3678        "name": "_epochStartBlock",
3679        "type": "uint64",
3680        "internalType": "uint64"
3681      }
3682    ],
3683    "outputs": [],
3684    "stateMutability": "nonpayable"
3685  },
3686  {
3687    "type": "function",
3688    "name": "isEpochRoot",
3689    "inputs": [
3690      {
3691        "name": "blockHeight",
3692        "type": "uint64",
3693        "internalType": "uint64"
3694      }
3695    ],
3696    "outputs": [
3697      {
3698        "name": "",
3699        "type": "bool",
3700        "internalType": "bool"
3701      }
3702    ],
3703    "stateMutability": "view"
3704  },
3705  {
3706    "type": "function",
3707    "name": "isGtEpochRoot",
3708    "inputs": [
3709      {
3710        "name": "blockHeight",
3711        "type": "uint64",
3712        "internalType": "uint64"
3713      }
3714    ],
3715    "outputs": [
3716      {
3717        "name": "",
3718        "type": "bool",
3719        "internalType": "bool"
3720      }
3721    ],
3722    "stateMutability": "view"
3723  },
3724  {
3725    "type": "function",
3726    "name": "isPermissionedProverEnabled",
3727    "inputs": [],
3728    "outputs": [
3729      {
3730        "name": "",
3731        "type": "bool",
3732        "internalType": "bool"
3733      }
3734    ],
3735    "stateMutability": "view"
3736  },
3737  {
3738    "type": "function",
3739    "name": "lagOverEscapeHatchThreshold",
3740    "inputs": [
3741      {
3742        "name": "blockNumber",
3743        "type": "uint256",
3744        "internalType": "uint256"
3745      },
3746      {
3747        "name": "blockThreshold",
3748        "type": "uint256",
3749        "internalType": "uint256"
3750      }
3751    ],
3752    "outputs": [
3753      {
3754        "name": "",
3755        "type": "bool",
3756        "internalType": "bool"
3757      }
3758    ],
3759    "stateMutability": "view"
3760  },
3761  {
3762    "type": "function",
3763    "name": "newFinalizedState",
3764    "inputs": [
3765      {
3766        "name": "",
3767        "type": "tuple",
3768        "internalType": "struct LightClient.LightClientState",
3769        "components": [
3770          {
3771            "name": "viewNum",
3772            "type": "uint64",
3773            "internalType": "uint64"
3774          },
3775          {
3776            "name": "blockHeight",
3777            "type": "uint64",
3778            "internalType": "uint64"
3779          },
3780          {
3781            "name": "blockCommRoot",
3782            "type": "uint256",
3783            "internalType": "BN254.ScalarField"
3784          }
3785        ]
3786      },
3787      {
3788        "name": "",
3789        "type": "tuple",
3790        "internalType": "struct IPlonkVerifier.PlonkProof",
3791        "components": [
3792          {
3793            "name": "wire0",
3794            "type": "tuple",
3795            "internalType": "struct BN254.G1Point",
3796            "components": [
3797              {
3798                "name": "x",
3799                "type": "uint256",
3800                "internalType": "BN254.BaseField"
3801              },
3802              {
3803                "name": "y",
3804                "type": "uint256",
3805                "internalType": "BN254.BaseField"
3806              }
3807            ]
3808          },
3809          {
3810            "name": "wire1",
3811            "type": "tuple",
3812            "internalType": "struct BN254.G1Point",
3813            "components": [
3814              {
3815                "name": "x",
3816                "type": "uint256",
3817                "internalType": "BN254.BaseField"
3818              },
3819              {
3820                "name": "y",
3821                "type": "uint256",
3822                "internalType": "BN254.BaseField"
3823              }
3824            ]
3825          },
3826          {
3827            "name": "wire2",
3828            "type": "tuple",
3829            "internalType": "struct BN254.G1Point",
3830            "components": [
3831              {
3832                "name": "x",
3833                "type": "uint256",
3834                "internalType": "BN254.BaseField"
3835              },
3836              {
3837                "name": "y",
3838                "type": "uint256",
3839                "internalType": "BN254.BaseField"
3840              }
3841            ]
3842          },
3843          {
3844            "name": "wire3",
3845            "type": "tuple",
3846            "internalType": "struct BN254.G1Point",
3847            "components": [
3848              {
3849                "name": "x",
3850                "type": "uint256",
3851                "internalType": "BN254.BaseField"
3852              },
3853              {
3854                "name": "y",
3855                "type": "uint256",
3856                "internalType": "BN254.BaseField"
3857              }
3858            ]
3859          },
3860          {
3861            "name": "wire4",
3862            "type": "tuple",
3863            "internalType": "struct BN254.G1Point",
3864            "components": [
3865              {
3866                "name": "x",
3867                "type": "uint256",
3868                "internalType": "BN254.BaseField"
3869              },
3870              {
3871                "name": "y",
3872                "type": "uint256",
3873                "internalType": "BN254.BaseField"
3874              }
3875            ]
3876          },
3877          {
3878            "name": "prodPerm",
3879            "type": "tuple",
3880            "internalType": "struct BN254.G1Point",
3881            "components": [
3882              {
3883                "name": "x",
3884                "type": "uint256",
3885                "internalType": "BN254.BaseField"
3886              },
3887              {
3888                "name": "y",
3889                "type": "uint256",
3890                "internalType": "BN254.BaseField"
3891              }
3892            ]
3893          },
3894          {
3895            "name": "split0",
3896            "type": "tuple",
3897            "internalType": "struct BN254.G1Point",
3898            "components": [
3899              {
3900                "name": "x",
3901                "type": "uint256",
3902                "internalType": "BN254.BaseField"
3903              },
3904              {
3905                "name": "y",
3906                "type": "uint256",
3907                "internalType": "BN254.BaseField"
3908              }
3909            ]
3910          },
3911          {
3912            "name": "split1",
3913            "type": "tuple",
3914            "internalType": "struct BN254.G1Point",
3915            "components": [
3916              {
3917                "name": "x",
3918                "type": "uint256",
3919                "internalType": "BN254.BaseField"
3920              },
3921              {
3922                "name": "y",
3923                "type": "uint256",
3924                "internalType": "BN254.BaseField"
3925              }
3926            ]
3927          },
3928          {
3929            "name": "split2",
3930            "type": "tuple",
3931            "internalType": "struct BN254.G1Point",
3932            "components": [
3933              {
3934                "name": "x",
3935                "type": "uint256",
3936                "internalType": "BN254.BaseField"
3937              },
3938              {
3939                "name": "y",
3940                "type": "uint256",
3941                "internalType": "BN254.BaseField"
3942              }
3943            ]
3944          },
3945          {
3946            "name": "split3",
3947            "type": "tuple",
3948            "internalType": "struct BN254.G1Point",
3949            "components": [
3950              {
3951                "name": "x",
3952                "type": "uint256",
3953                "internalType": "BN254.BaseField"
3954              },
3955              {
3956                "name": "y",
3957                "type": "uint256",
3958                "internalType": "BN254.BaseField"
3959              }
3960            ]
3961          },
3962          {
3963            "name": "split4",
3964            "type": "tuple",
3965            "internalType": "struct BN254.G1Point",
3966            "components": [
3967              {
3968                "name": "x",
3969                "type": "uint256",
3970                "internalType": "BN254.BaseField"
3971              },
3972              {
3973                "name": "y",
3974                "type": "uint256",
3975                "internalType": "BN254.BaseField"
3976              }
3977            ]
3978          },
3979          {
3980            "name": "zeta",
3981            "type": "tuple",
3982            "internalType": "struct BN254.G1Point",
3983            "components": [
3984              {
3985                "name": "x",
3986                "type": "uint256",
3987                "internalType": "BN254.BaseField"
3988              },
3989              {
3990                "name": "y",
3991                "type": "uint256",
3992                "internalType": "BN254.BaseField"
3993              }
3994            ]
3995          },
3996          {
3997            "name": "zetaOmega",
3998            "type": "tuple",
3999            "internalType": "struct BN254.G1Point",
4000            "components": [
4001              {
4002                "name": "x",
4003                "type": "uint256",
4004                "internalType": "BN254.BaseField"
4005              },
4006              {
4007                "name": "y",
4008                "type": "uint256",
4009                "internalType": "BN254.BaseField"
4010              }
4011            ]
4012          },
4013          {
4014            "name": "wireEval0",
4015            "type": "uint256",
4016            "internalType": "BN254.ScalarField"
4017          },
4018          {
4019            "name": "wireEval1",
4020            "type": "uint256",
4021            "internalType": "BN254.ScalarField"
4022          },
4023          {
4024            "name": "wireEval2",
4025            "type": "uint256",
4026            "internalType": "BN254.ScalarField"
4027          },
4028          {
4029            "name": "wireEval3",
4030            "type": "uint256",
4031            "internalType": "BN254.ScalarField"
4032          },
4033          {
4034            "name": "wireEval4",
4035            "type": "uint256",
4036            "internalType": "BN254.ScalarField"
4037          },
4038          {
4039            "name": "sigmaEval0",
4040            "type": "uint256",
4041            "internalType": "BN254.ScalarField"
4042          },
4043          {
4044            "name": "sigmaEval1",
4045            "type": "uint256",
4046            "internalType": "BN254.ScalarField"
4047          },
4048          {
4049            "name": "sigmaEval2",
4050            "type": "uint256",
4051            "internalType": "BN254.ScalarField"
4052          },
4053          {
4054            "name": "sigmaEval3",
4055            "type": "uint256",
4056            "internalType": "BN254.ScalarField"
4057          },
4058          {
4059            "name": "prodPermZetaOmegaEval",
4060            "type": "uint256",
4061            "internalType": "BN254.ScalarField"
4062          }
4063        ]
4064      }
4065    ],
4066    "outputs": [],
4067    "stateMutability": "pure"
4068  },
4069  {
4070    "type": "function",
4071    "name": "newFinalizedState",
4072    "inputs": [
4073      {
4074        "name": "newState",
4075        "type": "tuple",
4076        "internalType": "struct LightClient.LightClientState",
4077        "components": [
4078          {
4079            "name": "viewNum",
4080            "type": "uint64",
4081            "internalType": "uint64"
4082          },
4083          {
4084            "name": "blockHeight",
4085            "type": "uint64",
4086            "internalType": "uint64"
4087          },
4088          {
4089            "name": "blockCommRoot",
4090            "type": "uint256",
4091            "internalType": "BN254.ScalarField"
4092          }
4093        ]
4094      },
4095      {
4096        "name": "nextStakeTable",
4097        "type": "tuple",
4098        "internalType": "struct LightClient.StakeTableState",
4099        "components": [
4100          {
4101            "name": "threshold",
4102            "type": "uint256",
4103            "internalType": "uint256"
4104          },
4105          {
4106            "name": "blsKeyComm",
4107            "type": "uint256",
4108            "internalType": "BN254.ScalarField"
4109          },
4110          {
4111            "name": "schnorrKeyComm",
4112            "type": "uint256",
4113            "internalType": "BN254.ScalarField"
4114          },
4115          {
4116            "name": "amountComm",
4117            "type": "uint256",
4118            "internalType": "BN254.ScalarField"
4119          }
4120        ]
4121      },
4122      {
4123        "name": "proof",
4124        "type": "tuple",
4125        "internalType": "struct IPlonkVerifier.PlonkProof",
4126        "components": [
4127          {
4128            "name": "wire0",
4129            "type": "tuple",
4130            "internalType": "struct BN254.G1Point",
4131            "components": [
4132              {
4133                "name": "x",
4134                "type": "uint256",
4135                "internalType": "BN254.BaseField"
4136              },
4137              {
4138                "name": "y",
4139                "type": "uint256",
4140                "internalType": "BN254.BaseField"
4141              }
4142            ]
4143          },
4144          {
4145            "name": "wire1",
4146            "type": "tuple",
4147            "internalType": "struct BN254.G1Point",
4148            "components": [
4149              {
4150                "name": "x",
4151                "type": "uint256",
4152                "internalType": "BN254.BaseField"
4153              },
4154              {
4155                "name": "y",
4156                "type": "uint256",
4157                "internalType": "BN254.BaseField"
4158              }
4159            ]
4160          },
4161          {
4162            "name": "wire2",
4163            "type": "tuple",
4164            "internalType": "struct BN254.G1Point",
4165            "components": [
4166              {
4167                "name": "x",
4168                "type": "uint256",
4169                "internalType": "BN254.BaseField"
4170              },
4171              {
4172                "name": "y",
4173                "type": "uint256",
4174                "internalType": "BN254.BaseField"
4175              }
4176            ]
4177          },
4178          {
4179            "name": "wire3",
4180            "type": "tuple",
4181            "internalType": "struct BN254.G1Point",
4182            "components": [
4183              {
4184                "name": "x",
4185                "type": "uint256",
4186                "internalType": "BN254.BaseField"
4187              },
4188              {
4189                "name": "y",
4190                "type": "uint256",
4191                "internalType": "BN254.BaseField"
4192              }
4193            ]
4194          },
4195          {
4196            "name": "wire4",
4197            "type": "tuple",
4198            "internalType": "struct BN254.G1Point",
4199            "components": [
4200              {
4201                "name": "x",
4202                "type": "uint256",
4203                "internalType": "BN254.BaseField"
4204              },
4205              {
4206                "name": "y",
4207                "type": "uint256",
4208                "internalType": "BN254.BaseField"
4209              }
4210            ]
4211          },
4212          {
4213            "name": "prodPerm",
4214            "type": "tuple",
4215            "internalType": "struct BN254.G1Point",
4216            "components": [
4217              {
4218                "name": "x",
4219                "type": "uint256",
4220                "internalType": "BN254.BaseField"
4221              },
4222              {
4223                "name": "y",
4224                "type": "uint256",
4225                "internalType": "BN254.BaseField"
4226              }
4227            ]
4228          },
4229          {
4230            "name": "split0",
4231            "type": "tuple",
4232            "internalType": "struct BN254.G1Point",
4233            "components": [
4234              {
4235                "name": "x",
4236                "type": "uint256",
4237                "internalType": "BN254.BaseField"
4238              },
4239              {
4240                "name": "y",
4241                "type": "uint256",
4242                "internalType": "BN254.BaseField"
4243              }
4244            ]
4245          },
4246          {
4247            "name": "split1",
4248            "type": "tuple",
4249            "internalType": "struct BN254.G1Point",
4250            "components": [
4251              {
4252                "name": "x",
4253                "type": "uint256",
4254                "internalType": "BN254.BaseField"
4255              },
4256              {
4257                "name": "y",
4258                "type": "uint256",
4259                "internalType": "BN254.BaseField"
4260              }
4261            ]
4262          },
4263          {
4264            "name": "split2",
4265            "type": "tuple",
4266            "internalType": "struct BN254.G1Point",
4267            "components": [
4268              {
4269                "name": "x",
4270                "type": "uint256",
4271                "internalType": "BN254.BaseField"
4272              },
4273              {
4274                "name": "y",
4275                "type": "uint256",
4276                "internalType": "BN254.BaseField"
4277              }
4278            ]
4279          },
4280          {
4281            "name": "split3",
4282            "type": "tuple",
4283            "internalType": "struct BN254.G1Point",
4284            "components": [
4285              {
4286                "name": "x",
4287                "type": "uint256",
4288                "internalType": "BN254.BaseField"
4289              },
4290              {
4291                "name": "y",
4292                "type": "uint256",
4293                "internalType": "BN254.BaseField"
4294              }
4295            ]
4296          },
4297          {
4298            "name": "split4",
4299            "type": "tuple",
4300            "internalType": "struct BN254.G1Point",
4301            "components": [
4302              {
4303                "name": "x",
4304                "type": "uint256",
4305                "internalType": "BN254.BaseField"
4306              },
4307              {
4308                "name": "y",
4309                "type": "uint256",
4310                "internalType": "BN254.BaseField"
4311              }
4312            ]
4313          },
4314          {
4315            "name": "zeta",
4316            "type": "tuple",
4317            "internalType": "struct BN254.G1Point",
4318            "components": [
4319              {
4320                "name": "x",
4321                "type": "uint256",
4322                "internalType": "BN254.BaseField"
4323              },
4324              {
4325                "name": "y",
4326                "type": "uint256",
4327                "internalType": "BN254.BaseField"
4328              }
4329            ]
4330          },
4331          {
4332            "name": "zetaOmega",
4333            "type": "tuple",
4334            "internalType": "struct BN254.G1Point",
4335            "components": [
4336              {
4337                "name": "x",
4338                "type": "uint256",
4339                "internalType": "BN254.BaseField"
4340              },
4341              {
4342                "name": "y",
4343                "type": "uint256",
4344                "internalType": "BN254.BaseField"
4345              }
4346            ]
4347          },
4348          {
4349            "name": "wireEval0",
4350            "type": "uint256",
4351            "internalType": "BN254.ScalarField"
4352          },
4353          {
4354            "name": "wireEval1",
4355            "type": "uint256",
4356            "internalType": "BN254.ScalarField"
4357          },
4358          {
4359            "name": "wireEval2",
4360            "type": "uint256",
4361            "internalType": "BN254.ScalarField"
4362          },
4363          {
4364            "name": "wireEval3",
4365            "type": "uint256",
4366            "internalType": "BN254.ScalarField"
4367          },
4368          {
4369            "name": "wireEval4",
4370            "type": "uint256",
4371            "internalType": "BN254.ScalarField"
4372          },
4373          {
4374            "name": "sigmaEval0",
4375            "type": "uint256",
4376            "internalType": "BN254.ScalarField"
4377          },
4378          {
4379            "name": "sigmaEval1",
4380            "type": "uint256",
4381            "internalType": "BN254.ScalarField"
4382          },
4383          {
4384            "name": "sigmaEval2",
4385            "type": "uint256",
4386            "internalType": "BN254.ScalarField"
4387          },
4388          {
4389            "name": "sigmaEval3",
4390            "type": "uint256",
4391            "internalType": "BN254.ScalarField"
4392          },
4393          {
4394            "name": "prodPermZetaOmegaEval",
4395            "type": "uint256",
4396            "internalType": "BN254.ScalarField"
4397          }
4398        ]
4399      }
4400    ],
4401    "outputs": [],
4402    "stateMutability": "nonpayable"
4403  },
4404  {
4405    "type": "function",
4406    "name": "owner",
4407    "inputs": [],
4408    "outputs": [
4409      {
4410        "name": "",
4411        "type": "address",
4412        "internalType": "address"
4413      }
4414    ],
4415    "stateMutability": "view"
4416  },
4417  {
4418    "type": "function",
4419    "name": "permissionedProver",
4420    "inputs": [],
4421    "outputs": [
4422      {
4423        "name": "",
4424        "type": "address",
4425        "internalType": "address"
4426      }
4427    ],
4428    "stateMutability": "view"
4429  },
4430  {
4431    "type": "function",
4432    "name": "proxiableUUID",
4433    "inputs": [],
4434    "outputs": [
4435      {
4436        "name": "",
4437        "type": "bytes32",
4438        "internalType": "bytes32"
4439      }
4440    ],
4441    "stateMutability": "view"
4442  },
4443  {
4444    "type": "function",
4445    "name": "renounceOwnership",
4446    "inputs": [],
4447    "outputs": [],
4448    "stateMutability": "nonpayable"
4449  },
4450  {
4451    "type": "function",
4452    "name": "setPermissionedProver",
4453    "inputs": [
4454      {
4455        "name": "prover",
4456        "type": "address",
4457        "internalType": "address"
4458      }
4459    ],
4460    "outputs": [],
4461    "stateMutability": "nonpayable"
4462  },
4463  {
4464    "type": "function",
4465    "name": "setStateHistoryRetentionPeriod",
4466    "inputs": [
4467      {
4468        "name": "historySeconds",
4469        "type": "uint32",
4470        "internalType": "uint32"
4471      }
4472    ],
4473    "outputs": [],
4474    "stateMutability": "nonpayable"
4475  },
4476  {
4477    "type": "function",
4478    "name": "setstateHistoryRetentionPeriod",
4479    "inputs": [
4480      {
4481        "name": "historySeconds",
4482        "type": "uint32",
4483        "internalType": "uint32"
4484      }
4485    ],
4486    "outputs": [],
4487    "stateMutability": "nonpayable"
4488  },
4489  {
4490    "type": "function",
4491    "name": "stateHistoryCommitments",
4492    "inputs": [
4493      {
4494        "name": "",
4495        "type": "uint256",
4496        "internalType": "uint256"
4497      }
4498    ],
4499    "outputs": [
4500      {
4501        "name": "l1BlockHeight",
4502        "type": "uint64",
4503        "internalType": "uint64"
4504      },
4505      {
4506        "name": "l1BlockTimestamp",
4507        "type": "uint64",
4508        "internalType": "uint64"
4509      },
4510      {
4511        "name": "hotShotBlockHeight",
4512        "type": "uint64",
4513        "internalType": "uint64"
4514      },
4515      {
4516        "name": "hotShotBlockCommRoot",
4517        "type": "uint256",
4518        "internalType": "BN254.ScalarField"
4519      }
4520    ],
4521    "stateMutability": "view"
4522  },
4523  {
4524    "type": "function",
4525    "name": "stateHistoryFirstIndex",
4526    "inputs": [],
4527    "outputs": [
4528      {
4529        "name": "",
4530        "type": "uint64",
4531        "internalType": "uint64"
4532      }
4533    ],
4534    "stateMutability": "view"
4535  },
4536  {
4537    "type": "function",
4538    "name": "stateHistoryRetentionPeriod",
4539    "inputs": [],
4540    "outputs": [
4541      {
4542        "name": "",
4543        "type": "uint32",
4544        "internalType": "uint32"
4545      }
4546    ],
4547    "stateMutability": "view"
4548  },
4549  {
4550    "type": "function",
4551    "name": "transferOwnership",
4552    "inputs": [
4553      {
4554        "name": "newOwner",
4555        "type": "address",
4556        "internalType": "address"
4557      }
4558    ],
4559    "outputs": [],
4560    "stateMutability": "nonpayable"
4561  },
4562  {
4563    "type": "function",
4564    "name": "updateEpochStartBlock",
4565    "inputs": [
4566      {
4567        "name": "newEpochStartBlock",
4568        "type": "uint64",
4569        "internalType": "uint64"
4570      }
4571    ],
4572    "outputs": [],
4573    "stateMutability": "nonpayable"
4574  },
4575  {
4576    "type": "function",
4577    "name": "upgradeToAndCall",
4578    "inputs": [
4579      {
4580        "name": "newImplementation",
4581        "type": "address",
4582        "internalType": "address"
4583      },
4584      {
4585        "name": "data",
4586        "type": "bytes",
4587        "internalType": "bytes"
4588      }
4589    ],
4590    "outputs": [],
4591    "stateMutability": "payable"
4592  },
4593  {
4594    "type": "function",
4595    "name": "votingStakeTableState",
4596    "inputs": [],
4597    "outputs": [
4598      {
4599        "name": "threshold",
4600        "type": "uint256",
4601        "internalType": "uint256"
4602      },
4603      {
4604        "name": "blsKeyComm",
4605        "type": "uint256",
4606        "internalType": "BN254.ScalarField"
4607      },
4608      {
4609        "name": "schnorrKeyComm",
4610        "type": "uint256",
4611        "internalType": "BN254.ScalarField"
4612      },
4613      {
4614        "name": "amountComm",
4615        "type": "uint256",
4616        "internalType": "BN254.ScalarField"
4617      }
4618    ],
4619    "stateMutability": "view"
4620  },
4621  {
4622    "type": "event",
4623    "name": "Initialized",
4624    "inputs": [
4625      {
4626        "name": "version",
4627        "type": "uint64",
4628        "indexed": false,
4629        "internalType": "uint64"
4630      }
4631    ],
4632    "anonymous": false
4633  },
4634  {
4635    "type": "event",
4636    "name": "NewEpoch",
4637    "inputs": [
4638      {
4639        "name": "epoch",
4640        "type": "uint64",
4641        "indexed": false,
4642        "internalType": "uint64"
4643      }
4644    ],
4645    "anonymous": false
4646  },
4647  {
4648    "type": "event",
4649    "name": "NewState",
4650    "inputs": [
4651      {
4652        "name": "viewNum",
4653        "type": "uint64",
4654        "indexed": true,
4655        "internalType": "uint64"
4656      },
4657      {
4658        "name": "blockHeight",
4659        "type": "uint64",
4660        "indexed": true,
4661        "internalType": "uint64"
4662      },
4663      {
4664        "name": "blockCommRoot",
4665        "type": "uint256",
4666        "indexed": false,
4667        "internalType": "BN254.ScalarField"
4668      }
4669    ],
4670    "anonymous": false
4671  },
4672  {
4673    "type": "event",
4674    "name": "OwnershipTransferred",
4675    "inputs": [
4676      {
4677        "name": "previousOwner",
4678        "type": "address",
4679        "indexed": true,
4680        "internalType": "address"
4681      },
4682      {
4683        "name": "newOwner",
4684        "type": "address",
4685        "indexed": true,
4686        "internalType": "address"
4687      }
4688    ],
4689    "anonymous": false
4690  },
4691  {
4692    "type": "event",
4693    "name": "PermissionedProverNotRequired",
4694    "inputs": [],
4695    "anonymous": false
4696  },
4697  {
4698    "type": "event",
4699    "name": "PermissionedProverRequired",
4700    "inputs": [
4701      {
4702        "name": "permissionedProver",
4703        "type": "address",
4704        "indexed": false,
4705        "internalType": "address"
4706      }
4707    ],
4708    "anonymous": false
4709  },
4710  {
4711    "type": "event",
4712    "name": "Upgrade",
4713    "inputs": [
4714      {
4715        "name": "implementation",
4716        "type": "address",
4717        "indexed": false,
4718        "internalType": "address"
4719      }
4720    ],
4721    "anonymous": false
4722  },
4723  {
4724    "type": "event",
4725    "name": "Upgraded",
4726    "inputs": [
4727      {
4728        "name": "implementation",
4729        "type": "address",
4730        "indexed": true,
4731        "internalType": "address"
4732      }
4733    ],
4734    "anonymous": false
4735  },
4736  {
4737    "type": "error",
4738    "name": "AddressEmptyCode",
4739    "inputs": [
4740      {
4741        "name": "target",
4742        "type": "address",
4743        "internalType": "address"
4744      }
4745    ]
4746  },
4747  {
4748    "type": "error",
4749    "name": "DeprecatedApi",
4750    "inputs": []
4751  },
4752  {
4753    "type": "error",
4754    "name": "ERC1967InvalidImplementation",
4755    "inputs": [
4756      {
4757        "name": "implementation",
4758        "type": "address",
4759        "internalType": "address"
4760      }
4761    ]
4762  },
4763  {
4764    "type": "error",
4765    "name": "ERC1967NonPayable",
4766    "inputs": []
4767  },
4768  {
4769    "type": "error",
4770    "name": "FailedInnerCall",
4771    "inputs": []
4772  },
4773  {
4774    "type": "error",
4775    "name": "InsufficientSnapshotHistory",
4776    "inputs": []
4777  },
4778  {
4779    "type": "error",
4780    "name": "InvalidAddress",
4781    "inputs": []
4782  },
4783  {
4784    "type": "error",
4785    "name": "InvalidArgs",
4786    "inputs": []
4787  },
4788  {
4789    "type": "error",
4790    "name": "InvalidHotShotBlockForCommitmentCheck",
4791    "inputs": []
4792  },
4793  {
4794    "type": "error",
4795    "name": "InvalidInitialization",
4796    "inputs": []
4797  },
4798  {
4799    "type": "error",
4800    "name": "InvalidMaxStateHistory",
4801    "inputs": []
4802  },
4803  {
4804    "type": "error",
4805    "name": "InvalidProof",
4806    "inputs": []
4807  },
4808  {
4809    "type": "error",
4810    "name": "MissingEpochRootUpdate",
4811    "inputs": []
4812  },
4813  {
4814    "type": "error",
4815    "name": "NoChangeRequired",
4816    "inputs": []
4817  },
4818  {
4819    "type": "error",
4820    "name": "NotInitializing",
4821    "inputs": []
4822  },
4823  {
4824    "type": "error",
4825    "name": "OutdatedState",
4826    "inputs": []
4827  },
4828  {
4829    "type": "error",
4830    "name": "OwnableInvalidOwner",
4831    "inputs": [
4832      {
4833        "name": "owner",
4834        "type": "address",
4835        "internalType": "address"
4836      }
4837    ]
4838  },
4839  {
4840    "type": "error",
4841    "name": "OwnableUnauthorizedAccount",
4842    "inputs": [
4843      {
4844        "name": "account",
4845        "type": "address",
4846        "internalType": "address"
4847      }
4848    ]
4849  },
4850  {
4851    "type": "error",
4852    "name": "ProverNotPermissioned",
4853    "inputs": []
4854  },
4855  {
4856    "type": "error",
4857    "name": "UUPSUnauthorizedCallContext",
4858    "inputs": []
4859  },
4860  {
4861    "type": "error",
4862    "name": "UUPSUnsupportedProxiableUUID",
4863    "inputs": [
4864      {
4865        "name": "slot",
4866        "type": "bytes32",
4867        "internalType": "bytes32"
4868      }
4869    ]
4870  },
4871  {
4872    "type": "error",
4873    "name": "WrongStakeTableUsed",
4874    "inputs": []
4875  }
4876]
4877```*/
4878#[allow(
4879    non_camel_case_types,
4880    non_snake_case,
4881    clippy::pub_underscore_fields,
4882    clippy::style,
4883    clippy::empty_structs_with_brackets
4884)]
4885pub mod LightClientArbitrumV2 {
4886    use super::*;
4887    use alloy::sol_types as alloy_sol_types;
4888    /// The creation / init bytecode of the contract.
4889    ///
4890    /// ```text
4891    ///0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516134e56100f95f395f8181611b9d01528181611bc60152611d4301526134e55ff3fe608060405260043610610207575f3560e01c8063715018a6116101135780639fdb54a71161009d578063d24d933d1161006d578063d24d933d146106ff578063e03033011461072e578063f06820541461074d578063f2fde38b1461076c578063f9e50d191461078b575f5ffd5b80639fdb54a714610616578063ad3cb1cc1461066b578063b33bc491146106a8578063c23b9e9e146106c7575f5ffd5b80638584d23f116100e35780638584d23f146105415780638da5cb5b1461057d57806390c14390146105b957806396c1ca61146105d85780639baa3cc9146105f7575f5ffd5b8063715018a6146104db578063757c37ad146104ef578063766718081461050e578063826e41fc14610522575f5ffd5b8063300c89dd11610194578063426d319411610164578063426d319414610460578063433dba9f146104815780634f1ef286146104a057806352d1902d146104b357806369cc6a04146104c7575f5ffd5b8063300c89dd146103c2578063313df7b1146103e1578063378ec23b146104185780633ed55b7b1461043a575f5ffd5b806312173c2c116101da57806312173c2c146102f6578063167ac618146103175780632063d4f71461033657806325297427146103555780632f79889d14610384575f5ffd5b8063013fa5fc1461020b57806302b592f31461022c5780630625e19b146102895780630d8e6e2c146102cb575b5f5ffd5b348015610216575f5ffd5b5061022a6102253660046127c2565b61079f565b005b348015610237575f5ffd5b5061024b6102463660046127db565b610852565b60405161028094939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b348015610294575f5ffd5b50600b54600c54600d54600e546102ab9392919084565b604080519485526020850193909352918301526060820152608001610280565b3480156102d6575f5ffd5b5060408051600281525f6020820181905291810191909152606001610280565b348015610301575f5ffd5b5061030a61089b565b60405161028091906127f2565b348015610322575f5ffd5b5061022a610331366004612a09565b6108b0565b348015610341575f5ffd5b5061022a610350366004612ccb565b610927565b348015610360575f5ffd5b5061037461036f366004612a09565b610940565b6040519015158152602001610280565b34801561038f575f5ffd5b506008546103aa90600160c01b90046001600160401b031681565b6040516001600160401b039091168152602001610280565b3480156103cd575f5ffd5b506103746103dc366004612a09565b6109a2565b3480156103ec575f5ffd5b50600854610400906001600160a01b031681565b6040516001600160a01b039091168152602001610280565b348015610423575f5ffd5b5061042c610a37565b604051908152602001610280565b348015610445575f5ffd5b50600a546103aa90600160401b90046001600160401b031681565b34801561046b575f5ffd5b505f546001546002546003546102ab9392919084565b34801561048c575f5ffd5b5061022a61049b366004612d12565b610a99565b61022a6104ae366004612d2b565b610aad565b3480156104be575f5ffd5b5061042c610acc565b3480156104d2575f5ffd5b5061022a610ae7565b3480156104e6575f5ffd5b5061022a610b55565b3480156104fa575f5ffd5b5061022a610509366004612e2e565b610b66565b348015610519575f5ffd5b506103aa610ea0565b34801561052d575f5ffd5b506008546001600160a01b03161515610374565b34801561054c575f5ffd5b5061056061055b3660046127db565b610ec5565b604080519283526001600160401b03909116602083015201610280565b348015610588575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610400565b3480156105c4575f5ffd5b506103aa6105d3366004612e72565b610ff0565b3480156105e3575f5ffd5b5061022a6105f2366004612d12565b61105f565b348015610602575f5ffd5b5061022a610611366004612e9a565b6110e8565b348015610621575f5ffd5b50600654600754610645916001600160401b0380821692600160401b909204169083565b604080516001600160401b03948516815293909216602084015290820152606001610280565b348015610676575f5ffd5b5061069b604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102809190612eef565b3480156106b3575f5ffd5b5061022a6106c2366004612e72565b61120a565b3480156106d2575f5ffd5b506008546106ea90600160a01b900463ffffffff1681565b60405163ffffffff9091168152602001610280565b34801561070a575f5ffd5b50600454600554610645916001600160401b0380821692600160401b909204169083565b348015610739575f5ffd5b50610374610748366004612f24565b61136e565b348015610758575f5ffd5b50600a546103aa906001600160401b031681565b348015610777575f5ffd5b5061022a6107863660046127c2565b6114cd565b348015610796575f5ffd5b5060095461042c565b6107a761150c565b6001600160a01b0381166107ce5760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036107fd5760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b60098181548110610861575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b6108a3612528565b6108ab611567565b905090565b6108b861150c565b600a80546fffffffffffffffff0000000000000000198116600160401b6001600160401b038581168202928317948590556108fe94919091048116928116911617610ff0565b600a60106101000a8154816001600160401b0302191690836001600160401b0316021790555050565b604051634e405c8d60e01b815260040160405180910390fd5b5f6001600160401b03821615806109605750600a546001600160401b0316155b1561096c57505f919050565b600a546001600160401b0316610983836005612f58565b61098d9190612f8b565b6001600160401b03161592915050565b919050565b5f6001600160401b03821615806109c25750600a546001600160401b0316155b156109ce57505f919050565b600a546109e4906001600160401b031683612f8b565b6001600160401b03161580610a315750600a54610a0c906005906001600160401b0316612fb8565b600a546001600160401b0391821691610a26911684612f8b565b6001600160401b0316115b92915050565b5f60646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a75573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108ab9190612fd7565b610aa161150c565b610aaa8161105f565b50565b610ab5611b92565b610abe82611c36565b610ac88282611c77565b5050565b5f610ad5611d38565b505f5160206134b95f395f51905f5290565b610aef61150c565b6008546001600160a01b031615610b3a57600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b610b5d61150c565b610b535f611d81565b6008546001600160a01b031615158015610b8b57506008546001600160a01b03163314155b15610ba9576040516301474c8f60e71b815260040160405180910390fd5b60065483516001600160401b039182169116111580610be2575060065460208401516001600160401b03600160401b9092048216911611155b15610c005760405163051c46ef60e01b815260040160405180910390fd5b610c0d8360400151611df1565b610c1a8260200151611df1565b610c278260400151611df1565b610c348260600151611df1565b5f610c3d610ea0565b6020850151600a549192505f91610c5d91906001600160401b0316610ff0565b600a549091506001600160401b03600160801b909104811690821610610ca857610c8a85602001516109a2565b15610ca85760405163080ae8d960e01b815260040160405180910390fd5b600a546001600160401b03600160801b90910481169082161115610d5b576002610cd28383612fb8565b6001600160401b031610610cf95760405163080ae8d960e01b815260040160405180910390fd5b610d04826001612f58565b6001600160401b0316816001600160401b0316148015610d3d5750600654610d3b90600160401b90046001600160401b0316610940565b155b15610d5b5760405163080ae8d960e01b815260040160405180910390fd5b610d66858585611e61565b84516006805460208801516001600160401b03908116600160401b026001600160801b0319909216938116939093171790556040860151600755600a54600160801b9004811690821610801590610dc55750610dc58560200151610940565b15610e2f578351600b556020840151600c556040840151600d556060840151600e557f31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b610e13826001612f58565b6040516001600160401b03909116815260200160405180910390a15b610e41610e3a610a37565b4287611fd8565b84602001516001600160401b0316855f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae68760400151604051610e9191815260200190565b60405180910390a35050505050565b600654600a545f916108ab916001600160401b03600160401b90920482169116610ff0565b600980545f91829190610ed9600183612fee565b81548110610ee957610ee9613001565b5f918252602090912060029091020154600160801b90046001600160401b03168410610f2857604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b81811015610fe9578460098281548110610f5857610f58613001565b5f918252602090912060029091020154600160801b90046001600160401b03161115610fe15760098181548110610f9157610f91613001565b905f5260205f2090600202016001015460098281548110610fb457610fb4613001565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101610f3c565b5050915091565b5f816001600160401b03165f0361100857505f610a31565b826001600160401b03165f0361102057506001610a31565b61102a8284612f8b565b6001600160401b03165f0361104a576110438284613015565b9050610a31565b6110548284613015565b611043906001612f58565b61106761150c565b610e108163ffffffff16108061108657506301e133808163ffffffff16115b806110a4575060085463ffffffff600160a01b909104811690821611155b156110c2576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f8115801561112c5750825b90505f826001600160401b031660011480156111475750303b155b905081158015611155575080155b156111735760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561119d57845460ff60401b1916600160401b1785555b6111a6866121c1565b6111ae6121d2565b6111b98989896121da565b83156111ff57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680611253575080546001600160401b03808416911610155b156112715760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b1782556005908516116112b9576040516350dd03f760e11b815260040160405180910390fd5b5f54600b55600154600c55600254600d55600354600e55600a80546001600160401b03858116600160401b026001600160801b0319909216908716171790556113028385610ff0565b600a805467ffffffffffffffff60801b1916600160801b6001600160401b0393841602179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b6009545f9061137b610a37565b841180611386575080155b806113d05750600854600980549091600160c01b90046001600160401b03169081106113b4576113b4613001565b5f9182526020909120600290910201546001600160401b031684105b156113ee5760405163b0b4387760e01b815260040160405180910390fd5b5f80806113fc600185612fee565b90505b8161149857600854600160c01b90046001600160401b0316811061149857866009828154811061143157611431613001565b5f9182526020909120600290910201546001600160401b03161161148657600191506009818154811061146657611466613001565b5f9182526020909120600290910201546001600160401b03169250611498565b8061149081613042565b9150506113ff565b816114b65760405163b0b4387760e01b815260040160405180910390fd5b856114c18489612fee565b11979650505050505050565b6114d561150c565b6001600160a01b03811661150357604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610aaa81611d81565b3361153e7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610b535760405163118cdaa760e01b81523360048201526024016114fa565b61156f612528565b621000008152600b60208201527f26867ee58aaf860fc9e0e3a78666ffc51f3ba1ad8ae001c196830c55b5af0b8c6040820151527f091230adb753f82815151277060cc56b546bb2e950a0de19ed061ec68c071a906020604083015101527f02a509a06d8c56f83f204688ff6e42eac6e3cbdd063b0971a3af953e81badbb66060820151527f06f43ed2b9cece35d1201abc13ffdaea35560cf0f1446277138ce812b9ad9f396020606083015101527f1a588c99ad88f789c87722b061bb5535daa0abcc1dc6d176d7fea51e5d80b9266080820151527f2062b995e61a6ab8aab6cd6e7520b879d84f965ab1f094c104f0c1213b28038b6020608083015101527f21a2fd766a0cebecfdbfdfe56139a1bbd9aec15e2e35be8ef01934a0ec43868560a0820151527f20fe500ac7d1aa7820db8c6f7f9d509e3b2e88731e3a12dd65f06f43ca930da0602060a083015101527f0ab53d1285c7f4819b3ff6e1ddada6bf2515d34bbaf61186c6a04be47dfd65a360c0820151527f0b80a9878082cdfdd9fcc16bb33fa424c0ad66b81949bf642153d3c7ad082f22602060c083015101527f1b900f8e5f8e8064a5888a1bd796b54a2652fc02034fe4b6e6fc8d6650f7453b60e0820151527ecca258a8832c64d1f8e1721a78fc25b13d29adbb81e35a79fc2f49f8902786602060e083015101527f0d1d3348d642e6f2e9739d735d8c723676dbaefdcbb4e96641defa353d26ebb3610100820151527f14fe9d6a335104e7491ca6d5086113e6b0f52946960d726664667bd58539d41e602061010083015101527f1da94364440c4e3fb8af2d363cdefa4edda437579e1b056a16a5e9a11dffa2ab610120820151527f0a077bd307ed31222db55cb0128bafce5e22557b57f5ac915359c50296cb5c77602061012083015101527f28ff80b133d989235c7129dea54469b780ac4717449290067e7c9a7d5be7dbd5610140820151527f1c0fc22eef23b50a2ddc553f9fc1b61fd8c57a58ca321a829c7ec255f757b3a6602061014083015101527e3c4e21e5dfba62a5b1702fb0ef234bfe95a77701a456882350526d140243f5610160820151527f06012db82876ba33e6e8f80a51013662e56c4abc86a7d85c272e19a6d7f57d0b602061016083015101527f16d5247dbdeae1df70093e5ee77272959661e0fbabda431777fa729f5b532f44610180820151527e8d9ee00f799cf00608b082d03b9de5a42b8126c35fbfbd1e602108df10e0e3602061018083015101527f2f526c6981643ff6f6e9d2b5a921e06cf95f274629b5a145bd552b7fda6a87006101a0820151527f2fe7108fd4e24231f3dadb6e09072e106fca0694fe39dff96557a88221a89a5060206101a083015101527f26a3568598a6981e6325f4816736e381087b5b0e4b27ef364d8ae1e29fe9df996101c0820151527f1db81cdf82a9ec99f3c9716df22d38317e6bb84fc57d2f0e7b2bc8a0569f7cc460206101c083015101527e99888088e11de6ed086c99b9bba986d908df5b0c5007680d97567d485719946101e0820151527f1f91576eadffff932b6e54bab022f93f6fec3e5b7674d0006bc5f2223527a34860206101e083015101527e68b3c117ee7e84d6b670b6af20197759ec80d34f3c594328663031e9cd7e02610200820151527f1c3832e24877346680e7047bae2cfcd51fafe3e7caf199e9dfc8e8f10c2b6943602061020083015101527f164cdd9ad5d4e96e109073e8e735cd4ac64aba6ddaa244da6701369c8cba5daf610220820151527f16c41e647f1ab0d45c891544299e4ef9c004d8bc0a3bf096dc38ce8ed90c0d67602061022083015101527f134ba7a9567ba20e1f35959ee8c2cd688d3a962bb1797e8ab8e511768de0ce83610240820151527f02e4d286c9435f7bd94c1a2c78b99966d06faca1ae45de78149950a4fefcd6e7602061024083015101527f039a0b2d920f29e35cb2a9e1ec6cc22ac1d482af45e47399724a0745d542e839610260820151527f15ac2658bfdd2227aebf8e20935935a648819e1dcea807da1c838abfa7896c63602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611c1857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611c0c5f5160206134b95f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15610b535760405163703e46dd60e11b815260040160405180910390fd5b611c3e61150c565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610847565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611cd1575060408051601f3d908101601f19168201909252611cce91810190612fd7565b60015b611cf957604051634c9c8ce360e01b81526001600160a01b03831660048201526024016114fa565b5f5160206134b95f395f51905f528114611d2957604051632a87526960e21b8152600481018290526024016114fa565b611d338383612306565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b535760405163703e46dd60e11b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001811080610ac85760405162461bcd60e51b815260206004820152601b60248201527f426e3235343a20696e76616c6964207363616c6172206669656c64000000000060448201526064016114fa565b5f611e6a61089b565b9050611e7461278d565b84516001600160401b0390811682526020808701805183169184019190915260408088015190840152600c546060840152600d546080840152600e5460a0840152600b5460c0840152600a549051600160401b9091048216911610801590611ee45750611ee48560200151610940565b15611f1657602084015160e0820152604084015161010082015260608401516101208201528351610140820152611f3a565b600c5460e0820152600d54610100820152600e54610120820152600b546101408201525b60405163fc8660c760e01b815273ffffffffffffffffffffffffffffffffffffffff9063fc8660c790611f7590859085908890600401613239565b602060405180830381865af4158015611f90573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fb49190613459565b611fd1576040516309bde33960e01b815260040160405180910390fd5b5050505050565b6009541580159061204d575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b031690811061201857612018613001565b5f91825260209091206002909102015461204290600160401b90046001600160401b031684612fb8565b6001600160401b0316115b156120e057600854600980549091600160c01b90046001600160401b031690811061207a5761207a613001565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b03169060186120ba83613478565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b6121c961235b565b610aaa816123a4565b610b5361235b565b82516001600160401b03161515806121fe575060208301516001600160401b031615155b8061220b57506020820151155b8061221857506040820151155b8061222557506060820151155b8061222f57508151155b806122415750610e108163ffffffff16105b8061225557506301e133808163ffffffff16115b15612273576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b61230f826123ac565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561235357611d33828261240f565b610ac8612481565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610b5357604051631afcd79f60e31b815260040160405180910390fd5b6114d561235b565b806001600160a01b03163b5f036123e157604051634c9c8ce360e01b81526001600160a01b03821660048201526024016114fa565b5f5160206134b95f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b03168460405161242b91906134a2565b5f60405180830381855af49150503d805f8114612463576040519150601f19603f3d011682016040523d82523d5f602084013e612468565b606091505b50915091506124788583836124a0565b95945050505050565b3415610b535760405163b398979f60e01b815260040160405180910390fd5b6060826124b5576124b0826124ff565b6124f8565b81511580156124cc57506001600160a01b0384163b155b156124f557604051639996b31560e01b81526001600160a01b03851660048201526024016114fa565b50805b9392505050565b80511561250f5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f815260200161255b60405180604001604052805f81526020015f81525090565b815260200161257b60405180604001604052805f81526020015f81525090565b815260200161259b60405180604001604052805f81526020015f81525090565b81526020016125bb60405180604001604052805f81526020015f81525090565b81526020016125db60405180604001604052805f81526020015f81525090565b81526020016125fb60405180604001604052805f81526020015f81525090565b815260200161261b60405180604001604052805f81526020015f81525090565b815260200161263b60405180604001604052805f81526020015f81525090565b815260200161265b60405180604001604052805f81526020015f81525090565b815260200161267b60405180604001604052805f81526020015f81525090565b815260200161269b60405180604001604052805f81526020015f81525090565b81526020016126bb60405180604001604052805f81526020015f81525090565b81526020016126db60405180604001604052805f81526020015f81525090565b81526020016126fb60405180604001604052805f81526020015f81525090565b815260200161271b60405180604001604052805f81526020015f81525090565b815260200161273b60405180604001604052805f81526020015f81525090565b815260200161275b60405180604001604052805f81526020015f81525090565b815260200161277b60405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b604051806101600160405280600b906020820280368337509192915050565b80356001600160a01b038116811461099d575f5ffd5b5f602082840312156127d2575f5ffd5b6124f8826127ac565b5f602082840312156127eb575f5ffd5b5035919050565b5f6105008201905082518252602083015160208301526040830151612824604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b80356001600160401b038116811461099d575f5ffd5b5f60208284031215612a19575f5ffd5b6124f8826129f3565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b0381118282101715612a5957612a59612a22565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612a8757612a87612a22565b604052919050565b5f60608284031215612a9f575f5ffd5b604051606081016001600160401b0381118282101715612ac157612ac1612a22565b604052905080612ad0836129f3565b8152612ade602084016129f3565b6020820152604092830135920191909152919050565b5f60408284031215612b04575f5ffd5b604080519081016001600160401b0381118282101715612b2657612b26612a22565b604052823581526020928301359281019290925250919050565b5f6104808284031215612b51575f5ffd5b612b59612a36565b9050612b658383612af4565b8152612b748360408401612af4565b6020820152612b868360808401612af4565b6040820152612b988360c08401612af4565b6060820152612bab836101008401612af4565b6080820152612bbe836101408401612af4565b60a0820152612bd1836101808401612af4565b60c0820152612be4836101c08401612af4565b60e0820152612bf7836102008401612af4565b610100820152612c0b836102408401612af4565b610120820152612c1f836102808401612af4565b610140820152612c33836102c08401612af4565b610160820152612c47836103008401612af4565b6101808201526103408201356101a08201526103608201356101c08201526103808201356101e08201526103a08201356102008201526103c08201356102208201526103e08201356102408201526104008201356102608201526104208201356102808201526104408201356102a0820152610460909101356102c0820152919050565b5f5f6104e08385031215612cdd575f5ffd5b612ce78484612a8f565b9150612cf68460608501612b40565b90509250929050565b803563ffffffff8116811461099d575f5ffd5b5f60208284031215612d22575f5ffd5b6124f882612cff565b5f5f60408385031215612d3c575f5ffd5b612d45836127ac565b915060208301356001600160401b03811115612d5f575f5ffd5b8301601f81018513612d6f575f5ffd5b80356001600160401b03811115612d8857612d88612a22565b612d9b601f8201601f1916602001612a5f565b818152866020838501011115612daf575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60808284031215612dde575f5ffd5b604051608081016001600160401b0381118282101715612e0057612e00612a22565b6040908152833582526020808501359083015283810135908201526060928301359281019290925250919050565b5f5f5f6105608486031215612e41575f5ffd5b612e4b8585612a8f565b9250612e5a8560608601612dce565b9150612e698560e08601612b40565b90509250925092565b5f5f60408385031215612e83575f5ffd5b612e8c836129f3565b9150612cf6602084016129f3565b5f5f5f5f6101208587031215612eae575f5ffd5b612eb88686612a8f565b9350612ec78660608701612dce565b9250612ed560e08601612cff565b9150612ee461010086016127ac565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f60408385031215612f35575f5ffd5b50508035926020909101359150565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b038181168382160190811115610a3157610a31612f44565b634e487b7160e01b5f52601260045260245ffd5b5f6001600160401b03831680612fa357612fa3612f77565b806001600160401b0384160691505092915050565b6001600160401b038281168282160390811115610a3157610a31612f44565b5f60208284031215612fe7575f5ffd5b5051919050565b81810381811115610a3157610a31612f44565b634e487b7160e01b5f52603260045260245ffd5b5f6001600160401b0383168061302d5761302d612f77565b806001600160401b0384160491505092915050565b5f8161305057613050612f44565b505f190190565b805f5b600b81101561307957815184526020938401939091019060010161305a565b50505050565b61309482825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610ae0820190508451825260208501516020830152604085015161326b604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e0830152613443610500830185613057565b61345161066083018461307f565b949350505050565b5f60208284031215613469575f5ffd5b815180151581146124f8575f5ffd5b5f6001600160401b0382166001600160401b03810361349957613499612f44565b60010192915050565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
4892    /// ```
4893    #[rustfmt::skip]
4894    #[allow(clippy::all)]
4895    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
4896        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[`\x80Qa4\xE5a\0\xF9_9_\x81\x81a\x1B\x9D\x01R\x81\x81a\x1B\xC6\x01Ra\x1DC\x01Ra4\xE5_\xF3\xFE`\x80`@R`\x046\x10a\x02\x07W_5`\xE0\x1C\x80cqP\x18\xA6\x11a\x01\x13W\x80c\x9F\xDBT\xA7\x11a\0\x9DW\x80c\xD2M\x93=\x11a\0mW\x80c\xD2M\x93=\x14a\x06\xFFW\x80c\xE003\x01\x14a\x07.W\x80c\xF0h T\x14a\x07MW\x80c\xF2\xFD\xE3\x8B\x14a\x07lW\x80c\xF9\xE5\r\x19\x14a\x07\x8BW__\xFD[\x80c\x9F\xDBT\xA7\x14a\x06\x16W\x80c\xAD<\xB1\xCC\x14a\x06kW\x80c\xB3;\xC4\x91\x14a\x06\xA8W\x80c\xC2;\x9E\x9E\x14a\x06\xC7W__\xFD[\x80c\x85\x84\xD2?\x11a\0\xE3W\x80c\x85\x84\xD2?\x14a\x05AW\x80c\x8D\xA5\xCB[\x14a\x05}W\x80c\x90\xC1C\x90\x14a\x05\xB9W\x80c\x96\xC1\xCAa\x14a\x05\xD8W\x80c\x9B\xAA<\xC9\x14a\x05\xF7W__\xFD[\x80cqP\x18\xA6\x14a\x04\xDBW\x80cu|7\xAD\x14a\x04\xEFW\x80cvg\x18\x08\x14a\x05\x0EW\x80c\x82nA\xFC\x14a\x05\"W__\xFD[\x80c0\x0C\x89\xDD\x11a\x01\x94W\x80cBm1\x94\x11a\x01dW\x80cBm1\x94\x14a\x04`W\x80cC=\xBA\x9F\x14a\x04\x81W\x80cO\x1E\xF2\x86\x14a\x04\xA0W\x80cR\xD1\x90-\x14a\x04\xB3W\x80ci\xCCj\x04\x14a\x04\xC7W__\xFD[\x80c0\x0C\x89\xDD\x14a\x03\xC2W\x80c1=\xF7\xB1\x14a\x03\xE1W\x80c7\x8E\xC2;\x14a\x04\x18W\x80c>\xD5[{\x14a\x04:W__\xFD[\x80c\x12\x17<,\x11a\x01\xDAW\x80c\x12\x17<,\x14a\x02\xF6W\x80c\x16z\xC6\x18\x14a\x03\x17W\x80c c\xD4\xF7\x14a\x036W\x80c%)t'\x14a\x03UW\x80c/y\x88\x9D\x14a\x03\x84W__\xFD[\x80c\x01?\xA5\xFC\x14a\x02\x0BW\x80c\x02\xB5\x92\xF3\x14a\x02,W\x80c\x06%\xE1\x9B\x14a\x02\x89W\x80c\r\x8En,\x14a\x02\xCBW[__\xFD[4\x80\x15a\x02\x16W__\xFD[Pa\x02*a\x02%6`\x04a'\xC2V[a\x07\x9FV[\0[4\x80\x15a\x027W__\xFD[Pa\x02Ka\x02F6`\x04a'\xDBV[a\x08RV[`@Qa\x02\x80\x94\x93\x92\x91\x90`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x84\x01R\x92\x16`@\x82\x01R``\x81\x01\x91\x90\x91R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x02\x94W__\xFD[P`\x0BT`\x0CT`\rT`\x0ETa\x02\xAB\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x02\x80V[4\x80\x15a\x02\xD6W__\xFD[P`@\x80Q`\x02\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x02\x80V[4\x80\x15a\x03\x01W__\xFD[Pa\x03\na\x08\x9BV[`@Qa\x02\x80\x91\x90a'\xF2V[4\x80\x15a\x03\"W__\xFD[Pa\x02*a\x0316`\x04a*\tV[a\x08\xB0V[4\x80\x15a\x03AW__\xFD[Pa\x02*a\x03P6`\x04a,\xCBV[a\t'V[4\x80\x15a\x03`W__\xFD[Pa\x03ta\x03o6`\x04a*\tV[a\t@V[`@Q\x90\x15\x15\x81R` \x01a\x02\x80V[4\x80\x15a\x03\x8FW__\xFD[P`\x08Ta\x03\xAA\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x80V[4\x80\x15a\x03\xCDW__\xFD[Pa\x03ta\x03\xDC6`\x04a*\tV[a\t\xA2V[4\x80\x15a\x03\xECW__\xFD[P`\x08Ta\x04\0\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x80V[4\x80\x15a\x04#W__\xFD[Pa\x04,a\n7V[`@Q\x90\x81R` \x01a\x02\x80V[4\x80\x15a\x04EW__\xFD[P`\nTa\x03\xAA\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x04kW__\xFD[P_T`\x01T`\x02T`\x03Ta\x02\xAB\x93\x92\x91\x90\x84V[4\x80\x15a\x04\x8CW__\xFD[Pa\x02*a\x04\x9B6`\x04a-\x12V[a\n\x99V[a\x02*a\x04\xAE6`\x04a-+V[a\n\xADV[4\x80\x15a\x04\xBEW__\xFD[Pa\x04,a\n\xCCV[4\x80\x15a\x04\xD2W__\xFD[Pa\x02*a\n\xE7V[4\x80\x15a\x04\xE6W__\xFD[Pa\x02*a\x0BUV[4\x80\x15a\x04\xFAW__\xFD[Pa\x02*a\x05\t6`\x04a..V[a\x0BfV[4\x80\x15a\x05\x19W__\xFD[Pa\x03\xAAa\x0E\xA0V[4\x80\x15a\x05-W__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15a\x03tV[4\x80\x15a\x05LW__\xFD[Pa\x05`a\x05[6`\x04a'\xDBV[a\x0E\xC5V[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x02\x80V[4\x80\x15a\x05\x88W__\xFD[P\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16a\x04\0V[4\x80\x15a\x05\xC4W__\xFD[Pa\x03\xAAa\x05\xD36`\x04a.rV[a\x0F\xF0V[4\x80\x15a\x05\xE3W__\xFD[Pa\x02*a\x05\xF26`\x04a-\x12V[a\x10_V[4\x80\x15a\x06\x02W__\xFD[Pa\x02*a\x06\x116`\x04a.\x9AV[a\x10\xE8V[4\x80\x15a\x06!W__\xFD[P`\x06T`\x07Ta\x06E\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[`@\x80Q`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x93\x90\x92\x16` \x84\x01R\x90\x82\x01R``\x01a\x02\x80V[4\x80\x15a\x06vW__\xFD[Pa\x06\x9B`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x02\x80\x91\x90a.\xEFV[4\x80\x15a\x06\xB3W__\xFD[Pa\x02*a\x06\xC26`\x04a.rV[a\x12\nV[4\x80\x15a\x06\xD2W__\xFD[P`\x08Ta\x06\xEA\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x02\x80V[4\x80\x15a\x07\nW__\xFD[P`\x04T`\x05Ta\x06E\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x079W__\xFD[Pa\x03ta\x07H6`\x04a/$V[a\x13nV[4\x80\x15a\x07XW__\xFD[P`\nTa\x03\xAA\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x07wW__\xFD[Pa\x02*a\x07\x866`\x04a'\xC2V[a\x14\xCDV[4\x80\x15a\x07\x96W__\xFD[P`\tTa\x04,V[a\x07\xA7a\x15\x0CV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x07\xCEW`@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\x07\xFDW`@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\x08aW_\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\x08\xA3a%(V[a\x08\xABa\x15gV[\x90P\x90V[a\x08\xB8a\x15\x0CV[`\n\x80To\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\x19\x81\x16`\x01`@\x1B`\x01`\x01`@\x1B\x03\x85\x81\x16\x82\x02\x92\x83\x17\x94\x85\x90Ua\x08\xFE\x94\x91\x90\x91\x04\x81\x16\x92\x81\x16\x91\x16\x17a\x0F\xF0V[`\n`\x10a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UPPV[`@QcN@\\\x8D`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\t`WP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\tlWP_\x91\x90PV[`\nT`\x01`\x01`@\x1B\x03\x16a\t\x83\x83`\x05a/XV[a\t\x8D\x91\x90a/\x8BV[`\x01`\x01`@\x1B\x03\x16\x15\x92\x91PPV[\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\t\xC2WP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\t\xCEWP_\x91\x90PV[`\nTa\t\xE4\x90`\x01`\x01`@\x1B\x03\x16\x83a/\x8BV[`\x01`\x01`@\x1B\x03\x16\x15\x80a\n1WP`\nTa\n\x0C\x90`\x05\x90`\x01`\x01`@\x1B\x03\x16a/\xB8V[`\nT`\x01`\x01`@\x1B\x03\x91\x82\x16\x91a\n&\x91\x16\x84a/\x8BV[`\x01`\x01`@\x1B\x03\x16\x11[\x92\x91PPV[_`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\nuW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xAB\x91\x90a/\xD7V[a\n\xA1a\x15\x0CV[a\n\xAA\x81a\x10_V[PV[a\n\xB5a\x1B\x92V[a\n\xBE\x82a\x1C6V[a\n\xC8\x82\x82a\x1CwV[PPV[_a\n\xD5a\x1D8V[P_Q` a4\xB9_9_Q\x90_R\x90V[a\n\xEFa\x15\x0CV[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x0B:W`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U`@Q\x7F\x9A_W\xDE\x85m\xD6h\xC5M\xD9^\\U\xDF\x93C!q\xCB\xCAI\xA8wmV \xEAY\xC0$P\x90_\x90\xA1V[`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[V[a\x0B]a\x15\x0CV[a\x0BS_a\x1D\x81V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x0B\x8BWP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x0B\xA9W`@Qc\x01GL\x8F`\xE7\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T\x83Q`\x01`\x01`@\x1B\x03\x91\x82\x16\x91\x16\x11\x15\x80a\x0B\xE2WP`\x06T` \x84\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x0C\0W`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0C\r\x83`@\x01Qa\x1D\xF1V[a\x0C\x1A\x82` \x01Qa\x1D\xF1V[a\x0C'\x82`@\x01Qa\x1D\xF1V[a\x0C4\x82``\x01Qa\x1D\xF1V[_a\x0C=a\x0E\xA0V[` \x85\x01Q`\nT\x91\x92P_\x91a\x0C]\x91\x90`\x01`\x01`@\x1B\x03\x16a\x0F\xF0V[`\nT\x90\x91P`\x01`\x01`@\x1B\x03`\x01`\x80\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x10a\x0C\xA8Wa\x0C\x8A\x85` \x01Qa\t\xA2V[\x15a\x0C\xA8W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\nT`\x01`\x01`@\x1B\x03`\x01`\x80\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15a\r[W`\x02a\x0C\xD2\x83\x83a/\xB8V[`\x01`\x01`@\x1B\x03\x16\x10a\x0C\xF9W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\r\x04\x82`\x01a/XV[`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14\x80\x15a\r=WP`\x06Ta\r;\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16a\t@V[\x15[\x15a\r[W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\rf\x85\x85\x85a\x1EaV[\x84Q`\x06\x80T` \x88\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x81\x16\x93\x90\x93\x17\x17\x90U`@\x86\x01Q`\x07U`\nT`\x01`\x80\x1B\x90\x04\x81\x16\x90\x82\x16\x10\x80\x15\x90a\r\xC5WPa\r\xC5\x85` \x01Qa\t@V[\x15a\x0E/W\x83Q`\x0BU` \x84\x01Q`\x0CU`@\x84\x01Q`\rU``\x84\x01Q`\x0EU\x7F1\xEA\xBD\x90\x99\xFD\xB2]\xAC\xDD\xD2\x06\xAB\xFF\x871\x1EU4A\xFC\x9D\x0F\xCD\xEF \x10b\xD7\xE7\x07\x1Ba\x0E\x13\x82`\x01a/XV[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1[a\x0EAa\x0E:a\n7V[B\x87a\x1F\xD8V[\x84` \x01Q`\x01`\x01`@\x1B\x03\x16\x85_\x01Q`\x01`\x01`@\x1B\x03\x16\x7F\xA0Jw9$PZA\x85d67%\xF5h2\xF5w.k\x8D\r\xBDn\xFC\xE7$\xDF\xE8\x03\xDA\xE6\x87`@\x01Q`@Qa\x0E\x91\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPPV[`\x06T`\nT_\x91a\x08\xAB\x91`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16a\x0F\xF0V[`\t\x80T_\x91\x82\x91\x90a\x0E\xD9`\x01\x83a/\xEEV[\x81T\x81\x10a\x0E\xE9Wa\x0E\xE9a0\x01V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\x0F(W`@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\x0F\xE9W\x84`\t\x82\x81T\x81\x10a\x0FXWa\x0FXa0\x01V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\x0F\xE1W`\t\x81\x81T\x81\x10a\x0F\x91Wa\x0F\x91a0\x01V[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\x0F\xB4Wa\x0F\xB4a0\x01V[\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\x0F<V[PP\x91P\x91V[_\x81`\x01`\x01`@\x1B\x03\x16_\x03a\x10\x08WP_a\n1V[\x82`\x01`\x01`@\x1B\x03\x16_\x03a\x10 WP`\x01a\n1V[a\x10*\x82\x84a/\x8BV[`\x01`\x01`@\x1B\x03\x16_\x03a\x10JWa\x10C\x82\x84a0\x15V[\x90Pa\n1V[a\x10T\x82\x84a0\x15V[a\x10C\x90`\x01a/XV[a\x10ga\x15\x0CV[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\x10\x86WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\x10\xA4WP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\x10\xC2W`@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\x11,WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x11GWP0;\x15[\x90P\x81\x15\x80\x15a\x11UWP\x80\x15[\x15a\x11sW`@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\x11\x9DW\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x11\xA6\x86a!\xC1V[a\x11\xAEa!\xD2V[a\x11\xB9\x89\x89\x89a!\xDAV[\x83\x15a\x11\xFFW\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80T`\x02\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x12SWP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x12qW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Th\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x90\x91\x17`\x01`@\x1B\x17\x82U`\x05\x90\x85\x16\x11a\x12\xB9W`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_T`\x0BU`\x01T`\x0CU`\x02T`\rU`\x03T`\x0EU`\n\x80T`\x01`\x01`@\x1B\x03\x85\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x90\x87\x16\x17\x17\x90Ua\x13\x02\x83\x85a\x0F\xF0V[`\n\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x16`\x01`\x80\x1B`\x01`\x01`@\x1B\x03\x93\x84\x16\x02\x17\x90U\x81T`\xFF`@\x1B\x19\x16\x82U`@Q\x90\x83\x16\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPPV[`\tT_\x90a\x13{a\n7V[\x84\x11\x80a\x13\x86WP\x80\x15[\x80a\x13\xD0WP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x13\xB4Wa\x13\xB4a0\x01V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x13\xEEW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x13\xFC`\x01\x85a/\xEEV[\x90P[\x81a\x14\x98W`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\x14\x98W\x86`\t\x82\x81T\x81\x10a\x141Wa\x141a0\x01V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\x14\x86W`\x01\x91P`\t\x81\x81T\x81\x10a\x14fWa\x14fa0\x01V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\x14\x98V[\x80a\x14\x90\x81a0BV[\x91PPa\x13\xFFV[\x81a\x14\xB6W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\x14\xC1\x84\x89a/\xEEV[\x11\x97\x96PPPPPPPV[a\x14\xD5a\x15\x0CV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x15\x03W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\n\xAA\x81a\x1D\x81V[3a\x15>\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\x0BSW`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x14\xFAV[a\x15oa%(V[b\x10\0\0\x81R`\x0B` \x82\x01R\x7F&\x86~\xE5\x8A\xAF\x86\x0F\xC9\xE0\xE3\xA7\x86f\xFF\xC5\x1F;\xA1\xAD\x8A\xE0\x01\xC1\x96\x83\x0CU\xB5\xAF\x0B\x8C`@\x82\x01QR\x7F\t\x120\xAD\xB7S\xF8(\x15\x15\x12w\x06\x0C\xC5kTk\xB2\xE9P\xA0\xDE\x19\xED\x06\x1E\xC6\x8C\x07\x1A\x90` `@\x83\x01Q\x01R\x7F\x02\xA5\t\xA0m\x8CV\xF8? F\x88\xFFnB\xEA\xC6\xE3\xCB\xDD\x06;\tq\xA3\xAF\x95>\x81\xBA\xDB\xB6``\x82\x01QR\x7F\x06\xF4>\xD2\xB9\xCE\xCE5\xD1 \x1A\xBC\x13\xFF\xDA\xEA5V\x0C\xF0\xF1Dbw\x13\x8C\xE8\x12\xB9\xAD\x9F9` ``\x83\x01Q\x01R\x7F\x1AX\x8C\x99\xAD\x88\xF7\x89\xC8w\"\xB0a\xBBU5\xDA\xA0\xAB\xCC\x1D\xC6\xD1v\xD7\xFE\xA5\x1E]\x80\xB9&`\x80\x82\x01QR\x7F b\xB9\x95\xE6\x1Aj\xB8\xAA\xB6\xCDnu \xB8y\xD8O\x96Z\xB1\xF0\x94\xC1\x04\xF0\xC1!;(\x03\x8B` `\x80\x83\x01Q\x01R\x7F!\xA2\xFDvj\x0C\xEB\xEC\xFD\xBF\xDF\xE5a9\xA1\xBB\xD9\xAE\xC1^.5\xBE\x8E\xF0\x194\xA0\xECC\x86\x85`\xA0\x82\x01QR\x7F \xFEP\n\xC7\xD1\xAAx \xDB\x8Co\x7F\x9DP\x9E;.\x88s\x1E:\x12\xDDe\xF0oC\xCA\x93\r\xA0` `\xA0\x83\x01Q\x01R\x7F\n\xB5=\x12\x85\xC7\xF4\x81\x9B?\xF6\xE1\xDD\xAD\xA6\xBF%\x15\xD3K\xBA\xF6\x11\x86\xC6\xA0K\xE4}\xFDe\xA3`\xC0\x82\x01QR\x7F\x0B\x80\xA9\x87\x80\x82\xCD\xFD\xD9\xFC\xC1k\xB3?\xA4$\xC0\xADf\xB8\x19I\xBFd!S\xD3\xC7\xAD\x08/\"` `\xC0\x83\x01Q\x01R\x7F\x1B\x90\x0F\x8E_\x8E\x80d\xA5\x88\x8A\x1B\xD7\x96\xB5J&R\xFC\x02\x03O\xE4\xB6\xE6\xFC\x8DfP\xF7E;`\xE0\x82\x01QR~\xCC\xA2X\xA8\x83,d\xD1\xF8\xE1r\x1Ax\xFC%\xB1=)\xAD\xBB\x81\xE3Zy\xFC/I\xF8\x90'\x86` `\xE0\x83\x01Q\x01R\x7F\r\x1D3H\xD6B\xE6\xF2\xE9s\x9Ds]\x8Cr6v\xDB\xAE\xFD\xCB\xB4\xE9fA\xDE\xFA5=&\xEB\xB3a\x01\0\x82\x01QR\x7F\x14\xFE\x9Dj3Q\x04\xE7I\x1C\xA6\xD5\x08a\x13\xE6\xB0\xF5)F\x96\rrfdf{\xD5\x859\xD4\x1E` a\x01\0\x83\x01Q\x01R\x7F\x1D\xA9CdD\x0CN?\xB8\xAF-6<\xDE\xFAN\xDD\xA47W\x9E\x1B\x05j\x16\xA5\xE9\xA1\x1D\xFF\xA2\xABa\x01 \x82\x01QR\x7F\n\x07{\xD3\x07\xED1\"-\xB5\\\xB0\x12\x8B\xAF\xCE^\"U{W\xF5\xAC\x91SY\xC5\x02\x96\xCB\\w` a\x01 \x83\x01Q\x01R\x7F(\xFF\x80\xB13\xD9\x89#\\q)\xDE\xA5Di\xB7\x80\xACG\x17D\x92\x90\x06~|\x9A}[\xE7\xDB\xD5a\x01@\x82\x01QR\x7F\x1C\x0F\xC2.\xEF#\xB5\n-\xDCU?\x9F\xC1\xB6\x1F\xD8\xC5zX\xCA2\x1A\x82\x9C~\xC2U\xF7W\xB3\xA6` a\x01@\x83\x01Q\x01R~<N!\xE5\xDF\xBAb\xA5\xB1p/\xB0\xEF#K\xFE\x95\xA7w\x01\xA4V\x88#PRm\x14\x02C\xF5a\x01`\x82\x01QR\x7F\x06\x01-\xB8(v\xBA3\xE6\xE8\xF8\nQ\x016b\xE5lJ\xBC\x86\xA7\xD8\\'.\x19\xA6\xD7\xF5}\x0B` a\x01`\x83\x01Q\x01R\x7F\x16\xD5$}\xBD\xEA\xE1\xDFp\t>^\xE7rr\x95\x96a\xE0\xFB\xAB\xDAC\x17w\xFAr\x9F[S/Da\x01\x80\x82\x01QR~\x8D\x9E\xE0\x0Fy\x9C\xF0\x06\x08\xB0\x82\xD0;\x9D\xE5\xA4+\x81&\xC3_\xBF\xBD\x1E`!\x08\xDF\x10\xE0\xE3` a\x01\x80\x83\x01Q\x01R\x7F/Rli\x81d?\xF6\xF6\xE9\xD2\xB5\xA9!\xE0l\xF9_'F)\xB5\xA1E\xBDU+\x7F\xDAj\x87\0a\x01\xA0\x82\x01QR\x7F/\xE7\x10\x8F\xD4\xE2B1\xF3\xDA\xDBn\t\x07.\x10o\xCA\x06\x94\xFE9\xDF\xF9eW\xA8\x82!\xA8\x9AP` a\x01\xA0\x83\x01Q\x01R\x7F&\xA3V\x85\x98\xA6\x98\x1Ec%\xF4\x81g6\xE3\x81\x08{[\x0EK'\xEF6M\x8A\xE1\xE2\x9F\xE9\xDF\x99a\x01\xC0\x82\x01QR\x7F\x1D\xB8\x1C\xDF\x82\xA9\xEC\x99\xF3\xC9qm\xF2-81~k\xB8O\xC5}/\x0E{+\xC8\xA0V\x9F|\xC4` a\x01\xC0\x83\x01Q\x01R~\x99\x88\x80\x88\xE1\x1D\xE6\xED\x08l\x99\xB9\xBB\xA9\x86\xD9\x08\xDF[\x0CP\x07h\r\x97V}HW\x19\x94a\x01\xE0\x82\x01QR\x7F\x1F\x91Wn\xAD\xFF\xFF\x93+nT\xBA\xB0\"\xF9?o\xEC>[vt\xD0\0k\xC5\xF2\"5'\xA3H` a\x01\xE0\x83\x01Q\x01R~h\xB3\xC1\x17\xEE~\x84\xD6\xB6p\xB6\xAF \x19wY\xEC\x80\xD3O<YC(f01\xE9\xCD~\x02a\x02\0\x82\x01QR\x7F\x1C82\xE2Hw4f\x80\xE7\x04{\xAE,\xFC\xD5\x1F\xAF\xE3\xE7\xCA\xF1\x99\xE9\xDF\xC8\xE8\xF1\x0C+iC` a\x02\0\x83\x01Q\x01R\x7F\x16L\xDD\x9A\xD5\xD4\xE9n\x10\x90s\xE8\xE75\xCDJ\xC6J\xBAm\xDA\xA2D\xDAg\x016\x9C\x8C\xBA]\xAFa\x02 \x82\x01QR\x7F\x16\xC4\x1Ed\x7F\x1A\xB0\xD4\\\x89\x15D)\x9EN\xF9\xC0\x04\xD8\xBC\n;\xF0\x96\xDC8\xCE\x8E\xD9\x0C\rg` a\x02 \x83\x01Q\x01R\x7F\x13K\xA7\xA9V{\xA2\x0E\x1F5\x95\x9E\xE8\xC2\xCDh\x8D:\x96+\xB1y~\x8A\xB8\xE5\x11v\x8D\xE0\xCE\x83a\x02@\x82\x01QR\x7F\x02\xE4\xD2\x86\xC9C_{\xD9L\x1A,x\xB9\x99f\xD0o\xAC\xA1\xAEE\xDEx\x14\x99P\xA4\xFE\xFC\xD6\xE7` a\x02@\x83\x01Q\x01R\x7F\x03\x9A\x0B-\x92\x0F)\xE3\\\xB2\xA9\xE1\xECl\xC2*\xC1\xD4\x82\xAFE\xE4s\x99rJ\x07E\xD5B\xE89a\x02`\x82\x01QR\x7F\x15\xAC&X\xBF\xDD\"'\xAE\xBF\x8E \x93Y5\xA6H\x81\x9E\x1D\xCE\xA8\x07\xDA\x1C\x83\x8A\xBF\xA7\x89lc` a\x02`\x83\x01Q\x01R\x7F\xB0\x83\x88\x93\xEC\x1F#~\x8B\x072;\x07DY\x9FN\x97\xB5\x98\xB3\xB5\x89\xBC\xC2\xBC7\xB8\xD5\xC4\x18\x01a\x02\x80\x82\x01R\x7F\xC1\x83\x93\xC0\xFA0\xFEN\x8B\x03\x8E5z\xD8Q\xEA\xE8\xDE\x91\x07XN\xFF\xE7\xC7\xF1\xF6Q\xB2\x01\x0E&a\x02\xA0\x82\x01R\x90V[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14\x80a\x1C\x18WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16a\x1C\x0C_Q` a4\xB9_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x0BSW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1C>a\x15\x0CV[`@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\x08GV[\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\x1C\xD1WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x1C\xCE\x91\x81\x01\x90a/\xD7V[`\x01[a\x1C\xF9W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x14\xFAV[_Q` a4\xB9_9_Q\x90_R\x81\x14a\x1D)W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x14\xFAV[a\x1D3\x83\x83a#\x06V[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\x0BSW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x82\x17\x84U`@Q\x92\x16\x91\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90_\x90\xA3PPPV[\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81\x10\x80a\n\xC8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1B`$\x82\x01R\x7FBn254: invalid scalar field\0\0\0\0\0`D\x82\x01R`d\x01a\x14\xFAV[_a\x1Eja\x08\x9BV[\x90Pa\x1Eta'\x8DV[\x84Q`\x01`\x01`@\x1B\x03\x90\x81\x16\x82R` \x80\x87\x01\x80Q\x83\x16\x91\x84\x01\x91\x90\x91R`@\x80\x88\x01Q\x90\x84\x01R`\x0CT``\x84\x01R`\rT`\x80\x84\x01R`\x0ET`\xA0\x84\x01R`\x0BT`\xC0\x84\x01R`\nT\x90Q`\x01`@\x1B\x90\x91\x04\x82\x16\x91\x16\x10\x80\x15\x90a\x1E\xE4WPa\x1E\xE4\x85` \x01Qa\t@V[\x15a\x1F\x16W` \x84\x01Q`\xE0\x82\x01R`@\x84\x01Qa\x01\0\x82\x01R``\x84\x01Qa\x01 \x82\x01R\x83Qa\x01@\x82\x01Ra\x1F:V[`\x0CT`\xE0\x82\x01R`\rTa\x01\0\x82\x01R`\x0ETa\x01 \x82\x01R`\x0BTa\x01@\x82\x01R[`@Qc\xFC\x86`\xC7`\xE0\x1B\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90c\xFC\x86`\xC7\x90a\x1Fu\x90\x85\x90\x85\x90\x88\x90`\x04\x01a29V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\x1F\x90W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1F\xB4\x91\x90a4YV[a\x1F\xD1W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPV[`\tT\x15\x80\x15\x90a MWP`\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 \x18Wa \x18a0\x01V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta B\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a/\xB8V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a \xE0W`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a zWa za0\x01V[_\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 \xBA\x83a4xV[\x91\x90a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UPP[`@\x80Q`\x80\x81\x01\x82R`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x80\x85\x01\x91\x82R\x83\x01Q\x85\x16\x84\x83\x01\x90\x81R\x92\x90\x91\x01Q``\x84\x01\x90\x81R`\t\x80T`\x01\x81\x01\x82U_\x91\x90\x91R\x93Q`\x02\x90\x94\x02\x7Fn\x15@\x17\x1Bl\x0C\x96\x0Bq\xA7\x02\r\x9F`\x07\x7Fj\xF91\xA8\xBB\xF5\x90\xDA\x02#\xDA\xCFu\xC7\xAF\x81\x01\x80T\x93Q\x94Q\x87\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x95\x88\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x95\x16\x96\x90\x97\x16\x95\x90\x95\x17\x92\x90\x92\x17\x92\x90\x92\x16\x93\x90\x93\x17\x90\x91UQ\x7Fn\x15@\x17\x1Bl\x0C\x96\x0Bq\xA7\x02\r\x9F`\x07\x7Fj\xF91\xA8\xBB\xF5\x90\xDA\x02#\xDA\xCFu\xC7\xB0\x90\x91\x01UV[a!\xC9a#[V[a\n\xAA\x81a#\xA4V[a\x0BSa#[V[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a!\xFEWP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\"\x0BWP` \x82\x01Q\x15[\x80a\"\x18WP`@\x82\x01Q\x15[\x80a\"%WP``\x82\x01Q\x15[\x80a\"/WP\x81Q\x15[\x80a\"AWPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a\"UWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a\"sW`@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[a#\x0F\x82a#\xACV[`@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#SWa\x1D3\x82\x82a$\x0FV[a\n\xC8a$\x81V[\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\x0BSW`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x14\xD5a#[V[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a#\xE1W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x14\xFAV[_Q` a4\xB9_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$+\x91\x90a4\xA2V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a$cW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a$hV[``\x91P[P\x91P\x91Pa$x\x85\x83\x83a$\xA0V[\x95\x94PPPPPV[4\x15a\x0BSW`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a$\xB5Wa$\xB0\x82a$\xFFV[a$\xF8V[\x81Q\x15\x80\x15a$\xCCWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a$\xF5W`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x14\xFAV[P\x80[\x93\x92PPPV[\x80Q\x15a%\x0FW\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%[`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%{`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\x9B`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\xBB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\xDB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\xFB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\x1B`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&;`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&[`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&{`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\x9B`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xBB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xDB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xFB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\x1B`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a';`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'[`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'{`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80a\x01`\x01`@R\x80`\x0B\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\t\x9DW__\xFD[_` \x82\x84\x03\x12\x15a'\xD2W__\xFD[a$\xF8\x82a'\xACV[_` \x82\x84\x03\x12\x15a'\xEBW__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa($`@\x84\x01\x82\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[P``\x83\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP`\x80\x83\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\xA0\x83\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xC0\x83\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xE0\x83\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RPa\x01\0\x83\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01 \x83\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01@\x83\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01`\x83\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01\x80\x83\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\xA0\x83\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xC0\x83\x01Q\x80Qa\x03@\x84\x01R` \x81\x01Qa\x03`\x84\x01RPa\x01\xE0\x83\x01Q\x80Qa\x03\x80\x84\x01R` \x81\x01Qa\x03\xA0\x84\x01RPa\x02\0\x83\x01Q\x80Qa\x03\xC0\x84\x01R` \x81\x01Qa\x03\xE0\x84\x01RPa\x02 \x83\x01Q\x80Qa\x04\0\x84\x01R` \x81\x01Qa\x04 \x84\x01RPa\x02@\x83\x01Q\x80Qa\x04@\x84\x01R` \x81\x01Qa\x04`\x84\x01RPa\x02`\x83\x01Q\x80Qa\x04\x80\x84\x01R` \x81\x01Qa\x04\xA0\x84\x01RPa\x02\x80\x83\x01Qa\x04\xC0\x83\x01Ra\x02\xA0\x90\x92\x01Qa\x04\xE0\x90\x91\x01R\x90V[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\t\x9DW__\xFD[_` \x82\x84\x03\x12\x15a*\x19W__\xFD[a$\xF8\x82a)\xF3V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a*YWa*Ya*\"V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a*\x87Wa*\x87a*\"V[`@R\x91\x90PV[_``\x82\x84\x03\x12\x15a*\x9FW__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a*\xC1Wa*\xC1a*\"V[`@R\x90P\x80a*\xD0\x83a)\xF3V[\x81Ra*\xDE` \x84\x01a)\xF3V[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a+\x04W__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a+&Wa+&a*\"V[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_a\x04\x80\x82\x84\x03\x12\x15a+QW__\xFD[a+Ya*6V[\x90Pa+e\x83\x83a*\xF4V[\x81Ra+t\x83`@\x84\x01a*\xF4V[` \x82\x01Ra+\x86\x83`\x80\x84\x01a*\xF4V[`@\x82\x01Ra+\x98\x83`\xC0\x84\x01a*\xF4V[``\x82\x01Ra+\xAB\x83a\x01\0\x84\x01a*\xF4V[`\x80\x82\x01Ra+\xBE\x83a\x01@\x84\x01a*\xF4V[`\xA0\x82\x01Ra+\xD1\x83a\x01\x80\x84\x01a*\xF4V[`\xC0\x82\x01Ra+\xE4\x83a\x01\xC0\x84\x01a*\xF4V[`\xE0\x82\x01Ra+\xF7\x83a\x02\0\x84\x01a*\xF4V[a\x01\0\x82\x01Ra,\x0B\x83a\x02@\x84\x01a*\xF4V[a\x01 \x82\x01Ra,\x1F\x83a\x02\x80\x84\x01a*\xF4V[a\x01@\x82\x01Ra,3\x83a\x02\xC0\x84\x01a*\xF4V[a\x01`\x82\x01Ra,G\x83a\x03\0\x84\x01a*\xF4V[a\x01\x80\x82\x01Ra\x03@\x82\x015a\x01\xA0\x82\x01Ra\x03`\x82\x015a\x01\xC0\x82\x01Ra\x03\x80\x82\x015a\x01\xE0\x82\x01Ra\x03\xA0\x82\x015a\x02\0\x82\x01Ra\x03\xC0\x82\x015a\x02 \x82\x01Ra\x03\xE0\x82\x015a\x02@\x82\x01Ra\x04\0\x82\x015a\x02`\x82\x01Ra\x04 \x82\x015a\x02\x80\x82\x01Ra\x04@\x82\x015a\x02\xA0\x82\x01Ra\x04`\x90\x91\x015a\x02\xC0\x82\x01R\x91\x90PV[__a\x04\xE0\x83\x85\x03\x12\x15a,\xDDW__\xFD[a,\xE7\x84\x84a*\x8FV[\x91Pa,\xF6\x84``\x85\x01a+@V[\x90P\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\t\x9DW__\xFD[_` \x82\x84\x03\x12\x15a-\"W__\xFD[a$\xF8\x82a,\xFFV[__`@\x83\x85\x03\x12\x15a-<W__\xFD[a-E\x83a'\xACV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-_W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a-oW__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a-\x88Wa-\x88a*\"V[a-\x9B`\x1F\x82\x01`\x1F\x19\x16` \x01a*_V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a-\xAFW__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_`\x80\x82\x84\x03\x12\x15a-\xDEW__\xFD[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a.\0Wa.\0a*\"V[`@\x90\x81R\x835\x82R` \x80\x85\x015\x90\x83\x01R\x83\x81\x015\x90\x82\x01R``\x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[___a\x05`\x84\x86\x03\x12\x15a.AW__\xFD[a.K\x85\x85a*\x8FV[\x92Pa.Z\x85``\x86\x01a-\xCEV[\x91Pa.i\x85`\xE0\x86\x01a+@V[\x90P\x92P\x92P\x92V[__`@\x83\x85\x03\x12\x15a.\x83W__\xFD[a.\x8C\x83a)\xF3V[\x91Pa,\xF6` \x84\x01a)\xF3V[____a\x01 \x85\x87\x03\x12\x15a.\xAEW__\xFD[a.\xB8\x86\x86a*\x8FV[\x93Pa.\xC7\x86``\x87\x01a-\xCEV[\x92Pa.\xD5`\xE0\x86\x01a,\xFFV[\x91Pa.\xE4a\x01\0\x86\x01a'\xACV[\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/5W__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[`\x01`\x01`@\x1B\x03\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\n1Wa\n1a/DV[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a/\xA3Wa/\xA3a/wV[\x80`\x01`\x01`@\x1B\x03\x84\x16\x06\x91PP\x92\x91PPV[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\n1Wa\n1a/DV[_` \x82\x84\x03\x12\x15a/\xE7W__\xFD[PQ\x91\x90PV[\x81\x81\x03\x81\x81\x11\x15a\n1Wa\n1a/DV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a0-Wa0-a/wV[\x80`\x01`\x01`@\x1B\x03\x84\x16\x04\x91PP\x92\x91PPV[_\x81a0PWa0Pa/DV[P_\x19\x01\x90V[\x80_[`\x0B\x81\x10\x15a0yW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a0ZV[PPPPV[a0\x94\x82\x82Q\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[` \x81\x81\x01Q\x80Q`@\x85\x01R\x90\x81\x01Q``\x84\x01RP`@\x81\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP``\x81\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\x80\x81\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xA0\x81\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xC0\x81\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RP`\xE0\x81\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01\0\x81\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01 \x81\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01@\x81\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01`\x81\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\x80\x81\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xA0\x81\x01Qa\x03@\x83\x01Ra\x01\xC0\x81\x01Qa\x03`\x83\x01Ra\x01\xE0\x81\x01Qa\x03\x80\x83\x01Ra\x02\0\x81\x01Qa\x03\xA0\x83\x01Ra\x02 \x81\x01Qa\x03\xC0\x83\x01Ra\x02@\x81\x01Qa\x03\xE0\x83\x01Ra\x02`\x81\x01Qa\x04\0\x83\x01Ra\x02\x80\x81\x01Qa\x04 \x83\x01Ra\x02\xA0\x81\x01Qa\x04@\x83\x01Ra\x02\xC0\x01Qa\x04`\x90\x91\x01RV[_a\n\xE0\x82\x01\x90P\x84Q\x82R` \x85\x01Q` \x83\x01R`@\x85\x01Qa2k`@\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\x01Ra4Ca\x05\0\x83\x01\x85a0WV[a4Qa\x06`\x83\x01\x84a0\x7FV[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a4iW__\xFD[\x81Q\x80\x15\x15\x81\x14a$\xF8W__\xFD[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a4\x99Wa4\x99a/DV[`\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",
4897    );
4898    /// The runtime bytecode of the contract, as deployed on the network.
4899    ///
4900    /// ```text
4901    ///0x608060405260043610610207575f3560e01c8063715018a6116101135780639fdb54a71161009d578063d24d933d1161006d578063d24d933d146106ff578063e03033011461072e578063f06820541461074d578063f2fde38b1461076c578063f9e50d191461078b575f5ffd5b80639fdb54a714610616578063ad3cb1cc1461066b578063b33bc491146106a8578063c23b9e9e146106c7575f5ffd5b80638584d23f116100e35780638584d23f146105415780638da5cb5b1461057d57806390c14390146105b957806396c1ca61146105d85780639baa3cc9146105f7575f5ffd5b8063715018a6146104db578063757c37ad146104ef578063766718081461050e578063826e41fc14610522575f5ffd5b8063300c89dd11610194578063426d319411610164578063426d319414610460578063433dba9f146104815780634f1ef286146104a057806352d1902d146104b357806369cc6a04146104c7575f5ffd5b8063300c89dd146103c2578063313df7b1146103e1578063378ec23b146104185780633ed55b7b1461043a575f5ffd5b806312173c2c116101da57806312173c2c146102f6578063167ac618146103175780632063d4f71461033657806325297427146103555780632f79889d14610384575f5ffd5b8063013fa5fc1461020b57806302b592f31461022c5780630625e19b146102895780630d8e6e2c146102cb575b5f5ffd5b348015610216575f5ffd5b5061022a6102253660046127c2565b61079f565b005b348015610237575f5ffd5b5061024b6102463660046127db565b610852565b60405161028094939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b348015610294575f5ffd5b50600b54600c54600d54600e546102ab9392919084565b604080519485526020850193909352918301526060820152608001610280565b3480156102d6575f5ffd5b5060408051600281525f6020820181905291810191909152606001610280565b348015610301575f5ffd5b5061030a61089b565b60405161028091906127f2565b348015610322575f5ffd5b5061022a610331366004612a09565b6108b0565b348015610341575f5ffd5b5061022a610350366004612ccb565b610927565b348015610360575f5ffd5b5061037461036f366004612a09565b610940565b6040519015158152602001610280565b34801561038f575f5ffd5b506008546103aa90600160c01b90046001600160401b031681565b6040516001600160401b039091168152602001610280565b3480156103cd575f5ffd5b506103746103dc366004612a09565b6109a2565b3480156103ec575f5ffd5b50600854610400906001600160a01b031681565b6040516001600160a01b039091168152602001610280565b348015610423575f5ffd5b5061042c610a37565b604051908152602001610280565b348015610445575f5ffd5b50600a546103aa90600160401b90046001600160401b031681565b34801561046b575f5ffd5b505f546001546002546003546102ab9392919084565b34801561048c575f5ffd5b5061022a61049b366004612d12565b610a99565b61022a6104ae366004612d2b565b610aad565b3480156104be575f5ffd5b5061042c610acc565b3480156104d2575f5ffd5b5061022a610ae7565b3480156104e6575f5ffd5b5061022a610b55565b3480156104fa575f5ffd5b5061022a610509366004612e2e565b610b66565b348015610519575f5ffd5b506103aa610ea0565b34801561052d575f5ffd5b506008546001600160a01b03161515610374565b34801561054c575f5ffd5b5061056061055b3660046127db565b610ec5565b604080519283526001600160401b03909116602083015201610280565b348015610588575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610400565b3480156105c4575f5ffd5b506103aa6105d3366004612e72565b610ff0565b3480156105e3575f5ffd5b5061022a6105f2366004612d12565b61105f565b348015610602575f5ffd5b5061022a610611366004612e9a565b6110e8565b348015610621575f5ffd5b50600654600754610645916001600160401b0380821692600160401b909204169083565b604080516001600160401b03948516815293909216602084015290820152606001610280565b348015610676575f5ffd5b5061069b604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102809190612eef565b3480156106b3575f5ffd5b5061022a6106c2366004612e72565b61120a565b3480156106d2575f5ffd5b506008546106ea90600160a01b900463ffffffff1681565b60405163ffffffff9091168152602001610280565b34801561070a575f5ffd5b50600454600554610645916001600160401b0380821692600160401b909204169083565b348015610739575f5ffd5b50610374610748366004612f24565b61136e565b348015610758575f5ffd5b50600a546103aa906001600160401b031681565b348015610777575f5ffd5b5061022a6107863660046127c2565b6114cd565b348015610796575f5ffd5b5060095461042c565b6107a761150c565b6001600160a01b0381166107ce5760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036107fd5760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b60098181548110610861575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b6108a3612528565b6108ab611567565b905090565b6108b861150c565b600a80546fffffffffffffffff0000000000000000198116600160401b6001600160401b038581168202928317948590556108fe94919091048116928116911617610ff0565b600a60106101000a8154816001600160401b0302191690836001600160401b0316021790555050565b604051634e405c8d60e01b815260040160405180910390fd5b5f6001600160401b03821615806109605750600a546001600160401b0316155b1561096c57505f919050565b600a546001600160401b0316610983836005612f58565b61098d9190612f8b565b6001600160401b03161592915050565b919050565b5f6001600160401b03821615806109c25750600a546001600160401b0316155b156109ce57505f919050565b600a546109e4906001600160401b031683612f8b565b6001600160401b03161580610a315750600a54610a0c906005906001600160401b0316612fb8565b600a546001600160401b0391821691610a26911684612f8b565b6001600160401b0316115b92915050565b5f60646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a75573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108ab9190612fd7565b610aa161150c565b610aaa8161105f565b50565b610ab5611b92565b610abe82611c36565b610ac88282611c77565b5050565b5f610ad5611d38565b505f5160206134b95f395f51905f5290565b610aef61150c565b6008546001600160a01b031615610b3a57600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b610b5d61150c565b610b535f611d81565b6008546001600160a01b031615158015610b8b57506008546001600160a01b03163314155b15610ba9576040516301474c8f60e71b815260040160405180910390fd5b60065483516001600160401b039182169116111580610be2575060065460208401516001600160401b03600160401b9092048216911611155b15610c005760405163051c46ef60e01b815260040160405180910390fd5b610c0d8360400151611df1565b610c1a8260200151611df1565b610c278260400151611df1565b610c348260600151611df1565b5f610c3d610ea0565b6020850151600a549192505f91610c5d91906001600160401b0316610ff0565b600a549091506001600160401b03600160801b909104811690821610610ca857610c8a85602001516109a2565b15610ca85760405163080ae8d960e01b815260040160405180910390fd5b600a546001600160401b03600160801b90910481169082161115610d5b576002610cd28383612fb8565b6001600160401b031610610cf95760405163080ae8d960e01b815260040160405180910390fd5b610d04826001612f58565b6001600160401b0316816001600160401b0316148015610d3d5750600654610d3b90600160401b90046001600160401b0316610940565b155b15610d5b5760405163080ae8d960e01b815260040160405180910390fd5b610d66858585611e61565b84516006805460208801516001600160401b03908116600160401b026001600160801b0319909216938116939093171790556040860151600755600a54600160801b9004811690821610801590610dc55750610dc58560200151610940565b15610e2f578351600b556020840151600c556040840151600d556060840151600e557f31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b610e13826001612f58565b6040516001600160401b03909116815260200160405180910390a15b610e41610e3a610a37565b4287611fd8565b84602001516001600160401b0316855f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae68760400151604051610e9191815260200190565b60405180910390a35050505050565b600654600a545f916108ab916001600160401b03600160401b90920482169116610ff0565b600980545f91829190610ed9600183612fee565b81548110610ee957610ee9613001565b5f918252602090912060029091020154600160801b90046001600160401b03168410610f2857604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b81811015610fe9578460098281548110610f5857610f58613001565b5f918252602090912060029091020154600160801b90046001600160401b03161115610fe15760098181548110610f9157610f91613001565b905f5260205f2090600202016001015460098281548110610fb457610fb4613001565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101610f3c565b5050915091565b5f816001600160401b03165f0361100857505f610a31565b826001600160401b03165f0361102057506001610a31565b61102a8284612f8b565b6001600160401b03165f0361104a576110438284613015565b9050610a31565b6110548284613015565b611043906001612f58565b61106761150c565b610e108163ffffffff16108061108657506301e133808163ffffffff16115b806110a4575060085463ffffffff600160a01b909104811690821611155b156110c2576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f8115801561112c5750825b90505f826001600160401b031660011480156111475750303b155b905081158015611155575080155b156111735760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561119d57845460ff60401b1916600160401b1785555b6111a6866121c1565b6111ae6121d2565b6111b98989896121da565b83156111ff57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680611253575080546001600160401b03808416911610155b156112715760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b1782556005908516116112b9576040516350dd03f760e11b815260040160405180910390fd5b5f54600b55600154600c55600254600d55600354600e55600a80546001600160401b03858116600160401b026001600160801b0319909216908716171790556113028385610ff0565b600a805467ffffffffffffffff60801b1916600160801b6001600160401b0393841602179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b6009545f9061137b610a37565b841180611386575080155b806113d05750600854600980549091600160c01b90046001600160401b03169081106113b4576113b4613001565b5f9182526020909120600290910201546001600160401b031684105b156113ee5760405163b0b4387760e01b815260040160405180910390fd5b5f80806113fc600185612fee565b90505b8161149857600854600160c01b90046001600160401b0316811061149857866009828154811061143157611431613001565b5f9182526020909120600290910201546001600160401b03161161148657600191506009818154811061146657611466613001565b5f9182526020909120600290910201546001600160401b03169250611498565b8061149081613042565b9150506113ff565b816114b65760405163b0b4387760e01b815260040160405180910390fd5b856114c18489612fee565b11979650505050505050565b6114d561150c565b6001600160a01b03811661150357604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610aaa81611d81565b3361153e7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610b535760405163118cdaa760e01b81523360048201526024016114fa565b61156f612528565b621000008152600b60208201527f26867ee58aaf860fc9e0e3a78666ffc51f3ba1ad8ae001c196830c55b5af0b8c6040820151527f091230adb753f82815151277060cc56b546bb2e950a0de19ed061ec68c071a906020604083015101527f02a509a06d8c56f83f204688ff6e42eac6e3cbdd063b0971a3af953e81badbb66060820151527f06f43ed2b9cece35d1201abc13ffdaea35560cf0f1446277138ce812b9ad9f396020606083015101527f1a588c99ad88f789c87722b061bb5535daa0abcc1dc6d176d7fea51e5d80b9266080820151527f2062b995e61a6ab8aab6cd6e7520b879d84f965ab1f094c104f0c1213b28038b6020608083015101527f21a2fd766a0cebecfdbfdfe56139a1bbd9aec15e2e35be8ef01934a0ec43868560a0820151527f20fe500ac7d1aa7820db8c6f7f9d509e3b2e88731e3a12dd65f06f43ca930da0602060a083015101527f0ab53d1285c7f4819b3ff6e1ddada6bf2515d34bbaf61186c6a04be47dfd65a360c0820151527f0b80a9878082cdfdd9fcc16bb33fa424c0ad66b81949bf642153d3c7ad082f22602060c083015101527f1b900f8e5f8e8064a5888a1bd796b54a2652fc02034fe4b6e6fc8d6650f7453b60e0820151527ecca258a8832c64d1f8e1721a78fc25b13d29adbb81e35a79fc2f49f8902786602060e083015101527f0d1d3348d642e6f2e9739d735d8c723676dbaefdcbb4e96641defa353d26ebb3610100820151527f14fe9d6a335104e7491ca6d5086113e6b0f52946960d726664667bd58539d41e602061010083015101527f1da94364440c4e3fb8af2d363cdefa4edda437579e1b056a16a5e9a11dffa2ab610120820151527f0a077bd307ed31222db55cb0128bafce5e22557b57f5ac915359c50296cb5c77602061012083015101527f28ff80b133d989235c7129dea54469b780ac4717449290067e7c9a7d5be7dbd5610140820151527f1c0fc22eef23b50a2ddc553f9fc1b61fd8c57a58ca321a829c7ec255f757b3a6602061014083015101527e3c4e21e5dfba62a5b1702fb0ef234bfe95a77701a456882350526d140243f5610160820151527f06012db82876ba33e6e8f80a51013662e56c4abc86a7d85c272e19a6d7f57d0b602061016083015101527f16d5247dbdeae1df70093e5ee77272959661e0fbabda431777fa729f5b532f44610180820151527e8d9ee00f799cf00608b082d03b9de5a42b8126c35fbfbd1e602108df10e0e3602061018083015101527f2f526c6981643ff6f6e9d2b5a921e06cf95f274629b5a145bd552b7fda6a87006101a0820151527f2fe7108fd4e24231f3dadb6e09072e106fca0694fe39dff96557a88221a89a5060206101a083015101527f26a3568598a6981e6325f4816736e381087b5b0e4b27ef364d8ae1e29fe9df996101c0820151527f1db81cdf82a9ec99f3c9716df22d38317e6bb84fc57d2f0e7b2bc8a0569f7cc460206101c083015101527e99888088e11de6ed086c99b9bba986d908df5b0c5007680d97567d485719946101e0820151527f1f91576eadffff932b6e54bab022f93f6fec3e5b7674d0006bc5f2223527a34860206101e083015101527e68b3c117ee7e84d6b670b6af20197759ec80d34f3c594328663031e9cd7e02610200820151527f1c3832e24877346680e7047bae2cfcd51fafe3e7caf199e9dfc8e8f10c2b6943602061020083015101527f164cdd9ad5d4e96e109073e8e735cd4ac64aba6ddaa244da6701369c8cba5daf610220820151527f16c41e647f1ab0d45c891544299e4ef9c004d8bc0a3bf096dc38ce8ed90c0d67602061022083015101527f134ba7a9567ba20e1f35959ee8c2cd688d3a962bb1797e8ab8e511768de0ce83610240820151527f02e4d286c9435f7bd94c1a2c78b99966d06faca1ae45de78149950a4fefcd6e7602061024083015101527f039a0b2d920f29e35cb2a9e1ec6cc22ac1d482af45e47399724a0745d542e839610260820151527f15ac2658bfdd2227aebf8e20935935a648819e1dcea807da1c838abfa7896c63602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611c1857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611c0c5f5160206134b95f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15610b535760405163703e46dd60e11b815260040160405180910390fd5b611c3e61150c565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610847565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611cd1575060408051601f3d908101601f19168201909252611cce91810190612fd7565b60015b611cf957604051634c9c8ce360e01b81526001600160a01b03831660048201526024016114fa565b5f5160206134b95f395f51905f528114611d2957604051632a87526960e21b8152600481018290526024016114fa565b611d338383612306565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b535760405163703e46dd60e11b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001811080610ac85760405162461bcd60e51b815260206004820152601b60248201527f426e3235343a20696e76616c6964207363616c6172206669656c64000000000060448201526064016114fa565b5f611e6a61089b565b9050611e7461278d565b84516001600160401b0390811682526020808701805183169184019190915260408088015190840152600c546060840152600d546080840152600e5460a0840152600b5460c0840152600a549051600160401b9091048216911610801590611ee45750611ee48560200151610940565b15611f1657602084015160e0820152604084015161010082015260608401516101208201528351610140820152611f3a565b600c5460e0820152600d54610100820152600e54610120820152600b546101408201525b60405163fc8660c760e01b815273ffffffffffffffffffffffffffffffffffffffff9063fc8660c790611f7590859085908890600401613239565b602060405180830381865af4158015611f90573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fb49190613459565b611fd1576040516309bde33960e01b815260040160405180910390fd5b5050505050565b6009541580159061204d575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b031690811061201857612018613001565b5f91825260209091206002909102015461204290600160401b90046001600160401b031684612fb8565b6001600160401b0316115b156120e057600854600980549091600160c01b90046001600160401b031690811061207a5761207a613001565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b03169060186120ba83613478565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b6121c961235b565b610aaa816123a4565b610b5361235b565b82516001600160401b03161515806121fe575060208301516001600160401b031615155b8061220b57506020820151155b8061221857506040820151155b8061222557506060820151155b8061222f57508151155b806122415750610e108163ffffffff16105b8061225557506301e133808163ffffffff16115b15612273576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b61230f826123ac565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561235357611d33828261240f565b610ac8612481565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610b5357604051631afcd79f60e31b815260040160405180910390fd5b6114d561235b565b806001600160a01b03163b5f036123e157604051634c9c8ce360e01b81526001600160a01b03821660048201526024016114fa565b5f5160206134b95f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b03168460405161242b91906134a2565b5f60405180830381855af49150503d805f8114612463576040519150601f19603f3d011682016040523d82523d5f602084013e612468565b606091505b50915091506124788583836124a0565b95945050505050565b3415610b535760405163b398979f60e01b815260040160405180910390fd5b6060826124b5576124b0826124ff565b6124f8565b81511580156124cc57506001600160a01b0384163b155b156124f557604051639996b31560e01b81526001600160a01b03851660048201526024016114fa565b50805b9392505050565b80511561250f5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f815260200161255b60405180604001604052805f81526020015f81525090565b815260200161257b60405180604001604052805f81526020015f81525090565b815260200161259b60405180604001604052805f81526020015f81525090565b81526020016125bb60405180604001604052805f81526020015f81525090565b81526020016125db60405180604001604052805f81526020015f81525090565b81526020016125fb60405180604001604052805f81526020015f81525090565b815260200161261b60405180604001604052805f81526020015f81525090565b815260200161263b60405180604001604052805f81526020015f81525090565b815260200161265b60405180604001604052805f81526020015f81525090565b815260200161267b60405180604001604052805f81526020015f81525090565b815260200161269b60405180604001604052805f81526020015f81525090565b81526020016126bb60405180604001604052805f81526020015f81525090565b81526020016126db60405180604001604052805f81526020015f81525090565b81526020016126fb60405180604001604052805f81526020015f81525090565b815260200161271b60405180604001604052805f81526020015f81525090565b815260200161273b60405180604001604052805f81526020015f81525090565b815260200161275b60405180604001604052805f81526020015f81525090565b815260200161277b60405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b604051806101600160405280600b906020820280368337509192915050565b80356001600160a01b038116811461099d575f5ffd5b5f602082840312156127d2575f5ffd5b6124f8826127ac565b5f602082840312156127eb575f5ffd5b5035919050565b5f6105008201905082518252602083015160208301526040830151612824604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b80356001600160401b038116811461099d575f5ffd5b5f60208284031215612a19575f5ffd5b6124f8826129f3565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b0381118282101715612a5957612a59612a22565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612a8757612a87612a22565b604052919050565b5f60608284031215612a9f575f5ffd5b604051606081016001600160401b0381118282101715612ac157612ac1612a22565b604052905080612ad0836129f3565b8152612ade602084016129f3565b6020820152604092830135920191909152919050565b5f60408284031215612b04575f5ffd5b604080519081016001600160401b0381118282101715612b2657612b26612a22565b604052823581526020928301359281019290925250919050565b5f6104808284031215612b51575f5ffd5b612b59612a36565b9050612b658383612af4565b8152612b748360408401612af4565b6020820152612b868360808401612af4565b6040820152612b988360c08401612af4565b6060820152612bab836101008401612af4565b6080820152612bbe836101408401612af4565b60a0820152612bd1836101808401612af4565b60c0820152612be4836101c08401612af4565b60e0820152612bf7836102008401612af4565b610100820152612c0b836102408401612af4565b610120820152612c1f836102808401612af4565b610140820152612c33836102c08401612af4565b610160820152612c47836103008401612af4565b6101808201526103408201356101a08201526103608201356101c08201526103808201356101e08201526103a08201356102008201526103c08201356102208201526103e08201356102408201526104008201356102608201526104208201356102808201526104408201356102a0820152610460909101356102c0820152919050565b5f5f6104e08385031215612cdd575f5ffd5b612ce78484612a8f565b9150612cf68460608501612b40565b90509250929050565b803563ffffffff8116811461099d575f5ffd5b5f60208284031215612d22575f5ffd5b6124f882612cff565b5f5f60408385031215612d3c575f5ffd5b612d45836127ac565b915060208301356001600160401b03811115612d5f575f5ffd5b8301601f81018513612d6f575f5ffd5b80356001600160401b03811115612d8857612d88612a22565b612d9b601f8201601f1916602001612a5f565b818152866020838501011115612daf575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60808284031215612dde575f5ffd5b604051608081016001600160401b0381118282101715612e0057612e00612a22565b6040908152833582526020808501359083015283810135908201526060928301359281019290925250919050565b5f5f5f6105608486031215612e41575f5ffd5b612e4b8585612a8f565b9250612e5a8560608601612dce565b9150612e698560e08601612b40565b90509250925092565b5f5f60408385031215612e83575f5ffd5b612e8c836129f3565b9150612cf6602084016129f3565b5f5f5f5f6101208587031215612eae575f5ffd5b612eb88686612a8f565b9350612ec78660608701612dce565b9250612ed560e08601612cff565b9150612ee461010086016127ac565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f60408385031215612f35575f5ffd5b50508035926020909101359150565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b038181168382160190811115610a3157610a31612f44565b634e487b7160e01b5f52601260045260245ffd5b5f6001600160401b03831680612fa357612fa3612f77565b806001600160401b0384160691505092915050565b6001600160401b038281168282160390811115610a3157610a31612f44565b5f60208284031215612fe7575f5ffd5b5051919050565b81810381811115610a3157610a31612f44565b634e487b7160e01b5f52603260045260245ffd5b5f6001600160401b0383168061302d5761302d612f77565b806001600160401b0384160491505092915050565b5f8161305057613050612f44565b505f190190565b805f5b600b81101561307957815184526020938401939091019060010161305a565b50505050565b61309482825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610ae0820190508451825260208501516020830152604085015161326b604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e0830152613443610500830185613057565b61345161066083018461307f565b949350505050565b5f60208284031215613469575f5ffd5b815180151581146124f8575f5ffd5b5f6001600160401b0382166001600160401b03810361349957613499612f44565b60010192915050565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
4902    /// ```
4903    #[rustfmt::skip]
4904    #[allow(clippy::all)]
4905    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
4906        b"`\x80`@R`\x046\x10a\x02\x07W_5`\xE0\x1C\x80cqP\x18\xA6\x11a\x01\x13W\x80c\x9F\xDBT\xA7\x11a\0\x9DW\x80c\xD2M\x93=\x11a\0mW\x80c\xD2M\x93=\x14a\x06\xFFW\x80c\xE003\x01\x14a\x07.W\x80c\xF0h T\x14a\x07MW\x80c\xF2\xFD\xE3\x8B\x14a\x07lW\x80c\xF9\xE5\r\x19\x14a\x07\x8BW__\xFD[\x80c\x9F\xDBT\xA7\x14a\x06\x16W\x80c\xAD<\xB1\xCC\x14a\x06kW\x80c\xB3;\xC4\x91\x14a\x06\xA8W\x80c\xC2;\x9E\x9E\x14a\x06\xC7W__\xFD[\x80c\x85\x84\xD2?\x11a\0\xE3W\x80c\x85\x84\xD2?\x14a\x05AW\x80c\x8D\xA5\xCB[\x14a\x05}W\x80c\x90\xC1C\x90\x14a\x05\xB9W\x80c\x96\xC1\xCAa\x14a\x05\xD8W\x80c\x9B\xAA<\xC9\x14a\x05\xF7W__\xFD[\x80cqP\x18\xA6\x14a\x04\xDBW\x80cu|7\xAD\x14a\x04\xEFW\x80cvg\x18\x08\x14a\x05\x0EW\x80c\x82nA\xFC\x14a\x05\"W__\xFD[\x80c0\x0C\x89\xDD\x11a\x01\x94W\x80cBm1\x94\x11a\x01dW\x80cBm1\x94\x14a\x04`W\x80cC=\xBA\x9F\x14a\x04\x81W\x80cO\x1E\xF2\x86\x14a\x04\xA0W\x80cR\xD1\x90-\x14a\x04\xB3W\x80ci\xCCj\x04\x14a\x04\xC7W__\xFD[\x80c0\x0C\x89\xDD\x14a\x03\xC2W\x80c1=\xF7\xB1\x14a\x03\xE1W\x80c7\x8E\xC2;\x14a\x04\x18W\x80c>\xD5[{\x14a\x04:W__\xFD[\x80c\x12\x17<,\x11a\x01\xDAW\x80c\x12\x17<,\x14a\x02\xF6W\x80c\x16z\xC6\x18\x14a\x03\x17W\x80c c\xD4\xF7\x14a\x036W\x80c%)t'\x14a\x03UW\x80c/y\x88\x9D\x14a\x03\x84W__\xFD[\x80c\x01?\xA5\xFC\x14a\x02\x0BW\x80c\x02\xB5\x92\xF3\x14a\x02,W\x80c\x06%\xE1\x9B\x14a\x02\x89W\x80c\r\x8En,\x14a\x02\xCBW[__\xFD[4\x80\x15a\x02\x16W__\xFD[Pa\x02*a\x02%6`\x04a'\xC2V[a\x07\x9FV[\0[4\x80\x15a\x027W__\xFD[Pa\x02Ka\x02F6`\x04a'\xDBV[a\x08RV[`@Qa\x02\x80\x94\x93\x92\x91\x90`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x84\x01R\x92\x16`@\x82\x01R``\x81\x01\x91\x90\x91R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x02\x94W__\xFD[P`\x0BT`\x0CT`\rT`\x0ETa\x02\xAB\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x02\x80V[4\x80\x15a\x02\xD6W__\xFD[P`@\x80Q`\x02\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x02\x80V[4\x80\x15a\x03\x01W__\xFD[Pa\x03\na\x08\x9BV[`@Qa\x02\x80\x91\x90a'\xF2V[4\x80\x15a\x03\"W__\xFD[Pa\x02*a\x0316`\x04a*\tV[a\x08\xB0V[4\x80\x15a\x03AW__\xFD[Pa\x02*a\x03P6`\x04a,\xCBV[a\t'V[4\x80\x15a\x03`W__\xFD[Pa\x03ta\x03o6`\x04a*\tV[a\t@V[`@Q\x90\x15\x15\x81R` \x01a\x02\x80V[4\x80\x15a\x03\x8FW__\xFD[P`\x08Ta\x03\xAA\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x80V[4\x80\x15a\x03\xCDW__\xFD[Pa\x03ta\x03\xDC6`\x04a*\tV[a\t\xA2V[4\x80\x15a\x03\xECW__\xFD[P`\x08Ta\x04\0\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x80V[4\x80\x15a\x04#W__\xFD[Pa\x04,a\n7V[`@Q\x90\x81R` \x01a\x02\x80V[4\x80\x15a\x04EW__\xFD[P`\nTa\x03\xAA\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x04kW__\xFD[P_T`\x01T`\x02T`\x03Ta\x02\xAB\x93\x92\x91\x90\x84V[4\x80\x15a\x04\x8CW__\xFD[Pa\x02*a\x04\x9B6`\x04a-\x12V[a\n\x99V[a\x02*a\x04\xAE6`\x04a-+V[a\n\xADV[4\x80\x15a\x04\xBEW__\xFD[Pa\x04,a\n\xCCV[4\x80\x15a\x04\xD2W__\xFD[Pa\x02*a\n\xE7V[4\x80\x15a\x04\xE6W__\xFD[Pa\x02*a\x0BUV[4\x80\x15a\x04\xFAW__\xFD[Pa\x02*a\x05\t6`\x04a..V[a\x0BfV[4\x80\x15a\x05\x19W__\xFD[Pa\x03\xAAa\x0E\xA0V[4\x80\x15a\x05-W__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15a\x03tV[4\x80\x15a\x05LW__\xFD[Pa\x05`a\x05[6`\x04a'\xDBV[a\x0E\xC5V[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x02\x80V[4\x80\x15a\x05\x88W__\xFD[P\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16a\x04\0V[4\x80\x15a\x05\xC4W__\xFD[Pa\x03\xAAa\x05\xD36`\x04a.rV[a\x0F\xF0V[4\x80\x15a\x05\xE3W__\xFD[Pa\x02*a\x05\xF26`\x04a-\x12V[a\x10_V[4\x80\x15a\x06\x02W__\xFD[Pa\x02*a\x06\x116`\x04a.\x9AV[a\x10\xE8V[4\x80\x15a\x06!W__\xFD[P`\x06T`\x07Ta\x06E\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[`@\x80Q`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x93\x90\x92\x16` \x84\x01R\x90\x82\x01R``\x01a\x02\x80V[4\x80\x15a\x06vW__\xFD[Pa\x06\x9B`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x02\x80\x91\x90a.\xEFV[4\x80\x15a\x06\xB3W__\xFD[Pa\x02*a\x06\xC26`\x04a.rV[a\x12\nV[4\x80\x15a\x06\xD2W__\xFD[P`\x08Ta\x06\xEA\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x02\x80V[4\x80\x15a\x07\nW__\xFD[P`\x04T`\x05Ta\x06E\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x079W__\xFD[Pa\x03ta\x07H6`\x04a/$V[a\x13nV[4\x80\x15a\x07XW__\xFD[P`\nTa\x03\xAA\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x07wW__\xFD[Pa\x02*a\x07\x866`\x04a'\xC2V[a\x14\xCDV[4\x80\x15a\x07\x96W__\xFD[P`\tTa\x04,V[a\x07\xA7a\x15\x0CV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x07\xCEW`@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\x07\xFDW`@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\x08aW_\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\x08\xA3a%(V[a\x08\xABa\x15gV[\x90P\x90V[a\x08\xB8a\x15\x0CV[`\n\x80To\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\x19\x81\x16`\x01`@\x1B`\x01`\x01`@\x1B\x03\x85\x81\x16\x82\x02\x92\x83\x17\x94\x85\x90Ua\x08\xFE\x94\x91\x90\x91\x04\x81\x16\x92\x81\x16\x91\x16\x17a\x0F\xF0V[`\n`\x10a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UPPV[`@QcN@\\\x8D`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\t`WP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\tlWP_\x91\x90PV[`\nT`\x01`\x01`@\x1B\x03\x16a\t\x83\x83`\x05a/XV[a\t\x8D\x91\x90a/\x8BV[`\x01`\x01`@\x1B\x03\x16\x15\x92\x91PPV[\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\t\xC2WP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\t\xCEWP_\x91\x90PV[`\nTa\t\xE4\x90`\x01`\x01`@\x1B\x03\x16\x83a/\x8BV[`\x01`\x01`@\x1B\x03\x16\x15\x80a\n1WP`\nTa\n\x0C\x90`\x05\x90`\x01`\x01`@\x1B\x03\x16a/\xB8V[`\nT`\x01`\x01`@\x1B\x03\x91\x82\x16\x91a\n&\x91\x16\x84a/\x8BV[`\x01`\x01`@\x1B\x03\x16\x11[\x92\x91PPV[_`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\nuW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xAB\x91\x90a/\xD7V[a\n\xA1a\x15\x0CV[a\n\xAA\x81a\x10_V[PV[a\n\xB5a\x1B\x92V[a\n\xBE\x82a\x1C6V[a\n\xC8\x82\x82a\x1CwV[PPV[_a\n\xD5a\x1D8V[P_Q` a4\xB9_9_Q\x90_R\x90V[a\n\xEFa\x15\x0CV[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x0B:W`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U`@Q\x7F\x9A_W\xDE\x85m\xD6h\xC5M\xD9^\\U\xDF\x93C!q\xCB\xCAI\xA8wmV \xEAY\xC0$P\x90_\x90\xA1V[`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[V[a\x0B]a\x15\x0CV[a\x0BS_a\x1D\x81V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x0B\x8BWP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x0B\xA9W`@Qc\x01GL\x8F`\xE7\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T\x83Q`\x01`\x01`@\x1B\x03\x91\x82\x16\x91\x16\x11\x15\x80a\x0B\xE2WP`\x06T` \x84\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x0C\0W`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0C\r\x83`@\x01Qa\x1D\xF1V[a\x0C\x1A\x82` \x01Qa\x1D\xF1V[a\x0C'\x82`@\x01Qa\x1D\xF1V[a\x0C4\x82``\x01Qa\x1D\xF1V[_a\x0C=a\x0E\xA0V[` \x85\x01Q`\nT\x91\x92P_\x91a\x0C]\x91\x90`\x01`\x01`@\x1B\x03\x16a\x0F\xF0V[`\nT\x90\x91P`\x01`\x01`@\x1B\x03`\x01`\x80\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x10a\x0C\xA8Wa\x0C\x8A\x85` \x01Qa\t\xA2V[\x15a\x0C\xA8W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\nT`\x01`\x01`@\x1B\x03`\x01`\x80\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15a\r[W`\x02a\x0C\xD2\x83\x83a/\xB8V[`\x01`\x01`@\x1B\x03\x16\x10a\x0C\xF9W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\r\x04\x82`\x01a/XV[`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14\x80\x15a\r=WP`\x06Ta\r;\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16a\t@V[\x15[\x15a\r[W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\rf\x85\x85\x85a\x1EaV[\x84Q`\x06\x80T` \x88\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x81\x16\x93\x90\x93\x17\x17\x90U`@\x86\x01Q`\x07U`\nT`\x01`\x80\x1B\x90\x04\x81\x16\x90\x82\x16\x10\x80\x15\x90a\r\xC5WPa\r\xC5\x85` \x01Qa\t@V[\x15a\x0E/W\x83Q`\x0BU` \x84\x01Q`\x0CU`@\x84\x01Q`\rU``\x84\x01Q`\x0EU\x7F1\xEA\xBD\x90\x99\xFD\xB2]\xAC\xDD\xD2\x06\xAB\xFF\x871\x1EU4A\xFC\x9D\x0F\xCD\xEF \x10b\xD7\xE7\x07\x1Ba\x0E\x13\x82`\x01a/XV[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1[a\x0EAa\x0E:a\n7V[B\x87a\x1F\xD8V[\x84` \x01Q`\x01`\x01`@\x1B\x03\x16\x85_\x01Q`\x01`\x01`@\x1B\x03\x16\x7F\xA0Jw9$PZA\x85d67%\xF5h2\xF5w.k\x8D\r\xBDn\xFC\xE7$\xDF\xE8\x03\xDA\xE6\x87`@\x01Q`@Qa\x0E\x91\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPPV[`\x06T`\nT_\x91a\x08\xAB\x91`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16a\x0F\xF0V[`\t\x80T_\x91\x82\x91\x90a\x0E\xD9`\x01\x83a/\xEEV[\x81T\x81\x10a\x0E\xE9Wa\x0E\xE9a0\x01V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\x0F(W`@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\x0F\xE9W\x84`\t\x82\x81T\x81\x10a\x0FXWa\x0FXa0\x01V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\x0F\xE1W`\t\x81\x81T\x81\x10a\x0F\x91Wa\x0F\x91a0\x01V[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\x0F\xB4Wa\x0F\xB4a0\x01V[\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\x0F<V[PP\x91P\x91V[_\x81`\x01`\x01`@\x1B\x03\x16_\x03a\x10\x08WP_a\n1V[\x82`\x01`\x01`@\x1B\x03\x16_\x03a\x10 WP`\x01a\n1V[a\x10*\x82\x84a/\x8BV[`\x01`\x01`@\x1B\x03\x16_\x03a\x10JWa\x10C\x82\x84a0\x15V[\x90Pa\n1V[a\x10T\x82\x84a0\x15V[a\x10C\x90`\x01a/XV[a\x10ga\x15\x0CV[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\x10\x86WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\x10\xA4WP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\x10\xC2W`@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\x11,WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x11GWP0;\x15[\x90P\x81\x15\x80\x15a\x11UWP\x80\x15[\x15a\x11sW`@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\x11\x9DW\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x11\xA6\x86a!\xC1V[a\x11\xAEa!\xD2V[a\x11\xB9\x89\x89\x89a!\xDAV[\x83\x15a\x11\xFFW\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80T`\x02\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x12SWP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x12qW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Th\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x90\x91\x17`\x01`@\x1B\x17\x82U`\x05\x90\x85\x16\x11a\x12\xB9W`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_T`\x0BU`\x01T`\x0CU`\x02T`\rU`\x03T`\x0EU`\n\x80T`\x01`\x01`@\x1B\x03\x85\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x90\x87\x16\x17\x17\x90Ua\x13\x02\x83\x85a\x0F\xF0V[`\n\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x16`\x01`\x80\x1B`\x01`\x01`@\x1B\x03\x93\x84\x16\x02\x17\x90U\x81T`\xFF`@\x1B\x19\x16\x82U`@Q\x90\x83\x16\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPPV[`\tT_\x90a\x13{a\n7V[\x84\x11\x80a\x13\x86WP\x80\x15[\x80a\x13\xD0WP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x13\xB4Wa\x13\xB4a0\x01V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x13\xEEW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x13\xFC`\x01\x85a/\xEEV[\x90P[\x81a\x14\x98W`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\x14\x98W\x86`\t\x82\x81T\x81\x10a\x141Wa\x141a0\x01V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\x14\x86W`\x01\x91P`\t\x81\x81T\x81\x10a\x14fWa\x14fa0\x01V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\x14\x98V[\x80a\x14\x90\x81a0BV[\x91PPa\x13\xFFV[\x81a\x14\xB6W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\x14\xC1\x84\x89a/\xEEV[\x11\x97\x96PPPPPPPV[a\x14\xD5a\x15\x0CV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x15\x03W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\n\xAA\x81a\x1D\x81V[3a\x15>\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\x0BSW`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x14\xFAV[a\x15oa%(V[b\x10\0\0\x81R`\x0B` \x82\x01R\x7F&\x86~\xE5\x8A\xAF\x86\x0F\xC9\xE0\xE3\xA7\x86f\xFF\xC5\x1F;\xA1\xAD\x8A\xE0\x01\xC1\x96\x83\x0CU\xB5\xAF\x0B\x8C`@\x82\x01QR\x7F\t\x120\xAD\xB7S\xF8(\x15\x15\x12w\x06\x0C\xC5kTk\xB2\xE9P\xA0\xDE\x19\xED\x06\x1E\xC6\x8C\x07\x1A\x90` `@\x83\x01Q\x01R\x7F\x02\xA5\t\xA0m\x8CV\xF8? F\x88\xFFnB\xEA\xC6\xE3\xCB\xDD\x06;\tq\xA3\xAF\x95>\x81\xBA\xDB\xB6``\x82\x01QR\x7F\x06\xF4>\xD2\xB9\xCE\xCE5\xD1 \x1A\xBC\x13\xFF\xDA\xEA5V\x0C\xF0\xF1Dbw\x13\x8C\xE8\x12\xB9\xAD\x9F9` ``\x83\x01Q\x01R\x7F\x1AX\x8C\x99\xAD\x88\xF7\x89\xC8w\"\xB0a\xBBU5\xDA\xA0\xAB\xCC\x1D\xC6\xD1v\xD7\xFE\xA5\x1E]\x80\xB9&`\x80\x82\x01QR\x7F b\xB9\x95\xE6\x1Aj\xB8\xAA\xB6\xCDnu \xB8y\xD8O\x96Z\xB1\xF0\x94\xC1\x04\xF0\xC1!;(\x03\x8B` `\x80\x83\x01Q\x01R\x7F!\xA2\xFDvj\x0C\xEB\xEC\xFD\xBF\xDF\xE5a9\xA1\xBB\xD9\xAE\xC1^.5\xBE\x8E\xF0\x194\xA0\xECC\x86\x85`\xA0\x82\x01QR\x7F \xFEP\n\xC7\xD1\xAAx \xDB\x8Co\x7F\x9DP\x9E;.\x88s\x1E:\x12\xDDe\xF0oC\xCA\x93\r\xA0` `\xA0\x83\x01Q\x01R\x7F\n\xB5=\x12\x85\xC7\xF4\x81\x9B?\xF6\xE1\xDD\xAD\xA6\xBF%\x15\xD3K\xBA\xF6\x11\x86\xC6\xA0K\xE4}\xFDe\xA3`\xC0\x82\x01QR\x7F\x0B\x80\xA9\x87\x80\x82\xCD\xFD\xD9\xFC\xC1k\xB3?\xA4$\xC0\xADf\xB8\x19I\xBFd!S\xD3\xC7\xAD\x08/\"` `\xC0\x83\x01Q\x01R\x7F\x1B\x90\x0F\x8E_\x8E\x80d\xA5\x88\x8A\x1B\xD7\x96\xB5J&R\xFC\x02\x03O\xE4\xB6\xE6\xFC\x8DfP\xF7E;`\xE0\x82\x01QR~\xCC\xA2X\xA8\x83,d\xD1\xF8\xE1r\x1Ax\xFC%\xB1=)\xAD\xBB\x81\xE3Zy\xFC/I\xF8\x90'\x86` `\xE0\x83\x01Q\x01R\x7F\r\x1D3H\xD6B\xE6\xF2\xE9s\x9Ds]\x8Cr6v\xDB\xAE\xFD\xCB\xB4\xE9fA\xDE\xFA5=&\xEB\xB3a\x01\0\x82\x01QR\x7F\x14\xFE\x9Dj3Q\x04\xE7I\x1C\xA6\xD5\x08a\x13\xE6\xB0\xF5)F\x96\rrfdf{\xD5\x859\xD4\x1E` a\x01\0\x83\x01Q\x01R\x7F\x1D\xA9CdD\x0CN?\xB8\xAF-6<\xDE\xFAN\xDD\xA47W\x9E\x1B\x05j\x16\xA5\xE9\xA1\x1D\xFF\xA2\xABa\x01 \x82\x01QR\x7F\n\x07{\xD3\x07\xED1\"-\xB5\\\xB0\x12\x8B\xAF\xCE^\"U{W\xF5\xAC\x91SY\xC5\x02\x96\xCB\\w` a\x01 \x83\x01Q\x01R\x7F(\xFF\x80\xB13\xD9\x89#\\q)\xDE\xA5Di\xB7\x80\xACG\x17D\x92\x90\x06~|\x9A}[\xE7\xDB\xD5a\x01@\x82\x01QR\x7F\x1C\x0F\xC2.\xEF#\xB5\n-\xDCU?\x9F\xC1\xB6\x1F\xD8\xC5zX\xCA2\x1A\x82\x9C~\xC2U\xF7W\xB3\xA6` a\x01@\x83\x01Q\x01R~<N!\xE5\xDF\xBAb\xA5\xB1p/\xB0\xEF#K\xFE\x95\xA7w\x01\xA4V\x88#PRm\x14\x02C\xF5a\x01`\x82\x01QR\x7F\x06\x01-\xB8(v\xBA3\xE6\xE8\xF8\nQ\x016b\xE5lJ\xBC\x86\xA7\xD8\\'.\x19\xA6\xD7\xF5}\x0B` a\x01`\x83\x01Q\x01R\x7F\x16\xD5$}\xBD\xEA\xE1\xDFp\t>^\xE7rr\x95\x96a\xE0\xFB\xAB\xDAC\x17w\xFAr\x9F[S/Da\x01\x80\x82\x01QR~\x8D\x9E\xE0\x0Fy\x9C\xF0\x06\x08\xB0\x82\xD0;\x9D\xE5\xA4+\x81&\xC3_\xBF\xBD\x1E`!\x08\xDF\x10\xE0\xE3` a\x01\x80\x83\x01Q\x01R\x7F/Rli\x81d?\xF6\xF6\xE9\xD2\xB5\xA9!\xE0l\xF9_'F)\xB5\xA1E\xBDU+\x7F\xDAj\x87\0a\x01\xA0\x82\x01QR\x7F/\xE7\x10\x8F\xD4\xE2B1\xF3\xDA\xDBn\t\x07.\x10o\xCA\x06\x94\xFE9\xDF\xF9eW\xA8\x82!\xA8\x9AP` a\x01\xA0\x83\x01Q\x01R\x7F&\xA3V\x85\x98\xA6\x98\x1Ec%\xF4\x81g6\xE3\x81\x08{[\x0EK'\xEF6M\x8A\xE1\xE2\x9F\xE9\xDF\x99a\x01\xC0\x82\x01QR\x7F\x1D\xB8\x1C\xDF\x82\xA9\xEC\x99\xF3\xC9qm\xF2-81~k\xB8O\xC5}/\x0E{+\xC8\xA0V\x9F|\xC4` a\x01\xC0\x83\x01Q\x01R~\x99\x88\x80\x88\xE1\x1D\xE6\xED\x08l\x99\xB9\xBB\xA9\x86\xD9\x08\xDF[\x0CP\x07h\r\x97V}HW\x19\x94a\x01\xE0\x82\x01QR\x7F\x1F\x91Wn\xAD\xFF\xFF\x93+nT\xBA\xB0\"\xF9?o\xEC>[vt\xD0\0k\xC5\xF2\"5'\xA3H` a\x01\xE0\x83\x01Q\x01R~h\xB3\xC1\x17\xEE~\x84\xD6\xB6p\xB6\xAF \x19wY\xEC\x80\xD3O<YC(f01\xE9\xCD~\x02a\x02\0\x82\x01QR\x7F\x1C82\xE2Hw4f\x80\xE7\x04{\xAE,\xFC\xD5\x1F\xAF\xE3\xE7\xCA\xF1\x99\xE9\xDF\xC8\xE8\xF1\x0C+iC` a\x02\0\x83\x01Q\x01R\x7F\x16L\xDD\x9A\xD5\xD4\xE9n\x10\x90s\xE8\xE75\xCDJ\xC6J\xBAm\xDA\xA2D\xDAg\x016\x9C\x8C\xBA]\xAFa\x02 \x82\x01QR\x7F\x16\xC4\x1Ed\x7F\x1A\xB0\xD4\\\x89\x15D)\x9EN\xF9\xC0\x04\xD8\xBC\n;\xF0\x96\xDC8\xCE\x8E\xD9\x0C\rg` a\x02 \x83\x01Q\x01R\x7F\x13K\xA7\xA9V{\xA2\x0E\x1F5\x95\x9E\xE8\xC2\xCDh\x8D:\x96+\xB1y~\x8A\xB8\xE5\x11v\x8D\xE0\xCE\x83a\x02@\x82\x01QR\x7F\x02\xE4\xD2\x86\xC9C_{\xD9L\x1A,x\xB9\x99f\xD0o\xAC\xA1\xAEE\xDEx\x14\x99P\xA4\xFE\xFC\xD6\xE7` a\x02@\x83\x01Q\x01R\x7F\x03\x9A\x0B-\x92\x0F)\xE3\\\xB2\xA9\xE1\xECl\xC2*\xC1\xD4\x82\xAFE\xE4s\x99rJ\x07E\xD5B\xE89a\x02`\x82\x01QR\x7F\x15\xAC&X\xBF\xDD\"'\xAE\xBF\x8E \x93Y5\xA6H\x81\x9E\x1D\xCE\xA8\x07\xDA\x1C\x83\x8A\xBF\xA7\x89lc` a\x02`\x83\x01Q\x01R\x7F\xB0\x83\x88\x93\xEC\x1F#~\x8B\x072;\x07DY\x9FN\x97\xB5\x98\xB3\xB5\x89\xBC\xC2\xBC7\xB8\xD5\xC4\x18\x01a\x02\x80\x82\x01R\x7F\xC1\x83\x93\xC0\xFA0\xFEN\x8B\x03\x8E5z\xD8Q\xEA\xE8\xDE\x91\x07XN\xFF\xE7\xC7\xF1\xF6Q\xB2\x01\x0E&a\x02\xA0\x82\x01R\x90V[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14\x80a\x1C\x18WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16a\x1C\x0C_Q` a4\xB9_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x0BSW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1C>a\x15\x0CV[`@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\x08GV[\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\x1C\xD1WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x1C\xCE\x91\x81\x01\x90a/\xD7V[`\x01[a\x1C\xF9W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x14\xFAV[_Q` a4\xB9_9_Q\x90_R\x81\x14a\x1D)W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x14\xFAV[a\x1D3\x83\x83a#\x06V[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\x0BSW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x82\x17\x84U`@Q\x92\x16\x91\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90_\x90\xA3PPPV[\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81\x10\x80a\n\xC8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1B`$\x82\x01R\x7FBn254: invalid scalar field\0\0\0\0\0`D\x82\x01R`d\x01a\x14\xFAV[_a\x1Eja\x08\x9BV[\x90Pa\x1Eta'\x8DV[\x84Q`\x01`\x01`@\x1B\x03\x90\x81\x16\x82R` \x80\x87\x01\x80Q\x83\x16\x91\x84\x01\x91\x90\x91R`@\x80\x88\x01Q\x90\x84\x01R`\x0CT``\x84\x01R`\rT`\x80\x84\x01R`\x0ET`\xA0\x84\x01R`\x0BT`\xC0\x84\x01R`\nT\x90Q`\x01`@\x1B\x90\x91\x04\x82\x16\x91\x16\x10\x80\x15\x90a\x1E\xE4WPa\x1E\xE4\x85` \x01Qa\t@V[\x15a\x1F\x16W` \x84\x01Q`\xE0\x82\x01R`@\x84\x01Qa\x01\0\x82\x01R``\x84\x01Qa\x01 \x82\x01R\x83Qa\x01@\x82\x01Ra\x1F:V[`\x0CT`\xE0\x82\x01R`\rTa\x01\0\x82\x01R`\x0ETa\x01 \x82\x01R`\x0BTa\x01@\x82\x01R[`@Qc\xFC\x86`\xC7`\xE0\x1B\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90c\xFC\x86`\xC7\x90a\x1Fu\x90\x85\x90\x85\x90\x88\x90`\x04\x01a29V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\x1F\x90W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1F\xB4\x91\x90a4YV[a\x1F\xD1W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPV[`\tT\x15\x80\x15\x90a MWP`\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 \x18Wa \x18a0\x01V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta B\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a/\xB8V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a \xE0W`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a zWa za0\x01V[_\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 \xBA\x83a4xV[\x91\x90a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UPP[`@\x80Q`\x80\x81\x01\x82R`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x80\x85\x01\x91\x82R\x83\x01Q\x85\x16\x84\x83\x01\x90\x81R\x92\x90\x91\x01Q``\x84\x01\x90\x81R`\t\x80T`\x01\x81\x01\x82U_\x91\x90\x91R\x93Q`\x02\x90\x94\x02\x7Fn\x15@\x17\x1Bl\x0C\x96\x0Bq\xA7\x02\r\x9F`\x07\x7Fj\xF91\xA8\xBB\xF5\x90\xDA\x02#\xDA\xCFu\xC7\xAF\x81\x01\x80T\x93Q\x94Q\x87\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x95\x88\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x95\x16\x96\x90\x97\x16\x95\x90\x95\x17\x92\x90\x92\x17\x92\x90\x92\x16\x93\x90\x93\x17\x90\x91UQ\x7Fn\x15@\x17\x1Bl\x0C\x96\x0Bq\xA7\x02\r\x9F`\x07\x7Fj\xF91\xA8\xBB\xF5\x90\xDA\x02#\xDA\xCFu\xC7\xB0\x90\x91\x01UV[a!\xC9a#[V[a\n\xAA\x81a#\xA4V[a\x0BSa#[V[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a!\xFEWP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\"\x0BWP` \x82\x01Q\x15[\x80a\"\x18WP`@\x82\x01Q\x15[\x80a\"%WP``\x82\x01Q\x15[\x80a\"/WP\x81Q\x15[\x80a\"AWPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a\"UWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a\"sW`@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[a#\x0F\x82a#\xACV[`@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#SWa\x1D3\x82\x82a$\x0FV[a\n\xC8a$\x81V[\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\x0BSW`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x14\xD5a#[V[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a#\xE1W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x14\xFAV[_Q` a4\xB9_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$+\x91\x90a4\xA2V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a$cW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a$hV[``\x91P[P\x91P\x91Pa$x\x85\x83\x83a$\xA0V[\x95\x94PPPPPV[4\x15a\x0BSW`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a$\xB5Wa$\xB0\x82a$\xFFV[a$\xF8V[\x81Q\x15\x80\x15a$\xCCWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a$\xF5W`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x14\xFAV[P\x80[\x93\x92PPPV[\x80Q\x15a%\x0FW\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%[`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%{`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\x9B`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\xBB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\xDB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\xFB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\x1B`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&;`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&[`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&{`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\x9B`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xBB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xDB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xFB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\x1B`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a';`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'[`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'{`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80a\x01`\x01`@R\x80`\x0B\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\t\x9DW__\xFD[_` \x82\x84\x03\x12\x15a'\xD2W__\xFD[a$\xF8\x82a'\xACV[_` \x82\x84\x03\x12\x15a'\xEBW__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa($`@\x84\x01\x82\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[P``\x83\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP`\x80\x83\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\xA0\x83\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xC0\x83\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xE0\x83\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RPa\x01\0\x83\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01 \x83\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01@\x83\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01`\x83\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01\x80\x83\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\xA0\x83\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xC0\x83\x01Q\x80Qa\x03@\x84\x01R` \x81\x01Qa\x03`\x84\x01RPa\x01\xE0\x83\x01Q\x80Qa\x03\x80\x84\x01R` \x81\x01Qa\x03\xA0\x84\x01RPa\x02\0\x83\x01Q\x80Qa\x03\xC0\x84\x01R` \x81\x01Qa\x03\xE0\x84\x01RPa\x02 \x83\x01Q\x80Qa\x04\0\x84\x01R` \x81\x01Qa\x04 \x84\x01RPa\x02@\x83\x01Q\x80Qa\x04@\x84\x01R` \x81\x01Qa\x04`\x84\x01RPa\x02`\x83\x01Q\x80Qa\x04\x80\x84\x01R` \x81\x01Qa\x04\xA0\x84\x01RPa\x02\x80\x83\x01Qa\x04\xC0\x83\x01Ra\x02\xA0\x90\x92\x01Qa\x04\xE0\x90\x91\x01R\x90V[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\t\x9DW__\xFD[_` \x82\x84\x03\x12\x15a*\x19W__\xFD[a$\xF8\x82a)\xF3V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a*YWa*Ya*\"V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a*\x87Wa*\x87a*\"V[`@R\x91\x90PV[_``\x82\x84\x03\x12\x15a*\x9FW__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a*\xC1Wa*\xC1a*\"V[`@R\x90P\x80a*\xD0\x83a)\xF3V[\x81Ra*\xDE` \x84\x01a)\xF3V[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a+\x04W__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a+&Wa+&a*\"V[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_a\x04\x80\x82\x84\x03\x12\x15a+QW__\xFD[a+Ya*6V[\x90Pa+e\x83\x83a*\xF4V[\x81Ra+t\x83`@\x84\x01a*\xF4V[` \x82\x01Ra+\x86\x83`\x80\x84\x01a*\xF4V[`@\x82\x01Ra+\x98\x83`\xC0\x84\x01a*\xF4V[``\x82\x01Ra+\xAB\x83a\x01\0\x84\x01a*\xF4V[`\x80\x82\x01Ra+\xBE\x83a\x01@\x84\x01a*\xF4V[`\xA0\x82\x01Ra+\xD1\x83a\x01\x80\x84\x01a*\xF4V[`\xC0\x82\x01Ra+\xE4\x83a\x01\xC0\x84\x01a*\xF4V[`\xE0\x82\x01Ra+\xF7\x83a\x02\0\x84\x01a*\xF4V[a\x01\0\x82\x01Ra,\x0B\x83a\x02@\x84\x01a*\xF4V[a\x01 \x82\x01Ra,\x1F\x83a\x02\x80\x84\x01a*\xF4V[a\x01@\x82\x01Ra,3\x83a\x02\xC0\x84\x01a*\xF4V[a\x01`\x82\x01Ra,G\x83a\x03\0\x84\x01a*\xF4V[a\x01\x80\x82\x01Ra\x03@\x82\x015a\x01\xA0\x82\x01Ra\x03`\x82\x015a\x01\xC0\x82\x01Ra\x03\x80\x82\x015a\x01\xE0\x82\x01Ra\x03\xA0\x82\x015a\x02\0\x82\x01Ra\x03\xC0\x82\x015a\x02 \x82\x01Ra\x03\xE0\x82\x015a\x02@\x82\x01Ra\x04\0\x82\x015a\x02`\x82\x01Ra\x04 \x82\x015a\x02\x80\x82\x01Ra\x04@\x82\x015a\x02\xA0\x82\x01Ra\x04`\x90\x91\x015a\x02\xC0\x82\x01R\x91\x90PV[__a\x04\xE0\x83\x85\x03\x12\x15a,\xDDW__\xFD[a,\xE7\x84\x84a*\x8FV[\x91Pa,\xF6\x84``\x85\x01a+@V[\x90P\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\t\x9DW__\xFD[_` \x82\x84\x03\x12\x15a-\"W__\xFD[a$\xF8\x82a,\xFFV[__`@\x83\x85\x03\x12\x15a-<W__\xFD[a-E\x83a'\xACV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-_W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a-oW__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a-\x88Wa-\x88a*\"V[a-\x9B`\x1F\x82\x01`\x1F\x19\x16` \x01a*_V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a-\xAFW__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_`\x80\x82\x84\x03\x12\x15a-\xDEW__\xFD[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a.\0Wa.\0a*\"V[`@\x90\x81R\x835\x82R` \x80\x85\x015\x90\x83\x01R\x83\x81\x015\x90\x82\x01R``\x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[___a\x05`\x84\x86\x03\x12\x15a.AW__\xFD[a.K\x85\x85a*\x8FV[\x92Pa.Z\x85``\x86\x01a-\xCEV[\x91Pa.i\x85`\xE0\x86\x01a+@V[\x90P\x92P\x92P\x92V[__`@\x83\x85\x03\x12\x15a.\x83W__\xFD[a.\x8C\x83a)\xF3V[\x91Pa,\xF6` \x84\x01a)\xF3V[____a\x01 \x85\x87\x03\x12\x15a.\xAEW__\xFD[a.\xB8\x86\x86a*\x8FV[\x93Pa.\xC7\x86``\x87\x01a-\xCEV[\x92Pa.\xD5`\xE0\x86\x01a,\xFFV[\x91Pa.\xE4a\x01\0\x86\x01a'\xACV[\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/5W__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[`\x01`\x01`@\x1B\x03\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\n1Wa\n1a/DV[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a/\xA3Wa/\xA3a/wV[\x80`\x01`\x01`@\x1B\x03\x84\x16\x06\x91PP\x92\x91PPV[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\n1Wa\n1a/DV[_` \x82\x84\x03\x12\x15a/\xE7W__\xFD[PQ\x91\x90PV[\x81\x81\x03\x81\x81\x11\x15a\n1Wa\n1a/DV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a0-Wa0-a/wV[\x80`\x01`\x01`@\x1B\x03\x84\x16\x04\x91PP\x92\x91PPV[_\x81a0PWa0Pa/DV[P_\x19\x01\x90V[\x80_[`\x0B\x81\x10\x15a0yW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a0ZV[PPPPV[a0\x94\x82\x82Q\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[` \x81\x81\x01Q\x80Q`@\x85\x01R\x90\x81\x01Q``\x84\x01RP`@\x81\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP``\x81\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\x80\x81\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xA0\x81\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xC0\x81\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RP`\xE0\x81\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01\0\x81\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01 \x81\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01@\x81\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01`\x81\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\x80\x81\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xA0\x81\x01Qa\x03@\x83\x01Ra\x01\xC0\x81\x01Qa\x03`\x83\x01Ra\x01\xE0\x81\x01Qa\x03\x80\x83\x01Ra\x02\0\x81\x01Qa\x03\xA0\x83\x01Ra\x02 \x81\x01Qa\x03\xC0\x83\x01Ra\x02@\x81\x01Qa\x03\xE0\x83\x01Ra\x02`\x81\x01Qa\x04\0\x83\x01Ra\x02\x80\x81\x01Qa\x04 \x83\x01Ra\x02\xA0\x81\x01Qa\x04@\x83\x01Ra\x02\xC0\x01Qa\x04`\x90\x91\x01RV[_a\n\xE0\x82\x01\x90P\x84Q\x82R` \x85\x01Q` \x83\x01R`@\x85\x01Qa2k`@\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\x01Ra4Ca\x05\0\x83\x01\x85a0WV[a4Qa\x06`\x83\x01\x84a0\x7FV[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a4iW__\xFD[\x81Q\x80\x15\x15\x81\x14a$\xF8W__\xFD[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a4\x99Wa4\x99a/DV[`\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",
4907    );
4908    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4909    /**Custom error with signature `AddressEmptyCode(address)` and selector `0x9996b315`.
4910```solidity
4911error AddressEmptyCode(address target);
4912```*/
4913    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4914    #[derive(Clone)]
4915    pub struct AddressEmptyCode {
4916        #[allow(missing_docs)]
4917        pub target: alloy::sol_types::private::Address,
4918    }
4919    #[allow(
4920        non_camel_case_types,
4921        non_snake_case,
4922        clippy::pub_underscore_fields,
4923        clippy::style
4924    )]
4925    const _: () = {
4926        use alloy::sol_types as alloy_sol_types;
4927        #[doc(hidden)]
4928        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4929        #[doc(hidden)]
4930        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4931        #[cfg(test)]
4932        #[allow(dead_code, unreachable_patterns)]
4933        fn _type_assertion(
4934            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4935        ) {
4936            match _t {
4937                alloy_sol_types::private::AssertTypeEq::<
4938                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4939                >(_) => {}
4940            }
4941        }
4942        #[automatically_derived]
4943        #[doc(hidden)]
4944        impl ::core::convert::From<AddressEmptyCode> for UnderlyingRustTuple<'_> {
4945            fn from(value: AddressEmptyCode) -> Self {
4946                (value.target,)
4947            }
4948        }
4949        #[automatically_derived]
4950        #[doc(hidden)]
4951        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AddressEmptyCode {
4952            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4953                Self { target: tuple.0 }
4954            }
4955        }
4956        #[automatically_derived]
4957        impl alloy_sol_types::SolError for AddressEmptyCode {
4958            type Parameters<'a> = UnderlyingSolTuple<'a>;
4959            type Token<'a> = <Self::Parameters<
4960                'a,
4961            > as alloy_sol_types::SolType>::Token<'a>;
4962            const SIGNATURE: &'static str = "AddressEmptyCode(address)";
4963            const SELECTOR: [u8; 4] = [153u8, 150u8, 179u8, 21u8];
4964            #[inline]
4965            fn new<'a>(
4966                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4967            ) -> Self {
4968                tuple.into()
4969            }
4970            #[inline]
4971            fn tokenize(&self) -> Self::Token<'_> {
4972                (
4973                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4974                        &self.target,
4975                    ),
4976                )
4977            }
4978        }
4979    };
4980    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4981    /**Custom error with signature `DeprecatedApi()` and selector `0x4e405c8d`.
4982```solidity
4983error DeprecatedApi();
4984```*/
4985    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4986    #[derive(Clone)]
4987    pub struct DeprecatedApi {}
4988    #[allow(
4989        non_camel_case_types,
4990        non_snake_case,
4991        clippy::pub_underscore_fields,
4992        clippy::style
4993    )]
4994    const _: () = {
4995        use alloy::sol_types as alloy_sol_types;
4996        #[doc(hidden)]
4997        type UnderlyingSolTuple<'a> = ();
4998        #[doc(hidden)]
4999        type UnderlyingRustTuple<'a> = ();
5000        #[cfg(test)]
5001        #[allow(dead_code, unreachable_patterns)]
5002        fn _type_assertion(
5003            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5004        ) {
5005            match _t {
5006                alloy_sol_types::private::AssertTypeEq::<
5007                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5008                >(_) => {}
5009            }
5010        }
5011        #[automatically_derived]
5012        #[doc(hidden)]
5013        impl ::core::convert::From<DeprecatedApi> for UnderlyingRustTuple<'_> {
5014            fn from(value: DeprecatedApi) -> Self {
5015                ()
5016            }
5017        }
5018        #[automatically_derived]
5019        #[doc(hidden)]
5020        impl ::core::convert::From<UnderlyingRustTuple<'_>> for DeprecatedApi {
5021            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5022                Self {}
5023            }
5024        }
5025        #[automatically_derived]
5026        impl alloy_sol_types::SolError for DeprecatedApi {
5027            type Parameters<'a> = UnderlyingSolTuple<'a>;
5028            type Token<'a> = <Self::Parameters<
5029                'a,
5030            > as alloy_sol_types::SolType>::Token<'a>;
5031            const SIGNATURE: &'static str = "DeprecatedApi()";
5032            const SELECTOR: [u8; 4] = [78u8, 64u8, 92u8, 141u8];
5033            #[inline]
5034            fn new<'a>(
5035                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5036            ) -> Self {
5037                tuple.into()
5038            }
5039            #[inline]
5040            fn tokenize(&self) -> Self::Token<'_> {
5041                ()
5042            }
5043        }
5044    };
5045    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5046    /**Custom error with signature `ERC1967InvalidImplementation(address)` and selector `0x4c9c8ce3`.
5047```solidity
5048error ERC1967InvalidImplementation(address implementation);
5049```*/
5050    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5051    #[derive(Clone)]
5052    pub struct ERC1967InvalidImplementation {
5053        #[allow(missing_docs)]
5054        pub implementation: alloy::sol_types::private::Address,
5055    }
5056    #[allow(
5057        non_camel_case_types,
5058        non_snake_case,
5059        clippy::pub_underscore_fields,
5060        clippy::style
5061    )]
5062    const _: () = {
5063        use alloy::sol_types as alloy_sol_types;
5064        #[doc(hidden)]
5065        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5066        #[doc(hidden)]
5067        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5068        #[cfg(test)]
5069        #[allow(dead_code, unreachable_patterns)]
5070        fn _type_assertion(
5071            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5072        ) {
5073            match _t {
5074                alloy_sol_types::private::AssertTypeEq::<
5075                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5076                >(_) => {}
5077            }
5078        }
5079        #[automatically_derived]
5080        #[doc(hidden)]
5081        impl ::core::convert::From<ERC1967InvalidImplementation>
5082        for UnderlyingRustTuple<'_> {
5083            fn from(value: ERC1967InvalidImplementation) -> Self {
5084                (value.implementation,)
5085            }
5086        }
5087        #[automatically_derived]
5088        #[doc(hidden)]
5089        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5090        for ERC1967InvalidImplementation {
5091            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5092                Self { implementation: tuple.0 }
5093            }
5094        }
5095        #[automatically_derived]
5096        impl alloy_sol_types::SolError for ERC1967InvalidImplementation {
5097            type Parameters<'a> = UnderlyingSolTuple<'a>;
5098            type Token<'a> = <Self::Parameters<
5099                'a,
5100            > as alloy_sol_types::SolType>::Token<'a>;
5101            const SIGNATURE: &'static str = "ERC1967InvalidImplementation(address)";
5102            const SELECTOR: [u8; 4] = [76u8, 156u8, 140u8, 227u8];
5103            #[inline]
5104            fn new<'a>(
5105                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5106            ) -> Self {
5107                tuple.into()
5108            }
5109            #[inline]
5110            fn tokenize(&self) -> Self::Token<'_> {
5111                (
5112                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5113                        &self.implementation,
5114                    ),
5115                )
5116            }
5117        }
5118    };
5119    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5120    /**Custom error with signature `ERC1967NonPayable()` and selector `0xb398979f`.
5121```solidity
5122error ERC1967NonPayable();
5123```*/
5124    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5125    #[derive(Clone)]
5126    pub struct ERC1967NonPayable {}
5127    #[allow(
5128        non_camel_case_types,
5129        non_snake_case,
5130        clippy::pub_underscore_fields,
5131        clippy::style
5132    )]
5133    const _: () = {
5134        use alloy::sol_types as alloy_sol_types;
5135        #[doc(hidden)]
5136        type UnderlyingSolTuple<'a> = ();
5137        #[doc(hidden)]
5138        type UnderlyingRustTuple<'a> = ();
5139        #[cfg(test)]
5140        #[allow(dead_code, unreachable_patterns)]
5141        fn _type_assertion(
5142            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5143        ) {
5144            match _t {
5145                alloy_sol_types::private::AssertTypeEq::<
5146                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5147                >(_) => {}
5148            }
5149        }
5150        #[automatically_derived]
5151        #[doc(hidden)]
5152        impl ::core::convert::From<ERC1967NonPayable> for UnderlyingRustTuple<'_> {
5153            fn from(value: ERC1967NonPayable) -> Self {
5154                ()
5155            }
5156        }
5157        #[automatically_derived]
5158        #[doc(hidden)]
5159        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967NonPayable {
5160            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5161                Self {}
5162            }
5163        }
5164        #[automatically_derived]
5165        impl alloy_sol_types::SolError for ERC1967NonPayable {
5166            type Parameters<'a> = UnderlyingSolTuple<'a>;
5167            type Token<'a> = <Self::Parameters<
5168                'a,
5169            > as alloy_sol_types::SolType>::Token<'a>;
5170            const SIGNATURE: &'static str = "ERC1967NonPayable()";
5171            const SELECTOR: [u8; 4] = [179u8, 152u8, 151u8, 159u8];
5172            #[inline]
5173            fn new<'a>(
5174                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5175            ) -> Self {
5176                tuple.into()
5177            }
5178            #[inline]
5179            fn tokenize(&self) -> Self::Token<'_> {
5180                ()
5181            }
5182        }
5183    };
5184    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5185    /**Custom error with signature `FailedInnerCall()` and selector `0x1425ea42`.
5186```solidity
5187error FailedInnerCall();
5188```*/
5189    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5190    #[derive(Clone)]
5191    pub struct FailedInnerCall {}
5192    #[allow(
5193        non_camel_case_types,
5194        non_snake_case,
5195        clippy::pub_underscore_fields,
5196        clippy::style
5197    )]
5198    const _: () = {
5199        use alloy::sol_types as alloy_sol_types;
5200        #[doc(hidden)]
5201        type UnderlyingSolTuple<'a> = ();
5202        #[doc(hidden)]
5203        type UnderlyingRustTuple<'a> = ();
5204        #[cfg(test)]
5205        #[allow(dead_code, unreachable_patterns)]
5206        fn _type_assertion(
5207            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5208        ) {
5209            match _t {
5210                alloy_sol_types::private::AssertTypeEq::<
5211                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5212                >(_) => {}
5213            }
5214        }
5215        #[automatically_derived]
5216        #[doc(hidden)]
5217        impl ::core::convert::From<FailedInnerCall> for UnderlyingRustTuple<'_> {
5218            fn from(value: FailedInnerCall) -> Self {
5219                ()
5220            }
5221        }
5222        #[automatically_derived]
5223        #[doc(hidden)]
5224        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FailedInnerCall {
5225            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5226                Self {}
5227            }
5228        }
5229        #[automatically_derived]
5230        impl alloy_sol_types::SolError for FailedInnerCall {
5231            type Parameters<'a> = UnderlyingSolTuple<'a>;
5232            type Token<'a> = <Self::Parameters<
5233                'a,
5234            > as alloy_sol_types::SolType>::Token<'a>;
5235            const SIGNATURE: &'static str = "FailedInnerCall()";
5236            const SELECTOR: [u8; 4] = [20u8, 37u8, 234u8, 66u8];
5237            #[inline]
5238            fn new<'a>(
5239                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5240            ) -> Self {
5241                tuple.into()
5242            }
5243            #[inline]
5244            fn tokenize(&self) -> Self::Token<'_> {
5245                ()
5246            }
5247        }
5248    };
5249    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5250    /**Custom error with signature `InsufficientSnapshotHistory()` and selector `0xb0b43877`.
5251```solidity
5252error InsufficientSnapshotHistory();
5253```*/
5254    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5255    #[derive(Clone)]
5256    pub struct InsufficientSnapshotHistory {}
5257    #[allow(
5258        non_camel_case_types,
5259        non_snake_case,
5260        clippy::pub_underscore_fields,
5261        clippy::style
5262    )]
5263    const _: () = {
5264        use alloy::sol_types as alloy_sol_types;
5265        #[doc(hidden)]
5266        type UnderlyingSolTuple<'a> = ();
5267        #[doc(hidden)]
5268        type UnderlyingRustTuple<'a> = ();
5269        #[cfg(test)]
5270        #[allow(dead_code, unreachable_patterns)]
5271        fn _type_assertion(
5272            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5273        ) {
5274            match _t {
5275                alloy_sol_types::private::AssertTypeEq::<
5276                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5277                >(_) => {}
5278            }
5279        }
5280        #[automatically_derived]
5281        #[doc(hidden)]
5282        impl ::core::convert::From<InsufficientSnapshotHistory>
5283        for UnderlyingRustTuple<'_> {
5284            fn from(value: InsufficientSnapshotHistory) -> Self {
5285                ()
5286            }
5287        }
5288        #[automatically_derived]
5289        #[doc(hidden)]
5290        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5291        for InsufficientSnapshotHistory {
5292            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5293                Self {}
5294            }
5295        }
5296        #[automatically_derived]
5297        impl alloy_sol_types::SolError for InsufficientSnapshotHistory {
5298            type Parameters<'a> = UnderlyingSolTuple<'a>;
5299            type Token<'a> = <Self::Parameters<
5300                'a,
5301            > as alloy_sol_types::SolType>::Token<'a>;
5302            const SIGNATURE: &'static str = "InsufficientSnapshotHistory()";
5303            const SELECTOR: [u8; 4] = [176u8, 180u8, 56u8, 119u8];
5304            #[inline]
5305            fn new<'a>(
5306                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5307            ) -> Self {
5308                tuple.into()
5309            }
5310            #[inline]
5311            fn tokenize(&self) -> Self::Token<'_> {
5312                ()
5313            }
5314        }
5315    };
5316    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5317    /**Custom error with signature `InvalidAddress()` and selector `0xe6c4247b`.
5318```solidity
5319error InvalidAddress();
5320```*/
5321    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5322    #[derive(Clone)]
5323    pub struct InvalidAddress {}
5324    #[allow(
5325        non_camel_case_types,
5326        non_snake_case,
5327        clippy::pub_underscore_fields,
5328        clippy::style
5329    )]
5330    const _: () = {
5331        use alloy::sol_types as alloy_sol_types;
5332        #[doc(hidden)]
5333        type UnderlyingSolTuple<'a> = ();
5334        #[doc(hidden)]
5335        type UnderlyingRustTuple<'a> = ();
5336        #[cfg(test)]
5337        #[allow(dead_code, unreachable_patterns)]
5338        fn _type_assertion(
5339            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5340        ) {
5341            match _t {
5342                alloy_sol_types::private::AssertTypeEq::<
5343                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5344                >(_) => {}
5345            }
5346        }
5347        #[automatically_derived]
5348        #[doc(hidden)]
5349        impl ::core::convert::From<InvalidAddress> for UnderlyingRustTuple<'_> {
5350            fn from(value: InvalidAddress) -> Self {
5351                ()
5352            }
5353        }
5354        #[automatically_derived]
5355        #[doc(hidden)]
5356        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidAddress {
5357            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5358                Self {}
5359            }
5360        }
5361        #[automatically_derived]
5362        impl alloy_sol_types::SolError for InvalidAddress {
5363            type Parameters<'a> = UnderlyingSolTuple<'a>;
5364            type Token<'a> = <Self::Parameters<
5365                'a,
5366            > as alloy_sol_types::SolType>::Token<'a>;
5367            const SIGNATURE: &'static str = "InvalidAddress()";
5368            const SELECTOR: [u8; 4] = [230u8, 196u8, 36u8, 123u8];
5369            #[inline]
5370            fn new<'a>(
5371                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5372            ) -> Self {
5373                tuple.into()
5374            }
5375            #[inline]
5376            fn tokenize(&self) -> Self::Token<'_> {
5377                ()
5378            }
5379        }
5380    };
5381    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5382    /**Custom error with signature `InvalidArgs()` and selector `0xa1ba07ee`.
5383```solidity
5384error InvalidArgs();
5385```*/
5386    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5387    #[derive(Clone)]
5388    pub struct InvalidArgs {}
5389    #[allow(
5390        non_camel_case_types,
5391        non_snake_case,
5392        clippy::pub_underscore_fields,
5393        clippy::style
5394    )]
5395    const _: () = {
5396        use alloy::sol_types as alloy_sol_types;
5397        #[doc(hidden)]
5398        type UnderlyingSolTuple<'a> = ();
5399        #[doc(hidden)]
5400        type UnderlyingRustTuple<'a> = ();
5401        #[cfg(test)]
5402        #[allow(dead_code, unreachable_patterns)]
5403        fn _type_assertion(
5404            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5405        ) {
5406            match _t {
5407                alloy_sol_types::private::AssertTypeEq::<
5408                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5409                >(_) => {}
5410            }
5411        }
5412        #[automatically_derived]
5413        #[doc(hidden)]
5414        impl ::core::convert::From<InvalidArgs> for UnderlyingRustTuple<'_> {
5415            fn from(value: InvalidArgs) -> Self {
5416                ()
5417            }
5418        }
5419        #[automatically_derived]
5420        #[doc(hidden)]
5421        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidArgs {
5422            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5423                Self {}
5424            }
5425        }
5426        #[automatically_derived]
5427        impl alloy_sol_types::SolError for InvalidArgs {
5428            type Parameters<'a> = UnderlyingSolTuple<'a>;
5429            type Token<'a> = <Self::Parameters<
5430                'a,
5431            > as alloy_sol_types::SolType>::Token<'a>;
5432            const SIGNATURE: &'static str = "InvalidArgs()";
5433            const SELECTOR: [u8; 4] = [161u8, 186u8, 7u8, 238u8];
5434            #[inline]
5435            fn new<'a>(
5436                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5437            ) -> Self {
5438                tuple.into()
5439            }
5440            #[inline]
5441            fn tokenize(&self) -> Self::Token<'_> {
5442                ()
5443            }
5444        }
5445    };
5446    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5447    /**Custom error with signature `InvalidHotShotBlockForCommitmentCheck()` and selector `0x615a9264`.
5448```solidity
5449error InvalidHotShotBlockForCommitmentCheck();
5450```*/
5451    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5452    #[derive(Clone)]
5453    pub struct InvalidHotShotBlockForCommitmentCheck {}
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        type UnderlyingSolTuple<'a> = ();
5464        #[doc(hidden)]
5465        type UnderlyingRustTuple<'a> = ();
5466        #[cfg(test)]
5467        #[allow(dead_code, unreachable_patterns)]
5468        fn _type_assertion(
5469            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5470        ) {
5471            match _t {
5472                alloy_sol_types::private::AssertTypeEq::<
5473                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5474                >(_) => {}
5475            }
5476        }
5477        #[automatically_derived]
5478        #[doc(hidden)]
5479        impl ::core::convert::From<InvalidHotShotBlockForCommitmentCheck>
5480        for UnderlyingRustTuple<'_> {
5481            fn from(value: InvalidHotShotBlockForCommitmentCheck) -> Self {
5482                ()
5483            }
5484        }
5485        #[automatically_derived]
5486        #[doc(hidden)]
5487        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5488        for InvalidHotShotBlockForCommitmentCheck {
5489            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5490                Self {}
5491            }
5492        }
5493        #[automatically_derived]
5494        impl alloy_sol_types::SolError for InvalidHotShotBlockForCommitmentCheck {
5495            type Parameters<'a> = UnderlyingSolTuple<'a>;
5496            type Token<'a> = <Self::Parameters<
5497                'a,
5498            > as alloy_sol_types::SolType>::Token<'a>;
5499            const SIGNATURE: &'static str = "InvalidHotShotBlockForCommitmentCheck()";
5500            const SELECTOR: [u8; 4] = [97u8, 90u8, 146u8, 100u8];
5501            #[inline]
5502            fn new<'a>(
5503                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5504            ) -> Self {
5505                tuple.into()
5506            }
5507            #[inline]
5508            fn tokenize(&self) -> Self::Token<'_> {
5509                ()
5510            }
5511        }
5512    };
5513    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5514    /**Custom error with signature `InvalidInitialization()` and selector `0xf92ee8a9`.
5515```solidity
5516error InvalidInitialization();
5517```*/
5518    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5519    #[derive(Clone)]
5520    pub struct InvalidInitialization {}
5521    #[allow(
5522        non_camel_case_types,
5523        non_snake_case,
5524        clippy::pub_underscore_fields,
5525        clippy::style
5526    )]
5527    const _: () = {
5528        use alloy::sol_types as alloy_sol_types;
5529        #[doc(hidden)]
5530        type UnderlyingSolTuple<'a> = ();
5531        #[doc(hidden)]
5532        type UnderlyingRustTuple<'a> = ();
5533        #[cfg(test)]
5534        #[allow(dead_code, unreachable_patterns)]
5535        fn _type_assertion(
5536            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5537        ) {
5538            match _t {
5539                alloy_sol_types::private::AssertTypeEq::<
5540                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5541                >(_) => {}
5542            }
5543        }
5544        #[automatically_derived]
5545        #[doc(hidden)]
5546        impl ::core::convert::From<InvalidInitialization> for UnderlyingRustTuple<'_> {
5547            fn from(value: InvalidInitialization) -> Self {
5548                ()
5549            }
5550        }
5551        #[automatically_derived]
5552        #[doc(hidden)]
5553        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidInitialization {
5554            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5555                Self {}
5556            }
5557        }
5558        #[automatically_derived]
5559        impl alloy_sol_types::SolError for InvalidInitialization {
5560            type Parameters<'a> = UnderlyingSolTuple<'a>;
5561            type Token<'a> = <Self::Parameters<
5562                'a,
5563            > as alloy_sol_types::SolType>::Token<'a>;
5564            const SIGNATURE: &'static str = "InvalidInitialization()";
5565            const SELECTOR: [u8; 4] = [249u8, 46u8, 232u8, 169u8];
5566            #[inline]
5567            fn new<'a>(
5568                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5569            ) -> Self {
5570                tuple.into()
5571            }
5572            #[inline]
5573            fn tokenize(&self) -> Self::Token<'_> {
5574                ()
5575            }
5576        }
5577    };
5578    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5579    /**Custom error with signature `InvalidMaxStateHistory()` and selector `0xf4a0eee0`.
5580```solidity
5581error InvalidMaxStateHistory();
5582```*/
5583    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5584    #[derive(Clone)]
5585    pub struct InvalidMaxStateHistory {}
5586    #[allow(
5587        non_camel_case_types,
5588        non_snake_case,
5589        clippy::pub_underscore_fields,
5590        clippy::style
5591    )]
5592    const _: () = {
5593        use alloy::sol_types as alloy_sol_types;
5594        #[doc(hidden)]
5595        type UnderlyingSolTuple<'a> = ();
5596        #[doc(hidden)]
5597        type UnderlyingRustTuple<'a> = ();
5598        #[cfg(test)]
5599        #[allow(dead_code, unreachable_patterns)]
5600        fn _type_assertion(
5601            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5602        ) {
5603            match _t {
5604                alloy_sol_types::private::AssertTypeEq::<
5605                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5606                >(_) => {}
5607            }
5608        }
5609        #[automatically_derived]
5610        #[doc(hidden)]
5611        impl ::core::convert::From<InvalidMaxStateHistory> for UnderlyingRustTuple<'_> {
5612            fn from(value: InvalidMaxStateHistory) -> Self {
5613                ()
5614            }
5615        }
5616        #[automatically_derived]
5617        #[doc(hidden)]
5618        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidMaxStateHistory {
5619            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5620                Self {}
5621            }
5622        }
5623        #[automatically_derived]
5624        impl alloy_sol_types::SolError for InvalidMaxStateHistory {
5625            type Parameters<'a> = UnderlyingSolTuple<'a>;
5626            type Token<'a> = <Self::Parameters<
5627                'a,
5628            > as alloy_sol_types::SolType>::Token<'a>;
5629            const SIGNATURE: &'static str = "InvalidMaxStateHistory()";
5630            const SELECTOR: [u8; 4] = [244u8, 160u8, 238u8, 224u8];
5631            #[inline]
5632            fn new<'a>(
5633                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5634            ) -> Self {
5635                tuple.into()
5636            }
5637            #[inline]
5638            fn tokenize(&self) -> Self::Token<'_> {
5639                ()
5640            }
5641        }
5642    };
5643    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5644    /**Custom error with signature `InvalidProof()` and selector `0x09bde339`.
5645```solidity
5646error InvalidProof();
5647```*/
5648    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5649    #[derive(Clone)]
5650    pub struct InvalidProof {}
5651    #[allow(
5652        non_camel_case_types,
5653        non_snake_case,
5654        clippy::pub_underscore_fields,
5655        clippy::style
5656    )]
5657    const _: () = {
5658        use alloy::sol_types as alloy_sol_types;
5659        #[doc(hidden)]
5660        type UnderlyingSolTuple<'a> = ();
5661        #[doc(hidden)]
5662        type UnderlyingRustTuple<'a> = ();
5663        #[cfg(test)]
5664        #[allow(dead_code, unreachable_patterns)]
5665        fn _type_assertion(
5666            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5667        ) {
5668            match _t {
5669                alloy_sol_types::private::AssertTypeEq::<
5670                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5671                >(_) => {}
5672            }
5673        }
5674        #[automatically_derived]
5675        #[doc(hidden)]
5676        impl ::core::convert::From<InvalidProof> for UnderlyingRustTuple<'_> {
5677            fn from(value: InvalidProof) -> Self {
5678                ()
5679            }
5680        }
5681        #[automatically_derived]
5682        #[doc(hidden)]
5683        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidProof {
5684            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5685                Self {}
5686            }
5687        }
5688        #[automatically_derived]
5689        impl alloy_sol_types::SolError for InvalidProof {
5690            type Parameters<'a> = UnderlyingSolTuple<'a>;
5691            type Token<'a> = <Self::Parameters<
5692                'a,
5693            > as alloy_sol_types::SolType>::Token<'a>;
5694            const SIGNATURE: &'static str = "InvalidProof()";
5695            const SELECTOR: [u8; 4] = [9u8, 189u8, 227u8, 57u8];
5696            #[inline]
5697            fn new<'a>(
5698                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5699            ) -> Self {
5700                tuple.into()
5701            }
5702            #[inline]
5703            fn tokenize(&self) -> Self::Token<'_> {
5704                ()
5705            }
5706        }
5707    };
5708    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5709    /**Custom error with signature `MissingEpochRootUpdate()` and selector `0x080ae8d9`.
5710```solidity
5711error MissingEpochRootUpdate();
5712```*/
5713    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5714    #[derive(Clone)]
5715    pub struct MissingEpochRootUpdate {}
5716    #[allow(
5717        non_camel_case_types,
5718        non_snake_case,
5719        clippy::pub_underscore_fields,
5720        clippy::style
5721    )]
5722    const _: () = {
5723        use alloy::sol_types as alloy_sol_types;
5724        #[doc(hidden)]
5725        type UnderlyingSolTuple<'a> = ();
5726        #[doc(hidden)]
5727        type UnderlyingRustTuple<'a> = ();
5728        #[cfg(test)]
5729        #[allow(dead_code, unreachable_patterns)]
5730        fn _type_assertion(
5731            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5732        ) {
5733            match _t {
5734                alloy_sol_types::private::AssertTypeEq::<
5735                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5736                >(_) => {}
5737            }
5738        }
5739        #[automatically_derived]
5740        #[doc(hidden)]
5741        impl ::core::convert::From<MissingEpochRootUpdate> for UnderlyingRustTuple<'_> {
5742            fn from(value: MissingEpochRootUpdate) -> Self {
5743                ()
5744            }
5745        }
5746        #[automatically_derived]
5747        #[doc(hidden)]
5748        impl ::core::convert::From<UnderlyingRustTuple<'_>> for MissingEpochRootUpdate {
5749            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5750                Self {}
5751            }
5752        }
5753        #[automatically_derived]
5754        impl alloy_sol_types::SolError for MissingEpochRootUpdate {
5755            type Parameters<'a> = UnderlyingSolTuple<'a>;
5756            type Token<'a> = <Self::Parameters<
5757                'a,
5758            > as alloy_sol_types::SolType>::Token<'a>;
5759            const SIGNATURE: &'static str = "MissingEpochRootUpdate()";
5760            const SELECTOR: [u8; 4] = [8u8, 10u8, 232u8, 217u8];
5761            #[inline]
5762            fn new<'a>(
5763                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5764            ) -> Self {
5765                tuple.into()
5766            }
5767            #[inline]
5768            fn tokenize(&self) -> Self::Token<'_> {
5769                ()
5770            }
5771        }
5772    };
5773    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5774    /**Custom error with signature `NoChangeRequired()` and selector `0xa863aec9`.
5775```solidity
5776error NoChangeRequired();
5777```*/
5778    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5779    #[derive(Clone)]
5780    pub struct NoChangeRequired {}
5781    #[allow(
5782        non_camel_case_types,
5783        non_snake_case,
5784        clippy::pub_underscore_fields,
5785        clippy::style
5786    )]
5787    const _: () = {
5788        use alloy::sol_types as alloy_sol_types;
5789        #[doc(hidden)]
5790        type UnderlyingSolTuple<'a> = ();
5791        #[doc(hidden)]
5792        type UnderlyingRustTuple<'a> = ();
5793        #[cfg(test)]
5794        #[allow(dead_code, unreachable_patterns)]
5795        fn _type_assertion(
5796            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5797        ) {
5798            match _t {
5799                alloy_sol_types::private::AssertTypeEq::<
5800                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5801                >(_) => {}
5802            }
5803        }
5804        #[automatically_derived]
5805        #[doc(hidden)]
5806        impl ::core::convert::From<NoChangeRequired> for UnderlyingRustTuple<'_> {
5807            fn from(value: NoChangeRequired) -> Self {
5808                ()
5809            }
5810        }
5811        #[automatically_derived]
5812        #[doc(hidden)]
5813        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NoChangeRequired {
5814            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5815                Self {}
5816            }
5817        }
5818        #[automatically_derived]
5819        impl alloy_sol_types::SolError for NoChangeRequired {
5820            type Parameters<'a> = UnderlyingSolTuple<'a>;
5821            type Token<'a> = <Self::Parameters<
5822                'a,
5823            > as alloy_sol_types::SolType>::Token<'a>;
5824            const SIGNATURE: &'static str = "NoChangeRequired()";
5825            const SELECTOR: [u8; 4] = [168u8, 99u8, 174u8, 201u8];
5826            #[inline]
5827            fn new<'a>(
5828                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5829            ) -> Self {
5830                tuple.into()
5831            }
5832            #[inline]
5833            fn tokenize(&self) -> Self::Token<'_> {
5834                ()
5835            }
5836        }
5837    };
5838    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5839    /**Custom error with signature `NotInitializing()` and selector `0xd7e6bcf8`.
5840```solidity
5841error NotInitializing();
5842```*/
5843    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5844    #[derive(Clone)]
5845    pub struct NotInitializing {}
5846    #[allow(
5847        non_camel_case_types,
5848        non_snake_case,
5849        clippy::pub_underscore_fields,
5850        clippy::style
5851    )]
5852    const _: () = {
5853        use alloy::sol_types as alloy_sol_types;
5854        #[doc(hidden)]
5855        type UnderlyingSolTuple<'a> = ();
5856        #[doc(hidden)]
5857        type UnderlyingRustTuple<'a> = ();
5858        #[cfg(test)]
5859        #[allow(dead_code, unreachable_patterns)]
5860        fn _type_assertion(
5861            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5862        ) {
5863            match _t {
5864                alloy_sol_types::private::AssertTypeEq::<
5865                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5866                >(_) => {}
5867            }
5868        }
5869        #[automatically_derived]
5870        #[doc(hidden)]
5871        impl ::core::convert::From<NotInitializing> for UnderlyingRustTuple<'_> {
5872            fn from(value: NotInitializing) -> Self {
5873                ()
5874            }
5875        }
5876        #[automatically_derived]
5877        #[doc(hidden)]
5878        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NotInitializing {
5879            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5880                Self {}
5881            }
5882        }
5883        #[automatically_derived]
5884        impl alloy_sol_types::SolError for NotInitializing {
5885            type Parameters<'a> = UnderlyingSolTuple<'a>;
5886            type Token<'a> = <Self::Parameters<
5887                'a,
5888            > as alloy_sol_types::SolType>::Token<'a>;
5889            const SIGNATURE: &'static str = "NotInitializing()";
5890            const SELECTOR: [u8; 4] = [215u8, 230u8, 188u8, 248u8];
5891            #[inline]
5892            fn new<'a>(
5893                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5894            ) -> Self {
5895                tuple.into()
5896            }
5897            #[inline]
5898            fn tokenize(&self) -> Self::Token<'_> {
5899                ()
5900            }
5901        }
5902    };
5903    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5904    /**Custom error with signature `OutdatedState()` and selector `0x051c46ef`.
5905```solidity
5906error OutdatedState();
5907```*/
5908    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5909    #[derive(Clone)]
5910    pub struct OutdatedState {}
5911    #[allow(
5912        non_camel_case_types,
5913        non_snake_case,
5914        clippy::pub_underscore_fields,
5915        clippy::style
5916    )]
5917    const _: () = {
5918        use alloy::sol_types as alloy_sol_types;
5919        #[doc(hidden)]
5920        type UnderlyingSolTuple<'a> = ();
5921        #[doc(hidden)]
5922        type UnderlyingRustTuple<'a> = ();
5923        #[cfg(test)]
5924        #[allow(dead_code, unreachable_patterns)]
5925        fn _type_assertion(
5926            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5927        ) {
5928            match _t {
5929                alloy_sol_types::private::AssertTypeEq::<
5930                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5931                >(_) => {}
5932            }
5933        }
5934        #[automatically_derived]
5935        #[doc(hidden)]
5936        impl ::core::convert::From<OutdatedState> for UnderlyingRustTuple<'_> {
5937            fn from(value: OutdatedState) -> Self {
5938                ()
5939            }
5940        }
5941        #[automatically_derived]
5942        #[doc(hidden)]
5943        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OutdatedState {
5944            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5945                Self {}
5946            }
5947        }
5948        #[automatically_derived]
5949        impl alloy_sol_types::SolError for OutdatedState {
5950            type Parameters<'a> = UnderlyingSolTuple<'a>;
5951            type Token<'a> = <Self::Parameters<
5952                'a,
5953            > as alloy_sol_types::SolType>::Token<'a>;
5954            const SIGNATURE: &'static str = "OutdatedState()";
5955            const SELECTOR: [u8; 4] = [5u8, 28u8, 70u8, 239u8];
5956            #[inline]
5957            fn new<'a>(
5958                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5959            ) -> Self {
5960                tuple.into()
5961            }
5962            #[inline]
5963            fn tokenize(&self) -> Self::Token<'_> {
5964                ()
5965            }
5966        }
5967    };
5968    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5969    /**Custom error with signature `OwnableInvalidOwner(address)` and selector `0x1e4fbdf7`.
5970```solidity
5971error OwnableInvalidOwner(address owner);
5972```*/
5973    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5974    #[derive(Clone)]
5975    pub struct OwnableInvalidOwner {
5976        #[allow(missing_docs)]
5977        pub owner: alloy::sol_types::private::Address,
5978    }
5979    #[allow(
5980        non_camel_case_types,
5981        non_snake_case,
5982        clippy::pub_underscore_fields,
5983        clippy::style
5984    )]
5985    const _: () = {
5986        use alloy::sol_types as alloy_sol_types;
5987        #[doc(hidden)]
5988        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5989        #[doc(hidden)]
5990        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5991        #[cfg(test)]
5992        #[allow(dead_code, unreachable_patterns)]
5993        fn _type_assertion(
5994            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5995        ) {
5996            match _t {
5997                alloy_sol_types::private::AssertTypeEq::<
5998                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5999                >(_) => {}
6000            }
6001        }
6002        #[automatically_derived]
6003        #[doc(hidden)]
6004        impl ::core::convert::From<OwnableInvalidOwner> for UnderlyingRustTuple<'_> {
6005            fn from(value: OwnableInvalidOwner) -> Self {
6006                (value.owner,)
6007            }
6008        }
6009        #[automatically_derived]
6010        #[doc(hidden)]
6011        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OwnableInvalidOwner {
6012            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6013                Self { owner: tuple.0 }
6014            }
6015        }
6016        #[automatically_derived]
6017        impl alloy_sol_types::SolError for OwnableInvalidOwner {
6018            type Parameters<'a> = UnderlyingSolTuple<'a>;
6019            type Token<'a> = <Self::Parameters<
6020                'a,
6021            > as alloy_sol_types::SolType>::Token<'a>;
6022            const SIGNATURE: &'static str = "OwnableInvalidOwner(address)";
6023            const SELECTOR: [u8; 4] = [30u8, 79u8, 189u8, 247u8];
6024            #[inline]
6025            fn new<'a>(
6026                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6027            ) -> Self {
6028                tuple.into()
6029            }
6030            #[inline]
6031            fn tokenize(&self) -> Self::Token<'_> {
6032                (
6033                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6034                        &self.owner,
6035                    ),
6036                )
6037            }
6038        }
6039    };
6040    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6041    /**Custom error with signature `OwnableUnauthorizedAccount(address)` and selector `0x118cdaa7`.
6042```solidity
6043error OwnableUnauthorizedAccount(address account);
6044```*/
6045    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6046    #[derive(Clone)]
6047    pub struct OwnableUnauthorizedAccount {
6048        #[allow(missing_docs)]
6049        pub account: alloy::sol_types::private::Address,
6050    }
6051    #[allow(
6052        non_camel_case_types,
6053        non_snake_case,
6054        clippy::pub_underscore_fields,
6055        clippy::style
6056    )]
6057    const _: () = {
6058        use alloy::sol_types as alloy_sol_types;
6059        #[doc(hidden)]
6060        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6061        #[doc(hidden)]
6062        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6063        #[cfg(test)]
6064        #[allow(dead_code, unreachable_patterns)]
6065        fn _type_assertion(
6066            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6067        ) {
6068            match _t {
6069                alloy_sol_types::private::AssertTypeEq::<
6070                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6071                >(_) => {}
6072            }
6073        }
6074        #[automatically_derived]
6075        #[doc(hidden)]
6076        impl ::core::convert::From<OwnableUnauthorizedAccount>
6077        for UnderlyingRustTuple<'_> {
6078            fn from(value: OwnableUnauthorizedAccount) -> Self {
6079                (value.account,)
6080            }
6081        }
6082        #[automatically_derived]
6083        #[doc(hidden)]
6084        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6085        for OwnableUnauthorizedAccount {
6086            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6087                Self { account: tuple.0 }
6088            }
6089        }
6090        #[automatically_derived]
6091        impl alloy_sol_types::SolError for OwnableUnauthorizedAccount {
6092            type Parameters<'a> = UnderlyingSolTuple<'a>;
6093            type Token<'a> = <Self::Parameters<
6094                'a,
6095            > as alloy_sol_types::SolType>::Token<'a>;
6096            const SIGNATURE: &'static str = "OwnableUnauthorizedAccount(address)";
6097            const SELECTOR: [u8; 4] = [17u8, 140u8, 218u8, 167u8];
6098            #[inline]
6099            fn new<'a>(
6100                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6101            ) -> Self {
6102                tuple.into()
6103            }
6104            #[inline]
6105            fn tokenize(&self) -> Self::Token<'_> {
6106                (
6107                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6108                        &self.account,
6109                    ),
6110                )
6111            }
6112        }
6113    };
6114    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6115    /**Custom error with signature `ProverNotPermissioned()` and selector `0xa3a64780`.
6116```solidity
6117error ProverNotPermissioned();
6118```*/
6119    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6120    #[derive(Clone)]
6121    pub struct ProverNotPermissioned {}
6122    #[allow(
6123        non_camel_case_types,
6124        non_snake_case,
6125        clippy::pub_underscore_fields,
6126        clippy::style
6127    )]
6128    const _: () = {
6129        use alloy::sol_types as alloy_sol_types;
6130        #[doc(hidden)]
6131        type UnderlyingSolTuple<'a> = ();
6132        #[doc(hidden)]
6133        type UnderlyingRustTuple<'a> = ();
6134        #[cfg(test)]
6135        #[allow(dead_code, unreachable_patterns)]
6136        fn _type_assertion(
6137            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6138        ) {
6139            match _t {
6140                alloy_sol_types::private::AssertTypeEq::<
6141                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6142                >(_) => {}
6143            }
6144        }
6145        #[automatically_derived]
6146        #[doc(hidden)]
6147        impl ::core::convert::From<ProverNotPermissioned> for UnderlyingRustTuple<'_> {
6148            fn from(value: ProverNotPermissioned) -> Self {
6149                ()
6150            }
6151        }
6152        #[automatically_derived]
6153        #[doc(hidden)]
6154        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ProverNotPermissioned {
6155            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6156                Self {}
6157            }
6158        }
6159        #[automatically_derived]
6160        impl alloy_sol_types::SolError for ProverNotPermissioned {
6161            type Parameters<'a> = UnderlyingSolTuple<'a>;
6162            type Token<'a> = <Self::Parameters<
6163                'a,
6164            > as alloy_sol_types::SolType>::Token<'a>;
6165            const SIGNATURE: &'static str = "ProverNotPermissioned()";
6166            const SELECTOR: [u8; 4] = [163u8, 166u8, 71u8, 128u8];
6167            #[inline]
6168            fn new<'a>(
6169                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6170            ) -> Self {
6171                tuple.into()
6172            }
6173            #[inline]
6174            fn tokenize(&self) -> Self::Token<'_> {
6175                ()
6176            }
6177        }
6178    };
6179    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6180    /**Custom error with signature `UUPSUnauthorizedCallContext()` and selector `0xe07c8dba`.
6181```solidity
6182error UUPSUnauthorizedCallContext();
6183```*/
6184    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6185    #[derive(Clone)]
6186    pub struct UUPSUnauthorizedCallContext {}
6187    #[allow(
6188        non_camel_case_types,
6189        non_snake_case,
6190        clippy::pub_underscore_fields,
6191        clippy::style
6192    )]
6193    const _: () = {
6194        use alloy::sol_types as alloy_sol_types;
6195        #[doc(hidden)]
6196        type UnderlyingSolTuple<'a> = ();
6197        #[doc(hidden)]
6198        type UnderlyingRustTuple<'a> = ();
6199        #[cfg(test)]
6200        #[allow(dead_code, unreachable_patterns)]
6201        fn _type_assertion(
6202            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6203        ) {
6204            match _t {
6205                alloy_sol_types::private::AssertTypeEq::<
6206                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6207                >(_) => {}
6208            }
6209        }
6210        #[automatically_derived]
6211        #[doc(hidden)]
6212        impl ::core::convert::From<UUPSUnauthorizedCallContext>
6213        for UnderlyingRustTuple<'_> {
6214            fn from(value: UUPSUnauthorizedCallContext) -> Self {
6215                ()
6216            }
6217        }
6218        #[automatically_derived]
6219        #[doc(hidden)]
6220        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6221        for UUPSUnauthorizedCallContext {
6222            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6223                Self {}
6224            }
6225        }
6226        #[automatically_derived]
6227        impl alloy_sol_types::SolError for UUPSUnauthorizedCallContext {
6228            type Parameters<'a> = UnderlyingSolTuple<'a>;
6229            type Token<'a> = <Self::Parameters<
6230                'a,
6231            > as alloy_sol_types::SolType>::Token<'a>;
6232            const SIGNATURE: &'static str = "UUPSUnauthorizedCallContext()";
6233            const SELECTOR: [u8; 4] = [224u8, 124u8, 141u8, 186u8];
6234            #[inline]
6235            fn new<'a>(
6236                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6237            ) -> Self {
6238                tuple.into()
6239            }
6240            #[inline]
6241            fn tokenize(&self) -> Self::Token<'_> {
6242                ()
6243            }
6244        }
6245    };
6246    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6247    /**Custom error with signature `UUPSUnsupportedProxiableUUID(bytes32)` and selector `0xaa1d49a4`.
6248```solidity
6249error UUPSUnsupportedProxiableUUID(bytes32 slot);
6250```*/
6251    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6252    #[derive(Clone)]
6253    pub struct UUPSUnsupportedProxiableUUID {
6254        #[allow(missing_docs)]
6255        pub slot: alloy::sol_types::private::FixedBytes<32>,
6256    }
6257    #[allow(
6258        non_camel_case_types,
6259        non_snake_case,
6260        clippy::pub_underscore_fields,
6261        clippy::style
6262    )]
6263    const _: () = {
6264        use alloy::sol_types as alloy_sol_types;
6265        #[doc(hidden)]
6266        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6267        #[doc(hidden)]
6268        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
6269        #[cfg(test)]
6270        #[allow(dead_code, unreachable_patterns)]
6271        fn _type_assertion(
6272            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6273        ) {
6274            match _t {
6275                alloy_sol_types::private::AssertTypeEq::<
6276                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6277                >(_) => {}
6278            }
6279        }
6280        #[automatically_derived]
6281        #[doc(hidden)]
6282        impl ::core::convert::From<UUPSUnsupportedProxiableUUID>
6283        for UnderlyingRustTuple<'_> {
6284            fn from(value: UUPSUnsupportedProxiableUUID) -> Self {
6285                (value.slot,)
6286            }
6287        }
6288        #[automatically_derived]
6289        #[doc(hidden)]
6290        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6291        for UUPSUnsupportedProxiableUUID {
6292            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6293                Self { slot: tuple.0 }
6294            }
6295        }
6296        #[automatically_derived]
6297        impl alloy_sol_types::SolError for UUPSUnsupportedProxiableUUID {
6298            type Parameters<'a> = UnderlyingSolTuple<'a>;
6299            type Token<'a> = <Self::Parameters<
6300                'a,
6301            > as alloy_sol_types::SolType>::Token<'a>;
6302            const SIGNATURE: &'static str = "UUPSUnsupportedProxiableUUID(bytes32)";
6303            const SELECTOR: [u8; 4] = [170u8, 29u8, 73u8, 164u8];
6304            #[inline]
6305            fn new<'a>(
6306                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6307            ) -> Self {
6308                tuple.into()
6309            }
6310            #[inline]
6311            fn tokenize(&self) -> Self::Token<'_> {
6312                (
6313                    <alloy::sol_types::sol_data::FixedBytes<
6314                        32,
6315                    > as alloy_sol_types::SolType>::tokenize(&self.slot),
6316                )
6317            }
6318        }
6319    };
6320    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6321    /**Custom error with signature `WrongStakeTableUsed()` and selector `0x51618089`.
6322```solidity
6323error WrongStakeTableUsed();
6324```*/
6325    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6326    #[derive(Clone)]
6327    pub struct WrongStakeTableUsed {}
6328    #[allow(
6329        non_camel_case_types,
6330        non_snake_case,
6331        clippy::pub_underscore_fields,
6332        clippy::style
6333    )]
6334    const _: () = {
6335        use alloy::sol_types as alloy_sol_types;
6336        #[doc(hidden)]
6337        type UnderlyingSolTuple<'a> = ();
6338        #[doc(hidden)]
6339        type UnderlyingRustTuple<'a> = ();
6340        #[cfg(test)]
6341        #[allow(dead_code, unreachable_patterns)]
6342        fn _type_assertion(
6343            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6344        ) {
6345            match _t {
6346                alloy_sol_types::private::AssertTypeEq::<
6347                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6348                >(_) => {}
6349            }
6350        }
6351        #[automatically_derived]
6352        #[doc(hidden)]
6353        impl ::core::convert::From<WrongStakeTableUsed> for UnderlyingRustTuple<'_> {
6354            fn from(value: WrongStakeTableUsed) -> Self {
6355                ()
6356            }
6357        }
6358        #[automatically_derived]
6359        #[doc(hidden)]
6360        impl ::core::convert::From<UnderlyingRustTuple<'_>> for WrongStakeTableUsed {
6361            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6362                Self {}
6363            }
6364        }
6365        #[automatically_derived]
6366        impl alloy_sol_types::SolError for WrongStakeTableUsed {
6367            type Parameters<'a> = UnderlyingSolTuple<'a>;
6368            type Token<'a> = <Self::Parameters<
6369                'a,
6370            > as alloy_sol_types::SolType>::Token<'a>;
6371            const SIGNATURE: &'static str = "WrongStakeTableUsed()";
6372            const SELECTOR: [u8; 4] = [81u8, 97u8, 128u8, 137u8];
6373            #[inline]
6374            fn new<'a>(
6375                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6376            ) -> Self {
6377                tuple.into()
6378            }
6379            #[inline]
6380            fn tokenize(&self) -> Self::Token<'_> {
6381                ()
6382            }
6383        }
6384    };
6385    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6386    /**Event with signature `Initialized(uint64)` and selector `0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2`.
6387```solidity
6388event Initialized(uint64 version);
6389```*/
6390    #[allow(
6391        non_camel_case_types,
6392        non_snake_case,
6393        clippy::pub_underscore_fields,
6394        clippy::style
6395    )]
6396    #[derive(Clone)]
6397    pub struct Initialized {
6398        #[allow(missing_docs)]
6399        pub version: u64,
6400    }
6401    #[allow(
6402        non_camel_case_types,
6403        non_snake_case,
6404        clippy::pub_underscore_fields,
6405        clippy::style
6406    )]
6407    const _: () = {
6408        use alloy::sol_types as alloy_sol_types;
6409        #[automatically_derived]
6410        impl alloy_sol_types::SolEvent for Initialized {
6411            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
6412            type DataToken<'a> = <Self::DataTuple<
6413                'a,
6414            > as alloy_sol_types::SolType>::Token<'a>;
6415            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6416            const SIGNATURE: &'static str = "Initialized(uint64)";
6417            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6418                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
6419                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
6420                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
6421            ]);
6422            const ANONYMOUS: bool = false;
6423            #[allow(unused_variables)]
6424            #[inline]
6425            fn new(
6426                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6427                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6428            ) -> Self {
6429                Self { version: data.0 }
6430            }
6431            #[inline]
6432            fn check_signature(
6433                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6434            ) -> alloy_sol_types::Result<()> {
6435                if topics.0 != Self::SIGNATURE_HASH {
6436                    return Err(
6437                        alloy_sol_types::Error::invalid_event_signature_hash(
6438                            Self::SIGNATURE,
6439                            topics.0,
6440                            Self::SIGNATURE_HASH,
6441                        ),
6442                    );
6443                }
6444                Ok(())
6445            }
6446            #[inline]
6447            fn tokenize_body(&self) -> Self::DataToken<'_> {
6448                (
6449                    <alloy::sol_types::sol_data::Uint<
6450                        64,
6451                    > as alloy_sol_types::SolType>::tokenize(&self.version),
6452                )
6453            }
6454            #[inline]
6455            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6456                (Self::SIGNATURE_HASH.into(),)
6457            }
6458            #[inline]
6459            fn encode_topics_raw(
6460                &self,
6461                out: &mut [alloy_sol_types::abi::token::WordToken],
6462            ) -> alloy_sol_types::Result<()> {
6463                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6464                    return Err(alloy_sol_types::Error::Overrun);
6465                }
6466                out[0usize] = alloy_sol_types::abi::token::WordToken(
6467                    Self::SIGNATURE_HASH,
6468                );
6469                Ok(())
6470            }
6471        }
6472        #[automatically_derived]
6473        impl alloy_sol_types::private::IntoLogData for Initialized {
6474            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6475                From::from(self)
6476            }
6477            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6478                From::from(&self)
6479            }
6480        }
6481        #[automatically_derived]
6482        impl From<&Initialized> for alloy_sol_types::private::LogData {
6483            #[inline]
6484            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
6485                alloy_sol_types::SolEvent::encode_log_data(this)
6486            }
6487        }
6488    };
6489    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6490    /**Event with signature `NewEpoch(uint64)` and selector `0x31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b`.
6491```solidity
6492event NewEpoch(uint64 epoch);
6493```*/
6494    #[allow(
6495        non_camel_case_types,
6496        non_snake_case,
6497        clippy::pub_underscore_fields,
6498        clippy::style
6499    )]
6500    #[derive(Clone)]
6501    pub struct NewEpoch {
6502        #[allow(missing_docs)]
6503        pub epoch: u64,
6504    }
6505    #[allow(
6506        non_camel_case_types,
6507        non_snake_case,
6508        clippy::pub_underscore_fields,
6509        clippy::style
6510    )]
6511    const _: () = {
6512        use alloy::sol_types as alloy_sol_types;
6513        #[automatically_derived]
6514        impl alloy_sol_types::SolEvent for NewEpoch {
6515            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
6516            type DataToken<'a> = <Self::DataTuple<
6517                'a,
6518            > as alloy_sol_types::SolType>::Token<'a>;
6519            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6520            const SIGNATURE: &'static str = "NewEpoch(uint64)";
6521            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6522                49u8, 234u8, 189u8, 144u8, 153u8, 253u8, 178u8, 93u8, 172u8, 221u8,
6523                210u8, 6u8, 171u8, 255u8, 135u8, 49u8, 30u8, 85u8, 52u8, 65u8, 252u8,
6524                157u8, 15u8, 205u8, 239u8, 32u8, 16u8, 98u8, 215u8, 231u8, 7u8, 27u8,
6525            ]);
6526            const ANONYMOUS: bool = false;
6527            #[allow(unused_variables)]
6528            #[inline]
6529            fn new(
6530                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6531                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6532            ) -> Self {
6533                Self { epoch: data.0 }
6534            }
6535            #[inline]
6536            fn check_signature(
6537                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6538            ) -> alloy_sol_types::Result<()> {
6539                if topics.0 != Self::SIGNATURE_HASH {
6540                    return Err(
6541                        alloy_sol_types::Error::invalid_event_signature_hash(
6542                            Self::SIGNATURE,
6543                            topics.0,
6544                            Self::SIGNATURE_HASH,
6545                        ),
6546                    );
6547                }
6548                Ok(())
6549            }
6550            #[inline]
6551            fn tokenize_body(&self) -> Self::DataToken<'_> {
6552                (
6553                    <alloy::sol_types::sol_data::Uint<
6554                        64,
6555                    > as alloy_sol_types::SolType>::tokenize(&self.epoch),
6556                )
6557            }
6558            #[inline]
6559            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6560                (Self::SIGNATURE_HASH.into(),)
6561            }
6562            #[inline]
6563            fn encode_topics_raw(
6564                &self,
6565                out: &mut [alloy_sol_types::abi::token::WordToken],
6566            ) -> alloy_sol_types::Result<()> {
6567                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6568                    return Err(alloy_sol_types::Error::Overrun);
6569                }
6570                out[0usize] = alloy_sol_types::abi::token::WordToken(
6571                    Self::SIGNATURE_HASH,
6572                );
6573                Ok(())
6574            }
6575        }
6576        #[automatically_derived]
6577        impl alloy_sol_types::private::IntoLogData for NewEpoch {
6578            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6579                From::from(self)
6580            }
6581            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6582                From::from(&self)
6583            }
6584        }
6585        #[automatically_derived]
6586        impl From<&NewEpoch> for alloy_sol_types::private::LogData {
6587            #[inline]
6588            fn from(this: &NewEpoch) -> alloy_sol_types::private::LogData {
6589                alloy_sol_types::SolEvent::encode_log_data(this)
6590            }
6591        }
6592    };
6593    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6594    /**Event with signature `NewState(uint64,uint64,uint256)` and selector `0xa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6`.
6595```solidity
6596event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
6597```*/
6598    #[allow(
6599        non_camel_case_types,
6600        non_snake_case,
6601        clippy::pub_underscore_fields,
6602        clippy::style
6603    )]
6604    #[derive(Clone)]
6605    pub struct NewState {
6606        #[allow(missing_docs)]
6607        pub viewNum: u64,
6608        #[allow(missing_docs)]
6609        pub blockHeight: u64,
6610        #[allow(missing_docs)]
6611        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
6612    }
6613    #[allow(
6614        non_camel_case_types,
6615        non_snake_case,
6616        clippy::pub_underscore_fields,
6617        clippy::style
6618    )]
6619    const _: () = {
6620        use alloy::sol_types as alloy_sol_types;
6621        #[automatically_derived]
6622        impl alloy_sol_types::SolEvent for NewState {
6623            type DataTuple<'a> = (BN254::ScalarField,);
6624            type DataToken<'a> = <Self::DataTuple<
6625                'a,
6626            > as alloy_sol_types::SolType>::Token<'a>;
6627            type TopicList = (
6628                alloy_sol_types::sol_data::FixedBytes<32>,
6629                alloy::sol_types::sol_data::Uint<64>,
6630                alloy::sol_types::sol_data::Uint<64>,
6631            );
6632            const SIGNATURE: &'static str = "NewState(uint64,uint64,uint256)";
6633            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6634                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
6635                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
6636                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
6637            ]);
6638            const ANONYMOUS: bool = false;
6639            #[allow(unused_variables)]
6640            #[inline]
6641            fn new(
6642                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6643                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6644            ) -> Self {
6645                Self {
6646                    viewNum: topics.1,
6647                    blockHeight: topics.2,
6648                    blockCommRoot: data.0,
6649                }
6650            }
6651            #[inline]
6652            fn check_signature(
6653                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6654            ) -> alloy_sol_types::Result<()> {
6655                if topics.0 != Self::SIGNATURE_HASH {
6656                    return Err(
6657                        alloy_sol_types::Error::invalid_event_signature_hash(
6658                            Self::SIGNATURE,
6659                            topics.0,
6660                            Self::SIGNATURE_HASH,
6661                        ),
6662                    );
6663                }
6664                Ok(())
6665            }
6666            #[inline]
6667            fn tokenize_body(&self) -> Self::DataToken<'_> {
6668                (
6669                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
6670                        &self.blockCommRoot,
6671                    ),
6672                )
6673            }
6674            #[inline]
6675            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6676                (
6677                    Self::SIGNATURE_HASH.into(),
6678                    self.viewNum.clone(),
6679                    self.blockHeight.clone(),
6680                )
6681            }
6682            #[inline]
6683            fn encode_topics_raw(
6684                &self,
6685                out: &mut [alloy_sol_types::abi::token::WordToken],
6686            ) -> alloy_sol_types::Result<()> {
6687                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6688                    return Err(alloy_sol_types::Error::Overrun);
6689                }
6690                out[0usize] = alloy_sol_types::abi::token::WordToken(
6691                    Self::SIGNATURE_HASH,
6692                );
6693                out[1usize] = <alloy::sol_types::sol_data::Uint<
6694                    64,
6695                > as alloy_sol_types::EventTopic>::encode_topic(&self.viewNum);
6696                out[2usize] = <alloy::sol_types::sol_data::Uint<
6697                    64,
6698                > as alloy_sol_types::EventTopic>::encode_topic(&self.blockHeight);
6699                Ok(())
6700            }
6701        }
6702        #[automatically_derived]
6703        impl alloy_sol_types::private::IntoLogData for NewState {
6704            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6705                From::from(self)
6706            }
6707            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6708                From::from(&self)
6709            }
6710        }
6711        #[automatically_derived]
6712        impl From<&NewState> for alloy_sol_types::private::LogData {
6713            #[inline]
6714            fn from(this: &NewState) -> alloy_sol_types::private::LogData {
6715                alloy_sol_types::SolEvent::encode_log_data(this)
6716            }
6717        }
6718    };
6719    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6720    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
6721```solidity
6722event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
6723```*/
6724    #[allow(
6725        non_camel_case_types,
6726        non_snake_case,
6727        clippy::pub_underscore_fields,
6728        clippy::style
6729    )]
6730    #[derive(Clone)]
6731    pub struct OwnershipTransferred {
6732        #[allow(missing_docs)]
6733        pub previousOwner: alloy::sol_types::private::Address,
6734        #[allow(missing_docs)]
6735        pub newOwner: alloy::sol_types::private::Address,
6736    }
6737    #[allow(
6738        non_camel_case_types,
6739        non_snake_case,
6740        clippy::pub_underscore_fields,
6741        clippy::style
6742    )]
6743    const _: () = {
6744        use alloy::sol_types as alloy_sol_types;
6745        #[automatically_derived]
6746        impl alloy_sol_types::SolEvent for OwnershipTransferred {
6747            type DataTuple<'a> = ();
6748            type DataToken<'a> = <Self::DataTuple<
6749                'a,
6750            > as alloy_sol_types::SolType>::Token<'a>;
6751            type TopicList = (
6752                alloy_sol_types::sol_data::FixedBytes<32>,
6753                alloy::sol_types::sol_data::Address,
6754                alloy::sol_types::sol_data::Address,
6755            );
6756            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
6757            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6758                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
6759                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
6760                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
6761            ]);
6762            const ANONYMOUS: bool = false;
6763            #[allow(unused_variables)]
6764            #[inline]
6765            fn new(
6766                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6767                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6768            ) -> Self {
6769                Self {
6770                    previousOwner: topics.1,
6771                    newOwner: topics.2,
6772                }
6773            }
6774            #[inline]
6775            fn check_signature(
6776                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6777            ) -> alloy_sol_types::Result<()> {
6778                if topics.0 != Self::SIGNATURE_HASH {
6779                    return Err(
6780                        alloy_sol_types::Error::invalid_event_signature_hash(
6781                            Self::SIGNATURE,
6782                            topics.0,
6783                            Self::SIGNATURE_HASH,
6784                        ),
6785                    );
6786                }
6787                Ok(())
6788            }
6789            #[inline]
6790            fn tokenize_body(&self) -> Self::DataToken<'_> {
6791                ()
6792            }
6793            #[inline]
6794            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6795                (
6796                    Self::SIGNATURE_HASH.into(),
6797                    self.previousOwner.clone(),
6798                    self.newOwner.clone(),
6799                )
6800            }
6801            #[inline]
6802            fn encode_topics_raw(
6803                &self,
6804                out: &mut [alloy_sol_types::abi::token::WordToken],
6805            ) -> alloy_sol_types::Result<()> {
6806                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6807                    return Err(alloy_sol_types::Error::Overrun);
6808                }
6809                out[0usize] = alloy_sol_types::abi::token::WordToken(
6810                    Self::SIGNATURE_HASH,
6811                );
6812                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6813                    &self.previousOwner,
6814                );
6815                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6816                    &self.newOwner,
6817                );
6818                Ok(())
6819            }
6820        }
6821        #[automatically_derived]
6822        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
6823            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6824                From::from(self)
6825            }
6826            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6827                From::from(&self)
6828            }
6829        }
6830        #[automatically_derived]
6831        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
6832            #[inline]
6833            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
6834                alloy_sol_types::SolEvent::encode_log_data(this)
6835            }
6836        }
6837    };
6838    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6839    /**Event with signature `PermissionedProverNotRequired()` and selector `0x9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450`.
6840```solidity
6841event PermissionedProverNotRequired();
6842```*/
6843    #[allow(
6844        non_camel_case_types,
6845        non_snake_case,
6846        clippy::pub_underscore_fields,
6847        clippy::style
6848    )]
6849    #[derive(Clone)]
6850    pub struct PermissionedProverNotRequired {}
6851    #[allow(
6852        non_camel_case_types,
6853        non_snake_case,
6854        clippy::pub_underscore_fields,
6855        clippy::style
6856    )]
6857    const _: () = {
6858        use alloy::sol_types as alloy_sol_types;
6859        #[automatically_derived]
6860        impl alloy_sol_types::SolEvent for PermissionedProverNotRequired {
6861            type DataTuple<'a> = ();
6862            type DataToken<'a> = <Self::DataTuple<
6863                'a,
6864            > as alloy_sol_types::SolType>::Token<'a>;
6865            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6866            const SIGNATURE: &'static str = "PermissionedProverNotRequired()";
6867            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6868                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
6869                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
6870                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
6871            ]);
6872            const ANONYMOUS: bool = false;
6873            #[allow(unused_variables)]
6874            #[inline]
6875            fn new(
6876                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6877                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6878            ) -> Self {
6879                Self {}
6880            }
6881            #[inline]
6882            fn check_signature(
6883                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6884            ) -> alloy_sol_types::Result<()> {
6885                if topics.0 != Self::SIGNATURE_HASH {
6886                    return Err(
6887                        alloy_sol_types::Error::invalid_event_signature_hash(
6888                            Self::SIGNATURE,
6889                            topics.0,
6890                            Self::SIGNATURE_HASH,
6891                        ),
6892                    );
6893                }
6894                Ok(())
6895            }
6896            #[inline]
6897            fn tokenize_body(&self) -> Self::DataToken<'_> {
6898                ()
6899            }
6900            #[inline]
6901            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6902                (Self::SIGNATURE_HASH.into(),)
6903            }
6904            #[inline]
6905            fn encode_topics_raw(
6906                &self,
6907                out: &mut [alloy_sol_types::abi::token::WordToken],
6908            ) -> alloy_sol_types::Result<()> {
6909                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6910                    return Err(alloy_sol_types::Error::Overrun);
6911                }
6912                out[0usize] = alloy_sol_types::abi::token::WordToken(
6913                    Self::SIGNATURE_HASH,
6914                );
6915                Ok(())
6916            }
6917        }
6918        #[automatically_derived]
6919        impl alloy_sol_types::private::IntoLogData for PermissionedProverNotRequired {
6920            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6921                From::from(self)
6922            }
6923            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6924                From::from(&self)
6925            }
6926        }
6927        #[automatically_derived]
6928        impl From<&PermissionedProverNotRequired> for alloy_sol_types::private::LogData {
6929            #[inline]
6930            fn from(
6931                this: &PermissionedProverNotRequired,
6932            ) -> alloy_sol_types::private::LogData {
6933                alloy_sol_types::SolEvent::encode_log_data(this)
6934            }
6935        }
6936    };
6937    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6938    /**Event with signature `PermissionedProverRequired(address)` and selector `0x8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072`.
6939```solidity
6940event PermissionedProverRequired(address permissionedProver);
6941```*/
6942    #[allow(
6943        non_camel_case_types,
6944        non_snake_case,
6945        clippy::pub_underscore_fields,
6946        clippy::style
6947    )]
6948    #[derive(Clone)]
6949    pub struct PermissionedProverRequired {
6950        #[allow(missing_docs)]
6951        pub permissionedProver: alloy::sol_types::private::Address,
6952    }
6953    #[allow(
6954        non_camel_case_types,
6955        non_snake_case,
6956        clippy::pub_underscore_fields,
6957        clippy::style
6958    )]
6959    const _: () = {
6960        use alloy::sol_types as alloy_sol_types;
6961        #[automatically_derived]
6962        impl alloy_sol_types::SolEvent for PermissionedProverRequired {
6963            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
6964            type DataToken<'a> = <Self::DataTuple<
6965                'a,
6966            > as alloy_sol_types::SolType>::Token<'a>;
6967            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6968            const SIGNATURE: &'static str = "PermissionedProverRequired(address)";
6969            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6970                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
6971                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
6972                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
6973            ]);
6974            const ANONYMOUS: bool = false;
6975            #[allow(unused_variables)]
6976            #[inline]
6977            fn new(
6978                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6979                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6980            ) -> Self {
6981                Self { permissionedProver: data.0 }
6982            }
6983            #[inline]
6984            fn check_signature(
6985                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6986            ) -> alloy_sol_types::Result<()> {
6987                if topics.0 != Self::SIGNATURE_HASH {
6988                    return Err(
6989                        alloy_sol_types::Error::invalid_event_signature_hash(
6990                            Self::SIGNATURE,
6991                            topics.0,
6992                            Self::SIGNATURE_HASH,
6993                        ),
6994                    );
6995                }
6996                Ok(())
6997            }
6998            #[inline]
6999            fn tokenize_body(&self) -> Self::DataToken<'_> {
7000                (
7001                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7002                        &self.permissionedProver,
7003                    ),
7004                )
7005            }
7006            #[inline]
7007            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7008                (Self::SIGNATURE_HASH.into(),)
7009            }
7010            #[inline]
7011            fn encode_topics_raw(
7012                &self,
7013                out: &mut [alloy_sol_types::abi::token::WordToken],
7014            ) -> alloy_sol_types::Result<()> {
7015                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7016                    return Err(alloy_sol_types::Error::Overrun);
7017                }
7018                out[0usize] = alloy_sol_types::abi::token::WordToken(
7019                    Self::SIGNATURE_HASH,
7020                );
7021                Ok(())
7022            }
7023        }
7024        #[automatically_derived]
7025        impl alloy_sol_types::private::IntoLogData for PermissionedProverRequired {
7026            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7027                From::from(self)
7028            }
7029            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7030                From::from(&self)
7031            }
7032        }
7033        #[automatically_derived]
7034        impl From<&PermissionedProverRequired> for alloy_sol_types::private::LogData {
7035            #[inline]
7036            fn from(
7037                this: &PermissionedProverRequired,
7038            ) -> alloy_sol_types::private::LogData {
7039                alloy_sol_types::SolEvent::encode_log_data(this)
7040            }
7041        }
7042    };
7043    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7044    /**Event with signature `Upgrade(address)` and selector `0xf78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d`.
7045```solidity
7046event Upgrade(address implementation);
7047```*/
7048    #[allow(
7049        non_camel_case_types,
7050        non_snake_case,
7051        clippy::pub_underscore_fields,
7052        clippy::style
7053    )]
7054    #[derive(Clone)]
7055    pub struct Upgrade {
7056        #[allow(missing_docs)]
7057        pub implementation: alloy::sol_types::private::Address,
7058    }
7059    #[allow(
7060        non_camel_case_types,
7061        non_snake_case,
7062        clippy::pub_underscore_fields,
7063        clippy::style
7064    )]
7065    const _: () = {
7066        use alloy::sol_types as alloy_sol_types;
7067        #[automatically_derived]
7068        impl alloy_sol_types::SolEvent for Upgrade {
7069            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
7070            type DataToken<'a> = <Self::DataTuple<
7071                'a,
7072            > as alloy_sol_types::SolType>::Token<'a>;
7073            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7074            const SIGNATURE: &'static str = "Upgrade(address)";
7075            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7076                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
7077                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
7078                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
7079            ]);
7080            const ANONYMOUS: bool = false;
7081            #[allow(unused_variables)]
7082            #[inline]
7083            fn new(
7084                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7085                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7086            ) -> Self {
7087                Self { implementation: data.0 }
7088            }
7089            #[inline]
7090            fn check_signature(
7091                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7092            ) -> alloy_sol_types::Result<()> {
7093                if topics.0 != Self::SIGNATURE_HASH {
7094                    return Err(
7095                        alloy_sol_types::Error::invalid_event_signature_hash(
7096                            Self::SIGNATURE,
7097                            topics.0,
7098                            Self::SIGNATURE_HASH,
7099                        ),
7100                    );
7101                }
7102                Ok(())
7103            }
7104            #[inline]
7105            fn tokenize_body(&self) -> Self::DataToken<'_> {
7106                (
7107                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7108                        &self.implementation,
7109                    ),
7110                )
7111            }
7112            #[inline]
7113            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7114                (Self::SIGNATURE_HASH.into(),)
7115            }
7116            #[inline]
7117            fn encode_topics_raw(
7118                &self,
7119                out: &mut [alloy_sol_types::abi::token::WordToken],
7120            ) -> alloy_sol_types::Result<()> {
7121                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7122                    return Err(alloy_sol_types::Error::Overrun);
7123                }
7124                out[0usize] = alloy_sol_types::abi::token::WordToken(
7125                    Self::SIGNATURE_HASH,
7126                );
7127                Ok(())
7128            }
7129        }
7130        #[automatically_derived]
7131        impl alloy_sol_types::private::IntoLogData for Upgrade {
7132            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7133                From::from(self)
7134            }
7135            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7136                From::from(&self)
7137            }
7138        }
7139        #[automatically_derived]
7140        impl From<&Upgrade> for alloy_sol_types::private::LogData {
7141            #[inline]
7142            fn from(this: &Upgrade) -> alloy_sol_types::private::LogData {
7143                alloy_sol_types::SolEvent::encode_log_data(this)
7144            }
7145        }
7146    };
7147    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7148    /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`.
7149```solidity
7150event Upgraded(address indexed implementation);
7151```*/
7152    #[allow(
7153        non_camel_case_types,
7154        non_snake_case,
7155        clippy::pub_underscore_fields,
7156        clippy::style
7157    )]
7158    #[derive(Clone)]
7159    pub struct Upgraded {
7160        #[allow(missing_docs)]
7161        pub implementation: alloy::sol_types::private::Address,
7162    }
7163    #[allow(
7164        non_camel_case_types,
7165        non_snake_case,
7166        clippy::pub_underscore_fields,
7167        clippy::style
7168    )]
7169    const _: () = {
7170        use alloy::sol_types as alloy_sol_types;
7171        #[automatically_derived]
7172        impl alloy_sol_types::SolEvent for Upgraded {
7173            type DataTuple<'a> = ();
7174            type DataToken<'a> = <Self::DataTuple<
7175                'a,
7176            > as alloy_sol_types::SolType>::Token<'a>;
7177            type TopicList = (
7178                alloy_sol_types::sol_data::FixedBytes<32>,
7179                alloy::sol_types::sol_data::Address,
7180            );
7181            const SIGNATURE: &'static str = "Upgraded(address)";
7182            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7183                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
7184                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
7185                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
7186            ]);
7187            const ANONYMOUS: bool = false;
7188            #[allow(unused_variables)]
7189            #[inline]
7190            fn new(
7191                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7192                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7193            ) -> Self {
7194                Self { implementation: topics.1 }
7195            }
7196            #[inline]
7197            fn check_signature(
7198                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7199            ) -> alloy_sol_types::Result<()> {
7200                if topics.0 != Self::SIGNATURE_HASH {
7201                    return Err(
7202                        alloy_sol_types::Error::invalid_event_signature_hash(
7203                            Self::SIGNATURE,
7204                            topics.0,
7205                            Self::SIGNATURE_HASH,
7206                        ),
7207                    );
7208                }
7209                Ok(())
7210            }
7211            #[inline]
7212            fn tokenize_body(&self) -> Self::DataToken<'_> {
7213                ()
7214            }
7215            #[inline]
7216            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7217                (Self::SIGNATURE_HASH.into(), self.implementation.clone())
7218            }
7219            #[inline]
7220            fn encode_topics_raw(
7221                &self,
7222                out: &mut [alloy_sol_types::abi::token::WordToken],
7223            ) -> alloy_sol_types::Result<()> {
7224                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7225                    return Err(alloy_sol_types::Error::Overrun);
7226                }
7227                out[0usize] = alloy_sol_types::abi::token::WordToken(
7228                    Self::SIGNATURE_HASH,
7229                );
7230                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7231                    &self.implementation,
7232                );
7233                Ok(())
7234            }
7235        }
7236        #[automatically_derived]
7237        impl alloy_sol_types::private::IntoLogData for Upgraded {
7238            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7239                From::from(self)
7240            }
7241            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7242                From::from(&self)
7243            }
7244        }
7245        #[automatically_derived]
7246        impl From<&Upgraded> for alloy_sol_types::private::LogData {
7247            #[inline]
7248            fn from(this: &Upgraded) -> alloy_sol_types::private::LogData {
7249                alloy_sol_types::SolEvent::encode_log_data(this)
7250            }
7251        }
7252    };
7253    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7254    /**Function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc`.
7255```solidity
7256function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
7257```*/
7258    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7259    #[derive(Clone)]
7260    pub struct UPGRADE_INTERFACE_VERSIONCall {}
7261    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7262    ///Container type for the return parameters of the [`UPGRADE_INTERFACE_VERSION()`](UPGRADE_INTERFACE_VERSIONCall) function.
7263    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7264    #[derive(Clone)]
7265    pub struct UPGRADE_INTERFACE_VERSIONReturn {
7266        #[allow(missing_docs)]
7267        pub _0: alloy::sol_types::private::String,
7268    }
7269    #[allow(
7270        non_camel_case_types,
7271        non_snake_case,
7272        clippy::pub_underscore_fields,
7273        clippy::style
7274    )]
7275    const _: () = {
7276        use alloy::sol_types as alloy_sol_types;
7277        {
7278            #[doc(hidden)]
7279            type UnderlyingSolTuple<'a> = ();
7280            #[doc(hidden)]
7281            type UnderlyingRustTuple<'a> = ();
7282            #[cfg(test)]
7283            #[allow(dead_code, unreachable_patterns)]
7284            fn _type_assertion(
7285                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7286            ) {
7287                match _t {
7288                    alloy_sol_types::private::AssertTypeEq::<
7289                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7290                    >(_) => {}
7291                }
7292            }
7293            #[automatically_derived]
7294            #[doc(hidden)]
7295            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONCall>
7296            for UnderlyingRustTuple<'_> {
7297                fn from(value: UPGRADE_INTERFACE_VERSIONCall) -> Self {
7298                    ()
7299                }
7300            }
7301            #[automatically_derived]
7302            #[doc(hidden)]
7303            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7304            for UPGRADE_INTERFACE_VERSIONCall {
7305                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7306                    Self {}
7307                }
7308            }
7309        }
7310        {
7311            #[doc(hidden)]
7312            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
7313            #[doc(hidden)]
7314            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
7315            #[cfg(test)]
7316            #[allow(dead_code, unreachable_patterns)]
7317            fn _type_assertion(
7318                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7319            ) {
7320                match _t {
7321                    alloy_sol_types::private::AssertTypeEq::<
7322                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7323                    >(_) => {}
7324                }
7325            }
7326            #[automatically_derived]
7327            #[doc(hidden)]
7328            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONReturn>
7329            for UnderlyingRustTuple<'_> {
7330                fn from(value: UPGRADE_INTERFACE_VERSIONReturn) -> Self {
7331                    (value._0,)
7332                }
7333            }
7334            #[automatically_derived]
7335            #[doc(hidden)]
7336            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7337            for UPGRADE_INTERFACE_VERSIONReturn {
7338                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7339                    Self { _0: tuple.0 }
7340                }
7341            }
7342        }
7343        #[automatically_derived]
7344        impl alloy_sol_types::SolCall for UPGRADE_INTERFACE_VERSIONCall {
7345            type Parameters<'a> = ();
7346            type Token<'a> = <Self::Parameters<
7347                'a,
7348            > as alloy_sol_types::SolType>::Token<'a>;
7349            type Return = UPGRADE_INTERFACE_VERSIONReturn;
7350            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
7351            type ReturnToken<'a> = <Self::ReturnTuple<
7352                'a,
7353            > as alloy_sol_types::SolType>::Token<'a>;
7354            const SIGNATURE: &'static str = "UPGRADE_INTERFACE_VERSION()";
7355            const SELECTOR: [u8; 4] = [173u8, 60u8, 177u8, 204u8];
7356            #[inline]
7357            fn new<'a>(
7358                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7359            ) -> Self {
7360                tuple.into()
7361            }
7362            #[inline]
7363            fn tokenize(&self) -> Self::Token<'_> {
7364                ()
7365            }
7366            #[inline]
7367            fn abi_decode_returns(
7368                data: &[u8],
7369                validate: bool,
7370            ) -> alloy_sol_types::Result<Self::Return> {
7371                <Self::ReturnTuple<
7372                    '_,
7373                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7374                    .map(Into::into)
7375            }
7376        }
7377    };
7378    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7379    /**Function with signature `_getVk()` and selector `0x12173c2c`.
7380```solidity
7381function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
7382```*/
7383    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7384    #[derive(Clone)]
7385    pub struct _getVkCall {}
7386    #[derive()]
7387    ///Container type for the return parameters of the [`_getVk()`](_getVkCall) function.
7388    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7389    #[derive(Clone)]
7390    pub struct _getVkReturn {
7391        #[allow(missing_docs)]
7392        pub vk: <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
7393    }
7394    #[allow(
7395        non_camel_case_types,
7396        non_snake_case,
7397        clippy::pub_underscore_fields,
7398        clippy::style
7399    )]
7400    const _: () = {
7401        use alloy::sol_types as alloy_sol_types;
7402        {
7403            #[doc(hidden)]
7404            type UnderlyingSolTuple<'a> = ();
7405            #[doc(hidden)]
7406            type UnderlyingRustTuple<'a> = ();
7407            #[cfg(test)]
7408            #[allow(dead_code, unreachable_patterns)]
7409            fn _type_assertion(
7410                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7411            ) {
7412                match _t {
7413                    alloy_sol_types::private::AssertTypeEq::<
7414                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7415                    >(_) => {}
7416                }
7417            }
7418            #[automatically_derived]
7419            #[doc(hidden)]
7420            impl ::core::convert::From<_getVkCall> for UnderlyingRustTuple<'_> {
7421                fn from(value: _getVkCall) -> Self {
7422                    ()
7423                }
7424            }
7425            #[automatically_derived]
7426            #[doc(hidden)]
7427            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkCall {
7428                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7429                    Self {}
7430                }
7431            }
7432        }
7433        {
7434            #[doc(hidden)]
7435            type UnderlyingSolTuple<'a> = (IPlonkVerifier::VerifyingKey,);
7436            #[doc(hidden)]
7437            type UnderlyingRustTuple<'a> = (
7438                <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
7439            );
7440            #[cfg(test)]
7441            #[allow(dead_code, unreachable_patterns)]
7442            fn _type_assertion(
7443                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7444            ) {
7445                match _t {
7446                    alloy_sol_types::private::AssertTypeEq::<
7447                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7448                    >(_) => {}
7449                }
7450            }
7451            #[automatically_derived]
7452            #[doc(hidden)]
7453            impl ::core::convert::From<_getVkReturn> for UnderlyingRustTuple<'_> {
7454                fn from(value: _getVkReturn) -> Self {
7455                    (value.vk,)
7456                }
7457            }
7458            #[automatically_derived]
7459            #[doc(hidden)]
7460            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkReturn {
7461                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7462                    Self { vk: tuple.0 }
7463                }
7464            }
7465        }
7466        #[automatically_derived]
7467        impl alloy_sol_types::SolCall for _getVkCall {
7468            type Parameters<'a> = ();
7469            type Token<'a> = <Self::Parameters<
7470                'a,
7471            > as alloy_sol_types::SolType>::Token<'a>;
7472            type Return = _getVkReturn;
7473            type ReturnTuple<'a> = (IPlonkVerifier::VerifyingKey,);
7474            type ReturnToken<'a> = <Self::ReturnTuple<
7475                'a,
7476            > as alloy_sol_types::SolType>::Token<'a>;
7477            const SIGNATURE: &'static str = "_getVk()";
7478            const SELECTOR: [u8; 4] = [18u8, 23u8, 60u8, 44u8];
7479            #[inline]
7480            fn new<'a>(
7481                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7482            ) -> Self {
7483                tuple.into()
7484            }
7485            #[inline]
7486            fn tokenize(&self) -> Self::Token<'_> {
7487                ()
7488            }
7489            #[inline]
7490            fn abi_decode_returns(
7491                data: &[u8],
7492                validate: bool,
7493            ) -> alloy_sol_types::Result<Self::Return> {
7494                <Self::ReturnTuple<
7495                    '_,
7496                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7497                    .map(Into::into)
7498            }
7499        }
7500    };
7501    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7502    /**Function with signature `blocksPerEpoch()` and selector `0xf0682054`.
7503```solidity
7504function blocksPerEpoch() external view returns (uint64);
7505```*/
7506    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7507    #[derive(Clone)]
7508    pub struct blocksPerEpochCall {}
7509    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7510    ///Container type for the return parameters of the [`blocksPerEpoch()`](blocksPerEpochCall) function.
7511    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7512    #[derive(Clone)]
7513    pub struct blocksPerEpochReturn {
7514        #[allow(missing_docs)]
7515        pub _0: u64,
7516    }
7517    #[allow(
7518        non_camel_case_types,
7519        non_snake_case,
7520        clippy::pub_underscore_fields,
7521        clippy::style
7522    )]
7523    const _: () = {
7524        use alloy::sol_types as alloy_sol_types;
7525        {
7526            #[doc(hidden)]
7527            type UnderlyingSolTuple<'a> = ();
7528            #[doc(hidden)]
7529            type UnderlyingRustTuple<'a> = ();
7530            #[cfg(test)]
7531            #[allow(dead_code, unreachable_patterns)]
7532            fn _type_assertion(
7533                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7534            ) {
7535                match _t {
7536                    alloy_sol_types::private::AssertTypeEq::<
7537                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7538                    >(_) => {}
7539                }
7540            }
7541            #[automatically_derived]
7542            #[doc(hidden)]
7543            impl ::core::convert::From<blocksPerEpochCall> for UnderlyingRustTuple<'_> {
7544                fn from(value: blocksPerEpochCall) -> Self {
7545                    ()
7546                }
7547            }
7548            #[automatically_derived]
7549            #[doc(hidden)]
7550            impl ::core::convert::From<UnderlyingRustTuple<'_>> for blocksPerEpochCall {
7551                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7552                    Self {}
7553                }
7554            }
7555        }
7556        {
7557            #[doc(hidden)]
7558            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7559            #[doc(hidden)]
7560            type UnderlyingRustTuple<'a> = (u64,);
7561            #[cfg(test)]
7562            #[allow(dead_code, unreachable_patterns)]
7563            fn _type_assertion(
7564                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7565            ) {
7566                match _t {
7567                    alloy_sol_types::private::AssertTypeEq::<
7568                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7569                    >(_) => {}
7570                }
7571            }
7572            #[automatically_derived]
7573            #[doc(hidden)]
7574            impl ::core::convert::From<blocksPerEpochReturn>
7575            for UnderlyingRustTuple<'_> {
7576                fn from(value: blocksPerEpochReturn) -> Self {
7577                    (value._0,)
7578                }
7579            }
7580            #[automatically_derived]
7581            #[doc(hidden)]
7582            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7583            for blocksPerEpochReturn {
7584                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7585                    Self { _0: tuple.0 }
7586                }
7587            }
7588        }
7589        #[automatically_derived]
7590        impl alloy_sol_types::SolCall for blocksPerEpochCall {
7591            type Parameters<'a> = ();
7592            type Token<'a> = <Self::Parameters<
7593                'a,
7594            > as alloy_sol_types::SolType>::Token<'a>;
7595            type Return = blocksPerEpochReturn;
7596            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7597            type ReturnToken<'a> = <Self::ReturnTuple<
7598                'a,
7599            > as alloy_sol_types::SolType>::Token<'a>;
7600            const SIGNATURE: &'static str = "blocksPerEpoch()";
7601            const SELECTOR: [u8; 4] = [240u8, 104u8, 32u8, 84u8];
7602            #[inline]
7603            fn new<'a>(
7604                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7605            ) -> Self {
7606                tuple.into()
7607            }
7608            #[inline]
7609            fn tokenize(&self) -> Self::Token<'_> {
7610                ()
7611            }
7612            #[inline]
7613            fn abi_decode_returns(
7614                data: &[u8],
7615                validate: bool,
7616            ) -> alloy_sol_types::Result<Self::Return> {
7617                <Self::ReturnTuple<
7618                    '_,
7619                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7620                    .map(Into::into)
7621            }
7622        }
7623    };
7624    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7625    /**Function with signature `currentBlockNumber()` and selector `0x378ec23b`.
7626```solidity
7627function currentBlockNumber() external view returns (uint256);
7628```*/
7629    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7630    #[derive(Clone)]
7631    pub struct currentBlockNumberCall {}
7632    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7633    ///Container type for the return parameters of the [`currentBlockNumber()`](currentBlockNumberCall) function.
7634    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7635    #[derive(Clone)]
7636    pub struct currentBlockNumberReturn {
7637        #[allow(missing_docs)]
7638        pub _0: alloy::sol_types::private::primitives::aliases::U256,
7639    }
7640    #[allow(
7641        non_camel_case_types,
7642        non_snake_case,
7643        clippy::pub_underscore_fields,
7644        clippy::style
7645    )]
7646    const _: () = {
7647        use alloy::sol_types as alloy_sol_types;
7648        {
7649            #[doc(hidden)]
7650            type UnderlyingSolTuple<'a> = ();
7651            #[doc(hidden)]
7652            type UnderlyingRustTuple<'a> = ();
7653            #[cfg(test)]
7654            #[allow(dead_code, unreachable_patterns)]
7655            fn _type_assertion(
7656                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7657            ) {
7658                match _t {
7659                    alloy_sol_types::private::AssertTypeEq::<
7660                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7661                    >(_) => {}
7662                }
7663            }
7664            #[automatically_derived]
7665            #[doc(hidden)]
7666            impl ::core::convert::From<currentBlockNumberCall>
7667            for UnderlyingRustTuple<'_> {
7668                fn from(value: currentBlockNumberCall) -> Self {
7669                    ()
7670                }
7671            }
7672            #[automatically_derived]
7673            #[doc(hidden)]
7674            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7675            for currentBlockNumberCall {
7676                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7677                    Self {}
7678                }
7679            }
7680        }
7681        {
7682            #[doc(hidden)]
7683            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7684            #[doc(hidden)]
7685            type UnderlyingRustTuple<'a> = (
7686                alloy::sol_types::private::primitives::aliases::U256,
7687            );
7688            #[cfg(test)]
7689            #[allow(dead_code, unreachable_patterns)]
7690            fn _type_assertion(
7691                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7692            ) {
7693                match _t {
7694                    alloy_sol_types::private::AssertTypeEq::<
7695                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7696                    >(_) => {}
7697                }
7698            }
7699            #[automatically_derived]
7700            #[doc(hidden)]
7701            impl ::core::convert::From<currentBlockNumberReturn>
7702            for UnderlyingRustTuple<'_> {
7703                fn from(value: currentBlockNumberReturn) -> Self {
7704                    (value._0,)
7705                }
7706            }
7707            #[automatically_derived]
7708            #[doc(hidden)]
7709            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7710            for currentBlockNumberReturn {
7711                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7712                    Self { _0: tuple.0 }
7713                }
7714            }
7715        }
7716        #[automatically_derived]
7717        impl alloy_sol_types::SolCall for currentBlockNumberCall {
7718            type Parameters<'a> = ();
7719            type Token<'a> = <Self::Parameters<
7720                'a,
7721            > as alloy_sol_types::SolType>::Token<'a>;
7722            type Return = currentBlockNumberReturn;
7723            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7724            type ReturnToken<'a> = <Self::ReturnTuple<
7725                'a,
7726            > as alloy_sol_types::SolType>::Token<'a>;
7727            const SIGNATURE: &'static str = "currentBlockNumber()";
7728            const SELECTOR: [u8; 4] = [55u8, 142u8, 194u8, 59u8];
7729            #[inline]
7730            fn new<'a>(
7731                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7732            ) -> Self {
7733                tuple.into()
7734            }
7735            #[inline]
7736            fn tokenize(&self) -> Self::Token<'_> {
7737                ()
7738            }
7739            #[inline]
7740            fn abi_decode_returns(
7741                data: &[u8],
7742                validate: bool,
7743            ) -> alloy_sol_types::Result<Self::Return> {
7744                <Self::ReturnTuple<
7745                    '_,
7746                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7747                    .map(Into::into)
7748            }
7749        }
7750    };
7751    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7752    /**Function with signature `currentEpoch()` and selector `0x76671808`.
7753```solidity
7754function currentEpoch() external view returns (uint64);
7755```*/
7756    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7757    #[derive(Clone)]
7758    pub struct currentEpochCall {}
7759    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7760    ///Container type for the return parameters of the [`currentEpoch()`](currentEpochCall) function.
7761    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7762    #[derive(Clone)]
7763    pub struct currentEpochReturn {
7764        #[allow(missing_docs)]
7765        pub _0: u64,
7766    }
7767    #[allow(
7768        non_camel_case_types,
7769        non_snake_case,
7770        clippy::pub_underscore_fields,
7771        clippy::style
7772    )]
7773    const _: () = {
7774        use alloy::sol_types as alloy_sol_types;
7775        {
7776            #[doc(hidden)]
7777            type UnderlyingSolTuple<'a> = ();
7778            #[doc(hidden)]
7779            type UnderlyingRustTuple<'a> = ();
7780            #[cfg(test)]
7781            #[allow(dead_code, unreachable_patterns)]
7782            fn _type_assertion(
7783                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7784            ) {
7785                match _t {
7786                    alloy_sol_types::private::AssertTypeEq::<
7787                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7788                    >(_) => {}
7789                }
7790            }
7791            #[automatically_derived]
7792            #[doc(hidden)]
7793            impl ::core::convert::From<currentEpochCall> for UnderlyingRustTuple<'_> {
7794                fn from(value: currentEpochCall) -> Self {
7795                    ()
7796                }
7797            }
7798            #[automatically_derived]
7799            #[doc(hidden)]
7800            impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentEpochCall {
7801                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7802                    Self {}
7803                }
7804            }
7805        }
7806        {
7807            #[doc(hidden)]
7808            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7809            #[doc(hidden)]
7810            type UnderlyingRustTuple<'a> = (u64,);
7811            #[cfg(test)]
7812            #[allow(dead_code, unreachable_patterns)]
7813            fn _type_assertion(
7814                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7815            ) {
7816                match _t {
7817                    alloy_sol_types::private::AssertTypeEq::<
7818                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7819                    >(_) => {}
7820                }
7821            }
7822            #[automatically_derived]
7823            #[doc(hidden)]
7824            impl ::core::convert::From<currentEpochReturn> for UnderlyingRustTuple<'_> {
7825                fn from(value: currentEpochReturn) -> Self {
7826                    (value._0,)
7827                }
7828            }
7829            #[automatically_derived]
7830            #[doc(hidden)]
7831            impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentEpochReturn {
7832                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7833                    Self { _0: tuple.0 }
7834                }
7835            }
7836        }
7837        #[automatically_derived]
7838        impl alloy_sol_types::SolCall for currentEpochCall {
7839            type Parameters<'a> = ();
7840            type Token<'a> = <Self::Parameters<
7841                'a,
7842            > as alloy_sol_types::SolType>::Token<'a>;
7843            type Return = currentEpochReturn;
7844            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7845            type ReturnToken<'a> = <Self::ReturnTuple<
7846                'a,
7847            > as alloy_sol_types::SolType>::Token<'a>;
7848            const SIGNATURE: &'static str = "currentEpoch()";
7849            const SELECTOR: [u8; 4] = [118u8, 103u8, 24u8, 8u8];
7850            #[inline]
7851            fn new<'a>(
7852                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7853            ) -> Self {
7854                tuple.into()
7855            }
7856            #[inline]
7857            fn tokenize(&self) -> Self::Token<'_> {
7858                ()
7859            }
7860            #[inline]
7861            fn abi_decode_returns(
7862                data: &[u8],
7863                validate: bool,
7864            ) -> alloy_sol_types::Result<Self::Return> {
7865                <Self::ReturnTuple<
7866                    '_,
7867                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7868                    .map(Into::into)
7869            }
7870        }
7871    };
7872    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7873    /**Function with signature `disablePermissionedProverMode()` and selector `0x69cc6a04`.
7874```solidity
7875function disablePermissionedProverMode() external;
7876```*/
7877    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7878    #[derive(Clone)]
7879    pub struct disablePermissionedProverModeCall {}
7880    ///Container type for the return parameters of the [`disablePermissionedProverMode()`](disablePermissionedProverModeCall) function.
7881    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7882    #[derive(Clone)]
7883    pub struct disablePermissionedProverModeReturn {}
7884    #[allow(
7885        non_camel_case_types,
7886        non_snake_case,
7887        clippy::pub_underscore_fields,
7888        clippy::style
7889    )]
7890    const _: () = {
7891        use alloy::sol_types as alloy_sol_types;
7892        {
7893            #[doc(hidden)]
7894            type UnderlyingSolTuple<'a> = ();
7895            #[doc(hidden)]
7896            type UnderlyingRustTuple<'a> = ();
7897            #[cfg(test)]
7898            #[allow(dead_code, unreachable_patterns)]
7899            fn _type_assertion(
7900                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7901            ) {
7902                match _t {
7903                    alloy_sol_types::private::AssertTypeEq::<
7904                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7905                    >(_) => {}
7906                }
7907            }
7908            #[automatically_derived]
7909            #[doc(hidden)]
7910            impl ::core::convert::From<disablePermissionedProverModeCall>
7911            for UnderlyingRustTuple<'_> {
7912                fn from(value: disablePermissionedProverModeCall) -> Self {
7913                    ()
7914                }
7915            }
7916            #[automatically_derived]
7917            #[doc(hidden)]
7918            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7919            for disablePermissionedProverModeCall {
7920                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7921                    Self {}
7922                }
7923            }
7924        }
7925        {
7926            #[doc(hidden)]
7927            type UnderlyingSolTuple<'a> = ();
7928            #[doc(hidden)]
7929            type UnderlyingRustTuple<'a> = ();
7930            #[cfg(test)]
7931            #[allow(dead_code, unreachable_patterns)]
7932            fn _type_assertion(
7933                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7934            ) {
7935                match _t {
7936                    alloy_sol_types::private::AssertTypeEq::<
7937                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7938                    >(_) => {}
7939                }
7940            }
7941            #[automatically_derived]
7942            #[doc(hidden)]
7943            impl ::core::convert::From<disablePermissionedProverModeReturn>
7944            for UnderlyingRustTuple<'_> {
7945                fn from(value: disablePermissionedProverModeReturn) -> Self {
7946                    ()
7947                }
7948            }
7949            #[automatically_derived]
7950            #[doc(hidden)]
7951            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7952            for disablePermissionedProverModeReturn {
7953                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7954                    Self {}
7955                }
7956            }
7957        }
7958        #[automatically_derived]
7959        impl alloy_sol_types::SolCall for disablePermissionedProverModeCall {
7960            type Parameters<'a> = ();
7961            type Token<'a> = <Self::Parameters<
7962                'a,
7963            > as alloy_sol_types::SolType>::Token<'a>;
7964            type Return = disablePermissionedProverModeReturn;
7965            type ReturnTuple<'a> = ();
7966            type ReturnToken<'a> = <Self::ReturnTuple<
7967                'a,
7968            > as alloy_sol_types::SolType>::Token<'a>;
7969            const SIGNATURE: &'static str = "disablePermissionedProverMode()";
7970            const SELECTOR: [u8; 4] = [105u8, 204u8, 106u8, 4u8];
7971            #[inline]
7972            fn new<'a>(
7973                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7974            ) -> Self {
7975                tuple.into()
7976            }
7977            #[inline]
7978            fn tokenize(&self) -> Self::Token<'_> {
7979                ()
7980            }
7981            #[inline]
7982            fn abi_decode_returns(
7983                data: &[u8],
7984                validate: bool,
7985            ) -> alloy_sol_types::Result<Self::Return> {
7986                <Self::ReturnTuple<
7987                    '_,
7988                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7989                    .map(Into::into)
7990            }
7991        }
7992    };
7993    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7994    /**Function with signature `epochFromBlockNumber(uint64,uint64)` and selector `0x90c14390`.
7995```solidity
7996function epochFromBlockNumber(uint64 _blockNum, uint64 _blocksPerEpoch) external pure returns (uint64);
7997```*/
7998    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7999    #[derive(Clone)]
8000    pub struct epochFromBlockNumberCall {
8001        #[allow(missing_docs)]
8002        pub _blockNum: u64,
8003        #[allow(missing_docs)]
8004        pub _blocksPerEpoch: u64,
8005    }
8006    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8007    ///Container type for the return parameters of the [`epochFromBlockNumber(uint64,uint64)`](epochFromBlockNumberCall) function.
8008    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8009    #[derive(Clone)]
8010    pub struct epochFromBlockNumberReturn {
8011        #[allow(missing_docs)]
8012        pub _0: u64,
8013    }
8014    #[allow(
8015        non_camel_case_types,
8016        non_snake_case,
8017        clippy::pub_underscore_fields,
8018        clippy::style
8019    )]
8020    const _: () = {
8021        use alloy::sol_types as alloy_sol_types;
8022        {
8023            #[doc(hidden)]
8024            type UnderlyingSolTuple<'a> = (
8025                alloy::sol_types::sol_data::Uint<64>,
8026                alloy::sol_types::sol_data::Uint<64>,
8027            );
8028            #[doc(hidden)]
8029            type UnderlyingRustTuple<'a> = (u64, u64);
8030            #[cfg(test)]
8031            #[allow(dead_code, unreachable_patterns)]
8032            fn _type_assertion(
8033                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8034            ) {
8035                match _t {
8036                    alloy_sol_types::private::AssertTypeEq::<
8037                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8038                    >(_) => {}
8039                }
8040            }
8041            #[automatically_derived]
8042            #[doc(hidden)]
8043            impl ::core::convert::From<epochFromBlockNumberCall>
8044            for UnderlyingRustTuple<'_> {
8045                fn from(value: epochFromBlockNumberCall) -> Self {
8046                    (value._blockNum, value._blocksPerEpoch)
8047                }
8048            }
8049            #[automatically_derived]
8050            #[doc(hidden)]
8051            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8052            for epochFromBlockNumberCall {
8053                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8054                    Self {
8055                        _blockNum: tuple.0,
8056                        _blocksPerEpoch: tuple.1,
8057                    }
8058                }
8059            }
8060        }
8061        {
8062            #[doc(hidden)]
8063            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8064            #[doc(hidden)]
8065            type UnderlyingRustTuple<'a> = (u64,);
8066            #[cfg(test)]
8067            #[allow(dead_code, unreachable_patterns)]
8068            fn _type_assertion(
8069                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8070            ) {
8071                match _t {
8072                    alloy_sol_types::private::AssertTypeEq::<
8073                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8074                    >(_) => {}
8075                }
8076            }
8077            #[automatically_derived]
8078            #[doc(hidden)]
8079            impl ::core::convert::From<epochFromBlockNumberReturn>
8080            for UnderlyingRustTuple<'_> {
8081                fn from(value: epochFromBlockNumberReturn) -> Self {
8082                    (value._0,)
8083                }
8084            }
8085            #[automatically_derived]
8086            #[doc(hidden)]
8087            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8088            for epochFromBlockNumberReturn {
8089                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8090                    Self { _0: tuple.0 }
8091                }
8092            }
8093        }
8094        #[automatically_derived]
8095        impl alloy_sol_types::SolCall for epochFromBlockNumberCall {
8096            type Parameters<'a> = (
8097                alloy::sol_types::sol_data::Uint<64>,
8098                alloy::sol_types::sol_data::Uint<64>,
8099            );
8100            type Token<'a> = <Self::Parameters<
8101                'a,
8102            > as alloy_sol_types::SolType>::Token<'a>;
8103            type Return = epochFromBlockNumberReturn;
8104            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8105            type ReturnToken<'a> = <Self::ReturnTuple<
8106                'a,
8107            > as alloy_sol_types::SolType>::Token<'a>;
8108            const SIGNATURE: &'static str = "epochFromBlockNumber(uint64,uint64)";
8109            const SELECTOR: [u8; 4] = [144u8, 193u8, 67u8, 144u8];
8110            #[inline]
8111            fn new<'a>(
8112                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8113            ) -> Self {
8114                tuple.into()
8115            }
8116            #[inline]
8117            fn tokenize(&self) -> Self::Token<'_> {
8118                (
8119                    <alloy::sol_types::sol_data::Uint<
8120                        64,
8121                    > as alloy_sol_types::SolType>::tokenize(&self._blockNum),
8122                    <alloy::sol_types::sol_data::Uint<
8123                        64,
8124                    > as alloy_sol_types::SolType>::tokenize(&self._blocksPerEpoch),
8125                )
8126            }
8127            #[inline]
8128            fn abi_decode_returns(
8129                data: &[u8],
8130                validate: bool,
8131            ) -> alloy_sol_types::Result<Self::Return> {
8132                <Self::ReturnTuple<
8133                    '_,
8134                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8135                    .map(Into::into)
8136            }
8137        }
8138    };
8139    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8140    /**Function with signature `epochStartBlock()` and selector `0x3ed55b7b`.
8141```solidity
8142function epochStartBlock() external view returns (uint64);
8143```*/
8144    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8145    #[derive(Clone)]
8146    pub struct epochStartBlockCall {}
8147    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8148    ///Container type for the return parameters of the [`epochStartBlock()`](epochStartBlockCall) function.
8149    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8150    #[derive(Clone)]
8151    pub struct epochStartBlockReturn {
8152        #[allow(missing_docs)]
8153        pub _0: u64,
8154    }
8155    #[allow(
8156        non_camel_case_types,
8157        non_snake_case,
8158        clippy::pub_underscore_fields,
8159        clippy::style
8160    )]
8161    const _: () = {
8162        use alloy::sol_types as alloy_sol_types;
8163        {
8164            #[doc(hidden)]
8165            type UnderlyingSolTuple<'a> = ();
8166            #[doc(hidden)]
8167            type UnderlyingRustTuple<'a> = ();
8168            #[cfg(test)]
8169            #[allow(dead_code, unreachable_patterns)]
8170            fn _type_assertion(
8171                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8172            ) {
8173                match _t {
8174                    alloy_sol_types::private::AssertTypeEq::<
8175                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8176                    >(_) => {}
8177                }
8178            }
8179            #[automatically_derived]
8180            #[doc(hidden)]
8181            impl ::core::convert::From<epochStartBlockCall> for UnderlyingRustTuple<'_> {
8182                fn from(value: epochStartBlockCall) -> Self {
8183                    ()
8184                }
8185            }
8186            #[automatically_derived]
8187            #[doc(hidden)]
8188            impl ::core::convert::From<UnderlyingRustTuple<'_>> for epochStartBlockCall {
8189                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8190                    Self {}
8191                }
8192            }
8193        }
8194        {
8195            #[doc(hidden)]
8196            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8197            #[doc(hidden)]
8198            type UnderlyingRustTuple<'a> = (u64,);
8199            #[cfg(test)]
8200            #[allow(dead_code, unreachable_patterns)]
8201            fn _type_assertion(
8202                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8203            ) {
8204                match _t {
8205                    alloy_sol_types::private::AssertTypeEq::<
8206                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8207                    >(_) => {}
8208                }
8209            }
8210            #[automatically_derived]
8211            #[doc(hidden)]
8212            impl ::core::convert::From<epochStartBlockReturn>
8213            for UnderlyingRustTuple<'_> {
8214                fn from(value: epochStartBlockReturn) -> Self {
8215                    (value._0,)
8216                }
8217            }
8218            #[automatically_derived]
8219            #[doc(hidden)]
8220            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8221            for epochStartBlockReturn {
8222                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8223                    Self { _0: tuple.0 }
8224                }
8225            }
8226        }
8227        #[automatically_derived]
8228        impl alloy_sol_types::SolCall for epochStartBlockCall {
8229            type Parameters<'a> = ();
8230            type Token<'a> = <Self::Parameters<
8231                'a,
8232            > as alloy_sol_types::SolType>::Token<'a>;
8233            type Return = epochStartBlockReturn;
8234            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8235            type ReturnToken<'a> = <Self::ReturnTuple<
8236                'a,
8237            > as alloy_sol_types::SolType>::Token<'a>;
8238            const SIGNATURE: &'static str = "epochStartBlock()";
8239            const SELECTOR: [u8; 4] = [62u8, 213u8, 91u8, 123u8];
8240            #[inline]
8241            fn new<'a>(
8242                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8243            ) -> Self {
8244                tuple.into()
8245            }
8246            #[inline]
8247            fn tokenize(&self) -> Self::Token<'_> {
8248                ()
8249            }
8250            #[inline]
8251            fn abi_decode_returns(
8252                data: &[u8],
8253                validate: bool,
8254            ) -> alloy_sol_types::Result<Self::Return> {
8255                <Self::ReturnTuple<
8256                    '_,
8257                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8258                    .map(Into::into)
8259            }
8260        }
8261    };
8262    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8263    /**Function with signature `finalizedState()` and selector `0x9fdb54a7`.
8264```solidity
8265function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
8266```*/
8267    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8268    #[derive(Clone)]
8269    pub struct finalizedStateCall {}
8270    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8271    ///Container type for the return parameters of the [`finalizedState()`](finalizedStateCall) function.
8272    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8273    #[derive(Clone)]
8274    pub struct finalizedStateReturn {
8275        #[allow(missing_docs)]
8276        pub viewNum: u64,
8277        #[allow(missing_docs)]
8278        pub blockHeight: u64,
8279        #[allow(missing_docs)]
8280        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8281    }
8282    #[allow(
8283        non_camel_case_types,
8284        non_snake_case,
8285        clippy::pub_underscore_fields,
8286        clippy::style
8287    )]
8288    const _: () = {
8289        use alloy::sol_types as alloy_sol_types;
8290        {
8291            #[doc(hidden)]
8292            type UnderlyingSolTuple<'a> = ();
8293            #[doc(hidden)]
8294            type UnderlyingRustTuple<'a> = ();
8295            #[cfg(test)]
8296            #[allow(dead_code, unreachable_patterns)]
8297            fn _type_assertion(
8298                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8299            ) {
8300                match _t {
8301                    alloy_sol_types::private::AssertTypeEq::<
8302                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8303                    >(_) => {}
8304                }
8305            }
8306            #[automatically_derived]
8307            #[doc(hidden)]
8308            impl ::core::convert::From<finalizedStateCall> for UnderlyingRustTuple<'_> {
8309                fn from(value: finalizedStateCall) -> Self {
8310                    ()
8311                }
8312            }
8313            #[automatically_derived]
8314            #[doc(hidden)]
8315            impl ::core::convert::From<UnderlyingRustTuple<'_>> for finalizedStateCall {
8316                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8317                    Self {}
8318                }
8319            }
8320        }
8321        {
8322            #[doc(hidden)]
8323            type UnderlyingSolTuple<'a> = (
8324                alloy::sol_types::sol_data::Uint<64>,
8325                alloy::sol_types::sol_data::Uint<64>,
8326                BN254::ScalarField,
8327            );
8328            #[doc(hidden)]
8329            type UnderlyingRustTuple<'a> = (
8330                u64,
8331                u64,
8332                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8333            );
8334            #[cfg(test)]
8335            #[allow(dead_code, unreachable_patterns)]
8336            fn _type_assertion(
8337                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8338            ) {
8339                match _t {
8340                    alloy_sol_types::private::AssertTypeEq::<
8341                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8342                    >(_) => {}
8343                }
8344            }
8345            #[automatically_derived]
8346            #[doc(hidden)]
8347            impl ::core::convert::From<finalizedStateReturn>
8348            for UnderlyingRustTuple<'_> {
8349                fn from(value: finalizedStateReturn) -> Self {
8350                    (value.viewNum, value.blockHeight, value.blockCommRoot)
8351                }
8352            }
8353            #[automatically_derived]
8354            #[doc(hidden)]
8355            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8356            for finalizedStateReturn {
8357                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8358                    Self {
8359                        viewNum: tuple.0,
8360                        blockHeight: tuple.1,
8361                        blockCommRoot: tuple.2,
8362                    }
8363                }
8364            }
8365        }
8366        #[automatically_derived]
8367        impl alloy_sol_types::SolCall for finalizedStateCall {
8368            type Parameters<'a> = ();
8369            type Token<'a> = <Self::Parameters<
8370                'a,
8371            > as alloy_sol_types::SolType>::Token<'a>;
8372            type Return = finalizedStateReturn;
8373            type ReturnTuple<'a> = (
8374                alloy::sol_types::sol_data::Uint<64>,
8375                alloy::sol_types::sol_data::Uint<64>,
8376                BN254::ScalarField,
8377            );
8378            type ReturnToken<'a> = <Self::ReturnTuple<
8379                'a,
8380            > as alloy_sol_types::SolType>::Token<'a>;
8381            const SIGNATURE: &'static str = "finalizedState()";
8382            const SELECTOR: [u8; 4] = [159u8, 219u8, 84u8, 167u8];
8383            #[inline]
8384            fn new<'a>(
8385                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8386            ) -> Self {
8387                tuple.into()
8388            }
8389            #[inline]
8390            fn tokenize(&self) -> Self::Token<'_> {
8391                ()
8392            }
8393            #[inline]
8394            fn abi_decode_returns(
8395                data: &[u8],
8396                validate: bool,
8397            ) -> alloy_sol_types::Result<Self::Return> {
8398                <Self::ReturnTuple<
8399                    '_,
8400                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8401                    .map(Into::into)
8402            }
8403        }
8404    };
8405    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8406    /**Function with signature `genesisStakeTableState()` and selector `0x426d3194`.
8407```solidity
8408function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
8409```*/
8410    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8411    #[derive(Clone)]
8412    pub struct genesisStakeTableStateCall {}
8413    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8414    ///Container type for the return parameters of the [`genesisStakeTableState()`](genesisStakeTableStateCall) function.
8415    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8416    #[derive(Clone)]
8417    pub struct genesisStakeTableStateReturn {
8418        #[allow(missing_docs)]
8419        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
8420        #[allow(missing_docs)]
8421        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8422        #[allow(missing_docs)]
8423        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8424        #[allow(missing_docs)]
8425        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8426    }
8427    #[allow(
8428        non_camel_case_types,
8429        non_snake_case,
8430        clippy::pub_underscore_fields,
8431        clippy::style
8432    )]
8433    const _: () = {
8434        use alloy::sol_types as alloy_sol_types;
8435        {
8436            #[doc(hidden)]
8437            type UnderlyingSolTuple<'a> = ();
8438            #[doc(hidden)]
8439            type UnderlyingRustTuple<'a> = ();
8440            #[cfg(test)]
8441            #[allow(dead_code, unreachable_patterns)]
8442            fn _type_assertion(
8443                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8444            ) {
8445                match _t {
8446                    alloy_sol_types::private::AssertTypeEq::<
8447                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8448                    >(_) => {}
8449                }
8450            }
8451            #[automatically_derived]
8452            #[doc(hidden)]
8453            impl ::core::convert::From<genesisStakeTableStateCall>
8454            for UnderlyingRustTuple<'_> {
8455                fn from(value: genesisStakeTableStateCall) -> Self {
8456                    ()
8457                }
8458            }
8459            #[automatically_derived]
8460            #[doc(hidden)]
8461            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8462            for genesisStakeTableStateCall {
8463                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8464                    Self {}
8465                }
8466            }
8467        }
8468        {
8469            #[doc(hidden)]
8470            type UnderlyingSolTuple<'a> = (
8471                alloy::sol_types::sol_data::Uint<256>,
8472                BN254::ScalarField,
8473                BN254::ScalarField,
8474                BN254::ScalarField,
8475            );
8476            #[doc(hidden)]
8477            type UnderlyingRustTuple<'a> = (
8478                alloy::sol_types::private::primitives::aliases::U256,
8479                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8480                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8481                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8482            );
8483            #[cfg(test)]
8484            #[allow(dead_code, unreachable_patterns)]
8485            fn _type_assertion(
8486                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8487            ) {
8488                match _t {
8489                    alloy_sol_types::private::AssertTypeEq::<
8490                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8491                    >(_) => {}
8492                }
8493            }
8494            #[automatically_derived]
8495            #[doc(hidden)]
8496            impl ::core::convert::From<genesisStakeTableStateReturn>
8497            for UnderlyingRustTuple<'_> {
8498                fn from(value: genesisStakeTableStateReturn) -> Self {
8499                    (
8500                        value.threshold,
8501                        value.blsKeyComm,
8502                        value.schnorrKeyComm,
8503                        value.amountComm,
8504                    )
8505                }
8506            }
8507            #[automatically_derived]
8508            #[doc(hidden)]
8509            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8510            for genesisStakeTableStateReturn {
8511                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8512                    Self {
8513                        threshold: tuple.0,
8514                        blsKeyComm: tuple.1,
8515                        schnorrKeyComm: tuple.2,
8516                        amountComm: tuple.3,
8517                    }
8518                }
8519            }
8520        }
8521        #[automatically_derived]
8522        impl alloy_sol_types::SolCall for genesisStakeTableStateCall {
8523            type Parameters<'a> = ();
8524            type Token<'a> = <Self::Parameters<
8525                'a,
8526            > as alloy_sol_types::SolType>::Token<'a>;
8527            type Return = genesisStakeTableStateReturn;
8528            type ReturnTuple<'a> = (
8529                alloy::sol_types::sol_data::Uint<256>,
8530                BN254::ScalarField,
8531                BN254::ScalarField,
8532                BN254::ScalarField,
8533            );
8534            type ReturnToken<'a> = <Self::ReturnTuple<
8535                'a,
8536            > as alloy_sol_types::SolType>::Token<'a>;
8537            const SIGNATURE: &'static str = "genesisStakeTableState()";
8538            const SELECTOR: [u8; 4] = [66u8, 109u8, 49u8, 148u8];
8539            #[inline]
8540            fn new<'a>(
8541                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8542            ) -> Self {
8543                tuple.into()
8544            }
8545            #[inline]
8546            fn tokenize(&self) -> Self::Token<'_> {
8547                ()
8548            }
8549            #[inline]
8550            fn abi_decode_returns(
8551                data: &[u8],
8552                validate: bool,
8553            ) -> alloy_sol_types::Result<Self::Return> {
8554                <Self::ReturnTuple<
8555                    '_,
8556                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8557                    .map(Into::into)
8558            }
8559        }
8560    };
8561    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8562    /**Function with signature `genesisState()` and selector `0xd24d933d`.
8563```solidity
8564function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
8565```*/
8566    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8567    #[derive(Clone)]
8568    pub struct genesisStateCall {}
8569    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8570    ///Container type for the return parameters of the [`genesisState()`](genesisStateCall) function.
8571    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8572    #[derive(Clone)]
8573    pub struct genesisStateReturn {
8574        #[allow(missing_docs)]
8575        pub viewNum: u64,
8576        #[allow(missing_docs)]
8577        pub blockHeight: u64,
8578        #[allow(missing_docs)]
8579        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8580    }
8581    #[allow(
8582        non_camel_case_types,
8583        non_snake_case,
8584        clippy::pub_underscore_fields,
8585        clippy::style
8586    )]
8587    const _: () = {
8588        use alloy::sol_types as alloy_sol_types;
8589        {
8590            #[doc(hidden)]
8591            type UnderlyingSolTuple<'a> = ();
8592            #[doc(hidden)]
8593            type UnderlyingRustTuple<'a> = ();
8594            #[cfg(test)]
8595            #[allow(dead_code, unreachable_patterns)]
8596            fn _type_assertion(
8597                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8598            ) {
8599                match _t {
8600                    alloy_sol_types::private::AssertTypeEq::<
8601                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8602                    >(_) => {}
8603                }
8604            }
8605            #[automatically_derived]
8606            #[doc(hidden)]
8607            impl ::core::convert::From<genesisStateCall> for UnderlyingRustTuple<'_> {
8608                fn from(value: genesisStateCall) -> Self {
8609                    ()
8610                }
8611            }
8612            #[automatically_derived]
8613            #[doc(hidden)]
8614            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateCall {
8615                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8616                    Self {}
8617                }
8618            }
8619        }
8620        {
8621            #[doc(hidden)]
8622            type UnderlyingSolTuple<'a> = (
8623                alloy::sol_types::sol_data::Uint<64>,
8624                alloy::sol_types::sol_data::Uint<64>,
8625                BN254::ScalarField,
8626            );
8627            #[doc(hidden)]
8628            type UnderlyingRustTuple<'a> = (
8629                u64,
8630                u64,
8631                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8632            );
8633            #[cfg(test)]
8634            #[allow(dead_code, unreachable_patterns)]
8635            fn _type_assertion(
8636                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8637            ) {
8638                match _t {
8639                    alloy_sol_types::private::AssertTypeEq::<
8640                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8641                    >(_) => {}
8642                }
8643            }
8644            #[automatically_derived]
8645            #[doc(hidden)]
8646            impl ::core::convert::From<genesisStateReturn> for UnderlyingRustTuple<'_> {
8647                fn from(value: genesisStateReturn) -> Self {
8648                    (value.viewNum, value.blockHeight, value.blockCommRoot)
8649                }
8650            }
8651            #[automatically_derived]
8652            #[doc(hidden)]
8653            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateReturn {
8654                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8655                    Self {
8656                        viewNum: tuple.0,
8657                        blockHeight: tuple.1,
8658                        blockCommRoot: tuple.2,
8659                    }
8660                }
8661            }
8662        }
8663        #[automatically_derived]
8664        impl alloy_sol_types::SolCall for genesisStateCall {
8665            type Parameters<'a> = ();
8666            type Token<'a> = <Self::Parameters<
8667                'a,
8668            > as alloy_sol_types::SolType>::Token<'a>;
8669            type Return = genesisStateReturn;
8670            type ReturnTuple<'a> = (
8671                alloy::sol_types::sol_data::Uint<64>,
8672                alloy::sol_types::sol_data::Uint<64>,
8673                BN254::ScalarField,
8674            );
8675            type ReturnToken<'a> = <Self::ReturnTuple<
8676                'a,
8677            > as alloy_sol_types::SolType>::Token<'a>;
8678            const SIGNATURE: &'static str = "genesisState()";
8679            const SELECTOR: [u8; 4] = [210u8, 77u8, 147u8, 61u8];
8680            #[inline]
8681            fn new<'a>(
8682                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8683            ) -> Self {
8684                tuple.into()
8685            }
8686            #[inline]
8687            fn tokenize(&self) -> Self::Token<'_> {
8688                ()
8689            }
8690            #[inline]
8691            fn abi_decode_returns(
8692                data: &[u8],
8693                validate: bool,
8694            ) -> alloy_sol_types::Result<Self::Return> {
8695                <Self::ReturnTuple<
8696                    '_,
8697                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8698                    .map(Into::into)
8699            }
8700        }
8701    };
8702    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8703    /**Function with signature `getHotShotCommitment(uint256)` and selector `0x8584d23f`.
8704```solidity
8705function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
8706```*/
8707    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8708    #[derive(Clone)]
8709    pub struct getHotShotCommitmentCall {
8710        #[allow(missing_docs)]
8711        pub hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
8712    }
8713    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8714    ///Container type for the return parameters of the [`getHotShotCommitment(uint256)`](getHotShotCommitmentCall) function.
8715    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8716    #[derive(Clone)]
8717    pub struct getHotShotCommitmentReturn {
8718        #[allow(missing_docs)]
8719        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8720        #[allow(missing_docs)]
8721        pub hotshotBlockHeight: u64,
8722    }
8723    #[allow(
8724        non_camel_case_types,
8725        non_snake_case,
8726        clippy::pub_underscore_fields,
8727        clippy::style
8728    )]
8729    const _: () = {
8730        use alloy::sol_types as alloy_sol_types;
8731        {
8732            #[doc(hidden)]
8733            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8734            #[doc(hidden)]
8735            type UnderlyingRustTuple<'a> = (
8736                alloy::sol_types::private::primitives::aliases::U256,
8737            );
8738            #[cfg(test)]
8739            #[allow(dead_code, unreachable_patterns)]
8740            fn _type_assertion(
8741                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8742            ) {
8743                match _t {
8744                    alloy_sol_types::private::AssertTypeEq::<
8745                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8746                    >(_) => {}
8747                }
8748            }
8749            #[automatically_derived]
8750            #[doc(hidden)]
8751            impl ::core::convert::From<getHotShotCommitmentCall>
8752            for UnderlyingRustTuple<'_> {
8753                fn from(value: getHotShotCommitmentCall) -> Self {
8754                    (value.hotShotBlockHeight,)
8755                }
8756            }
8757            #[automatically_derived]
8758            #[doc(hidden)]
8759            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8760            for getHotShotCommitmentCall {
8761                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8762                    Self {
8763                        hotShotBlockHeight: tuple.0,
8764                    }
8765                }
8766            }
8767        }
8768        {
8769            #[doc(hidden)]
8770            type UnderlyingSolTuple<'a> = (
8771                BN254::ScalarField,
8772                alloy::sol_types::sol_data::Uint<64>,
8773            );
8774            #[doc(hidden)]
8775            type UnderlyingRustTuple<'a> = (
8776                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8777                u64,
8778            );
8779            #[cfg(test)]
8780            #[allow(dead_code, unreachable_patterns)]
8781            fn _type_assertion(
8782                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8783            ) {
8784                match _t {
8785                    alloy_sol_types::private::AssertTypeEq::<
8786                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8787                    >(_) => {}
8788                }
8789            }
8790            #[automatically_derived]
8791            #[doc(hidden)]
8792            impl ::core::convert::From<getHotShotCommitmentReturn>
8793            for UnderlyingRustTuple<'_> {
8794                fn from(value: getHotShotCommitmentReturn) -> Self {
8795                    (value.hotShotBlockCommRoot, value.hotshotBlockHeight)
8796                }
8797            }
8798            #[automatically_derived]
8799            #[doc(hidden)]
8800            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8801            for getHotShotCommitmentReturn {
8802                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8803                    Self {
8804                        hotShotBlockCommRoot: tuple.0,
8805                        hotshotBlockHeight: tuple.1,
8806                    }
8807                }
8808            }
8809        }
8810        #[automatically_derived]
8811        impl alloy_sol_types::SolCall for getHotShotCommitmentCall {
8812            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8813            type Token<'a> = <Self::Parameters<
8814                'a,
8815            > as alloy_sol_types::SolType>::Token<'a>;
8816            type Return = getHotShotCommitmentReturn;
8817            type ReturnTuple<'a> = (
8818                BN254::ScalarField,
8819                alloy::sol_types::sol_data::Uint<64>,
8820            );
8821            type ReturnToken<'a> = <Self::ReturnTuple<
8822                'a,
8823            > as alloy_sol_types::SolType>::Token<'a>;
8824            const SIGNATURE: &'static str = "getHotShotCommitment(uint256)";
8825            const SELECTOR: [u8; 4] = [133u8, 132u8, 210u8, 63u8];
8826            #[inline]
8827            fn new<'a>(
8828                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8829            ) -> Self {
8830                tuple.into()
8831            }
8832            #[inline]
8833            fn tokenize(&self) -> Self::Token<'_> {
8834                (
8835                    <alloy::sol_types::sol_data::Uint<
8836                        256,
8837                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
8838                )
8839            }
8840            #[inline]
8841            fn abi_decode_returns(
8842                data: &[u8],
8843                validate: bool,
8844            ) -> alloy_sol_types::Result<Self::Return> {
8845                <Self::ReturnTuple<
8846                    '_,
8847                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8848                    .map(Into::into)
8849            }
8850        }
8851    };
8852    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8853    /**Function with signature `getStateHistoryCount()` and selector `0xf9e50d19`.
8854```solidity
8855function getStateHistoryCount() external view returns (uint256);
8856```*/
8857    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8858    #[derive(Clone)]
8859    pub struct getStateHistoryCountCall {}
8860    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8861    ///Container type for the return parameters of the [`getStateHistoryCount()`](getStateHistoryCountCall) function.
8862    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8863    #[derive(Clone)]
8864    pub struct getStateHistoryCountReturn {
8865        #[allow(missing_docs)]
8866        pub _0: alloy::sol_types::private::primitives::aliases::U256,
8867    }
8868    #[allow(
8869        non_camel_case_types,
8870        non_snake_case,
8871        clippy::pub_underscore_fields,
8872        clippy::style
8873    )]
8874    const _: () = {
8875        use alloy::sol_types as alloy_sol_types;
8876        {
8877            #[doc(hidden)]
8878            type UnderlyingSolTuple<'a> = ();
8879            #[doc(hidden)]
8880            type UnderlyingRustTuple<'a> = ();
8881            #[cfg(test)]
8882            #[allow(dead_code, unreachable_patterns)]
8883            fn _type_assertion(
8884                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8885            ) {
8886                match _t {
8887                    alloy_sol_types::private::AssertTypeEq::<
8888                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8889                    >(_) => {}
8890                }
8891            }
8892            #[automatically_derived]
8893            #[doc(hidden)]
8894            impl ::core::convert::From<getStateHistoryCountCall>
8895            for UnderlyingRustTuple<'_> {
8896                fn from(value: getStateHistoryCountCall) -> Self {
8897                    ()
8898                }
8899            }
8900            #[automatically_derived]
8901            #[doc(hidden)]
8902            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8903            for getStateHistoryCountCall {
8904                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8905                    Self {}
8906                }
8907            }
8908        }
8909        {
8910            #[doc(hidden)]
8911            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8912            #[doc(hidden)]
8913            type UnderlyingRustTuple<'a> = (
8914                alloy::sol_types::private::primitives::aliases::U256,
8915            );
8916            #[cfg(test)]
8917            #[allow(dead_code, unreachable_patterns)]
8918            fn _type_assertion(
8919                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8920            ) {
8921                match _t {
8922                    alloy_sol_types::private::AssertTypeEq::<
8923                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8924                    >(_) => {}
8925                }
8926            }
8927            #[automatically_derived]
8928            #[doc(hidden)]
8929            impl ::core::convert::From<getStateHistoryCountReturn>
8930            for UnderlyingRustTuple<'_> {
8931                fn from(value: getStateHistoryCountReturn) -> Self {
8932                    (value._0,)
8933                }
8934            }
8935            #[automatically_derived]
8936            #[doc(hidden)]
8937            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8938            for getStateHistoryCountReturn {
8939                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8940                    Self { _0: tuple.0 }
8941                }
8942            }
8943        }
8944        #[automatically_derived]
8945        impl alloy_sol_types::SolCall for getStateHistoryCountCall {
8946            type Parameters<'a> = ();
8947            type Token<'a> = <Self::Parameters<
8948                'a,
8949            > as alloy_sol_types::SolType>::Token<'a>;
8950            type Return = getStateHistoryCountReturn;
8951            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8952            type ReturnToken<'a> = <Self::ReturnTuple<
8953                'a,
8954            > as alloy_sol_types::SolType>::Token<'a>;
8955            const SIGNATURE: &'static str = "getStateHistoryCount()";
8956            const SELECTOR: [u8; 4] = [249u8, 229u8, 13u8, 25u8];
8957            #[inline]
8958            fn new<'a>(
8959                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8960            ) -> Self {
8961                tuple.into()
8962            }
8963            #[inline]
8964            fn tokenize(&self) -> Self::Token<'_> {
8965                ()
8966            }
8967            #[inline]
8968            fn abi_decode_returns(
8969                data: &[u8],
8970                validate: bool,
8971            ) -> alloy_sol_types::Result<Self::Return> {
8972                <Self::ReturnTuple<
8973                    '_,
8974                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8975                    .map(Into::into)
8976            }
8977        }
8978    };
8979    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8980    /**Function with signature `getVersion()` and selector `0x0d8e6e2c`.
8981```solidity
8982function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
8983```*/
8984    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8985    #[derive(Clone)]
8986    pub struct getVersionCall {}
8987    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8988    ///Container type for the return parameters of the [`getVersion()`](getVersionCall) function.
8989    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8990    #[derive(Clone)]
8991    pub struct getVersionReturn {
8992        #[allow(missing_docs)]
8993        pub majorVersion: u8,
8994        #[allow(missing_docs)]
8995        pub minorVersion: u8,
8996        #[allow(missing_docs)]
8997        pub patchVersion: u8,
8998    }
8999    #[allow(
9000        non_camel_case_types,
9001        non_snake_case,
9002        clippy::pub_underscore_fields,
9003        clippy::style
9004    )]
9005    const _: () = {
9006        use alloy::sol_types as alloy_sol_types;
9007        {
9008            #[doc(hidden)]
9009            type UnderlyingSolTuple<'a> = ();
9010            #[doc(hidden)]
9011            type UnderlyingRustTuple<'a> = ();
9012            #[cfg(test)]
9013            #[allow(dead_code, unreachable_patterns)]
9014            fn _type_assertion(
9015                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9016            ) {
9017                match _t {
9018                    alloy_sol_types::private::AssertTypeEq::<
9019                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9020                    >(_) => {}
9021                }
9022            }
9023            #[automatically_derived]
9024            #[doc(hidden)]
9025            impl ::core::convert::From<getVersionCall> for UnderlyingRustTuple<'_> {
9026                fn from(value: getVersionCall) -> Self {
9027                    ()
9028                }
9029            }
9030            #[automatically_derived]
9031            #[doc(hidden)]
9032            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionCall {
9033                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9034                    Self {}
9035                }
9036            }
9037        }
9038        {
9039            #[doc(hidden)]
9040            type UnderlyingSolTuple<'a> = (
9041                alloy::sol_types::sol_data::Uint<8>,
9042                alloy::sol_types::sol_data::Uint<8>,
9043                alloy::sol_types::sol_data::Uint<8>,
9044            );
9045            #[doc(hidden)]
9046            type UnderlyingRustTuple<'a> = (u8, u8, u8);
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<getVersionReturn> for UnderlyingRustTuple<'_> {
9061                fn from(value: getVersionReturn) -> Self {
9062                    (value.majorVersion, value.minorVersion, value.patchVersion)
9063                }
9064            }
9065            #[automatically_derived]
9066            #[doc(hidden)]
9067            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionReturn {
9068                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9069                    Self {
9070                        majorVersion: tuple.0,
9071                        minorVersion: tuple.1,
9072                        patchVersion: tuple.2,
9073                    }
9074                }
9075            }
9076        }
9077        #[automatically_derived]
9078        impl alloy_sol_types::SolCall for getVersionCall {
9079            type Parameters<'a> = ();
9080            type Token<'a> = <Self::Parameters<
9081                'a,
9082            > as alloy_sol_types::SolType>::Token<'a>;
9083            type Return = getVersionReturn;
9084            type ReturnTuple<'a> = (
9085                alloy::sol_types::sol_data::Uint<8>,
9086                alloy::sol_types::sol_data::Uint<8>,
9087                alloy::sol_types::sol_data::Uint<8>,
9088            );
9089            type ReturnToken<'a> = <Self::ReturnTuple<
9090                'a,
9091            > as alloy_sol_types::SolType>::Token<'a>;
9092            const SIGNATURE: &'static str = "getVersion()";
9093            const SELECTOR: [u8; 4] = [13u8, 142u8, 110u8, 44u8];
9094            #[inline]
9095            fn new<'a>(
9096                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9097            ) -> Self {
9098                tuple.into()
9099            }
9100            #[inline]
9101            fn tokenize(&self) -> Self::Token<'_> {
9102                ()
9103            }
9104            #[inline]
9105            fn abi_decode_returns(
9106                data: &[u8],
9107                validate: bool,
9108            ) -> alloy_sol_types::Result<Self::Return> {
9109                <Self::ReturnTuple<
9110                    '_,
9111                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9112                    .map(Into::into)
9113            }
9114        }
9115    };
9116    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9117    /**Function with signature `initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)` and selector `0x9baa3cc9`.
9118```solidity
9119function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
9120```*/
9121    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9122    #[derive(Clone)]
9123    pub struct initializeCall {
9124        #[allow(missing_docs)]
9125        pub _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
9126        #[allow(missing_docs)]
9127        pub _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
9128        #[allow(missing_docs)]
9129        pub _stateHistoryRetentionPeriod: u32,
9130        #[allow(missing_docs)]
9131        pub owner: alloy::sol_types::private::Address,
9132    }
9133    ///Container type for the return parameters of the [`initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)`](initializeCall) function.
9134    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9135    #[derive(Clone)]
9136    pub struct initializeReturn {}
9137    #[allow(
9138        non_camel_case_types,
9139        non_snake_case,
9140        clippy::pub_underscore_fields,
9141        clippy::style
9142    )]
9143    const _: () = {
9144        use alloy::sol_types as alloy_sol_types;
9145        {
9146            #[doc(hidden)]
9147            type UnderlyingSolTuple<'a> = (
9148                LightClient::LightClientState,
9149                LightClient::StakeTableState,
9150                alloy::sol_types::sol_data::Uint<32>,
9151                alloy::sol_types::sol_data::Address,
9152            );
9153            #[doc(hidden)]
9154            type UnderlyingRustTuple<'a> = (
9155                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
9156                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
9157                u32,
9158                alloy::sol_types::private::Address,
9159            );
9160            #[cfg(test)]
9161            #[allow(dead_code, unreachable_patterns)]
9162            fn _type_assertion(
9163                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9164            ) {
9165                match _t {
9166                    alloy_sol_types::private::AssertTypeEq::<
9167                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9168                    >(_) => {}
9169                }
9170            }
9171            #[automatically_derived]
9172            #[doc(hidden)]
9173            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
9174                fn from(value: initializeCall) -> Self {
9175                    (
9176                        value._genesis,
9177                        value._genesisStakeTableState,
9178                        value._stateHistoryRetentionPeriod,
9179                        value.owner,
9180                    )
9181                }
9182            }
9183            #[automatically_derived]
9184            #[doc(hidden)]
9185            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
9186                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9187                    Self {
9188                        _genesis: tuple.0,
9189                        _genesisStakeTableState: tuple.1,
9190                        _stateHistoryRetentionPeriod: tuple.2,
9191                        owner: tuple.3,
9192                    }
9193                }
9194            }
9195        }
9196        {
9197            #[doc(hidden)]
9198            type UnderlyingSolTuple<'a> = ();
9199            #[doc(hidden)]
9200            type UnderlyingRustTuple<'a> = ();
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<initializeReturn> for UnderlyingRustTuple<'_> {
9215                fn from(value: initializeReturn) -> Self {
9216                    ()
9217                }
9218            }
9219            #[automatically_derived]
9220            #[doc(hidden)]
9221            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
9222                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9223                    Self {}
9224                }
9225            }
9226        }
9227        #[automatically_derived]
9228        impl alloy_sol_types::SolCall for initializeCall {
9229            type Parameters<'a> = (
9230                LightClient::LightClientState,
9231                LightClient::StakeTableState,
9232                alloy::sol_types::sol_data::Uint<32>,
9233                alloy::sol_types::sol_data::Address,
9234            );
9235            type Token<'a> = <Self::Parameters<
9236                'a,
9237            > as alloy_sol_types::SolType>::Token<'a>;
9238            type Return = initializeReturn;
9239            type ReturnTuple<'a> = ();
9240            type ReturnToken<'a> = <Self::ReturnTuple<
9241                'a,
9242            > as alloy_sol_types::SolType>::Token<'a>;
9243            const SIGNATURE: &'static str = "initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)";
9244            const SELECTOR: [u8; 4] = [155u8, 170u8, 60u8, 201u8];
9245            #[inline]
9246            fn new<'a>(
9247                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9248            ) -> Self {
9249                tuple.into()
9250            }
9251            #[inline]
9252            fn tokenize(&self) -> Self::Token<'_> {
9253                (
9254                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
9255                        &self._genesis,
9256                    ),
9257                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
9258                        &self._genesisStakeTableState,
9259                    ),
9260                    <alloy::sol_types::sol_data::Uint<
9261                        32,
9262                    > as alloy_sol_types::SolType>::tokenize(
9263                        &self._stateHistoryRetentionPeriod,
9264                    ),
9265                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9266                        &self.owner,
9267                    ),
9268                )
9269            }
9270            #[inline]
9271            fn abi_decode_returns(
9272                data: &[u8],
9273                validate: bool,
9274            ) -> alloy_sol_types::Result<Self::Return> {
9275                <Self::ReturnTuple<
9276                    '_,
9277                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9278                    .map(Into::into)
9279            }
9280        }
9281    };
9282    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9283    /**Function with signature `initializeV2(uint64,uint64)` and selector `0xb33bc491`.
9284```solidity
9285function initializeV2(uint64 _blocksPerEpoch, uint64 _epochStartBlock) external;
9286```*/
9287    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9288    #[derive(Clone)]
9289    pub struct initializeV2Call {
9290        #[allow(missing_docs)]
9291        pub _blocksPerEpoch: u64,
9292        #[allow(missing_docs)]
9293        pub _epochStartBlock: u64,
9294    }
9295    ///Container type for the return parameters of the [`initializeV2(uint64,uint64)`](initializeV2Call) function.
9296    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9297    #[derive(Clone)]
9298    pub struct initializeV2Return {}
9299    #[allow(
9300        non_camel_case_types,
9301        non_snake_case,
9302        clippy::pub_underscore_fields,
9303        clippy::style
9304    )]
9305    const _: () = {
9306        use alloy::sol_types as alloy_sol_types;
9307        {
9308            #[doc(hidden)]
9309            type UnderlyingSolTuple<'a> = (
9310                alloy::sol_types::sol_data::Uint<64>,
9311                alloy::sol_types::sol_data::Uint<64>,
9312            );
9313            #[doc(hidden)]
9314            type UnderlyingRustTuple<'a> = (u64, u64);
9315            #[cfg(test)]
9316            #[allow(dead_code, unreachable_patterns)]
9317            fn _type_assertion(
9318                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9319            ) {
9320                match _t {
9321                    alloy_sol_types::private::AssertTypeEq::<
9322                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9323                    >(_) => {}
9324                }
9325            }
9326            #[automatically_derived]
9327            #[doc(hidden)]
9328            impl ::core::convert::From<initializeV2Call> for UnderlyingRustTuple<'_> {
9329                fn from(value: initializeV2Call) -> Self {
9330                    (value._blocksPerEpoch, value._epochStartBlock)
9331                }
9332            }
9333            #[automatically_derived]
9334            #[doc(hidden)]
9335            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Call {
9336                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9337                    Self {
9338                        _blocksPerEpoch: tuple.0,
9339                        _epochStartBlock: tuple.1,
9340                    }
9341                }
9342            }
9343        }
9344        {
9345            #[doc(hidden)]
9346            type UnderlyingSolTuple<'a> = ();
9347            #[doc(hidden)]
9348            type UnderlyingRustTuple<'a> = ();
9349            #[cfg(test)]
9350            #[allow(dead_code, unreachable_patterns)]
9351            fn _type_assertion(
9352                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9353            ) {
9354                match _t {
9355                    alloy_sol_types::private::AssertTypeEq::<
9356                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9357                    >(_) => {}
9358                }
9359            }
9360            #[automatically_derived]
9361            #[doc(hidden)]
9362            impl ::core::convert::From<initializeV2Return> for UnderlyingRustTuple<'_> {
9363                fn from(value: initializeV2Return) -> Self {
9364                    ()
9365                }
9366            }
9367            #[automatically_derived]
9368            #[doc(hidden)]
9369            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Return {
9370                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9371                    Self {}
9372                }
9373            }
9374        }
9375        #[automatically_derived]
9376        impl alloy_sol_types::SolCall for initializeV2Call {
9377            type Parameters<'a> = (
9378                alloy::sol_types::sol_data::Uint<64>,
9379                alloy::sol_types::sol_data::Uint<64>,
9380            );
9381            type Token<'a> = <Self::Parameters<
9382                'a,
9383            > as alloy_sol_types::SolType>::Token<'a>;
9384            type Return = initializeV2Return;
9385            type ReturnTuple<'a> = ();
9386            type ReturnToken<'a> = <Self::ReturnTuple<
9387                'a,
9388            > as alloy_sol_types::SolType>::Token<'a>;
9389            const SIGNATURE: &'static str = "initializeV2(uint64,uint64)";
9390            const SELECTOR: [u8; 4] = [179u8, 59u8, 196u8, 145u8];
9391            #[inline]
9392            fn new<'a>(
9393                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9394            ) -> Self {
9395                tuple.into()
9396            }
9397            #[inline]
9398            fn tokenize(&self) -> Self::Token<'_> {
9399                (
9400                    <alloy::sol_types::sol_data::Uint<
9401                        64,
9402                    > as alloy_sol_types::SolType>::tokenize(&self._blocksPerEpoch),
9403                    <alloy::sol_types::sol_data::Uint<
9404                        64,
9405                    > as alloy_sol_types::SolType>::tokenize(&self._epochStartBlock),
9406                )
9407            }
9408            #[inline]
9409            fn abi_decode_returns(
9410                data: &[u8],
9411                validate: bool,
9412            ) -> alloy_sol_types::Result<Self::Return> {
9413                <Self::ReturnTuple<
9414                    '_,
9415                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9416                    .map(Into::into)
9417            }
9418        }
9419    };
9420    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9421    /**Function with signature `isEpochRoot(uint64)` and selector `0x25297427`.
9422```solidity
9423function isEpochRoot(uint64 blockHeight) external view returns (bool);
9424```*/
9425    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9426    #[derive(Clone)]
9427    pub struct isEpochRootCall {
9428        #[allow(missing_docs)]
9429        pub blockHeight: u64,
9430    }
9431    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9432    ///Container type for the return parameters of the [`isEpochRoot(uint64)`](isEpochRootCall) function.
9433    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9434    #[derive(Clone)]
9435    pub struct isEpochRootReturn {
9436        #[allow(missing_docs)]
9437        pub _0: bool,
9438    }
9439    #[allow(
9440        non_camel_case_types,
9441        non_snake_case,
9442        clippy::pub_underscore_fields,
9443        clippy::style
9444    )]
9445    const _: () = {
9446        use alloy::sol_types as alloy_sol_types;
9447        {
9448            #[doc(hidden)]
9449            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9450            #[doc(hidden)]
9451            type UnderlyingRustTuple<'a> = (u64,);
9452            #[cfg(test)]
9453            #[allow(dead_code, unreachable_patterns)]
9454            fn _type_assertion(
9455                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9456            ) {
9457                match _t {
9458                    alloy_sol_types::private::AssertTypeEq::<
9459                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9460                    >(_) => {}
9461                }
9462            }
9463            #[automatically_derived]
9464            #[doc(hidden)]
9465            impl ::core::convert::From<isEpochRootCall> for UnderlyingRustTuple<'_> {
9466                fn from(value: isEpochRootCall) -> Self {
9467                    (value.blockHeight,)
9468                }
9469            }
9470            #[automatically_derived]
9471            #[doc(hidden)]
9472            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isEpochRootCall {
9473                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9474                    Self { blockHeight: tuple.0 }
9475                }
9476            }
9477        }
9478        {
9479            #[doc(hidden)]
9480            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
9481            #[doc(hidden)]
9482            type UnderlyingRustTuple<'a> = (bool,);
9483            #[cfg(test)]
9484            #[allow(dead_code, unreachable_patterns)]
9485            fn _type_assertion(
9486                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9487            ) {
9488                match _t {
9489                    alloy_sol_types::private::AssertTypeEq::<
9490                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9491                    >(_) => {}
9492                }
9493            }
9494            #[automatically_derived]
9495            #[doc(hidden)]
9496            impl ::core::convert::From<isEpochRootReturn> for UnderlyingRustTuple<'_> {
9497                fn from(value: isEpochRootReturn) -> Self {
9498                    (value._0,)
9499                }
9500            }
9501            #[automatically_derived]
9502            #[doc(hidden)]
9503            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isEpochRootReturn {
9504                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9505                    Self { _0: tuple.0 }
9506                }
9507            }
9508        }
9509        #[automatically_derived]
9510        impl alloy_sol_types::SolCall for isEpochRootCall {
9511            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9512            type Token<'a> = <Self::Parameters<
9513                'a,
9514            > as alloy_sol_types::SolType>::Token<'a>;
9515            type Return = isEpochRootReturn;
9516            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
9517            type ReturnToken<'a> = <Self::ReturnTuple<
9518                'a,
9519            > as alloy_sol_types::SolType>::Token<'a>;
9520            const SIGNATURE: &'static str = "isEpochRoot(uint64)";
9521            const SELECTOR: [u8; 4] = [37u8, 41u8, 116u8, 39u8];
9522            #[inline]
9523            fn new<'a>(
9524                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9525            ) -> Self {
9526                tuple.into()
9527            }
9528            #[inline]
9529            fn tokenize(&self) -> Self::Token<'_> {
9530                (
9531                    <alloy::sol_types::sol_data::Uint<
9532                        64,
9533                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
9534                )
9535            }
9536            #[inline]
9537            fn abi_decode_returns(
9538                data: &[u8],
9539                validate: bool,
9540            ) -> alloy_sol_types::Result<Self::Return> {
9541                <Self::ReturnTuple<
9542                    '_,
9543                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9544                    .map(Into::into)
9545            }
9546        }
9547    };
9548    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9549    /**Function with signature `isGtEpochRoot(uint64)` and selector `0x300c89dd`.
9550```solidity
9551function isGtEpochRoot(uint64 blockHeight) external view returns (bool);
9552```*/
9553    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9554    #[derive(Clone)]
9555    pub struct isGtEpochRootCall {
9556        #[allow(missing_docs)]
9557        pub blockHeight: u64,
9558    }
9559    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9560    ///Container type for the return parameters of the [`isGtEpochRoot(uint64)`](isGtEpochRootCall) function.
9561    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9562    #[derive(Clone)]
9563    pub struct isGtEpochRootReturn {
9564        #[allow(missing_docs)]
9565        pub _0: bool,
9566    }
9567    #[allow(
9568        non_camel_case_types,
9569        non_snake_case,
9570        clippy::pub_underscore_fields,
9571        clippy::style
9572    )]
9573    const _: () = {
9574        use alloy::sol_types as alloy_sol_types;
9575        {
9576            #[doc(hidden)]
9577            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9578            #[doc(hidden)]
9579            type UnderlyingRustTuple<'a> = (u64,);
9580            #[cfg(test)]
9581            #[allow(dead_code, unreachable_patterns)]
9582            fn _type_assertion(
9583                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9584            ) {
9585                match _t {
9586                    alloy_sol_types::private::AssertTypeEq::<
9587                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9588                    >(_) => {}
9589                }
9590            }
9591            #[automatically_derived]
9592            #[doc(hidden)]
9593            impl ::core::convert::From<isGtEpochRootCall> for UnderlyingRustTuple<'_> {
9594                fn from(value: isGtEpochRootCall) -> Self {
9595                    (value.blockHeight,)
9596                }
9597            }
9598            #[automatically_derived]
9599            #[doc(hidden)]
9600            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isGtEpochRootCall {
9601                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9602                    Self { blockHeight: tuple.0 }
9603                }
9604            }
9605        }
9606        {
9607            #[doc(hidden)]
9608            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
9609            #[doc(hidden)]
9610            type UnderlyingRustTuple<'a> = (bool,);
9611            #[cfg(test)]
9612            #[allow(dead_code, unreachable_patterns)]
9613            fn _type_assertion(
9614                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9615            ) {
9616                match _t {
9617                    alloy_sol_types::private::AssertTypeEq::<
9618                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9619                    >(_) => {}
9620                }
9621            }
9622            #[automatically_derived]
9623            #[doc(hidden)]
9624            impl ::core::convert::From<isGtEpochRootReturn> for UnderlyingRustTuple<'_> {
9625                fn from(value: isGtEpochRootReturn) -> Self {
9626                    (value._0,)
9627                }
9628            }
9629            #[automatically_derived]
9630            #[doc(hidden)]
9631            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isGtEpochRootReturn {
9632                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9633                    Self { _0: tuple.0 }
9634                }
9635            }
9636        }
9637        #[automatically_derived]
9638        impl alloy_sol_types::SolCall for isGtEpochRootCall {
9639            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9640            type Token<'a> = <Self::Parameters<
9641                'a,
9642            > as alloy_sol_types::SolType>::Token<'a>;
9643            type Return = isGtEpochRootReturn;
9644            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
9645            type ReturnToken<'a> = <Self::ReturnTuple<
9646                'a,
9647            > as alloy_sol_types::SolType>::Token<'a>;
9648            const SIGNATURE: &'static str = "isGtEpochRoot(uint64)";
9649            const SELECTOR: [u8; 4] = [48u8, 12u8, 137u8, 221u8];
9650            #[inline]
9651            fn new<'a>(
9652                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9653            ) -> Self {
9654                tuple.into()
9655            }
9656            #[inline]
9657            fn tokenize(&self) -> Self::Token<'_> {
9658                (
9659                    <alloy::sol_types::sol_data::Uint<
9660                        64,
9661                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
9662                )
9663            }
9664            #[inline]
9665            fn abi_decode_returns(
9666                data: &[u8],
9667                validate: bool,
9668            ) -> alloy_sol_types::Result<Self::Return> {
9669                <Self::ReturnTuple<
9670                    '_,
9671                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9672                    .map(Into::into)
9673            }
9674        }
9675    };
9676    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9677    /**Function with signature `isPermissionedProverEnabled()` and selector `0x826e41fc`.
9678```solidity
9679function isPermissionedProverEnabled() external view returns (bool);
9680```*/
9681    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9682    #[derive(Clone)]
9683    pub struct isPermissionedProverEnabledCall {}
9684    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9685    ///Container type for the return parameters of the [`isPermissionedProverEnabled()`](isPermissionedProverEnabledCall) function.
9686    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9687    #[derive(Clone)]
9688    pub struct isPermissionedProverEnabledReturn {
9689        #[allow(missing_docs)]
9690        pub _0: bool,
9691    }
9692    #[allow(
9693        non_camel_case_types,
9694        non_snake_case,
9695        clippy::pub_underscore_fields,
9696        clippy::style
9697    )]
9698    const _: () = {
9699        use alloy::sol_types as alloy_sol_types;
9700        {
9701            #[doc(hidden)]
9702            type UnderlyingSolTuple<'a> = ();
9703            #[doc(hidden)]
9704            type UnderlyingRustTuple<'a> = ();
9705            #[cfg(test)]
9706            #[allow(dead_code, unreachable_patterns)]
9707            fn _type_assertion(
9708                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9709            ) {
9710                match _t {
9711                    alloy_sol_types::private::AssertTypeEq::<
9712                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9713                    >(_) => {}
9714                }
9715            }
9716            #[automatically_derived]
9717            #[doc(hidden)]
9718            impl ::core::convert::From<isPermissionedProverEnabledCall>
9719            for UnderlyingRustTuple<'_> {
9720                fn from(value: isPermissionedProverEnabledCall) -> Self {
9721                    ()
9722                }
9723            }
9724            #[automatically_derived]
9725            #[doc(hidden)]
9726            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9727            for isPermissionedProverEnabledCall {
9728                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9729                    Self {}
9730                }
9731            }
9732        }
9733        {
9734            #[doc(hidden)]
9735            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
9736            #[doc(hidden)]
9737            type UnderlyingRustTuple<'a> = (bool,);
9738            #[cfg(test)]
9739            #[allow(dead_code, unreachable_patterns)]
9740            fn _type_assertion(
9741                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9742            ) {
9743                match _t {
9744                    alloy_sol_types::private::AssertTypeEq::<
9745                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9746                    >(_) => {}
9747                }
9748            }
9749            #[automatically_derived]
9750            #[doc(hidden)]
9751            impl ::core::convert::From<isPermissionedProverEnabledReturn>
9752            for UnderlyingRustTuple<'_> {
9753                fn from(value: isPermissionedProverEnabledReturn) -> Self {
9754                    (value._0,)
9755                }
9756            }
9757            #[automatically_derived]
9758            #[doc(hidden)]
9759            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9760            for isPermissionedProverEnabledReturn {
9761                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9762                    Self { _0: tuple.0 }
9763                }
9764            }
9765        }
9766        #[automatically_derived]
9767        impl alloy_sol_types::SolCall for isPermissionedProverEnabledCall {
9768            type Parameters<'a> = ();
9769            type Token<'a> = <Self::Parameters<
9770                'a,
9771            > as alloy_sol_types::SolType>::Token<'a>;
9772            type Return = isPermissionedProverEnabledReturn;
9773            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
9774            type ReturnToken<'a> = <Self::ReturnTuple<
9775                'a,
9776            > as alloy_sol_types::SolType>::Token<'a>;
9777            const SIGNATURE: &'static str = "isPermissionedProverEnabled()";
9778            const SELECTOR: [u8; 4] = [130u8, 110u8, 65u8, 252u8];
9779            #[inline]
9780            fn new<'a>(
9781                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9782            ) -> Self {
9783                tuple.into()
9784            }
9785            #[inline]
9786            fn tokenize(&self) -> Self::Token<'_> {
9787                ()
9788            }
9789            #[inline]
9790            fn abi_decode_returns(
9791                data: &[u8],
9792                validate: bool,
9793            ) -> alloy_sol_types::Result<Self::Return> {
9794                <Self::ReturnTuple<
9795                    '_,
9796                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9797                    .map(Into::into)
9798            }
9799        }
9800    };
9801    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9802    /**Function with signature `lagOverEscapeHatchThreshold(uint256,uint256)` and selector `0xe0303301`.
9803```solidity
9804function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 blockThreshold) external view returns (bool);
9805```*/
9806    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9807    #[derive(Clone)]
9808    pub struct lagOverEscapeHatchThresholdCall {
9809        #[allow(missing_docs)]
9810        pub blockNumber: alloy::sol_types::private::primitives::aliases::U256,
9811        #[allow(missing_docs)]
9812        pub blockThreshold: alloy::sol_types::private::primitives::aliases::U256,
9813    }
9814    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9815    ///Container type for the return parameters of the [`lagOverEscapeHatchThreshold(uint256,uint256)`](lagOverEscapeHatchThresholdCall) function.
9816    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9817    #[derive(Clone)]
9818    pub struct lagOverEscapeHatchThresholdReturn {
9819        #[allow(missing_docs)]
9820        pub _0: bool,
9821    }
9822    #[allow(
9823        non_camel_case_types,
9824        non_snake_case,
9825        clippy::pub_underscore_fields,
9826        clippy::style
9827    )]
9828    const _: () = {
9829        use alloy::sol_types as alloy_sol_types;
9830        {
9831            #[doc(hidden)]
9832            type UnderlyingSolTuple<'a> = (
9833                alloy::sol_types::sol_data::Uint<256>,
9834                alloy::sol_types::sol_data::Uint<256>,
9835            );
9836            #[doc(hidden)]
9837            type UnderlyingRustTuple<'a> = (
9838                alloy::sol_types::private::primitives::aliases::U256,
9839                alloy::sol_types::private::primitives::aliases::U256,
9840            );
9841            #[cfg(test)]
9842            #[allow(dead_code, unreachable_patterns)]
9843            fn _type_assertion(
9844                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9845            ) {
9846                match _t {
9847                    alloy_sol_types::private::AssertTypeEq::<
9848                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9849                    >(_) => {}
9850                }
9851            }
9852            #[automatically_derived]
9853            #[doc(hidden)]
9854            impl ::core::convert::From<lagOverEscapeHatchThresholdCall>
9855            for UnderlyingRustTuple<'_> {
9856                fn from(value: lagOverEscapeHatchThresholdCall) -> Self {
9857                    (value.blockNumber, value.blockThreshold)
9858                }
9859            }
9860            #[automatically_derived]
9861            #[doc(hidden)]
9862            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9863            for lagOverEscapeHatchThresholdCall {
9864                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9865                    Self {
9866                        blockNumber: tuple.0,
9867                        blockThreshold: tuple.1,
9868                    }
9869                }
9870            }
9871        }
9872        {
9873            #[doc(hidden)]
9874            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
9875            #[doc(hidden)]
9876            type UnderlyingRustTuple<'a> = (bool,);
9877            #[cfg(test)]
9878            #[allow(dead_code, unreachable_patterns)]
9879            fn _type_assertion(
9880                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9881            ) {
9882                match _t {
9883                    alloy_sol_types::private::AssertTypeEq::<
9884                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9885                    >(_) => {}
9886                }
9887            }
9888            #[automatically_derived]
9889            #[doc(hidden)]
9890            impl ::core::convert::From<lagOverEscapeHatchThresholdReturn>
9891            for UnderlyingRustTuple<'_> {
9892                fn from(value: lagOverEscapeHatchThresholdReturn) -> Self {
9893                    (value._0,)
9894                }
9895            }
9896            #[automatically_derived]
9897            #[doc(hidden)]
9898            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9899            for lagOverEscapeHatchThresholdReturn {
9900                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9901                    Self { _0: tuple.0 }
9902                }
9903            }
9904        }
9905        #[automatically_derived]
9906        impl alloy_sol_types::SolCall for lagOverEscapeHatchThresholdCall {
9907            type Parameters<'a> = (
9908                alloy::sol_types::sol_data::Uint<256>,
9909                alloy::sol_types::sol_data::Uint<256>,
9910            );
9911            type Token<'a> = <Self::Parameters<
9912                'a,
9913            > as alloy_sol_types::SolType>::Token<'a>;
9914            type Return = lagOverEscapeHatchThresholdReturn;
9915            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
9916            type ReturnToken<'a> = <Self::ReturnTuple<
9917                'a,
9918            > as alloy_sol_types::SolType>::Token<'a>;
9919            const SIGNATURE: &'static str = "lagOverEscapeHatchThreshold(uint256,uint256)";
9920            const SELECTOR: [u8; 4] = [224u8, 48u8, 51u8, 1u8];
9921            #[inline]
9922            fn new<'a>(
9923                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9924            ) -> Self {
9925                tuple.into()
9926            }
9927            #[inline]
9928            fn tokenize(&self) -> Self::Token<'_> {
9929                (
9930                    <alloy::sol_types::sol_data::Uint<
9931                        256,
9932                    > as alloy_sol_types::SolType>::tokenize(&self.blockNumber),
9933                    <alloy::sol_types::sol_data::Uint<
9934                        256,
9935                    > as alloy_sol_types::SolType>::tokenize(&self.blockThreshold),
9936                )
9937            }
9938            #[inline]
9939            fn abi_decode_returns(
9940                data: &[u8],
9941                validate: bool,
9942            ) -> alloy_sol_types::Result<Self::Return> {
9943                <Self::ReturnTuple<
9944                    '_,
9945                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9946                    .map(Into::into)
9947            }
9948        }
9949    };
9950    #[derive()]
9951    /**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`.
9952```solidity
9953function newFinalizedState(LightClient.LightClientState memory, IPlonkVerifier.PlonkProof memory) external pure;
9954```*/
9955    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9956    #[derive(Clone)]
9957    pub struct newFinalizedState_0Call {
9958        #[allow(missing_docs)]
9959        pub _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
9960        #[allow(missing_docs)]
9961        pub _1: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
9962    }
9963    ///Container type for the return parameters of the [`newFinalizedState((uint64,uint64,uint256),((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))`](newFinalizedState_0Call) function.
9964    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9965    #[derive(Clone)]
9966    pub struct newFinalizedState_0Return {}
9967    #[allow(
9968        non_camel_case_types,
9969        non_snake_case,
9970        clippy::pub_underscore_fields,
9971        clippy::style
9972    )]
9973    const _: () = {
9974        use alloy::sol_types as alloy_sol_types;
9975        {
9976            #[doc(hidden)]
9977            type UnderlyingSolTuple<'a> = (
9978                LightClient::LightClientState,
9979                IPlonkVerifier::PlonkProof,
9980            );
9981            #[doc(hidden)]
9982            type UnderlyingRustTuple<'a> = (
9983                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
9984                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
9985            );
9986            #[cfg(test)]
9987            #[allow(dead_code, unreachable_patterns)]
9988            fn _type_assertion(
9989                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9990            ) {
9991                match _t {
9992                    alloy_sol_types::private::AssertTypeEq::<
9993                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9994                    >(_) => {}
9995                }
9996            }
9997            #[automatically_derived]
9998            #[doc(hidden)]
9999            impl ::core::convert::From<newFinalizedState_0Call>
10000            for UnderlyingRustTuple<'_> {
10001                fn from(value: newFinalizedState_0Call) -> Self {
10002                    (value._0, value._1)
10003                }
10004            }
10005            #[automatically_derived]
10006            #[doc(hidden)]
10007            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10008            for newFinalizedState_0Call {
10009                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10010                    Self { _0: tuple.0, _1: tuple.1 }
10011                }
10012            }
10013        }
10014        {
10015            #[doc(hidden)]
10016            type UnderlyingSolTuple<'a> = ();
10017            #[doc(hidden)]
10018            type UnderlyingRustTuple<'a> = ();
10019            #[cfg(test)]
10020            #[allow(dead_code, unreachable_patterns)]
10021            fn _type_assertion(
10022                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10023            ) {
10024                match _t {
10025                    alloy_sol_types::private::AssertTypeEq::<
10026                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10027                    >(_) => {}
10028                }
10029            }
10030            #[automatically_derived]
10031            #[doc(hidden)]
10032            impl ::core::convert::From<newFinalizedState_0Return>
10033            for UnderlyingRustTuple<'_> {
10034                fn from(value: newFinalizedState_0Return) -> Self {
10035                    ()
10036                }
10037            }
10038            #[automatically_derived]
10039            #[doc(hidden)]
10040            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10041            for newFinalizedState_0Return {
10042                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10043                    Self {}
10044                }
10045            }
10046        }
10047        #[automatically_derived]
10048        impl alloy_sol_types::SolCall for newFinalizedState_0Call {
10049            type Parameters<'a> = (
10050                LightClient::LightClientState,
10051                IPlonkVerifier::PlonkProof,
10052            );
10053            type Token<'a> = <Self::Parameters<
10054                'a,
10055            > as alloy_sol_types::SolType>::Token<'a>;
10056            type Return = newFinalizedState_0Return;
10057            type ReturnTuple<'a> = ();
10058            type ReturnToken<'a> = <Self::ReturnTuple<
10059                'a,
10060            > as alloy_sol_types::SolType>::Token<'a>;
10061            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))";
10062            const SELECTOR: [u8; 4] = [32u8, 99u8, 212u8, 247u8];
10063            #[inline]
10064            fn new<'a>(
10065                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10066            ) -> Self {
10067                tuple.into()
10068            }
10069            #[inline]
10070            fn tokenize(&self) -> Self::Token<'_> {
10071                (
10072                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
10073                        &self._0,
10074                    ),
10075                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
10076                        &self._1,
10077                    ),
10078                )
10079            }
10080            #[inline]
10081            fn abi_decode_returns(
10082                data: &[u8],
10083                validate: bool,
10084            ) -> alloy_sol_types::Result<Self::Return> {
10085                <Self::ReturnTuple<
10086                    '_,
10087                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
10088                    .map(Into::into)
10089            }
10090        }
10091    };
10092    #[derive()]
10093    /**Function with signature `newFinalizedState((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))` and selector `0x757c37ad`.
10094```solidity
10095function newFinalizedState(LightClient.LightClientState memory newState, LightClient.StakeTableState memory nextStakeTable, IPlonkVerifier.PlonkProof memory proof) external;
10096```*/
10097    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10098    #[derive(Clone)]
10099    pub struct newFinalizedState_1Call {
10100        #[allow(missing_docs)]
10101        pub newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10102        #[allow(missing_docs)]
10103        pub nextStakeTable: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
10104        #[allow(missing_docs)]
10105        pub proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
10106    }
10107    ///Container type for the return parameters of the [`newFinalizedState((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))`](newFinalizedState_1Call) function.
10108    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10109    #[derive(Clone)]
10110    pub struct newFinalizedState_1Return {}
10111    #[allow(
10112        non_camel_case_types,
10113        non_snake_case,
10114        clippy::pub_underscore_fields,
10115        clippy::style
10116    )]
10117    const _: () = {
10118        use alloy::sol_types as alloy_sol_types;
10119        {
10120            #[doc(hidden)]
10121            type UnderlyingSolTuple<'a> = (
10122                LightClient::LightClientState,
10123                LightClient::StakeTableState,
10124                IPlonkVerifier::PlonkProof,
10125            );
10126            #[doc(hidden)]
10127            type UnderlyingRustTuple<'a> = (
10128                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10129                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
10130                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
10131            );
10132            #[cfg(test)]
10133            #[allow(dead_code, unreachable_patterns)]
10134            fn _type_assertion(
10135                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10136            ) {
10137                match _t {
10138                    alloy_sol_types::private::AssertTypeEq::<
10139                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10140                    >(_) => {}
10141                }
10142            }
10143            #[automatically_derived]
10144            #[doc(hidden)]
10145            impl ::core::convert::From<newFinalizedState_1Call>
10146            for UnderlyingRustTuple<'_> {
10147                fn from(value: newFinalizedState_1Call) -> Self {
10148                    (value.newState, value.nextStakeTable, value.proof)
10149                }
10150            }
10151            #[automatically_derived]
10152            #[doc(hidden)]
10153            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10154            for newFinalizedState_1Call {
10155                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10156                    Self {
10157                        newState: tuple.0,
10158                        nextStakeTable: tuple.1,
10159                        proof: tuple.2,
10160                    }
10161                }
10162            }
10163        }
10164        {
10165            #[doc(hidden)]
10166            type UnderlyingSolTuple<'a> = ();
10167            #[doc(hidden)]
10168            type UnderlyingRustTuple<'a> = ();
10169            #[cfg(test)]
10170            #[allow(dead_code, unreachable_patterns)]
10171            fn _type_assertion(
10172                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10173            ) {
10174                match _t {
10175                    alloy_sol_types::private::AssertTypeEq::<
10176                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10177                    >(_) => {}
10178                }
10179            }
10180            #[automatically_derived]
10181            #[doc(hidden)]
10182            impl ::core::convert::From<newFinalizedState_1Return>
10183            for UnderlyingRustTuple<'_> {
10184                fn from(value: newFinalizedState_1Return) -> Self {
10185                    ()
10186                }
10187            }
10188            #[automatically_derived]
10189            #[doc(hidden)]
10190            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10191            for newFinalizedState_1Return {
10192                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10193                    Self {}
10194                }
10195            }
10196        }
10197        #[automatically_derived]
10198        impl alloy_sol_types::SolCall for newFinalizedState_1Call {
10199            type Parameters<'a> = (
10200                LightClient::LightClientState,
10201                LightClient::StakeTableState,
10202                IPlonkVerifier::PlonkProof,
10203            );
10204            type Token<'a> = <Self::Parameters<
10205                'a,
10206            > as alloy_sol_types::SolType>::Token<'a>;
10207            type Return = newFinalizedState_1Return;
10208            type ReturnTuple<'a> = ();
10209            type ReturnToken<'a> = <Self::ReturnTuple<
10210                'a,
10211            > as alloy_sol_types::SolType>::Token<'a>;
10212            const SIGNATURE: &'static str = "newFinalizedState((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))";
10213            const SELECTOR: [u8; 4] = [117u8, 124u8, 55u8, 173u8];
10214            #[inline]
10215            fn new<'a>(
10216                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10217            ) -> Self {
10218                tuple.into()
10219            }
10220            #[inline]
10221            fn tokenize(&self) -> Self::Token<'_> {
10222                (
10223                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
10224                        &self.newState,
10225                    ),
10226                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
10227                        &self.nextStakeTable,
10228                    ),
10229                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
10230                        &self.proof,
10231                    ),
10232                )
10233            }
10234            #[inline]
10235            fn abi_decode_returns(
10236                data: &[u8],
10237                validate: bool,
10238            ) -> alloy_sol_types::Result<Self::Return> {
10239                <Self::ReturnTuple<
10240                    '_,
10241                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
10242                    .map(Into::into)
10243            }
10244        }
10245    };
10246    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10247    /**Function with signature `owner()` and selector `0x8da5cb5b`.
10248```solidity
10249function owner() external view returns (address);
10250```*/
10251    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10252    #[derive(Clone)]
10253    pub struct ownerCall {}
10254    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10255    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
10256    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10257    #[derive(Clone)]
10258    pub struct ownerReturn {
10259        #[allow(missing_docs)]
10260        pub _0: alloy::sol_types::private::Address,
10261    }
10262    #[allow(
10263        non_camel_case_types,
10264        non_snake_case,
10265        clippy::pub_underscore_fields,
10266        clippy::style
10267    )]
10268    const _: () = {
10269        use alloy::sol_types as alloy_sol_types;
10270        {
10271            #[doc(hidden)]
10272            type UnderlyingSolTuple<'a> = ();
10273            #[doc(hidden)]
10274            type UnderlyingRustTuple<'a> = ();
10275            #[cfg(test)]
10276            #[allow(dead_code, unreachable_patterns)]
10277            fn _type_assertion(
10278                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10279            ) {
10280                match _t {
10281                    alloy_sol_types::private::AssertTypeEq::<
10282                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10283                    >(_) => {}
10284                }
10285            }
10286            #[automatically_derived]
10287            #[doc(hidden)]
10288            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
10289                fn from(value: ownerCall) -> Self {
10290                    ()
10291                }
10292            }
10293            #[automatically_derived]
10294            #[doc(hidden)]
10295            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
10296                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10297                    Self {}
10298                }
10299            }
10300        }
10301        {
10302            #[doc(hidden)]
10303            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
10304            #[doc(hidden)]
10305            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
10306            #[cfg(test)]
10307            #[allow(dead_code, unreachable_patterns)]
10308            fn _type_assertion(
10309                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10310            ) {
10311                match _t {
10312                    alloy_sol_types::private::AssertTypeEq::<
10313                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10314                    >(_) => {}
10315                }
10316            }
10317            #[automatically_derived]
10318            #[doc(hidden)]
10319            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
10320                fn from(value: ownerReturn) -> Self {
10321                    (value._0,)
10322                }
10323            }
10324            #[automatically_derived]
10325            #[doc(hidden)]
10326            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
10327                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10328                    Self { _0: tuple.0 }
10329                }
10330            }
10331        }
10332        #[automatically_derived]
10333        impl alloy_sol_types::SolCall for ownerCall {
10334            type Parameters<'a> = ();
10335            type Token<'a> = <Self::Parameters<
10336                'a,
10337            > as alloy_sol_types::SolType>::Token<'a>;
10338            type Return = ownerReturn;
10339            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
10340            type ReturnToken<'a> = <Self::ReturnTuple<
10341                'a,
10342            > as alloy_sol_types::SolType>::Token<'a>;
10343            const SIGNATURE: &'static str = "owner()";
10344            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
10345            #[inline]
10346            fn new<'a>(
10347                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10348            ) -> Self {
10349                tuple.into()
10350            }
10351            #[inline]
10352            fn tokenize(&self) -> Self::Token<'_> {
10353                ()
10354            }
10355            #[inline]
10356            fn abi_decode_returns(
10357                data: &[u8],
10358                validate: bool,
10359            ) -> alloy_sol_types::Result<Self::Return> {
10360                <Self::ReturnTuple<
10361                    '_,
10362                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
10363                    .map(Into::into)
10364            }
10365        }
10366    };
10367    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10368    /**Function with signature `permissionedProver()` and selector `0x313df7b1`.
10369```solidity
10370function permissionedProver() external view returns (address);
10371```*/
10372    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10373    #[derive(Clone)]
10374    pub struct permissionedProverCall {}
10375    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10376    ///Container type for the return parameters of the [`permissionedProver()`](permissionedProverCall) function.
10377    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10378    #[derive(Clone)]
10379    pub struct permissionedProverReturn {
10380        #[allow(missing_docs)]
10381        pub _0: alloy::sol_types::private::Address,
10382    }
10383    #[allow(
10384        non_camel_case_types,
10385        non_snake_case,
10386        clippy::pub_underscore_fields,
10387        clippy::style
10388    )]
10389    const _: () = {
10390        use alloy::sol_types as alloy_sol_types;
10391        {
10392            #[doc(hidden)]
10393            type UnderlyingSolTuple<'a> = ();
10394            #[doc(hidden)]
10395            type UnderlyingRustTuple<'a> = ();
10396            #[cfg(test)]
10397            #[allow(dead_code, unreachable_patterns)]
10398            fn _type_assertion(
10399                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10400            ) {
10401                match _t {
10402                    alloy_sol_types::private::AssertTypeEq::<
10403                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10404                    >(_) => {}
10405                }
10406            }
10407            #[automatically_derived]
10408            #[doc(hidden)]
10409            impl ::core::convert::From<permissionedProverCall>
10410            for UnderlyingRustTuple<'_> {
10411                fn from(value: permissionedProverCall) -> Self {
10412                    ()
10413                }
10414            }
10415            #[automatically_derived]
10416            #[doc(hidden)]
10417            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10418            for permissionedProverCall {
10419                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10420                    Self {}
10421                }
10422            }
10423        }
10424        {
10425            #[doc(hidden)]
10426            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
10427            #[doc(hidden)]
10428            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
10429            #[cfg(test)]
10430            #[allow(dead_code, unreachable_patterns)]
10431            fn _type_assertion(
10432                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10433            ) {
10434                match _t {
10435                    alloy_sol_types::private::AssertTypeEq::<
10436                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10437                    >(_) => {}
10438                }
10439            }
10440            #[automatically_derived]
10441            #[doc(hidden)]
10442            impl ::core::convert::From<permissionedProverReturn>
10443            for UnderlyingRustTuple<'_> {
10444                fn from(value: permissionedProverReturn) -> Self {
10445                    (value._0,)
10446                }
10447            }
10448            #[automatically_derived]
10449            #[doc(hidden)]
10450            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10451            for permissionedProverReturn {
10452                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10453                    Self { _0: tuple.0 }
10454                }
10455            }
10456        }
10457        #[automatically_derived]
10458        impl alloy_sol_types::SolCall for permissionedProverCall {
10459            type Parameters<'a> = ();
10460            type Token<'a> = <Self::Parameters<
10461                'a,
10462            > as alloy_sol_types::SolType>::Token<'a>;
10463            type Return = permissionedProverReturn;
10464            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
10465            type ReturnToken<'a> = <Self::ReturnTuple<
10466                'a,
10467            > as alloy_sol_types::SolType>::Token<'a>;
10468            const SIGNATURE: &'static str = "permissionedProver()";
10469            const SELECTOR: [u8; 4] = [49u8, 61u8, 247u8, 177u8];
10470            #[inline]
10471            fn new<'a>(
10472                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10473            ) -> Self {
10474                tuple.into()
10475            }
10476            #[inline]
10477            fn tokenize(&self) -> Self::Token<'_> {
10478                ()
10479            }
10480            #[inline]
10481            fn abi_decode_returns(
10482                data: &[u8],
10483                validate: bool,
10484            ) -> alloy_sol_types::Result<Self::Return> {
10485                <Self::ReturnTuple<
10486                    '_,
10487                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
10488                    .map(Into::into)
10489            }
10490        }
10491    };
10492    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10493    /**Function with signature `proxiableUUID()` and selector `0x52d1902d`.
10494```solidity
10495function proxiableUUID() external view returns (bytes32);
10496```*/
10497    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10498    #[derive(Clone)]
10499    pub struct proxiableUUIDCall {}
10500    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10501    ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function.
10502    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10503    #[derive(Clone)]
10504    pub struct proxiableUUIDReturn {
10505        #[allow(missing_docs)]
10506        pub _0: alloy::sol_types::private::FixedBytes<32>,
10507    }
10508    #[allow(
10509        non_camel_case_types,
10510        non_snake_case,
10511        clippy::pub_underscore_fields,
10512        clippy::style
10513    )]
10514    const _: () = {
10515        use alloy::sol_types as alloy_sol_types;
10516        {
10517            #[doc(hidden)]
10518            type UnderlyingSolTuple<'a> = ();
10519            #[doc(hidden)]
10520            type UnderlyingRustTuple<'a> = ();
10521            #[cfg(test)]
10522            #[allow(dead_code, unreachable_patterns)]
10523            fn _type_assertion(
10524                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10525            ) {
10526                match _t {
10527                    alloy_sol_types::private::AssertTypeEq::<
10528                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10529                    >(_) => {}
10530                }
10531            }
10532            #[automatically_derived]
10533            #[doc(hidden)]
10534            impl ::core::convert::From<proxiableUUIDCall> for UnderlyingRustTuple<'_> {
10535                fn from(value: proxiableUUIDCall) -> Self {
10536                    ()
10537                }
10538            }
10539            #[automatically_derived]
10540            #[doc(hidden)]
10541            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDCall {
10542                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10543                    Self {}
10544                }
10545            }
10546        }
10547        {
10548            #[doc(hidden)]
10549            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
10550            #[doc(hidden)]
10551            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
10552            #[cfg(test)]
10553            #[allow(dead_code, unreachable_patterns)]
10554            fn _type_assertion(
10555                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10556            ) {
10557                match _t {
10558                    alloy_sol_types::private::AssertTypeEq::<
10559                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10560                    >(_) => {}
10561                }
10562            }
10563            #[automatically_derived]
10564            #[doc(hidden)]
10565            impl ::core::convert::From<proxiableUUIDReturn> for UnderlyingRustTuple<'_> {
10566                fn from(value: proxiableUUIDReturn) -> Self {
10567                    (value._0,)
10568                }
10569            }
10570            #[automatically_derived]
10571            #[doc(hidden)]
10572            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDReturn {
10573                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10574                    Self { _0: tuple.0 }
10575                }
10576            }
10577        }
10578        #[automatically_derived]
10579        impl alloy_sol_types::SolCall for proxiableUUIDCall {
10580            type Parameters<'a> = ();
10581            type Token<'a> = <Self::Parameters<
10582                'a,
10583            > as alloy_sol_types::SolType>::Token<'a>;
10584            type Return = proxiableUUIDReturn;
10585            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
10586            type ReturnToken<'a> = <Self::ReturnTuple<
10587                'a,
10588            > as alloy_sol_types::SolType>::Token<'a>;
10589            const SIGNATURE: &'static str = "proxiableUUID()";
10590            const SELECTOR: [u8; 4] = [82u8, 209u8, 144u8, 45u8];
10591            #[inline]
10592            fn new<'a>(
10593                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10594            ) -> Self {
10595                tuple.into()
10596            }
10597            #[inline]
10598            fn tokenize(&self) -> Self::Token<'_> {
10599                ()
10600            }
10601            #[inline]
10602            fn abi_decode_returns(
10603                data: &[u8],
10604                validate: bool,
10605            ) -> alloy_sol_types::Result<Self::Return> {
10606                <Self::ReturnTuple<
10607                    '_,
10608                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
10609                    .map(Into::into)
10610            }
10611        }
10612    };
10613    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10614    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
10615```solidity
10616function renounceOwnership() external;
10617```*/
10618    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10619    #[derive(Clone)]
10620    pub struct renounceOwnershipCall {}
10621    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
10622    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10623    #[derive(Clone)]
10624    pub struct renounceOwnershipReturn {}
10625    #[allow(
10626        non_camel_case_types,
10627        non_snake_case,
10628        clippy::pub_underscore_fields,
10629        clippy::style
10630    )]
10631    const _: () = {
10632        use alloy::sol_types as alloy_sol_types;
10633        {
10634            #[doc(hidden)]
10635            type UnderlyingSolTuple<'a> = ();
10636            #[doc(hidden)]
10637            type UnderlyingRustTuple<'a> = ();
10638            #[cfg(test)]
10639            #[allow(dead_code, unreachable_patterns)]
10640            fn _type_assertion(
10641                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10642            ) {
10643                match _t {
10644                    alloy_sol_types::private::AssertTypeEq::<
10645                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10646                    >(_) => {}
10647                }
10648            }
10649            #[automatically_derived]
10650            #[doc(hidden)]
10651            impl ::core::convert::From<renounceOwnershipCall>
10652            for UnderlyingRustTuple<'_> {
10653                fn from(value: renounceOwnershipCall) -> Self {
10654                    ()
10655                }
10656            }
10657            #[automatically_derived]
10658            #[doc(hidden)]
10659            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10660            for renounceOwnershipCall {
10661                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10662                    Self {}
10663                }
10664            }
10665        }
10666        {
10667            #[doc(hidden)]
10668            type UnderlyingSolTuple<'a> = ();
10669            #[doc(hidden)]
10670            type UnderlyingRustTuple<'a> = ();
10671            #[cfg(test)]
10672            #[allow(dead_code, unreachable_patterns)]
10673            fn _type_assertion(
10674                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10675            ) {
10676                match _t {
10677                    alloy_sol_types::private::AssertTypeEq::<
10678                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10679                    >(_) => {}
10680                }
10681            }
10682            #[automatically_derived]
10683            #[doc(hidden)]
10684            impl ::core::convert::From<renounceOwnershipReturn>
10685            for UnderlyingRustTuple<'_> {
10686                fn from(value: renounceOwnershipReturn) -> Self {
10687                    ()
10688                }
10689            }
10690            #[automatically_derived]
10691            #[doc(hidden)]
10692            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10693            for renounceOwnershipReturn {
10694                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10695                    Self {}
10696                }
10697            }
10698        }
10699        #[automatically_derived]
10700        impl alloy_sol_types::SolCall for renounceOwnershipCall {
10701            type Parameters<'a> = ();
10702            type Token<'a> = <Self::Parameters<
10703                'a,
10704            > as alloy_sol_types::SolType>::Token<'a>;
10705            type Return = renounceOwnershipReturn;
10706            type ReturnTuple<'a> = ();
10707            type ReturnToken<'a> = <Self::ReturnTuple<
10708                'a,
10709            > as alloy_sol_types::SolType>::Token<'a>;
10710            const SIGNATURE: &'static str = "renounceOwnership()";
10711            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
10712            #[inline]
10713            fn new<'a>(
10714                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10715            ) -> Self {
10716                tuple.into()
10717            }
10718            #[inline]
10719            fn tokenize(&self) -> Self::Token<'_> {
10720                ()
10721            }
10722            #[inline]
10723            fn abi_decode_returns(
10724                data: &[u8],
10725                validate: bool,
10726            ) -> alloy_sol_types::Result<Self::Return> {
10727                <Self::ReturnTuple<
10728                    '_,
10729                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
10730                    .map(Into::into)
10731            }
10732        }
10733    };
10734    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10735    /**Function with signature `setPermissionedProver(address)` and selector `0x013fa5fc`.
10736```solidity
10737function setPermissionedProver(address prover) external;
10738```*/
10739    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10740    #[derive(Clone)]
10741    pub struct setPermissionedProverCall {
10742        #[allow(missing_docs)]
10743        pub prover: alloy::sol_types::private::Address,
10744    }
10745    ///Container type for the return parameters of the [`setPermissionedProver(address)`](setPermissionedProverCall) function.
10746    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10747    #[derive(Clone)]
10748    pub struct setPermissionedProverReturn {}
10749    #[allow(
10750        non_camel_case_types,
10751        non_snake_case,
10752        clippy::pub_underscore_fields,
10753        clippy::style
10754    )]
10755    const _: () = {
10756        use alloy::sol_types as alloy_sol_types;
10757        {
10758            #[doc(hidden)]
10759            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
10760            #[doc(hidden)]
10761            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
10762            #[cfg(test)]
10763            #[allow(dead_code, unreachable_patterns)]
10764            fn _type_assertion(
10765                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10766            ) {
10767                match _t {
10768                    alloy_sol_types::private::AssertTypeEq::<
10769                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10770                    >(_) => {}
10771                }
10772            }
10773            #[automatically_derived]
10774            #[doc(hidden)]
10775            impl ::core::convert::From<setPermissionedProverCall>
10776            for UnderlyingRustTuple<'_> {
10777                fn from(value: setPermissionedProverCall) -> Self {
10778                    (value.prover,)
10779                }
10780            }
10781            #[automatically_derived]
10782            #[doc(hidden)]
10783            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10784            for setPermissionedProverCall {
10785                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10786                    Self { prover: tuple.0 }
10787                }
10788            }
10789        }
10790        {
10791            #[doc(hidden)]
10792            type UnderlyingSolTuple<'a> = ();
10793            #[doc(hidden)]
10794            type UnderlyingRustTuple<'a> = ();
10795            #[cfg(test)]
10796            #[allow(dead_code, unreachable_patterns)]
10797            fn _type_assertion(
10798                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10799            ) {
10800                match _t {
10801                    alloy_sol_types::private::AssertTypeEq::<
10802                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10803                    >(_) => {}
10804                }
10805            }
10806            #[automatically_derived]
10807            #[doc(hidden)]
10808            impl ::core::convert::From<setPermissionedProverReturn>
10809            for UnderlyingRustTuple<'_> {
10810                fn from(value: setPermissionedProverReturn) -> Self {
10811                    ()
10812                }
10813            }
10814            #[automatically_derived]
10815            #[doc(hidden)]
10816            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10817            for setPermissionedProverReturn {
10818                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10819                    Self {}
10820                }
10821            }
10822        }
10823        #[automatically_derived]
10824        impl alloy_sol_types::SolCall for setPermissionedProverCall {
10825            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
10826            type Token<'a> = <Self::Parameters<
10827                'a,
10828            > as alloy_sol_types::SolType>::Token<'a>;
10829            type Return = setPermissionedProverReturn;
10830            type ReturnTuple<'a> = ();
10831            type ReturnToken<'a> = <Self::ReturnTuple<
10832                'a,
10833            > as alloy_sol_types::SolType>::Token<'a>;
10834            const SIGNATURE: &'static str = "setPermissionedProver(address)";
10835            const SELECTOR: [u8; 4] = [1u8, 63u8, 165u8, 252u8];
10836            #[inline]
10837            fn new<'a>(
10838                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10839            ) -> Self {
10840                tuple.into()
10841            }
10842            #[inline]
10843            fn tokenize(&self) -> Self::Token<'_> {
10844                (
10845                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10846                        &self.prover,
10847                    ),
10848                )
10849            }
10850            #[inline]
10851            fn abi_decode_returns(
10852                data: &[u8],
10853                validate: bool,
10854            ) -> alloy_sol_types::Result<Self::Return> {
10855                <Self::ReturnTuple<
10856                    '_,
10857                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
10858                    .map(Into::into)
10859            }
10860        }
10861    };
10862    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10863    /**Function with signature `setStateHistoryRetentionPeriod(uint32)` and selector `0x433dba9f`.
10864```solidity
10865function setStateHistoryRetentionPeriod(uint32 historySeconds) external;
10866```*/
10867    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10868    #[derive(Clone)]
10869    pub struct setStateHistoryRetentionPeriodCall {
10870        #[allow(missing_docs)]
10871        pub historySeconds: u32,
10872    }
10873    ///Container type for the return parameters of the [`setStateHistoryRetentionPeriod(uint32)`](setStateHistoryRetentionPeriodCall) function.
10874    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10875    #[derive(Clone)]
10876    pub struct setStateHistoryRetentionPeriodReturn {}
10877    #[allow(
10878        non_camel_case_types,
10879        non_snake_case,
10880        clippy::pub_underscore_fields,
10881        clippy::style
10882    )]
10883    const _: () = {
10884        use alloy::sol_types as alloy_sol_types;
10885        {
10886            #[doc(hidden)]
10887            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
10888            #[doc(hidden)]
10889            type UnderlyingRustTuple<'a> = (u32,);
10890            #[cfg(test)]
10891            #[allow(dead_code, unreachable_patterns)]
10892            fn _type_assertion(
10893                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10894            ) {
10895                match _t {
10896                    alloy_sol_types::private::AssertTypeEq::<
10897                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10898                    >(_) => {}
10899                }
10900            }
10901            #[automatically_derived]
10902            #[doc(hidden)]
10903            impl ::core::convert::From<setStateHistoryRetentionPeriodCall>
10904            for UnderlyingRustTuple<'_> {
10905                fn from(value: setStateHistoryRetentionPeriodCall) -> Self {
10906                    (value.historySeconds,)
10907                }
10908            }
10909            #[automatically_derived]
10910            #[doc(hidden)]
10911            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10912            for setStateHistoryRetentionPeriodCall {
10913                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10914                    Self { historySeconds: tuple.0 }
10915                }
10916            }
10917        }
10918        {
10919            #[doc(hidden)]
10920            type UnderlyingSolTuple<'a> = ();
10921            #[doc(hidden)]
10922            type UnderlyingRustTuple<'a> = ();
10923            #[cfg(test)]
10924            #[allow(dead_code, unreachable_patterns)]
10925            fn _type_assertion(
10926                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10927            ) {
10928                match _t {
10929                    alloy_sol_types::private::AssertTypeEq::<
10930                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10931                    >(_) => {}
10932                }
10933            }
10934            #[automatically_derived]
10935            #[doc(hidden)]
10936            impl ::core::convert::From<setStateHistoryRetentionPeriodReturn>
10937            for UnderlyingRustTuple<'_> {
10938                fn from(value: setStateHistoryRetentionPeriodReturn) -> Self {
10939                    ()
10940                }
10941            }
10942            #[automatically_derived]
10943            #[doc(hidden)]
10944            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10945            for setStateHistoryRetentionPeriodReturn {
10946                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10947                    Self {}
10948                }
10949            }
10950        }
10951        #[automatically_derived]
10952        impl alloy_sol_types::SolCall for setStateHistoryRetentionPeriodCall {
10953            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
10954            type Token<'a> = <Self::Parameters<
10955                'a,
10956            > as alloy_sol_types::SolType>::Token<'a>;
10957            type Return = setStateHistoryRetentionPeriodReturn;
10958            type ReturnTuple<'a> = ();
10959            type ReturnToken<'a> = <Self::ReturnTuple<
10960                'a,
10961            > as alloy_sol_types::SolType>::Token<'a>;
10962            const SIGNATURE: &'static str = "setStateHistoryRetentionPeriod(uint32)";
10963            const SELECTOR: [u8; 4] = [67u8, 61u8, 186u8, 159u8];
10964            #[inline]
10965            fn new<'a>(
10966                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10967            ) -> Self {
10968                tuple.into()
10969            }
10970            #[inline]
10971            fn tokenize(&self) -> Self::Token<'_> {
10972                (
10973                    <alloy::sol_types::sol_data::Uint<
10974                        32,
10975                    > as alloy_sol_types::SolType>::tokenize(&self.historySeconds),
10976                )
10977            }
10978            #[inline]
10979            fn abi_decode_returns(
10980                data: &[u8],
10981                validate: bool,
10982            ) -> alloy_sol_types::Result<Self::Return> {
10983                <Self::ReturnTuple<
10984                    '_,
10985                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
10986                    .map(Into::into)
10987            }
10988        }
10989    };
10990    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10991    /**Function with signature `setstateHistoryRetentionPeriod(uint32)` and selector `0x96c1ca61`.
10992```solidity
10993function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
10994```*/
10995    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10996    #[derive(Clone)]
10997    pub struct setstateHistoryRetentionPeriodCall {
10998        #[allow(missing_docs)]
10999        pub historySeconds: u32,
11000    }
11001    ///Container type for the return parameters of the [`setstateHistoryRetentionPeriod(uint32)`](setstateHistoryRetentionPeriodCall) function.
11002    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11003    #[derive(Clone)]
11004    pub struct setstateHistoryRetentionPeriodReturn {}
11005    #[allow(
11006        non_camel_case_types,
11007        non_snake_case,
11008        clippy::pub_underscore_fields,
11009        clippy::style
11010    )]
11011    const _: () = {
11012        use alloy::sol_types as alloy_sol_types;
11013        {
11014            #[doc(hidden)]
11015            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
11016            #[doc(hidden)]
11017            type UnderlyingRustTuple<'a> = (u32,);
11018            #[cfg(test)]
11019            #[allow(dead_code, unreachable_patterns)]
11020            fn _type_assertion(
11021                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11022            ) {
11023                match _t {
11024                    alloy_sol_types::private::AssertTypeEq::<
11025                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11026                    >(_) => {}
11027                }
11028            }
11029            #[automatically_derived]
11030            #[doc(hidden)]
11031            impl ::core::convert::From<setstateHistoryRetentionPeriodCall>
11032            for UnderlyingRustTuple<'_> {
11033                fn from(value: setstateHistoryRetentionPeriodCall) -> Self {
11034                    (value.historySeconds,)
11035                }
11036            }
11037            #[automatically_derived]
11038            #[doc(hidden)]
11039            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11040            for setstateHistoryRetentionPeriodCall {
11041                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11042                    Self { historySeconds: tuple.0 }
11043                }
11044            }
11045        }
11046        {
11047            #[doc(hidden)]
11048            type UnderlyingSolTuple<'a> = ();
11049            #[doc(hidden)]
11050            type UnderlyingRustTuple<'a> = ();
11051            #[cfg(test)]
11052            #[allow(dead_code, unreachable_patterns)]
11053            fn _type_assertion(
11054                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11055            ) {
11056                match _t {
11057                    alloy_sol_types::private::AssertTypeEq::<
11058                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11059                    >(_) => {}
11060                }
11061            }
11062            #[automatically_derived]
11063            #[doc(hidden)]
11064            impl ::core::convert::From<setstateHistoryRetentionPeriodReturn>
11065            for UnderlyingRustTuple<'_> {
11066                fn from(value: setstateHistoryRetentionPeriodReturn) -> Self {
11067                    ()
11068                }
11069            }
11070            #[automatically_derived]
11071            #[doc(hidden)]
11072            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11073            for setstateHistoryRetentionPeriodReturn {
11074                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11075                    Self {}
11076                }
11077            }
11078        }
11079        #[automatically_derived]
11080        impl alloy_sol_types::SolCall for setstateHistoryRetentionPeriodCall {
11081            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
11082            type Token<'a> = <Self::Parameters<
11083                'a,
11084            > as alloy_sol_types::SolType>::Token<'a>;
11085            type Return = setstateHistoryRetentionPeriodReturn;
11086            type ReturnTuple<'a> = ();
11087            type ReturnToken<'a> = <Self::ReturnTuple<
11088                'a,
11089            > as alloy_sol_types::SolType>::Token<'a>;
11090            const SIGNATURE: &'static str = "setstateHistoryRetentionPeriod(uint32)";
11091            const SELECTOR: [u8; 4] = [150u8, 193u8, 202u8, 97u8];
11092            #[inline]
11093            fn new<'a>(
11094                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11095            ) -> Self {
11096                tuple.into()
11097            }
11098            #[inline]
11099            fn tokenize(&self) -> Self::Token<'_> {
11100                (
11101                    <alloy::sol_types::sol_data::Uint<
11102                        32,
11103                    > as alloy_sol_types::SolType>::tokenize(&self.historySeconds),
11104                )
11105            }
11106            #[inline]
11107            fn abi_decode_returns(
11108                data: &[u8],
11109                validate: bool,
11110            ) -> alloy_sol_types::Result<Self::Return> {
11111                <Self::ReturnTuple<
11112                    '_,
11113                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
11114                    .map(Into::into)
11115            }
11116        }
11117    };
11118    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11119    /**Function with signature `stateHistoryCommitments(uint256)` and selector `0x02b592f3`.
11120```solidity
11121function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
11122```*/
11123    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11124    #[derive(Clone)]
11125    pub struct stateHistoryCommitmentsCall {
11126        #[allow(missing_docs)]
11127        pub _0: alloy::sol_types::private::primitives::aliases::U256,
11128    }
11129    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11130    ///Container type for the return parameters of the [`stateHistoryCommitments(uint256)`](stateHistoryCommitmentsCall) function.
11131    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11132    #[derive(Clone)]
11133    pub struct stateHistoryCommitmentsReturn {
11134        #[allow(missing_docs)]
11135        pub l1BlockHeight: u64,
11136        #[allow(missing_docs)]
11137        pub l1BlockTimestamp: u64,
11138        #[allow(missing_docs)]
11139        pub hotShotBlockHeight: u64,
11140        #[allow(missing_docs)]
11141        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
11142    }
11143    #[allow(
11144        non_camel_case_types,
11145        non_snake_case,
11146        clippy::pub_underscore_fields,
11147        clippy::style
11148    )]
11149    const _: () = {
11150        use alloy::sol_types as alloy_sol_types;
11151        {
11152            #[doc(hidden)]
11153            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
11154            #[doc(hidden)]
11155            type UnderlyingRustTuple<'a> = (
11156                alloy::sol_types::private::primitives::aliases::U256,
11157            );
11158            #[cfg(test)]
11159            #[allow(dead_code, unreachable_patterns)]
11160            fn _type_assertion(
11161                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11162            ) {
11163                match _t {
11164                    alloy_sol_types::private::AssertTypeEq::<
11165                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11166                    >(_) => {}
11167                }
11168            }
11169            #[automatically_derived]
11170            #[doc(hidden)]
11171            impl ::core::convert::From<stateHistoryCommitmentsCall>
11172            for UnderlyingRustTuple<'_> {
11173                fn from(value: stateHistoryCommitmentsCall) -> Self {
11174                    (value._0,)
11175                }
11176            }
11177            #[automatically_derived]
11178            #[doc(hidden)]
11179            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11180            for stateHistoryCommitmentsCall {
11181                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11182                    Self { _0: tuple.0 }
11183                }
11184            }
11185        }
11186        {
11187            #[doc(hidden)]
11188            type UnderlyingSolTuple<'a> = (
11189                alloy::sol_types::sol_data::Uint<64>,
11190                alloy::sol_types::sol_data::Uint<64>,
11191                alloy::sol_types::sol_data::Uint<64>,
11192                BN254::ScalarField,
11193            );
11194            #[doc(hidden)]
11195            type UnderlyingRustTuple<'a> = (
11196                u64,
11197                u64,
11198                u64,
11199                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
11200            );
11201            #[cfg(test)]
11202            #[allow(dead_code, unreachable_patterns)]
11203            fn _type_assertion(
11204                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11205            ) {
11206                match _t {
11207                    alloy_sol_types::private::AssertTypeEq::<
11208                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11209                    >(_) => {}
11210                }
11211            }
11212            #[automatically_derived]
11213            #[doc(hidden)]
11214            impl ::core::convert::From<stateHistoryCommitmentsReturn>
11215            for UnderlyingRustTuple<'_> {
11216                fn from(value: stateHistoryCommitmentsReturn) -> Self {
11217                    (
11218                        value.l1BlockHeight,
11219                        value.l1BlockTimestamp,
11220                        value.hotShotBlockHeight,
11221                        value.hotShotBlockCommRoot,
11222                    )
11223                }
11224            }
11225            #[automatically_derived]
11226            #[doc(hidden)]
11227            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11228            for stateHistoryCommitmentsReturn {
11229                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11230                    Self {
11231                        l1BlockHeight: tuple.0,
11232                        l1BlockTimestamp: tuple.1,
11233                        hotShotBlockHeight: tuple.2,
11234                        hotShotBlockCommRoot: tuple.3,
11235                    }
11236                }
11237            }
11238        }
11239        #[automatically_derived]
11240        impl alloy_sol_types::SolCall for stateHistoryCommitmentsCall {
11241            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
11242            type Token<'a> = <Self::Parameters<
11243                'a,
11244            > as alloy_sol_types::SolType>::Token<'a>;
11245            type Return = stateHistoryCommitmentsReturn;
11246            type ReturnTuple<'a> = (
11247                alloy::sol_types::sol_data::Uint<64>,
11248                alloy::sol_types::sol_data::Uint<64>,
11249                alloy::sol_types::sol_data::Uint<64>,
11250                BN254::ScalarField,
11251            );
11252            type ReturnToken<'a> = <Self::ReturnTuple<
11253                'a,
11254            > as alloy_sol_types::SolType>::Token<'a>;
11255            const SIGNATURE: &'static str = "stateHistoryCommitments(uint256)";
11256            const SELECTOR: [u8; 4] = [2u8, 181u8, 146u8, 243u8];
11257            #[inline]
11258            fn new<'a>(
11259                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11260            ) -> Self {
11261                tuple.into()
11262            }
11263            #[inline]
11264            fn tokenize(&self) -> Self::Token<'_> {
11265                (
11266                    <alloy::sol_types::sol_data::Uint<
11267                        256,
11268                    > as alloy_sol_types::SolType>::tokenize(&self._0),
11269                )
11270            }
11271            #[inline]
11272            fn abi_decode_returns(
11273                data: &[u8],
11274                validate: bool,
11275            ) -> alloy_sol_types::Result<Self::Return> {
11276                <Self::ReturnTuple<
11277                    '_,
11278                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
11279                    .map(Into::into)
11280            }
11281        }
11282    };
11283    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11284    /**Function with signature `stateHistoryFirstIndex()` and selector `0x2f79889d`.
11285```solidity
11286function stateHistoryFirstIndex() external view returns (uint64);
11287```*/
11288    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11289    #[derive(Clone)]
11290    pub struct stateHistoryFirstIndexCall {}
11291    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11292    ///Container type for the return parameters of the [`stateHistoryFirstIndex()`](stateHistoryFirstIndexCall) function.
11293    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11294    #[derive(Clone)]
11295    pub struct stateHistoryFirstIndexReturn {
11296        #[allow(missing_docs)]
11297        pub _0: u64,
11298    }
11299    #[allow(
11300        non_camel_case_types,
11301        non_snake_case,
11302        clippy::pub_underscore_fields,
11303        clippy::style
11304    )]
11305    const _: () = {
11306        use alloy::sol_types as alloy_sol_types;
11307        {
11308            #[doc(hidden)]
11309            type UnderlyingSolTuple<'a> = ();
11310            #[doc(hidden)]
11311            type UnderlyingRustTuple<'a> = ();
11312            #[cfg(test)]
11313            #[allow(dead_code, unreachable_patterns)]
11314            fn _type_assertion(
11315                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11316            ) {
11317                match _t {
11318                    alloy_sol_types::private::AssertTypeEq::<
11319                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11320                    >(_) => {}
11321                }
11322            }
11323            #[automatically_derived]
11324            #[doc(hidden)]
11325            impl ::core::convert::From<stateHistoryFirstIndexCall>
11326            for UnderlyingRustTuple<'_> {
11327                fn from(value: stateHistoryFirstIndexCall) -> Self {
11328                    ()
11329                }
11330            }
11331            #[automatically_derived]
11332            #[doc(hidden)]
11333            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11334            for stateHistoryFirstIndexCall {
11335                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11336                    Self {}
11337                }
11338            }
11339        }
11340        {
11341            #[doc(hidden)]
11342            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11343            #[doc(hidden)]
11344            type UnderlyingRustTuple<'a> = (u64,);
11345            #[cfg(test)]
11346            #[allow(dead_code, unreachable_patterns)]
11347            fn _type_assertion(
11348                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11349            ) {
11350                match _t {
11351                    alloy_sol_types::private::AssertTypeEq::<
11352                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11353                    >(_) => {}
11354                }
11355            }
11356            #[automatically_derived]
11357            #[doc(hidden)]
11358            impl ::core::convert::From<stateHistoryFirstIndexReturn>
11359            for UnderlyingRustTuple<'_> {
11360                fn from(value: stateHistoryFirstIndexReturn) -> Self {
11361                    (value._0,)
11362                }
11363            }
11364            #[automatically_derived]
11365            #[doc(hidden)]
11366            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11367            for stateHistoryFirstIndexReturn {
11368                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11369                    Self { _0: tuple.0 }
11370                }
11371            }
11372        }
11373        #[automatically_derived]
11374        impl alloy_sol_types::SolCall for stateHistoryFirstIndexCall {
11375            type Parameters<'a> = ();
11376            type Token<'a> = <Self::Parameters<
11377                'a,
11378            > as alloy_sol_types::SolType>::Token<'a>;
11379            type Return = stateHistoryFirstIndexReturn;
11380            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11381            type ReturnToken<'a> = <Self::ReturnTuple<
11382                'a,
11383            > as alloy_sol_types::SolType>::Token<'a>;
11384            const SIGNATURE: &'static str = "stateHistoryFirstIndex()";
11385            const SELECTOR: [u8; 4] = [47u8, 121u8, 136u8, 157u8];
11386            #[inline]
11387            fn new<'a>(
11388                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11389            ) -> Self {
11390                tuple.into()
11391            }
11392            #[inline]
11393            fn tokenize(&self) -> Self::Token<'_> {
11394                ()
11395            }
11396            #[inline]
11397            fn abi_decode_returns(
11398                data: &[u8],
11399                validate: bool,
11400            ) -> alloy_sol_types::Result<Self::Return> {
11401                <Self::ReturnTuple<
11402                    '_,
11403                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
11404                    .map(Into::into)
11405            }
11406        }
11407    };
11408    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11409    /**Function with signature `stateHistoryRetentionPeriod()` and selector `0xc23b9e9e`.
11410```solidity
11411function stateHistoryRetentionPeriod() external view returns (uint32);
11412```*/
11413    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11414    #[derive(Clone)]
11415    pub struct stateHistoryRetentionPeriodCall {}
11416    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11417    ///Container type for the return parameters of the [`stateHistoryRetentionPeriod()`](stateHistoryRetentionPeriodCall) function.
11418    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11419    #[derive(Clone)]
11420    pub struct stateHistoryRetentionPeriodReturn {
11421        #[allow(missing_docs)]
11422        pub _0: u32,
11423    }
11424    #[allow(
11425        non_camel_case_types,
11426        non_snake_case,
11427        clippy::pub_underscore_fields,
11428        clippy::style
11429    )]
11430    const _: () = {
11431        use alloy::sol_types as alloy_sol_types;
11432        {
11433            #[doc(hidden)]
11434            type UnderlyingSolTuple<'a> = ();
11435            #[doc(hidden)]
11436            type UnderlyingRustTuple<'a> = ();
11437            #[cfg(test)]
11438            #[allow(dead_code, unreachable_patterns)]
11439            fn _type_assertion(
11440                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11441            ) {
11442                match _t {
11443                    alloy_sol_types::private::AssertTypeEq::<
11444                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11445                    >(_) => {}
11446                }
11447            }
11448            #[automatically_derived]
11449            #[doc(hidden)]
11450            impl ::core::convert::From<stateHistoryRetentionPeriodCall>
11451            for UnderlyingRustTuple<'_> {
11452                fn from(value: stateHistoryRetentionPeriodCall) -> Self {
11453                    ()
11454                }
11455            }
11456            #[automatically_derived]
11457            #[doc(hidden)]
11458            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11459            for stateHistoryRetentionPeriodCall {
11460                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11461                    Self {}
11462                }
11463            }
11464        }
11465        {
11466            #[doc(hidden)]
11467            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
11468            #[doc(hidden)]
11469            type UnderlyingRustTuple<'a> = (u32,);
11470            #[cfg(test)]
11471            #[allow(dead_code, unreachable_patterns)]
11472            fn _type_assertion(
11473                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11474            ) {
11475                match _t {
11476                    alloy_sol_types::private::AssertTypeEq::<
11477                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11478                    >(_) => {}
11479                }
11480            }
11481            #[automatically_derived]
11482            #[doc(hidden)]
11483            impl ::core::convert::From<stateHistoryRetentionPeriodReturn>
11484            for UnderlyingRustTuple<'_> {
11485                fn from(value: stateHistoryRetentionPeriodReturn) -> Self {
11486                    (value._0,)
11487                }
11488            }
11489            #[automatically_derived]
11490            #[doc(hidden)]
11491            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11492            for stateHistoryRetentionPeriodReturn {
11493                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11494                    Self { _0: tuple.0 }
11495                }
11496            }
11497        }
11498        #[automatically_derived]
11499        impl alloy_sol_types::SolCall for stateHistoryRetentionPeriodCall {
11500            type Parameters<'a> = ();
11501            type Token<'a> = <Self::Parameters<
11502                'a,
11503            > as alloy_sol_types::SolType>::Token<'a>;
11504            type Return = stateHistoryRetentionPeriodReturn;
11505            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
11506            type ReturnToken<'a> = <Self::ReturnTuple<
11507                'a,
11508            > as alloy_sol_types::SolType>::Token<'a>;
11509            const SIGNATURE: &'static str = "stateHistoryRetentionPeriod()";
11510            const SELECTOR: [u8; 4] = [194u8, 59u8, 158u8, 158u8];
11511            #[inline]
11512            fn new<'a>(
11513                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11514            ) -> Self {
11515                tuple.into()
11516            }
11517            #[inline]
11518            fn tokenize(&self) -> Self::Token<'_> {
11519                ()
11520            }
11521            #[inline]
11522            fn abi_decode_returns(
11523                data: &[u8],
11524                validate: bool,
11525            ) -> alloy_sol_types::Result<Self::Return> {
11526                <Self::ReturnTuple<
11527                    '_,
11528                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
11529                    .map(Into::into)
11530            }
11531        }
11532    };
11533    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11534    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
11535```solidity
11536function transferOwnership(address newOwner) external;
11537```*/
11538    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11539    #[derive(Clone)]
11540    pub struct transferOwnershipCall {
11541        #[allow(missing_docs)]
11542        pub newOwner: alloy::sol_types::private::Address,
11543    }
11544    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
11545    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11546    #[derive(Clone)]
11547    pub struct transferOwnershipReturn {}
11548    #[allow(
11549        non_camel_case_types,
11550        non_snake_case,
11551        clippy::pub_underscore_fields,
11552        clippy::style
11553    )]
11554    const _: () = {
11555        use alloy::sol_types as alloy_sol_types;
11556        {
11557            #[doc(hidden)]
11558            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
11559            #[doc(hidden)]
11560            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
11561            #[cfg(test)]
11562            #[allow(dead_code, unreachable_patterns)]
11563            fn _type_assertion(
11564                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11565            ) {
11566                match _t {
11567                    alloy_sol_types::private::AssertTypeEq::<
11568                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11569                    >(_) => {}
11570                }
11571            }
11572            #[automatically_derived]
11573            #[doc(hidden)]
11574            impl ::core::convert::From<transferOwnershipCall>
11575            for UnderlyingRustTuple<'_> {
11576                fn from(value: transferOwnershipCall) -> Self {
11577                    (value.newOwner,)
11578                }
11579            }
11580            #[automatically_derived]
11581            #[doc(hidden)]
11582            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11583            for transferOwnershipCall {
11584                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11585                    Self { newOwner: tuple.0 }
11586                }
11587            }
11588        }
11589        {
11590            #[doc(hidden)]
11591            type UnderlyingSolTuple<'a> = ();
11592            #[doc(hidden)]
11593            type UnderlyingRustTuple<'a> = ();
11594            #[cfg(test)]
11595            #[allow(dead_code, unreachable_patterns)]
11596            fn _type_assertion(
11597                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11598            ) {
11599                match _t {
11600                    alloy_sol_types::private::AssertTypeEq::<
11601                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11602                    >(_) => {}
11603                }
11604            }
11605            #[automatically_derived]
11606            #[doc(hidden)]
11607            impl ::core::convert::From<transferOwnershipReturn>
11608            for UnderlyingRustTuple<'_> {
11609                fn from(value: transferOwnershipReturn) -> Self {
11610                    ()
11611                }
11612            }
11613            #[automatically_derived]
11614            #[doc(hidden)]
11615            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11616            for transferOwnershipReturn {
11617                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11618                    Self {}
11619                }
11620            }
11621        }
11622        #[automatically_derived]
11623        impl alloy_sol_types::SolCall for transferOwnershipCall {
11624            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
11625            type Token<'a> = <Self::Parameters<
11626                'a,
11627            > as alloy_sol_types::SolType>::Token<'a>;
11628            type Return = transferOwnershipReturn;
11629            type ReturnTuple<'a> = ();
11630            type ReturnToken<'a> = <Self::ReturnTuple<
11631                'a,
11632            > as alloy_sol_types::SolType>::Token<'a>;
11633            const SIGNATURE: &'static str = "transferOwnership(address)";
11634            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
11635            #[inline]
11636            fn new<'a>(
11637                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11638            ) -> Self {
11639                tuple.into()
11640            }
11641            #[inline]
11642            fn tokenize(&self) -> Self::Token<'_> {
11643                (
11644                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11645                        &self.newOwner,
11646                    ),
11647                )
11648            }
11649            #[inline]
11650            fn abi_decode_returns(
11651                data: &[u8],
11652                validate: bool,
11653            ) -> alloy_sol_types::Result<Self::Return> {
11654                <Self::ReturnTuple<
11655                    '_,
11656                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
11657                    .map(Into::into)
11658            }
11659        }
11660    };
11661    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11662    /**Function with signature `updateEpochStartBlock(uint64)` and selector `0x167ac618`.
11663```solidity
11664function updateEpochStartBlock(uint64 newEpochStartBlock) external;
11665```*/
11666    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11667    #[derive(Clone)]
11668    pub struct updateEpochStartBlockCall {
11669        #[allow(missing_docs)]
11670        pub newEpochStartBlock: u64,
11671    }
11672    ///Container type for the return parameters of the [`updateEpochStartBlock(uint64)`](updateEpochStartBlockCall) function.
11673    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11674    #[derive(Clone)]
11675    pub struct updateEpochStartBlockReturn {}
11676    #[allow(
11677        non_camel_case_types,
11678        non_snake_case,
11679        clippy::pub_underscore_fields,
11680        clippy::style
11681    )]
11682    const _: () = {
11683        use alloy::sol_types as alloy_sol_types;
11684        {
11685            #[doc(hidden)]
11686            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11687            #[doc(hidden)]
11688            type UnderlyingRustTuple<'a> = (u64,);
11689            #[cfg(test)]
11690            #[allow(dead_code, unreachable_patterns)]
11691            fn _type_assertion(
11692                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11693            ) {
11694                match _t {
11695                    alloy_sol_types::private::AssertTypeEq::<
11696                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11697                    >(_) => {}
11698                }
11699            }
11700            #[automatically_derived]
11701            #[doc(hidden)]
11702            impl ::core::convert::From<updateEpochStartBlockCall>
11703            for UnderlyingRustTuple<'_> {
11704                fn from(value: updateEpochStartBlockCall) -> Self {
11705                    (value.newEpochStartBlock,)
11706                }
11707            }
11708            #[automatically_derived]
11709            #[doc(hidden)]
11710            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11711            for updateEpochStartBlockCall {
11712                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11713                    Self {
11714                        newEpochStartBlock: tuple.0,
11715                    }
11716                }
11717            }
11718        }
11719        {
11720            #[doc(hidden)]
11721            type UnderlyingSolTuple<'a> = ();
11722            #[doc(hidden)]
11723            type UnderlyingRustTuple<'a> = ();
11724            #[cfg(test)]
11725            #[allow(dead_code, unreachable_patterns)]
11726            fn _type_assertion(
11727                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11728            ) {
11729                match _t {
11730                    alloy_sol_types::private::AssertTypeEq::<
11731                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11732                    >(_) => {}
11733                }
11734            }
11735            #[automatically_derived]
11736            #[doc(hidden)]
11737            impl ::core::convert::From<updateEpochStartBlockReturn>
11738            for UnderlyingRustTuple<'_> {
11739                fn from(value: updateEpochStartBlockReturn) -> Self {
11740                    ()
11741                }
11742            }
11743            #[automatically_derived]
11744            #[doc(hidden)]
11745            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11746            for updateEpochStartBlockReturn {
11747                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11748                    Self {}
11749                }
11750            }
11751        }
11752        #[automatically_derived]
11753        impl alloy_sol_types::SolCall for updateEpochStartBlockCall {
11754            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11755            type Token<'a> = <Self::Parameters<
11756                'a,
11757            > as alloy_sol_types::SolType>::Token<'a>;
11758            type Return = updateEpochStartBlockReturn;
11759            type ReturnTuple<'a> = ();
11760            type ReturnToken<'a> = <Self::ReturnTuple<
11761                'a,
11762            > as alloy_sol_types::SolType>::Token<'a>;
11763            const SIGNATURE: &'static str = "updateEpochStartBlock(uint64)";
11764            const SELECTOR: [u8; 4] = [22u8, 122u8, 198u8, 24u8];
11765            #[inline]
11766            fn new<'a>(
11767                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11768            ) -> Self {
11769                tuple.into()
11770            }
11771            #[inline]
11772            fn tokenize(&self) -> Self::Token<'_> {
11773                (
11774                    <alloy::sol_types::sol_data::Uint<
11775                        64,
11776                    > as alloy_sol_types::SolType>::tokenize(&self.newEpochStartBlock),
11777                )
11778            }
11779            #[inline]
11780            fn abi_decode_returns(
11781                data: &[u8],
11782                validate: bool,
11783            ) -> alloy_sol_types::Result<Self::Return> {
11784                <Self::ReturnTuple<
11785                    '_,
11786                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
11787                    .map(Into::into)
11788            }
11789        }
11790    };
11791    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11792    /**Function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`.
11793```solidity
11794function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
11795```*/
11796    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11797    #[derive(Clone)]
11798    pub struct upgradeToAndCallCall {
11799        #[allow(missing_docs)]
11800        pub newImplementation: alloy::sol_types::private::Address,
11801        #[allow(missing_docs)]
11802        pub data: alloy::sol_types::private::Bytes,
11803    }
11804    ///Container type for the return parameters of the [`upgradeToAndCall(address,bytes)`](upgradeToAndCallCall) function.
11805    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11806    #[derive(Clone)]
11807    pub struct upgradeToAndCallReturn {}
11808    #[allow(
11809        non_camel_case_types,
11810        non_snake_case,
11811        clippy::pub_underscore_fields,
11812        clippy::style
11813    )]
11814    const _: () = {
11815        use alloy::sol_types as alloy_sol_types;
11816        {
11817            #[doc(hidden)]
11818            type UnderlyingSolTuple<'a> = (
11819                alloy::sol_types::sol_data::Address,
11820                alloy::sol_types::sol_data::Bytes,
11821            );
11822            #[doc(hidden)]
11823            type UnderlyingRustTuple<'a> = (
11824                alloy::sol_types::private::Address,
11825                alloy::sol_types::private::Bytes,
11826            );
11827            #[cfg(test)]
11828            #[allow(dead_code, unreachable_patterns)]
11829            fn _type_assertion(
11830                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11831            ) {
11832                match _t {
11833                    alloy_sol_types::private::AssertTypeEq::<
11834                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11835                    >(_) => {}
11836                }
11837            }
11838            #[automatically_derived]
11839            #[doc(hidden)]
11840            impl ::core::convert::From<upgradeToAndCallCall>
11841            for UnderlyingRustTuple<'_> {
11842                fn from(value: upgradeToAndCallCall) -> Self {
11843                    (value.newImplementation, value.data)
11844                }
11845            }
11846            #[automatically_derived]
11847            #[doc(hidden)]
11848            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11849            for upgradeToAndCallCall {
11850                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11851                    Self {
11852                        newImplementation: tuple.0,
11853                        data: tuple.1,
11854                    }
11855                }
11856            }
11857        }
11858        {
11859            #[doc(hidden)]
11860            type UnderlyingSolTuple<'a> = ();
11861            #[doc(hidden)]
11862            type UnderlyingRustTuple<'a> = ();
11863            #[cfg(test)]
11864            #[allow(dead_code, unreachable_patterns)]
11865            fn _type_assertion(
11866                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11867            ) {
11868                match _t {
11869                    alloy_sol_types::private::AssertTypeEq::<
11870                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11871                    >(_) => {}
11872                }
11873            }
11874            #[automatically_derived]
11875            #[doc(hidden)]
11876            impl ::core::convert::From<upgradeToAndCallReturn>
11877            for UnderlyingRustTuple<'_> {
11878                fn from(value: upgradeToAndCallReturn) -> Self {
11879                    ()
11880                }
11881            }
11882            #[automatically_derived]
11883            #[doc(hidden)]
11884            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11885            for upgradeToAndCallReturn {
11886                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11887                    Self {}
11888                }
11889            }
11890        }
11891        #[automatically_derived]
11892        impl alloy_sol_types::SolCall for upgradeToAndCallCall {
11893            type Parameters<'a> = (
11894                alloy::sol_types::sol_data::Address,
11895                alloy::sol_types::sol_data::Bytes,
11896            );
11897            type Token<'a> = <Self::Parameters<
11898                'a,
11899            > as alloy_sol_types::SolType>::Token<'a>;
11900            type Return = upgradeToAndCallReturn;
11901            type ReturnTuple<'a> = ();
11902            type ReturnToken<'a> = <Self::ReturnTuple<
11903                'a,
11904            > as alloy_sol_types::SolType>::Token<'a>;
11905            const SIGNATURE: &'static str = "upgradeToAndCall(address,bytes)";
11906            const SELECTOR: [u8; 4] = [79u8, 30u8, 242u8, 134u8];
11907            #[inline]
11908            fn new<'a>(
11909                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11910            ) -> Self {
11911                tuple.into()
11912            }
11913            #[inline]
11914            fn tokenize(&self) -> Self::Token<'_> {
11915                (
11916                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11917                        &self.newImplementation,
11918                    ),
11919                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
11920                        &self.data,
11921                    ),
11922                )
11923            }
11924            #[inline]
11925            fn abi_decode_returns(
11926                data: &[u8],
11927                validate: bool,
11928            ) -> alloy_sol_types::Result<Self::Return> {
11929                <Self::ReturnTuple<
11930                    '_,
11931                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
11932                    .map(Into::into)
11933            }
11934        }
11935    };
11936    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11937    /**Function with signature `votingStakeTableState()` and selector `0x0625e19b`.
11938```solidity
11939function votingStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
11940```*/
11941    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11942    #[derive(Clone)]
11943    pub struct votingStakeTableStateCall {}
11944    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11945    ///Container type for the return parameters of the [`votingStakeTableState()`](votingStakeTableStateCall) function.
11946    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11947    #[derive(Clone)]
11948    pub struct votingStakeTableStateReturn {
11949        #[allow(missing_docs)]
11950        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
11951        #[allow(missing_docs)]
11952        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
11953        #[allow(missing_docs)]
11954        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
11955        #[allow(missing_docs)]
11956        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
11957    }
11958    #[allow(
11959        non_camel_case_types,
11960        non_snake_case,
11961        clippy::pub_underscore_fields,
11962        clippy::style
11963    )]
11964    const _: () = {
11965        use alloy::sol_types as alloy_sol_types;
11966        {
11967            #[doc(hidden)]
11968            type UnderlyingSolTuple<'a> = ();
11969            #[doc(hidden)]
11970            type UnderlyingRustTuple<'a> = ();
11971            #[cfg(test)]
11972            #[allow(dead_code, unreachable_patterns)]
11973            fn _type_assertion(
11974                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11975            ) {
11976                match _t {
11977                    alloy_sol_types::private::AssertTypeEq::<
11978                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11979                    >(_) => {}
11980                }
11981            }
11982            #[automatically_derived]
11983            #[doc(hidden)]
11984            impl ::core::convert::From<votingStakeTableStateCall>
11985            for UnderlyingRustTuple<'_> {
11986                fn from(value: votingStakeTableStateCall) -> Self {
11987                    ()
11988                }
11989            }
11990            #[automatically_derived]
11991            #[doc(hidden)]
11992            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11993            for votingStakeTableStateCall {
11994                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11995                    Self {}
11996                }
11997            }
11998        }
11999        {
12000            #[doc(hidden)]
12001            type UnderlyingSolTuple<'a> = (
12002                alloy::sol_types::sol_data::Uint<256>,
12003                BN254::ScalarField,
12004                BN254::ScalarField,
12005                BN254::ScalarField,
12006            );
12007            #[doc(hidden)]
12008            type UnderlyingRustTuple<'a> = (
12009                alloy::sol_types::private::primitives::aliases::U256,
12010                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
12011                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
12012                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
12013            );
12014            #[cfg(test)]
12015            #[allow(dead_code, unreachable_patterns)]
12016            fn _type_assertion(
12017                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12018            ) {
12019                match _t {
12020                    alloy_sol_types::private::AssertTypeEq::<
12021                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12022                    >(_) => {}
12023                }
12024            }
12025            #[automatically_derived]
12026            #[doc(hidden)]
12027            impl ::core::convert::From<votingStakeTableStateReturn>
12028            for UnderlyingRustTuple<'_> {
12029                fn from(value: votingStakeTableStateReturn) -> Self {
12030                    (
12031                        value.threshold,
12032                        value.blsKeyComm,
12033                        value.schnorrKeyComm,
12034                        value.amountComm,
12035                    )
12036                }
12037            }
12038            #[automatically_derived]
12039            #[doc(hidden)]
12040            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12041            for votingStakeTableStateReturn {
12042                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12043                    Self {
12044                        threshold: tuple.0,
12045                        blsKeyComm: tuple.1,
12046                        schnorrKeyComm: tuple.2,
12047                        amountComm: tuple.3,
12048                    }
12049                }
12050            }
12051        }
12052        #[automatically_derived]
12053        impl alloy_sol_types::SolCall for votingStakeTableStateCall {
12054            type Parameters<'a> = ();
12055            type Token<'a> = <Self::Parameters<
12056                'a,
12057            > as alloy_sol_types::SolType>::Token<'a>;
12058            type Return = votingStakeTableStateReturn;
12059            type ReturnTuple<'a> = (
12060                alloy::sol_types::sol_data::Uint<256>,
12061                BN254::ScalarField,
12062                BN254::ScalarField,
12063                BN254::ScalarField,
12064            );
12065            type ReturnToken<'a> = <Self::ReturnTuple<
12066                'a,
12067            > as alloy_sol_types::SolType>::Token<'a>;
12068            const SIGNATURE: &'static str = "votingStakeTableState()";
12069            const SELECTOR: [u8; 4] = [6u8, 37u8, 225u8, 155u8];
12070            #[inline]
12071            fn new<'a>(
12072                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12073            ) -> Self {
12074                tuple.into()
12075            }
12076            #[inline]
12077            fn tokenize(&self) -> Self::Token<'_> {
12078                ()
12079            }
12080            #[inline]
12081            fn abi_decode_returns(
12082                data: &[u8],
12083                validate: bool,
12084            ) -> alloy_sol_types::Result<Self::Return> {
12085                <Self::ReturnTuple<
12086                    '_,
12087                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
12088                    .map(Into::into)
12089            }
12090        }
12091    };
12092    ///Container for all the [`LightClientArbitrumV2`](self) function calls.
12093    #[derive()]
12094    pub enum LightClientArbitrumV2Calls {
12095        #[allow(missing_docs)]
12096        UPGRADE_INTERFACE_VERSION(UPGRADE_INTERFACE_VERSIONCall),
12097        #[allow(missing_docs)]
12098        _getVk(_getVkCall),
12099        #[allow(missing_docs)]
12100        blocksPerEpoch(blocksPerEpochCall),
12101        #[allow(missing_docs)]
12102        currentBlockNumber(currentBlockNumberCall),
12103        #[allow(missing_docs)]
12104        currentEpoch(currentEpochCall),
12105        #[allow(missing_docs)]
12106        disablePermissionedProverMode(disablePermissionedProverModeCall),
12107        #[allow(missing_docs)]
12108        epochFromBlockNumber(epochFromBlockNumberCall),
12109        #[allow(missing_docs)]
12110        epochStartBlock(epochStartBlockCall),
12111        #[allow(missing_docs)]
12112        finalizedState(finalizedStateCall),
12113        #[allow(missing_docs)]
12114        genesisStakeTableState(genesisStakeTableStateCall),
12115        #[allow(missing_docs)]
12116        genesisState(genesisStateCall),
12117        #[allow(missing_docs)]
12118        getHotShotCommitment(getHotShotCommitmentCall),
12119        #[allow(missing_docs)]
12120        getStateHistoryCount(getStateHistoryCountCall),
12121        #[allow(missing_docs)]
12122        getVersion(getVersionCall),
12123        #[allow(missing_docs)]
12124        initialize(initializeCall),
12125        #[allow(missing_docs)]
12126        initializeV2(initializeV2Call),
12127        #[allow(missing_docs)]
12128        isEpochRoot(isEpochRootCall),
12129        #[allow(missing_docs)]
12130        isGtEpochRoot(isGtEpochRootCall),
12131        #[allow(missing_docs)]
12132        isPermissionedProverEnabled(isPermissionedProverEnabledCall),
12133        #[allow(missing_docs)]
12134        lagOverEscapeHatchThreshold(lagOverEscapeHatchThresholdCall),
12135        #[allow(missing_docs)]
12136        newFinalizedState_0(newFinalizedState_0Call),
12137        #[allow(missing_docs)]
12138        newFinalizedState_1(newFinalizedState_1Call),
12139        #[allow(missing_docs)]
12140        owner(ownerCall),
12141        #[allow(missing_docs)]
12142        permissionedProver(permissionedProverCall),
12143        #[allow(missing_docs)]
12144        proxiableUUID(proxiableUUIDCall),
12145        #[allow(missing_docs)]
12146        renounceOwnership(renounceOwnershipCall),
12147        #[allow(missing_docs)]
12148        setPermissionedProver(setPermissionedProverCall),
12149        #[allow(missing_docs)]
12150        setStateHistoryRetentionPeriod(setStateHistoryRetentionPeriodCall),
12151        #[allow(missing_docs)]
12152        setstateHistoryRetentionPeriod(setstateHistoryRetentionPeriodCall),
12153        #[allow(missing_docs)]
12154        stateHistoryCommitments(stateHistoryCommitmentsCall),
12155        #[allow(missing_docs)]
12156        stateHistoryFirstIndex(stateHistoryFirstIndexCall),
12157        #[allow(missing_docs)]
12158        stateHistoryRetentionPeriod(stateHistoryRetentionPeriodCall),
12159        #[allow(missing_docs)]
12160        transferOwnership(transferOwnershipCall),
12161        #[allow(missing_docs)]
12162        updateEpochStartBlock(updateEpochStartBlockCall),
12163        #[allow(missing_docs)]
12164        upgradeToAndCall(upgradeToAndCallCall),
12165        #[allow(missing_docs)]
12166        votingStakeTableState(votingStakeTableStateCall),
12167    }
12168    #[automatically_derived]
12169    impl LightClientArbitrumV2Calls {
12170        /// All the selectors of this enum.
12171        ///
12172        /// Note that the selectors might not be in the same order as the variants.
12173        /// No guarantees are made about the order of the selectors.
12174        ///
12175        /// Prefer using `SolInterface` methods instead.
12176        pub const SELECTORS: &'static [[u8; 4usize]] = &[
12177            [1u8, 63u8, 165u8, 252u8],
12178            [2u8, 181u8, 146u8, 243u8],
12179            [6u8, 37u8, 225u8, 155u8],
12180            [13u8, 142u8, 110u8, 44u8],
12181            [18u8, 23u8, 60u8, 44u8],
12182            [22u8, 122u8, 198u8, 24u8],
12183            [32u8, 99u8, 212u8, 247u8],
12184            [37u8, 41u8, 116u8, 39u8],
12185            [47u8, 121u8, 136u8, 157u8],
12186            [48u8, 12u8, 137u8, 221u8],
12187            [49u8, 61u8, 247u8, 177u8],
12188            [55u8, 142u8, 194u8, 59u8],
12189            [62u8, 213u8, 91u8, 123u8],
12190            [66u8, 109u8, 49u8, 148u8],
12191            [67u8, 61u8, 186u8, 159u8],
12192            [79u8, 30u8, 242u8, 134u8],
12193            [82u8, 209u8, 144u8, 45u8],
12194            [105u8, 204u8, 106u8, 4u8],
12195            [113u8, 80u8, 24u8, 166u8],
12196            [117u8, 124u8, 55u8, 173u8],
12197            [118u8, 103u8, 24u8, 8u8],
12198            [130u8, 110u8, 65u8, 252u8],
12199            [133u8, 132u8, 210u8, 63u8],
12200            [141u8, 165u8, 203u8, 91u8],
12201            [144u8, 193u8, 67u8, 144u8],
12202            [150u8, 193u8, 202u8, 97u8],
12203            [155u8, 170u8, 60u8, 201u8],
12204            [159u8, 219u8, 84u8, 167u8],
12205            [173u8, 60u8, 177u8, 204u8],
12206            [179u8, 59u8, 196u8, 145u8],
12207            [194u8, 59u8, 158u8, 158u8],
12208            [210u8, 77u8, 147u8, 61u8],
12209            [224u8, 48u8, 51u8, 1u8],
12210            [240u8, 104u8, 32u8, 84u8],
12211            [242u8, 253u8, 227u8, 139u8],
12212            [249u8, 229u8, 13u8, 25u8],
12213        ];
12214    }
12215    #[automatically_derived]
12216    impl alloy_sol_types::SolInterface for LightClientArbitrumV2Calls {
12217        const NAME: &'static str = "LightClientArbitrumV2Calls";
12218        const MIN_DATA_LENGTH: usize = 0usize;
12219        const COUNT: usize = 36usize;
12220        #[inline]
12221        fn selector(&self) -> [u8; 4] {
12222            match self {
12223                Self::UPGRADE_INTERFACE_VERSION(_) => {
12224                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SELECTOR
12225                }
12226                Self::_getVk(_) => <_getVkCall as alloy_sol_types::SolCall>::SELECTOR,
12227                Self::blocksPerEpoch(_) => {
12228                    <blocksPerEpochCall as alloy_sol_types::SolCall>::SELECTOR
12229                }
12230                Self::currentBlockNumber(_) => {
12231                    <currentBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
12232                }
12233                Self::currentEpoch(_) => {
12234                    <currentEpochCall as alloy_sol_types::SolCall>::SELECTOR
12235                }
12236                Self::disablePermissionedProverMode(_) => {
12237                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::SELECTOR
12238                }
12239                Self::epochFromBlockNumber(_) => {
12240                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
12241                }
12242                Self::epochStartBlock(_) => {
12243                    <epochStartBlockCall as alloy_sol_types::SolCall>::SELECTOR
12244                }
12245                Self::finalizedState(_) => {
12246                    <finalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
12247                }
12248                Self::genesisStakeTableState(_) => {
12249                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
12250                }
12251                Self::genesisState(_) => {
12252                    <genesisStateCall as alloy_sol_types::SolCall>::SELECTOR
12253                }
12254                Self::getHotShotCommitment(_) => {
12255                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::SELECTOR
12256                }
12257                Self::getStateHistoryCount(_) => {
12258                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::SELECTOR
12259                }
12260                Self::getVersion(_) => {
12261                    <getVersionCall as alloy_sol_types::SolCall>::SELECTOR
12262                }
12263                Self::initialize(_) => {
12264                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
12265                }
12266                Self::initializeV2(_) => {
12267                    <initializeV2Call as alloy_sol_types::SolCall>::SELECTOR
12268                }
12269                Self::isEpochRoot(_) => {
12270                    <isEpochRootCall as alloy_sol_types::SolCall>::SELECTOR
12271                }
12272                Self::isGtEpochRoot(_) => {
12273                    <isGtEpochRootCall as alloy_sol_types::SolCall>::SELECTOR
12274                }
12275                Self::isPermissionedProverEnabled(_) => {
12276                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::SELECTOR
12277                }
12278                Self::lagOverEscapeHatchThreshold(_) => {
12279                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::SELECTOR
12280                }
12281                Self::newFinalizedState_0(_) => {
12282                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::SELECTOR
12283                }
12284                Self::newFinalizedState_1(_) => {
12285                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::SELECTOR
12286                }
12287                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
12288                Self::permissionedProver(_) => {
12289                    <permissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
12290                }
12291                Self::proxiableUUID(_) => {
12292                    <proxiableUUIDCall as alloy_sol_types::SolCall>::SELECTOR
12293                }
12294                Self::renounceOwnership(_) => {
12295                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
12296                }
12297                Self::setPermissionedProver(_) => {
12298                    <setPermissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
12299                }
12300                Self::setStateHistoryRetentionPeriod(_) => {
12301                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
12302                }
12303                Self::setstateHistoryRetentionPeriod(_) => {
12304                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
12305                }
12306                Self::stateHistoryCommitments(_) => {
12307                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::SELECTOR
12308                }
12309                Self::stateHistoryFirstIndex(_) => {
12310                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::SELECTOR
12311                }
12312                Self::stateHistoryRetentionPeriod(_) => {
12313                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
12314                }
12315                Self::transferOwnership(_) => {
12316                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
12317                }
12318                Self::updateEpochStartBlock(_) => {
12319                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::SELECTOR
12320                }
12321                Self::upgradeToAndCall(_) => {
12322                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::SELECTOR
12323                }
12324                Self::votingStakeTableState(_) => {
12325                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
12326                }
12327            }
12328        }
12329        #[inline]
12330        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
12331            Self::SELECTORS.get(i).copied()
12332        }
12333        #[inline]
12334        fn valid_selector(selector: [u8; 4]) -> bool {
12335            Self::SELECTORS.binary_search(&selector).is_ok()
12336        }
12337        #[inline]
12338        #[allow(non_snake_case)]
12339        fn abi_decode_raw(
12340            selector: [u8; 4],
12341            data: &[u8],
12342            validate: bool,
12343        ) -> alloy_sol_types::Result<Self> {
12344            static DECODE_SHIMS: &[fn(
12345                &[u8],
12346                bool,
12347            ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls>] = &[
12348                {
12349                    fn setPermissionedProver(
12350                        data: &[u8],
12351                        validate: bool,
12352                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
12353                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
12354                                data,
12355                                validate,
12356                            )
12357                            .map(LightClientArbitrumV2Calls::setPermissionedProver)
12358                    }
12359                    setPermissionedProver
12360                },
12361                {
12362                    fn stateHistoryCommitments(
12363                        data: &[u8],
12364                        validate: bool,
12365                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
12366                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw(
12367                                data,
12368                                validate,
12369                            )
12370                            .map(LightClientArbitrumV2Calls::stateHistoryCommitments)
12371                    }
12372                    stateHistoryCommitments
12373                },
12374                {
12375                    fn votingStakeTableState(
12376                        data: &[u8],
12377                        validate: bool,
12378                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
12379                        <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
12380                                data,
12381                                validate,
12382                            )
12383                            .map(LightClientArbitrumV2Calls::votingStakeTableState)
12384                    }
12385                    votingStakeTableState
12386                },
12387                {
12388                    fn getVersion(
12389                        data: &[u8],
12390                        validate: bool,
12391                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
12392                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw(
12393                                data,
12394                                validate,
12395                            )
12396                            .map(LightClientArbitrumV2Calls::getVersion)
12397                    }
12398                    getVersion
12399                },
12400                {
12401                    fn _getVk(
12402                        data: &[u8],
12403                        validate: bool,
12404                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
12405                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw(
12406                                data,
12407                                validate,
12408                            )
12409                            .map(LightClientArbitrumV2Calls::_getVk)
12410                    }
12411                    _getVk
12412                },
12413                {
12414                    fn updateEpochStartBlock(
12415                        data: &[u8],
12416                        validate: bool,
12417                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
12418                        <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw(
12419                                data,
12420                                validate,
12421                            )
12422                            .map(LightClientArbitrumV2Calls::updateEpochStartBlock)
12423                    }
12424                    updateEpochStartBlock
12425                },
12426                {
12427                    fn newFinalizedState_0(
12428                        data: &[u8],
12429                        validate: bool,
12430                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
12431                        <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_decode_raw(
12432                                data,
12433                                validate,
12434                            )
12435                            .map(LightClientArbitrumV2Calls::newFinalizedState_0)
12436                    }
12437                    newFinalizedState_0
12438                },
12439                {
12440                    fn isEpochRoot(
12441                        data: &[u8],
12442                        validate: bool,
12443                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
12444                        <isEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw(
12445                                data,
12446                                validate,
12447                            )
12448                            .map(LightClientArbitrumV2Calls::isEpochRoot)
12449                    }
12450                    isEpochRoot
12451                },
12452                {
12453                    fn stateHistoryFirstIndex(
12454                        data: &[u8],
12455                        validate: bool,
12456                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
12457                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw(
12458                                data,
12459                                validate,
12460                            )
12461                            .map(LightClientArbitrumV2Calls::stateHistoryFirstIndex)
12462                    }
12463                    stateHistoryFirstIndex
12464                },
12465                {
12466                    fn isGtEpochRoot(
12467                        data: &[u8],
12468                        validate: bool,
12469                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
12470                        <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw(
12471                                data,
12472                                validate,
12473                            )
12474                            .map(LightClientArbitrumV2Calls::isGtEpochRoot)
12475                    }
12476                    isGtEpochRoot
12477                },
12478                {
12479                    fn permissionedProver(
12480                        data: &[u8],
12481                        validate: bool,
12482                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
12483                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
12484                                data,
12485                                validate,
12486                            )
12487                            .map(LightClientArbitrumV2Calls::permissionedProver)
12488                    }
12489                    permissionedProver
12490                },
12491                {
12492                    fn currentBlockNumber(
12493                        data: &[u8],
12494                        validate: bool,
12495                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
12496                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
12497                                data,
12498                                validate,
12499                            )
12500                            .map(LightClientArbitrumV2Calls::currentBlockNumber)
12501                    }
12502                    currentBlockNumber
12503                },
12504                {
12505                    fn epochStartBlock(
12506                        data: &[u8],
12507                        validate: bool,
12508                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
12509                        <epochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw(
12510                                data,
12511                                validate,
12512                            )
12513                            .map(LightClientArbitrumV2Calls::epochStartBlock)
12514                    }
12515                    epochStartBlock
12516                },
12517                {
12518                    fn genesisStakeTableState(
12519                        data: &[u8],
12520                        validate: bool,
12521                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
12522                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
12523                                data,
12524                                validate,
12525                            )
12526                            .map(LightClientArbitrumV2Calls::genesisStakeTableState)
12527                    }
12528                    genesisStakeTableState
12529                },
12530                {
12531                    fn setStateHistoryRetentionPeriod(
12532                        data: &[u8],
12533                        validate: bool,
12534                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
12535                        <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
12536                                data,
12537                                validate,
12538                            )
12539                            .map(
12540                                LightClientArbitrumV2Calls::setStateHistoryRetentionPeriod,
12541                            )
12542                    }
12543                    setStateHistoryRetentionPeriod
12544                },
12545                {
12546                    fn upgradeToAndCall(
12547                        data: &[u8],
12548                        validate: bool,
12549                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
12550                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw(
12551                                data,
12552                                validate,
12553                            )
12554                            .map(LightClientArbitrumV2Calls::upgradeToAndCall)
12555                    }
12556                    upgradeToAndCall
12557                },
12558                {
12559                    fn proxiableUUID(
12560                        data: &[u8],
12561                        validate: bool,
12562                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
12563                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw(
12564                                data,
12565                                validate,
12566                            )
12567                            .map(LightClientArbitrumV2Calls::proxiableUUID)
12568                    }
12569                    proxiableUUID
12570                },
12571                {
12572                    fn disablePermissionedProverMode(
12573                        data: &[u8],
12574                        validate: bool,
12575                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
12576                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw(
12577                                data,
12578                                validate,
12579                            )
12580                            .map(
12581                                LightClientArbitrumV2Calls::disablePermissionedProverMode,
12582                            )
12583                    }
12584                    disablePermissionedProverMode
12585                },
12586                {
12587                    fn renounceOwnership(
12588                        data: &[u8],
12589                        validate: bool,
12590                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
12591                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
12592                                data,
12593                                validate,
12594                            )
12595                            .map(LightClientArbitrumV2Calls::renounceOwnership)
12596                    }
12597                    renounceOwnership
12598                },
12599                {
12600                    fn newFinalizedState_1(
12601                        data: &[u8],
12602                        validate: bool,
12603                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
12604                        <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_decode_raw(
12605                                data,
12606                                validate,
12607                            )
12608                            .map(LightClientArbitrumV2Calls::newFinalizedState_1)
12609                    }
12610                    newFinalizedState_1
12611                },
12612                {
12613                    fn currentEpoch(
12614                        data: &[u8],
12615                        validate: bool,
12616                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
12617                        <currentEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
12618                                data,
12619                                validate,
12620                            )
12621                            .map(LightClientArbitrumV2Calls::currentEpoch)
12622                    }
12623                    currentEpoch
12624                },
12625                {
12626                    fn isPermissionedProverEnabled(
12627                        data: &[u8],
12628                        validate: bool,
12629                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
12630                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw(
12631                                data,
12632                                validate,
12633                            )
12634                            .map(LightClientArbitrumV2Calls::isPermissionedProverEnabled)
12635                    }
12636                    isPermissionedProverEnabled
12637                },
12638                {
12639                    fn getHotShotCommitment(
12640                        data: &[u8],
12641                        validate: bool,
12642                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
12643                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw(
12644                                data,
12645                                validate,
12646                            )
12647                            .map(LightClientArbitrumV2Calls::getHotShotCommitment)
12648                    }
12649                    getHotShotCommitment
12650                },
12651                {
12652                    fn owner(
12653                        data: &[u8],
12654                        validate: bool,
12655                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
12656                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(
12657                                data,
12658                                validate,
12659                            )
12660                            .map(LightClientArbitrumV2Calls::owner)
12661                    }
12662                    owner
12663                },
12664                {
12665                    fn epochFromBlockNumber(
12666                        data: &[u8],
12667                        validate: bool,
12668                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
12669                        <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
12670                                data,
12671                                validate,
12672                            )
12673                            .map(LightClientArbitrumV2Calls::epochFromBlockNumber)
12674                    }
12675                    epochFromBlockNumber
12676                },
12677                {
12678                    fn setstateHistoryRetentionPeriod(
12679                        data: &[u8],
12680                        validate: bool,
12681                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
12682                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
12683                                data,
12684                                validate,
12685                            )
12686                            .map(
12687                                LightClientArbitrumV2Calls::setstateHistoryRetentionPeriod,
12688                            )
12689                    }
12690                    setstateHistoryRetentionPeriod
12691                },
12692                {
12693                    fn initialize(
12694                        data: &[u8],
12695                        validate: bool,
12696                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
12697                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(
12698                                data,
12699                                validate,
12700                            )
12701                            .map(LightClientArbitrumV2Calls::initialize)
12702                    }
12703                    initialize
12704                },
12705                {
12706                    fn finalizedState(
12707                        data: &[u8],
12708                        validate: bool,
12709                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
12710                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
12711                                data,
12712                                validate,
12713                            )
12714                            .map(LightClientArbitrumV2Calls::finalizedState)
12715                    }
12716                    finalizedState
12717                },
12718                {
12719                    fn UPGRADE_INTERFACE_VERSION(
12720                        data: &[u8],
12721                        validate: bool,
12722                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
12723                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw(
12724                                data,
12725                                validate,
12726                            )
12727                            .map(LightClientArbitrumV2Calls::UPGRADE_INTERFACE_VERSION)
12728                    }
12729                    UPGRADE_INTERFACE_VERSION
12730                },
12731                {
12732                    fn initializeV2(
12733                        data: &[u8],
12734                        validate: bool,
12735                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
12736                        <initializeV2Call as alloy_sol_types::SolCall>::abi_decode_raw(
12737                                data,
12738                                validate,
12739                            )
12740                            .map(LightClientArbitrumV2Calls::initializeV2)
12741                    }
12742                    initializeV2
12743                },
12744                {
12745                    fn stateHistoryRetentionPeriod(
12746                        data: &[u8],
12747                        validate: bool,
12748                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
12749                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
12750                                data,
12751                                validate,
12752                            )
12753                            .map(LightClientArbitrumV2Calls::stateHistoryRetentionPeriod)
12754                    }
12755                    stateHistoryRetentionPeriod
12756                },
12757                {
12758                    fn genesisState(
12759                        data: &[u8],
12760                        validate: bool,
12761                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
12762                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
12763                                data,
12764                                validate,
12765                            )
12766                            .map(LightClientArbitrumV2Calls::genesisState)
12767                    }
12768                    genesisState
12769                },
12770                {
12771                    fn lagOverEscapeHatchThreshold(
12772                        data: &[u8],
12773                        validate: bool,
12774                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
12775                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw(
12776                                data,
12777                                validate,
12778                            )
12779                            .map(LightClientArbitrumV2Calls::lagOverEscapeHatchThreshold)
12780                    }
12781                    lagOverEscapeHatchThreshold
12782                },
12783                {
12784                    fn blocksPerEpoch(
12785                        data: &[u8],
12786                        validate: bool,
12787                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
12788                        <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
12789                                data,
12790                                validate,
12791                            )
12792                            .map(LightClientArbitrumV2Calls::blocksPerEpoch)
12793                    }
12794                    blocksPerEpoch
12795                },
12796                {
12797                    fn transferOwnership(
12798                        data: &[u8],
12799                        validate: bool,
12800                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
12801                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
12802                                data,
12803                                validate,
12804                            )
12805                            .map(LightClientArbitrumV2Calls::transferOwnership)
12806                    }
12807                    transferOwnership
12808                },
12809                {
12810                    fn getStateHistoryCount(
12811                        data: &[u8],
12812                        validate: bool,
12813                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
12814                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw(
12815                                data,
12816                                validate,
12817                            )
12818                            .map(LightClientArbitrumV2Calls::getStateHistoryCount)
12819                    }
12820                    getStateHistoryCount
12821                },
12822            ];
12823            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
12824                return Err(
12825                    alloy_sol_types::Error::unknown_selector(
12826                        <Self as alloy_sol_types::SolInterface>::NAME,
12827                        selector,
12828                    ),
12829                );
12830            };
12831            DECODE_SHIMS[idx](data, validate)
12832        }
12833        #[inline]
12834        fn abi_encoded_size(&self) -> usize {
12835            match self {
12836                Self::UPGRADE_INTERFACE_VERSION(inner) => {
12837                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encoded_size(
12838                        inner,
12839                    )
12840                }
12841                Self::_getVk(inner) => {
12842                    <_getVkCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12843                }
12844                Self::blocksPerEpoch(inner) => {
12845                    <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
12846                        inner,
12847                    )
12848                }
12849                Self::currentBlockNumber(inner) => {
12850                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
12851                        inner,
12852                    )
12853                }
12854                Self::currentEpoch(inner) => {
12855                    <currentEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
12856                        inner,
12857                    )
12858                }
12859                Self::disablePermissionedProverMode(inner) => {
12860                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encoded_size(
12861                        inner,
12862                    )
12863                }
12864                Self::epochFromBlockNumber(inner) => {
12865                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
12866                        inner,
12867                    )
12868                }
12869                Self::epochStartBlock(inner) => {
12870                    <epochStartBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
12871                        inner,
12872                    )
12873                }
12874                Self::finalizedState(inner) => {
12875                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
12876                        inner,
12877                    )
12878                }
12879                Self::genesisStakeTableState(inner) => {
12880                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
12881                        inner,
12882                    )
12883                }
12884                Self::genesisState(inner) => {
12885                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
12886                        inner,
12887                    )
12888                }
12889                Self::getHotShotCommitment(inner) => {
12890                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encoded_size(
12891                        inner,
12892                    )
12893                }
12894                Self::getStateHistoryCount(inner) => {
12895                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encoded_size(
12896                        inner,
12897                    )
12898                }
12899                Self::getVersion(inner) => {
12900                    <getVersionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12901                }
12902                Self::initialize(inner) => {
12903                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12904                }
12905                Self::initializeV2(inner) => {
12906                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encoded_size(
12907                        inner,
12908                    )
12909                }
12910                Self::isEpochRoot(inner) => {
12911                    <isEpochRootCall as alloy_sol_types::SolCall>::abi_encoded_size(
12912                        inner,
12913                    )
12914                }
12915                Self::isGtEpochRoot(inner) => {
12916                    <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_encoded_size(
12917                        inner,
12918                    )
12919                }
12920                Self::isPermissionedProverEnabled(inner) => {
12921                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encoded_size(
12922                        inner,
12923                    )
12924                }
12925                Self::lagOverEscapeHatchThreshold(inner) => {
12926                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encoded_size(
12927                        inner,
12928                    )
12929                }
12930                Self::newFinalizedState_0(inner) => {
12931                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_encoded_size(
12932                        inner,
12933                    )
12934                }
12935                Self::newFinalizedState_1(inner) => {
12936                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_encoded_size(
12937                        inner,
12938                    )
12939                }
12940                Self::owner(inner) => {
12941                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12942                }
12943                Self::permissionedProver(inner) => {
12944                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
12945                        inner,
12946                    )
12947                }
12948                Self::proxiableUUID(inner) => {
12949                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encoded_size(
12950                        inner,
12951                    )
12952                }
12953                Self::renounceOwnership(inner) => {
12954                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
12955                        inner,
12956                    )
12957                }
12958                Self::setPermissionedProver(inner) => {
12959                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
12960                        inner,
12961                    )
12962                }
12963                Self::setStateHistoryRetentionPeriod(inner) => {
12964                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
12965                        inner,
12966                    )
12967                }
12968                Self::setstateHistoryRetentionPeriod(inner) => {
12969                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
12970                        inner,
12971                    )
12972                }
12973                Self::stateHistoryCommitments(inner) => {
12974                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encoded_size(
12975                        inner,
12976                    )
12977                }
12978                Self::stateHistoryFirstIndex(inner) => {
12979                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encoded_size(
12980                        inner,
12981                    )
12982                }
12983                Self::stateHistoryRetentionPeriod(inner) => {
12984                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
12985                        inner,
12986                    )
12987                }
12988                Self::transferOwnership(inner) => {
12989                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
12990                        inner,
12991                    )
12992                }
12993                Self::updateEpochStartBlock(inner) => {
12994                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
12995                        inner,
12996                    )
12997                }
12998                Self::upgradeToAndCall(inner) => {
12999                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encoded_size(
13000                        inner,
13001                    )
13002                }
13003                Self::votingStakeTableState(inner) => {
13004                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
13005                        inner,
13006                    )
13007                }
13008            }
13009        }
13010        #[inline]
13011        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
13012            match self {
13013                Self::UPGRADE_INTERFACE_VERSION(inner) => {
13014                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encode_raw(
13015                        inner,
13016                        out,
13017                    )
13018                }
13019                Self::_getVk(inner) => {
13020                    <_getVkCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
13021                }
13022                Self::blocksPerEpoch(inner) => {
13023                    <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
13024                        inner,
13025                        out,
13026                    )
13027                }
13028                Self::currentBlockNumber(inner) => {
13029                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
13030                        inner,
13031                        out,
13032                    )
13033                }
13034                Self::currentEpoch(inner) => {
13035                    <currentEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
13036                        inner,
13037                        out,
13038                    )
13039                }
13040                Self::disablePermissionedProverMode(inner) => {
13041                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encode_raw(
13042                        inner,
13043                        out,
13044                    )
13045                }
13046                Self::epochFromBlockNumber(inner) => {
13047                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
13048                        inner,
13049                        out,
13050                    )
13051                }
13052                Self::epochStartBlock(inner) => {
13053                    <epochStartBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
13054                        inner,
13055                        out,
13056                    )
13057                }
13058                Self::finalizedState(inner) => {
13059                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
13060                        inner,
13061                        out,
13062                    )
13063                }
13064                Self::genesisStakeTableState(inner) => {
13065                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
13066                        inner,
13067                        out,
13068                    )
13069                }
13070                Self::genesisState(inner) => {
13071                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
13072                        inner,
13073                        out,
13074                    )
13075                }
13076                Self::getHotShotCommitment(inner) => {
13077                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encode_raw(
13078                        inner,
13079                        out,
13080                    )
13081                }
13082                Self::getStateHistoryCount(inner) => {
13083                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encode_raw(
13084                        inner,
13085                        out,
13086                    )
13087                }
13088                Self::getVersion(inner) => {
13089                    <getVersionCall as alloy_sol_types::SolCall>::abi_encode_raw(
13090                        inner,
13091                        out,
13092                    )
13093                }
13094                Self::initialize(inner) => {
13095                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
13096                        inner,
13097                        out,
13098                    )
13099                }
13100                Self::initializeV2(inner) => {
13101                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encode_raw(
13102                        inner,
13103                        out,
13104                    )
13105                }
13106                Self::isEpochRoot(inner) => {
13107                    <isEpochRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
13108                        inner,
13109                        out,
13110                    )
13111                }
13112                Self::isGtEpochRoot(inner) => {
13113                    <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
13114                        inner,
13115                        out,
13116                    )
13117                }
13118                Self::isPermissionedProverEnabled(inner) => {
13119                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encode_raw(
13120                        inner,
13121                        out,
13122                    )
13123                }
13124                Self::lagOverEscapeHatchThreshold(inner) => {
13125                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encode_raw(
13126                        inner,
13127                        out,
13128                    )
13129                }
13130                Self::newFinalizedState_0(inner) => {
13131                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_encode_raw(
13132                        inner,
13133                        out,
13134                    )
13135                }
13136                Self::newFinalizedState_1(inner) => {
13137                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_encode_raw(
13138                        inner,
13139                        out,
13140                    )
13141                }
13142                Self::owner(inner) => {
13143                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
13144                }
13145                Self::permissionedProver(inner) => {
13146                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
13147                        inner,
13148                        out,
13149                    )
13150                }
13151                Self::proxiableUUID(inner) => {
13152                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encode_raw(
13153                        inner,
13154                        out,
13155                    )
13156                }
13157                Self::renounceOwnership(inner) => {
13158                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
13159                        inner,
13160                        out,
13161                    )
13162                }
13163                Self::setPermissionedProver(inner) => {
13164                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
13165                        inner,
13166                        out,
13167                    )
13168                }
13169                Self::setStateHistoryRetentionPeriod(inner) => {
13170                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
13171                        inner,
13172                        out,
13173                    )
13174                }
13175                Self::setstateHistoryRetentionPeriod(inner) => {
13176                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
13177                        inner,
13178                        out,
13179                    )
13180                }
13181                Self::stateHistoryCommitments(inner) => {
13182                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encode_raw(
13183                        inner,
13184                        out,
13185                    )
13186                }
13187                Self::stateHistoryFirstIndex(inner) => {
13188                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encode_raw(
13189                        inner,
13190                        out,
13191                    )
13192                }
13193                Self::stateHistoryRetentionPeriod(inner) => {
13194                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
13195                        inner,
13196                        out,
13197                    )
13198                }
13199                Self::transferOwnership(inner) => {
13200                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
13201                        inner,
13202                        out,
13203                    )
13204                }
13205                Self::updateEpochStartBlock(inner) => {
13206                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
13207                        inner,
13208                        out,
13209                    )
13210                }
13211                Self::upgradeToAndCall(inner) => {
13212                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encode_raw(
13213                        inner,
13214                        out,
13215                    )
13216                }
13217                Self::votingStakeTableState(inner) => {
13218                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
13219                        inner,
13220                        out,
13221                    )
13222                }
13223            }
13224        }
13225    }
13226    ///Container for all the [`LightClientArbitrumV2`](self) custom errors.
13227    #[derive(Debug, PartialEq, Eq, Hash)]
13228    pub enum LightClientArbitrumV2Errors {
13229        #[allow(missing_docs)]
13230        AddressEmptyCode(AddressEmptyCode),
13231        #[allow(missing_docs)]
13232        DeprecatedApi(DeprecatedApi),
13233        #[allow(missing_docs)]
13234        ERC1967InvalidImplementation(ERC1967InvalidImplementation),
13235        #[allow(missing_docs)]
13236        ERC1967NonPayable(ERC1967NonPayable),
13237        #[allow(missing_docs)]
13238        FailedInnerCall(FailedInnerCall),
13239        #[allow(missing_docs)]
13240        InsufficientSnapshotHistory(InsufficientSnapshotHistory),
13241        #[allow(missing_docs)]
13242        InvalidAddress(InvalidAddress),
13243        #[allow(missing_docs)]
13244        InvalidArgs(InvalidArgs),
13245        #[allow(missing_docs)]
13246        InvalidHotShotBlockForCommitmentCheck(InvalidHotShotBlockForCommitmentCheck),
13247        #[allow(missing_docs)]
13248        InvalidInitialization(InvalidInitialization),
13249        #[allow(missing_docs)]
13250        InvalidMaxStateHistory(InvalidMaxStateHistory),
13251        #[allow(missing_docs)]
13252        InvalidProof(InvalidProof),
13253        #[allow(missing_docs)]
13254        MissingEpochRootUpdate(MissingEpochRootUpdate),
13255        #[allow(missing_docs)]
13256        NoChangeRequired(NoChangeRequired),
13257        #[allow(missing_docs)]
13258        NotInitializing(NotInitializing),
13259        #[allow(missing_docs)]
13260        OutdatedState(OutdatedState),
13261        #[allow(missing_docs)]
13262        OwnableInvalidOwner(OwnableInvalidOwner),
13263        #[allow(missing_docs)]
13264        OwnableUnauthorizedAccount(OwnableUnauthorizedAccount),
13265        #[allow(missing_docs)]
13266        ProverNotPermissioned(ProverNotPermissioned),
13267        #[allow(missing_docs)]
13268        UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext),
13269        #[allow(missing_docs)]
13270        UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID),
13271        #[allow(missing_docs)]
13272        WrongStakeTableUsed(WrongStakeTableUsed),
13273    }
13274    #[automatically_derived]
13275    impl LightClientArbitrumV2Errors {
13276        /// All the selectors of this enum.
13277        ///
13278        /// Note that the selectors might not be in the same order as the variants.
13279        /// No guarantees are made about the order of the selectors.
13280        ///
13281        /// Prefer using `SolInterface` methods instead.
13282        pub const SELECTORS: &'static [[u8; 4usize]] = &[
13283            [5u8, 28u8, 70u8, 239u8],
13284            [8u8, 10u8, 232u8, 217u8],
13285            [9u8, 189u8, 227u8, 57u8],
13286            [17u8, 140u8, 218u8, 167u8],
13287            [20u8, 37u8, 234u8, 66u8],
13288            [30u8, 79u8, 189u8, 247u8],
13289            [76u8, 156u8, 140u8, 227u8],
13290            [78u8, 64u8, 92u8, 141u8],
13291            [81u8, 97u8, 128u8, 137u8],
13292            [97u8, 90u8, 146u8, 100u8],
13293            [153u8, 150u8, 179u8, 21u8],
13294            [161u8, 186u8, 7u8, 238u8],
13295            [163u8, 166u8, 71u8, 128u8],
13296            [168u8, 99u8, 174u8, 201u8],
13297            [170u8, 29u8, 73u8, 164u8],
13298            [176u8, 180u8, 56u8, 119u8],
13299            [179u8, 152u8, 151u8, 159u8],
13300            [215u8, 230u8, 188u8, 248u8],
13301            [224u8, 124u8, 141u8, 186u8],
13302            [230u8, 196u8, 36u8, 123u8],
13303            [244u8, 160u8, 238u8, 224u8],
13304            [249u8, 46u8, 232u8, 169u8],
13305        ];
13306    }
13307    #[automatically_derived]
13308    impl alloy_sol_types::SolInterface for LightClientArbitrumV2Errors {
13309        const NAME: &'static str = "LightClientArbitrumV2Errors";
13310        const MIN_DATA_LENGTH: usize = 0usize;
13311        const COUNT: usize = 22usize;
13312        #[inline]
13313        fn selector(&self) -> [u8; 4] {
13314            match self {
13315                Self::AddressEmptyCode(_) => {
13316                    <AddressEmptyCode as alloy_sol_types::SolError>::SELECTOR
13317                }
13318                Self::DeprecatedApi(_) => {
13319                    <DeprecatedApi as alloy_sol_types::SolError>::SELECTOR
13320                }
13321                Self::ERC1967InvalidImplementation(_) => {
13322                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SELECTOR
13323                }
13324                Self::ERC1967NonPayable(_) => {
13325                    <ERC1967NonPayable as alloy_sol_types::SolError>::SELECTOR
13326                }
13327                Self::FailedInnerCall(_) => {
13328                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
13329                }
13330                Self::InsufficientSnapshotHistory(_) => {
13331                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::SELECTOR
13332                }
13333                Self::InvalidAddress(_) => {
13334                    <InvalidAddress as alloy_sol_types::SolError>::SELECTOR
13335                }
13336                Self::InvalidArgs(_) => {
13337                    <InvalidArgs as alloy_sol_types::SolError>::SELECTOR
13338                }
13339                Self::InvalidHotShotBlockForCommitmentCheck(_) => {
13340                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::SELECTOR
13341                }
13342                Self::InvalidInitialization(_) => {
13343                    <InvalidInitialization as alloy_sol_types::SolError>::SELECTOR
13344                }
13345                Self::InvalidMaxStateHistory(_) => {
13346                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::SELECTOR
13347                }
13348                Self::InvalidProof(_) => {
13349                    <InvalidProof as alloy_sol_types::SolError>::SELECTOR
13350                }
13351                Self::MissingEpochRootUpdate(_) => {
13352                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::SELECTOR
13353                }
13354                Self::NoChangeRequired(_) => {
13355                    <NoChangeRequired as alloy_sol_types::SolError>::SELECTOR
13356                }
13357                Self::NotInitializing(_) => {
13358                    <NotInitializing as alloy_sol_types::SolError>::SELECTOR
13359                }
13360                Self::OutdatedState(_) => {
13361                    <OutdatedState as alloy_sol_types::SolError>::SELECTOR
13362                }
13363                Self::OwnableInvalidOwner(_) => {
13364                    <OwnableInvalidOwner as alloy_sol_types::SolError>::SELECTOR
13365                }
13366                Self::OwnableUnauthorizedAccount(_) => {
13367                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
13368                }
13369                Self::ProverNotPermissioned(_) => {
13370                    <ProverNotPermissioned as alloy_sol_types::SolError>::SELECTOR
13371                }
13372                Self::UUPSUnauthorizedCallContext(_) => {
13373                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SELECTOR
13374                }
13375                Self::UUPSUnsupportedProxiableUUID(_) => {
13376                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SELECTOR
13377                }
13378                Self::WrongStakeTableUsed(_) => {
13379                    <WrongStakeTableUsed as alloy_sol_types::SolError>::SELECTOR
13380                }
13381            }
13382        }
13383        #[inline]
13384        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
13385            Self::SELECTORS.get(i).copied()
13386        }
13387        #[inline]
13388        fn valid_selector(selector: [u8; 4]) -> bool {
13389            Self::SELECTORS.binary_search(&selector).is_ok()
13390        }
13391        #[inline]
13392        #[allow(non_snake_case)]
13393        fn abi_decode_raw(
13394            selector: [u8; 4],
13395            data: &[u8],
13396            validate: bool,
13397        ) -> alloy_sol_types::Result<Self> {
13398            static DECODE_SHIMS: &[fn(
13399                &[u8],
13400                bool,
13401            ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors>] = &[
13402                {
13403                    fn OutdatedState(
13404                        data: &[u8],
13405                        validate: bool,
13406                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
13407                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw(
13408                                data,
13409                                validate,
13410                            )
13411                            .map(LightClientArbitrumV2Errors::OutdatedState)
13412                    }
13413                    OutdatedState
13414                },
13415                {
13416                    fn MissingEpochRootUpdate(
13417                        data: &[u8],
13418                        validate: bool,
13419                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
13420                        <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_decode_raw(
13421                                data,
13422                                validate,
13423                            )
13424                            .map(LightClientArbitrumV2Errors::MissingEpochRootUpdate)
13425                    }
13426                    MissingEpochRootUpdate
13427                },
13428                {
13429                    fn InvalidProof(
13430                        data: &[u8],
13431                        validate: bool,
13432                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
13433                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw(
13434                                data,
13435                                validate,
13436                            )
13437                            .map(LightClientArbitrumV2Errors::InvalidProof)
13438                    }
13439                    InvalidProof
13440                },
13441                {
13442                    fn OwnableUnauthorizedAccount(
13443                        data: &[u8],
13444                        validate: bool,
13445                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
13446                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
13447                                data,
13448                                validate,
13449                            )
13450                            .map(LightClientArbitrumV2Errors::OwnableUnauthorizedAccount)
13451                    }
13452                    OwnableUnauthorizedAccount
13453                },
13454                {
13455                    fn FailedInnerCall(
13456                        data: &[u8],
13457                        validate: bool,
13458                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
13459                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw(
13460                                data,
13461                                validate,
13462                            )
13463                            .map(LightClientArbitrumV2Errors::FailedInnerCall)
13464                    }
13465                    FailedInnerCall
13466                },
13467                {
13468                    fn OwnableInvalidOwner(
13469                        data: &[u8],
13470                        validate: bool,
13471                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
13472                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw(
13473                                data,
13474                                validate,
13475                            )
13476                            .map(LightClientArbitrumV2Errors::OwnableInvalidOwner)
13477                    }
13478                    OwnableInvalidOwner
13479                },
13480                {
13481                    fn ERC1967InvalidImplementation(
13482                        data: &[u8],
13483                        validate: bool,
13484                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
13485                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw(
13486                                data,
13487                                validate,
13488                            )
13489                            .map(
13490                                LightClientArbitrumV2Errors::ERC1967InvalidImplementation,
13491                            )
13492                    }
13493                    ERC1967InvalidImplementation
13494                },
13495                {
13496                    fn DeprecatedApi(
13497                        data: &[u8],
13498                        validate: bool,
13499                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
13500                        <DeprecatedApi as alloy_sol_types::SolError>::abi_decode_raw(
13501                                data,
13502                                validate,
13503                            )
13504                            .map(LightClientArbitrumV2Errors::DeprecatedApi)
13505                    }
13506                    DeprecatedApi
13507                },
13508                {
13509                    fn WrongStakeTableUsed(
13510                        data: &[u8],
13511                        validate: bool,
13512                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
13513                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw(
13514                                data,
13515                                validate,
13516                            )
13517                            .map(LightClientArbitrumV2Errors::WrongStakeTableUsed)
13518                    }
13519                    WrongStakeTableUsed
13520                },
13521                {
13522                    fn InvalidHotShotBlockForCommitmentCheck(
13523                        data: &[u8],
13524                        validate: bool,
13525                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
13526                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw(
13527                                data,
13528                                validate,
13529                            )
13530                            .map(
13531                                LightClientArbitrumV2Errors::InvalidHotShotBlockForCommitmentCheck,
13532                            )
13533                    }
13534                    InvalidHotShotBlockForCommitmentCheck
13535                },
13536                {
13537                    fn AddressEmptyCode(
13538                        data: &[u8],
13539                        validate: bool,
13540                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
13541                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw(
13542                                data,
13543                                validate,
13544                            )
13545                            .map(LightClientArbitrumV2Errors::AddressEmptyCode)
13546                    }
13547                    AddressEmptyCode
13548                },
13549                {
13550                    fn InvalidArgs(
13551                        data: &[u8],
13552                        validate: bool,
13553                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
13554                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw(
13555                                data,
13556                                validate,
13557                            )
13558                            .map(LightClientArbitrumV2Errors::InvalidArgs)
13559                    }
13560                    InvalidArgs
13561                },
13562                {
13563                    fn ProverNotPermissioned(
13564                        data: &[u8],
13565                        validate: bool,
13566                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
13567                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw(
13568                                data,
13569                                validate,
13570                            )
13571                            .map(LightClientArbitrumV2Errors::ProverNotPermissioned)
13572                    }
13573                    ProverNotPermissioned
13574                },
13575                {
13576                    fn NoChangeRequired(
13577                        data: &[u8],
13578                        validate: bool,
13579                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
13580                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw(
13581                                data,
13582                                validate,
13583                            )
13584                            .map(LightClientArbitrumV2Errors::NoChangeRequired)
13585                    }
13586                    NoChangeRequired
13587                },
13588                {
13589                    fn UUPSUnsupportedProxiableUUID(
13590                        data: &[u8],
13591                        validate: bool,
13592                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
13593                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw(
13594                                data,
13595                                validate,
13596                            )
13597                            .map(
13598                                LightClientArbitrumV2Errors::UUPSUnsupportedProxiableUUID,
13599                            )
13600                    }
13601                    UUPSUnsupportedProxiableUUID
13602                },
13603                {
13604                    fn InsufficientSnapshotHistory(
13605                        data: &[u8],
13606                        validate: bool,
13607                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
13608                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw(
13609                                data,
13610                                validate,
13611                            )
13612                            .map(
13613                                LightClientArbitrumV2Errors::InsufficientSnapshotHistory,
13614                            )
13615                    }
13616                    InsufficientSnapshotHistory
13617                },
13618                {
13619                    fn ERC1967NonPayable(
13620                        data: &[u8],
13621                        validate: bool,
13622                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
13623                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw(
13624                                data,
13625                                validate,
13626                            )
13627                            .map(LightClientArbitrumV2Errors::ERC1967NonPayable)
13628                    }
13629                    ERC1967NonPayable
13630                },
13631                {
13632                    fn NotInitializing(
13633                        data: &[u8],
13634                        validate: bool,
13635                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
13636                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw(
13637                                data,
13638                                validate,
13639                            )
13640                            .map(LightClientArbitrumV2Errors::NotInitializing)
13641                    }
13642                    NotInitializing
13643                },
13644                {
13645                    fn UUPSUnauthorizedCallContext(
13646                        data: &[u8],
13647                        validate: bool,
13648                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
13649                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw(
13650                                data,
13651                                validate,
13652                            )
13653                            .map(
13654                                LightClientArbitrumV2Errors::UUPSUnauthorizedCallContext,
13655                            )
13656                    }
13657                    UUPSUnauthorizedCallContext
13658                },
13659                {
13660                    fn InvalidAddress(
13661                        data: &[u8],
13662                        validate: bool,
13663                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
13664                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw(
13665                                data,
13666                                validate,
13667                            )
13668                            .map(LightClientArbitrumV2Errors::InvalidAddress)
13669                    }
13670                    InvalidAddress
13671                },
13672                {
13673                    fn InvalidMaxStateHistory(
13674                        data: &[u8],
13675                        validate: bool,
13676                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
13677                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw(
13678                                data,
13679                                validate,
13680                            )
13681                            .map(LightClientArbitrumV2Errors::InvalidMaxStateHistory)
13682                    }
13683                    InvalidMaxStateHistory
13684                },
13685                {
13686                    fn InvalidInitialization(
13687                        data: &[u8],
13688                        validate: bool,
13689                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
13690                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw(
13691                                data,
13692                                validate,
13693                            )
13694                            .map(LightClientArbitrumV2Errors::InvalidInitialization)
13695                    }
13696                    InvalidInitialization
13697                },
13698            ];
13699            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
13700                return Err(
13701                    alloy_sol_types::Error::unknown_selector(
13702                        <Self as alloy_sol_types::SolInterface>::NAME,
13703                        selector,
13704                    ),
13705                );
13706            };
13707            DECODE_SHIMS[idx](data, validate)
13708        }
13709        #[inline]
13710        fn abi_encoded_size(&self) -> usize {
13711            match self {
13712                Self::AddressEmptyCode(inner) => {
13713                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encoded_size(
13714                        inner,
13715                    )
13716                }
13717                Self::DeprecatedApi(inner) => {
13718                    <DeprecatedApi as alloy_sol_types::SolError>::abi_encoded_size(inner)
13719                }
13720                Self::ERC1967InvalidImplementation(inner) => {
13721                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encoded_size(
13722                        inner,
13723                    )
13724                }
13725                Self::ERC1967NonPayable(inner) => {
13726                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encoded_size(
13727                        inner,
13728                    )
13729                }
13730                Self::FailedInnerCall(inner) => {
13731                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
13732                        inner,
13733                    )
13734                }
13735                Self::InsufficientSnapshotHistory(inner) => {
13736                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encoded_size(
13737                        inner,
13738                    )
13739                }
13740                Self::InvalidAddress(inner) => {
13741                    <InvalidAddress as alloy_sol_types::SolError>::abi_encoded_size(
13742                        inner,
13743                    )
13744                }
13745                Self::InvalidArgs(inner) => {
13746                    <InvalidArgs as alloy_sol_types::SolError>::abi_encoded_size(inner)
13747                }
13748                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
13749                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encoded_size(
13750                        inner,
13751                    )
13752                }
13753                Self::InvalidInitialization(inner) => {
13754                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encoded_size(
13755                        inner,
13756                    )
13757                }
13758                Self::InvalidMaxStateHistory(inner) => {
13759                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encoded_size(
13760                        inner,
13761                    )
13762                }
13763                Self::InvalidProof(inner) => {
13764                    <InvalidProof as alloy_sol_types::SolError>::abi_encoded_size(inner)
13765                }
13766                Self::MissingEpochRootUpdate(inner) => {
13767                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_encoded_size(
13768                        inner,
13769                    )
13770                }
13771                Self::NoChangeRequired(inner) => {
13772                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encoded_size(
13773                        inner,
13774                    )
13775                }
13776                Self::NotInitializing(inner) => {
13777                    <NotInitializing as alloy_sol_types::SolError>::abi_encoded_size(
13778                        inner,
13779                    )
13780                }
13781                Self::OutdatedState(inner) => {
13782                    <OutdatedState as alloy_sol_types::SolError>::abi_encoded_size(inner)
13783                }
13784                Self::OwnableInvalidOwner(inner) => {
13785                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encoded_size(
13786                        inner,
13787                    )
13788                }
13789                Self::OwnableUnauthorizedAccount(inner) => {
13790                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
13791                        inner,
13792                    )
13793                }
13794                Self::ProverNotPermissioned(inner) => {
13795                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encoded_size(
13796                        inner,
13797                    )
13798                }
13799                Self::UUPSUnauthorizedCallContext(inner) => {
13800                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encoded_size(
13801                        inner,
13802                    )
13803                }
13804                Self::UUPSUnsupportedProxiableUUID(inner) => {
13805                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encoded_size(
13806                        inner,
13807                    )
13808                }
13809                Self::WrongStakeTableUsed(inner) => {
13810                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encoded_size(
13811                        inner,
13812                    )
13813                }
13814            }
13815        }
13816        #[inline]
13817        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
13818            match self {
13819                Self::AddressEmptyCode(inner) => {
13820                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encode_raw(
13821                        inner,
13822                        out,
13823                    )
13824                }
13825                Self::DeprecatedApi(inner) => {
13826                    <DeprecatedApi as alloy_sol_types::SolError>::abi_encode_raw(
13827                        inner,
13828                        out,
13829                    )
13830                }
13831                Self::ERC1967InvalidImplementation(inner) => {
13832                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encode_raw(
13833                        inner,
13834                        out,
13835                    )
13836                }
13837                Self::ERC1967NonPayable(inner) => {
13838                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encode_raw(
13839                        inner,
13840                        out,
13841                    )
13842                }
13843                Self::FailedInnerCall(inner) => {
13844                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
13845                        inner,
13846                        out,
13847                    )
13848                }
13849                Self::InsufficientSnapshotHistory(inner) => {
13850                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encode_raw(
13851                        inner,
13852                        out,
13853                    )
13854                }
13855                Self::InvalidAddress(inner) => {
13856                    <InvalidAddress as alloy_sol_types::SolError>::abi_encode_raw(
13857                        inner,
13858                        out,
13859                    )
13860                }
13861                Self::InvalidArgs(inner) => {
13862                    <InvalidArgs as alloy_sol_types::SolError>::abi_encode_raw(
13863                        inner,
13864                        out,
13865                    )
13866                }
13867                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
13868                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encode_raw(
13869                        inner,
13870                        out,
13871                    )
13872                }
13873                Self::InvalidInitialization(inner) => {
13874                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encode_raw(
13875                        inner,
13876                        out,
13877                    )
13878                }
13879                Self::InvalidMaxStateHistory(inner) => {
13880                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encode_raw(
13881                        inner,
13882                        out,
13883                    )
13884                }
13885                Self::InvalidProof(inner) => {
13886                    <InvalidProof as alloy_sol_types::SolError>::abi_encode_raw(
13887                        inner,
13888                        out,
13889                    )
13890                }
13891                Self::MissingEpochRootUpdate(inner) => {
13892                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_encode_raw(
13893                        inner,
13894                        out,
13895                    )
13896                }
13897                Self::NoChangeRequired(inner) => {
13898                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encode_raw(
13899                        inner,
13900                        out,
13901                    )
13902                }
13903                Self::NotInitializing(inner) => {
13904                    <NotInitializing as alloy_sol_types::SolError>::abi_encode_raw(
13905                        inner,
13906                        out,
13907                    )
13908                }
13909                Self::OutdatedState(inner) => {
13910                    <OutdatedState as alloy_sol_types::SolError>::abi_encode_raw(
13911                        inner,
13912                        out,
13913                    )
13914                }
13915                Self::OwnableInvalidOwner(inner) => {
13916                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encode_raw(
13917                        inner,
13918                        out,
13919                    )
13920                }
13921                Self::OwnableUnauthorizedAccount(inner) => {
13922                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
13923                        inner,
13924                        out,
13925                    )
13926                }
13927                Self::ProverNotPermissioned(inner) => {
13928                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encode_raw(
13929                        inner,
13930                        out,
13931                    )
13932                }
13933                Self::UUPSUnauthorizedCallContext(inner) => {
13934                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encode_raw(
13935                        inner,
13936                        out,
13937                    )
13938                }
13939                Self::UUPSUnsupportedProxiableUUID(inner) => {
13940                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encode_raw(
13941                        inner,
13942                        out,
13943                    )
13944                }
13945                Self::WrongStakeTableUsed(inner) => {
13946                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encode_raw(
13947                        inner,
13948                        out,
13949                    )
13950                }
13951            }
13952        }
13953    }
13954    ///Container for all the [`LightClientArbitrumV2`](self) events.
13955    #[derive(Debug, PartialEq, Eq, Hash)]
13956    pub enum LightClientArbitrumV2Events {
13957        #[allow(missing_docs)]
13958        Initialized(Initialized),
13959        #[allow(missing_docs)]
13960        NewEpoch(NewEpoch),
13961        #[allow(missing_docs)]
13962        NewState(NewState),
13963        #[allow(missing_docs)]
13964        OwnershipTransferred(OwnershipTransferred),
13965        #[allow(missing_docs)]
13966        PermissionedProverNotRequired(PermissionedProverNotRequired),
13967        #[allow(missing_docs)]
13968        PermissionedProverRequired(PermissionedProverRequired),
13969        #[allow(missing_docs)]
13970        Upgrade(Upgrade),
13971        #[allow(missing_docs)]
13972        Upgraded(Upgraded),
13973    }
13974    #[automatically_derived]
13975    impl LightClientArbitrumV2Events {
13976        /// All the selectors of this enum.
13977        ///
13978        /// Note that the selectors might not be in the same order as the variants.
13979        /// No guarantees are made about the order of the selectors.
13980        ///
13981        /// Prefer using `SolInterface` methods instead.
13982        pub const SELECTORS: &'static [[u8; 32usize]] = &[
13983            [
13984                49u8, 234u8, 189u8, 144u8, 153u8, 253u8, 178u8, 93u8, 172u8, 221u8,
13985                210u8, 6u8, 171u8, 255u8, 135u8, 49u8, 30u8, 85u8, 52u8, 65u8, 252u8,
13986                157u8, 15u8, 205u8, 239u8, 32u8, 16u8, 98u8, 215u8, 231u8, 7u8, 27u8,
13987            ],
13988            [
13989                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
13990                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
13991                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
13992            ],
13993            [
13994                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
13995                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
13996                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
13997            ],
13998            [
13999                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
14000                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
14001                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
14002            ],
14003            [
14004                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
14005                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
14006                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
14007            ],
14008            [
14009                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
14010                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
14011                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
14012            ],
14013            [
14014                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
14015                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
14016                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
14017            ],
14018            [
14019                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
14020                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
14021                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
14022            ],
14023        ];
14024    }
14025    #[automatically_derived]
14026    impl alloy_sol_types::SolEventInterface for LightClientArbitrumV2Events {
14027        const NAME: &'static str = "LightClientArbitrumV2Events";
14028        const COUNT: usize = 8usize;
14029        fn decode_raw_log(
14030            topics: &[alloy_sol_types::Word],
14031            data: &[u8],
14032            validate: bool,
14033        ) -> alloy_sol_types::Result<Self> {
14034            match topics.first().copied() {
14035                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
14036                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(
14037                            topics,
14038                            data,
14039                            validate,
14040                        )
14041                        .map(Self::Initialized)
14042                }
14043                Some(<NewEpoch as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
14044                    <NewEpoch as alloy_sol_types::SolEvent>::decode_raw_log(
14045                            topics,
14046                            data,
14047                            validate,
14048                        )
14049                        .map(Self::NewEpoch)
14050                }
14051                Some(<NewState as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
14052                    <NewState as alloy_sol_types::SolEvent>::decode_raw_log(
14053                            topics,
14054                            data,
14055                            validate,
14056                        )
14057                        .map(Self::NewState)
14058                }
14059                Some(
14060                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
14061                ) => {
14062                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
14063                            topics,
14064                            data,
14065                            validate,
14066                        )
14067                        .map(Self::OwnershipTransferred)
14068                }
14069                Some(
14070                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
14071                ) => {
14072                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::decode_raw_log(
14073                            topics,
14074                            data,
14075                            validate,
14076                        )
14077                        .map(Self::PermissionedProverNotRequired)
14078                }
14079                Some(
14080                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
14081                ) => {
14082                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::decode_raw_log(
14083                            topics,
14084                            data,
14085                            validate,
14086                        )
14087                        .map(Self::PermissionedProverRequired)
14088                }
14089                Some(<Upgrade as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
14090                    <Upgrade as alloy_sol_types::SolEvent>::decode_raw_log(
14091                            topics,
14092                            data,
14093                            validate,
14094                        )
14095                        .map(Self::Upgrade)
14096                }
14097                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
14098                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log(
14099                            topics,
14100                            data,
14101                            validate,
14102                        )
14103                        .map(Self::Upgraded)
14104                }
14105                _ => {
14106                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
14107                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
14108                        log: alloy_sol_types::private::Box::new(
14109                            alloy_sol_types::private::LogData::new_unchecked(
14110                                topics.to_vec(),
14111                                data.to_vec().into(),
14112                            ),
14113                        ),
14114                    })
14115                }
14116            }
14117        }
14118    }
14119    #[automatically_derived]
14120    impl alloy_sol_types::private::IntoLogData for LightClientArbitrumV2Events {
14121        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
14122            match self {
14123                Self::Initialized(inner) => {
14124                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
14125                }
14126                Self::NewEpoch(inner) => {
14127                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
14128                }
14129                Self::NewState(inner) => {
14130                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
14131                }
14132                Self::OwnershipTransferred(inner) => {
14133                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
14134                }
14135                Self::PermissionedProverNotRequired(inner) => {
14136                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
14137                }
14138                Self::PermissionedProverRequired(inner) => {
14139                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
14140                }
14141                Self::Upgrade(inner) => {
14142                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
14143                }
14144                Self::Upgraded(inner) => {
14145                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
14146                }
14147            }
14148        }
14149        fn into_log_data(self) -> alloy_sol_types::private::LogData {
14150            match self {
14151                Self::Initialized(inner) => {
14152                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14153                }
14154                Self::NewEpoch(inner) => {
14155                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14156                }
14157                Self::NewState(inner) => {
14158                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14159                }
14160                Self::OwnershipTransferred(inner) => {
14161                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14162                }
14163                Self::PermissionedProverNotRequired(inner) => {
14164                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14165                }
14166                Self::PermissionedProverRequired(inner) => {
14167                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14168                }
14169                Self::Upgrade(inner) => {
14170                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14171                }
14172                Self::Upgraded(inner) => {
14173                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14174                }
14175            }
14176        }
14177    }
14178    use alloy::contract as alloy_contract;
14179    /**Creates a new wrapper around an on-chain [`LightClientArbitrumV2`](self) contract instance.
14180
14181See the [wrapper's documentation](`LightClientArbitrumV2Instance`) for more details.*/
14182    #[inline]
14183    pub const fn new<
14184        T: alloy_contract::private::Transport + ::core::clone::Clone,
14185        P: alloy_contract::private::Provider<T, N>,
14186        N: alloy_contract::private::Network,
14187    >(
14188        address: alloy_sol_types::private::Address,
14189        provider: P,
14190    ) -> LightClientArbitrumV2Instance<T, P, N> {
14191        LightClientArbitrumV2Instance::<T, P, N>::new(address, provider)
14192    }
14193    /**Deploys this contract using the given `provider` and constructor arguments, if any.
14194
14195Returns a new instance of the contract, if the deployment was successful.
14196
14197For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
14198    #[inline]
14199    pub fn deploy<
14200        T: alloy_contract::private::Transport + ::core::clone::Clone,
14201        P: alloy_contract::private::Provider<T, N>,
14202        N: alloy_contract::private::Network,
14203    >(
14204        provider: P,
14205    ) -> impl ::core::future::Future<
14206        Output = alloy_contract::Result<LightClientArbitrumV2Instance<T, P, N>>,
14207    > {
14208        LightClientArbitrumV2Instance::<T, P, N>::deploy(provider)
14209    }
14210    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
14211and constructor arguments, if any.
14212
14213This is a simple wrapper around creating a `RawCallBuilder` with the data set to
14214the bytecode concatenated with the constructor's ABI-encoded arguments.*/
14215    #[inline]
14216    pub fn deploy_builder<
14217        T: alloy_contract::private::Transport + ::core::clone::Clone,
14218        P: alloy_contract::private::Provider<T, N>,
14219        N: alloy_contract::private::Network,
14220    >(provider: P) -> alloy_contract::RawCallBuilder<T, P, N> {
14221        LightClientArbitrumV2Instance::<T, P, N>::deploy_builder(provider)
14222    }
14223    /**A [`LightClientArbitrumV2`](self) instance.
14224
14225Contains type-safe methods for interacting with an on-chain instance of the
14226[`LightClientArbitrumV2`](self) contract located at a given `address`, using a given
14227provider `P`.
14228
14229If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
14230documentation on how to provide it), the `deploy` and `deploy_builder` methods can
14231be used to deploy a new instance of the contract.
14232
14233See the [module-level documentation](self) for all the available methods.*/
14234    #[derive(Clone)]
14235    pub struct LightClientArbitrumV2Instance<
14236        T,
14237        P,
14238        N = alloy_contract::private::Ethereum,
14239    > {
14240        address: alloy_sol_types::private::Address,
14241        provider: P,
14242        _network_transport: ::core::marker::PhantomData<(N, T)>,
14243    }
14244    #[automatically_derived]
14245    impl<T, P, N> ::core::fmt::Debug for LightClientArbitrumV2Instance<T, P, N> {
14246        #[inline]
14247        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
14248            f.debug_tuple("LightClientArbitrumV2Instance").field(&self.address).finish()
14249        }
14250    }
14251    /// Instantiation and getters/setters.
14252    #[automatically_derived]
14253    impl<
14254        T: alloy_contract::private::Transport + ::core::clone::Clone,
14255        P: alloy_contract::private::Provider<T, N>,
14256        N: alloy_contract::private::Network,
14257    > LightClientArbitrumV2Instance<T, P, N> {
14258        /**Creates a new wrapper around an on-chain [`LightClientArbitrumV2`](self) contract instance.
14259
14260See the [wrapper's documentation](`LightClientArbitrumV2Instance`) for more details.*/
14261        #[inline]
14262        pub const fn new(
14263            address: alloy_sol_types::private::Address,
14264            provider: P,
14265        ) -> Self {
14266            Self {
14267                address,
14268                provider,
14269                _network_transport: ::core::marker::PhantomData,
14270            }
14271        }
14272        /**Deploys this contract using the given `provider` and constructor arguments, if any.
14273
14274Returns a new instance of the contract, if the deployment was successful.
14275
14276For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
14277        #[inline]
14278        pub async fn deploy(
14279            provider: P,
14280        ) -> alloy_contract::Result<LightClientArbitrumV2Instance<T, P, N>> {
14281            let call_builder = Self::deploy_builder(provider);
14282            let contract_address = call_builder.deploy().await?;
14283            Ok(Self::new(contract_address, call_builder.provider))
14284        }
14285        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
14286and constructor arguments, if any.
14287
14288This is a simple wrapper around creating a `RawCallBuilder` with the data set to
14289the bytecode concatenated with the constructor's ABI-encoded arguments.*/
14290        #[inline]
14291        pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder<T, P, N> {
14292            alloy_contract::RawCallBuilder::new_raw_deploy(
14293                provider,
14294                ::core::clone::Clone::clone(&BYTECODE),
14295            )
14296        }
14297        /// Returns a reference to the address.
14298        #[inline]
14299        pub const fn address(&self) -> &alloy_sol_types::private::Address {
14300            &self.address
14301        }
14302        /// Sets the address.
14303        #[inline]
14304        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
14305            self.address = address;
14306        }
14307        /// Sets the address and returns `self`.
14308        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
14309            self.set_address(address);
14310            self
14311        }
14312        /// Returns a reference to the provider.
14313        #[inline]
14314        pub const fn provider(&self) -> &P {
14315            &self.provider
14316        }
14317    }
14318    impl<T, P: ::core::clone::Clone, N> LightClientArbitrumV2Instance<T, &P, N> {
14319        /// Clones the provider and returns a new instance with the cloned provider.
14320        #[inline]
14321        pub fn with_cloned_provider(self) -> LightClientArbitrumV2Instance<T, P, N> {
14322            LightClientArbitrumV2Instance {
14323                address: self.address,
14324                provider: ::core::clone::Clone::clone(&self.provider),
14325                _network_transport: ::core::marker::PhantomData,
14326            }
14327        }
14328    }
14329    /// Function calls.
14330    #[automatically_derived]
14331    impl<
14332        T: alloy_contract::private::Transport + ::core::clone::Clone,
14333        P: alloy_contract::private::Provider<T, N>,
14334        N: alloy_contract::private::Network,
14335    > LightClientArbitrumV2Instance<T, P, N> {
14336        /// Creates a new call builder using this contract instance's provider and address.
14337        ///
14338        /// Note that the call can be any function call, not just those defined in this
14339        /// contract. Prefer using the other methods for building type-safe contract calls.
14340        pub fn call_builder<C: alloy_sol_types::SolCall>(
14341            &self,
14342            call: &C,
14343        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
14344            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
14345        }
14346        ///Creates a new call builder for the [`UPGRADE_INTERFACE_VERSION`] function.
14347        pub fn UPGRADE_INTERFACE_VERSION(
14348            &self,
14349        ) -> alloy_contract::SolCallBuilder<T, &P, UPGRADE_INTERFACE_VERSIONCall, N> {
14350            self.call_builder(&UPGRADE_INTERFACE_VERSIONCall {})
14351        }
14352        ///Creates a new call builder for the [`_getVk`] function.
14353        pub fn _getVk(&self) -> alloy_contract::SolCallBuilder<T, &P, _getVkCall, N> {
14354            self.call_builder(&_getVkCall {})
14355        }
14356        ///Creates a new call builder for the [`blocksPerEpoch`] function.
14357        pub fn blocksPerEpoch(
14358            &self,
14359        ) -> alloy_contract::SolCallBuilder<T, &P, blocksPerEpochCall, N> {
14360            self.call_builder(&blocksPerEpochCall {})
14361        }
14362        ///Creates a new call builder for the [`currentBlockNumber`] function.
14363        pub fn currentBlockNumber(
14364            &self,
14365        ) -> alloy_contract::SolCallBuilder<T, &P, currentBlockNumberCall, N> {
14366            self.call_builder(&currentBlockNumberCall {})
14367        }
14368        ///Creates a new call builder for the [`currentEpoch`] function.
14369        pub fn currentEpoch(
14370            &self,
14371        ) -> alloy_contract::SolCallBuilder<T, &P, currentEpochCall, N> {
14372            self.call_builder(&currentEpochCall {})
14373        }
14374        ///Creates a new call builder for the [`disablePermissionedProverMode`] function.
14375        pub fn disablePermissionedProverMode(
14376            &self,
14377        ) -> alloy_contract::SolCallBuilder<
14378            T,
14379            &P,
14380            disablePermissionedProverModeCall,
14381            N,
14382        > {
14383            self.call_builder(
14384                &disablePermissionedProverModeCall {
14385                },
14386            )
14387        }
14388        ///Creates a new call builder for the [`epochFromBlockNumber`] function.
14389        pub fn epochFromBlockNumber(
14390            &self,
14391            _blockNum: u64,
14392            _blocksPerEpoch: u64,
14393        ) -> alloy_contract::SolCallBuilder<T, &P, epochFromBlockNumberCall, N> {
14394            self.call_builder(
14395                &epochFromBlockNumberCall {
14396                    _blockNum,
14397                    _blocksPerEpoch,
14398                },
14399            )
14400        }
14401        ///Creates a new call builder for the [`epochStartBlock`] function.
14402        pub fn epochStartBlock(
14403            &self,
14404        ) -> alloy_contract::SolCallBuilder<T, &P, epochStartBlockCall, N> {
14405            self.call_builder(&epochStartBlockCall {})
14406        }
14407        ///Creates a new call builder for the [`finalizedState`] function.
14408        pub fn finalizedState(
14409            &self,
14410        ) -> alloy_contract::SolCallBuilder<T, &P, finalizedStateCall, N> {
14411            self.call_builder(&finalizedStateCall {})
14412        }
14413        ///Creates a new call builder for the [`genesisStakeTableState`] function.
14414        pub fn genesisStakeTableState(
14415            &self,
14416        ) -> alloy_contract::SolCallBuilder<T, &P, genesisStakeTableStateCall, N> {
14417            self.call_builder(&genesisStakeTableStateCall {})
14418        }
14419        ///Creates a new call builder for the [`genesisState`] function.
14420        pub fn genesisState(
14421            &self,
14422        ) -> alloy_contract::SolCallBuilder<T, &P, genesisStateCall, N> {
14423            self.call_builder(&genesisStateCall {})
14424        }
14425        ///Creates a new call builder for the [`getHotShotCommitment`] function.
14426        pub fn getHotShotCommitment(
14427            &self,
14428            hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
14429        ) -> alloy_contract::SolCallBuilder<T, &P, getHotShotCommitmentCall, N> {
14430            self.call_builder(
14431                &getHotShotCommitmentCall {
14432                    hotShotBlockHeight,
14433                },
14434            )
14435        }
14436        ///Creates a new call builder for the [`getStateHistoryCount`] function.
14437        pub fn getStateHistoryCount(
14438            &self,
14439        ) -> alloy_contract::SolCallBuilder<T, &P, getStateHistoryCountCall, N> {
14440            self.call_builder(&getStateHistoryCountCall {})
14441        }
14442        ///Creates a new call builder for the [`getVersion`] function.
14443        pub fn getVersion(
14444            &self,
14445        ) -> alloy_contract::SolCallBuilder<T, &P, getVersionCall, N> {
14446            self.call_builder(&getVersionCall {})
14447        }
14448        ///Creates a new call builder for the [`initialize`] function.
14449        pub fn initialize(
14450            &self,
14451            _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
14452            _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
14453            _stateHistoryRetentionPeriod: u32,
14454            owner: alloy::sol_types::private::Address,
14455        ) -> alloy_contract::SolCallBuilder<T, &P, initializeCall, N> {
14456            self.call_builder(
14457                &initializeCall {
14458                    _genesis,
14459                    _genesisStakeTableState,
14460                    _stateHistoryRetentionPeriod,
14461                    owner,
14462                },
14463            )
14464        }
14465        ///Creates a new call builder for the [`initializeV2`] function.
14466        pub fn initializeV2(
14467            &self,
14468            _blocksPerEpoch: u64,
14469            _epochStartBlock: u64,
14470        ) -> alloy_contract::SolCallBuilder<T, &P, initializeV2Call, N> {
14471            self.call_builder(
14472                &initializeV2Call {
14473                    _blocksPerEpoch,
14474                    _epochStartBlock,
14475                },
14476            )
14477        }
14478        ///Creates a new call builder for the [`isEpochRoot`] function.
14479        pub fn isEpochRoot(
14480            &self,
14481            blockHeight: u64,
14482        ) -> alloy_contract::SolCallBuilder<T, &P, isEpochRootCall, N> {
14483            self.call_builder(&isEpochRootCall { blockHeight })
14484        }
14485        ///Creates a new call builder for the [`isGtEpochRoot`] function.
14486        pub fn isGtEpochRoot(
14487            &self,
14488            blockHeight: u64,
14489        ) -> alloy_contract::SolCallBuilder<T, &P, isGtEpochRootCall, N> {
14490            self.call_builder(&isGtEpochRootCall { blockHeight })
14491        }
14492        ///Creates a new call builder for the [`isPermissionedProverEnabled`] function.
14493        pub fn isPermissionedProverEnabled(
14494            &self,
14495        ) -> alloy_contract::SolCallBuilder<T, &P, isPermissionedProverEnabledCall, N> {
14496            self.call_builder(&isPermissionedProverEnabledCall {})
14497        }
14498        ///Creates a new call builder for the [`lagOverEscapeHatchThreshold`] function.
14499        pub fn lagOverEscapeHatchThreshold(
14500            &self,
14501            blockNumber: alloy::sol_types::private::primitives::aliases::U256,
14502            blockThreshold: alloy::sol_types::private::primitives::aliases::U256,
14503        ) -> alloy_contract::SolCallBuilder<T, &P, lagOverEscapeHatchThresholdCall, N> {
14504            self.call_builder(
14505                &lagOverEscapeHatchThresholdCall {
14506                    blockNumber,
14507                    blockThreshold,
14508                },
14509            )
14510        }
14511        ///Creates a new call builder for the [`newFinalizedState_0`] function.
14512        pub fn newFinalizedState_0(
14513            &self,
14514            _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
14515            _1: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
14516        ) -> alloy_contract::SolCallBuilder<T, &P, newFinalizedState_0Call, N> {
14517            self.call_builder(&newFinalizedState_0Call { _0, _1 })
14518        }
14519        ///Creates a new call builder for the [`newFinalizedState_1`] function.
14520        pub fn newFinalizedState_1(
14521            &self,
14522            newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
14523            nextStakeTable: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
14524            proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
14525        ) -> alloy_contract::SolCallBuilder<T, &P, newFinalizedState_1Call, N> {
14526            self.call_builder(
14527                &newFinalizedState_1Call {
14528                    newState,
14529                    nextStakeTable,
14530                    proof,
14531                },
14532            )
14533        }
14534        ///Creates a new call builder for the [`owner`] function.
14535        pub fn owner(&self) -> alloy_contract::SolCallBuilder<T, &P, ownerCall, N> {
14536            self.call_builder(&ownerCall {})
14537        }
14538        ///Creates a new call builder for the [`permissionedProver`] function.
14539        pub fn permissionedProver(
14540            &self,
14541        ) -> alloy_contract::SolCallBuilder<T, &P, permissionedProverCall, N> {
14542            self.call_builder(&permissionedProverCall {})
14543        }
14544        ///Creates a new call builder for the [`proxiableUUID`] function.
14545        pub fn proxiableUUID(
14546            &self,
14547        ) -> alloy_contract::SolCallBuilder<T, &P, proxiableUUIDCall, N> {
14548            self.call_builder(&proxiableUUIDCall {})
14549        }
14550        ///Creates a new call builder for the [`renounceOwnership`] function.
14551        pub fn renounceOwnership(
14552            &self,
14553        ) -> alloy_contract::SolCallBuilder<T, &P, renounceOwnershipCall, N> {
14554            self.call_builder(&renounceOwnershipCall {})
14555        }
14556        ///Creates a new call builder for the [`setPermissionedProver`] function.
14557        pub fn setPermissionedProver(
14558            &self,
14559            prover: alloy::sol_types::private::Address,
14560        ) -> alloy_contract::SolCallBuilder<T, &P, setPermissionedProverCall, N> {
14561            self.call_builder(
14562                &setPermissionedProverCall {
14563                    prover,
14564                },
14565            )
14566        }
14567        ///Creates a new call builder for the [`setStateHistoryRetentionPeriod`] function.
14568        pub fn setStateHistoryRetentionPeriod(
14569            &self,
14570            historySeconds: u32,
14571        ) -> alloy_contract::SolCallBuilder<
14572            T,
14573            &P,
14574            setStateHistoryRetentionPeriodCall,
14575            N,
14576        > {
14577            self.call_builder(
14578                &setStateHistoryRetentionPeriodCall {
14579                    historySeconds,
14580                },
14581            )
14582        }
14583        ///Creates a new call builder for the [`setstateHistoryRetentionPeriod`] function.
14584        pub fn setstateHistoryRetentionPeriod(
14585            &self,
14586            historySeconds: u32,
14587        ) -> alloy_contract::SolCallBuilder<
14588            T,
14589            &P,
14590            setstateHistoryRetentionPeriodCall,
14591            N,
14592        > {
14593            self.call_builder(
14594                &setstateHistoryRetentionPeriodCall {
14595                    historySeconds,
14596                },
14597            )
14598        }
14599        ///Creates a new call builder for the [`stateHistoryCommitments`] function.
14600        pub fn stateHistoryCommitments(
14601            &self,
14602            _0: alloy::sol_types::private::primitives::aliases::U256,
14603        ) -> alloy_contract::SolCallBuilder<T, &P, stateHistoryCommitmentsCall, N> {
14604            self.call_builder(&stateHistoryCommitmentsCall { _0 })
14605        }
14606        ///Creates a new call builder for the [`stateHistoryFirstIndex`] function.
14607        pub fn stateHistoryFirstIndex(
14608            &self,
14609        ) -> alloy_contract::SolCallBuilder<T, &P, stateHistoryFirstIndexCall, N> {
14610            self.call_builder(&stateHistoryFirstIndexCall {})
14611        }
14612        ///Creates a new call builder for the [`stateHistoryRetentionPeriod`] function.
14613        pub fn stateHistoryRetentionPeriod(
14614            &self,
14615        ) -> alloy_contract::SolCallBuilder<T, &P, stateHistoryRetentionPeriodCall, N> {
14616            self.call_builder(&stateHistoryRetentionPeriodCall {})
14617        }
14618        ///Creates a new call builder for the [`transferOwnership`] function.
14619        pub fn transferOwnership(
14620            &self,
14621            newOwner: alloy::sol_types::private::Address,
14622        ) -> alloy_contract::SolCallBuilder<T, &P, transferOwnershipCall, N> {
14623            self.call_builder(&transferOwnershipCall { newOwner })
14624        }
14625        ///Creates a new call builder for the [`updateEpochStartBlock`] function.
14626        pub fn updateEpochStartBlock(
14627            &self,
14628            newEpochStartBlock: u64,
14629        ) -> alloy_contract::SolCallBuilder<T, &P, updateEpochStartBlockCall, N> {
14630            self.call_builder(
14631                &updateEpochStartBlockCall {
14632                    newEpochStartBlock,
14633                },
14634            )
14635        }
14636        ///Creates a new call builder for the [`upgradeToAndCall`] function.
14637        pub fn upgradeToAndCall(
14638            &self,
14639            newImplementation: alloy::sol_types::private::Address,
14640            data: alloy::sol_types::private::Bytes,
14641        ) -> alloy_contract::SolCallBuilder<T, &P, upgradeToAndCallCall, N> {
14642            self.call_builder(
14643                &upgradeToAndCallCall {
14644                    newImplementation,
14645                    data,
14646                },
14647            )
14648        }
14649        ///Creates a new call builder for the [`votingStakeTableState`] function.
14650        pub fn votingStakeTableState(
14651            &self,
14652        ) -> alloy_contract::SolCallBuilder<T, &P, votingStakeTableStateCall, N> {
14653            self.call_builder(&votingStakeTableStateCall {})
14654        }
14655    }
14656    /// Event filters.
14657    #[automatically_derived]
14658    impl<
14659        T: alloy_contract::private::Transport + ::core::clone::Clone,
14660        P: alloy_contract::private::Provider<T, N>,
14661        N: alloy_contract::private::Network,
14662    > LightClientArbitrumV2Instance<T, P, N> {
14663        /// Creates a new event filter using this contract instance's provider and address.
14664        ///
14665        /// Note that the type can be any event, not just those defined in this contract.
14666        /// Prefer using the other methods for building type-safe event filters.
14667        pub fn event_filter<E: alloy_sol_types::SolEvent>(
14668            &self,
14669        ) -> alloy_contract::Event<T, &P, E, N> {
14670            alloy_contract::Event::new_sol(&self.provider, &self.address)
14671        }
14672        ///Creates a new event filter for the [`Initialized`] event.
14673        pub fn Initialized_filter(
14674            &self,
14675        ) -> alloy_contract::Event<T, &P, Initialized, N> {
14676            self.event_filter::<Initialized>()
14677        }
14678        ///Creates a new event filter for the [`NewEpoch`] event.
14679        pub fn NewEpoch_filter(&self) -> alloy_contract::Event<T, &P, NewEpoch, N> {
14680            self.event_filter::<NewEpoch>()
14681        }
14682        ///Creates a new event filter for the [`NewState`] event.
14683        pub fn NewState_filter(&self) -> alloy_contract::Event<T, &P, NewState, N> {
14684            self.event_filter::<NewState>()
14685        }
14686        ///Creates a new event filter for the [`OwnershipTransferred`] event.
14687        pub fn OwnershipTransferred_filter(
14688            &self,
14689        ) -> alloy_contract::Event<T, &P, OwnershipTransferred, N> {
14690            self.event_filter::<OwnershipTransferred>()
14691        }
14692        ///Creates a new event filter for the [`PermissionedProverNotRequired`] event.
14693        pub fn PermissionedProverNotRequired_filter(
14694            &self,
14695        ) -> alloy_contract::Event<T, &P, PermissionedProverNotRequired, N> {
14696            self.event_filter::<PermissionedProverNotRequired>()
14697        }
14698        ///Creates a new event filter for the [`PermissionedProverRequired`] event.
14699        pub fn PermissionedProverRequired_filter(
14700            &self,
14701        ) -> alloy_contract::Event<T, &P, PermissionedProverRequired, N> {
14702            self.event_filter::<PermissionedProverRequired>()
14703        }
14704        ///Creates a new event filter for the [`Upgrade`] event.
14705        pub fn Upgrade_filter(&self) -> alloy_contract::Event<T, &P, Upgrade, N> {
14706            self.event_filter::<Upgrade>()
14707        }
14708        ///Creates a new event filter for the [`Upgraded`] event.
14709        pub fn Upgraded_filter(&self) -> alloy_contract::Event<T, &P, Upgraded, N> {
14710            self.event_filter::<Upgraded>()
14711        }
14712    }
14713}