hotshot_contract_adapter/bindings/
lightclientarbitrum.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 alloy::sol_types as alloy_sol_types;
20
21    use super::*;
22    #[derive(Default, Debug, PartialEq, Eq, Hash)]
23    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
24    #[derive(Clone)]
25    pub struct BaseField(alloy::sol_types::private::primitives::aliases::U256);
26    const _: () = {
27        use alloy::sol_types as alloy_sol_types;
28        #[automatically_derived]
29        impl alloy_sol_types::private::SolTypeValue<BaseField>
30            for alloy::sol_types::private::primitives::aliases::U256
31        {
32            #[inline]
33            fn stv_to_tokens(
34                &self,
35            ) -> <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::Token<'_>
36            {
37                alloy_sol_types::private::SolTypeValue::<
38                    alloy::sol_types::sol_data::Uint<256>,
39                >::stv_to_tokens(self)
40            }
41            #[inline]
42            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
43                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(self)
44                    .0
45            }
46            #[inline]
47            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
48                <alloy::sol_types::sol_data::Uint<
49                    256,
50                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
51            }
52            #[inline]
53            fn stv_abi_packed_encoded_size(&self) -> usize {
54                <alloy::sol_types::sol_data::Uint<
55                    256,
56                > as alloy_sol_types::SolType>::abi_encoded_size(self)
57            }
58        }
59        #[automatically_derived]
60        impl BaseField {
61            /// The Solidity type name.
62            pub const NAME: &'static str = stringify!(@ name);
63            /// Convert from the underlying value type.
64            #[inline]
65            pub const fn from(value: alloy::sol_types::private::primitives::aliases::U256) -> Self {
66                Self(value)
67            }
68            /// Return the underlying value.
69            #[inline]
70            pub const fn into(self) -> alloy::sol_types::private::primitives::aliases::U256 {
71                self.0
72            }
73            /// Return the single encoding of this value, delegating to the
74            /// underlying type.
75            #[inline]
76            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
77                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
78            }
79            /// Return the packed encoding of this value, delegating to the
80            /// underlying type.
81            #[inline]
82            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
83                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
84            }
85        }
86        #[automatically_derived]
87        impl alloy_sol_types::SolType for BaseField {
88            type RustType = alloy::sol_types::private::primitives::aliases::U256;
89            type Token<'a> =
90                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::Token<'a>;
91            const SOL_NAME: &'static str = Self::NAME;
92            const ENCODED_SIZE: Option<usize> =
93                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::ENCODED_SIZE;
94            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
95                256,
96            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
97            #[inline]
98            fn valid_token(token: &Self::Token<'_>) -> bool {
99                Self::type_check(token).is_ok()
100            }
101            #[inline]
102            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
103                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::type_check(
104                    token,
105                )
106            }
107            #[inline]
108            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
109                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::detokenize(
110                    token,
111                )
112            }
113        }
114        #[automatically_derived]
115        impl alloy_sol_types::EventTopic for BaseField {
116            #[inline]
117            fn topic_preimage_length(rust: &Self::RustType) -> usize {
118                <alloy::sol_types::sol_data::Uint<
119                    256,
120                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
121            }
122            #[inline]
123            fn encode_topic_preimage(
124                rust: &Self::RustType,
125                out: &mut alloy_sol_types::private::Vec<u8>,
126            ) {
127                <alloy::sol_types::sol_data::Uint<
128                    256,
129                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
130            }
131            #[inline]
132            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
133                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::EventTopic>::encode_topic(
134                    rust,
135                )
136            }
137        }
138    };
139    #[derive(Default, Debug, PartialEq, Eq, Hash)]
140    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
141    #[derive(Clone)]
142    pub struct ScalarField(alloy::sol_types::private::primitives::aliases::U256);
143    const _: () = {
144        use alloy::sol_types as alloy_sol_types;
145        #[automatically_derived]
146        impl alloy_sol_types::private::SolTypeValue<ScalarField>
147            for alloy::sol_types::private::primitives::aliases::U256
148        {
149            #[inline]
150            fn stv_to_tokens(
151                &self,
152            ) -> <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::Token<'_>
153            {
154                alloy_sol_types::private::SolTypeValue::<
155                    alloy::sol_types::sol_data::Uint<256>,
156                >::stv_to_tokens(self)
157            }
158            #[inline]
159            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
160                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(self)
161                    .0
162            }
163            #[inline]
164            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
165                <alloy::sol_types::sol_data::Uint<
166                    256,
167                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
168            }
169            #[inline]
170            fn stv_abi_packed_encoded_size(&self) -> usize {
171                <alloy::sol_types::sol_data::Uint<
172                    256,
173                > as alloy_sol_types::SolType>::abi_encoded_size(self)
174            }
175        }
176        #[automatically_derived]
177        impl ScalarField {
178            /// The Solidity type name.
179            pub const NAME: &'static str = stringify!(@ name);
180            /// Convert from the underlying value type.
181            #[inline]
182            pub const fn from(value: alloy::sol_types::private::primitives::aliases::U256) -> Self {
183                Self(value)
184            }
185            /// Return the underlying value.
186            #[inline]
187            pub const fn into(self) -> alloy::sol_types::private::primitives::aliases::U256 {
188                self.0
189            }
190            /// Return the single encoding of this value, delegating to the
191            /// underlying type.
192            #[inline]
193            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
194                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
195            }
196            /// Return the packed encoding of this value, delegating to the
197            /// underlying type.
198            #[inline]
199            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
200                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
201            }
202        }
203        #[automatically_derived]
204        impl alloy_sol_types::SolType for ScalarField {
205            type RustType = alloy::sol_types::private::primitives::aliases::U256;
206            type Token<'a> =
207                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::Token<'a>;
208            const SOL_NAME: &'static str = Self::NAME;
209            const ENCODED_SIZE: Option<usize> =
210                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::ENCODED_SIZE;
211            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
212                256,
213            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
214            #[inline]
215            fn valid_token(token: &Self::Token<'_>) -> bool {
216                Self::type_check(token).is_ok()
217            }
218            #[inline]
219            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
220                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::type_check(
221                    token,
222                )
223            }
224            #[inline]
225            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
226                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::detokenize(
227                    token,
228                )
229            }
230        }
231        #[automatically_derived]
232        impl alloy_sol_types::EventTopic for ScalarField {
233            #[inline]
234            fn topic_preimage_length(rust: &Self::RustType) -> usize {
235                <alloy::sol_types::sol_data::Uint<
236                    256,
237                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
238            }
239            #[inline]
240            fn encode_topic_preimage(
241                rust: &Self::RustType,
242                out: &mut alloy_sol_types::private::Vec<u8>,
243            ) {
244                <alloy::sol_types::sol_data::Uint<
245                    256,
246                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
247            }
248            #[inline]
249            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
250                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::EventTopic>::encode_topic(
251                    rust,
252                )
253            }
254        }
255    };
256    #[derive(Default, Debug, PartialEq, Eq, Hash)]
257    /**```solidity
258    struct G1Point { BaseField x; BaseField y; }
259    ```*/
260    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
261    #[derive(Clone)]
262    pub struct G1Point {
263        #[allow(missing_docs)]
264        pub x: <BaseField as alloy::sol_types::SolType>::RustType,
265        #[allow(missing_docs)]
266        pub y: <BaseField as alloy::sol_types::SolType>::RustType,
267    }
268    #[allow(
269        non_camel_case_types,
270        non_snake_case,
271        clippy::pub_underscore_fields,
272        clippy::style
273    )]
274    const _: () = {
275        use alloy::sol_types as alloy_sol_types;
276        #[doc(hidden)]
277        type UnderlyingSolTuple<'a> = (BaseField, BaseField);
278        #[doc(hidden)]
279        type UnderlyingRustTuple<'a> = (
280            <BaseField as alloy::sol_types::SolType>::RustType,
281            <BaseField as alloy::sol_types::SolType>::RustType,
282        );
283        #[cfg(test)]
284        #[allow(dead_code, unreachable_patterns)]
285        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
286            match _t {
287                alloy_sol_types::private::AssertTypeEq::<
288                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
289                >(_) => {},
290            }
291        }
292        #[automatically_derived]
293        #[doc(hidden)]
294        impl ::core::convert::From<G1Point> for UnderlyingRustTuple<'_> {
295            fn from(value: G1Point) -> Self {
296                (value.x, value.y)
297            }
298        }
299        #[automatically_derived]
300        #[doc(hidden)]
301        impl ::core::convert::From<UnderlyingRustTuple<'_>> for G1Point {
302            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
303                Self {
304                    x: tuple.0,
305                    y: tuple.1,
306                }
307            }
308        }
309        #[automatically_derived]
310        impl alloy_sol_types::SolValue for G1Point {
311            type SolType = Self;
312        }
313        #[automatically_derived]
314        impl alloy_sol_types::private::SolTypeValue<Self> for G1Point {
315            #[inline]
316            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
317                (
318                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x),
319                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y),
320                )
321            }
322            #[inline]
323            fn stv_abi_encoded_size(&self) -> usize {
324                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
325                    return size;
326                }
327                let tuple =
328                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
329                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
330            }
331            #[inline]
332            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
333                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
334            }
335            #[inline]
336            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
337                let tuple =
338                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
339                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
340                    &tuple, out,
341                )
342            }
343            #[inline]
344            fn stv_abi_packed_encoded_size(&self) -> usize {
345                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
346                    return size;
347                }
348                let tuple =
349                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
350                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
351                    &tuple,
352                )
353            }
354        }
355        #[automatically_derived]
356        impl alloy_sol_types::SolType for G1Point {
357            type RustType = Self;
358            type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
359            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
360            const ENCODED_SIZE: Option<usize> =
361                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
362            const PACKED_ENCODED_SIZE: Option<usize> =
363                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
364            #[inline]
365            fn valid_token(token: &Self::Token<'_>) -> bool {
366                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
367            }
368            #[inline]
369            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
370                let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
371                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
372            }
373        }
374        #[automatically_derived]
375        impl alloy_sol_types::SolStruct for G1Point {
376            const NAME: &'static str = "G1Point";
377            #[inline]
378            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
379                alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 x,uint256 y)")
380            }
381            #[inline]
382            fn eip712_components(
383            ) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
384            {
385                alloy_sol_types::private::Vec::new()
386            }
387            #[inline]
388            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
389                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
390            }
391            #[inline]
392            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
393                [
394                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x).0,
395                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y).0,
396                ]
397                .concat()
398            }
399        }
400        #[automatically_derived]
401        impl alloy_sol_types::EventTopic for G1Point {
402            #[inline]
403            fn topic_preimage_length(rust: &Self::RustType) -> usize {
404                0usize
405                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.x)
406                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.y)
407            }
408            #[inline]
409            fn encode_topic_preimage(
410                rust: &Self::RustType,
411                out: &mut alloy_sol_types::private::Vec<u8>,
412            ) {
413                out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
414                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.x, out);
415                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.y, out);
416            }
417            #[inline]
418            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
419                let mut out = alloy_sol_types::private::Vec::new();
420                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
421                alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
422            }
423        }
424    };
425    use alloy::contract as alloy_contract;
426    /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
427
428    See the [wrapper's documentation](`BN254Instance`) for more details.*/
429    #[inline]
430    pub const fn new<
431        T: alloy_contract::private::Transport + ::core::clone::Clone,
432        P: alloy_contract::private::Provider<T, N>,
433        N: alloy_contract::private::Network,
434    >(
435        address: alloy_sol_types::private::Address,
436        provider: P,
437    ) -> BN254Instance<T, P, N> {
438        BN254Instance::<T, P, N>::new(address, provider)
439    }
440    /**A [`BN254`](self) instance.
441
442    Contains type-safe methods for interacting with an on-chain instance of the
443    [`BN254`](self) contract located at a given `address`, using a given
444    provider `P`.
445
446    If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
447    documentation on how to provide it), the `deploy` and `deploy_builder` methods can
448    be used to deploy a new instance of the contract.
449
450    See the [module-level documentation](self) for all the available methods.*/
451    #[derive(Clone)]
452    pub struct BN254Instance<T, P, N = alloy_contract::private::Ethereum> {
453        address: alloy_sol_types::private::Address,
454        provider: P,
455        _network_transport: ::core::marker::PhantomData<(N, T)>,
456    }
457    #[automatically_derived]
458    impl<T, P, N> ::core::fmt::Debug for BN254Instance<T, P, N> {
459        #[inline]
460        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
461            f.debug_tuple("BN254Instance").field(&self.address).finish()
462        }
463    }
464    /// Instantiation and getters/setters.
465    #[automatically_derived]
466    impl<
467            T: alloy_contract::private::Transport + ::core::clone::Clone,
468            P: alloy_contract::private::Provider<T, N>,
469            N: alloy_contract::private::Network,
470        > BN254Instance<T, P, N>
471    {
472        /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
473
474        See the [wrapper's documentation](`BN254Instance`) for more details.*/
475        #[inline]
476        pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self {
477            Self {
478                address,
479                provider,
480                _network_transport: ::core::marker::PhantomData,
481            }
482        }
483        /// Returns a reference to the address.
484        #[inline]
485        pub const fn address(&self) -> &alloy_sol_types::private::Address {
486            &self.address
487        }
488        /// Sets the address.
489        #[inline]
490        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
491            self.address = address;
492        }
493        /// Sets the address and returns `self`.
494        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
495            self.set_address(address);
496            self
497        }
498        /// Returns a reference to the provider.
499        #[inline]
500        pub const fn provider(&self) -> &P {
501            &self.provider
502        }
503    }
504    impl<T, P: ::core::clone::Clone, N> BN254Instance<T, &P, N> {
505        /// Clones the provider and returns a new instance with the cloned provider.
506        #[inline]
507        pub fn with_cloned_provider(self) -> BN254Instance<T, P, N> {
508            BN254Instance {
509                address: self.address,
510                provider: ::core::clone::Clone::clone(&self.provider),
511                _network_transport: ::core::marker::PhantomData,
512            }
513        }
514    }
515    /// Function calls.
516    #[automatically_derived]
517    impl<
518            T: alloy_contract::private::Transport + ::core::clone::Clone,
519            P: alloy_contract::private::Provider<T, N>,
520            N: alloy_contract::private::Network,
521        > BN254Instance<T, P, N>
522    {
523        /// Creates a new call builder using this contract instance's provider and address.
524        ///
525        /// Note that the call can be any function call, not just those defined in this
526        /// contract. Prefer using the other methods for building type-safe contract calls.
527        pub fn call_builder<C: alloy_sol_types::SolCall>(
528            &self,
529            call: &C,
530        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
531            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
532        }
533    }
534    /// Event filters.
535    #[automatically_derived]
536    impl<
537            T: alloy_contract::private::Transport + ::core::clone::Clone,
538            P: alloy_contract::private::Provider<T, N>,
539            N: alloy_contract::private::Network,
540        > BN254Instance<T, P, N>
541    {
542        /// Creates a new event filter using this contract instance's provider and address.
543        ///
544        /// Note that the type can be any event, not just those defined in this contract.
545        /// Prefer using the other methods for building type-safe event filters.
546        pub fn event_filter<E: alloy_sol_types::SolEvent>(
547            &self,
548        ) -> alloy_contract::Event<T, &P, E, N> {
549            alloy_contract::Event::new_sol(&self.provider, &self.address)
550        }
551    }
552}
553///Module containing a contract's types and functions.
554/**
555
556```solidity
557library IPlonkVerifier {
558    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; }
559    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; }
560}
561```*/
562#[allow(
563    non_camel_case_types,
564    non_snake_case,
565    clippy::pub_underscore_fields,
566    clippy::style,
567    clippy::empty_structs_with_brackets
568)]
569pub mod IPlonkVerifier {
570    use alloy::sol_types as alloy_sol_types;
571
572    use super::*;
573    #[derive()]
574    /**```solidity
575    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; }
576    ```*/
577    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
578    #[derive(Clone)]
579    pub struct PlonkProof {
580        #[allow(missing_docs)]
581        pub wire0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
582        #[allow(missing_docs)]
583        pub wire1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
584        #[allow(missing_docs)]
585        pub wire2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
586        #[allow(missing_docs)]
587        pub wire3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
588        #[allow(missing_docs)]
589        pub wire4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
590        #[allow(missing_docs)]
591        pub prodPerm: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
592        #[allow(missing_docs)]
593        pub split0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
594        #[allow(missing_docs)]
595        pub split1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
596        #[allow(missing_docs)]
597        pub split2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
598        #[allow(missing_docs)]
599        pub split3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
600        #[allow(missing_docs)]
601        pub split4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
602        #[allow(missing_docs)]
603        pub zeta: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
604        #[allow(missing_docs)]
605        pub zetaOmega: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
606        #[allow(missing_docs)]
607        pub wireEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
608        #[allow(missing_docs)]
609        pub wireEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
610        #[allow(missing_docs)]
611        pub wireEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
612        #[allow(missing_docs)]
613        pub wireEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
614        #[allow(missing_docs)]
615        pub wireEval4: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
616        #[allow(missing_docs)]
617        pub sigmaEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
618        #[allow(missing_docs)]
619        pub sigmaEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
620        #[allow(missing_docs)]
621        pub sigmaEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
622        #[allow(missing_docs)]
623        pub sigmaEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
624        #[allow(missing_docs)]
625        pub prodPermZetaOmegaEval: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
626    }
627    #[allow(
628        non_camel_case_types,
629        non_snake_case,
630        clippy::pub_underscore_fields,
631        clippy::style
632    )]
633    const _: () = {
634        use alloy::sol_types as alloy_sol_types;
635        #[doc(hidden)]
636        type UnderlyingSolTuple<'a> = (
637            BN254::G1Point,
638            BN254::G1Point,
639            BN254::G1Point,
640            BN254::G1Point,
641            BN254::G1Point,
642            BN254::G1Point,
643            BN254::G1Point,
644            BN254::G1Point,
645            BN254::G1Point,
646            BN254::G1Point,
647            BN254::G1Point,
648            BN254::G1Point,
649            BN254::G1Point,
650            BN254::ScalarField,
651            BN254::ScalarField,
652            BN254::ScalarField,
653            BN254::ScalarField,
654            BN254::ScalarField,
655            BN254::ScalarField,
656            BN254::ScalarField,
657            BN254::ScalarField,
658            BN254::ScalarField,
659            BN254::ScalarField,
660        );
661        #[doc(hidden)]
662        type UnderlyingRustTuple<'a> = (
663            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
664            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
665            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
666            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
667            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
668            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
669            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
670            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
671            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
672            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
673            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
674            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
675            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
676            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
677            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
678            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
679            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
680            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
681            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
682            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
683            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
684            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
685            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
686        );
687        #[cfg(test)]
688        #[allow(dead_code, unreachable_patterns)]
689        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
690            match _t {
691                alloy_sol_types::private::AssertTypeEq::<
692                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
693                >(_) => {},
694            }
695        }
696        #[automatically_derived]
697        #[doc(hidden)]
698        impl ::core::convert::From<PlonkProof> for UnderlyingRustTuple<'_> {
699            fn from(value: PlonkProof) -> Self {
700                (
701                    value.wire0,
702                    value.wire1,
703                    value.wire2,
704                    value.wire3,
705                    value.wire4,
706                    value.prodPerm,
707                    value.split0,
708                    value.split1,
709                    value.split2,
710                    value.split3,
711                    value.split4,
712                    value.zeta,
713                    value.zetaOmega,
714                    value.wireEval0,
715                    value.wireEval1,
716                    value.wireEval2,
717                    value.wireEval3,
718                    value.wireEval4,
719                    value.sigmaEval0,
720                    value.sigmaEval1,
721                    value.sigmaEval2,
722                    value.sigmaEval3,
723                    value.prodPermZetaOmegaEval,
724                )
725            }
726        }
727        #[automatically_derived]
728        #[doc(hidden)]
729        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PlonkProof {
730            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
731                Self {
732                    wire0: tuple.0,
733                    wire1: tuple.1,
734                    wire2: tuple.2,
735                    wire3: tuple.3,
736                    wire4: tuple.4,
737                    prodPerm: tuple.5,
738                    split0: tuple.6,
739                    split1: tuple.7,
740                    split2: tuple.8,
741                    split3: tuple.9,
742                    split4: tuple.10,
743                    zeta: tuple.11,
744                    zetaOmega: tuple.12,
745                    wireEval0: tuple.13,
746                    wireEval1: tuple.14,
747                    wireEval2: tuple.15,
748                    wireEval3: tuple.16,
749                    wireEval4: tuple.17,
750                    sigmaEval0: tuple.18,
751                    sigmaEval1: tuple.19,
752                    sigmaEval2: tuple.20,
753                    sigmaEval3: tuple.21,
754                    prodPermZetaOmegaEval: tuple.22,
755                }
756            }
757        }
758        #[automatically_derived]
759        impl alloy_sol_types::SolValue for PlonkProof {
760            type SolType = Self;
761        }
762        #[automatically_derived]
763        impl alloy_sol_types::private::SolTypeValue<Self> for PlonkProof {
764            #[inline]
765            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
766                (
767                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire0),
768                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire1),
769                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire2),
770                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire3),
771                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire4),
772                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.prodPerm),
773                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split0),
774                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split1),
775                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split2),
776                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split3),
777                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split4),
778                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.zeta),
779                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.zetaOmega),
780                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.wireEval0),
781                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.wireEval1),
782                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.wireEval2),
783                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.wireEval3),
784                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.wireEval4),
785                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.sigmaEval0),
786                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.sigmaEval1),
787                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.sigmaEval2),
788                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.sigmaEval3),
789                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
790                        &self.prodPermZetaOmegaEval,
791                    ),
792                )
793            }
794            #[inline]
795            fn stv_abi_encoded_size(&self) -> usize {
796                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
797                    return size;
798                }
799                let tuple =
800                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
801                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
802            }
803            #[inline]
804            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
805                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
806            }
807            #[inline]
808            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
809                let tuple =
810                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
811                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
812                    &tuple, out,
813                )
814            }
815            #[inline]
816            fn stv_abi_packed_encoded_size(&self) -> usize {
817                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
818                    return size;
819                }
820                let tuple =
821                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
822                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
823                    &tuple,
824                )
825            }
826        }
827        #[automatically_derived]
828        impl alloy_sol_types::SolType for PlonkProof {
829            type RustType = Self;
830            type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
831            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
832            const ENCODED_SIZE: Option<usize> =
833                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
834            const PACKED_ENCODED_SIZE: Option<usize> =
835                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
836            #[inline]
837            fn valid_token(token: &Self::Token<'_>) -> bool {
838                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
839            }
840            #[inline]
841            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
842                let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
843                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
844            }
845        }
846        #[automatically_derived]
847        impl alloy_sol_types::SolStruct for PlonkProof {
848            const NAME: &'static str = "PlonkProof";
849            #[inline]
850            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
851                alloy_sol_types::private::Cow::Borrowed(
852                    "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)",
853                )
854            }
855            #[inline]
856            fn eip712_components(
857            ) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
858            {
859                let mut components = alloy_sol_types::private::Vec::with_capacity(13);
860                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
861                components
862                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
863                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
864                components
865                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
866                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
867                components
868                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
869                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
870                components
871                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
872                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
873                components
874                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
875                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
876                components
877                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
878                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
879                components
880                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
881                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
882                components
883                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
884                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
885                components
886                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
887                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
888                components
889                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
890                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
891                components
892                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
893                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
894                components
895                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
896                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
897                components
898                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
899                components
900            }
901            #[inline]
902            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
903                [
904                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.wire0).0,
905                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.wire1).0,
906                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.wire2).0,
907                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.wire3).0,
908                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.wire4).0,
909                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.prodPerm)
910                        .0,
911                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.split0).0,
912                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.split1).0,
913                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.split2).0,
914                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.split3).0,
915                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.split4).0,
916                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.zeta).0,
917                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.zetaOmega)
918                        .0,
919                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
920                        &self.wireEval0,
921                    )
922                    .0,
923                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
924                        &self.wireEval1,
925                    )
926                    .0,
927                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
928                        &self.wireEval2,
929                    )
930                    .0,
931                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
932                        &self.wireEval3,
933                    )
934                    .0,
935                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
936                        &self.wireEval4,
937                    )
938                    .0,
939                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
940                        &self.sigmaEval0,
941                    )
942                    .0,
943                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
944                        &self.sigmaEval1,
945                    )
946                    .0,
947                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
948                        &self.sigmaEval2,
949                    )
950                    .0,
951                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
952                        &self.sigmaEval3,
953                    )
954                    .0,
955                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
956                        &self.prodPermZetaOmegaEval,
957                    )
958                    .0,
959                ]
960                .concat()
961            }
962        }
963        #[automatically_derived]
964        impl alloy_sol_types::EventTopic for PlonkProof {
965            #[inline]
966            fn topic_preimage_length(rust: &Self::RustType) -> usize {
967                0usize
968                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
969                        &rust.wire0,
970                    )
971                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
972                        &rust.wire1,
973                    )
974                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
975                        &rust.wire2,
976                    )
977                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
978                        &rust.wire3,
979                    )
980                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
981                        &rust.wire4,
982                    )
983                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
984                        &rust.prodPerm,
985                    )
986                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
987                        &rust.split0,
988                    )
989                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
990                        &rust.split1,
991                    )
992                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
993                        &rust.split2,
994                    )
995                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
996                        &rust.split3,
997                    )
998                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
999                        &rust.split4,
1000                    )
1001                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1002                        &rust.zeta,
1003                    )
1004                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1005                        &rust.zetaOmega,
1006                    )
1007                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1008                        &rust.wireEval0,
1009                    )
1010                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1011                        &rust.wireEval1,
1012                    )
1013                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1014                        &rust.wireEval2,
1015                    )
1016                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1017                        &rust.wireEval3,
1018                    )
1019                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1020                        &rust.wireEval4,
1021                    )
1022                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1023                        &rust.sigmaEval0,
1024                    )
1025                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1026                        &rust.sigmaEval1,
1027                    )
1028                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1029                        &rust.sigmaEval2,
1030                    )
1031                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1032                        &rust.sigmaEval3,
1033                    )
1034                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1035                        &rust.prodPermZetaOmegaEval,
1036                    )
1037            }
1038            #[inline]
1039            fn encode_topic_preimage(
1040                rust: &Self::RustType,
1041                out: &mut alloy_sol_types::private::Vec<u8>,
1042            ) {
1043                out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
1044                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1045                    &rust.wire0,
1046                    out,
1047                );
1048                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1049                    &rust.wire1,
1050                    out,
1051                );
1052                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1053                    &rust.wire2,
1054                    out,
1055                );
1056                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1057                    &rust.wire3,
1058                    out,
1059                );
1060                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1061                    &rust.wire4,
1062                    out,
1063                );
1064                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1065                    &rust.prodPerm,
1066                    out,
1067                );
1068                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1069                    &rust.split0,
1070                    out,
1071                );
1072                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1073                    &rust.split1,
1074                    out,
1075                );
1076                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1077                    &rust.split2,
1078                    out,
1079                );
1080                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1081                    &rust.split3,
1082                    out,
1083                );
1084                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1085                    &rust.split4,
1086                    out,
1087                );
1088                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1089                    &rust.zeta, out,
1090                );
1091                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1092                    &rust.zetaOmega,
1093                    out,
1094                );
1095                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1096                    &rust.wireEval0,
1097                    out,
1098                );
1099                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1100                    &rust.wireEval1,
1101                    out,
1102                );
1103                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1104                    &rust.wireEval2,
1105                    out,
1106                );
1107                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1108                    &rust.wireEval3,
1109                    out,
1110                );
1111                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1112                    &rust.wireEval4,
1113                    out,
1114                );
1115                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1116                    &rust.sigmaEval0,
1117                    out,
1118                );
1119                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1120                    &rust.sigmaEval1,
1121                    out,
1122                );
1123                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1124                    &rust.sigmaEval2,
1125                    out,
1126                );
1127                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1128                    &rust.sigmaEval3,
1129                    out,
1130                );
1131                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1132                    &rust.prodPermZetaOmegaEval,
1133                    out,
1134                );
1135            }
1136            #[inline]
1137            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
1138                let mut out = alloy_sol_types::private::Vec::new();
1139                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
1140                alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
1141            }
1142        }
1143    };
1144    #[derive()]
1145    /**```solidity
1146    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; }
1147    ```*/
1148    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1149    #[derive(Clone)]
1150    pub struct VerifyingKey {
1151        #[allow(missing_docs)]
1152        pub domainSize: alloy::sol_types::private::primitives::aliases::U256,
1153        #[allow(missing_docs)]
1154        pub numInputs: alloy::sol_types::private::primitives::aliases::U256,
1155        #[allow(missing_docs)]
1156        pub sigma0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1157        #[allow(missing_docs)]
1158        pub sigma1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1159        #[allow(missing_docs)]
1160        pub sigma2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1161        #[allow(missing_docs)]
1162        pub sigma3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1163        #[allow(missing_docs)]
1164        pub sigma4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1165        #[allow(missing_docs)]
1166        pub q1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1167        #[allow(missing_docs)]
1168        pub q2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1169        #[allow(missing_docs)]
1170        pub q3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1171        #[allow(missing_docs)]
1172        pub q4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1173        #[allow(missing_docs)]
1174        pub qM12: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1175        #[allow(missing_docs)]
1176        pub qM34: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1177        #[allow(missing_docs)]
1178        pub qO: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1179        #[allow(missing_docs)]
1180        pub qC: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1181        #[allow(missing_docs)]
1182        pub qH1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1183        #[allow(missing_docs)]
1184        pub qH2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1185        #[allow(missing_docs)]
1186        pub qH3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1187        #[allow(missing_docs)]
1188        pub qH4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1189        #[allow(missing_docs)]
1190        pub qEcc: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1191        #[allow(missing_docs)]
1192        pub g2LSB: alloy::sol_types::private::FixedBytes<32>,
1193        #[allow(missing_docs)]
1194        pub g2MSB: alloy::sol_types::private::FixedBytes<32>,
1195    }
1196    #[allow(
1197        non_camel_case_types,
1198        non_snake_case,
1199        clippy::pub_underscore_fields,
1200        clippy::style
1201    )]
1202    const _: () = {
1203        use alloy::sol_types as alloy_sol_types;
1204        #[doc(hidden)]
1205        type UnderlyingSolTuple<'a> = (
1206            alloy::sol_types::sol_data::Uint<256>,
1207            alloy::sol_types::sol_data::Uint<256>,
1208            BN254::G1Point,
1209            BN254::G1Point,
1210            BN254::G1Point,
1211            BN254::G1Point,
1212            BN254::G1Point,
1213            BN254::G1Point,
1214            BN254::G1Point,
1215            BN254::G1Point,
1216            BN254::G1Point,
1217            BN254::G1Point,
1218            BN254::G1Point,
1219            BN254::G1Point,
1220            BN254::G1Point,
1221            BN254::G1Point,
1222            BN254::G1Point,
1223            BN254::G1Point,
1224            BN254::G1Point,
1225            BN254::G1Point,
1226            alloy::sol_types::sol_data::FixedBytes<32>,
1227            alloy::sol_types::sol_data::FixedBytes<32>,
1228        );
1229        #[doc(hidden)]
1230        type UnderlyingRustTuple<'a> = (
1231            alloy::sol_types::private::primitives::aliases::U256,
1232            alloy::sol_types::private::primitives::aliases::U256,
1233            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1234            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1235            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1236            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1237            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1238            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1239            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1240            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1241            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1242            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1243            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1244            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1245            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1246            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1247            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1248            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1249            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1250            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1251            alloy::sol_types::private::FixedBytes<32>,
1252            alloy::sol_types::private::FixedBytes<32>,
1253        );
1254        #[cfg(test)]
1255        #[allow(dead_code, unreachable_patterns)]
1256        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
1257            match _t {
1258                alloy_sol_types::private::AssertTypeEq::<
1259                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1260                >(_) => {},
1261            }
1262        }
1263        #[automatically_derived]
1264        #[doc(hidden)]
1265        impl ::core::convert::From<VerifyingKey> for UnderlyingRustTuple<'_> {
1266            fn from(value: VerifyingKey) -> Self {
1267                (
1268                    value.domainSize,
1269                    value.numInputs,
1270                    value.sigma0,
1271                    value.sigma1,
1272                    value.sigma2,
1273                    value.sigma3,
1274                    value.sigma4,
1275                    value.q1,
1276                    value.q2,
1277                    value.q3,
1278                    value.q4,
1279                    value.qM12,
1280                    value.qM34,
1281                    value.qO,
1282                    value.qC,
1283                    value.qH1,
1284                    value.qH2,
1285                    value.qH3,
1286                    value.qH4,
1287                    value.qEcc,
1288                    value.g2LSB,
1289                    value.g2MSB,
1290                )
1291            }
1292        }
1293        #[automatically_derived]
1294        #[doc(hidden)]
1295        impl ::core::convert::From<UnderlyingRustTuple<'_>> for VerifyingKey {
1296            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1297                Self {
1298                    domainSize: tuple.0,
1299                    numInputs: tuple.1,
1300                    sigma0: tuple.2,
1301                    sigma1: tuple.3,
1302                    sigma2: tuple.4,
1303                    sigma3: tuple.5,
1304                    sigma4: tuple.6,
1305                    q1: tuple.7,
1306                    q2: tuple.8,
1307                    q3: tuple.9,
1308                    q4: tuple.10,
1309                    qM12: tuple.11,
1310                    qM34: tuple.12,
1311                    qO: tuple.13,
1312                    qC: tuple.14,
1313                    qH1: tuple.15,
1314                    qH2: tuple.16,
1315                    qH3: tuple.17,
1316                    qH4: tuple.18,
1317                    qEcc: tuple.19,
1318                    g2LSB: tuple.20,
1319                    g2MSB: tuple.21,
1320                }
1321            }
1322        }
1323        #[automatically_derived]
1324        impl alloy_sol_types::SolValue for VerifyingKey {
1325            type SolType = Self;
1326        }
1327        #[automatically_derived]
1328        impl alloy_sol_types::private::SolTypeValue<Self> for VerifyingKey {
1329            #[inline]
1330            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
1331                (
1332                    <alloy::sol_types::sol_data::Uint<
1333                        256,
1334                    > as alloy_sol_types::SolType>::tokenize(&self.domainSize),
1335                    <alloy::sol_types::sol_data::Uint<
1336                        256,
1337                    > as alloy_sol_types::SolType>::tokenize(&self.numInputs),
1338                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma0),
1339                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma1),
1340                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma2),
1341                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma3),
1342                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma4),
1343                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q1),
1344                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q2),
1345                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q3),
1346                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q4),
1347                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM12),
1348                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM34),
1349                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qO),
1350                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qC),
1351                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH1),
1352                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH2),
1353                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH3),
1354                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH4),
1355                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qEcc),
1356                    <alloy::sol_types::sol_data::FixedBytes<
1357                        32,
1358                    > as alloy_sol_types::SolType>::tokenize(&self.g2LSB),
1359                    <alloy::sol_types::sol_data::FixedBytes<
1360                        32,
1361                    > as alloy_sol_types::SolType>::tokenize(&self.g2MSB),
1362                )
1363            }
1364            #[inline]
1365            fn stv_abi_encoded_size(&self) -> usize {
1366                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
1367                    return size;
1368                }
1369                let tuple =
1370                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
1371                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
1372            }
1373            #[inline]
1374            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1375                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
1376            }
1377            #[inline]
1378            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
1379                let tuple =
1380                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
1381                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
1382                    &tuple, out,
1383                )
1384            }
1385            #[inline]
1386            fn stv_abi_packed_encoded_size(&self) -> usize {
1387                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
1388                    return size;
1389                }
1390                let tuple =
1391                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
1392                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
1393                    &tuple,
1394                )
1395            }
1396        }
1397        #[automatically_derived]
1398        impl alloy_sol_types::SolType for VerifyingKey {
1399            type RustType = Self;
1400            type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
1401            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
1402            const ENCODED_SIZE: Option<usize> =
1403                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
1404            const PACKED_ENCODED_SIZE: Option<usize> =
1405                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1406            #[inline]
1407            fn valid_token(token: &Self::Token<'_>) -> bool {
1408                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
1409            }
1410            #[inline]
1411            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1412                let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
1413                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
1414            }
1415        }
1416        #[automatically_derived]
1417        impl alloy_sol_types::SolStruct for VerifyingKey {
1418            const NAME: &'static str = "VerifyingKey";
1419            #[inline]
1420            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
1421                alloy_sol_types::private::Cow::Borrowed(
1422                    "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)",
1423                )
1424            }
1425            #[inline]
1426            fn eip712_components(
1427            ) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
1428            {
1429                let mut components = alloy_sol_types::private::Vec::with_capacity(18);
1430                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1431                components
1432                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1433                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1434                components
1435                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1436                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1437                components
1438                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1439                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1440                components
1441                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1442                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1443                components
1444                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1445                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1446                components
1447                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1448                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1449                components
1450                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1451                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1452                components
1453                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1454                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1455                components
1456                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1457                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1458                components
1459                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1460                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1461                components
1462                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1463                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1464                components
1465                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1466                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1467                components
1468                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1469                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1470                components
1471                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1472                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1473                components
1474                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1475                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1476                components
1477                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1478                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1479                components
1480                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1481                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1482                components
1483                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1484                components
1485            }
1486            #[inline]
1487            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1488                [
1489                    <alloy::sol_types::sol_data::Uint<
1490                        256,
1491                    > as alloy_sol_types::SolType>::eip712_data_word(&self.domainSize)
1492                        .0,
1493                    <alloy::sol_types::sol_data::Uint<
1494                        256,
1495                    > as alloy_sol_types::SolType>::eip712_data_word(&self.numInputs)
1496                        .0,
1497                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1498                            &self.sigma0,
1499                        )
1500                        .0,
1501                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1502                            &self.sigma1,
1503                        )
1504                        .0,
1505                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1506                            &self.sigma2,
1507                        )
1508                        .0,
1509                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1510                            &self.sigma3,
1511                        )
1512                        .0,
1513                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1514                            &self.sigma4,
1515                        )
1516                        .0,
1517                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1518                            &self.q1,
1519                        )
1520                        .0,
1521                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1522                            &self.q2,
1523                        )
1524                        .0,
1525                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1526                            &self.q3,
1527                        )
1528                        .0,
1529                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1530                            &self.q4,
1531                        )
1532                        .0,
1533                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1534                            &self.qM12,
1535                        )
1536                        .0,
1537                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1538                            &self.qM34,
1539                        )
1540                        .0,
1541                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1542                            &self.qO,
1543                        )
1544                        .0,
1545                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1546                            &self.qC,
1547                        )
1548                        .0,
1549                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1550                            &self.qH1,
1551                        )
1552                        .0,
1553                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1554                            &self.qH2,
1555                        )
1556                        .0,
1557                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1558                            &self.qH3,
1559                        )
1560                        .0,
1561                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1562                            &self.qH4,
1563                        )
1564                        .0,
1565                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1566                            &self.qEcc,
1567                        )
1568                        .0,
1569                    <alloy::sol_types::sol_data::FixedBytes<
1570                        32,
1571                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2LSB)
1572                        .0,
1573                    <alloy::sol_types::sol_data::FixedBytes<
1574                        32,
1575                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2MSB)
1576                        .0,
1577                ]
1578                    .concat()
1579            }
1580        }
1581        #[automatically_derived]
1582        impl alloy_sol_types::EventTopic for VerifyingKey {
1583            #[inline]
1584            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1585                0usize
1586                    + <alloy::sol_types::sol_data::Uint<
1587                        256,
1588                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1589                        &rust.domainSize,
1590                    )
1591                    + <alloy::sol_types::sol_data::Uint<
1592                        256,
1593                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1594                        &rust.numInputs,
1595                    )
1596                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1597                        &rust.sigma0,
1598                    )
1599                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1600                        &rust.sigma1,
1601                    )
1602                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1603                        &rust.sigma2,
1604                    )
1605                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1606                        &rust.sigma3,
1607                    )
1608                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1609                        &rust.sigma4,
1610                    )
1611                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1612                        &rust.q1,
1613                    )
1614                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1615                        &rust.q2,
1616                    )
1617                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1618                        &rust.q3,
1619                    )
1620                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1621                        &rust.q4,
1622                    )
1623                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1624                        &rust.qM12,
1625                    )
1626                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1627                        &rust.qM34,
1628                    )
1629                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1630                        &rust.qO,
1631                    )
1632                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1633                        &rust.qC,
1634                    )
1635                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1636                        &rust.qH1,
1637                    )
1638                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1639                        &rust.qH2,
1640                    )
1641                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1642                        &rust.qH3,
1643                    )
1644                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1645                        &rust.qH4,
1646                    )
1647                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1648                        &rust.qEcc,
1649                    )
1650                    + <alloy::sol_types::sol_data::FixedBytes<
1651                        32,
1652                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2LSB)
1653                    + <alloy::sol_types::sol_data::FixedBytes<
1654                        32,
1655                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2MSB)
1656            }
1657            #[inline]
1658            fn encode_topic_preimage(
1659                rust: &Self::RustType,
1660                out: &mut alloy_sol_types::private::Vec<u8>,
1661            ) {
1662                out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
1663                <alloy::sol_types::sol_data::Uint<
1664                    256,
1665                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1666                    &rust.domainSize,
1667                    out,
1668                );
1669                <alloy::sol_types::sol_data::Uint<
1670                    256,
1671                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1672                    &rust.numInputs,
1673                    out,
1674                );
1675                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1676                    &rust.sigma0,
1677                    out,
1678                );
1679                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1680                    &rust.sigma1,
1681                    out,
1682                );
1683                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1684                    &rust.sigma2,
1685                    out,
1686                );
1687                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1688                    &rust.sigma3,
1689                    out,
1690                );
1691                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1692                    &rust.sigma4,
1693                    out,
1694                );
1695                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1696                    &rust.q1, out,
1697                );
1698                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1699                    &rust.q2, out,
1700                );
1701                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1702                    &rust.q3, out,
1703                );
1704                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1705                    &rust.q4, out,
1706                );
1707                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1708                    &rust.qM12, out,
1709                );
1710                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1711                    &rust.qM34, out,
1712                );
1713                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1714                    &rust.qO, out,
1715                );
1716                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1717                    &rust.qC, out,
1718                );
1719                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1720                    &rust.qH1, out,
1721                );
1722                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1723                    &rust.qH2, out,
1724                );
1725                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1726                    &rust.qH3, out,
1727                );
1728                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1729                    &rust.qH4, out,
1730                );
1731                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1732                    &rust.qEcc, out,
1733                );
1734                <alloy::sol_types::sol_data::FixedBytes<
1735                    32,
1736                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1737                    &rust.g2LSB,
1738                    out,
1739                );
1740                <alloy::sol_types::sol_data::FixedBytes<
1741                    32,
1742                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1743                    &rust.g2MSB,
1744                    out,
1745                );
1746            }
1747            #[inline]
1748            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
1749                let mut out = alloy_sol_types::private::Vec::new();
1750                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
1751                alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
1752            }
1753        }
1754    };
1755    use alloy::contract as alloy_contract;
1756    /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
1757
1758    See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
1759    #[inline]
1760    pub const fn new<
1761        T: alloy_contract::private::Transport + ::core::clone::Clone,
1762        P: alloy_contract::private::Provider<T, N>,
1763        N: alloy_contract::private::Network,
1764    >(
1765        address: alloy_sol_types::private::Address,
1766        provider: P,
1767    ) -> IPlonkVerifierInstance<T, P, N> {
1768        IPlonkVerifierInstance::<T, P, N>::new(address, provider)
1769    }
1770    /**A [`IPlonkVerifier`](self) instance.
1771
1772    Contains type-safe methods for interacting with an on-chain instance of the
1773    [`IPlonkVerifier`](self) contract located at a given `address`, using a given
1774    provider `P`.
1775
1776    If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
1777    documentation on how to provide it), the `deploy` and `deploy_builder` methods can
1778    be used to deploy a new instance of the contract.
1779
1780    See the [module-level documentation](self) for all the available methods.*/
1781    #[derive(Clone)]
1782    pub struct IPlonkVerifierInstance<T, P, N = alloy_contract::private::Ethereum> {
1783        address: alloy_sol_types::private::Address,
1784        provider: P,
1785        _network_transport: ::core::marker::PhantomData<(N, T)>,
1786    }
1787    #[automatically_derived]
1788    impl<T, P, N> ::core::fmt::Debug for IPlonkVerifierInstance<T, P, N> {
1789        #[inline]
1790        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
1791            f.debug_tuple("IPlonkVerifierInstance")
1792                .field(&self.address)
1793                .finish()
1794        }
1795    }
1796    /// Instantiation and getters/setters.
1797    #[automatically_derived]
1798    impl<
1799            T: alloy_contract::private::Transport + ::core::clone::Clone,
1800            P: alloy_contract::private::Provider<T, N>,
1801            N: alloy_contract::private::Network,
1802        > IPlonkVerifierInstance<T, P, N>
1803    {
1804        /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
1805
1806        See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
1807        #[inline]
1808        pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self {
1809            Self {
1810                address,
1811                provider,
1812                _network_transport: ::core::marker::PhantomData,
1813            }
1814        }
1815        /// Returns a reference to the address.
1816        #[inline]
1817        pub const fn address(&self) -> &alloy_sol_types::private::Address {
1818            &self.address
1819        }
1820        /// Sets the address.
1821        #[inline]
1822        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
1823            self.address = address;
1824        }
1825        /// Sets the address and returns `self`.
1826        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
1827            self.set_address(address);
1828            self
1829        }
1830        /// Returns a reference to the provider.
1831        #[inline]
1832        pub const fn provider(&self) -> &P {
1833            &self.provider
1834        }
1835    }
1836    impl<T, P: ::core::clone::Clone, N> IPlonkVerifierInstance<T, &P, N> {
1837        /// Clones the provider and returns a new instance with the cloned provider.
1838        #[inline]
1839        pub fn with_cloned_provider(self) -> IPlonkVerifierInstance<T, P, N> {
1840            IPlonkVerifierInstance {
1841                address: self.address,
1842                provider: ::core::clone::Clone::clone(&self.provider),
1843                _network_transport: ::core::marker::PhantomData,
1844            }
1845        }
1846    }
1847    /// Function calls.
1848    #[automatically_derived]
1849    impl<
1850            T: alloy_contract::private::Transport + ::core::clone::Clone,
1851            P: alloy_contract::private::Provider<T, N>,
1852            N: alloy_contract::private::Network,
1853        > IPlonkVerifierInstance<T, P, N>
1854    {
1855        /// Creates a new call builder using this contract instance's provider and address.
1856        ///
1857        /// Note that the call can be any function call, not just those defined in this
1858        /// contract. Prefer using the other methods for building type-safe contract calls.
1859        pub fn call_builder<C: alloy_sol_types::SolCall>(
1860            &self,
1861            call: &C,
1862        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
1863            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
1864        }
1865    }
1866    /// Event filters.
1867    #[automatically_derived]
1868    impl<
1869            T: alloy_contract::private::Transport + ::core::clone::Clone,
1870            P: alloy_contract::private::Provider<T, N>,
1871            N: alloy_contract::private::Network,
1872        > IPlonkVerifierInstance<T, P, N>
1873    {
1874        /// Creates a new event filter using this contract instance's provider and address.
1875        ///
1876        /// Note that the type can be any event, not just those defined in this contract.
1877        /// Prefer using the other methods for building type-safe event filters.
1878        pub fn event_filter<E: alloy_sol_types::SolEvent>(
1879            &self,
1880        ) -> alloy_contract::Event<T, &P, E, N> {
1881            alloy_contract::Event::new_sol(&self.provider, &self.address)
1882        }
1883    }
1884}
1885///Module containing a contract's types and functions.
1886/**
1887
1888```solidity
1889library LightClient {
1890    struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
1891    struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
1892}
1893```*/
1894#[allow(
1895    non_camel_case_types,
1896    non_snake_case,
1897    clippy::pub_underscore_fields,
1898    clippy::style,
1899    clippy::empty_structs_with_brackets
1900)]
1901pub mod LightClient {
1902    use alloy::sol_types as alloy_sol_types;
1903
1904    use super::*;
1905    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1906    /**```solidity
1907    struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
1908    ```*/
1909    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1910    #[derive(Clone)]
1911    pub struct LightClientState {
1912        #[allow(missing_docs)]
1913        pub viewNum: u64,
1914        #[allow(missing_docs)]
1915        pub blockHeight: u64,
1916        #[allow(missing_docs)]
1917        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
1918    }
1919    #[allow(
1920        non_camel_case_types,
1921        non_snake_case,
1922        clippy::pub_underscore_fields,
1923        clippy::style
1924    )]
1925    const _: () = {
1926        use alloy::sol_types as alloy_sol_types;
1927        #[doc(hidden)]
1928        type UnderlyingSolTuple<'a> = (
1929            alloy::sol_types::sol_data::Uint<64>,
1930            alloy::sol_types::sol_data::Uint<64>,
1931            BN254::ScalarField,
1932        );
1933        #[doc(hidden)]
1934        type UnderlyingRustTuple<'a> = (
1935            u64,
1936            u64,
1937            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
1938        );
1939        #[cfg(test)]
1940        #[allow(dead_code, unreachable_patterns)]
1941        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
1942            match _t {
1943                alloy_sol_types::private::AssertTypeEq::<
1944                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1945                >(_) => {},
1946            }
1947        }
1948        #[automatically_derived]
1949        #[doc(hidden)]
1950        impl ::core::convert::From<LightClientState> for UnderlyingRustTuple<'_> {
1951            fn from(value: LightClientState) -> Self {
1952                (value.viewNum, value.blockHeight, value.blockCommRoot)
1953            }
1954        }
1955        #[automatically_derived]
1956        #[doc(hidden)]
1957        impl ::core::convert::From<UnderlyingRustTuple<'_>> for LightClientState {
1958            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1959                Self {
1960                    viewNum: tuple.0,
1961                    blockHeight: tuple.1,
1962                    blockCommRoot: tuple.2,
1963                }
1964            }
1965        }
1966        #[automatically_derived]
1967        impl alloy_sol_types::SolValue for LightClientState {
1968            type SolType = Self;
1969        }
1970        #[automatically_derived]
1971        impl alloy_sol_types::private::SolTypeValue<Self> for LightClientState {
1972            #[inline]
1973            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
1974                (
1975                    <alloy::sol_types::sol_data::Uint<64> as alloy_sol_types::SolType>::tokenize(
1976                        &self.viewNum,
1977                    ),
1978                    <alloy::sol_types::sol_data::Uint<64> as alloy_sol_types::SolType>::tokenize(
1979                        &self.blockHeight,
1980                    ),
1981                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.blockCommRoot),
1982                )
1983            }
1984            #[inline]
1985            fn stv_abi_encoded_size(&self) -> usize {
1986                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
1987                    return size;
1988                }
1989                let tuple =
1990                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
1991                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
1992            }
1993            #[inline]
1994            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1995                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
1996            }
1997            #[inline]
1998            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
1999                let tuple =
2000                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
2001                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
2002                    &tuple, out,
2003                )
2004            }
2005            #[inline]
2006            fn stv_abi_packed_encoded_size(&self) -> usize {
2007                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2008                    return size;
2009                }
2010                let tuple =
2011                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
2012                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
2013                    &tuple,
2014                )
2015            }
2016        }
2017        #[automatically_derived]
2018        impl alloy_sol_types::SolType for LightClientState {
2019            type RustType = Self;
2020            type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
2021            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2022            const ENCODED_SIZE: Option<usize> =
2023                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
2024            const PACKED_ENCODED_SIZE: Option<usize> =
2025                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2026            #[inline]
2027            fn valid_token(token: &Self::Token<'_>) -> bool {
2028                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2029            }
2030            #[inline]
2031            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2032                let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
2033                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2034            }
2035        }
2036        #[automatically_derived]
2037        impl alloy_sol_types::SolStruct for LightClientState {
2038            const NAME: &'static str = "LightClientState";
2039            #[inline]
2040            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2041                alloy_sol_types::private::Cow::Borrowed(
2042                    "LightClientState(uint64 viewNum,uint64 blockHeight,uint256 blockCommRoot)",
2043                )
2044            }
2045            #[inline]
2046            fn eip712_components(
2047            ) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
2048            {
2049                alloy_sol_types::private::Vec::new()
2050            }
2051            #[inline]
2052            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2053                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2054            }
2055            #[inline]
2056            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2057                [
2058                    <alloy::sol_types::sol_data::Uint<
2059                        64,
2060                    > as alloy_sol_types::SolType>::eip712_data_word(&self.viewNum)
2061                        .0,
2062                    <alloy::sol_types::sol_data::Uint<
2063                        64,
2064                    > as alloy_sol_types::SolType>::eip712_data_word(&self.blockHeight)
2065                        .0,
2066                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2067                            &self.blockCommRoot,
2068                        )
2069                        .0,
2070                ]
2071                    .concat()
2072            }
2073        }
2074        #[automatically_derived]
2075        impl alloy_sol_types::EventTopic for LightClientState {
2076            #[inline]
2077            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2078                0usize
2079                    + <alloy::sol_types::sol_data::Uint<
2080                        64,
2081                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2082                        &rust.viewNum,
2083                    )
2084                    + <alloy::sol_types::sol_data::Uint<
2085                        64,
2086                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2087                        &rust.blockHeight,
2088                    )
2089                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2090                        &rust.blockCommRoot,
2091                    )
2092            }
2093            #[inline]
2094            fn encode_topic_preimage(
2095                rust: &Self::RustType,
2096                out: &mut alloy_sol_types::private::Vec<u8>,
2097            ) {
2098                out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
2099                <alloy::sol_types::sol_data::Uint<
2100                    64,
2101                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2102                    &rust.viewNum,
2103                    out,
2104                );
2105                <alloy::sol_types::sol_data::Uint<
2106                    64,
2107                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2108                    &rust.blockHeight,
2109                    out,
2110                );
2111                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2112                    &rust.blockCommRoot,
2113                    out,
2114                );
2115            }
2116            #[inline]
2117            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
2118                let mut out = alloy_sol_types::private::Vec::new();
2119                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
2120                alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
2121            }
2122        }
2123    };
2124    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2125    /**```solidity
2126    struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
2127    ```*/
2128    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2129    #[derive(Clone)]
2130    pub struct StakeTableState {
2131        #[allow(missing_docs)]
2132        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
2133        #[allow(missing_docs)]
2134        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2135        #[allow(missing_docs)]
2136        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2137        #[allow(missing_docs)]
2138        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2139    }
2140    #[allow(
2141        non_camel_case_types,
2142        non_snake_case,
2143        clippy::pub_underscore_fields,
2144        clippy::style
2145    )]
2146    const _: () = {
2147        use alloy::sol_types as alloy_sol_types;
2148        #[doc(hidden)]
2149        type UnderlyingSolTuple<'a> = (
2150            alloy::sol_types::sol_data::Uint<256>,
2151            BN254::ScalarField,
2152            BN254::ScalarField,
2153            BN254::ScalarField,
2154        );
2155        #[doc(hidden)]
2156        type UnderlyingRustTuple<'a> = (
2157            alloy::sol_types::private::primitives::aliases::U256,
2158            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2159            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2160            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2161        );
2162        #[cfg(test)]
2163        #[allow(dead_code, unreachable_patterns)]
2164        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
2165            match _t {
2166                alloy_sol_types::private::AssertTypeEq::<
2167                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2168                >(_) => {},
2169            }
2170        }
2171        #[automatically_derived]
2172        #[doc(hidden)]
2173        impl ::core::convert::From<StakeTableState> for UnderlyingRustTuple<'_> {
2174            fn from(value: StakeTableState) -> Self {
2175                (
2176                    value.threshold,
2177                    value.blsKeyComm,
2178                    value.schnorrKeyComm,
2179                    value.amountComm,
2180                )
2181            }
2182        }
2183        #[automatically_derived]
2184        #[doc(hidden)]
2185        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StakeTableState {
2186            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2187                Self {
2188                    threshold: tuple.0,
2189                    blsKeyComm: tuple.1,
2190                    schnorrKeyComm: tuple.2,
2191                    amountComm: tuple.3,
2192                }
2193            }
2194        }
2195        #[automatically_derived]
2196        impl alloy_sol_types::SolValue for StakeTableState {
2197            type SolType = Self;
2198        }
2199        #[automatically_derived]
2200        impl alloy_sol_types::private::SolTypeValue<Self> for StakeTableState {
2201            #[inline]
2202            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2203                (
2204                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
2205                        &self.threshold,
2206                    ),
2207                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.blsKeyComm),
2208                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2209                        &self.schnorrKeyComm,
2210                    ),
2211                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.amountComm),
2212                )
2213            }
2214            #[inline]
2215            fn stv_abi_encoded_size(&self) -> usize {
2216                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2217                    return size;
2218                }
2219                let tuple =
2220                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
2221                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2222            }
2223            #[inline]
2224            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2225                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2226            }
2227            #[inline]
2228            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
2229                let tuple =
2230                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
2231                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
2232                    &tuple, out,
2233                )
2234            }
2235            #[inline]
2236            fn stv_abi_packed_encoded_size(&self) -> usize {
2237                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2238                    return size;
2239                }
2240                let tuple =
2241                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
2242                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
2243                    &tuple,
2244                )
2245            }
2246        }
2247        #[automatically_derived]
2248        impl alloy_sol_types::SolType for StakeTableState {
2249            type RustType = Self;
2250            type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
2251            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2252            const ENCODED_SIZE: Option<usize> =
2253                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
2254            const PACKED_ENCODED_SIZE: Option<usize> =
2255                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2256            #[inline]
2257            fn valid_token(token: &Self::Token<'_>) -> bool {
2258                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2259            }
2260            #[inline]
2261            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2262                let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
2263                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2264            }
2265        }
2266        #[automatically_derived]
2267        impl alloy_sol_types::SolStruct for StakeTableState {
2268            const NAME: &'static str = "StakeTableState";
2269            #[inline]
2270            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2271                alloy_sol_types::private::Cow::Borrowed(
2272                    "StakeTableState(uint256 threshold,uint256 blsKeyComm,uint256 schnorrKeyComm,uint256 amountComm)",
2273                )
2274            }
2275            #[inline]
2276            fn eip712_components(
2277            ) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
2278            {
2279                alloy_sol_types::private::Vec::new()
2280            }
2281            #[inline]
2282            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2283                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2284            }
2285            #[inline]
2286            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2287                [
2288                    <alloy::sol_types::sol_data::Uint<
2289                        256,
2290                    > as alloy_sol_types::SolType>::eip712_data_word(&self.threshold)
2291                        .0,
2292                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2293                            &self.blsKeyComm,
2294                        )
2295                        .0,
2296                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2297                            &self.schnorrKeyComm,
2298                        )
2299                        .0,
2300                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2301                            &self.amountComm,
2302                        )
2303                        .0,
2304                ]
2305                    .concat()
2306            }
2307        }
2308        #[automatically_derived]
2309        impl alloy_sol_types::EventTopic for StakeTableState {
2310            #[inline]
2311            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2312                0usize
2313                    + <alloy::sol_types::sol_data::Uint<
2314                        256,
2315                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2316                        &rust.threshold,
2317                    )
2318                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2319                        &rust.blsKeyComm,
2320                    )
2321                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2322                        &rust.schnorrKeyComm,
2323                    )
2324                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2325                        &rust.amountComm,
2326                    )
2327            }
2328            #[inline]
2329            fn encode_topic_preimage(
2330                rust: &Self::RustType,
2331                out: &mut alloy_sol_types::private::Vec<u8>,
2332            ) {
2333                out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
2334                <alloy::sol_types::sol_data::Uint<
2335                    256,
2336                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2337                    &rust.threshold,
2338                    out,
2339                );
2340                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2341                    &rust.blsKeyComm,
2342                    out,
2343                );
2344                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2345                    &rust.schnorrKeyComm,
2346                    out,
2347                );
2348                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2349                    &rust.amountComm,
2350                    out,
2351                );
2352            }
2353            #[inline]
2354            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
2355                let mut out = alloy_sol_types::private::Vec::new();
2356                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
2357                alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
2358            }
2359        }
2360    };
2361    use alloy::contract as alloy_contract;
2362    /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
2363
2364    See the [wrapper's documentation](`LightClientInstance`) for more details.*/
2365    #[inline]
2366    pub const fn new<
2367        T: alloy_contract::private::Transport + ::core::clone::Clone,
2368        P: alloy_contract::private::Provider<T, N>,
2369        N: alloy_contract::private::Network,
2370    >(
2371        address: alloy_sol_types::private::Address,
2372        provider: P,
2373    ) -> LightClientInstance<T, P, N> {
2374        LightClientInstance::<T, P, N>::new(address, provider)
2375    }
2376    /**A [`LightClient`](self) instance.
2377
2378    Contains type-safe methods for interacting with an on-chain instance of the
2379    [`LightClient`](self) contract located at a given `address`, using a given
2380    provider `P`.
2381
2382    If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
2383    documentation on how to provide it), the `deploy` and `deploy_builder` methods can
2384    be used to deploy a new instance of the contract.
2385
2386    See the [module-level documentation](self) for all the available methods.*/
2387    #[derive(Clone)]
2388    pub struct LightClientInstance<T, P, N = alloy_contract::private::Ethereum> {
2389        address: alloy_sol_types::private::Address,
2390        provider: P,
2391        _network_transport: ::core::marker::PhantomData<(N, T)>,
2392    }
2393    #[automatically_derived]
2394    impl<T, P, N> ::core::fmt::Debug for LightClientInstance<T, P, N> {
2395        #[inline]
2396        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2397            f.debug_tuple("LightClientInstance")
2398                .field(&self.address)
2399                .finish()
2400        }
2401    }
2402    /// Instantiation and getters/setters.
2403    #[automatically_derived]
2404    impl<
2405            T: alloy_contract::private::Transport + ::core::clone::Clone,
2406            P: alloy_contract::private::Provider<T, N>,
2407            N: alloy_contract::private::Network,
2408        > LightClientInstance<T, P, N>
2409    {
2410        /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
2411
2412        See the [wrapper's documentation](`LightClientInstance`) for more details.*/
2413        #[inline]
2414        pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self {
2415            Self {
2416                address,
2417                provider,
2418                _network_transport: ::core::marker::PhantomData,
2419            }
2420        }
2421        /// Returns a reference to the address.
2422        #[inline]
2423        pub const fn address(&self) -> &alloy_sol_types::private::Address {
2424            &self.address
2425        }
2426        /// Sets the address.
2427        #[inline]
2428        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
2429            self.address = address;
2430        }
2431        /// Sets the address and returns `self`.
2432        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
2433            self.set_address(address);
2434            self
2435        }
2436        /// Returns a reference to the provider.
2437        #[inline]
2438        pub const fn provider(&self) -> &P {
2439            &self.provider
2440        }
2441    }
2442    impl<T, P: ::core::clone::Clone, N> LightClientInstance<T, &P, N> {
2443        /// Clones the provider and returns a new instance with the cloned provider.
2444        #[inline]
2445        pub fn with_cloned_provider(self) -> LightClientInstance<T, P, N> {
2446            LightClientInstance {
2447                address: self.address,
2448                provider: ::core::clone::Clone::clone(&self.provider),
2449                _network_transport: ::core::marker::PhantomData,
2450            }
2451        }
2452    }
2453    /// Function calls.
2454    #[automatically_derived]
2455    impl<
2456            T: alloy_contract::private::Transport + ::core::clone::Clone,
2457            P: alloy_contract::private::Provider<T, N>,
2458            N: alloy_contract::private::Network,
2459        > LightClientInstance<T, P, N>
2460    {
2461        /// Creates a new call builder using this contract instance's provider and address.
2462        ///
2463        /// Note that the call can be any function call, not just those defined in this
2464        /// contract. Prefer using the other methods for building type-safe contract calls.
2465        pub fn call_builder<C: alloy_sol_types::SolCall>(
2466            &self,
2467            call: &C,
2468        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
2469            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
2470        }
2471    }
2472    /// Event filters.
2473    #[automatically_derived]
2474    impl<
2475            T: alloy_contract::private::Transport + ::core::clone::Clone,
2476            P: alloy_contract::private::Provider<T, N>,
2477            N: alloy_contract::private::Network,
2478        > LightClientInstance<T, P, N>
2479    {
2480        /// Creates a new event filter using this contract instance's provider and address.
2481        ///
2482        /// Note that the type can be any event, not just those defined in this contract.
2483        /// Prefer using the other methods for building type-safe event filters.
2484        pub fn event_filter<E: alloy_sol_types::SolEvent>(
2485            &self,
2486        ) -> alloy_contract::Event<T, &P, E, N> {
2487            alloy_contract::Event::new_sol(&self.provider, &self.address)
2488        }
2489    }
2490}
2491/**
2492
2493Generated by the following Solidity interface...
2494```solidity
2495library BN254 {
2496    type BaseField is uint256;
2497    type ScalarField is uint256;
2498    struct G1Point {
2499        BaseField x;
2500        BaseField y;
2501    }
2502}
2503
2504library IPlonkVerifier {
2505    struct PlonkProof {
2506        BN254.G1Point wire0;
2507        BN254.G1Point wire1;
2508        BN254.G1Point wire2;
2509        BN254.G1Point wire3;
2510        BN254.G1Point wire4;
2511        BN254.G1Point prodPerm;
2512        BN254.G1Point split0;
2513        BN254.G1Point split1;
2514        BN254.G1Point split2;
2515        BN254.G1Point split3;
2516        BN254.G1Point split4;
2517        BN254.G1Point zeta;
2518        BN254.G1Point zetaOmega;
2519        BN254.ScalarField wireEval0;
2520        BN254.ScalarField wireEval1;
2521        BN254.ScalarField wireEval2;
2522        BN254.ScalarField wireEval3;
2523        BN254.ScalarField wireEval4;
2524        BN254.ScalarField sigmaEval0;
2525        BN254.ScalarField sigmaEval1;
2526        BN254.ScalarField sigmaEval2;
2527        BN254.ScalarField sigmaEval3;
2528        BN254.ScalarField prodPermZetaOmegaEval;
2529    }
2530    struct VerifyingKey {
2531        uint256 domainSize;
2532        uint256 numInputs;
2533        BN254.G1Point sigma0;
2534        BN254.G1Point sigma1;
2535        BN254.G1Point sigma2;
2536        BN254.G1Point sigma3;
2537        BN254.G1Point sigma4;
2538        BN254.G1Point q1;
2539        BN254.G1Point q2;
2540        BN254.G1Point q3;
2541        BN254.G1Point q4;
2542        BN254.G1Point qM12;
2543        BN254.G1Point qM34;
2544        BN254.G1Point qO;
2545        BN254.G1Point qC;
2546        BN254.G1Point qH1;
2547        BN254.G1Point qH2;
2548        BN254.G1Point qH3;
2549        BN254.G1Point qH4;
2550        BN254.G1Point qEcc;
2551        bytes32 g2LSB;
2552        bytes32 g2MSB;
2553    }
2554}
2555
2556library LightClient {
2557    struct LightClientState {
2558        uint64 viewNum;
2559        uint64 blockHeight;
2560        BN254.ScalarField blockCommRoot;
2561    }
2562    struct StakeTableState {
2563        uint256 threshold;
2564        BN254.ScalarField blsKeyComm;
2565        BN254.ScalarField schnorrKeyComm;
2566        BN254.ScalarField amountComm;
2567    }
2568}
2569
2570interface LightClientArbitrum {
2571    error AddressEmptyCode(address target);
2572    error ERC1967InvalidImplementation(address implementation);
2573    error ERC1967NonPayable();
2574    error FailedInnerCall();
2575    error InsufficientSnapshotHistory();
2576    error InvalidAddress();
2577    error InvalidArgs();
2578    error InvalidHotShotBlockForCommitmentCheck();
2579    error InvalidInitialization();
2580    error InvalidMaxStateHistory();
2581    error InvalidProof();
2582    error NoChangeRequired();
2583    error NotInitializing();
2584    error OutdatedState();
2585    error OwnableInvalidOwner(address owner);
2586    error OwnableUnauthorizedAccount(address account);
2587    error ProverNotPermissioned();
2588    error UUPSUnauthorizedCallContext();
2589    error UUPSUnsupportedProxiableUUID(bytes32 slot);
2590    error WrongStakeTableUsed();
2591
2592    event Initialized(uint64 version);
2593    event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
2594    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
2595    event PermissionedProverNotRequired();
2596    event PermissionedProverRequired(address permissionedProver);
2597    event Upgrade(address implementation);
2598    event Upgraded(address indexed implementation);
2599
2600    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
2601    function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
2602    function currentBlockNumber() external view returns (uint256);
2603    function disablePermissionedProverMode() external;
2604    function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
2605    function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
2606    function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
2607    function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
2608    function getStateHistoryCount() external view returns (uint256);
2609    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
2610    function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
2611    function isPermissionedProverEnabled() external view returns (bool);
2612    function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 blockThreshold) external view returns (bool);
2613    function newFinalizedState(LightClient.LightClientState memory newState, IPlonkVerifier.PlonkProof memory proof) external;
2614    function owner() external view returns (address);
2615    function permissionedProver() external view returns (address);
2616    function proxiableUUID() external view returns (bytes32);
2617    function renounceOwnership() external;
2618    function setPermissionedProver(address prover) external;
2619    function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
2620    function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
2621    function stateHistoryFirstIndex() external view returns (uint64);
2622    function stateHistoryRetentionPeriod() external view returns (uint32);
2623    function transferOwnership(address newOwner) external;
2624    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
2625}
2626```
2627
2628...which was generated by the following JSON ABI:
2629```json
2630[
2631  {
2632    "type": "function",
2633    "name": "UPGRADE_INTERFACE_VERSION",
2634    "inputs": [],
2635    "outputs": [
2636      {
2637        "name": "",
2638        "type": "string",
2639        "internalType": "string"
2640      }
2641    ],
2642    "stateMutability": "view"
2643  },
2644  {
2645    "type": "function",
2646    "name": "_getVk",
2647    "inputs": [],
2648    "outputs": [
2649      {
2650        "name": "vk",
2651        "type": "tuple",
2652        "internalType": "struct IPlonkVerifier.VerifyingKey",
2653        "components": [
2654          {
2655            "name": "domainSize",
2656            "type": "uint256",
2657            "internalType": "uint256"
2658          },
2659          {
2660            "name": "numInputs",
2661            "type": "uint256",
2662            "internalType": "uint256"
2663          },
2664          {
2665            "name": "sigma0",
2666            "type": "tuple",
2667            "internalType": "struct BN254.G1Point",
2668            "components": [
2669              {
2670                "name": "x",
2671                "type": "uint256",
2672                "internalType": "BN254.BaseField"
2673              },
2674              {
2675                "name": "y",
2676                "type": "uint256",
2677                "internalType": "BN254.BaseField"
2678              }
2679            ]
2680          },
2681          {
2682            "name": "sigma1",
2683            "type": "tuple",
2684            "internalType": "struct BN254.G1Point",
2685            "components": [
2686              {
2687                "name": "x",
2688                "type": "uint256",
2689                "internalType": "BN254.BaseField"
2690              },
2691              {
2692                "name": "y",
2693                "type": "uint256",
2694                "internalType": "BN254.BaseField"
2695              }
2696            ]
2697          },
2698          {
2699            "name": "sigma2",
2700            "type": "tuple",
2701            "internalType": "struct BN254.G1Point",
2702            "components": [
2703              {
2704                "name": "x",
2705                "type": "uint256",
2706                "internalType": "BN254.BaseField"
2707              },
2708              {
2709                "name": "y",
2710                "type": "uint256",
2711                "internalType": "BN254.BaseField"
2712              }
2713            ]
2714          },
2715          {
2716            "name": "sigma3",
2717            "type": "tuple",
2718            "internalType": "struct BN254.G1Point",
2719            "components": [
2720              {
2721                "name": "x",
2722                "type": "uint256",
2723                "internalType": "BN254.BaseField"
2724              },
2725              {
2726                "name": "y",
2727                "type": "uint256",
2728                "internalType": "BN254.BaseField"
2729              }
2730            ]
2731          },
2732          {
2733            "name": "sigma4",
2734            "type": "tuple",
2735            "internalType": "struct BN254.G1Point",
2736            "components": [
2737              {
2738                "name": "x",
2739                "type": "uint256",
2740                "internalType": "BN254.BaseField"
2741              },
2742              {
2743                "name": "y",
2744                "type": "uint256",
2745                "internalType": "BN254.BaseField"
2746              }
2747            ]
2748          },
2749          {
2750            "name": "q1",
2751            "type": "tuple",
2752            "internalType": "struct BN254.G1Point",
2753            "components": [
2754              {
2755                "name": "x",
2756                "type": "uint256",
2757                "internalType": "BN254.BaseField"
2758              },
2759              {
2760                "name": "y",
2761                "type": "uint256",
2762                "internalType": "BN254.BaseField"
2763              }
2764            ]
2765          },
2766          {
2767            "name": "q2",
2768            "type": "tuple",
2769            "internalType": "struct BN254.G1Point",
2770            "components": [
2771              {
2772                "name": "x",
2773                "type": "uint256",
2774                "internalType": "BN254.BaseField"
2775              },
2776              {
2777                "name": "y",
2778                "type": "uint256",
2779                "internalType": "BN254.BaseField"
2780              }
2781            ]
2782          },
2783          {
2784            "name": "q3",
2785            "type": "tuple",
2786            "internalType": "struct BN254.G1Point",
2787            "components": [
2788              {
2789                "name": "x",
2790                "type": "uint256",
2791                "internalType": "BN254.BaseField"
2792              },
2793              {
2794                "name": "y",
2795                "type": "uint256",
2796                "internalType": "BN254.BaseField"
2797              }
2798            ]
2799          },
2800          {
2801            "name": "q4",
2802            "type": "tuple",
2803            "internalType": "struct BN254.G1Point",
2804            "components": [
2805              {
2806                "name": "x",
2807                "type": "uint256",
2808                "internalType": "BN254.BaseField"
2809              },
2810              {
2811                "name": "y",
2812                "type": "uint256",
2813                "internalType": "BN254.BaseField"
2814              }
2815            ]
2816          },
2817          {
2818            "name": "qM12",
2819            "type": "tuple",
2820            "internalType": "struct BN254.G1Point",
2821            "components": [
2822              {
2823                "name": "x",
2824                "type": "uint256",
2825                "internalType": "BN254.BaseField"
2826              },
2827              {
2828                "name": "y",
2829                "type": "uint256",
2830                "internalType": "BN254.BaseField"
2831              }
2832            ]
2833          },
2834          {
2835            "name": "qM34",
2836            "type": "tuple",
2837            "internalType": "struct BN254.G1Point",
2838            "components": [
2839              {
2840                "name": "x",
2841                "type": "uint256",
2842                "internalType": "BN254.BaseField"
2843              },
2844              {
2845                "name": "y",
2846                "type": "uint256",
2847                "internalType": "BN254.BaseField"
2848              }
2849            ]
2850          },
2851          {
2852            "name": "qO",
2853            "type": "tuple",
2854            "internalType": "struct BN254.G1Point",
2855            "components": [
2856              {
2857                "name": "x",
2858                "type": "uint256",
2859                "internalType": "BN254.BaseField"
2860              },
2861              {
2862                "name": "y",
2863                "type": "uint256",
2864                "internalType": "BN254.BaseField"
2865              }
2866            ]
2867          },
2868          {
2869            "name": "qC",
2870            "type": "tuple",
2871            "internalType": "struct BN254.G1Point",
2872            "components": [
2873              {
2874                "name": "x",
2875                "type": "uint256",
2876                "internalType": "BN254.BaseField"
2877              },
2878              {
2879                "name": "y",
2880                "type": "uint256",
2881                "internalType": "BN254.BaseField"
2882              }
2883            ]
2884          },
2885          {
2886            "name": "qH1",
2887            "type": "tuple",
2888            "internalType": "struct BN254.G1Point",
2889            "components": [
2890              {
2891                "name": "x",
2892                "type": "uint256",
2893                "internalType": "BN254.BaseField"
2894              },
2895              {
2896                "name": "y",
2897                "type": "uint256",
2898                "internalType": "BN254.BaseField"
2899              }
2900            ]
2901          },
2902          {
2903            "name": "qH2",
2904            "type": "tuple",
2905            "internalType": "struct BN254.G1Point",
2906            "components": [
2907              {
2908                "name": "x",
2909                "type": "uint256",
2910                "internalType": "BN254.BaseField"
2911              },
2912              {
2913                "name": "y",
2914                "type": "uint256",
2915                "internalType": "BN254.BaseField"
2916              }
2917            ]
2918          },
2919          {
2920            "name": "qH3",
2921            "type": "tuple",
2922            "internalType": "struct BN254.G1Point",
2923            "components": [
2924              {
2925                "name": "x",
2926                "type": "uint256",
2927                "internalType": "BN254.BaseField"
2928              },
2929              {
2930                "name": "y",
2931                "type": "uint256",
2932                "internalType": "BN254.BaseField"
2933              }
2934            ]
2935          },
2936          {
2937            "name": "qH4",
2938            "type": "tuple",
2939            "internalType": "struct BN254.G1Point",
2940            "components": [
2941              {
2942                "name": "x",
2943                "type": "uint256",
2944                "internalType": "BN254.BaseField"
2945              },
2946              {
2947                "name": "y",
2948                "type": "uint256",
2949                "internalType": "BN254.BaseField"
2950              }
2951            ]
2952          },
2953          {
2954            "name": "qEcc",
2955            "type": "tuple",
2956            "internalType": "struct BN254.G1Point",
2957            "components": [
2958              {
2959                "name": "x",
2960                "type": "uint256",
2961                "internalType": "BN254.BaseField"
2962              },
2963              {
2964                "name": "y",
2965                "type": "uint256",
2966                "internalType": "BN254.BaseField"
2967              }
2968            ]
2969          },
2970          {
2971            "name": "g2LSB",
2972            "type": "bytes32",
2973            "internalType": "bytes32"
2974          },
2975          {
2976            "name": "g2MSB",
2977            "type": "bytes32",
2978            "internalType": "bytes32"
2979          }
2980        ]
2981      }
2982    ],
2983    "stateMutability": "pure"
2984  },
2985  {
2986    "type": "function",
2987    "name": "currentBlockNumber",
2988    "inputs": [],
2989    "outputs": [
2990      {
2991        "name": "",
2992        "type": "uint256",
2993        "internalType": "uint256"
2994      }
2995    ],
2996    "stateMutability": "view"
2997  },
2998  {
2999    "type": "function",
3000    "name": "disablePermissionedProverMode",
3001    "inputs": [],
3002    "outputs": [],
3003    "stateMutability": "nonpayable"
3004  },
3005  {
3006    "type": "function",
3007    "name": "finalizedState",
3008    "inputs": [],
3009    "outputs": [
3010      {
3011        "name": "viewNum",
3012        "type": "uint64",
3013        "internalType": "uint64"
3014      },
3015      {
3016        "name": "blockHeight",
3017        "type": "uint64",
3018        "internalType": "uint64"
3019      },
3020      {
3021        "name": "blockCommRoot",
3022        "type": "uint256",
3023        "internalType": "BN254.ScalarField"
3024      }
3025    ],
3026    "stateMutability": "view"
3027  },
3028  {
3029    "type": "function",
3030    "name": "genesisStakeTableState",
3031    "inputs": [],
3032    "outputs": [
3033      {
3034        "name": "threshold",
3035        "type": "uint256",
3036        "internalType": "uint256"
3037      },
3038      {
3039        "name": "blsKeyComm",
3040        "type": "uint256",
3041        "internalType": "BN254.ScalarField"
3042      },
3043      {
3044        "name": "schnorrKeyComm",
3045        "type": "uint256",
3046        "internalType": "BN254.ScalarField"
3047      },
3048      {
3049        "name": "amountComm",
3050        "type": "uint256",
3051        "internalType": "BN254.ScalarField"
3052      }
3053    ],
3054    "stateMutability": "view"
3055  },
3056  {
3057    "type": "function",
3058    "name": "genesisState",
3059    "inputs": [],
3060    "outputs": [
3061      {
3062        "name": "viewNum",
3063        "type": "uint64",
3064        "internalType": "uint64"
3065      },
3066      {
3067        "name": "blockHeight",
3068        "type": "uint64",
3069        "internalType": "uint64"
3070      },
3071      {
3072        "name": "blockCommRoot",
3073        "type": "uint256",
3074        "internalType": "BN254.ScalarField"
3075      }
3076    ],
3077    "stateMutability": "view"
3078  },
3079  {
3080    "type": "function",
3081    "name": "getHotShotCommitment",
3082    "inputs": [
3083      {
3084        "name": "hotShotBlockHeight",
3085        "type": "uint256",
3086        "internalType": "uint256"
3087      }
3088    ],
3089    "outputs": [
3090      {
3091        "name": "hotShotBlockCommRoot",
3092        "type": "uint256",
3093        "internalType": "BN254.ScalarField"
3094      },
3095      {
3096        "name": "hotshotBlockHeight",
3097        "type": "uint64",
3098        "internalType": "uint64"
3099      }
3100    ],
3101    "stateMutability": "view"
3102  },
3103  {
3104    "type": "function",
3105    "name": "getStateHistoryCount",
3106    "inputs": [],
3107    "outputs": [
3108      {
3109        "name": "",
3110        "type": "uint256",
3111        "internalType": "uint256"
3112      }
3113    ],
3114    "stateMutability": "view"
3115  },
3116  {
3117    "type": "function",
3118    "name": "getVersion",
3119    "inputs": [],
3120    "outputs": [
3121      {
3122        "name": "majorVersion",
3123        "type": "uint8",
3124        "internalType": "uint8"
3125      },
3126      {
3127        "name": "minorVersion",
3128        "type": "uint8",
3129        "internalType": "uint8"
3130      },
3131      {
3132        "name": "patchVersion",
3133        "type": "uint8",
3134        "internalType": "uint8"
3135      }
3136    ],
3137    "stateMutability": "pure"
3138  },
3139  {
3140    "type": "function",
3141    "name": "initialize",
3142    "inputs": [
3143      {
3144        "name": "_genesis",
3145        "type": "tuple",
3146        "internalType": "struct LightClient.LightClientState",
3147        "components": [
3148          {
3149            "name": "viewNum",
3150            "type": "uint64",
3151            "internalType": "uint64"
3152          },
3153          {
3154            "name": "blockHeight",
3155            "type": "uint64",
3156            "internalType": "uint64"
3157          },
3158          {
3159            "name": "blockCommRoot",
3160            "type": "uint256",
3161            "internalType": "BN254.ScalarField"
3162          }
3163        ]
3164      },
3165      {
3166        "name": "_genesisStakeTableState",
3167        "type": "tuple",
3168        "internalType": "struct LightClient.StakeTableState",
3169        "components": [
3170          {
3171            "name": "threshold",
3172            "type": "uint256",
3173            "internalType": "uint256"
3174          },
3175          {
3176            "name": "blsKeyComm",
3177            "type": "uint256",
3178            "internalType": "BN254.ScalarField"
3179          },
3180          {
3181            "name": "schnorrKeyComm",
3182            "type": "uint256",
3183            "internalType": "BN254.ScalarField"
3184          },
3185          {
3186            "name": "amountComm",
3187            "type": "uint256",
3188            "internalType": "BN254.ScalarField"
3189          }
3190        ]
3191      },
3192      {
3193        "name": "_stateHistoryRetentionPeriod",
3194        "type": "uint32",
3195        "internalType": "uint32"
3196      },
3197      {
3198        "name": "owner",
3199        "type": "address",
3200        "internalType": "address"
3201      }
3202    ],
3203    "outputs": [],
3204    "stateMutability": "nonpayable"
3205  },
3206  {
3207    "type": "function",
3208    "name": "isPermissionedProverEnabled",
3209    "inputs": [],
3210    "outputs": [
3211      {
3212        "name": "",
3213        "type": "bool",
3214        "internalType": "bool"
3215      }
3216    ],
3217    "stateMutability": "view"
3218  },
3219  {
3220    "type": "function",
3221    "name": "lagOverEscapeHatchThreshold",
3222    "inputs": [
3223      {
3224        "name": "blockNumber",
3225        "type": "uint256",
3226        "internalType": "uint256"
3227      },
3228      {
3229        "name": "blockThreshold",
3230        "type": "uint256",
3231        "internalType": "uint256"
3232      }
3233    ],
3234    "outputs": [
3235      {
3236        "name": "",
3237        "type": "bool",
3238        "internalType": "bool"
3239      }
3240    ],
3241    "stateMutability": "view"
3242  },
3243  {
3244    "type": "function",
3245    "name": "newFinalizedState",
3246    "inputs": [
3247      {
3248        "name": "newState",
3249        "type": "tuple",
3250        "internalType": "struct LightClient.LightClientState",
3251        "components": [
3252          {
3253            "name": "viewNum",
3254            "type": "uint64",
3255            "internalType": "uint64"
3256          },
3257          {
3258            "name": "blockHeight",
3259            "type": "uint64",
3260            "internalType": "uint64"
3261          },
3262          {
3263            "name": "blockCommRoot",
3264            "type": "uint256",
3265            "internalType": "BN254.ScalarField"
3266          }
3267        ]
3268      },
3269      {
3270        "name": "proof",
3271        "type": "tuple",
3272        "internalType": "struct IPlonkVerifier.PlonkProof",
3273        "components": [
3274          {
3275            "name": "wire0",
3276            "type": "tuple",
3277            "internalType": "struct BN254.G1Point",
3278            "components": [
3279              {
3280                "name": "x",
3281                "type": "uint256",
3282                "internalType": "BN254.BaseField"
3283              },
3284              {
3285                "name": "y",
3286                "type": "uint256",
3287                "internalType": "BN254.BaseField"
3288              }
3289            ]
3290          },
3291          {
3292            "name": "wire1",
3293            "type": "tuple",
3294            "internalType": "struct BN254.G1Point",
3295            "components": [
3296              {
3297                "name": "x",
3298                "type": "uint256",
3299                "internalType": "BN254.BaseField"
3300              },
3301              {
3302                "name": "y",
3303                "type": "uint256",
3304                "internalType": "BN254.BaseField"
3305              }
3306            ]
3307          },
3308          {
3309            "name": "wire2",
3310            "type": "tuple",
3311            "internalType": "struct BN254.G1Point",
3312            "components": [
3313              {
3314                "name": "x",
3315                "type": "uint256",
3316                "internalType": "BN254.BaseField"
3317              },
3318              {
3319                "name": "y",
3320                "type": "uint256",
3321                "internalType": "BN254.BaseField"
3322              }
3323            ]
3324          },
3325          {
3326            "name": "wire3",
3327            "type": "tuple",
3328            "internalType": "struct BN254.G1Point",
3329            "components": [
3330              {
3331                "name": "x",
3332                "type": "uint256",
3333                "internalType": "BN254.BaseField"
3334              },
3335              {
3336                "name": "y",
3337                "type": "uint256",
3338                "internalType": "BN254.BaseField"
3339              }
3340            ]
3341          },
3342          {
3343            "name": "wire4",
3344            "type": "tuple",
3345            "internalType": "struct BN254.G1Point",
3346            "components": [
3347              {
3348                "name": "x",
3349                "type": "uint256",
3350                "internalType": "BN254.BaseField"
3351              },
3352              {
3353                "name": "y",
3354                "type": "uint256",
3355                "internalType": "BN254.BaseField"
3356              }
3357            ]
3358          },
3359          {
3360            "name": "prodPerm",
3361            "type": "tuple",
3362            "internalType": "struct BN254.G1Point",
3363            "components": [
3364              {
3365                "name": "x",
3366                "type": "uint256",
3367                "internalType": "BN254.BaseField"
3368              },
3369              {
3370                "name": "y",
3371                "type": "uint256",
3372                "internalType": "BN254.BaseField"
3373              }
3374            ]
3375          },
3376          {
3377            "name": "split0",
3378            "type": "tuple",
3379            "internalType": "struct BN254.G1Point",
3380            "components": [
3381              {
3382                "name": "x",
3383                "type": "uint256",
3384                "internalType": "BN254.BaseField"
3385              },
3386              {
3387                "name": "y",
3388                "type": "uint256",
3389                "internalType": "BN254.BaseField"
3390              }
3391            ]
3392          },
3393          {
3394            "name": "split1",
3395            "type": "tuple",
3396            "internalType": "struct BN254.G1Point",
3397            "components": [
3398              {
3399                "name": "x",
3400                "type": "uint256",
3401                "internalType": "BN254.BaseField"
3402              },
3403              {
3404                "name": "y",
3405                "type": "uint256",
3406                "internalType": "BN254.BaseField"
3407              }
3408            ]
3409          },
3410          {
3411            "name": "split2",
3412            "type": "tuple",
3413            "internalType": "struct BN254.G1Point",
3414            "components": [
3415              {
3416                "name": "x",
3417                "type": "uint256",
3418                "internalType": "BN254.BaseField"
3419              },
3420              {
3421                "name": "y",
3422                "type": "uint256",
3423                "internalType": "BN254.BaseField"
3424              }
3425            ]
3426          },
3427          {
3428            "name": "split3",
3429            "type": "tuple",
3430            "internalType": "struct BN254.G1Point",
3431            "components": [
3432              {
3433                "name": "x",
3434                "type": "uint256",
3435                "internalType": "BN254.BaseField"
3436              },
3437              {
3438                "name": "y",
3439                "type": "uint256",
3440                "internalType": "BN254.BaseField"
3441              }
3442            ]
3443          },
3444          {
3445            "name": "split4",
3446            "type": "tuple",
3447            "internalType": "struct BN254.G1Point",
3448            "components": [
3449              {
3450                "name": "x",
3451                "type": "uint256",
3452                "internalType": "BN254.BaseField"
3453              },
3454              {
3455                "name": "y",
3456                "type": "uint256",
3457                "internalType": "BN254.BaseField"
3458              }
3459            ]
3460          },
3461          {
3462            "name": "zeta",
3463            "type": "tuple",
3464            "internalType": "struct BN254.G1Point",
3465            "components": [
3466              {
3467                "name": "x",
3468                "type": "uint256",
3469                "internalType": "BN254.BaseField"
3470              },
3471              {
3472                "name": "y",
3473                "type": "uint256",
3474                "internalType": "BN254.BaseField"
3475              }
3476            ]
3477          },
3478          {
3479            "name": "zetaOmega",
3480            "type": "tuple",
3481            "internalType": "struct BN254.G1Point",
3482            "components": [
3483              {
3484                "name": "x",
3485                "type": "uint256",
3486                "internalType": "BN254.BaseField"
3487              },
3488              {
3489                "name": "y",
3490                "type": "uint256",
3491                "internalType": "BN254.BaseField"
3492              }
3493            ]
3494          },
3495          {
3496            "name": "wireEval0",
3497            "type": "uint256",
3498            "internalType": "BN254.ScalarField"
3499          },
3500          {
3501            "name": "wireEval1",
3502            "type": "uint256",
3503            "internalType": "BN254.ScalarField"
3504          },
3505          {
3506            "name": "wireEval2",
3507            "type": "uint256",
3508            "internalType": "BN254.ScalarField"
3509          },
3510          {
3511            "name": "wireEval3",
3512            "type": "uint256",
3513            "internalType": "BN254.ScalarField"
3514          },
3515          {
3516            "name": "wireEval4",
3517            "type": "uint256",
3518            "internalType": "BN254.ScalarField"
3519          },
3520          {
3521            "name": "sigmaEval0",
3522            "type": "uint256",
3523            "internalType": "BN254.ScalarField"
3524          },
3525          {
3526            "name": "sigmaEval1",
3527            "type": "uint256",
3528            "internalType": "BN254.ScalarField"
3529          },
3530          {
3531            "name": "sigmaEval2",
3532            "type": "uint256",
3533            "internalType": "BN254.ScalarField"
3534          },
3535          {
3536            "name": "sigmaEval3",
3537            "type": "uint256",
3538            "internalType": "BN254.ScalarField"
3539          },
3540          {
3541            "name": "prodPermZetaOmegaEval",
3542            "type": "uint256",
3543            "internalType": "BN254.ScalarField"
3544          }
3545        ]
3546      }
3547    ],
3548    "outputs": [],
3549    "stateMutability": "nonpayable"
3550  },
3551  {
3552    "type": "function",
3553    "name": "owner",
3554    "inputs": [],
3555    "outputs": [
3556      {
3557        "name": "",
3558        "type": "address",
3559        "internalType": "address"
3560      }
3561    ],
3562    "stateMutability": "view"
3563  },
3564  {
3565    "type": "function",
3566    "name": "permissionedProver",
3567    "inputs": [],
3568    "outputs": [
3569      {
3570        "name": "",
3571        "type": "address",
3572        "internalType": "address"
3573      }
3574    ],
3575    "stateMutability": "view"
3576  },
3577  {
3578    "type": "function",
3579    "name": "proxiableUUID",
3580    "inputs": [],
3581    "outputs": [
3582      {
3583        "name": "",
3584        "type": "bytes32",
3585        "internalType": "bytes32"
3586      }
3587    ],
3588    "stateMutability": "view"
3589  },
3590  {
3591    "type": "function",
3592    "name": "renounceOwnership",
3593    "inputs": [],
3594    "outputs": [],
3595    "stateMutability": "nonpayable"
3596  },
3597  {
3598    "type": "function",
3599    "name": "setPermissionedProver",
3600    "inputs": [
3601      {
3602        "name": "prover",
3603        "type": "address",
3604        "internalType": "address"
3605      }
3606    ],
3607    "outputs": [],
3608    "stateMutability": "nonpayable"
3609  },
3610  {
3611    "type": "function",
3612    "name": "setstateHistoryRetentionPeriod",
3613    "inputs": [
3614      {
3615        "name": "historySeconds",
3616        "type": "uint32",
3617        "internalType": "uint32"
3618      }
3619    ],
3620    "outputs": [],
3621    "stateMutability": "nonpayable"
3622  },
3623  {
3624    "type": "function",
3625    "name": "stateHistoryCommitments",
3626    "inputs": [
3627      {
3628        "name": "",
3629        "type": "uint256",
3630        "internalType": "uint256"
3631      }
3632    ],
3633    "outputs": [
3634      {
3635        "name": "l1BlockHeight",
3636        "type": "uint64",
3637        "internalType": "uint64"
3638      },
3639      {
3640        "name": "l1BlockTimestamp",
3641        "type": "uint64",
3642        "internalType": "uint64"
3643      },
3644      {
3645        "name": "hotShotBlockHeight",
3646        "type": "uint64",
3647        "internalType": "uint64"
3648      },
3649      {
3650        "name": "hotShotBlockCommRoot",
3651        "type": "uint256",
3652        "internalType": "BN254.ScalarField"
3653      }
3654    ],
3655    "stateMutability": "view"
3656  },
3657  {
3658    "type": "function",
3659    "name": "stateHistoryFirstIndex",
3660    "inputs": [],
3661    "outputs": [
3662      {
3663        "name": "",
3664        "type": "uint64",
3665        "internalType": "uint64"
3666      }
3667    ],
3668    "stateMutability": "view"
3669  },
3670  {
3671    "type": "function",
3672    "name": "stateHistoryRetentionPeriod",
3673    "inputs": [],
3674    "outputs": [
3675      {
3676        "name": "",
3677        "type": "uint32",
3678        "internalType": "uint32"
3679      }
3680    ],
3681    "stateMutability": "view"
3682  },
3683  {
3684    "type": "function",
3685    "name": "transferOwnership",
3686    "inputs": [
3687      {
3688        "name": "newOwner",
3689        "type": "address",
3690        "internalType": "address"
3691      }
3692    ],
3693    "outputs": [],
3694    "stateMutability": "nonpayable"
3695  },
3696  {
3697    "type": "function",
3698    "name": "upgradeToAndCall",
3699    "inputs": [
3700      {
3701        "name": "newImplementation",
3702        "type": "address",
3703        "internalType": "address"
3704      },
3705      {
3706        "name": "data",
3707        "type": "bytes",
3708        "internalType": "bytes"
3709      }
3710    ],
3711    "outputs": [],
3712    "stateMutability": "payable"
3713  },
3714  {
3715    "type": "event",
3716    "name": "Initialized",
3717    "inputs": [
3718      {
3719        "name": "version",
3720        "type": "uint64",
3721        "indexed": false,
3722        "internalType": "uint64"
3723      }
3724    ],
3725    "anonymous": false
3726  },
3727  {
3728    "type": "event",
3729    "name": "NewState",
3730    "inputs": [
3731      {
3732        "name": "viewNum",
3733        "type": "uint64",
3734        "indexed": true,
3735        "internalType": "uint64"
3736      },
3737      {
3738        "name": "blockHeight",
3739        "type": "uint64",
3740        "indexed": true,
3741        "internalType": "uint64"
3742      },
3743      {
3744        "name": "blockCommRoot",
3745        "type": "uint256",
3746        "indexed": false,
3747        "internalType": "BN254.ScalarField"
3748      }
3749    ],
3750    "anonymous": false
3751  },
3752  {
3753    "type": "event",
3754    "name": "OwnershipTransferred",
3755    "inputs": [
3756      {
3757        "name": "previousOwner",
3758        "type": "address",
3759        "indexed": true,
3760        "internalType": "address"
3761      },
3762      {
3763        "name": "newOwner",
3764        "type": "address",
3765        "indexed": true,
3766        "internalType": "address"
3767      }
3768    ],
3769    "anonymous": false
3770  },
3771  {
3772    "type": "event",
3773    "name": "PermissionedProverNotRequired",
3774    "inputs": [],
3775    "anonymous": false
3776  },
3777  {
3778    "type": "event",
3779    "name": "PermissionedProverRequired",
3780    "inputs": [
3781      {
3782        "name": "permissionedProver",
3783        "type": "address",
3784        "indexed": false,
3785        "internalType": "address"
3786      }
3787    ],
3788    "anonymous": false
3789  },
3790  {
3791    "type": "event",
3792    "name": "Upgrade",
3793    "inputs": [
3794      {
3795        "name": "implementation",
3796        "type": "address",
3797        "indexed": false,
3798        "internalType": "address"
3799      }
3800    ],
3801    "anonymous": false
3802  },
3803  {
3804    "type": "event",
3805    "name": "Upgraded",
3806    "inputs": [
3807      {
3808        "name": "implementation",
3809        "type": "address",
3810        "indexed": true,
3811        "internalType": "address"
3812      }
3813    ],
3814    "anonymous": false
3815  },
3816  {
3817    "type": "error",
3818    "name": "AddressEmptyCode",
3819    "inputs": [
3820      {
3821        "name": "target",
3822        "type": "address",
3823        "internalType": "address"
3824      }
3825    ]
3826  },
3827  {
3828    "type": "error",
3829    "name": "ERC1967InvalidImplementation",
3830    "inputs": [
3831      {
3832        "name": "implementation",
3833        "type": "address",
3834        "internalType": "address"
3835      }
3836    ]
3837  },
3838  {
3839    "type": "error",
3840    "name": "ERC1967NonPayable",
3841    "inputs": []
3842  },
3843  {
3844    "type": "error",
3845    "name": "FailedInnerCall",
3846    "inputs": []
3847  },
3848  {
3849    "type": "error",
3850    "name": "InsufficientSnapshotHistory",
3851    "inputs": []
3852  },
3853  {
3854    "type": "error",
3855    "name": "InvalidAddress",
3856    "inputs": []
3857  },
3858  {
3859    "type": "error",
3860    "name": "InvalidArgs",
3861    "inputs": []
3862  },
3863  {
3864    "type": "error",
3865    "name": "InvalidHotShotBlockForCommitmentCheck",
3866    "inputs": []
3867  },
3868  {
3869    "type": "error",
3870    "name": "InvalidInitialization",
3871    "inputs": []
3872  },
3873  {
3874    "type": "error",
3875    "name": "InvalidMaxStateHistory",
3876    "inputs": []
3877  },
3878  {
3879    "type": "error",
3880    "name": "InvalidProof",
3881    "inputs": []
3882  },
3883  {
3884    "type": "error",
3885    "name": "NoChangeRequired",
3886    "inputs": []
3887  },
3888  {
3889    "type": "error",
3890    "name": "NotInitializing",
3891    "inputs": []
3892  },
3893  {
3894    "type": "error",
3895    "name": "OutdatedState",
3896    "inputs": []
3897  },
3898  {
3899    "type": "error",
3900    "name": "OwnableInvalidOwner",
3901    "inputs": [
3902      {
3903        "name": "owner",
3904        "type": "address",
3905        "internalType": "address"
3906      }
3907    ]
3908  },
3909  {
3910    "type": "error",
3911    "name": "OwnableUnauthorizedAccount",
3912    "inputs": [
3913      {
3914        "name": "account",
3915        "type": "address",
3916        "internalType": "address"
3917      }
3918    ]
3919  },
3920  {
3921    "type": "error",
3922    "name": "ProverNotPermissioned",
3923    "inputs": []
3924  },
3925  {
3926    "type": "error",
3927    "name": "UUPSUnauthorizedCallContext",
3928    "inputs": []
3929  },
3930  {
3931    "type": "error",
3932    "name": "UUPSUnsupportedProxiableUUID",
3933    "inputs": [
3934      {
3935        "name": "slot",
3936        "type": "bytes32",
3937        "internalType": "bytes32"
3938      }
3939    ]
3940  },
3941  {
3942    "type": "error",
3943    "name": "WrongStakeTableUsed",
3944    "inputs": []
3945  }
3946]
3947```*/
3948#[allow(
3949    non_camel_case_types,
3950    non_snake_case,
3951    clippy::pub_underscore_fields,
3952    clippy::style,
3953    clippy::empty_structs_with_brackets
3954)]
3955pub mod LightClientArbitrum {
3956    use alloy::sol_types as alloy_sol_types;
3957
3958    use super::*;
3959    /// The creation / init bytecode of the contract.
3960    ///
3961    /// ```text
3962    ///0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612bcc6100f95f395f8181611783015281816117ac01526119290152612bcc5ff3fe608060405260043610610161575f3560e01c8063715018a6116100cd5780639fdb54a711610087578063d24d933d11610062578063d24d933d14610520578063e03033011461054f578063f2fde38b1461056e578063f9e50d191461058d575f5ffd5b80639fdb54a714610456578063ad3cb1cc146104ab578063c23b9e9e146104e8575f5ffd5b8063715018a614610361578063826e41fc146103755780638584d23f146103a05780638da5cb5b146103dc57806396c1ca61146104185780639baa3cc914610437575f5ffd5b8063313df7b11161011e578063313df7b11461028c578063378ec23b146102c3578063426d3194146102e55780634f1ef2861461032657806352d1902d1461033957806369cc6a041461034d575f5ffd5b8063013fa5fc1461016557806302b592f3146101865780630d8e6e2c146101e357806312173c2c1461020e5780632063d4f71461022f5780632f79889d1461024e575b5f5ffd5b348015610170575f5ffd5b5061018461017f366004611fdc565b6105a1565b005b348015610191575f5ffd5b506101a56101a0366004611ff5565b610654565b6040516101da94939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b3480156101ee575f5ffd5b5060408051600181525f60208201819052918101919091526060016101da565b348015610219575f5ffd5b5061022261069d565b6040516101da919061200c565b34801561023a575f5ffd5b50610184610249366004612341565b6106b2565b348015610259575f5ffd5b5060085461027490600160c01b90046001600160401b031681565b6040516001600160401b0390911681526020016101da565b348015610297575f5ffd5b506008546102ab906001600160a01b031681565b6040516001600160a01b0390911681526020016101da565b3480156102ce575f5ffd5b506102d761080d565b6040519081526020016101da565b3480156102f0575f5ffd5b505f546001546002546003546103069392919084565b6040805194855260208501939093529183015260608201526080016101da565b6101846103343660046124f1565b61086f565b348015610344575f5ffd5b506102d761088e565b348015610358575f5ffd5b506101846108a9565b34801561036c575f5ffd5b50610184610917565b348015610380575f5ffd5b506008546001600160a01b031615155b60405190151581526020016101da565b3480156103ab575f5ffd5b506103bf6103ba366004611ff5565b610928565b604080519283526001600160401b039091166020830152016101da565b3480156103e7575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03166102ab565b348015610423575f5ffd5b506101846104323660046125a7565b610a53565b348015610442575f5ffd5b506101846104513660046125c0565b610adc565b348015610461575f5ffd5b50600654600754610485916001600160401b0380821692600160401b909204169083565b604080516001600160401b039485168152939092166020840152908201526060016101da565b3480156104b6575f5ffd5b506104db604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101da9190612669565b3480156104f3575f5ffd5b5060085461050b90600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016101da565b34801561052b575f5ffd5b50600454600554610485916001600160401b0380821692600160401b909204169083565b34801561055a575f5ffd5b5061039061056936600461269e565b610bfe565b348015610579575f5ffd5b50610184610588366004611fdc565b610d5f565b348015610598575f5ffd5b506009546102d7565b6105a9610da1565b6001600160a01b0381166105d05760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036105ff5760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b60098181548110610663575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b6106a5611d3e565b6106ad610dfc565b905090565b6008546001600160a01b0316151580156106d757506008546001600160a01b03163314155b156106f5576040516301474c8f60e71b815260040160405180910390fd5b60065482516001600160401b03918216911611158061072e575060065460208301516001600160401b03600160401b9092048216911611155b1561074c5760405163051c46ef60e01b815260040160405180910390fd5b610759826040015161142b565b610763828261149b565b81516006805460208501516001600160401b03908116600160401b026001600160801b031990921693169290921791909117905560408201516007556107b16107aa61080d565b428461158f565b81602001516001600160401b0316825f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6846040015160405161080191815260200190565b60405180910390a35050565b5f60646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084b573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106ad91906126be565b610877611778565b6108808261181c565b61088a828261185d565b5050565b5f61089761191e565b505f516020612ba05f395f51905f5290565b6108b1610da1565b6008546001600160a01b0316156108fc57600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b61091f610da1565b6109155f611967565b600980545f9182919061093c6001836126e9565b8154811061094c5761094c6126fc565b5f918252602090912060029091020154600160801b90046001600160401b0316841061098b57604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b81811015610a4c5784600982815481106109bb576109bb6126fc565b5f918252602090912060029091020154600160801b90046001600160401b03161115610a4457600981815481106109f4576109f46126fc565b905f5260205f2090600202016001015460098281548110610a1757610a176126fc565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b60010161099f565b5050915091565b610a5b610da1565b610e108163ffffffff161080610a7a57506301e133808163ffffffff16115b80610a98575060085463ffffffff600160a01b909104811690821611155b15610ab6576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610b205750825b90505f826001600160401b03166001148015610b3b5750303b155b905081158015610b49575080155b15610b675760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610b9157845460ff60401b1916600160401b1785555b610b9a866119d7565b610ba26119e8565b610bad8989896119f0565b8315610bf357845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b6009545f90610c0b61080d565b841180610c16575080155b80610c605750600854600980549091600160c01b90046001600160401b0316908110610c4457610c446126fc565b5f9182526020909120600290910201546001600160401b031684105b15610c7e5760405163b0b4387760e01b815260040160405180910390fd5b5f8080610c8c6001856126e9565b90505b81610d2857600854600160c01b90046001600160401b03168110610d28578660098281548110610cc157610cc16126fc565b5f9182526020909120600290910201546001600160401b031611610d16576001915060098181548110610cf657610cf66126fc565b5f9182526020909120600290910201546001600160401b03169250610d28565b80610d2081612710565b915050610c8f565b81610d465760405163b0b4387760e01b815260040160405180910390fd5b85610d5184896126e9565b119450505050505b92915050565b610d67610da1565b6001600160a01b038116610d9557604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610d9e81611967565b50565b33610dd37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146109155760405163118cdaa760e01b8152336004820152602401610d8c565b610e04611d3e565b621000008152600760208201527f23783d0e9777b7af65fbf849da7edb75e74b1eaf503e025d7f2f7f80991befa26040820151527f2a4e2fe8adfa53f468525582d5184c4c70bbdb946c21f216418a9879705e54a76020604083015101527f0624b2c1e77f24afceaf39451743b9fa80d5853fca7ba00389c675650774009b6060820151527f250d7719e94ca2df00dfe327938f5a8d4d837779b99837ca777a53d39127b1796020606083015101527f0dc09515152eaea66d0db2f571cc995e369d26fe647394f10db5398c917519dc6080820151527f1273144d6cec2c4a68b24a149379c0f5592bb7fbddbe32fa171919950ca404cb6020608083015101527f119521bb68caec216e2f05eeb466fb3abfe1f39baf7fe7cb392ea057b6a2d9bf60a0820151527f2d52adeaba8045e53ab526fe9982d0ea452def6b3ea0253d27a19ef3b46e8428602060a083015101527f16c3b5b217d302975a920d13374524d7a52e4a50fd7fb930842271ebf4a84efd60c0820151527f200788916b907b196972bde304318e885a2521514b2db5e4a11899c51204f089602060c083015101527f1127581afe753defca9aef12e7332db9978a200b1699ce3888c0f3aea6111dc360e0820151527f0881e13f00723be1a04872ed02b2d078c31e80feaf27724e262ce97c2cb0bb1d602060e083015101527f1482a3a6bb91d6483d153683e2404f2f5546e0e895530fdf132091498406e3de610100820151527efa52db3d52d905ead1248102f3a80a43a90d8400c68f60a62c543c417b2f4b602061010083015101527f0a57dadd4a55199525ac6ac6fabc87a4cccfdc98142bcef9dbf47de00ecc5164610120820151527f18d95abd9b8e12c36936aa218cfff582548a6bbff25c338c2006eaeb1fe5b696602061012083015101527f2bc40e91dd169b8bc143a02952a1b6c6e627bfeb7a2bbe5078e14123f3c54c1c610140820151527f108d65a20c579b6d9883275eb6889fc3f5fc79735ca9f611a13b67daa2fbc8d0602061014083015101527f21bc1f86d0608e5f0626b467ee6f8282b619223f60a7acb0fc63ba7bdaf783be610160820151527f05ef3282f8eef01515fb9a8a7d6ca06b8b007d1d512403efb268fb03ce5f09e9602061016083015101527f2cab66c1cb5a83869e73ac34fbe467486999babd541d9010ee9a804806eee4ef610180820151527f2db1982419c5a4a17593acff9535fa967683d75c8aec01319b64b84aada2ad84602061018083015101527f2c38667c6c7eb868bdd30c34dd3f4b84d9b9b1a27d7867b364c8b7831423e9086101a0820151527f2b2cb4044dd51165c48138219d51cf8d1689f91ed3eeefead6e055eb488a2ce260206101a083015101527f2d48e54703011df2c74a14dafde3af4fd83ec71875d8ddc3554658640cc955016101c0820151527f243a99d80d32eb5408b59d5b08302bede070d3fb0a8efe2f2262f865bffb4d0d60206101c083015101527f0455d2325bf6269a66f07d838f55f36947a3cd9b87edd8480bced95cbb45cc116101e0820151527f0f66d9085a6ed60b838179987e240992bff4c0516ccf6ccde4a1ca94ce8b986460206101e083015101527f2bac0d23c8585d1487ec611b5effc97e5852fea43a7cba36ccdd2c207931f394610200820151527f1860b54e01a06aea5adb4b13bf5baebab92b736807a3a89ff2040992b06ee6ec602061020083015101527f0c0bfa1c2fc6f8ed01233d5168db1e1dfe725504f032f669f50a92ae77c72906610220820151527f0d741e124c7d1069b8a400cbcdcfd90128a533901ad4de1e037fe72984dc34cf602061022083015101527f01cfed30085c9efce04668205794aa39b1a8ee591234b4c77a22f8c26d899e05610240820151527f2ab68ac82d36cedb647d14a5b0035e8c9a0be84780b7bae1133a27a880966ed1602061024083015101527f072e1d50f8b5cf8d574b3847276477d95bbd5116351000841f728da44f4043b5610260820151527f23f8ea6eacd0876d57220f57eabacbe76a2323411663731a251d5dca36f1b59f602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181108061088a5760405162461bcd60e51b815260206004820152601b60248201527f426e3235343a20696e76616c6964207363616c6172206669656c6400000000006044820152606401610d8c565b5f6114a461069d565b90506114ae611fa3565b83516001600160401b0390811682526020850151168160016020020152604084810151828201526001546060830152600254608083015260035460a08301525f5460c08301525163ce537a7760e01b815273ffffffffffffffffffffffffffffffffffffffff9063ce537a779061152d90859085908890600401612901565b602060405180830381865af4158015611548573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061156c9190612b21565b611589576040516309bde33960e01b815260040160405180910390fd5b50505050565b60095415801590611604575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b03169081106115cf576115cf6126fc565b5f9182526020909120600290910201546115f990600160401b90046001600160401b031684612b40565b6001600160401b0316115b1561169757600854600980549091600160c01b90046001600160401b0316908110611631576116316126fc565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b031690601861167183612b5f565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806117fe57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166117f25f516020612ba05f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156109155760405163703e46dd60e11b815260040160405180910390fd5b611824610da1565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610649565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118b7575060408051601f3d908101601f191682019092526118b4918101906126be565b60015b6118df57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610d8c565b5f516020612ba05f395f51905f52811461190f57604051632a87526960e21b815260048101829052602401610d8c565b6119198383611b1c565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109155760405163703e46dd60e11b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b6119df611b71565b610d9e81611bba565b610915611b71565b82516001600160401b0316151580611a14575060208301516001600160401b031615155b80611a2157506020820151155b80611a2e57506040820151155b80611a3b57506060820151155b80611a4557508151155b80611a575750610e108163ffffffff16105b80611a6b57506301e133808163ffffffff16115b15611a89576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b611b2582611bc2565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611b69576119198282611c25565b61088a611c97565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661091557604051631afcd79f60e31b815260040160405180910390fd5b610d67611b71565b806001600160a01b03163b5f03611bf757604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610d8c565b5f516020612ba05f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051611c419190612b89565b5f60405180830381855af49150503d805f8114611c79576040519150601f19603f3d011682016040523d82523d5f602084013e611c7e565b606091505b5091509150611c8e858383611cb6565b95945050505050565b34156109155760405163b398979f60e01b815260040160405180910390fd5b606082611ccb57611cc682611d15565b611d0e565b8151158015611ce257506001600160a01b0384163b155b15611d0b57604051639996b31560e01b81526001600160a01b0385166004820152602401610d8c565b50805b9392505050565b805115611d255780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f8152602001611d7160405180604001604052805f81526020015f81525090565b8152602001611d9160405180604001604052805f81526020015f81525090565b8152602001611db160405180604001604052805f81526020015f81525090565b8152602001611dd160405180604001604052805f81526020015f81525090565b8152602001611df160405180604001604052805f81526020015f81525090565b8152602001611e1160405180604001604052805f81526020015f81525090565b8152602001611e3160405180604001604052805f81526020015f81525090565b8152602001611e5160405180604001604052805f81526020015f81525090565b8152602001611e7160405180604001604052805f81526020015f81525090565b8152602001611e9160405180604001604052805f81526020015f81525090565b8152602001611eb160405180604001604052805f81526020015f81525090565b8152602001611ed160405180604001604052805f81526020015f81525090565b8152602001611ef160405180604001604052805f81526020015f81525090565b8152602001611f1160405180604001604052805f81526020015f81525090565b8152602001611f3160405180604001604052805f81526020015f81525090565b8152602001611f5160405180604001604052805f81526020015f81525090565b8152602001611f7160405180604001604052805f81526020015f81525090565b8152602001611f9160405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b6040518060e001604052806007906020820280368337509192915050565b80356001600160a01b0381168114611fd7575f5ffd5b919050565b5f60208284031215611fec575f5ffd5b611d0e82611fc1565b5f60208284031215612005575f5ffd5b5035919050565b5f610500820190508251825260208301516020830152604083015161203e604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b03811182821017156122445761224461220d565b60405290565b604051601f8201601f191681016001600160401b03811182821017156122725761227261220d565b604052919050565b80356001600160401b0381168114611fd7575f5ffd5b5f606082840312156122a0575f5ffd5b604051606081016001600160401b03811182821017156122c2576122c261220d565b6040529050806122d18361227a565b81526122df6020840161227a565b6020820152604092830135920191909152919050565b5f60408284031215612305575f5ffd5b604080519081016001600160401b03811182821017156123275761232761220d565b604052823581526020928301359281019290925250919050565b5f5f8284036104e0811215612354575f5ffd5b61235e8585612290565b9250610480605f1982011215612372575f5ffd5b5061237b612221565b61238885606086016122f5565b81526123978560a086016122f5565b60208201526123a98560e086016122f5565b60408201526123bc8561012086016122f5565b60608201526123cf8561016086016122f5565b60808201526123e2856101a086016122f5565b60a08201526123f5856101e086016122f5565b60c08201526124088561022086016122f5565b60e082015261241b8561026086016122f5565b61010082015261242f856102a086016122f5565b610120820152612443856102e086016122f5565b6101408201526124578561032086016122f5565b61016082015261246b8561036086016122f5565b6101808201526103a08401356101a08201526103c08401356101c08201526103e08401356101e08201526104008401356102008201526104208401356102208201526104408401356102408201526104608401356102608201526104808401356102808201526104a08401356102a08201526104c0909301356102c08401525092909150565b5f5f60408385031215612502575f5ffd5b61250b83611fc1565b915060208301356001600160401b03811115612525575f5ffd5b8301601f81018513612535575f5ffd5b80356001600160401b0381111561254e5761254e61220d565b612561601f8201601f191660200161224a565b818152866020838501011115612575575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b803563ffffffff81168114611fd7575f5ffd5b5f602082840312156125b7575f5ffd5b611d0e82612594565b5f5f5f5f8486036101208112156125d5575f5ffd5b6125df8787612290565b94506080605f19820112156125f2575f5ffd5b50604051608081016001600160401b03811182821017156126155761261561220d565b604090815260608781013583526080880135602084015260a08801359183019190915260c087013590820152925061264f60e08601612594565b915061265e6101008601611fc1565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f604083850312156126af575f5ffd5b50508035926020909101359150565b5f602082840312156126ce575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610d5957610d596126d5565b634e487b7160e01b5f52603260045260245ffd5b5f8161271e5761271e6126d5565b505f190190565b805f5b6007811015611589578151845260209384019390910190600101612728565b61275c82825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610a608201905084518252602085015160208301526040850151612933604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e0830152612b0b610500830185612725565b612b196105e0830184612747565b949350505050565b5f60208284031215612b31575f5ffd5b81518015158114611d0e575f5ffd5b6001600160401b038281168282160390811115610d5957610d596126d5565b5f6001600160401b0382166001600160401b038103612b8057612b806126d5565b60010192915050565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
3963    /// ```
3964    #[rustfmt::skip]
3965    #[allow(clippy::all)]
3966    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
3967        b"`\xA0`@R0`\x80R4\x80\x15a\0\x13W__\xFD[Pa\0\x1Ca\0!V[a\0\xD3V[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80Th\x01\0\0\0\0\0\0\0\0\x90\x04`\xFF\x16\x15a\0qW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80T`\x01`\x01`@\x1B\x03\x90\x81\x16\x14a\0\xD0W\x80T`\x01`\x01`@\x1B\x03\x19\x16`\x01`\x01`@\x1B\x03\x90\x81\x17\x82U`@Q\x90\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PV[`\x80Qa+\xCCa\0\xF9_9_\x81\x81a\x17\x83\x01R\x81\x81a\x17\xAC\x01Ra\x19)\x01Ra+\xCC_\xF3\xFE`\x80`@R`\x046\x10a\x01aW_5`\xE0\x1C\x80cqP\x18\xA6\x11a\0\xCDW\x80c\x9F\xDBT\xA7\x11a\0\x87W\x80c\xD2M\x93=\x11a\0bW\x80c\xD2M\x93=\x14a\x05 W\x80c\xE003\x01\x14a\x05OW\x80c\xF2\xFD\xE3\x8B\x14a\x05nW\x80c\xF9\xE5\r\x19\x14a\x05\x8DW__\xFD[\x80c\x9F\xDBT\xA7\x14a\x04VW\x80c\xAD<\xB1\xCC\x14a\x04\xABW\x80c\xC2;\x9E\x9E\x14a\x04\xE8W__\xFD[\x80cqP\x18\xA6\x14a\x03aW\x80c\x82nA\xFC\x14a\x03uW\x80c\x85\x84\xD2?\x14a\x03\xA0W\x80c\x8D\xA5\xCB[\x14a\x03\xDCW\x80c\x96\xC1\xCAa\x14a\x04\x18W\x80c\x9B\xAA<\xC9\x14a\x047W__\xFD[\x80c1=\xF7\xB1\x11a\x01\x1EW\x80c1=\xF7\xB1\x14a\x02\x8CW\x80c7\x8E\xC2;\x14a\x02\xC3W\x80cBm1\x94\x14a\x02\xE5W\x80cO\x1E\xF2\x86\x14a\x03&W\x80cR\xD1\x90-\x14a\x039W\x80ci\xCCj\x04\x14a\x03MW__\xFD[\x80c\x01?\xA5\xFC\x14a\x01eW\x80c\x02\xB5\x92\xF3\x14a\x01\x86W\x80c\r\x8En,\x14a\x01\xE3W\x80c\x12\x17<,\x14a\x02\x0EW\x80c c\xD4\xF7\x14a\x02/W\x80c/y\x88\x9D\x14a\x02NW[__\xFD[4\x80\x15a\x01pW__\xFD[Pa\x01\x84a\x01\x7F6`\x04a\x1F\xDCV[a\x05\xA1V[\0[4\x80\x15a\x01\x91W__\xFD[Pa\x01\xA5a\x01\xA06`\x04a\x1F\xF5V[a\x06TV[`@Qa\x01\xDA\x94\x93\x92\x91\x90`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x84\x01R\x92\x16`@\x82\x01R``\x81\x01\x91\x90\x91R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\xEEW__\xFD[P`@\x80Q`\x01\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x01\xDAV[4\x80\x15a\x02\x19W__\xFD[Pa\x02\"a\x06\x9DV[`@Qa\x01\xDA\x91\x90a \x0CV[4\x80\x15a\x02:W__\xFD[Pa\x01\x84a\x02I6`\x04a#AV[a\x06\xB2V[4\x80\x15a\x02YW__\xFD[P`\x08Ta\x02t\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\x97W__\xFD[P`\x08Ta\x02\xAB\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\xCEW__\xFD[Pa\x02\xD7a\x08\rV[`@Q\x90\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\xF0W__\xFD[P_T`\x01T`\x02T`\x03Ta\x03\x06\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x01\xDAV[a\x01\x84a\x0346`\x04a$\xF1V[a\x08oV[4\x80\x15a\x03DW__\xFD[Pa\x02\xD7a\x08\x8EV[4\x80\x15a\x03XW__\xFD[Pa\x01\x84a\x08\xA9V[4\x80\x15a\x03lW__\xFD[Pa\x01\x84a\t\x17V[4\x80\x15a\x03\x80W__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15[`@Q\x90\x15\x15\x81R` \x01a\x01\xDAV[4\x80\x15a\x03\xABW__\xFD[Pa\x03\xBFa\x03\xBA6`\x04a\x1F\xF5V[a\t(V[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x01\xDAV[4\x80\x15a\x03\xE7W__\xFD[P\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16a\x02\xABV[4\x80\x15a\x04#W__\xFD[Pa\x01\x84a\x0426`\x04a%\xA7V[a\nSV[4\x80\x15a\x04BW__\xFD[Pa\x01\x84a\x04Q6`\x04a%\xC0V[a\n\xDCV[4\x80\x15a\x04aW__\xFD[P`\x06T`\x07Ta\x04\x85\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[`@\x80Q`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x93\x90\x92\x16` \x84\x01R\x90\x82\x01R``\x01a\x01\xDAV[4\x80\x15a\x04\xB6W__\xFD[Pa\x04\xDB`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x01\xDA\x91\x90a&iV[4\x80\x15a\x04\xF3W__\xFD[P`\x08Ta\x05\x0B\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x05+W__\xFD[P`\x04T`\x05Ta\x04\x85\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x05ZW__\xFD[Pa\x03\x90a\x05i6`\x04a&\x9EV[a\x0B\xFEV[4\x80\x15a\x05yW__\xFD[Pa\x01\x84a\x05\x886`\x04a\x1F\xDCV[a\r_V[4\x80\x15a\x05\x98W__\xFD[P`\tTa\x02\xD7V[a\x05\xA9a\r\xA1V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x05\xD0W`@Qc\xE6\xC4${`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x90\x82\x16\x03a\x05\xFFW`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F\x80\x17\xBB\x88\x7F\xDF\x8F\xCAC\x14\xA9\xD4\x0Fns\xB3\xB8\x10\x02\xD6~\\\xFA\x85\xD8\x81s\xAFj\xA4`r\x90` \x01[`@Q\x80\x91\x03\x90\xA1PV[`\t\x81\x81T\x81\x10a\x06cW_\x80\xFD[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01\x80T`\x01\x90\x91\x01T`\x01`\x01`@\x1B\x03\x80\x83\x16\x93P`\x01`@\x1B\x83\x04\x81\x16\x92`\x01`\x80\x1B\x90\x04\x16\x90\x84V[a\x06\xA5a\x1D>V[a\x06\xADa\r\xFCV[\x90P\x90V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x06\xD7WP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x06\xF5W`@Qc\x01GL\x8F`\xE7\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T\x82Q`\x01`\x01`@\x1B\x03\x91\x82\x16\x91\x16\x11\x15\x80a\x07.WP`\x06T` \x83\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x07LW`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x07Y\x82`@\x01Qa\x14+V[a\x07c\x82\x82a\x14\x9BV[\x81Q`\x06\x80T` \x85\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x16\x92\x90\x92\x17\x91\x90\x91\x17\x90U`@\x82\x01Q`\x07Ua\x07\xB1a\x07\xAAa\x08\rV[B\x84a\x15\x8FV[\x81` \x01Q`\x01`\x01`@\x1B\x03\x16\x82_\x01Q`\x01`\x01`@\x1B\x03\x16\x7F\xA0Jw9$PZA\x85d67%\xF5h2\xF5w.k\x8D\r\xBDn\xFC\xE7$\xDF\xE8\x03\xDA\xE6\x84`@\x01Q`@Qa\x08\x01\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPV[_`d`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x08KW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xAD\x91\x90a&\xBEV[a\x08wa\x17xV[a\x08\x80\x82a\x18\x1CV[a\x08\x8A\x82\x82a\x18]V[PPV[_a\x08\x97a\x19\x1EV[P_Q` a+\xA0_9_Q\x90_R\x90V[a\x08\xB1a\r\xA1V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x08\xFCW`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U`@Q\x7F\x9A_W\xDE\x85m\xD6h\xC5M\xD9^\\U\xDF\x93C!q\xCB\xCAI\xA8wmV \xEAY\xC0$P\x90_\x90\xA1V[`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[V[a\t\x1Fa\r\xA1V[a\t\x15_a\x19gV[`\t\x80T_\x91\x82\x91\x90a\t<`\x01\x83a&\xE9V[\x81T\x81\x10a\tLWa\tLa&\xFCV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\t\x8BW`@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\nLW\x84`\t\x82\x81T\x81\x10a\t\xBBWa\t\xBBa&\xFCV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\nDW`\t\x81\x81T\x81\x10a\t\xF4Wa\t\xF4a&\xFCV[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\n\x17Wa\n\x17a&\xFCV[\x90_R` _ \x90`\x02\x02\x01_\x01`\x10\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`@\x1B\x03\x16\x93P\x93PPP\x91P\x91V[`\x01\x01a\t\x9FV[PP\x91P\x91V[a\n[a\r\xA1V[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\nzWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\n\x98WP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\n\xB6W`@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\x0B WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x0B;WP0;\x15[\x90P\x81\x15\x80\x15a\x0BIWP\x80\x15[\x15a\x0BgW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x84Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x85U\x83\x15a\x0B\x91W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x0B\x9A\x86a\x19\xD7V[a\x0B\xA2a\x19\xE8V[a\x0B\xAD\x89\x89\x89a\x19\xF0V[\x83\x15a\x0B\xF3W\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[`\tT_\x90a\x0C\x0Ba\x08\rV[\x84\x11\x80a\x0C\x16WP\x80\x15[\x80a\x0C`WP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x0CDWa\x0CDa&\xFCV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x0C~W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x0C\x8C`\x01\x85a&\xE9V[\x90P[\x81a\r(W`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\r(W\x86`\t\x82\x81T\x81\x10a\x0C\xC1Wa\x0C\xC1a&\xFCV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\r\x16W`\x01\x91P`\t\x81\x81T\x81\x10a\x0C\xF6Wa\x0C\xF6a&\xFCV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\r(V[\x80a\r \x81a'\x10V[\x91PPa\x0C\x8FV[\x81a\rFW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\rQ\x84\x89a&\xE9V[\x11\x94PPPPP[\x92\x91PPV[a\rga\r\xA1V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\r\x95W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\r\x9E\x81a\x19gV[PV[3a\r\xD3\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\t\x15W`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\r\x8CV[a\x0E\x04a\x1D>V[b\x10\0\0\x81R`\x07` \x82\x01R\x7F#x=\x0E\x97w\xB7\xAFe\xFB\xF8I\xDA~\xDBu\xE7K\x1E\xAFP>\x02]\x7F/\x7F\x80\x99\x1B\xEF\xA2`@\x82\x01QR\x7F*N/\xE8\xAD\xFAS\xF4hRU\x82\xD5\x18LLp\xBB\xDB\x94l!\xF2\x16A\x8A\x98yp^T\xA7` `@\x83\x01Q\x01R\x7F\x06$\xB2\xC1\xE7\x7F$\xAF\xCE\xAF9E\x17C\xB9\xFA\x80\xD5\x85?\xCA{\xA0\x03\x89\xC6ue\x07t\0\x9B``\x82\x01QR\x7F%\rw\x19\xE9L\xA2\xDF\0\xDF\xE3'\x93\x8FZ\x8DM\x83wy\xB9\x987\xCAwzS\xD3\x91'\xB1y` ``\x83\x01Q\x01R\x7F\r\xC0\x95\x15\x15.\xAE\xA6m\r\xB2\xF5q\xCC\x99^6\x9D&\xFEds\x94\xF1\r\xB59\x8C\x91u\x19\xDC`\x80\x82\x01QR\x7F\x12s\x14Ml\xEC,Jh\xB2J\x14\x93y\xC0\xF5Y+\xB7\xFB\xDD\xBE2\xFA\x17\x19\x19\x95\x0C\xA4\x04\xCB` `\x80\x83\x01Q\x01R\x7F\x11\x95!\xBBh\xCA\xEC!n/\x05\xEE\xB4f\xFB:\xBF\xE1\xF3\x9B\xAF\x7F\xE7\xCB9.\xA0W\xB6\xA2\xD9\xBF`\xA0\x82\x01QR\x7F-R\xAD\xEA\xBA\x80E\xE5:\xB5&\xFE\x99\x82\xD0\xEAE-\xEFk>\xA0%='\xA1\x9E\xF3\xB4n\x84(` `\xA0\x83\x01Q\x01R\x7F\x16\xC3\xB5\xB2\x17\xD3\x02\x97Z\x92\r\x137E$\xD7\xA5.JP\xFD\x7F\xB90\x84\"q\xEB\xF4\xA8N\xFD`\xC0\x82\x01QR\x7F \x07\x88\x91k\x90{\x19ir\xBD\xE3\x041\x8E\x88Z%!QK-\xB5\xE4\xA1\x18\x99\xC5\x12\x04\xF0\x89` `\xC0\x83\x01Q\x01R\x7F\x11'X\x1A\xFEu=\xEF\xCA\x9A\xEF\x12\xE73-\xB9\x97\x8A \x0B\x16\x99\xCE8\x88\xC0\xF3\xAE\xA6\x11\x1D\xC3`\xE0\x82\x01QR\x7F\x08\x81\xE1?\0r;\xE1\xA0Hr\xED\x02\xB2\xD0x\xC3\x1E\x80\xFE\xAF'rN&,\xE9|,\xB0\xBB\x1D` `\xE0\x83\x01Q\x01R\x7F\x14\x82\xA3\xA6\xBB\x91\xD6H=\x156\x83\xE2@O/UF\xE0\xE8\x95S\x0F\xDF\x13 \x91I\x84\x06\xE3\xDEa\x01\0\x82\x01QR~\xFAR\xDB=R\xD9\x05\xEA\xD1$\x81\x02\xF3\xA8\nC\xA9\r\x84\0\xC6\x8F`\xA6,T<A{/K` a\x01\0\x83\x01Q\x01R\x7F\nW\xDA\xDDJU\x19\x95%\xACj\xC6\xFA\xBC\x87\xA4\xCC\xCF\xDC\x98\x14+\xCE\xF9\xDB\xF4}\xE0\x0E\xCCQda\x01 \x82\x01QR\x7F\x18\xD9Z\xBD\x9B\x8E\x12\xC3i6\xAA!\x8C\xFF\xF5\x82T\x8Ak\xBF\xF2\\3\x8C \x06\xEA\xEB\x1F\xE5\xB6\x96` a\x01 \x83\x01Q\x01R\x7F+\xC4\x0E\x91\xDD\x16\x9B\x8B\xC1C\xA0)R\xA1\xB6\xC6\xE6'\xBF\xEBz+\xBEPx\xE1A#\xF3\xC5L\x1Ca\x01@\x82\x01QR\x7F\x10\x8De\xA2\x0CW\x9Bm\x98\x83'^\xB6\x88\x9F\xC3\xF5\xFCys\\\xA9\xF6\x11\xA1;g\xDA\xA2\xFB\xC8\xD0` a\x01@\x83\x01Q\x01R\x7F!\xBC\x1F\x86\xD0`\x8E_\x06&\xB4g\xEEo\x82\x82\xB6\x19\"?`\xA7\xAC\xB0\xFCc\xBA{\xDA\xF7\x83\xBEa\x01`\x82\x01QR\x7F\x05\xEF2\x82\xF8\xEE\xF0\x15\x15\xFB\x9A\x8A}l\xA0k\x8B\0}\x1DQ$\x03\xEF\xB2h\xFB\x03\xCE_\t\xE9` a\x01`\x83\x01Q\x01R\x7F,\xABf\xC1\xCBZ\x83\x86\x9Es\xAC4\xFB\xE4gHi\x99\xBA\xBDT\x1D\x90\x10\xEE\x9A\x80H\x06\xEE\xE4\xEFa\x01\x80\x82\x01QR\x7F-\xB1\x98$\x19\xC5\xA4\xA1u\x93\xAC\xFF\x955\xFA\x96v\x83\xD7\\\x8A\xEC\x011\x9Bd\xB8J\xAD\xA2\xAD\x84` a\x01\x80\x83\x01Q\x01R\x7F,8f|l~\xB8h\xBD\xD3\x0C4\xDD?K\x84\xD9\xB9\xB1\xA2}xg\xB3d\xC8\xB7\x83\x14#\xE9\x08a\x01\xA0\x82\x01QR\x7F+,\xB4\x04M\xD5\x11e\xC4\x818!\x9DQ\xCF\x8D\x16\x89\xF9\x1E\xD3\xEE\xEF\xEA\xD6\xE0U\xEBH\x8A,\xE2` a\x01\xA0\x83\x01Q\x01R\x7F-H\xE5G\x03\x01\x1D\xF2\xC7J\x14\xDA\xFD\xE3\xAFO\xD8>\xC7\x18u\xD8\xDD\xC3UFXd\x0C\xC9U\x01a\x01\xC0\x82\x01QR\x7F$:\x99\xD8\r2\xEBT\x08\xB5\x9D[\x080+\xED\xE0p\xD3\xFB\n\x8E\xFE/\"b\xF8e\xBF\xFBM\r` a\x01\xC0\x83\x01Q\x01R\x7F\x04U\xD22[\xF6&\x9Af\xF0}\x83\x8FU\xF3iG\xA3\xCD\x9B\x87\xED\xD8H\x0B\xCE\xD9\\\xBBE\xCC\x11a\x01\xE0\x82\x01QR\x7F\x0Ff\xD9\x08Zn\xD6\x0B\x83\x81y\x98~$\t\x92\xBF\xF4\xC0Ql\xCFl\xCD\xE4\xA1\xCA\x94\xCE\x8B\x98d` a\x01\xE0\x83\x01Q\x01R\x7F+\xAC\r#\xC8X]\x14\x87\xECa\x1B^\xFF\xC9~XR\xFE\xA4:|\xBA6\xCC\xDD, y1\xF3\x94a\x02\0\x82\x01QR\x7F\x18`\xB5N\x01\xA0j\xEAZ\xDBK\x13\xBF[\xAE\xBA\xB9+sh\x07\xA3\xA8\x9F\xF2\x04\t\x92\xB0n\xE6\xEC` a\x02\0\x83\x01Q\x01R\x7F\x0C\x0B\xFA\x1C/\xC6\xF8\xED\x01#=Qh\xDB\x1E\x1D\xFErU\x04\xF02\xF6i\xF5\n\x92\xAEw\xC7)\x06a\x02 \x82\x01QR\x7F\rt\x1E\x12L}\x10i\xB8\xA4\0\xCB\xCD\xCF\xD9\x01(\xA53\x90\x1A\xD4\xDE\x1E\x03\x7F\xE7)\x84\xDC4\xCF` a\x02 \x83\x01Q\x01R\x7F\x01\xCF\xED0\x08\\\x9E\xFC\xE0Fh W\x94\xAA9\xB1\xA8\xEEY\x124\xB4\xC7z\"\xF8\xC2m\x89\x9E\x05a\x02@\x82\x01QR\x7F*\xB6\x8A\xC8-6\xCE\xDBd}\x14\xA5\xB0\x03^\x8C\x9A\x0B\xE8G\x80\xB7\xBA\xE1\x13:'\xA8\x80\x96n\xD1` a\x02@\x83\x01Q\x01R\x7F\x07.\x1DP\xF8\xB5\xCF\x8DWK8G'dw\xD9[\xBDQ\x165\x10\0\x84\x1Fr\x8D\xA4O@C\xB5a\x02`\x82\x01QR\x7F#\xF8\xEAn\xAC\xD0\x87mW\"\x0FW\xEA\xBA\xCB\xE7j##A\x16cs\x1A%\x1D]\xCA6\xF1\xB5\x9F` a\x02`\x83\x01Q\x01R\x7F\xB0\x83\x88\x93\xEC\x1F#~\x8B\x072;\x07DY\x9FN\x97\xB5\x98\xB3\xB5\x89\xBC\xC2\xBC7\xB8\xD5\xC4\x18\x01a\x02\x80\x82\x01R\x7F\xC1\x83\x93\xC0\xFA0\xFEN\x8B\x03\x8E5z\xD8Q\xEA\xE8\xDE\x91\x07XN\xFF\xE7\xC7\xF1\xF6Q\xB2\x01\x0E&a\x02\xA0\x82\x01R\x90V[\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81\x10\x80a\x08\x8AW`@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\r\x8CV[_a\x14\xA4a\x06\x9DV[\x90Pa\x14\xAEa\x1F\xA3V[\x83Q`\x01`\x01`@\x1B\x03\x90\x81\x16\x82R` \x85\x01Q\x16\x81`\x01` \x02\x01R`@\x84\x81\x01Q\x82\x82\x01R`\x01T``\x83\x01R`\x02T`\x80\x83\x01R`\x03T`\xA0\x83\x01R_T`\xC0\x83\x01RQc\xCESzw`\xE0\x1B\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90c\xCESzw\x90a\x15-\x90\x85\x90\x85\x90\x88\x90`\x04\x01a)\x01V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\x15HW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15l\x91\x90a+!V[a\x15\x89W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPV[`\tT\x15\x80\x15\x90a\x16\x04WP`\x08T`\t\x80T`\x01`\xA0\x1B\x83\x04c\xFF\xFF\xFF\xFF\x16\x92`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x15\xCFWa\x15\xCFa&\xFCV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta\x15\xF9\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a+@V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a\x16\x97W`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x161Wa\x161a&\xFCV[_\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\x16q\x83a+_V[\x91\x90a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UPP[`@\x80Q`\x80\x81\x01\x82R`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x80\x85\x01\x91\x82R\x83\x01Q\x85\x16\x84\x83\x01\x90\x81R\x92\x90\x91\x01Q``\x84\x01\x90\x81R`\t\x80T`\x01\x81\x01\x82U_\x91\x90\x91R\x93Q`\x02\x90\x94\x02\x7Fn\x15@\x17\x1Bl\x0C\x96\x0Bq\xA7\x02\r\x9F`\x07\x7Fj\xF91\xA8\xBB\xF5\x90\xDA\x02#\xDA\xCFu\xC7\xAF\x81\x01\x80T\x93Q\x94Q\x87\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x95\x88\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x95\x16\x96\x90\x97\x16\x95\x90\x95\x17\x92\x90\x92\x17\x92\x90\x92\x16\x93\x90\x93\x17\x90\x91UQ\x7Fn\x15@\x17\x1Bl\x0C\x96\x0Bq\xA7\x02\r\x9F`\x07\x7Fj\xF91\xA8\xBB\xF5\x90\xDA\x02#\xDA\xCFu\xC7\xB0\x90\x91\x01UV[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14\x80a\x17\xFEWP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16a\x17\xF2_Q` a+\xA0_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\t\x15W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x18$a\r\xA1V[`@Q`\x01`\x01`\xA0\x1B\x03\x82\x16\x81R\x7F\xF7\x87!\"n\xFE\x9A\x1B\xB6x\x18\x9A\x16\xD1UI(\xB9\xF2\x19.,\xB9>\xED\xA8;y\xFA@\0}\x90` \x01a\x06IV[\x81`\x01`\x01`\xA0\x1B\x03\x16cR\xD1\x90-`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x92PPP\x80\x15a\x18\xB7WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x18\xB4\x91\x81\x01\x90a&\xBEV[`\x01[a\x18\xDFW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\r\x8CV[_Q` a+\xA0_9_Q\x90_R\x81\x14a\x19\x0FW`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\r\x8CV[a\x19\x19\x83\x83a\x1B\x1CV[PPPV[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\t\x15W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x82\x17\x84U`@Q\x92\x16\x91\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90_\x90\xA3PPPV[a\x19\xDFa\x1BqV[a\r\x9E\x81a\x1B\xBAV[a\t\x15a\x1BqV[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a\x1A\x14WP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\x1A!WP` \x82\x01Q\x15[\x80a\x1A.WP`@\x82\x01Q\x15[\x80a\x1A;WP``\x82\x01Q\x15[\x80a\x1AEWP\x81Q\x15[\x80a\x1AWWPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a\x1AkWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a\x1A\x89W`@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\x1B%\x82a\x1B\xC2V[`@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\x1BiWa\x19\x19\x82\x82a\x1C%V[a\x08\x8Aa\x1C\x97V[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0T`\x01`@\x1B\x90\x04`\xFF\x16a\t\x15W`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\rga\x1BqV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a\x1B\xF7W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\r\x8CV[_Q` a+\xA0_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\x1CA\x91\x90a+\x89V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x1CyW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1C~V[``\x91P[P\x91P\x91Pa\x1C\x8E\x85\x83\x83a\x1C\xB6V[\x95\x94PPPPPV[4\x15a\t\x15W`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a\x1C\xCBWa\x1C\xC6\x82a\x1D\x15V[a\x1D\x0EV[\x81Q\x15\x80\x15a\x1C\xE2WP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a\x1D\x0BW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\r\x8CV[P\x80[\x93\x92PPPV[\x80Q\x15a\x1D%W\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\x1Dq`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\x91`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\xB1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\xD1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\xF1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\x11`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1EQ`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1Eq`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\x91`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xB1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xD1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xF1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\x11`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1FQ`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1Fq`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\x91`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80`\xE0\x01`@R\x80`\x07\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x1F\xD7W__\xFD[\x91\x90PV[_` \x82\x84\x03\x12\x15a\x1F\xECW__\xFD[a\x1D\x0E\x82a\x1F\xC1V[_` \x82\x84\x03\x12\x15a \x05W__\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[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\"DWa\"Da\"\rV[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\"rWa\"ra\"\rV[`@R\x91\x90PV[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\x1F\xD7W__\xFD[_``\x82\x84\x03\x12\x15a\"\xA0W__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\"\xC2Wa\"\xC2a\"\rV[`@R\x90P\x80a\"\xD1\x83a\"zV[\x81Ra\"\xDF` \x84\x01a\"zV[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a#\x05W__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a#'Wa#'a\"\rV[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[__\x82\x84\x03a\x04\xE0\x81\x12\x15a#TW__\xFD[a#^\x85\x85a\"\x90V[\x92Pa\x04\x80`_\x19\x82\x01\x12\x15a#rW__\xFD[Pa#{a\"!V[a#\x88\x85``\x86\x01a\"\xF5V[\x81Ra#\x97\x85`\xA0\x86\x01a\"\xF5V[` \x82\x01Ra#\xA9\x85`\xE0\x86\x01a\"\xF5V[`@\x82\x01Ra#\xBC\x85a\x01 \x86\x01a\"\xF5V[``\x82\x01Ra#\xCF\x85a\x01`\x86\x01a\"\xF5V[`\x80\x82\x01Ra#\xE2\x85a\x01\xA0\x86\x01a\"\xF5V[`\xA0\x82\x01Ra#\xF5\x85a\x01\xE0\x86\x01a\"\xF5V[`\xC0\x82\x01Ra$\x08\x85a\x02 \x86\x01a\"\xF5V[`\xE0\x82\x01Ra$\x1B\x85a\x02`\x86\x01a\"\xF5V[a\x01\0\x82\x01Ra$/\x85a\x02\xA0\x86\x01a\"\xF5V[a\x01 \x82\x01Ra$C\x85a\x02\xE0\x86\x01a\"\xF5V[a\x01@\x82\x01Ra$W\x85a\x03 \x86\x01a\"\xF5V[a\x01`\x82\x01Ra$k\x85a\x03`\x86\x01a\"\xF5V[a\x01\x80\x82\x01Ra\x03\xA0\x84\x015a\x01\xA0\x82\x01Ra\x03\xC0\x84\x015a\x01\xC0\x82\x01Ra\x03\xE0\x84\x015a\x01\xE0\x82\x01Ra\x04\0\x84\x015a\x02\0\x82\x01Ra\x04 \x84\x015a\x02 \x82\x01Ra\x04@\x84\x015a\x02@\x82\x01Ra\x04`\x84\x015a\x02`\x82\x01Ra\x04\x80\x84\x015a\x02\x80\x82\x01Ra\x04\xA0\x84\x015a\x02\xA0\x82\x01Ra\x04\xC0\x90\x93\x015a\x02\xC0\x84\x01RP\x92\x90\x91PV[__`@\x83\x85\x03\x12\x15a%\x02W__\xFD[a%\x0B\x83a\x1F\xC1V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a%%W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a%5W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a%NWa%Na\"\rV[a%a`\x1F\x82\x01`\x1F\x19\x16` \x01a\"JV[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a%uW__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1F\xD7W__\xFD[_` \x82\x84\x03\x12\x15a%\xB7W__\xFD[a\x1D\x0E\x82a%\x94V[____\x84\x86\x03a\x01 \x81\x12\x15a%\xD5W__\xFD[a%\xDF\x87\x87a\"\x90V[\x94P`\x80`_\x19\x82\x01\x12\x15a%\xF2W__\xFD[P`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x15Wa&\x15a\"\rV[`@\x90\x81R``\x87\x81\x015\x83R`\x80\x88\x015` \x84\x01R`\xA0\x88\x015\x91\x83\x01\x91\x90\x91R`\xC0\x87\x015\x90\x82\x01R\x92Pa&O`\xE0\x86\x01a%\x94V[\x91Pa&^a\x01\0\x86\x01a\x1F\xC1V[\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&\xAFW__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[_` \x82\x84\x03\x12\x15a&\xCEW__\xFD[PQ\x91\x90PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\rYWa\rYa&\xD5V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_\x81a'\x1EWa'\x1Ea&\xD5V[P_\x19\x01\x90V[\x80_[`\x07\x81\x10\x15a\x15\x89W\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a'(V[a'\\\x82\x82Q\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[` \x81\x81\x01Q\x80Q`@\x85\x01R\x90\x81\x01Q``\x84\x01RP`@\x81\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP``\x81\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\x80\x81\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xA0\x81\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xC0\x81\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RP`\xE0\x81\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01\0\x81\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01 \x81\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01@\x81\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01`\x81\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\x80\x81\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xA0\x81\x01Qa\x03@\x83\x01Ra\x01\xC0\x81\x01Qa\x03`\x83\x01Ra\x01\xE0\x81\x01Qa\x03\x80\x83\x01Ra\x02\0\x81\x01Qa\x03\xA0\x83\x01Ra\x02 \x81\x01Qa\x03\xC0\x83\x01Ra\x02@\x81\x01Qa\x03\xE0\x83\x01Ra\x02`\x81\x01Qa\x04\0\x83\x01Ra\x02\x80\x81\x01Qa\x04 \x83\x01Ra\x02\xA0\x81\x01Qa\x04@\x83\x01Ra\x02\xC0\x01Qa\x04`\x90\x91\x01RV[_a\n`\x82\x01\x90P\x84Q\x82R` \x85\x01Q` \x83\x01R`@\x85\x01Qa)3`@\x84\x01\x82\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[P``\x85\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP`\x80\x85\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\xA0\x85\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xC0\x85\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xE0\x85\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RPa\x01\0\x85\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01 \x85\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01@\x85\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01`\x85\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01\x80\x85\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\xA0\x85\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xC0\x85\x01Q\x80Qa\x03@\x84\x01R` \x81\x01Qa\x03`\x84\x01RPa\x01\xE0\x85\x01Q\x80Qa\x03\x80\x84\x01R` \x81\x01Qa\x03\xA0\x84\x01RPa\x02\0\x85\x01Q\x80Qa\x03\xC0\x84\x01R` \x81\x01Qa\x03\xE0\x84\x01RPa\x02 \x85\x01Q\x80Qa\x04\0\x84\x01R` \x81\x01Qa\x04 \x84\x01RPa\x02@\x85\x01Q\x80Qa\x04@\x84\x01R` \x81\x01Qa\x04`\x84\x01RPa\x02`\x85\x01Q\x80Qa\x04\x80\x84\x01R` \x81\x01Qa\x04\xA0\x84\x01RPa\x02\x80\x85\x01Qa\x04\xC0\x83\x01Ra\x02\xA0\x85\x01Qa\x04\xE0\x83\x01Ra+\x0Ba\x05\0\x83\x01\x85a'%V[a+\x19a\x05\xE0\x83\x01\x84a'GV[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a+1W__\xFD[\x81Q\x80\x15\x15\x81\x14a\x1D\x0EW__\xFD[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\rYWa\rYa&\xD5V[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a+\x80Wa+\x80a&\xD5V[`\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",
3968    );
3969    /// The runtime bytecode of the contract, as deployed on the network.
3970    ///
3971    /// ```text
3972    ///0x608060405260043610610161575f3560e01c8063715018a6116100cd5780639fdb54a711610087578063d24d933d11610062578063d24d933d14610520578063e03033011461054f578063f2fde38b1461056e578063f9e50d191461058d575f5ffd5b80639fdb54a714610456578063ad3cb1cc146104ab578063c23b9e9e146104e8575f5ffd5b8063715018a614610361578063826e41fc146103755780638584d23f146103a05780638da5cb5b146103dc57806396c1ca61146104185780639baa3cc914610437575f5ffd5b8063313df7b11161011e578063313df7b11461028c578063378ec23b146102c3578063426d3194146102e55780634f1ef2861461032657806352d1902d1461033957806369cc6a041461034d575f5ffd5b8063013fa5fc1461016557806302b592f3146101865780630d8e6e2c146101e357806312173c2c1461020e5780632063d4f71461022f5780632f79889d1461024e575b5f5ffd5b348015610170575f5ffd5b5061018461017f366004611fdc565b6105a1565b005b348015610191575f5ffd5b506101a56101a0366004611ff5565b610654565b6040516101da94939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b3480156101ee575f5ffd5b5060408051600181525f60208201819052918101919091526060016101da565b348015610219575f5ffd5b5061022261069d565b6040516101da919061200c565b34801561023a575f5ffd5b50610184610249366004612341565b6106b2565b348015610259575f5ffd5b5060085461027490600160c01b90046001600160401b031681565b6040516001600160401b0390911681526020016101da565b348015610297575f5ffd5b506008546102ab906001600160a01b031681565b6040516001600160a01b0390911681526020016101da565b3480156102ce575f5ffd5b506102d761080d565b6040519081526020016101da565b3480156102f0575f5ffd5b505f546001546002546003546103069392919084565b6040805194855260208501939093529183015260608201526080016101da565b6101846103343660046124f1565b61086f565b348015610344575f5ffd5b506102d761088e565b348015610358575f5ffd5b506101846108a9565b34801561036c575f5ffd5b50610184610917565b348015610380575f5ffd5b506008546001600160a01b031615155b60405190151581526020016101da565b3480156103ab575f5ffd5b506103bf6103ba366004611ff5565b610928565b604080519283526001600160401b039091166020830152016101da565b3480156103e7575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03166102ab565b348015610423575f5ffd5b506101846104323660046125a7565b610a53565b348015610442575f5ffd5b506101846104513660046125c0565b610adc565b348015610461575f5ffd5b50600654600754610485916001600160401b0380821692600160401b909204169083565b604080516001600160401b039485168152939092166020840152908201526060016101da565b3480156104b6575f5ffd5b506104db604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101da9190612669565b3480156104f3575f5ffd5b5060085461050b90600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016101da565b34801561052b575f5ffd5b50600454600554610485916001600160401b0380821692600160401b909204169083565b34801561055a575f5ffd5b5061039061056936600461269e565b610bfe565b348015610579575f5ffd5b50610184610588366004611fdc565b610d5f565b348015610598575f5ffd5b506009546102d7565b6105a9610da1565b6001600160a01b0381166105d05760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036105ff5760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b60098181548110610663575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b6106a5611d3e565b6106ad610dfc565b905090565b6008546001600160a01b0316151580156106d757506008546001600160a01b03163314155b156106f5576040516301474c8f60e71b815260040160405180910390fd5b60065482516001600160401b03918216911611158061072e575060065460208301516001600160401b03600160401b9092048216911611155b1561074c5760405163051c46ef60e01b815260040160405180910390fd5b610759826040015161142b565b610763828261149b565b81516006805460208501516001600160401b03908116600160401b026001600160801b031990921693169290921791909117905560408201516007556107b16107aa61080d565b428461158f565b81602001516001600160401b0316825f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6846040015160405161080191815260200190565b60405180910390a35050565b5f60646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084b573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106ad91906126be565b610877611778565b6108808261181c565b61088a828261185d565b5050565b5f61089761191e565b505f516020612ba05f395f51905f5290565b6108b1610da1565b6008546001600160a01b0316156108fc57600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b61091f610da1565b6109155f611967565b600980545f9182919061093c6001836126e9565b8154811061094c5761094c6126fc565b5f918252602090912060029091020154600160801b90046001600160401b0316841061098b57604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b81811015610a4c5784600982815481106109bb576109bb6126fc565b5f918252602090912060029091020154600160801b90046001600160401b03161115610a4457600981815481106109f4576109f46126fc565b905f5260205f2090600202016001015460098281548110610a1757610a176126fc565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b60010161099f565b5050915091565b610a5b610da1565b610e108163ffffffff161080610a7a57506301e133808163ffffffff16115b80610a98575060085463ffffffff600160a01b909104811690821611155b15610ab6576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610b205750825b90505f826001600160401b03166001148015610b3b5750303b155b905081158015610b49575080155b15610b675760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610b9157845460ff60401b1916600160401b1785555b610b9a866119d7565b610ba26119e8565b610bad8989896119f0565b8315610bf357845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b6009545f90610c0b61080d565b841180610c16575080155b80610c605750600854600980549091600160c01b90046001600160401b0316908110610c4457610c446126fc565b5f9182526020909120600290910201546001600160401b031684105b15610c7e5760405163b0b4387760e01b815260040160405180910390fd5b5f8080610c8c6001856126e9565b90505b81610d2857600854600160c01b90046001600160401b03168110610d28578660098281548110610cc157610cc16126fc565b5f9182526020909120600290910201546001600160401b031611610d16576001915060098181548110610cf657610cf66126fc565b5f9182526020909120600290910201546001600160401b03169250610d28565b80610d2081612710565b915050610c8f565b81610d465760405163b0b4387760e01b815260040160405180910390fd5b85610d5184896126e9565b119450505050505b92915050565b610d67610da1565b6001600160a01b038116610d9557604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610d9e81611967565b50565b33610dd37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146109155760405163118cdaa760e01b8152336004820152602401610d8c565b610e04611d3e565b621000008152600760208201527f23783d0e9777b7af65fbf849da7edb75e74b1eaf503e025d7f2f7f80991befa26040820151527f2a4e2fe8adfa53f468525582d5184c4c70bbdb946c21f216418a9879705e54a76020604083015101527f0624b2c1e77f24afceaf39451743b9fa80d5853fca7ba00389c675650774009b6060820151527f250d7719e94ca2df00dfe327938f5a8d4d837779b99837ca777a53d39127b1796020606083015101527f0dc09515152eaea66d0db2f571cc995e369d26fe647394f10db5398c917519dc6080820151527f1273144d6cec2c4a68b24a149379c0f5592bb7fbddbe32fa171919950ca404cb6020608083015101527f119521bb68caec216e2f05eeb466fb3abfe1f39baf7fe7cb392ea057b6a2d9bf60a0820151527f2d52adeaba8045e53ab526fe9982d0ea452def6b3ea0253d27a19ef3b46e8428602060a083015101527f16c3b5b217d302975a920d13374524d7a52e4a50fd7fb930842271ebf4a84efd60c0820151527f200788916b907b196972bde304318e885a2521514b2db5e4a11899c51204f089602060c083015101527f1127581afe753defca9aef12e7332db9978a200b1699ce3888c0f3aea6111dc360e0820151527f0881e13f00723be1a04872ed02b2d078c31e80feaf27724e262ce97c2cb0bb1d602060e083015101527f1482a3a6bb91d6483d153683e2404f2f5546e0e895530fdf132091498406e3de610100820151527efa52db3d52d905ead1248102f3a80a43a90d8400c68f60a62c543c417b2f4b602061010083015101527f0a57dadd4a55199525ac6ac6fabc87a4cccfdc98142bcef9dbf47de00ecc5164610120820151527f18d95abd9b8e12c36936aa218cfff582548a6bbff25c338c2006eaeb1fe5b696602061012083015101527f2bc40e91dd169b8bc143a02952a1b6c6e627bfeb7a2bbe5078e14123f3c54c1c610140820151527f108d65a20c579b6d9883275eb6889fc3f5fc79735ca9f611a13b67daa2fbc8d0602061014083015101527f21bc1f86d0608e5f0626b467ee6f8282b619223f60a7acb0fc63ba7bdaf783be610160820151527f05ef3282f8eef01515fb9a8a7d6ca06b8b007d1d512403efb268fb03ce5f09e9602061016083015101527f2cab66c1cb5a83869e73ac34fbe467486999babd541d9010ee9a804806eee4ef610180820151527f2db1982419c5a4a17593acff9535fa967683d75c8aec01319b64b84aada2ad84602061018083015101527f2c38667c6c7eb868bdd30c34dd3f4b84d9b9b1a27d7867b364c8b7831423e9086101a0820151527f2b2cb4044dd51165c48138219d51cf8d1689f91ed3eeefead6e055eb488a2ce260206101a083015101527f2d48e54703011df2c74a14dafde3af4fd83ec71875d8ddc3554658640cc955016101c0820151527f243a99d80d32eb5408b59d5b08302bede070d3fb0a8efe2f2262f865bffb4d0d60206101c083015101527f0455d2325bf6269a66f07d838f55f36947a3cd9b87edd8480bced95cbb45cc116101e0820151527f0f66d9085a6ed60b838179987e240992bff4c0516ccf6ccde4a1ca94ce8b986460206101e083015101527f2bac0d23c8585d1487ec611b5effc97e5852fea43a7cba36ccdd2c207931f394610200820151527f1860b54e01a06aea5adb4b13bf5baebab92b736807a3a89ff2040992b06ee6ec602061020083015101527f0c0bfa1c2fc6f8ed01233d5168db1e1dfe725504f032f669f50a92ae77c72906610220820151527f0d741e124c7d1069b8a400cbcdcfd90128a533901ad4de1e037fe72984dc34cf602061022083015101527f01cfed30085c9efce04668205794aa39b1a8ee591234b4c77a22f8c26d899e05610240820151527f2ab68ac82d36cedb647d14a5b0035e8c9a0be84780b7bae1133a27a880966ed1602061024083015101527f072e1d50f8b5cf8d574b3847276477d95bbd5116351000841f728da44f4043b5610260820151527f23f8ea6eacd0876d57220f57eabacbe76a2323411663731a251d5dca36f1b59f602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181108061088a5760405162461bcd60e51b815260206004820152601b60248201527f426e3235343a20696e76616c6964207363616c6172206669656c6400000000006044820152606401610d8c565b5f6114a461069d565b90506114ae611fa3565b83516001600160401b0390811682526020850151168160016020020152604084810151828201526001546060830152600254608083015260035460a08301525f5460c08301525163ce537a7760e01b815273ffffffffffffffffffffffffffffffffffffffff9063ce537a779061152d90859085908890600401612901565b602060405180830381865af4158015611548573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061156c9190612b21565b611589576040516309bde33960e01b815260040160405180910390fd5b50505050565b60095415801590611604575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b03169081106115cf576115cf6126fc565b5f9182526020909120600290910201546115f990600160401b90046001600160401b031684612b40565b6001600160401b0316115b1561169757600854600980549091600160c01b90046001600160401b0316908110611631576116316126fc565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b031690601861167183612b5f565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806117fe57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166117f25f516020612ba05f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156109155760405163703e46dd60e11b815260040160405180910390fd5b611824610da1565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610649565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118b7575060408051601f3d908101601f191682019092526118b4918101906126be565b60015b6118df57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610d8c565b5f516020612ba05f395f51905f52811461190f57604051632a87526960e21b815260048101829052602401610d8c565b6119198383611b1c565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109155760405163703e46dd60e11b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b6119df611b71565b610d9e81611bba565b610915611b71565b82516001600160401b0316151580611a14575060208301516001600160401b031615155b80611a2157506020820151155b80611a2e57506040820151155b80611a3b57506060820151155b80611a4557508151155b80611a575750610e108163ffffffff16105b80611a6b57506301e133808163ffffffff16115b15611a89576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b611b2582611bc2565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611b69576119198282611c25565b61088a611c97565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661091557604051631afcd79f60e31b815260040160405180910390fd5b610d67611b71565b806001600160a01b03163b5f03611bf757604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610d8c565b5f516020612ba05f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051611c419190612b89565b5f60405180830381855af49150503d805f8114611c79576040519150601f19603f3d011682016040523d82523d5f602084013e611c7e565b606091505b5091509150611c8e858383611cb6565b95945050505050565b34156109155760405163b398979f60e01b815260040160405180910390fd5b606082611ccb57611cc682611d15565b611d0e565b8151158015611ce257506001600160a01b0384163b155b15611d0b57604051639996b31560e01b81526001600160a01b0385166004820152602401610d8c565b50805b9392505050565b805115611d255780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f8152602001611d7160405180604001604052805f81526020015f81525090565b8152602001611d9160405180604001604052805f81526020015f81525090565b8152602001611db160405180604001604052805f81526020015f81525090565b8152602001611dd160405180604001604052805f81526020015f81525090565b8152602001611df160405180604001604052805f81526020015f81525090565b8152602001611e1160405180604001604052805f81526020015f81525090565b8152602001611e3160405180604001604052805f81526020015f81525090565b8152602001611e5160405180604001604052805f81526020015f81525090565b8152602001611e7160405180604001604052805f81526020015f81525090565b8152602001611e9160405180604001604052805f81526020015f81525090565b8152602001611eb160405180604001604052805f81526020015f81525090565b8152602001611ed160405180604001604052805f81526020015f81525090565b8152602001611ef160405180604001604052805f81526020015f81525090565b8152602001611f1160405180604001604052805f81526020015f81525090565b8152602001611f3160405180604001604052805f81526020015f81525090565b8152602001611f5160405180604001604052805f81526020015f81525090565b8152602001611f7160405180604001604052805f81526020015f81525090565b8152602001611f9160405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b6040518060e001604052806007906020820280368337509192915050565b80356001600160a01b0381168114611fd7575f5ffd5b919050565b5f60208284031215611fec575f5ffd5b611d0e82611fc1565b5f60208284031215612005575f5ffd5b5035919050565b5f610500820190508251825260208301516020830152604083015161203e604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b03811182821017156122445761224461220d565b60405290565b604051601f8201601f191681016001600160401b03811182821017156122725761227261220d565b604052919050565b80356001600160401b0381168114611fd7575f5ffd5b5f606082840312156122a0575f5ffd5b604051606081016001600160401b03811182821017156122c2576122c261220d565b6040529050806122d18361227a565b81526122df6020840161227a565b6020820152604092830135920191909152919050565b5f60408284031215612305575f5ffd5b604080519081016001600160401b03811182821017156123275761232761220d565b604052823581526020928301359281019290925250919050565b5f5f8284036104e0811215612354575f5ffd5b61235e8585612290565b9250610480605f1982011215612372575f5ffd5b5061237b612221565b61238885606086016122f5565b81526123978560a086016122f5565b60208201526123a98560e086016122f5565b60408201526123bc8561012086016122f5565b60608201526123cf8561016086016122f5565b60808201526123e2856101a086016122f5565b60a08201526123f5856101e086016122f5565b60c08201526124088561022086016122f5565b60e082015261241b8561026086016122f5565b61010082015261242f856102a086016122f5565b610120820152612443856102e086016122f5565b6101408201526124578561032086016122f5565b61016082015261246b8561036086016122f5565b6101808201526103a08401356101a08201526103c08401356101c08201526103e08401356101e08201526104008401356102008201526104208401356102208201526104408401356102408201526104608401356102608201526104808401356102808201526104a08401356102a08201526104c0909301356102c08401525092909150565b5f5f60408385031215612502575f5ffd5b61250b83611fc1565b915060208301356001600160401b03811115612525575f5ffd5b8301601f81018513612535575f5ffd5b80356001600160401b0381111561254e5761254e61220d565b612561601f8201601f191660200161224a565b818152866020838501011115612575575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b803563ffffffff81168114611fd7575f5ffd5b5f602082840312156125b7575f5ffd5b611d0e82612594565b5f5f5f5f8486036101208112156125d5575f5ffd5b6125df8787612290565b94506080605f19820112156125f2575f5ffd5b50604051608081016001600160401b03811182821017156126155761261561220d565b604090815260608781013583526080880135602084015260a08801359183019190915260c087013590820152925061264f60e08601612594565b915061265e6101008601611fc1565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f604083850312156126af575f5ffd5b50508035926020909101359150565b5f602082840312156126ce575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610d5957610d596126d5565b634e487b7160e01b5f52603260045260245ffd5b5f8161271e5761271e6126d5565b505f190190565b805f5b6007811015611589578151845260209384019390910190600101612728565b61275c82825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610a608201905084518252602085015160208301526040850151612933604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e0830152612b0b610500830185612725565b612b196105e0830184612747565b949350505050565b5f60208284031215612b31575f5ffd5b81518015158114611d0e575f5ffd5b6001600160401b038281168282160390811115610d5957610d596126d5565b5f6001600160401b0382166001600160401b038103612b8057612b806126d5565b60010192915050565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
3973    /// ```
3974    #[rustfmt::skip]
3975    #[allow(clippy::all)]
3976    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
3977        b"`\x80`@R`\x046\x10a\x01aW_5`\xE0\x1C\x80cqP\x18\xA6\x11a\0\xCDW\x80c\x9F\xDBT\xA7\x11a\0\x87W\x80c\xD2M\x93=\x11a\0bW\x80c\xD2M\x93=\x14a\x05 W\x80c\xE003\x01\x14a\x05OW\x80c\xF2\xFD\xE3\x8B\x14a\x05nW\x80c\xF9\xE5\r\x19\x14a\x05\x8DW__\xFD[\x80c\x9F\xDBT\xA7\x14a\x04VW\x80c\xAD<\xB1\xCC\x14a\x04\xABW\x80c\xC2;\x9E\x9E\x14a\x04\xE8W__\xFD[\x80cqP\x18\xA6\x14a\x03aW\x80c\x82nA\xFC\x14a\x03uW\x80c\x85\x84\xD2?\x14a\x03\xA0W\x80c\x8D\xA5\xCB[\x14a\x03\xDCW\x80c\x96\xC1\xCAa\x14a\x04\x18W\x80c\x9B\xAA<\xC9\x14a\x047W__\xFD[\x80c1=\xF7\xB1\x11a\x01\x1EW\x80c1=\xF7\xB1\x14a\x02\x8CW\x80c7\x8E\xC2;\x14a\x02\xC3W\x80cBm1\x94\x14a\x02\xE5W\x80cO\x1E\xF2\x86\x14a\x03&W\x80cR\xD1\x90-\x14a\x039W\x80ci\xCCj\x04\x14a\x03MW__\xFD[\x80c\x01?\xA5\xFC\x14a\x01eW\x80c\x02\xB5\x92\xF3\x14a\x01\x86W\x80c\r\x8En,\x14a\x01\xE3W\x80c\x12\x17<,\x14a\x02\x0EW\x80c c\xD4\xF7\x14a\x02/W\x80c/y\x88\x9D\x14a\x02NW[__\xFD[4\x80\x15a\x01pW__\xFD[Pa\x01\x84a\x01\x7F6`\x04a\x1F\xDCV[a\x05\xA1V[\0[4\x80\x15a\x01\x91W__\xFD[Pa\x01\xA5a\x01\xA06`\x04a\x1F\xF5V[a\x06TV[`@Qa\x01\xDA\x94\x93\x92\x91\x90`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x84\x01R\x92\x16`@\x82\x01R``\x81\x01\x91\x90\x91R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\xEEW__\xFD[P`@\x80Q`\x01\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x01\xDAV[4\x80\x15a\x02\x19W__\xFD[Pa\x02\"a\x06\x9DV[`@Qa\x01\xDA\x91\x90a \x0CV[4\x80\x15a\x02:W__\xFD[Pa\x01\x84a\x02I6`\x04a#AV[a\x06\xB2V[4\x80\x15a\x02YW__\xFD[P`\x08Ta\x02t\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\x97W__\xFD[P`\x08Ta\x02\xAB\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\xCEW__\xFD[Pa\x02\xD7a\x08\rV[`@Q\x90\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\xF0W__\xFD[P_T`\x01T`\x02T`\x03Ta\x03\x06\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x01\xDAV[a\x01\x84a\x0346`\x04a$\xF1V[a\x08oV[4\x80\x15a\x03DW__\xFD[Pa\x02\xD7a\x08\x8EV[4\x80\x15a\x03XW__\xFD[Pa\x01\x84a\x08\xA9V[4\x80\x15a\x03lW__\xFD[Pa\x01\x84a\t\x17V[4\x80\x15a\x03\x80W__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15[`@Q\x90\x15\x15\x81R` \x01a\x01\xDAV[4\x80\x15a\x03\xABW__\xFD[Pa\x03\xBFa\x03\xBA6`\x04a\x1F\xF5V[a\t(V[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x01\xDAV[4\x80\x15a\x03\xE7W__\xFD[P\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16a\x02\xABV[4\x80\x15a\x04#W__\xFD[Pa\x01\x84a\x0426`\x04a%\xA7V[a\nSV[4\x80\x15a\x04BW__\xFD[Pa\x01\x84a\x04Q6`\x04a%\xC0V[a\n\xDCV[4\x80\x15a\x04aW__\xFD[P`\x06T`\x07Ta\x04\x85\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[`@\x80Q`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x93\x90\x92\x16` \x84\x01R\x90\x82\x01R``\x01a\x01\xDAV[4\x80\x15a\x04\xB6W__\xFD[Pa\x04\xDB`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x01\xDA\x91\x90a&iV[4\x80\x15a\x04\xF3W__\xFD[P`\x08Ta\x05\x0B\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x05+W__\xFD[P`\x04T`\x05Ta\x04\x85\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x05ZW__\xFD[Pa\x03\x90a\x05i6`\x04a&\x9EV[a\x0B\xFEV[4\x80\x15a\x05yW__\xFD[Pa\x01\x84a\x05\x886`\x04a\x1F\xDCV[a\r_V[4\x80\x15a\x05\x98W__\xFD[P`\tTa\x02\xD7V[a\x05\xA9a\r\xA1V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x05\xD0W`@Qc\xE6\xC4${`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x90\x82\x16\x03a\x05\xFFW`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F\x80\x17\xBB\x88\x7F\xDF\x8F\xCAC\x14\xA9\xD4\x0Fns\xB3\xB8\x10\x02\xD6~\\\xFA\x85\xD8\x81s\xAFj\xA4`r\x90` \x01[`@Q\x80\x91\x03\x90\xA1PV[`\t\x81\x81T\x81\x10a\x06cW_\x80\xFD[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01\x80T`\x01\x90\x91\x01T`\x01`\x01`@\x1B\x03\x80\x83\x16\x93P`\x01`@\x1B\x83\x04\x81\x16\x92`\x01`\x80\x1B\x90\x04\x16\x90\x84V[a\x06\xA5a\x1D>V[a\x06\xADa\r\xFCV[\x90P\x90V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x06\xD7WP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x06\xF5W`@Qc\x01GL\x8F`\xE7\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T\x82Q`\x01`\x01`@\x1B\x03\x91\x82\x16\x91\x16\x11\x15\x80a\x07.WP`\x06T` \x83\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x07LW`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x07Y\x82`@\x01Qa\x14+V[a\x07c\x82\x82a\x14\x9BV[\x81Q`\x06\x80T` \x85\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x16\x92\x90\x92\x17\x91\x90\x91\x17\x90U`@\x82\x01Q`\x07Ua\x07\xB1a\x07\xAAa\x08\rV[B\x84a\x15\x8FV[\x81` \x01Q`\x01`\x01`@\x1B\x03\x16\x82_\x01Q`\x01`\x01`@\x1B\x03\x16\x7F\xA0Jw9$PZA\x85d67%\xF5h2\xF5w.k\x8D\r\xBDn\xFC\xE7$\xDF\xE8\x03\xDA\xE6\x84`@\x01Q`@Qa\x08\x01\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPV[_`d`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x08KW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xAD\x91\x90a&\xBEV[a\x08wa\x17xV[a\x08\x80\x82a\x18\x1CV[a\x08\x8A\x82\x82a\x18]V[PPV[_a\x08\x97a\x19\x1EV[P_Q` a+\xA0_9_Q\x90_R\x90V[a\x08\xB1a\r\xA1V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x08\xFCW`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U`@Q\x7F\x9A_W\xDE\x85m\xD6h\xC5M\xD9^\\U\xDF\x93C!q\xCB\xCAI\xA8wmV \xEAY\xC0$P\x90_\x90\xA1V[`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[V[a\t\x1Fa\r\xA1V[a\t\x15_a\x19gV[`\t\x80T_\x91\x82\x91\x90a\t<`\x01\x83a&\xE9V[\x81T\x81\x10a\tLWa\tLa&\xFCV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\t\x8BW`@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\nLW\x84`\t\x82\x81T\x81\x10a\t\xBBWa\t\xBBa&\xFCV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\nDW`\t\x81\x81T\x81\x10a\t\xF4Wa\t\xF4a&\xFCV[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\n\x17Wa\n\x17a&\xFCV[\x90_R` _ \x90`\x02\x02\x01_\x01`\x10\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`@\x1B\x03\x16\x93P\x93PPP\x91P\x91V[`\x01\x01a\t\x9FV[PP\x91P\x91V[a\n[a\r\xA1V[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\nzWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\n\x98WP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\n\xB6W`@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\x0B WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x0B;WP0;\x15[\x90P\x81\x15\x80\x15a\x0BIWP\x80\x15[\x15a\x0BgW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x84Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x85U\x83\x15a\x0B\x91W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x0B\x9A\x86a\x19\xD7V[a\x0B\xA2a\x19\xE8V[a\x0B\xAD\x89\x89\x89a\x19\xF0V[\x83\x15a\x0B\xF3W\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[`\tT_\x90a\x0C\x0Ba\x08\rV[\x84\x11\x80a\x0C\x16WP\x80\x15[\x80a\x0C`WP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x0CDWa\x0CDa&\xFCV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x0C~W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x0C\x8C`\x01\x85a&\xE9V[\x90P[\x81a\r(W`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\r(W\x86`\t\x82\x81T\x81\x10a\x0C\xC1Wa\x0C\xC1a&\xFCV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\r\x16W`\x01\x91P`\t\x81\x81T\x81\x10a\x0C\xF6Wa\x0C\xF6a&\xFCV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\r(V[\x80a\r \x81a'\x10V[\x91PPa\x0C\x8FV[\x81a\rFW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\rQ\x84\x89a&\xE9V[\x11\x94PPPPP[\x92\x91PPV[a\rga\r\xA1V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\r\x95W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\r\x9E\x81a\x19gV[PV[3a\r\xD3\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\t\x15W`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\r\x8CV[a\x0E\x04a\x1D>V[b\x10\0\0\x81R`\x07` \x82\x01R\x7F#x=\x0E\x97w\xB7\xAFe\xFB\xF8I\xDA~\xDBu\xE7K\x1E\xAFP>\x02]\x7F/\x7F\x80\x99\x1B\xEF\xA2`@\x82\x01QR\x7F*N/\xE8\xAD\xFAS\xF4hRU\x82\xD5\x18LLp\xBB\xDB\x94l!\xF2\x16A\x8A\x98yp^T\xA7` `@\x83\x01Q\x01R\x7F\x06$\xB2\xC1\xE7\x7F$\xAF\xCE\xAF9E\x17C\xB9\xFA\x80\xD5\x85?\xCA{\xA0\x03\x89\xC6ue\x07t\0\x9B``\x82\x01QR\x7F%\rw\x19\xE9L\xA2\xDF\0\xDF\xE3'\x93\x8FZ\x8DM\x83wy\xB9\x987\xCAwzS\xD3\x91'\xB1y` ``\x83\x01Q\x01R\x7F\r\xC0\x95\x15\x15.\xAE\xA6m\r\xB2\xF5q\xCC\x99^6\x9D&\xFEds\x94\xF1\r\xB59\x8C\x91u\x19\xDC`\x80\x82\x01QR\x7F\x12s\x14Ml\xEC,Jh\xB2J\x14\x93y\xC0\xF5Y+\xB7\xFB\xDD\xBE2\xFA\x17\x19\x19\x95\x0C\xA4\x04\xCB` `\x80\x83\x01Q\x01R\x7F\x11\x95!\xBBh\xCA\xEC!n/\x05\xEE\xB4f\xFB:\xBF\xE1\xF3\x9B\xAF\x7F\xE7\xCB9.\xA0W\xB6\xA2\xD9\xBF`\xA0\x82\x01QR\x7F-R\xAD\xEA\xBA\x80E\xE5:\xB5&\xFE\x99\x82\xD0\xEAE-\xEFk>\xA0%='\xA1\x9E\xF3\xB4n\x84(` `\xA0\x83\x01Q\x01R\x7F\x16\xC3\xB5\xB2\x17\xD3\x02\x97Z\x92\r\x137E$\xD7\xA5.JP\xFD\x7F\xB90\x84\"q\xEB\xF4\xA8N\xFD`\xC0\x82\x01QR\x7F \x07\x88\x91k\x90{\x19ir\xBD\xE3\x041\x8E\x88Z%!QK-\xB5\xE4\xA1\x18\x99\xC5\x12\x04\xF0\x89` `\xC0\x83\x01Q\x01R\x7F\x11'X\x1A\xFEu=\xEF\xCA\x9A\xEF\x12\xE73-\xB9\x97\x8A \x0B\x16\x99\xCE8\x88\xC0\xF3\xAE\xA6\x11\x1D\xC3`\xE0\x82\x01QR\x7F\x08\x81\xE1?\0r;\xE1\xA0Hr\xED\x02\xB2\xD0x\xC3\x1E\x80\xFE\xAF'rN&,\xE9|,\xB0\xBB\x1D` `\xE0\x83\x01Q\x01R\x7F\x14\x82\xA3\xA6\xBB\x91\xD6H=\x156\x83\xE2@O/UF\xE0\xE8\x95S\x0F\xDF\x13 \x91I\x84\x06\xE3\xDEa\x01\0\x82\x01QR~\xFAR\xDB=R\xD9\x05\xEA\xD1$\x81\x02\xF3\xA8\nC\xA9\r\x84\0\xC6\x8F`\xA6,T<A{/K` a\x01\0\x83\x01Q\x01R\x7F\nW\xDA\xDDJU\x19\x95%\xACj\xC6\xFA\xBC\x87\xA4\xCC\xCF\xDC\x98\x14+\xCE\xF9\xDB\xF4}\xE0\x0E\xCCQda\x01 \x82\x01QR\x7F\x18\xD9Z\xBD\x9B\x8E\x12\xC3i6\xAA!\x8C\xFF\xF5\x82T\x8Ak\xBF\xF2\\3\x8C \x06\xEA\xEB\x1F\xE5\xB6\x96` a\x01 \x83\x01Q\x01R\x7F+\xC4\x0E\x91\xDD\x16\x9B\x8B\xC1C\xA0)R\xA1\xB6\xC6\xE6'\xBF\xEBz+\xBEPx\xE1A#\xF3\xC5L\x1Ca\x01@\x82\x01QR\x7F\x10\x8De\xA2\x0CW\x9Bm\x98\x83'^\xB6\x88\x9F\xC3\xF5\xFCys\\\xA9\xF6\x11\xA1;g\xDA\xA2\xFB\xC8\xD0` a\x01@\x83\x01Q\x01R\x7F!\xBC\x1F\x86\xD0`\x8E_\x06&\xB4g\xEEo\x82\x82\xB6\x19\"?`\xA7\xAC\xB0\xFCc\xBA{\xDA\xF7\x83\xBEa\x01`\x82\x01QR\x7F\x05\xEF2\x82\xF8\xEE\xF0\x15\x15\xFB\x9A\x8A}l\xA0k\x8B\0}\x1DQ$\x03\xEF\xB2h\xFB\x03\xCE_\t\xE9` a\x01`\x83\x01Q\x01R\x7F,\xABf\xC1\xCBZ\x83\x86\x9Es\xAC4\xFB\xE4gHi\x99\xBA\xBDT\x1D\x90\x10\xEE\x9A\x80H\x06\xEE\xE4\xEFa\x01\x80\x82\x01QR\x7F-\xB1\x98$\x19\xC5\xA4\xA1u\x93\xAC\xFF\x955\xFA\x96v\x83\xD7\\\x8A\xEC\x011\x9Bd\xB8J\xAD\xA2\xAD\x84` a\x01\x80\x83\x01Q\x01R\x7F,8f|l~\xB8h\xBD\xD3\x0C4\xDD?K\x84\xD9\xB9\xB1\xA2}xg\xB3d\xC8\xB7\x83\x14#\xE9\x08a\x01\xA0\x82\x01QR\x7F+,\xB4\x04M\xD5\x11e\xC4\x818!\x9DQ\xCF\x8D\x16\x89\xF9\x1E\xD3\xEE\xEF\xEA\xD6\xE0U\xEBH\x8A,\xE2` a\x01\xA0\x83\x01Q\x01R\x7F-H\xE5G\x03\x01\x1D\xF2\xC7J\x14\xDA\xFD\xE3\xAFO\xD8>\xC7\x18u\xD8\xDD\xC3UFXd\x0C\xC9U\x01a\x01\xC0\x82\x01QR\x7F$:\x99\xD8\r2\xEBT\x08\xB5\x9D[\x080+\xED\xE0p\xD3\xFB\n\x8E\xFE/\"b\xF8e\xBF\xFBM\r` a\x01\xC0\x83\x01Q\x01R\x7F\x04U\xD22[\xF6&\x9Af\xF0}\x83\x8FU\xF3iG\xA3\xCD\x9B\x87\xED\xD8H\x0B\xCE\xD9\\\xBBE\xCC\x11a\x01\xE0\x82\x01QR\x7F\x0Ff\xD9\x08Zn\xD6\x0B\x83\x81y\x98~$\t\x92\xBF\xF4\xC0Ql\xCFl\xCD\xE4\xA1\xCA\x94\xCE\x8B\x98d` a\x01\xE0\x83\x01Q\x01R\x7F+\xAC\r#\xC8X]\x14\x87\xECa\x1B^\xFF\xC9~XR\xFE\xA4:|\xBA6\xCC\xDD, y1\xF3\x94a\x02\0\x82\x01QR\x7F\x18`\xB5N\x01\xA0j\xEAZ\xDBK\x13\xBF[\xAE\xBA\xB9+sh\x07\xA3\xA8\x9F\xF2\x04\t\x92\xB0n\xE6\xEC` a\x02\0\x83\x01Q\x01R\x7F\x0C\x0B\xFA\x1C/\xC6\xF8\xED\x01#=Qh\xDB\x1E\x1D\xFErU\x04\xF02\xF6i\xF5\n\x92\xAEw\xC7)\x06a\x02 \x82\x01QR\x7F\rt\x1E\x12L}\x10i\xB8\xA4\0\xCB\xCD\xCF\xD9\x01(\xA53\x90\x1A\xD4\xDE\x1E\x03\x7F\xE7)\x84\xDC4\xCF` a\x02 \x83\x01Q\x01R\x7F\x01\xCF\xED0\x08\\\x9E\xFC\xE0Fh W\x94\xAA9\xB1\xA8\xEEY\x124\xB4\xC7z\"\xF8\xC2m\x89\x9E\x05a\x02@\x82\x01QR\x7F*\xB6\x8A\xC8-6\xCE\xDBd}\x14\xA5\xB0\x03^\x8C\x9A\x0B\xE8G\x80\xB7\xBA\xE1\x13:'\xA8\x80\x96n\xD1` a\x02@\x83\x01Q\x01R\x7F\x07.\x1DP\xF8\xB5\xCF\x8DWK8G'dw\xD9[\xBDQ\x165\x10\0\x84\x1Fr\x8D\xA4O@C\xB5a\x02`\x82\x01QR\x7F#\xF8\xEAn\xAC\xD0\x87mW\"\x0FW\xEA\xBA\xCB\xE7j##A\x16cs\x1A%\x1D]\xCA6\xF1\xB5\x9F` a\x02`\x83\x01Q\x01R\x7F\xB0\x83\x88\x93\xEC\x1F#~\x8B\x072;\x07DY\x9FN\x97\xB5\x98\xB3\xB5\x89\xBC\xC2\xBC7\xB8\xD5\xC4\x18\x01a\x02\x80\x82\x01R\x7F\xC1\x83\x93\xC0\xFA0\xFEN\x8B\x03\x8E5z\xD8Q\xEA\xE8\xDE\x91\x07XN\xFF\xE7\xC7\xF1\xF6Q\xB2\x01\x0E&a\x02\xA0\x82\x01R\x90V[\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81\x10\x80a\x08\x8AW`@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\r\x8CV[_a\x14\xA4a\x06\x9DV[\x90Pa\x14\xAEa\x1F\xA3V[\x83Q`\x01`\x01`@\x1B\x03\x90\x81\x16\x82R` \x85\x01Q\x16\x81`\x01` \x02\x01R`@\x84\x81\x01Q\x82\x82\x01R`\x01T``\x83\x01R`\x02T`\x80\x83\x01R`\x03T`\xA0\x83\x01R_T`\xC0\x83\x01RQc\xCESzw`\xE0\x1B\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90c\xCESzw\x90a\x15-\x90\x85\x90\x85\x90\x88\x90`\x04\x01a)\x01V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\x15HW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15l\x91\x90a+!V[a\x15\x89W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPV[`\tT\x15\x80\x15\x90a\x16\x04WP`\x08T`\t\x80T`\x01`\xA0\x1B\x83\x04c\xFF\xFF\xFF\xFF\x16\x92`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x15\xCFWa\x15\xCFa&\xFCV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta\x15\xF9\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a+@V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a\x16\x97W`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x161Wa\x161a&\xFCV[_\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\x16q\x83a+_V[\x91\x90a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UPP[`@\x80Q`\x80\x81\x01\x82R`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x80\x85\x01\x91\x82R\x83\x01Q\x85\x16\x84\x83\x01\x90\x81R\x92\x90\x91\x01Q``\x84\x01\x90\x81R`\t\x80T`\x01\x81\x01\x82U_\x91\x90\x91R\x93Q`\x02\x90\x94\x02\x7Fn\x15@\x17\x1Bl\x0C\x96\x0Bq\xA7\x02\r\x9F`\x07\x7Fj\xF91\xA8\xBB\xF5\x90\xDA\x02#\xDA\xCFu\xC7\xAF\x81\x01\x80T\x93Q\x94Q\x87\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x95\x88\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x95\x16\x96\x90\x97\x16\x95\x90\x95\x17\x92\x90\x92\x17\x92\x90\x92\x16\x93\x90\x93\x17\x90\x91UQ\x7Fn\x15@\x17\x1Bl\x0C\x96\x0Bq\xA7\x02\r\x9F`\x07\x7Fj\xF91\xA8\xBB\xF5\x90\xDA\x02#\xDA\xCFu\xC7\xB0\x90\x91\x01UV[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14\x80a\x17\xFEWP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16a\x17\xF2_Q` a+\xA0_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\t\x15W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x18$a\r\xA1V[`@Q`\x01`\x01`\xA0\x1B\x03\x82\x16\x81R\x7F\xF7\x87!\"n\xFE\x9A\x1B\xB6x\x18\x9A\x16\xD1UI(\xB9\xF2\x19.,\xB9>\xED\xA8;y\xFA@\0}\x90` \x01a\x06IV[\x81`\x01`\x01`\xA0\x1B\x03\x16cR\xD1\x90-`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x92PPP\x80\x15a\x18\xB7WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x18\xB4\x91\x81\x01\x90a&\xBEV[`\x01[a\x18\xDFW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\r\x8CV[_Q` a+\xA0_9_Q\x90_R\x81\x14a\x19\x0FW`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\r\x8CV[a\x19\x19\x83\x83a\x1B\x1CV[PPPV[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\t\x15W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x82\x17\x84U`@Q\x92\x16\x91\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90_\x90\xA3PPPV[a\x19\xDFa\x1BqV[a\r\x9E\x81a\x1B\xBAV[a\t\x15a\x1BqV[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a\x1A\x14WP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\x1A!WP` \x82\x01Q\x15[\x80a\x1A.WP`@\x82\x01Q\x15[\x80a\x1A;WP``\x82\x01Q\x15[\x80a\x1AEWP\x81Q\x15[\x80a\x1AWWPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a\x1AkWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a\x1A\x89W`@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\x1B%\x82a\x1B\xC2V[`@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\x1BiWa\x19\x19\x82\x82a\x1C%V[a\x08\x8Aa\x1C\x97V[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0T`\x01`@\x1B\x90\x04`\xFF\x16a\t\x15W`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\rga\x1BqV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a\x1B\xF7W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\r\x8CV[_Q` a+\xA0_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\x1CA\x91\x90a+\x89V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x1CyW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1C~V[``\x91P[P\x91P\x91Pa\x1C\x8E\x85\x83\x83a\x1C\xB6V[\x95\x94PPPPPV[4\x15a\t\x15W`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a\x1C\xCBWa\x1C\xC6\x82a\x1D\x15V[a\x1D\x0EV[\x81Q\x15\x80\x15a\x1C\xE2WP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a\x1D\x0BW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\r\x8CV[P\x80[\x93\x92PPPV[\x80Q\x15a\x1D%W\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\x1Dq`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\x91`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\xB1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\xD1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\xF1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\x11`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1EQ`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1Eq`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\x91`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xB1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xD1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xF1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\x11`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1FQ`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1Fq`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\x91`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80`\xE0\x01`@R\x80`\x07\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x1F\xD7W__\xFD[\x91\x90PV[_` \x82\x84\x03\x12\x15a\x1F\xECW__\xFD[a\x1D\x0E\x82a\x1F\xC1V[_` \x82\x84\x03\x12\x15a \x05W__\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[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\"DWa\"Da\"\rV[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\"rWa\"ra\"\rV[`@R\x91\x90PV[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\x1F\xD7W__\xFD[_``\x82\x84\x03\x12\x15a\"\xA0W__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\"\xC2Wa\"\xC2a\"\rV[`@R\x90P\x80a\"\xD1\x83a\"zV[\x81Ra\"\xDF` \x84\x01a\"zV[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a#\x05W__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a#'Wa#'a\"\rV[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[__\x82\x84\x03a\x04\xE0\x81\x12\x15a#TW__\xFD[a#^\x85\x85a\"\x90V[\x92Pa\x04\x80`_\x19\x82\x01\x12\x15a#rW__\xFD[Pa#{a\"!V[a#\x88\x85``\x86\x01a\"\xF5V[\x81Ra#\x97\x85`\xA0\x86\x01a\"\xF5V[` \x82\x01Ra#\xA9\x85`\xE0\x86\x01a\"\xF5V[`@\x82\x01Ra#\xBC\x85a\x01 \x86\x01a\"\xF5V[``\x82\x01Ra#\xCF\x85a\x01`\x86\x01a\"\xF5V[`\x80\x82\x01Ra#\xE2\x85a\x01\xA0\x86\x01a\"\xF5V[`\xA0\x82\x01Ra#\xF5\x85a\x01\xE0\x86\x01a\"\xF5V[`\xC0\x82\x01Ra$\x08\x85a\x02 \x86\x01a\"\xF5V[`\xE0\x82\x01Ra$\x1B\x85a\x02`\x86\x01a\"\xF5V[a\x01\0\x82\x01Ra$/\x85a\x02\xA0\x86\x01a\"\xF5V[a\x01 \x82\x01Ra$C\x85a\x02\xE0\x86\x01a\"\xF5V[a\x01@\x82\x01Ra$W\x85a\x03 \x86\x01a\"\xF5V[a\x01`\x82\x01Ra$k\x85a\x03`\x86\x01a\"\xF5V[a\x01\x80\x82\x01Ra\x03\xA0\x84\x015a\x01\xA0\x82\x01Ra\x03\xC0\x84\x015a\x01\xC0\x82\x01Ra\x03\xE0\x84\x015a\x01\xE0\x82\x01Ra\x04\0\x84\x015a\x02\0\x82\x01Ra\x04 \x84\x015a\x02 \x82\x01Ra\x04@\x84\x015a\x02@\x82\x01Ra\x04`\x84\x015a\x02`\x82\x01Ra\x04\x80\x84\x015a\x02\x80\x82\x01Ra\x04\xA0\x84\x015a\x02\xA0\x82\x01Ra\x04\xC0\x90\x93\x015a\x02\xC0\x84\x01RP\x92\x90\x91PV[__`@\x83\x85\x03\x12\x15a%\x02W__\xFD[a%\x0B\x83a\x1F\xC1V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a%%W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a%5W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a%NWa%Na\"\rV[a%a`\x1F\x82\x01`\x1F\x19\x16` \x01a\"JV[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a%uW__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1F\xD7W__\xFD[_` \x82\x84\x03\x12\x15a%\xB7W__\xFD[a\x1D\x0E\x82a%\x94V[____\x84\x86\x03a\x01 \x81\x12\x15a%\xD5W__\xFD[a%\xDF\x87\x87a\"\x90V[\x94P`\x80`_\x19\x82\x01\x12\x15a%\xF2W__\xFD[P`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x15Wa&\x15a\"\rV[`@\x90\x81R``\x87\x81\x015\x83R`\x80\x88\x015` \x84\x01R`\xA0\x88\x015\x91\x83\x01\x91\x90\x91R`\xC0\x87\x015\x90\x82\x01R\x92Pa&O`\xE0\x86\x01a%\x94V[\x91Pa&^a\x01\0\x86\x01a\x1F\xC1V[\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&\xAFW__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[_` \x82\x84\x03\x12\x15a&\xCEW__\xFD[PQ\x91\x90PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\rYWa\rYa&\xD5V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_\x81a'\x1EWa'\x1Ea&\xD5V[P_\x19\x01\x90V[\x80_[`\x07\x81\x10\x15a\x15\x89W\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a'(V[a'\\\x82\x82Q\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[` \x81\x81\x01Q\x80Q`@\x85\x01R\x90\x81\x01Q``\x84\x01RP`@\x81\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP``\x81\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\x80\x81\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xA0\x81\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xC0\x81\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RP`\xE0\x81\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01\0\x81\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01 \x81\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01@\x81\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01`\x81\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\x80\x81\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xA0\x81\x01Qa\x03@\x83\x01Ra\x01\xC0\x81\x01Qa\x03`\x83\x01Ra\x01\xE0\x81\x01Qa\x03\x80\x83\x01Ra\x02\0\x81\x01Qa\x03\xA0\x83\x01Ra\x02 \x81\x01Qa\x03\xC0\x83\x01Ra\x02@\x81\x01Qa\x03\xE0\x83\x01Ra\x02`\x81\x01Qa\x04\0\x83\x01Ra\x02\x80\x81\x01Qa\x04 \x83\x01Ra\x02\xA0\x81\x01Qa\x04@\x83\x01Ra\x02\xC0\x01Qa\x04`\x90\x91\x01RV[_a\n`\x82\x01\x90P\x84Q\x82R` \x85\x01Q` \x83\x01R`@\x85\x01Qa)3`@\x84\x01\x82\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[P``\x85\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP`\x80\x85\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\xA0\x85\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xC0\x85\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xE0\x85\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RPa\x01\0\x85\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01 \x85\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01@\x85\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01`\x85\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01\x80\x85\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\xA0\x85\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xC0\x85\x01Q\x80Qa\x03@\x84\x01R` \x81\x01Qa\x03`\x84\x01RPa\x01\xE0\x85\x01Q\x80Qa\x03\x80\x84\x01R` \x81\x01Qa\x03\xA0\x84\x01RPa\x02\0\x85\x01Q\x80Qa\x03\xC0\x84\x01R` \x81\x01Qa\x03\xE0\x84\x01RPa\x02 \x85\x01Q\x80Qa\x04\0\x84\x01R` \x81\x01Qa\x04 \x84\x01RPa\x02@\x85\x01Q\x80Qa\x04@\x84\x01R` \x81\x01Qa\x04`\x84\x01RPa\x02`\x85\x01Q\x80Qa\x04\x80\x84\x01R` \x81\x01Qa\x04\xA0\x84\x01RPa\x02\x80\x85\x01Qa\x04\xC0\x83\x01Ra\x02\xA0\x85\x01Qa\x04\xE0\x83\x01Ra+\x0Ba\x05\0\x83\x01\x85a'%V[a+\x19a\x05\xE0\x83\x01\x84a'GV[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a+1W__\xFD[\x81Q\x80\x15\x15\x81\x14a\x1D\x0EW__\xFD[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\rYWa\rYa&\xD5V[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a+\x80Wa+\x80a&\xD5V[`\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",
3978    );
3979    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3980    /**Custom error with signature `AddressEmptyCode(address)` and selector `0x9996b315`.
3981    ```solidity
3982    error AddressEmptyCode(address target);
3983    ```*/
3984    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3985    #[derive(Clone)]
3986    pub struct AddressEmptyCode {
3987        #[allow(missing_docs)]
3988        pub target: alloy::sol_types::private::Address,
3989    }
3990    #[allow(
3991        non_camel_case_types,
3992        non_snake_case,
3993        clippy::pub_underscore_fields,
3994        clippy::style
3995    )]
3996    const _: () = {
3997        use alloy::sol_types as alloy_sol_types;
3998        #[doc(hidden)]
3999        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4000        #[doc(hidden)]
4001        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4002        #[cfg(test)]
4003        #[allow(dead_code, unreachable_patterns)]
4004        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4005            match _t {
4006                alloy_sol_types::private::AssertTypeEq::<
4007                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4008                >(_) => {},
4009            }
4010        }
4011        #[automatically_derived]
4012        #[doc(hidden)]
4013        impl ::core::convert::From<AddressEmptyCode> for UnderlyingRustTuple<'_> {
4014            fn from(value: AddressEmptyCode) -> Self {
4015                (value.target,)
4016            }
4017        }
4018        #[automatically_derived]
4019        #[doc(hidden)]
4020        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AddressEmptyCode {
4021            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4022                Self { target: tuple.0 }
4023            }
4024        }
4025        #[automatically_derived]
4026        impl alloy_sol_types::SolError for AddressEmptyCode {
4027            type Parameters<'a> = UnderlyingSolTuple<'a>;
4028            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4029            const SIGNATURE: &'static str = "AddressEmptyCode(address)";
4030            const SELECTOR: [u8; 4] = [153u8, 150u8, 179u8, 21u8];
4031            #[inline]
4032            fn new<'a>(
4033                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4034            ) -> Self {
4035                tuple.into()
4036            }
4037            #[inline]
4038            fn tokenize(&self) -> Self::Token<'_> {
4039                (
4040                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4041                        &self.target,
4042                    ),
4043                )
4044            }
4045        }
4046    };
4047    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4048    /**Custom error with signature `ERC1967InvalidImplementation(address)` and selector `0x4c9c8ce3`.
4049    ```solidity
4050    error ERC1967InvalidImplementation(address implementation);
4051    ```*/
4052    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4053    #[derive(Clone)]
4054    pub struct ERC1967InvalidImplementation {
4055        #[allow(missing_docs)]
4056        pub implementation: alloy::sol_types::private::Address,
4057    }
4058    #[allow(
4059        non_camel_case_types,
4060        non_snake_case,
4061        clippy::pub_underscore_fields,
4062        clippy::style
4063    )]
4064    const _: () = {
4065        use alloy::sol_types as alloy_sol_types;
4066        #[doc(hidden)]
4067        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4068        #[doc(hidden)]
4069        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4070        #[cfg(test)]
4071        #[allow(dead_code, unreachable_patterns)]
4072        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4073            match _t {
4074                alloy_sol_types::private::AssertTypeEq::<
4075                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4076                >(_) => {},
4077            }
4078        }
4079        #[automatically_derived]
4080        #[doc(hidden)]
4081        impl ::core::convert::From<ERC1967InvalidImplementation> for UnderlyingRustTuple<'_> {
4082            fn from(value: ERC1967InvalidImplementation) -> Self {
4083                (value.implementation,)
4084            }
4085        }
4086        #[automatically_derived]
4087        #[doc(hidden)]
4088        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967InvalidImplementation {
4089            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4090                Self {
4091                    implementation: tuple.0,
4092                }
4093            }
4094        }
4095        #[automatically_derived]
4096        impl alloy_sol_types::SolError for ERC1967InvalidImplementation {
4097            type Parameters<'a> = UnderlyingSolTuple<'a>;
4098            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4099            const SIGNATURE: &'static str = "ERC1967InvalidImplementation(address)";
4100            const SELECTOR: [u8; 4] = [76u8, 156u8, 140u8, 227u8];
4101            #[inline]
4102            fn new<'a>(
4103                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4104            ) -> Self {
4105                tuple.into()
4106            }
4107            #[inline]
4108            fn tokenize(&self) -> Self::Token<'_> {
4109                (
4110                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4111                        &self.implementation,
4112                    ),
4113                )
4114            }
4115        }
4116    };
4117    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4118    /**Custom error with signature `ERC1967NonPayable()` and selector `0xb398979f`.
4119    ```solidity
4120    error ERC1967NonPayable();
4121    ```*/
4122    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4123    #[derive(Clone)]
4124    pub struct ERC1967NonPayable {}
4125    #[allow(
4126        non_camel_case_types,
4127        non_snake_case,
4128        clippy::pub_underscore_fields,
4129        clippy::style
4130    )]
4131    const _: () = {
4132        use alloy::sol_types as alloy_sol_types;
4133        #[doc(hidden)]
4134        type UnderlyingSolTuple<'a> = ();
4135        #[doc(hidden)]
4136        type UnderlyingRustTuple<'a> = ();
4137        #[cfg(test)]
4138        #[allow(dead_code, unreachable_patterns)]
4139        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4140            match _t {
4141                alloy_sol_types::private::AssertTypeEq::<
4142                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4143                >(_) => {},
4144            }
4145        }
4146        #[automatically_derived]
4147        #[doc(hidden)]
4148        impl ::core::convert::From<ERC1967NonPayable> for UnderlyingRustTuple<'_> {
4149            fn from(value: ERC1967NonPayable) -> Self {
4150                ()
4151            }
4152        }
4153        #[automatically_derived]
4154        #[doc(hidden)]
4155        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967NonPayable {
4156            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4157                Self {}
4158            }
4159        }
4160        #[automatically_derived]
4161        impl alloy_sol_types::SolError for ERC1967NonPayable {
4162            type Parameters<'a> = UnderlyingSolTuple<'a>;
4163            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4164            const SIGNATURE: &'static str = "ERC1967NonPayable()";
4165            const SELECTOR: [u8; 4] = [179u8, 152u8, 151u8, 159u8];
4166            #[inline]
4167            fn new<'a>(
4168                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4169            ) -> Self {
4170                tuple.into()
4171            }
4172            #[inline]
4173            fn tokenize(&self) -> Self::Token<'_> {
4174                ()
4175            }
4176        }
4177    };
4178    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4179    /**Custom error with signature `FailedInnerCall()` and selector `0x1425ea42`.
4180    ```solidity
4181    error FailedInnerCall();
4182    ```*/
4183    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4184    #[derive(Clone)]
4185    pub struct FailedInnerCall {}
4186    #[allow(
4187        non_camel_case_types,
4188        non_snake_case,
4189        clippy::pub_underscore_fields,
4190        clippy::style
4191    )]
4192    const _: () = {
4193        use alloy::sol_types as alloy_sol_types;
4194        #[doc(hidden)]
4195        type UnderlyingSolTuple<'a> = ();
4196        #[doc(hidden)]
4197        type UnderlyingRustTuple<'a> = ();
4198        #[cfg(test)]
4199        #[allow(dead_code, unreachable_patterns)]
4200        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4201            match _t {
4202                alloy_sol_types::private::AssertTypeEq::<
4203                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4204                >(_) => {},
4205            }
4206        }
4207        #[automatically_derived]
4208        #[doc(hidden)]
4209        impl ::core::convert::From<FailedInnerCall> for UnderlyingRustTuple<'_> {
4210            fn from(value: FailedInnerCall) -> Self {
4211                ()
4212            }
4213        }
4214        #[automatically_derived]
4215        #[doc(hidden)]
4216        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FailedInnerCall {
4217            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4218                Self {}
4219            }
4220        }
4221        #[automatically_derived]
4222        impl alloy_sol_types::SolError for FailedInnerCall {
4223            type Parameters<'a> = UnderlyingSolTuple<'a>;
4224            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4225            const SIGNATURE: &'static str = "FailedInnerCall()";
4226            const SELECTOR: [u8; 4] = [20u8, 37u8, 234u8, 66u8];
4227            #[inline]
4228            fn new<'a>(
4229                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4230            ) -> Self {
4231                tuple.into()
4232            }
4233            #[inline]
4234            fn tokenize(&self) -> Self::Token<'_> {
4235                ()
4236            }
4237        }
4238    };
4239    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4240    /**Custom error with signature `InsufficientSnapshotHistory()` and selector `0xb0b43877`.
4241    ```solidity
4242    error InsufficientSnapshotHistory();
4243    ```*/
4244    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4245    #[derive(Clone)]
4246    pub struct InsufficientSnapshotHistory {}
4247    #[allow(
4248        non_camel_case_types,
4249        non_snake_case,
4250        clippy::pub_underscore_fields,
4251        clippy::style
4252    )]
4253    const _: () = {
4254        use alloy::sol_types as alloy_sol_types;
4255        #[doc(hidden)]
4256        type UnderlyingSolTuple<'a> = ();
4257        #[doc(hidden)]
4258        type UnderlyingRustTuple<'a> = ();
4259        #[cfg(test)]
4260        #[allow(dead_code, unreachable_patterns)]
4261        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4262            match _t {
4263                alloy_sol_types::private::AssertTypeEq::<
4264                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4265                >(_) => {},
4266            }
4267        }
4268        #[automatically_derived]
4269        #[doc(hidden)]
4270        impl ::core::convert::From<InsufficientSnapshotHistory> for UnderlyingRustTuple<'_> {
4271            fn from(value: InsufficientSnapshotHistory) -> Self {
4272                ()
4273            }
4274        }
4275        #[automatically_derived]
4276        #[doc(hidden)]
4277        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InsufficientSnapshotHistory {
4278            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4279                Self {}
4280            }
4281        }
4282        #[automatically_derived]
4283        impl alloy_sol_types::SolError for InsufficientSnapshotHistory {
4284            type Parameters<'a> = UnderlyingSolTuple<'a>;
4285            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4286            const SIGNATURE: &'static str = "InsufficientSnapshotHistory()";
4287            const SELECTOR: [u8; 4] = [176u8, 180u8, 56u8, 119u8];
4288            #[inline]
4289            fn new<'a>(
4290                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4291            ) -> Self {
4292                tuple.into()
4293            }
4294            #[inline]
4295            fn tokenize(&self) -> Self::Token<'_> {
4296                ()
4297            }
4298        }
4299    };
4300    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4301    /**Custom error with signature `InvalidAddress()` and selector `0xe6c4247b`.
4302    ```solidity
4303    error InvalidAddress();
4304    ```*/
4305    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4306    #[derive(Clone)]
4307    pub struct InvalidAddress {}
4308    #[allow(
4309        non_camel_case_types,
4310        non_snake_case,
4311        clippy::pub_underscore_fields,
4312        clippy::style
4313    )]
4314    const _: () = {
4315        use alloy::sol_types as alloy_sol_types;
4316        #[doc(hidden)]
4317        type UnderlyingSolTuple<'a> = ();
4318        #[doc(hidden)]
4319        type UnderlyingRustTuple<'a> = ();
4320        #[cfg(test)]
4321        #[allow(dead_code, unreachable_patterns)]
4322        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4323            match _t {
4324                alloy_sol_types::private::AssertTypeEq::<
4325                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4326                >(_) => {},
4327            }
4328        }
4329        #[automatically_derived]
4330        #[doc(hidden)]
4331        impl ::core::convert::From<InvalidAddress> for UnderlyingRustTuple<'_> {
4332            fn from(value: InvalidAddress) -> Self {
4333                ()
4334            }
4335        }
4336        #[automatically_derived]
4337        #[doc(hidden)]
4338        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidAddress {
4339            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4340                Self {}
4341            }
4342        }
4343        #[automatically_derived]
4344        impl alloy_sol_types::SolError for InvalidAddress {
4345            type Parameters<'a> = UnderlyingSolTuple<'a>;
4346            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4347            const SIGNATURE: &'static str = "InvalidAddress()";
4348            const SELECTOR: [u8; 4] = [230u8, 196u8, 36u8, 123u8];
4349            #[inline]
4350            fn new<'a>(
4351                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4352            ) -> Self {
4353                tuple.into()
4354            }
4355            #[inline]
4356            fn tokenize(&self) -> Self::Token<'_> {
4357                ()
4358            }
4359        }
4360    };
4361    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4362    /**Custom error with signature `InvalidArgs()` and selector `0xa1ba07ee`.
4363    ```solidity
4364    error InvalidArgs();
4365    ```*/
4366    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4367    #[derive(Clone)]
4368    pub struct InvalidArgs {}
4369    #[allow(
4370        non_camel_case_types,
4371        non_snake_case,
4372        clippy::pub_underscore_fields,
4373        clippy::style
4374    )]
4375    const _: () = {
4376        use alloy::sol_types as alloy_sol_types;
4377        #[doc(hidden)]
4378        type UnderlyingSolTuple<'a> = ();
4379        #[doc(hidden)]
4380        type UnderlyingRustTuple<'a> = ();
4381        #[cfg(test)]
4382        #[allow(dead_code, unreachable_patterns)]
4383        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4384            match _t {
4385                alloy_sol_types::private::AssertTypeEq::<
4386                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4387                >(_) => {},
4388            }
4389        }
4390        #[automatically_derived]
4391        #[doc(hidden)]
4392        impl ::core::convert::From<InvalidArgs> for UnderlyingRustTuple<'_> {
4393            fn from(value: InvalidArgs) -> Self {
4394                ()
4395            }
4396        }
4397        #[automatically_derived]
4398        #[doc(hidden)]
4399        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidArgs {
4400            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4401                Self {}
4402            }
4403        }
4404        #[automatically_derived]
4405        impl alloy_sol_types::SolError for InvalidArgs {
4406            type Parameters<'a> = UnderlyingSolTuple<'a>;
4407            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4408            const SIGNATURE: &'static str = "InvalidArgs()";
4409            const SELECTOR: [u8; 4] = [161u8, 186u8, 7u8, 238u8];
4410            #[inline]
4411            fn new<'a>(
4412                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4413            ) -> Self {
4414                tuple.into()
4415            }
4416            #[inline]
4417            fn tokenize(&self) -> Self::Token<'_> {
4418                ()
4419            }
4420        }
4421    };
4422    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4423    /**Custom error with signature `InvalidHotShotBlockForCommitmentCheck()` and selector `0x615a9264`.
4424    ```solidity
4425    error InvalidHotShotBlockForCommitmentCheck();
4426    ```*/
4427    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4428    #[derive(Clone)]
4429    pub struct InvalidHotShotBlockForCommitmentCheck {}
4430    #[allow(
4431        non_camel_case_types,
4432        non_snake_case,
4433        clippy::pub_underscore_fields,
4434        clippy::style
4435    )]
4436    const _: () = {
4437        use alloy::sol_types as alloy_sol_types;
4438        #[doc(hidden)]
4439        type UnderlyingSolTuple<'a> = ();
4440        #[doc(hidden)]
4441        type UnderlyingRustTuple<'a> = ();
4442        #[cfg(test)]
4443        #[allow(dead_code, unreachable_patterns)]
4444        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4445            match _t {
4446                alloy_sol_types::private::AssertTypeEq::<
4447                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4448                >(_) => {},
4449            }
4450        }
4451        #[automatically_derived]
4452        #[doc(hidden)]
4453        impl ::core::convert::From<InvalidHotShotBlockForCommitmentCheck> for UnderlyingRustTuple<'_> {
4454            fn from(value: InvalidHotShotBlockForCommitmentCheck) -> Self {
4455                ()
4456            }
4457        }
4458        #[automatically_derived]
4459        #[doc(hidden)]
4460        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidHotShotBlockForCommitmentCheck {
4461            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4462                Self {}
4463            }
4464        }
4465        #[automatically_derived]
4466        impl alloy_sol_types::SolError for InvalidHotShotBlockForCommitmentCheck {
4467            type Parameters<'a> = UnderlyingSolTuple<'a>;
4468            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4469            const SIGNATURE: &'static str = "InvalidHotShotBlockForCommitmentCheck()";
4470            const SELECTOR: [u8; 4] = [97u8, 90u8, 146u8, 100u8];
4471            #[inline]
4472            fn new<'a>(
4473                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4474            ) -> Self {
4475                tuple.into()
4476            }
4477            #[inline]
4478            fn tokenize(&self) -> Self::Token<'_> {
4479                ()
4480            }
4481        }
4482    };
4483    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4484    /**Custom error with signature `InvalidInitialization()` and selector `0xf92ee8a9`.
4485    ```solidity
4486    error InvalidInitialization();
4487    ```*/
4488    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4489    #[derive(Clone)]
4490    pub struct InvalidInitialization {}
4491    #[allow(
4492        non_camel_case_types,
4493        non_snake_case,
4494        clippy::pub_underscore_fields,
4495        clippy::style
4496    )]
4497    const _: () = {
4498        use alloy::sol_types as alloy_sol_types;
4499        #[doc(hidden)]
4500        type UnderlyingSolTuple<'a> = ();
4501        #[doc(hidden)]
4502        type UnderlyingRustTuple<'a> = ();
4503        #[cfg(test)]
4504        #[allow(dead_code, unreachable_patterns)]
4505        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4506            match _t {
4507                alloy_sol_types::private::AssertTypeEq::<
4508                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4509                >(_) => {},
4510            }
4511        }
4512        #[automatically_derived]
4513        #[doc(hidden)]
4514        impl ::core::convert::From<InvalidInitialization> for UnderlyingRustTuple<'_> {
4515            fn from(value: InvalidInitialization) -> Self {
4516                ()
4517            }
4518        }
4519        #[automatically_derived]
4520        #[doc(hidden)]
4521        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidInitialization {
4522            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4523                Self {}
4524            }
4525        }
4526        #[automatically_derived]
4527        impl alloy_sol_types::SolError for InvalidInitialization {
4528            type Parameters<'a> = UnderlyingSolTuple<'a>;
4529            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4530            const SIGNATURE: &'static str = "InvalidInitialization()";
4531            const SELECTOR: [u8; 4] = [249u8, 46u8, 232u8, 169u8];
4532            #[inline]
4533            fn new<'a>(
4534                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4535            ) -> Self {
4536                tuple.into()
4537            }
4538            #[inline]
4539            fn tokenize(&self) -> Self::Token<'_> {
4540                ()
4541            }
4542        }
4543    };
4544    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4545    /**Custom error with signature `InvalidMaxStateHistory()` and selector `0xf4a0eee0`.
4546    ```solidity
4547    error InvalidMaxStateHistory();
4548    ```*/
4549    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4550    #[derive(Clone)]
4551    pub struct InvalidMaxStateHistory {}
4552    #[allow(
4553        non_camel_case_types,
4554        non_snake_case,
4555        clippy::pub_underscore_fields,
4556        clippy::style
4557    )]
4558    const _: () = {
4559        use alloy::sol_types as alloy_sol_types;
4560        #[doc(hidden)]
4561        type UnderlyingSolTuple<'a> = ();
4562        #[doc(hidden)]
4563        type UnderlyingRustTuple<'a> = ();
4564        #[cfg(test)]
4565        #[allow(dead_code, unreachable_patterns)]
4566        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4567            match _t {
4568                alloy_sol_types::private::AssertTypeEq::<
4569                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4570                >(_) => {},
4571            }
4572        }
4573        #[automatically_derived]
4574        #[doc(hidden)]
4575        impl ::core::convert::From<InvalidMaxStateHistory> for UnderlyingRustTuple<'_> {
4576            fn from(value: InvalidMaxStateHistory) -> Self {
4577                ()
4578            }
4579        }
4580        #[automatically_derived]
4581        #[doc(hidden)]
4582        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidMaxStateHistory {
4583            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4584                Self {}
4585            }
4586        }
4587        #[automatically_derived]
4588        impl alloy_sol_types::SolError for InvalidMaxStateHistory {
4589            type Parameters<'a> = UnderlyingSolTuple<'a>;
4590            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4591            const SIGNATURE: &'static str = "InvalidMaxStateHistory()";
4592            const SELECTOR: [u8; 4] = [244u8, 160u8, 238u8, 224u8];
4593            #[inline]
4594            fn new<'a>(
4595                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4596            ) -> Self {
4597                tuple.into()
4598            }
4599            #[inline]
4600            fn tokenize(&self) -> Self::Token<'_> {
4601                ()
4602            }
4603        }
4604    };
4605    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4606    /**Custom error with signature `InvalidProof()` and selector `0x09bde339`.
4607    ```solidity
4608    error InvalidProof();
4609    ```*/
4610    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4611    #[derive(Clone)]
4612    pub struct InvalidProof {}
4613    #[allow(
4614        non_camel_case_types,
4615        non_snake_case,
4616        clippy::pub_underscore_fields,
4617        clippy::style
4618    )]
4619    const _: () = {
4620        use alloy::sol_types as alloy_sol_types;
4621        #[doc(hidden)]
4622        type UnderlyingSolTuple<'a> = ();
4623        #[doc(hidden)]
4624        type UnderlyingRustTuple<'a> = ();
4625        #[cfg(test)]
4626        #[allow(dead_code, unreachable_patterns)]
4627        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4628            match _t {
4629                alloy_sol_types::private::AssertTypeEq::<
4630                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4631                >(_) => {},
4632            }
4633        }
4634        #[automatically_derived]
4635        #[doc(hidden)]
4636        impl ::core::convert::From<InvalidProof> for UnderlyingRustTuple<'_> {
4637            fn from(value: InvalidProof) -> Self {
4638                ()
4639            }
4640        }
4641        #[automatically_derived]
4642        #[doc(hidden)]
4643        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidProof {
4644            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4645                Self {}
4646            }
4647        }
4648        #[automatically_derived]
4649        impl alloy_sol_types::SolError for InvalidProof {
4650            type Parameters<'a> = UnderlyingSolTuple<'a>;
4651            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4652            const SIGNATURE: &'static str = "InvalidProof()";
4653            const SELECTOR: [u8; 4] = [9u8, 189u8, 227u8, 57u8];
4654            #[inline]
4655            fn new<'a>(
4656                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4657            ) -> Self {
4658                tuple.into()
4659            }
4660            #[inline]
4661            fn tokenize(&self) -> Self::Token<'_> {
4662                ()
4663            }
4664        }
4665    };
4666    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4667    /**Custom error with signature `NoChangeRequired()` and selector `0xa863aec9`.
4668    ```solidity
4669    error NoChangeRequired();
4670    ```*/
4671    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4672    #[derive(Clone)]
4673    pub struct NoChangeRequired {}
4674    #[allow(
4675        non_camel_case_types,
4676        non_snake_case,
4677        clippy::pub_underscore_fields,
4678        clippy::style
4679    )]
4680    const _: () = {
4681        use alloy::sol_types as alloy_sol_types;
4682        #[doc(hidden)]
4683        type UnderlyingSolTuple<'a> = ();
4684        #[doc(hidden)]
4685        type UnderlyingRustTuple<'a> = ();
4686        #[cfg(test)]
4687        #[allow(dead_code, unreachable_patterns)]
4688        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4689            match _t {
4690                alloy_sol_types::private::AssertTypeEq::<
4691                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4692                >(_) => {},
4693            }
4694        }
4695        #[automatically_derived]
4696        #[doc(hidden)]
4697        impl ::core::convert::From<NoChangeRequired> for UnderlyingRustTuple<'_> {
4698            fn from(value: NoChangeRequired) -> Self {
4699                ()
4700            }
4701        }
4702        #[automatically_derived]
4703        #[doc(hidden)]
4704        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NoChangeRequired {
4705            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4706                Self {}
4707            }
4708        }
4709        #[automatically_derived]
4710        impl alloy_sol_types::SolError for NoChangeRequired {
4711            type Parameters<'a> = UnderlyingSolTuple<'a>;
4712            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4713            const SIGNATURE: &'static str = "NoChangeRequired()";
4714            const SELECTOR: [u8; 4] = [168u8, 99u8, 174u8, 201u8];
4715            #[inline]
4716            fn new<'a>(
4717                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4718            ) -> Self {
4719                tuple.into()
4720            }
4721            #[inline]
4722            fn tokenize(&self) -> Self::Token<'_> {
4723                ()
4724            }
4725        }
4726    };
4727    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4728    /**Custom error with signature `NotInitializing()` and selector `0xd7e6bcf8`.
4729    ```solidity
4730    error NotInitializing();
4731    ```*/
4732    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4733    #[derive(Clone)]
4734    pub struct NotInitializing {}
4735    #[allow(
4736        non_camel_case_types,
4737        non_snake_case,
4738        clippy::pub_underscore_fields,
4739        clippy::style
4740    )]
4741    const _: () = {
4742        use alloy::sol_types as alloy_sol_types;
4743        #[doc(hidden)]
4744        type UnderlyingSolTuple<'a> = ();
4745        #[doc(hidden)]
4746        type UnderlyingRustTuple<'a> = ();
4747        #[cfg(test)]
4748        #[allow(dead_code, unreachable_patterns)]
4749        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4750            match _t {
4751                alloy_sol_types::private::AssertTypeEq::<
4752                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4753                >(_) => {},
4754            }
4755        }
4756        #[automatically_derived]
4757        #[doc(hidden)]
4758        impl ::core::convert::From<NotInitializing> for UnderlyingRustTuple<'_> {
4759            fn from(value: NotInitializing) -> Self {
4760                ()
4761            }
4762        }
4763        #[automatically_derived]
4764        #[doc(hidden)]
4765        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NotInitializing {
4766            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4767                Self {}
4768            }
4769        }
4770        #[automatically_derived]
4771        impl alloy_sol_types::SolError for NotInitializing {
4772            type Parameters<'a> = UnderlyingSolTuple<'a>;
4773            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4774            const SIGNATURE: &'static str = "NotInitializing()";
4775            const SELECTOR: [u8; 4] = [215u8, 230u8, 188u8, 248u8];
4776            #[inline]
4777            fn new<'a>(
4778                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4779            ) -> Self {
4780                tuple.into()
4781            }
4782            #[inline]
4783            fn tokenize(&self) -> Self::Token<'_> {
4784                ()
4785            }
4786        }
4787    };
4788    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4789    /**Custom error with signature `OutdatedState()` and selector `0x051c46ef`.
4790    ```solidity
4791    error OutdatedState();
4792    ```*/
4793    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4794    #[derive(Clone)]
4795    pub struct OutdatedState {}
4796    #[allow(
4797        non_camel_case_types,
4798        non_snake_case,
4799        clippy::pub_underscore_fields,
4800        clippy::style
4801    )]
4802    const _: () = {
4803        use alloy::sol_types as alloy_sol_types;
4804        #[doc(hidden)]
4805        type UnderlyingSolTuple<'a> = ();
4806        #[doc(hidden)]
4807        type UnderlyingRustTuple<'a> = ();
4808        #[cfg(test)]
4809        #[allow(dead_code, unreachable_patterns)]
4810        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4811            match _t {
4812                alloy_sol_types::private::AssertTypeEq::<
4813                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4814                >(_) => {},
4815            }
4816        }
4817        #[automatically_derived]
4818        #[doc(hidden)]
4819        impl ::core::convert::From<OutdatedState> for UnderlyingRustTuple<'_> {
4820            fn from(value: OutdatedState) -> Self {
4821                ()
4822            }
4823        }
4824        #[automatically_derived]
4825        #[doc(hidden)]
4826        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OutdatedState {
4827            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4828                Self {}
4829            }
4830        }
4831        #[automatically_derived]
4832        impl alloy_sol_types::SolError for OutdatedState {
4833            type Parameters<'a> = UnderlyingSolTuple<'a>;
4834            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4835            const SIGNATURE: &'static str = "OutdatedState()";
4836            const SELECTOR: [u8; 4] = [5u8, 28u8, 70u8, 239u8];
4837            #[inline]
4838            fn new<'a>(
4839                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4840            ) -> Self {
4841                tuple.into()
4842            }
4843            #[inline]
4844            fn tokenize(&self) -> Self::Token<'_> {
4845                ()
4846            }
4847        }
4848    };
4849    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4850    /**Custom error with signature `OwnableInvalidOwner(address)` and selector `0x1e4fbdf7`.
4851    ```solidity
4852    error OwnableInvalidOwner(address owner);
4853    ```*/
4854    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4855    #[derive(Clone)]
4856    pub struct OwnableInvalidOwner {
4857        #[allow(missing_docs)]
4858        pub owner: alloy::sol_types::private::Address,
4859    }
4860    #[allow(
4861        non_camel_case_types,
4862        non_snake_case,
4863        clippy::pub_underscore_fields,
4864        clippy::style
4865    )]
4866    const _: () = {
4867        use alloy::sol_types as alloy_sol_types;
4868        #[doc(hidden)]
4869        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4870        #[doc(hidden)]
4871        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4872        #[cfg(test)]
4873        #[allow(dead_code, unreachable_patterns)]
4874        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4875            match _t {
4876                alloy_sol_types::private::AssertTypeEq::<
4877                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4878                >(_) => {},
4879            }
4880        }
4881        #[automatically_derived]
4882        #[doc(hidden)]
4883        impl ::core::convert::From<OwnableInvalidOwner> for UnderlyingRustTuple<'_> {
4884            fn from(value: OwnableInvalidOwner) -> Self {
4885                (value.owner,)
4886            }
4887        }
4888        #[automatically_derived]
4889        #[doc(hidden)]
4890        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OwnableInvalidOwner {
4891            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4892                Self { owner: tuple.0 }
4893            }
4894        }
4895        #[automatically_derived]
4896        impl alloy_sol_types::SolError for OwnableInvalidOwner {
4897            type Parameters<'a> = UnderlyingSolTuple<'a>;
4898            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4899            const SIGNATURE: &'static str = "OwnableInvalidOwner(address)";
4900            const SELECTOR: [u8; 4] = [30u8, 79u8, 189u8, 247u8];
4901            #[inline]
4902            fn new<'a>(
4903                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4904            ) -> Self {
4905                tuple.into()
4906            }
4907            #[inline]
4908            fn tokenize(&self) -> Self::Token<'_> {
4909                (
4910                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4911                        &self.owner,
4912                    ),
4913                )
4914            }
4915        }
4916    };
4917    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4918    /**Custom error with signature `OwnableUnauthorizedAccount(address)` and selector `0x118cdaa7`.
4919    ```solidity
4920    error OwnableUnauthorizedAccount(address account);
4921    ```*/
4922    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4923    #[derive(Clone)]
4924    pub struct OwnableUnauthorizedAccount {
4925        #[allow(missing_docs)]
4926        pub account: alloy::sol_types::private::Address,
4927    }
4928    #[allow(
4929        non_camel_case_types,
4930        non_snake_case,
4931        clippy::pub_underscore_fields,
4932        clippy::style
4933    )]
4934    const _: () = {
4935        use alloy::sol_types as alloy_sol_types;
4936        #[doc(hidden)]
4937        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4938        #[doc(hidden)]
4939        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4940        #[cfg(test)]
4941        #[allow(dead_code, unreachable_patterns)]
4942        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4943            match _t {
4944                alloy_sol_types::private::AssertTypeEq::<
4945                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4946                >(_) => {},
4947            }
4948        }
4949        #[automatically_derived]
4950        #[doc(hidden)]
4951        impl ::core::convert::From<OwnableUnauthorizedAccount> for UnderlyingRustTuple<'_> {
4952            fn from(value: OwnableUnauthorizedAccount) -> Self {
4953                (value.account,)
4954            }
4955        }
4956        #[automatically_derived]
4957        #[doc(hidden)]
4958        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OwnableUnauthorizedAccount {
4959            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4960                Self { account: tuple.0 }
4961            }
4962        }
4963        #[automatically_derived]
4964        impl alloy_sol_types::SolError for OwnableUnauthorizedAccount {
4965            type Parameters<'a> = UnderlyingSolTuple<'a>;
4966            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4967            const SIGNATURE: &'static str = "OwnableUnauthorizedAccount(address)";
4968            const SELECTOR: [u8; 4] = [17u8, 140u8, 218u8, 167u8];
4969            #[inline]
4970            fn new<'a>(
4971                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4972            ) -> Self {
4973                tuple.into()
4974            }
4975            #[inline]
4976            fn tokenize(&self) -> Self::Token<'_> {
4977                (
4978                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4979                        &self.account,
4980                    ),
4981                )
4982            }
4983        }
4984    };
4985    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4986    /**Custom error with signature `ProverNotPermissioned()` and selector `0xa3a64780`.
4987    ```solidity
4988    error ProverNotPermissioned();
4989    ```*/
4990    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4991    #[derive(Clone)]
4992    pub struct ProverNotPermissioned {}
4993    #[allow(
4994        non_camel_case_types,
4995        non_snake_case,
4996        clippy::pub_underscore_fields,
4997        clippy::style
4998    )]
4999    const _: () = {
5000        use alloy::sol_types as alloy_sol_types;
5001        #[doc(hidden)]
5002        type UnderlyingSolTuple<'a> = ();
5003        #[doc(hidden)]
5004        type UnderlyingRustTuple<'a> = ();
5005        #[cfg(test)]
5006        #[allow(dead_code, unreachable_patterns)]
5007        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5008            match _t {
5009                alloy_sol_types::private::AssertTypeEq::<
5010                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5011                >(_) => {},
5012            }
5013        }
5014        #[automatically_derived]
5015        #[doc(hidden)]
5016        impl ::core::convert::From<ProverNotPermissioned> for UnderlyingRustTuple<'_> {
5017            fn from(value: ProverNotPermissioned) -> Self {
5018                ()
5019            }
5020        }
5021        #[automatically_derived]
5022        #[doc(hidden)]
5023        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ProverNotPermissioned {
5024            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5025                Self {}
5026            }
5027        }
5028        #[automatically_derived]
5029        impl alloy_sol_types::SolError for ProverNotPermissioned {
5030            type Parameters<'a> = UnderlyingSolTuple<'a>;
5031            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5032            const SIGNATURE: &'static str = "ProverNotPermissioned()";
5033            const SELECTOR: [u8; 4] = [163u8, 166u8, 71u8, 128u8];
5034            #[inline]
5035            fn new<'a>(
5036                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5037            ) -> Self {
5038                tuple.into()
5039            }
5040            #[inline]
5041            fn tokenize(&self) -> Self::Token<'_> {
5042                ()
5043            }
5044        }
5045    };
5046    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5047    /**Custom error with signature `UUPSUnauthorizedCallContext()` and selector `0xe07c8dba`.
5048    ```solidity
5049    error UUPSUnauthorizedCallContext();
5050    ```*/
5051    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5052    #[derive(Clone)]
5053    pub struct UUPSUnauthorizedCallContext {}
5054    #[allow(
5055        non_camel_case_types,
5056        non_snake_case,
5057        clippy::pub_underscore_fields,
5058        clippy::style
5059    )]
5060    const _: () = {
5061        use alloy::sol_types as alloy_sol_types;
5062        #[doc(hidden)]
5063        type UnderlyingSolTuple<'a> = ();
5064        #[doc(hidden)]
5065        type UnderlyingRustTuple<'a> = ();
5066        #[cfg(test)]
5067        #[allow(dead_code, unreachable_patterns)]
5068        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5069            match _t {
5070                alloy_sol_types::private::AssertTypeEq::<
5071                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5072                >(_) => {},
5073            }
5074        }
5075        #[automatically_derived]
5076        #[doc(hidden)]
5077        impl ::core::convert::From<UUPSUnauthorizedCallContext> for UnderlyingRustTuple<'_> {
5078            fn from(value: UUPSUnauthorizedCallContext) -> Self {
5079                ()
5080            }
5081        }
5082        #[automatically_derived]
5083        #[doc(hidden)]
5084        impl ::core::convert::From<UnderlyingRustTuple<'_>> for UUPSUnauthorizedCallContext {
5085            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5086                Self {}
5087            }
5088        }
5089        #[automatically_derived]
5090        impl alloy_sol_types::SolError for UUPSUnauthorizedCallContext {
5091            type Parameters<'a> = UnderlyingSolTuple<'a>;
5092            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5093            const SIGNATURE: &'static str = "UUPSUnauthorizedCallContext()";
5094            const SELECTOR: [u8; 4] = [224u8, 124u8, 141u8, 186u8];
5095            #[inline]
5096            fn new<'a>(
5097                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5098            ) -> Self {
5099                tuple.into()
5100            }
5101            #[inline]
5102            fn tokenize(&self) -> Self::Token<'_> {
5103                ()
5104            }
5105        }
5106    };
5107    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5108    /**Custom error with signature `UUPSUnsupportedProxiableUUID(bytes32)` and selector `0xaa1d49a4`.
5109    ```solidity
5110    error UUPSUnsupportedProxiableUUID(bytes32 slot);
5111    ```*/
5112    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5113    #[derive(Clone)]
5114    pub struct UUPSUnsupportedProxiableUUID {
5115        #[allow(missing_docs)]
5116        pub slot: alloy::sol_types::private::FixedBytes<32>,
5117    }
5118    #[allow(
5119        non_camel_case_types,
5120        non_snake_case,
5121        clippy::pub_underscore_fields,
5122        clippy::style
5123    )]
5124    const _: () = {
5125        use alloy::sol_types as alloy_sol_types;
5126        #[doc(hidden)]
5127        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5128        #[doc(hidden)]
5129        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
5130        #[cfg(test)]
5131        #[allow(dead_code, unreachable_patterns)]
5132        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5133            match _t {
5134                alloy_sol_types::private::AssertTypeEq::<
5135                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5136                >(_) => {},
5137            }
5138        }
5139        #[automatically_derived]
5140        #[doc(hidden)]
5141        impl ::core::convert::From<UUPSUnsupportedProxiableUUID> for UnderlyingRustTuple<'_> {
5142            fn from(value: UUPSUnsupportedProxiableUUID) -> Self {
5143                (value.slot,)
5144            }
5145        }
5146        #[automatically_derived]
5147        #[doc(hidden)]
5148        impl ::core::convert::From<UnderlyingRustTuple<'_>> for UUPSUnsupportedProxiableUUID {
5149            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5150                Self { slot: tuple.0 }
5151            }
5152        }
5153        #[automatically_derived]
5154        impl alloy_sol_types::SolError for UUPSUnsupportedProxiableUUID {
5155            type Parameters<'a> = UnderlyingSolTuple<'a>;
5156            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5157            const SIGNATURE: &'static str = "UUPSUnsupportedProxiableUUID(bytes32)";
5158            const SELECTOR: [u8; 4] = [170u8, 29u8, 73u8, 164u8];
5159            #[inline]
5160            fn new<'a>(
5161                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5162            ) -> Self {
5163                tuple.into()
5164            }
5165            #[inline]
5166            fn tokenize(&self) -> Self::Token<'_> {
5167                (
5168                    <alloy::sol_types::sol_data::FixedBytes<
5169                        32,
5170                    > as alloy_sol_types::SolType>::tokenize(&self.slot),
5171                )
5172            }
5173        }
5174    };
5175    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5176    /**Custom error with signature `WrongStakeTableUsed()` and selector `0x51618089`.
5177    ```solidity
5178    error WrongStakeTableUsed();
5179    ```*/
5180    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5181    #[derive(Clone)]
5182    pub struct WrongStakeTableUsed {}
5183    #[allow(
5184        non_camel_case_types,
5185        non_snake_case,
5186        clippy::pub_underscore_fields,
5187        clippy::style
5188    )]
5189    const _: () = {
5190        use alloy::sol_types as alloy_sol_types;
5191        #[doc(hidden)]
5192        type UnderlyingSolTuple<'a> = ();
5193        #[doc(hidden)]
5194        type UnderlyingRustTuple<'a> = ();
5195        #[cfg(test)]
5196        #[allow(dead_code, unreachable_patterns)]
5197        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5198            match _t {
5199                alloy_sol_types::private::AssertTypeEq::<
5200                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5201                >(_) => {},
5202            }
5203        }
5204        #[automatically_derived]
5205        #[doc(hidden)]
5206        impl ::core::convert::From<WrongStakeTableUsed> for UnderlyingRustTuple<'_> {
5207            fn from(value: WrongStakeTableUsed) -> Self {
5208                ()
5209            }
5210        }
5211        #[automatically_derived]
5212        #[doc(hidden)]
5213        impl ::core::convert::From<UnderlyingRustTuple<'_>> for WrongStakeTableUsed {
5214            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5215                Self {}
5216            }
5217        }
5218        #[automatically_derived]
5219        impl alloy_sol_types::SolError for WrongStakeTableUsed {
5220            type Parameters<'a> = UnderlyingSolTuple<'a>;
5221            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5222            const SIGNATURE: &'static str = "WrongStakeTableUsed()";
5223            const SELECTOR: [u8; 4] = [81u8, 97u8, 128u8, 137u8];
5224            #[inline]
5225            fn new<'a>(
5226                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5227            ) -> Self {
5228                tuple.into()
5229            }
5230            #[inline]
5231            fn tokenize(&self) -> Self::Token<'_> {
5232                ()
5233            }
5234        }
5235    };
5236    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5237    /**Event with signature `Initialized(uint64)` and selector `0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2`.
5238    ```solidity
5239    event Initialized(uint64 version);
5240    ```*/
5241    #[allow(
5242        non_camel_case_types,
5243        non_snake_case,
5244        clippy::pub_underscore_fields,
5245        clippy::style
5246    )]
5247    #[derive(Clone)]
5248    pub struct Initialized {
5249        #[allow(missing_docs)]
5250        pub version: u64,
5251    }
5252    #[allow(
5253        non_camel_case_types,
5254        non_snake_case,
5255        clippy::pub_underscore_fields,
5256        clippy::style
5257    )]
5258    const _: () = {
5259        use alloy::sol_types as alloy_sol_types;
5260        #[automatically_derived]
5261        impl alloy_sol_types::SolEvent for Initialized {
5262            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
5263            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
5264            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
5265            const SIGNATURE: &'static str = "Initialized(uint64)";
5266            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
5267                alloy_sol_types::private::B256::new([
5268                    199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8, 19u8,
5269                    244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8, 33u8, 238u8,
5270                    209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
5271                ]);
5272            const ANONYMOUS: bool = false;
5273            #[allow(unused_variables)]
5274            #[inline]
5275            fn new(
5276                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5277                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5278            ) -> Self {
5279                Self { version: data.0 }
5280            }
5281            #[inline]
5282            fn check_signature(
5283                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5284            ) -> alloy_sol_types::Result<()> {
5285                if topics.0 != Self::SIGNATURE_HASH {
5286                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
5287                        Self::SIGNATURE,
5288                        topics.0,
5289                        Self::SIGNATURE_HASH,
5290                    ));
5291                }
5292                Ok(())
5293            }
5294            #[inline]
5295            fn tokenize_body(&self) -> Self::DataToken<'_> {
5296                (
5297                    <alloy::sol_types::sol_data::Uint<64> as alloy_sol_types::SolType>::tokenize(
5298                        &self.version,
5299                    ),
5300                )
5301            }
5302            #[inline]
5303            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5304                (Self::SIGNATURE_HASH.into(),)
5305            }
5306            #[inline]
5307            fn encode_topics_raw(
5308                &self,
5309                out: &mut [alloy_sol_types::abi::token::WordToken],
5310            ) -> alloy_sol_types::Result<()> {
5311                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5312                    return Err(alloy_sol_types::Error::Overrun);
5313                }
5314                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
5315                Ok(())
5316            }
5317        }
5318        #[automatically_derived]
5319        impl alloy_sol_types::private::IntoLogData for Initialized {
5320            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5321                From::from(self)
5322            }
5323            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5324                From::from(&self)
5325            }
5326        }
5327        #[automatically_derived]
5328        impl From<&Initialized> for alloy_sol_types::private::LogData {
5329            #[inline]
5330            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
5331                alloy_sol_types::SolEvent::encode_log_data(this)
5332            }
5333        }
5334    };
5335    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5336    /**Event with signature `NewState(uint64,uint64,uint256)` and selector `0xa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6`.
5337    ```solidity
5338    event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
5339    ```*/
5340    #[allow(
5341        non_camel_case_types,
5342        non_snake_case,
5343        clippy::pub_underscore_fields,
5344        clippy::style
5345    )]
5346    #[derive(Clone)]
5347    pub struct NewState {
5348        #[allow(missing_docs)]
5349        pub viewNum: u64,
5350        #[allow(missing_docs)]
5351        pub blockHeight: u64,
5352        #[allow(missing_docs)]
5353        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
5354    }
5355    #[allow(
5356        non_camel_case_types,
5357        non_snake_case,
5358        clippy::pub_underscore_fields,
5359        clippy::style
5360    )]
5361    const _: () = {
5362        use alloy::sol_types as alloy_sol_types;
5363        #[automatically_derived]
5364        impl alloy_sol_types::SolEvent for NewState {
5365            type DataTuple<'a> = (BN254::ScalarField,);
5366            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
5367            type TopicList = (
5368                alloy_sol_types::sol_data::FixedBytes<32>,
5369                alloy::sol_types::sol_data::Uint<64>,
5370                alloy::sol_types::sol_data::Uint<64>,
5371            );
5372            const SIGNATURE: &'static str = "NewState(uint64,uint64,uint256)";
5373            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
5374                alloy_sol_types::private::B256::new([
5375                    160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8, 55u8,
5376                    37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8, 189u8, 110u8,
5377                    252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
5378                ]);
5379            const ANONYMOUS: bool = false;
5380            #[allow(unused_variables)]
5381            #[inline]
5382            fn new(
5383                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5384                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5385            ) -> Self {
5386                Self {
5387                    viewNum: topics.1,
5388                    blockHeight: topics.2,
5389                    blockCommRoot: data.0,
5390                }
5391            }
5392            #[inline]
5393            fn check_signature(
5394                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5395            ) -> alloy_sol_types::Result<()> {
5396                if topics.0 != Self::SIGNATURE_HASH {
5397                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
5398                        Self::SIGNATURE,
5399                        topics.0,
5400                        Self::SIGNATURE_HASH,
5401                    ));
5402                }
5403                Ok(())
5404            }
5405            #[inline]
5406            fn tokenize_body(&self) -> Self::DataToken<'_> {
5407                (<BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
5408                    &self.blockCommRoot,
5409                ),)
5410            }
5411            #[inline]
5412            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5413                (
5414                    Self::SIGNATURE_HASH.into(),
5415                    self.viewNum.clone(),
5416                    self.blockHeight.clone(),
5417                )
5418            }
5419            #[inline]
5420            fn encode_topics_raw(
5421                &self,
5422                out: &mut [alloy_sol_types::abi::token::WordToken],
5423            ) -> alloy_sol_types::Result<()> {
5424                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5425                    return Err(alloy_sol_types::Error::Overrun);
5426                }
5427                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
5428                out[1usize] = <alloy::sol_types::sol_data::Uint<
5429                    64,
5430                > as alloy_sol_types::EventTopic>::encode_topic(&self.viewNum);
5431                out[2usize] = <alloy::sol_types::sol_data::Uint<
5432                    64,
5433                > as alloy_sol_types::EventTopic>::encode_topic(&self.blockHeight);
5434                Ok(())
5435            }
5436        }
5437        #[automatically_derived]
5438        impl alloy_sol_types::private::IntoLogData for NewState {
5439            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5440                From::from(self)
5441            }
5442            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5443                From::from(&self)
5444            }
5445        }
5446        #[automatically_derived]
5447        impl From<&NewState> for alloy_sol_types::private::LogData {
5448            #[inline]
5449            fn from(this: &NewState) -> alloy_sol_types::private::LogData {
5450                alloy_sol_types::SolEvent::encode_log_data(this)
5451            }
5452        }
5453    };
5454    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5455    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
5456    ```solidity
5457    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
5458    ```*/
5459    #[allow(
5460        non_camel_case_types,
5461        non_snake_case,
5462        clippy::pub_underscore_fields,
5463        clippy::style
5464    )]
5465    #[derive(Clone)]
5466    pub struct OwnershipTransferred {
5467        #[allow(missing_docs)]
5468        pub previousOwner: alloy::sol_types::private::Address,
5469        #[allow(missing_docs)]
5470        pub newOwner: alloy::sol_types::private::Address,
5471    }
5472    #[allow(
5473        non_camel_case_types,
5474        non_snake_case,
5475        clippy::pub_underscore_fields,
5476        clippy::style
5477    )]
5478    const _: () = {
5479        use alloy::sol_types as alloy_sol_types;
5480        #[automatically_derived]
5481        impl alloy_sol_types::SolEvent for OwnershipTransferred {
5482            type DataTuple<'a> = ();
5483            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
5484            type TopicList = (
5485                alloy_sol_types::sol_data::FixedBytes<32>,
5486                alloy::sol_types::sol_data::Address,
5487                alloy::sol_types::sol_data::Address,
5488            );
5489            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
5490            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
5491                alloy_sol_types::private::B256::new([
5492                    139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8, 31u8,
5493                    208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8, 218u8,
5494                    175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
5495                ]);
5496            const ANONYMOUS: bool = false;
5497            #[allow(unused_variables)]
5498            #[inline]
5499            fn new(
5500                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5501                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5502            ) -> Self {
5503                Self {
5504                    previousOwner: topics.1,
5505                    newOwner: topics.2,
5506                }
5507            }
5508            #[inline]
5509            fn check_signature(
5510                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5511            ) -> alloy_sol_types::Result<()> {
5512                if topics.0 != Self::SIGNATURE_HASH {
5513                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
5514                        Self::SIGNATURE,
5515                        topics.0,
5516                        Self::SIGNATURE_HASH,
5517                    ));
5518                }
5519                Ok(())
5520            }
5521            #[inline]
5522            fn tokenize_body(&self) -> Self::DataToken<'_> {
5523                ()
5524            }
5525            #[inline]
5526            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5527                (
5528                    Self::SIGNATURE_HASH.into(),
5529                    self.previousOwner.clone(),
5530                    self.newOwner.clone(),
5531                )
5532            }
5533            #[inline]
5534            fn encode_topics_raw(
5535                &self,
5536                out: &mut [alloy_sol_types::abi::token::WordToken],
5537            ) -> alloy_sol_types::Result<()> {
5538                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5539                    return Err(alloy_sol_types::Error::Overrun);
5540                }
5541                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
5542                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5543                    &self.previousOwner,
5544                );
5545                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5546                    &self.newOwner,
5547                );
5548                Ok(())
5549            }
5550        }
5551        #[automatically_derived]
5552        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
5553            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5554                From::from(self)
5555            }
5556            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5557                From::from(&self)
5558            }
5559        }
5560        #[automatically_derived]
5561        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
5562            #[inline]
5563            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
5564                alloy_sol_types::SolEvent::encode_log_data(this)
5565            }
5566        }
5567    };
5568    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5569    /**Event with signature `PermissionedProverNotRequired()` and selector `0x9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450`.
5570    ```solidity
5571    event PermissionedProverNotRequired();
5572    ```*/
5573    #[allow(
5574        non_camel_case_types,
5575        non_snake_case,
5576        clippy::pub_underscore_fields,
5577        clippy::style
5578    )]
5579    #[derive(Clone)]
5580    pub struct PermissionedProverNotRequired {}
5581    #[allow(
5582        non_camel_case_types,
5583        non_snake_case,
5584        clippy::pub_underscore_fields,
5585        clippy::style
5586    )]
5587    const _: () = {
5588        use alloy::sol_types as alloy_sol_types;
5589        #[automatically_derived]
5590        impl alloy_sol_types::SolEvent for PermissionedProverNotRequired {
5591            type DataTuple<'a> = ();
5592            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
5593            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
5594            const SIGNATURE: &'static str = "PermissionedProverNotRequired()";
5595            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
5596                alloy_sol_types::private::B256::new([
5597                    154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8, 94u8,
5598                    92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8, 168u8, 119u8,
5599                    109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
5600                ]);
5601            const ANONYMOUS: bool = false;
5602            #[allow(unused_variables)]
5603            #[inline]
5604            fn new(
5605                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5606                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5607            ) -> Self {
5608                Self {}
5609            }
5610            #[inline]
5611            fn check_signature(
5612                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5613            ) -> alloy_sol_types::Result<()> {
5614                if topics.0 != Self::SIGNATURE_HASH {
5615                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
5616                        Self::SIGNATURE,
5617                        topics.0,
5618                        Self::SIGNATURE_HASH,
5619                    ));
5620                }
5621                Ok(())
5622            }
5623            #[inline]
5624            fn tokenize_body(&self) -> Self::DataToken<'_> {
5625                ()
5626            }
5627            #[inline]
5628            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5629                (Self::SIGNATURE_HASH.into(),)
5630            }
5631            #[inline]
5632            fn encode_topics_raw(
5633                &self,
5634                out: &mut [alloy_sol_types::abi::token::WordToken],
5635            ) -> alloy_sol_types::Result<()> {
5636                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5637                    return Err(alloy_sol_types::Error::Overrun);
5638                }
5639                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
5640                Ok(())
5641            }
5642        }
5643        #[automatically_derived]
5644        impl alloy_sol_types::private::IntoLogData for PermissionedProverNotRequired {
5645            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5646                From::from(self)
5647            }
5648            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5649                From::from(&self)
5650            }
5651        }
5652        #[automatically_derived]
5653        impl From<&PermissionedProverNotRequired> for alloy_sol_types::private::LogData {
5654            #[inline]
5655            fn from(this: &PermissionedProverNotRequired) -> alloy_sol_types::private::LogData {
5656                alloy_sol_types::SolEvent::encode_log_data(this)
5657            }
5658        }
5659    };
5660    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5661    /**Event with signature `PermissionedProverRequired(address)` and selector `0x8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072`.
5662    ```solidity
5663    event PermissionedProverRequired(address permissionedProver);
5664    ```*/
5665    #[allow(
5666        non_camel_case_types,
5667        non_snake_case,
5668        clippy::pub_underscore_fields,
5669        clippy::style
5670    )]
5671    #[derive(Clone)]
5672    pub struct PermissionedProverRequired {
5673        #[allow(missing_docs)]
5674        pub permissionedProver: alloy::sol_types::private::Address,
5675    }
5676    #[allow(
5677        non_camel_case_types,
5678        non_snake_case,
5679        clippy::pub_underscore_fields,
5680        clippy::style
5681    )]
5682    const _: () = {
5683        use alloy::sol_types as alloy_sol_types;
5684        #[automatically_derived]
5685        impl alloy_sol_types::SolEvent for PermissionedProverRequired {
5686            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
5687            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
5688            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
5689            const SIGNATURE: &'static str = "PermissionedProverRequired(address)";
5690            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
5691                alloy_sol_types::private::B256::new([
5692                    128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
5693                    212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8, 250u8,
5694                    133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
5695                ]);
5696            const ANONYMOUS: bool = false;
5697            #[allow(unused_variables)]
5698            #[inline]
5699            fn new(
5700                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5701                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5702            ) -> Self {
5703                Self {
5704                    permissionedProver: data.0,
5705                }
5706            }
5707            #[inline]
5708            fn check_signature(
5709                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5710            ) -> alloy_sol_types::Result<()> {
5711                if topics.0 != Self::SIGNATURE_HASH {
5712                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
5713                        Self::SIGNATURE,
5714                        topics.0,
5715                        Self::SIGNATURE_HASH,
5716                    ));
5717                }
5718                Ok(())
5719            }
5720            #[inline]
5721            fn tokenize_body(&self) -> Self::DataToken<'_> {
5722                (
5723                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5724                        &self.permissionedProver,
5725                    ),
5726                )
5727            }
5728            #[inline]
5729            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5730                (Self::SIGNATURE_HASH.into(),)
5731            }
5732            #[inline]
5733            fn encode_topics_raw(
5734                &self,
5735                out: &mut [alloy_sol_types::abi::token::WordToken],
5736            ) -> alloy_sol_types::Result<()> {
5737                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5738                    return Err(alloy_sol_types::Error::Overrun);
5739                }
5740                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
5741                Ok(())
5742            }
5743        }
5744        #[automatically_derived]
5745        impl alloy_sol_types::private::IntoLogData for PermissionedProverRequired {
5746            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5747                From::from(self)
5748            }
5749            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5750                From::from(&self)
5751            }
5752        }
5753        #[automatically_derived]
5754        impl From<&PermissionedProverRequired> for alloy_sol_types::private::LogData {
5755            #[inline]
5756            fn from(this: &PermissionedProverRequired) -> alloy_sol_types::private::LogData {
5757                alloy_sol_types::SolEvent::encode_log_data(this)
5758            }
5759        }
5760    };
5761    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5762    /**Event with signature `Upgrade(address)` and selector `0xf78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d`.
5763    ```solidity
5764    event Upgrade(address implementation);
5765    ```*/
5766    #[allow(
5767        non_camel_case_types,
5768        non_snake_case,
5769        clippy::pub_underscore_fields,
5770        clippy::style
5771    )]
5772    #[derive(Clone)]
5773    pub struct Upgrade {
5774        #[allow(missing_docs)]
5775        pub implementation: alloy::sol_types::private::Address,
5776    }
5777    #[allow(
5778        non_camel_case_types,
5779        non_snake_case,
5780        clippy::pub_underscore_fields,
5781        clippy::style
5782    )]
5783    const _: () = {
5784        use alloy::sol_types as alloy_sol_types;
5785        #[automatically_derived]
5786        impl alloy_sol_types::SolEvent for Upgrade {
5787            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
5788            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
5789            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
5790            const SIGNATURE: &'static str = "Upgrade(address)";
5791            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
5792                alloy_sol_types::private::B256::new([
5793                    247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8, 154u8,
5794                    22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8, 185u8, 62u8,
5795                    237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
5796                ]);
5797            const ANONYMOUS: bool = false;
5798            #[allow(unused_variables)]
5799            #[inline]
5800            fn new(
5801                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5802                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5803            ) -> Self {
5804                Self {
5805                    implementation: data.0,
5806                }
5807            }
5808            #[inline]
5809            fn check_signature(
5810                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5811            ) -> alloy_sol_types::Result<()> {
5812                if topics.0 != Self::SIGNATURE_HASH {
5813                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
5814                        Self::SIGNATURE,
5815                        topics.0,
5816                        Self::SIGNATURE_HASH,
5817                    ));
5818                }
5819                Ok(())
5820            }
5821            #[inline]
5822            fn tokenize_body(&self) -> Self::DataToken<'_> {
5823                (
5824                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5825                        &self.implementation,
5826                    ),
5827                )
5828            }
5829            #[inline]
5830            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5831                (Self::SIGNATURE_HASH.into(),)
5832            }
5833            #[inline]
5834            fn encode_topics_raw(
5835                &self,
5836                out: &mut [alloy_sol_types::abi::token::WordToken],
5837            ) -> alloy_sol_types::Result<()> {
5838                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5839                    return Err(alloy_sol_types::Error::Overrun);
5840                }
5841                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
5842                Ok(())
5843            }
5844        }
5845        #[automatically_derived]
5846        impl alloy_sol_types::private::IntoLogData for Upgrade {
5847            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5848                From::from(self)
5849            }
5850            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5851                From::from(&self)
5852            }
5853        }
5854        #[automatically_derived]
5855        impl From<&Upgrade> for alloy_sol_types::private::LogData {
5856            #[inline]
5857            fn from(this: &Upgrade) -> alloy_sol_types::private::LogData {
5858                alloy_sol_types::SolEvent::encode_log_data(this)
5859            }
5860        }
5861    };
5862    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5863    /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`.
5864    ```solidity
5865    event Upgraded(address indexed implementation);
5866    ```*/
5867    #[allow(
5868        non_camel_case_types,
5869        non_snake_case,
5870        clippy::pub_underscore_fields,
5871        clippy::style
5872    )]
5873    #[derive(Clone)]
5874    pub struct Upgraded {
5875        #[allow(missing_docs)]
5876        pub implementation: alloy::sol_types::private::Address,
5877    }
5878    #[allow(
5879        non_camel_case_types,
5880        non_snake_case,
5881        clippy::pub_underscore_fields,
5882        clippy::style
5883    )]
5884    const _: () = {
5885        use alloy::sol_types as alloy_sol_types;
5886        #[automatically_derived]
5887        impl alloy_sol_types::SolEvent for Upgraded {
5888            type DataTuple<'a> = ();
5889            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
5890            type TopicList = (
5891                alloy_sol_types::sol_data::FixedBytes<32>,
5892                alloy::sol_types::sol_data::Address,
5893            );
5894            const SIGNATURE: &'static str = "Upgraded(address)";
5895            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
5896                alloy_sol_types::private::B256::new([
5897                    188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
5898                    179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8, 12u8,
5899                    192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
5900                ]);
5901            const ANONYMOUS: bool = false;
5902            #[allow(unused_variables)]
5903            #[inline]
5904            fn new(
5905                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5906                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5907            ) -> Self {
5908                Self {
5909                    implementation: topics.1,
5910                }
5911            }
5912            #[inline]
5913            fn check_signature(
5914                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5915            ) -> alloy_sol_types::Result<()> {
5916                if topics.0 != Self::SIGNATURE_HASH {
5917                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
5918                        Self::SIGNATURE,
5919                        topics.0,
5920                        Self::SIGNATURE_HASH,
5921                    ));
5922                }
5923                Ok(())
5924            }
5925            #[inline]
5926            fn tokenize_body(&self) -> Self::DataToken<'_> {
5927                ()
5928            }
5929            #[inline]
5930            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5931                (Self::SIGNATURE_HASH.into(), self.implementation.clone())
5932            }
5933            #[inline]
5934            fn encode_topics_raw(
5935                &self,
5936                out: &mut [alloy_sol_types::abi::token::WordToken],
5937            ) -> alloy_sol_types::Result<()> {
5938                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5939                    return Err(alloy_sol_types::Error::Overrun);
5940                }
5941                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
5942                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5943                    &self.implementation,
5944                );
5945                Ok(())
5946            }
5947        }
5948        #[automatically_derived]
5949        impl alloy_sol_types::private::IntoLogData for Upgraded {
5950            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5951                From::from(self)
5952            }
5953            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5954                From::from(&self)
5955            }
5956        }
5957        #[automatically_derived]
5958        impl From<&Upgraded> for alloy_sol_types::private::LogData {
5959            #[inline]
5960            fn from(this: &Upgraded) -> alloy_sol_types::private::LogData {
5961                alloy_sol_types::SolEvent::encode_log_data(this)
5962            }
5963        }
5964    };
5965    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5966    /**Function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc`.
5967    ```solidity
5968    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
5969    ```*/
5970    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5971    #[derive(Clone)]
5972    pub struct UPGRADE_INTERFACE_VERSIONCall {}
5973    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5974    ///Container type for the return parameters of the [`UPGRADE_INTERFACE_VERSION()`](UPGRADE_INTERFACE_VERSIONCall) function.
5975    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5976    #[derive(Clone)]
5977    pub struct UPGRADE_INTERFACE_VERSIONReturn {
5978        #[allow(missing_docs)]
5979        pub _0: alloy::sol_types::private::String,
5980    }
5981    #[allow(
5982        non_camel_case_types,
5983        non_snake_case,
5984        clippy::pub_underscore_fields,
5985        clippy::style
5986    )]
5987    const _: () = {
5988        use alloy::sol_types as alloy_sol_types;
5989        {
5990            #[doc(hidden)]
5991            type UnderlyingSolTuple<'a> = ();
5992            #[doc(hidden)]
5993            type UnderlyingRustTuple<'a> = ();
5994            #[cfg(test)]
5995            #[allow(dead_code, unreachable_patterns)]
5996            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5997                match _t {
5998                    alloy_sol_types::private::AssertTypeEq::<
5999                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6000                    >(_) => {},
6001                }
6002            }
6003            #[automatically_derived]
6004            #[doc(hidden)]
6005            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONCall> for UnderlyingRustTuple<'_> {
6006                fn from(value: UPGRADE_INTERFACE_VERSIONCall) -> Self {
6007                    ()
6008                }
6009            }
6010            #[automatically_derived]
6011            #[doc(hidden)]
6012            impl ::core::convert::From<UnderlyingRustTuple<'_>> for UPGRADE_INTERFACE_VERSIONCall {
6013                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6014                    Self {}
6015                }
6016            }
6017        }
6018        {
6019            #[doc(hidden)]
6020            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
6021            #[doc(hidden)]
6022            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
6023            #[cfg(test)]
6024            #[allow(dead_code, unreachable_patterns)]
6025            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6026                match _t {
6027                    alloy_sol_types::private::AssertTypeEq::<
6028                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6029                    >(_) => {},
6030                }
6031            }
6032            #[automatically_derived]
6033            #[doc(hidden)]
6034            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONReturn> for UnderlyingRustTuple<'_> {
6035                fn from(value: UPGRADE_INTERFACE_VERSIONReturn) -> Self {
6036                    (value._0,)
6037                }
6038            }
6039            #[automatically_derived]
6040            #[doc(hidden)]
6041            impl ::core::convert::From<UnderlyingRustTuple<'_>> for UPGRADE_INTERFACE_VERSIONReturn {
6042                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6043                    Self { _0: tuple.0 }
6044                }
6045            }
6046        }
6047        #[automatically_derived]
6048        impl alloy_sol_types::SolCall for UPGRADE_INTERFACE_VERSIONCall {
6049            type Parameters<'a> = ();
6050            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
6051            type Return = UPGRADE_INTERFACE_VERSIONReturn;
6052            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
6053            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6054            const SIGNATURE: &'static str = "UPGRADE_INTERFACE_VERSION()";
6055            const SELECTOR: [u8; 4] = [173u8, 60u8, 177u8, 204u8];
6056            #[inline]
6057            fn new<'a>(
6058                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6059            ) -> Self {
6060                tuple.into()
6061            }
6062            #[inline]
6063            fn tokenize(&self) -> Self::Token<'_> {
6064                ()
6065            }
6066            #[inline]
6067            fn abi_decode_returns(
6068                data: &[u8],
6069                validate: bool,
6070            ) -> alloy_sol_types::Result<Self::Return> {
6071                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
6072                    data, validate,
6073                )
6074                .map(Into::into)
6075            }
6076        }
6077    };
6078    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6079    /**Function with signature `_getVk()` and selector `0x12173c2c`.
6080    ```solidity
6081    function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
6082    ```*/
6083    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6084    #[derive(Clone)]
6085    pub struct _getVkCall {}
6086    #[derive()]
6087    ///Container type for the return parameters of the [`_getVk()`](_getVkCall) function.
6088    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6089    #[derive(Clone)]
6090    pub struct _getVkReturn {
6091        #[allow(missing_docs)]
6092        pub vk: <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
6093    }
6094    #[allow(
6095        non_camel_case_types,
6096        non_snake_case,
6097        clippy::pub_underscore_fields,
6098        clippy::style
6099    )]
6100    const _: () = {
6101        use alloy::sol_types as alloy_sol_types;
6102        {
6103            #[doc(hidden)]
6104            type UnderlyingSolTuple<'a> = ();
6105            #[doc(hidden)]
6106            type UnderlyingRustTuple<'a> = ();
6107            #[cfg(test)]
6108            #[allow(dead_code, unreachable_patterns)]
6109            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6110                match _t {
6111                    alloy_sol_types::private::AssertTypeEq::<
6112                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6113                    >(_) => {},
6114                }
6115            }
6116            #[automatically_derived]
6117            #[doc(hidden)]
6118            impl ::core::convert::From<_getVkCall> for UnderlyingRustTuple<'_> {
6119                fn from(value: _getVkCall) -> Self {
6120                    ()
6121                }
6122            }
6123            #[automatically_derived]
6124            #[doc(hidden)]
6125            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkCall {
6126                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6127                    Self {}
6128                }
6129            }
6130        }
6131        {
6132            #[doc(hidden)]
6133            type UnderlyingSolTuple<'a> = (IPlonkVerifier::VerifyingKey,);
6134            #[doc(hidden)]
6135            type UnderlyingRustTuple<'a> =
6136                (<IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,);
6137            #[cfg(test)]
6138            #[allow(dead_code, unreachable_patterns)]
6139            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6140                match _t {
6141                    alloy_sol_types::private::AssertTypeEq::<
6142                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6143                    >(_) => {},
6144                }
6145            }
6146            #[automatically_derived]
6147            #[doc(hidden)]
6148            impl ::core::convert::From<_getVkReturn> for UnderlyingRustTuple<'_> {
6149                fn from(value: _getVkReturn) -> Self {
6150                    (value.vk,)
6151                }
6152            }
6153            #[automatically_derived]
6154            #[doc(hidden)]
6155            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkReturn {
6156                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6157                    Self { vk: tuple.0 }
6158                }
6159            }
6160        }
6161        #[automatically_derived]
6162        impl alloy_sol_types::SolCall for _getVkCall {
6163            type Parameters<'a> = ();
6164            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
6165            type Return = _getVkReturn;
6166            type ReturnTuple<'a> = (IPlonkVerifier::VerifyingKey,);
6167            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6168            const SIGNATURE: &'static str = "_getVk()";
6169            const SELECTOR: [u8; 4] = [18u8, 23u8, 60u8, 44u8];
6170            #[inline]
6171            fn new<'a>(
6172                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6173            ) -> Self {
6174                tuple.into()
6175            }
6176            #[inline]
6177            fn tokenize(&self) -> Self::Token<'_> {
6178                ()
6179            }
6180            #[inline]
6181            fn abi_decode_returns(
6182                data: &[u8],
6183                validate: bool,
6184            ) -> alloy_sol_types::Result<Self::Return> {
6185                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
6186                    data, validate,
6187                )
6188                .map(Into::into)
6189            }
6190        }
6191    };
6192    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6193    /**Function with signature `currentBlockNumber()` and selector `0x378ec23b`.
6194    ```solidity
6195    function currentBlockNumber() external view returns (uint256);
6196    ```*/
6197    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6198    #[derive(Clone)]
6199    pub struct currentBlockNumberCall {}
6200    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6201    ///Container type for the return parameters of the [`currentBlockNumber()`](currentBlockNumberCall) function.
6202    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6203    #[derive(Clone)]
6204    pub struct currentBlockNumberReturn {
6205        #[allow(missing_docs)]
6206        pub _0: alloy::sol_types::private::primitives::aliases::U256,
6207    }
6208    #[allow(
6209        non_camel_case_types,
6210        non_snake_case,
6211        clippy::pub_underscore_fields,
6212        clippy::style
6213    )]
6214    const _: () = {
6215        use alloy::sol_types as alloy_sol_types;
6216        {
6217            #[doc(hidden)]
6218            type UnderlyingSolTuple<'a> = ();
6219            #[doc(hidden)]
6220            type UnderlyingRustTuple<'a> = ();
6221            #[cfg(test)]
6222            #[allow(dead_code, unreachable_patterns)]
6223            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6224                match _t {
6225                    alloy_sol_types::private::AssertTypeEq::<
6226                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6227                    >(_) => {},
6228                }
6229            }
6230            #[automatically_derived]
6231            #[doc(hidden)]
6232            impl ::core::convert::From<currentBlockNumberCall> for UnderlyingRustTuple<'_> {
6233                fn from(value: currentBlockNumberCall) -> Self {
6234                    ()
6235                }
6236            }
6237            #[automatically_derived]
6238            #[doc(hidden)]
6239            impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentBlockNumberCall {
6240                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6241                    Self {}
6242                }
6243            }
6244        }
6245        {
6246            #[doc(hidden)]
6247            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6248            #[doc(hidden)]
6249            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
6250            #[cfg(test)]
6251            #[allow(dead_code, unreachable_patterns)]
6252            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6253                match _t {
6254                    alloy_sol_types::private::AssertTypeEq::<
6255                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6256                    >(_) => {},
6257                }
6258            }
6259            #[automatically_derived]
6260            #[doc(hidden)]
6261            impl ::core::convert::From<currentBlockNumberReturn> for UnderlyingRustTuple<'_> {
6262                fn from(value: currentBlockNumberReturn) -> Self {
6263                    (value._0,)
6264                }
6265            }
6266            #[automatically_derived]
6267            #[doc(hidden)]
6268            impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentBlockNumberReturn {
6269                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6270                    Self { _0: tuple.0 }
6271                }
6272            }
6273        }
6274        #[automatically_derived]
6275        impl alloy_sol_types::SolCall for currentBlockNumberCall {
6276            type Parameters<'a> = ();
6277            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
6278            type Return = currentBlockNumberReturn;
6279            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6280            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6281            const SIGNATURE: &'static str = "currentBlockNumber()";
6282            const SELECTOR: [u8; 4] = [55u8, 142u8, 194u8, 59u8];
6283            #[inline]
6284            fn new<'a>(
6285                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6286            ) -> Self {
6287                tuple.into()
6288            }
6289            #[inline]
6290            fn tokenize(&self) -> Self::Token<'_> {
6291                ()
6292            }
6293            #[inline]
6294            fn abi_decode_returns(
6295                data: &[u8],
6296                validate: bool,
6297            ) -> alloy_sol_types::Result<Self::Return> {
6298                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
6299                    data, validate,
6300                )
6301                .map(Into::into)
6302            }
6303        }
6304    };
6305    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6306    /**Function with signature `disablePermissionedProverMode()` and selector `0x69cc6a04`.
6307    ```solidity
6308    function disablePermissionedProverMode() external;
6309    ```*/
6310    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6311    #[derive(Clone)]
6312    pub struct disablePermissionedProverModeCall {}
6313    ///Container type for the return parameters of the [`disablePermissionedProverMode()`](disablePermissionedProverModeCall) function.
6314    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6315    #[derive(Clone)]
6316    pub struct disablePermissionedProverModeReturn {}
6317    #[allow(
6318        non_camel_case_types,
6319        non_snake_case,
6320        clippy::pub_underscore_fields,
6321        clippy::style
6322    )]
6323    const _: () = {
6324        use alloy::sol_types as alloy_sol_types;
6325        {
6326            #[doc(hidden)]
6327            type UnderlyingSolTuple<'a> = ();
6328            #[doc(hidden)]
6329            type UnderlyingRustTuple<'a> = ();
6330            #[cfg(test)]
6331            #[allow(dead_code, unreachable_patterns)]
6332            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6333                match _t {
6334                    alloy_sol_types::private::AssertTypeEq::<
6335                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6336                    >(_) => {},
6337                }
6338            }
6339            #[automatically_derived]
6340            #[doc(hidden)]
6341            impl ::core::convert::From<disablePermissionedProverModeCall> for UnderlyingRustTuple<'_> {
6342                fn from(value: disablePermissionedProverModeCall) -> Self {
6343                    ()
6344                }
6345            }
6346            #[automatically_derived]
6347            #[doc(hidden)]
6348            impl ::core::convert::From<UnderlyingRustTuple<'_>> for disablePermissionedProverModeCall {
6349                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6350                    Self {}
6351                }
6352            }
6353        }
6354        {
6355            #[doc(hidden)]
6356            type UnderlyingSolTuple<'a> = ();
6357            #[doc(hidden)]
6358            type UnderlyingRustTuple<'a> = ();
6359            #[cfg(test)]
6360            #[allow(dead_code, unreachable_patterns)]
6361            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6362                match _t {
6363                    alloy_sol_types::private::AssertTypeEq::<
6364                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6365                    >(_) => {},
6366                }
6367            }
6368            #[automatically_derived]
6369            #[doc(hidden)]
6370            impl ::core::convert::From<disablePermissionedProverModeReturn> for UnderlyingRustTuple<'_> {
6371                fn from(value: disablePermissionedProverModeReturn) -> Self {
6372                    ()
6373                }
6374            }
6375            #[automatically_derived]
6376            #[doc(hidden)]
6377            impl ::core::convert::From<UnderlyingRustTuple<'_>> for disablePermissionedProverModeReturn {
6378                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6379                    Self {}
6380                }
6381            }
6382        }
6383        #[automatically_derived]
6384        impl alloy_sol_types::SolCall for disablePermissionedProverModeCall {
6385            type Parameters<'a> = ();
6386            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
6387            type Return = disablePermissionedProverModeReturn;
6388            type ReturnTuple<'a> = ();
6389            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6390            const SIGNATURE: &'static str = "disablePermissionedProverMode()";
6391            const SELECTOR: [u8; 4] = [105u8, 204u8, 106u8, 4u8];
6392            #[inline]
6393            fn new<'a>(
6394                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6395            ) -> Self {
6396                tuple.into()
6397            }
6398            #[inline]
6399            fn tokenize(&self) -> Self::Token<'_> {
6400                ()
6401            }
6402            #[inline]
6403            fn abi_decode_returns(
6404                data: &[u8],
6405                validate: bool,
6406            ) -> alloy_sol_types::Result<Self::Return> {
6407                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
6408                    data, validate,
6409                )
6410                .map(Into::into)
6411            }
6412        }
6413    };
6414    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6415    /**Function with signature `finalizedState()` and selector `0x9fdb54a7`.
6416    ```solidity
6417    function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
6418    ```*/
6419    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6420    #[derive(Clone)]
6421    pub struct finalizedStateCall {}
6422    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6423    ///Container type for the return parameters of the [`finalizedState()`](finalizedStateCall) function.
6424    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6425    #[derive(Clone)]
6426    pub struct finalizedStateReturn {
6427        #[allow(missing_docs)]
6428        pub viewNum: u64,
6429        #[allow(missing_docs)]
6430        pub blockHeight: u64,
6431        #[allow(missing_docs)]
6432        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
6433    }
6434    #[allow(
6435        non_camel_case_types,
6436        non_snake_case,
6437        clippy::pub_underscore_fields,
6438        clippy::style
6439    )]
6440    const _: () = {
6441        use alloy::sol_types as alloy_sol_types;
6442        {
6443            #[doc(hidden)]
6444            type UnderlyingSolTuple<'a> = ();
6445            #[doc(hidden)]
6446            type UnderlyingRustTuple<'a> = ();
6447            #[cfg(test)]
6448            #[allow(dead_code, unreachable_patterns)]
6449            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6450                match _t {
6451                    alloy_sol_types::private::AssertTypeEq::<
6452                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6453                    >(_) => {},
6454                }
6455            }
6456            #[automatically_derived]
6457            #[doc(hidden)]
6458            impl ::core::convert::From<finalizedStateCall> for UnderlyingRustTuple<'_> {
6459                fn from(value: finalizedStateCall) -> Self {
6460                    ()
6461                }
6462            }
6463            #[automatically_derived]
6464            #[doc(hidden)]
6465            impl ::core::convert::From<UnderlyingRustTuple<'_>> for finalizedStateCall {
6466                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6467                    Self {}
6468                }
6469            }
6470        }
6471        {
6472            #[doc(hidden)]
6473            type UnderlyingSolTuple<'a> = (
6474                alloy::sol_types::sol_data::Uint<64>,
6475                alloy::sol_types::sol_data::Uint<64>,
6476                BN254::ScalarField,
6477            );
6478            #[doc(hidden)]
6479            type UnderlyingRustTuple<'a> = (
6480                u64,
6481                u64,
6482                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
6483            );
6484            #[cfg(test)]
6485            #[allow(dead_code, unreachable_patterns)]
6486            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6487                match _t {
6488                    alloy_sol_types::private::AssertTypeEq::<
6489                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6490                    >(_) => {},
6491                }
6492            }
6493            #[automatically_derived]
6494            #[doc(hidden)]
6495            impl ::core::convert::From<finalizedStateReturn> for UnderlyingRustTuple<'_> {
6496                fn from(value: finalizedStateReturn) -> Self {
6497                    (value.viewNum, value.blockHeight, value.blockCommRoot)
6498                }
6499            }
6500            #[automatically_derived]
6501            #[doc(hidden)]
6502            impl ::core::convert::From<UnderlyingRustTuple<'_>> for finalizedStateReturn {
6503                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6504                    Self {
6505                        viewNum: tuple.0,
6506                        blockHeight: tuple.1,
6507                        blockCommRoot: tuple.2,
6508                    }
6509                }
6510            }
6511        }
6512        #[automatically_derived]
6513        impl alloy_sol_types::SolCall for finalizedStateCall {
6514            type Parameters<'a> = ();
6515            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
6516            type Return = finalizedStateReturn;
6517            type ReturnTuple<'a> = (
6518                alloy::sol_types::sol_data::Uint<64>,
6519                alloy::sol_types::sol_data::Uint<64>,
6520                BN254::ScalarField,
6521            );
6522            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6523            const SIGNATURE: &'static str = "finalizedState()";
6524            const SELECTOR: [u8; 4] = [159u8, 219u8, 84u8, 167u8];
6525            #[inline]
6526            fn new<'a>(
6527                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6528            ) -> Self {
6529                tuple.into()
6530            }
6531            #[inline]
6532            fn tokenize(&self) -> Self::Token<'_> {
6533                ()
6534            }
6535            #[inline]
6536            fn abi_decode_returns(
6537                data: &[u8],
6538                validate: bool,
6539            ) -> alloy_sol_types::Result<Self::Return> {
6540                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
6541                    data, validate,
6542                )
6543                .map(Into::into)
6544            }
6545        }
6546    };
6547    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6548    /**Function with signature `genesisStakeTableState()` and selector `0x426d3194`.
6549    ```solidity
6550    function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
6551    ```*/
6552    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6553    #[derive(Clone)]
6554    pub struct genesisStakeTableStateCall {}
6555    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6556    ///Container type for the return parameters of the [`genesisStakeTableState()`](genesisStakeTableStateCall) function.
6557    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6558    #[derive(Clone)]
6559    pub struct genesisStakeTableStateReturn {
6560        #[allow(missing_docs)]
6561        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
6562        #[allow(missing_docs)]
6563        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
6564        #[allow(missing_docs)]
6565        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
6566        #[allow(missing_docs)]
6567        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
6568    }
6569    #[allow(
6570        non_camel_case_types,
6571        non_snake_case,
6572        clippy::pub_underscore_fields,
6573        clippy::style
6574    )]
6575    const _: () = {
6576        use alloy::sol_types as alloy_sol_types;
6577        {
6578            #[doc(hidden)]
6579            type UnderlyingSolTuple<'a> = ();
6580            #[doc(hidden)]
6581            type UnderlyingRustTuple<'a> = ();
6582            #[cfg(test)]
6583            #[allow(dead_code, unreachable_patterns)]
6584            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6585                match _t {
6586                    alloy_sol_types::private::AssertTypeEq::<
6587                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6588                    >(_) => {},
6589                }
6590            }
6591            #[automatically_derived]
6592            #[doc(hidden)]
6593            impl ::core::convert::From<genesisStakeTableStateCall> for UnderlyingRustTuple<'_> {
6594                fn from(value: genesisStakeTableStateCall) -> Self {
6595                    ()
6596                }
6597            }
6598            #[automatically_derived]
6599            #[doc(hidden)]
6600            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStakeTableStateCall {
6601                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6602                    Self {}
6603                }
6604            }
6605        }
6606        {
6607            #[doc(hidden)]
6608            type UnderlyingSolTuple<'a> = (
6609                alloy::sol_types::sol_data::Uint<256>,
6610                BN254::ScalarField,
6611                BN254::ScalarField,
6612                BN254::ScalarField,
6613            );
6614            #[doc(hidden)]
6615            type UnderlyingRustTuple<'a> = (
6616                alloy::sol_types::private::primitives::aliases::U256,
6617                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
6618                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
6619                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
6620            );
6621            #[cfg(test)]
6622            #[allow(dead_code, unreachable_patterns)]
6623            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6624                match _t {
6625                    alloy_sol_types::private::AssertTypeEq::<
6626                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6627                    >(_) => {},
6628                }
6629            }
6630            #[automatically_derived]
6631            #[doc(hidden)]
6632            impl ::core::convert::From<genesisStakeTableStateReturn> for UnderlyingRustTuple<'_> {
6633                fn from(value: genesisStakeTableStateReturn) -> Self {
6634                    (
6635                        value.threshold,
6636                        value.blsKeyComm,
6637                        value.schnorrKeyComm,
6638                        value.amountComm,
6639                    )
6640                }
6641            }
6642            #[automatically_derived]
6643            #[doc(hidden)]
6644            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStakeTableStateReturn {
6645                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6646                    Self {
6647                        threshold: tuple.0,
6648                        blsKeyComm: tuple.1,
6649                        schnorrKeyComm: tuple.2,
6650                        amountComm: tuple.3,
6651                    }
6652                }
6653            }
6654        }
6655        #[automatically_derived]
6656        impl alloy_sol_types::SolCall for genesisStakeTableStateCall {
6657            type Parameters<'a> = ();
6658            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
6659            type Return = genesisStakeTableStateReturn;
6660            type ReturnTuple<'a> = (
6661                alloy::sol_types::sol_data::Uint<256>,
6662                BN254::ScalarField,
6663                BN254::ScalarField,
6664                BN254::ScalarField,
6665            );
6666            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6667            const SIGNATURE: &'static str = "genesisStakeTableState()";
6668            const SELECTOR: [u8; 4] = [66u8, 109u8, 49u8, 148u8];
6669            #[inline]
6670            fn new<'a>(
6671                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6672            ) -> Self {
6673                tuple.into()
6674            }
6675            #[inline]
6676            fn tokenize(&self) -> Self::Token<'_> {
6677                ()
6678            }
6679            #[inline]
6680            fn abi_decode_returns(
6681                data: &[u8],
6682                validate: bool,
6683            ) -> alloy_sol_types::Result<Self::Return> {
6684                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
6685                    data, validate,
6686                )
6687                .map(Into::into)
6688            }
6689        }
6690    };
6691    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6692    /**Function with signature `genesisState()` and selector `0xd24d933d`.
6693    ```solidity
6694    function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
6695    ```*/
6696    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6697    #[derive(Clone)]
6698    pub struct genesisStateCall {}
6699    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6700    ///Container type for the return parameters of the [`genesisState()`](genesisStateCall) function.
6701    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6702    #[derive(Clone)]
6703    pub struct genesisStateReturn {
6704        #[allow(missing_docs)]
6705        pub viewNum: u64,
6706        #[allow(missing_docs)]
6707        pub blockHeight: u64,
6708        #[allow(missing_docs)]
6709        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
6710    }
6711    #[allow(
6712        non_camel_case_types,
6713        non_snake_case,
6714        clippy::pub_underscore_fields,
6715        clippy::style
6716    )]
6717    const _: () = {
6718        use alloy::sol_types as alloy_sol_types;
6719        {
6720            #[doc(hidden)]
6721            type UnderlyingSolTuple<'a> = ();
6722            #[doc(hidden)]
6723            type UnderlyingRustTuple<'a> = ();
6724            #[cfg(test)]
6725            #[allow(dead_code, unreachable_patterns)]
6726            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6727                match _t {
6728                    alloy_sol_types::private::AssertTypeEq::<
6729                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6730                    >(_) => {},
6731                }
6732            }
6733            #[automatically_derived]
6734            #[doc(hidden)]
6735            impl ::core::convert::From<genesisStateCall> for UnderlyingRustTuple<'_> {
6736                fn from(value: genesisStateCall) -> Self {
6737                    ()
6738                }
6739            }
6740            #[automatically_derived]
6741            #[doc(hidden)]
6742            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateCall {
6743                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6744                    Self {}
6745                }
6746            }
6747        }
6748        {
6749            #[doc(hidden)]
6750            type UnderlyingSolTuple<'a> = (
6751                alloy::sol_types::sol_data::Uint<64>,
6752                alloy::sol_types::sol_data::Uint<64>,
6753                BN254::ScalarField,
6754            );
6755            #[doc(hidden)]
6756            type UnderlyingRustTuple<'a> = (
6757                u64,
6758                u64,
6759                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
6760            );
6761            #[cfg(test)]
6762            #[allow(dead_code, unreachable_patterns)]
6763            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6764                match _t {
6765                    alloy_sol_types::private::AssertTypeEq::<
6766                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6767                    >(_) => {},
6768                }
6769            }
6770            #[automatically_derived]
6771            #[doc(hidden)]
6772            impl ::core::convert::From<genesisStateReturn> for UnderlyingRustTuple<'_> {
6773                fn from(value: genesisStateReturn) -> Self {
6774                    (value.viewNum, value.blockHeight, value.blockCommRoot)
6775                }
6776            }
6777            #[automatically_derived]
6778            #[doc(hidden)]
6779            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateReturn {
6780                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6781                    Self {
6782                        viewNum: tuple.0,
6783                        blockHeight: tuple.1,
6784                        blockCommRoot: tuple.2,
6785                    }
6786                }
6787            }
6788        }
6789        #[automatically_derived]
6790        impl alloy_sol_types::SolCall for genesisStateCall {
6791            type Parameters<'a> = ();
6792            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
6793            type Return = genesisStateReturn;
6794            type ReturnTuple<'a> = (
6795                alloy::sol_types::sol_data::Uint<64>,
6796                alloy::sol_types::sol_data::Uint<64>,
6797                BN254::ScalarField,
6798            );
6799            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6800            const SIGNATURE: &'static str = "genesisState()";
6801            const SELECTOR: [u8; 4] = [210u8, 77u8, 147u8, 61u8];
6802            #[inline]
6803            fn new<'a>(
6804                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6805            ) -> Self {
6806                tuple.into()
6807            }
6808            #[inline]
6809            fn tokenize(&self) -> Self::Token<'_> {
6810                ()
6811            }
6812            #[inline]
6813            fn abi_decode_returns(
6814                data: &[u8],
6815                validate: bool,
6816            ) -> alloy_sol_types::Result<Self::Return> {
6817                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
6818                    data, validate,
6819                )
6820                .map(Into::into)
6821            }
6822        }
6823    };
6824    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6825    /**Function with signature `getHotShotCommitment(uint256)` and selector `0x8584d23f`.
6826    ```solidity
6827    function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
6828    ```*/
6829    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6830    #[derive(Clone)]
6831    pub struct getHotShotCommitmentCall {
6832        #[allow(missing_docs)]
6833        pub hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
6834    }
6835    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6836    ///Container type for the return parameters of the [`getHotShotCommitment(uint256)`](getHotShotCommitmentCall) function.
6837    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6838    #[derive(Clone)]
6839    pub struct getHotShotCommitmentReturn {
6840        #[allow(missing_docs)]
6841        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
6842        #[allow(missing_docs)]
6843        pub hotshotBlockHeight: u64,
6844    }
6845    #[allow(
6846        non_camel_case_types,
6847        non_snake_case,
6848        clippy::pub_underscore_fields,
6849        clippy::style
6850    )]
6851    const _: () = {
6852        use alloy::sol_types as alloy_sol_types;
6853        {
6854            #[doc(hidden)]
6855            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6856            #[doc(hidden)]
6857            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
6858            #[cfg(test)]
6859            #[allow(dead_code, unreachable_patterns)]
6860            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6861                match _t {
6862                    alloy_sol_types::private::AssertTypeEq::<
6863                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6864                    >(_) => {},
6865                }
6866            }
6867            #[automatically_derived]
6868            #[doc(hidden)]
6869            impl ::core::convert::From<getHotShotCommitmentCall> for UnderlyingRustTuple<'_> {
6870                fn from(value: getHotShotCommitmentCall) -> Self {
6871                    (value.hotShotBlockHeight,)
6872                }
6873            }
6874            #[automatically_derived]
6875            #[doc(hidden)]
6876            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getHotShotCommitmentCall {
6877                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6878                    Self {
6879                        hotShotBlockHeight: tuple.0,
6880                    }
6881                }
6882            }
6883        }
6884        {
6885            #[doc(hidden)]
6886            type UnderlyingSolTuple<'a> =
6887                (BN254::ScalarField, alloy::sol_types::sol_data::Uint<64>);
6888            #[doc(hidden)]
6889            type UnderlyingRustTuple<'a> = (
6890                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
6891                u64,
6892            );
6893            #[cfg(test)]
6894            #[allow(dead_code, unreachable_patterns)]
6895            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6896                match _t {
6897                    alloy_sol_types::private::AssertTypeEq::<
6898                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6899                    >(_) => {},
6900                }
6901            }
6902            #[automatically_derived]
6903            #[doc(hidden)]
6904            impl ::core::convert::From<getHotShotCommitmentReturn> for UnderlyingRustTuple<'_> {
6905                fn from(value: getHotShotCommitmentReturn) -> Self {
6906                    (value.hotShotBlockCommRoot, value.hotshotBlockHeight)
6907                }
6908            }
6909            #[automatically_derived]
6910            #[doc(hidden)]
6911            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getHotShotCommitmentReturn {
6912                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6913                    Self {
6914                        hotShotBlockCommRoot: tuple.0,
6915                        hotshotBlockHeight: tuple.1,
6916                    }
6917                }
6918            }
6919        }
6920        #[automatically_derived]
6921        impl alloy_sol_types::SolCall for getHotShotCommitmentCall {
6922            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6923            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
6924            type Return = getHotShotCommitmentReturn;
6925            type ReturnTuple<'a> = (BN254::ScalarField, alloy::sol_types::sol_data::Uint<64>);
6926            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6927            const SIGNATURE: &'static str = "getHotShotCommitment(uint256)";
6928            const SELECTOR: [u8; 4] = [133u8, 132u8, 210u8, 63u8];
6929            #[inline]
6930            fn new<'a>(
6931                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6932            ) -> Self {
6933                tuple.into()
6934            }
6935            #[inline]
6936            fn tokenize(&self) -> Self::Token<'_> {
6937                (
6938                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
6939                        &self.hotShotBlockHeight,
6940                    ),
6941                )
6942            }
6943            #[inline]
6944            fn abi_decode_returns(
6945                data: &[u8],
6946                validate: bool,
6947            ) -> alloy_sol_types::Result<Self::Return> {
6948                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
6949                    data, validate,
6950                )
6951                .map(Into::into)
6952            }
6953        }
6954    };
6955    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6956    /**Function with signature `getStateHistoryCount()` and selector `0xf9e50d19`.
6957    ```solidity
6958    function getStateHistoryCount() external view returns (uint256);
6959    ```*/
6960    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6961    #[derive(Clone)]
6962    pub struct getStateHistoryCountCall {}
6963    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6964    ///Container type for the return parameters of the [`getStateHistoryCount()`](getStateHistoryCountCall) function.
6965    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6966    #[derive(Clone)]
6967    pub struct getStateHistoryCountReturn {
6968        #[allow(missing_docs)]
6969        pub _0: alloy::sol_types::private::primitives::aliases::U256,
6970    }
6971    #[allow(
6972        non_camel_case_types,
6973        non_snake_case,
6974        clippy::pub_underscore_fields,
6975        clippy::style
6976    )]
6977    const _: () = {
6978        use alloy::sol_types as alloy_sol_types;
6979        {
6980            #[doc(hidden)]
6981            type UnderlyingSolTuple<'a> = ();
6982            #[doc(hidden)]
6983            type UnderlyingRustTuple<'a> = ();
6984            #[cfg(test)]
6985            #[allow(dead_code, unreachable_patterns)]
6986            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6987                match _t {
6988                    alloy_sol_types::private::AssertTypeEq::<
6989                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6990                    >(_) => {},
6991                }
6992            }
6993            #[automatically_derived]
6994            #[doc(hidden)]
6995            impl ::core::convert::From<getStateHistoryCountCall> for UnderlyingRustTuple<'_> {
6996                fn from(value: getStateHistoryCountCall) -> Self {
6997                    ()
6998                }
6999            }
7000            #[automatically_derived]
7001            #[doc(hidden)]
7002            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getStateHistoryCountCall {
7003                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7004                    Self {}
7005                }
7006            }
7007        }
7008        {
7009            #[doc(hidden)]
7010            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7011            #[doc(hidden)]
7012            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
7013            #[cfg(test)]
7014            #[allow(dead_code, unreachable_patterns)]
7015            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7016                match _t {
7017                    alloy_sol_types::private::AssertTypeEq::<
7018                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7019                    >(_) => {},
7020                }
7021            }
7022            #[automatically_derived]
7023            #[doc(hidden)]
7024            impl ::core::convert::From<getStateHistoryCountReturn> for UnderlyingRustTuple<'_> {
7025                fn from(value: getStateHistoryCountReturn) -> Self {
7026                    (value._0,)
7027                }
7028            }
7029            #[automatically_derived]
7030            #[doc(hidden)]
7031            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getStateHistoryCountReturn {
7032                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7033                    Self { _0: tuple.0 }
7034                }
7035            }
7036        }
7037        #[automatically_derived]
7038        impl alloy_sol_types::SolCall for getStateHistoryCountCall {
7039            type Parameters<'a> = ();
7040            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7041            type Return = getStateHistoryCountReturn;
7042            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7043            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7044            const SIGNATURE: &'static str = "getStateHistoryCount()";
7045            const SELECTOR: [u8; 4] = [249u8, 229u8, 13u8, 25u8];
7046            #[inline]
7047            fn new<'a>(
7048                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7049            ) -> Self {
7050                tuple.into()
7051            }
7052            #[inline]
7053            fn tokenize(&self) -> Self::Token<'_> {
7054                ()
7055            }
7056            #[inline]
7057            fn abi_decode_returns(
7058                data: &[u8],
7059                validate: bool,
7060            ) -> alloy_sol_types::Result<Self::Return> {
7061                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
7062                    data, validate,
7063                )
7064                .map(Into::into)
7065            }
7066        }
7067    };
7068    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7069    /**Function with signature `getVersion()` and selector `0x0d8e6e2c`.
7070    ```solidity
7071    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
7072    ```*/
7073    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7074    #[derive(Clone)]
7075    pub struct getVersionCall {}
7076    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7077    ///Container type for the return parameters of the [`getVersion()`](getVersionCall) function.
7078    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7079    #[derive(Clone)]
7080    pub struct getVersionReturn {
7081        #[allow(missing_docs)]
7082        pub majorVersion: u8,
7083        #[allow(missing_docs)]
7084        pub minorVersion: u8,
7085        #[allow(missing_docs)]
7086        pub patchVersion: u8,
7087    }
7088    #[allow(
7089        non_camel_case_types,
7090        non_snake_case,
7091        clippy::pub_underscore_fields,
7092        clippy::style
7093    )]
7094    const _: () = {
7095        use alloy::sol_types as alloy_sol_types;
7096        {
7097            #[doc(hidden)]
7098            type UnderlyingSolTuple<'a> = ();
7099            #[doc(hidden)]
7100            type UnderlyingRustTuple<'a> = ();
7101            #[cfg(test)]
7102            #[allow(dead_code, unreachable_patterns)]
7103            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7104                match _t {
7105                    alloy_sol_types::private::AssertTypeEq::<
7106                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7107                    >(_) => {},
7108                }
7109            }
7110            #[automatically_derived]
7111            #[doc(hidden)]
7112            impl ::core::convert::From<getVersionCall> for UnderlyingRustTuple<'_> {
7113                fn from(value: getVersionCall) -> Self {
7114                    ()
7115                }
7116            }
7117            #[automatically_derived]
7118            #[doc(hidden)]
7119            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionCall {
7120                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7121                    Self {}
7122                }
7123            }
7124        }
7125        {
7126            #[doc(hidden)]
7127            type UnderlyingSolTuple<'a> = (
7128                alloy::sol_types::sol_data::Uint<8>,
7129                alloy::sol_types::sol_data::Uint<8>,
7130                alloy::sol_types::sol_data::Uint<8>,
7131            );
7132            #[doc(hidden)]
7133            type UnderlyingRustTuple<'a> = (u8, u8, u8);
7134            #[cfg(test)]
7135            #[allow(dead_code, unreachable_patterns)]
7136            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7137                match _t {
7138                    alloy_sol_types::private::AssertTypeEq::<
7139                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7140                    >(_) => {},
7141                }
7142            }
7143            #[automatically_derived]
7144            #[doc(hidden)]
7145            impl ::core::convert::From<getVersionReturn> for UnderlyingRustTuple<'_> {
7146                fn from(value: getVersionReturn) -> Self {
7147                    (value.majorVersion, value.minorVersion, value.patchVersion)
7148                }
7149            }
7150            #[automatically_derived]
7151            #[doc(hidden)]
7152            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionReturn {
7153                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7154                    Self {
7155                        majorVersion: tuple.0,
7156                        minorVersion: tuple.1,
7157                        patchVersion: tuple.2,
7158                    }
7159                }
7160            }
7161        }
7162        #[automatically_derived]
7163        impl alloy_sol_types::SolCall for getVersionCall {
7164            type Parameters<'a> = ();
7165            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7166            type Return = getVersionReturn;
7167            type ReturnTuple<'a> = (
7168                alloy::sol_types::sol_data::Uint<8>,
7169                alloy::sol_types::sol_data::Uint<8>,
7170                alloy::sol_types::sol_data::Uint<8>,
7171            );
7172            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7173            const SIGNATURE: &'static str = "getVersion()";
7174            const SELECTOR: [u8; 4] = [13u8, 142u8, 110u8, 44u8];
7175            #[inline]
7176            fn new<'a>(
7177                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7178            ) -> Self {
7179                tuple.into()
7180            }
7181            #[inline]
7182            fn tokenize(&self) -> Self::Token<'_> {
7183                ()
7184            }
7185            #[inline]
7186            fn abi_decode_returns(
7187                data: &[u8],
7188                validate: bool,
7189            ) -> alloy_sol_types::Result<Self::Return> {
7190                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
7191                    data, validate,
7192                )
7193                .map(Into::into)
7194            }
7195        }
7196    };
7197    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7198    /**Function with signature `initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)` and selector `0x9baa3cc9`.
7199    ```solidity
7200    function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
7201    ```*/
7202    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7203    #[derive(Clone)]
7204    pub struct initializeCall {
7205        #[allow(missing_docs)]
7206        pub _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
7207        #[allow(missing_docs)]
7208        pub _genesisStakeTableState:
7209            <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
7210        #[allow(missing_docs)]
7211        pub _stateHistoryRetentionPeriod: u32,
7212        #[allow(missing_docs)]
7213        pub owner: alloy::sol_types::private::Address,
7214    }
7215    ///Container type for the return parameters of the [`initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)`](initializeCall) function.
7216    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7217    #[derive(Clone)]
7218    pub struct initializeReturn {}
7219    #[allow(
7220        non_camel_case_types,
7221        non_snake_case,
7222        clippy::pub_underscore_fields,
7223        clippy::style
7224    )]
7225    const _: () = {
7226        use alloy::sol_types as alloy_sol_types;
7227        {
7228            #[doc(hidden)]
7229            type UnderlyingSolTuple<'a> = (
7230                LightClient::LightClientState,
7231                LightClient::StakeTableState,
7232                alloy::sol_types::sol_data::Uint<32>,
7233                alloy::sol_types::sol_data::Address,
7234            );
7235            #[doc(hidden)]
7236            type UnderlyingRustTuple<'a> = (
7237                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
7238                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
7239                u32,
7240                alloy::sol_types::private::Address,
7241            );
7242            #[cfg(test)]
7243            #[allow(dead_code, unreachable_patterns)]
7244            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7245                match _t {
7246                    alloy_sol_types::private::AssertTypeEq::<
7247                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7248                    >(_) => {},
7249                }
7250            }
7251            #[automatically_derived]
7252            #[doc(hidden)]
7253            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
7254                fn from(value: initializeCall) -> Self {
7255                    (
7256                        value._genesis,
7257                        value._genesisStakeTableState,
7258                        value._stateHistoryRetentionPeriod,
7259                        value.owner,
7260                    )
7261                }
7262            }
7263            #[automatically_derived]
7264            #[doc(hidden)]
7265            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
7266                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7267                    Self {
7268                        _genesis: tuple.0,
7269                        _genesisStakeTableState: tuple.1,
7270                        _stateHistoryRetentionPeriod: tuple.2,
7271                        owner: tuple.3,
7272                    }
7273                }
7274            }
7275        }
7276        {
7277            #[doc(hidden)]
7278            type UnderlyingSolTuple<'a> = ();
7279            #[doc(hidden)]
7280            type UnderlyingRustTuple<'a> = ();
7281            #[cfg(test)]
7282            #[allow(dead_code, unreachable_patterns)]
7283            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7284                match _t {
7285                    alloy_sol_types::private::AssertTypeEq::<
7286                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7287                    >(_) => {},
7288                }
7289            }
7290            #[automatically_derived]
7291            #[doc(hidden)]
7292            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
7293                fn from(value: initializeReturn) -> Self {
7294                    ()
7295                }
7296            }
7297            #[automatically_derived]
7298            #[doc(hidden)]
7299            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
7300                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7301                    Self {}
7302                }
7303            }
7304        }
7305        #[automatically_derived]
7306        impl alloy_sol_types::SolCall for initializeCall {
7307            type Parameters<'a> = (
7308                LightClient::LightClientState,
7309                LightClient::StakeTableState,
7310                alloy::sol_types::sol_data::Uint<32>,
7311                alloy::sol_types::sol_data::Address,
7312            );
7313            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7314            type Return = initializeReturn;
7315            type ReturnTuple<'a> = ();
7316            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7317            const SIGNATURE: &'static str = "initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)";
7318            const SELECTOR: [u8; 4] = [155u8, 170u8, 60u8, 201u8];
7319            #[inline]
7320            fn new<'a>(
7321                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7322            ) -> Self {
7323                tuple.into()
7324            }
7325            #[inline]
7326            fn tokenize(&self) -> Self::Token<'_> {
7327                (
7328                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
7329                        &self._genesis,
7330                    ),
7331                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
7332                        &self._genesisStakeTableState,
7333                    ),
7334                    <alloy::sol_types::sol_data::Uint<32> as alloy_sol_types::SolType>::tokenize(
7335                        &self._stateHistoryRetentionPeriod,
7336                    ),
7337                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7338                        &self.owner,
7339                    ),
7340                )
7341            }
7342            #[inline]
7343            fn abi_decode_returns(
7344                data: &[u8],
7345                validate: bool,
7346            ) -> alloy_sol_types::Result<Self::Return> {
7347                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
7348                    data, validate,
7349                )
7350                .map(Into::into)
7351            }
7352        }
7353    };
7354    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7355    /**Function with signature `isPermissionedProverEnabled()` and selector `0x826e41fc`.
7356    ```solidity
7357    function isPermissionedProverEnabled() external view returns (bool);
7358    ```*/
7359    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7360    #[derive(Clone)]
7361    pub struct isPermissionedProverEnabledCall {}
7362    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7363    ///Container type for the return parameters of the [`isPermissionedProverEnabled()`](isPermissionedProverEnabledCall) function.
7364    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7365    #[derive(Clone)]
7366    pub struct isPermissionedProverEnabledReturn {
7367        #[allow(missing_docs)]
7368        pub _0: bool,
7369    }
7370    #[allow(
7371        non_camel_case_types,
7372        non_snake_case,
7373        clippy::pub_underscore_fields,
7374        clippy::style
7375    )]
7376    const _: () = {
7377        use alloy::sol_types as alloy_sol_types;
7378        {
7379            #[doc(hidden)]
7380            type UnderlyingSolTuple<'a> = ();
7381            #[doc(hidden)]
7382            type UnderlyingRustTuple<'a> = ();
7383            #[cfg(test)]
7384            #[allow(dead_code, unreachable_patterns)]
7385            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7386                match _t {
7387                    alloy_sol_types::private::AssertTypeEq::<
7388                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7389                    >(_) => {},
7390                }
7391            }
7392            #[automatically_derived]
7393            #[doc(hidden)]
7394            impl ::core::convert::From<isPermissionedProverEnabledCall> for UnderlyingRustTuple<'_> {
7395                fn from(value: isPermissionedProverEnabledCall) -> Self {
7396                    ()
7397                }
7398            }
7399            #[automatically_derived]
7400            #[doc(hidden)]
7401            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isPermissionedProverEnabledCall {
7402                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7403                    Self {}
7404                }
7405            }
7406        }
7407        {
7408            #[doc(hidden)]
7409            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
7410            #[doc(hidden)]
7411            type UnderlyingRustTuple<'a> = (bool,);
7412            #[cfg(test)]
7413            #[allow(dead_code, unreachable_patterns)]
7414            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7415                match _t {
7416                    alloy_sol_types::private::AssertTypeEq::<
7417                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7418                    >(_) => {},
7419                }
7420            }
7421            #[automatically_derived]
7422            #[doc(hidden)]
7423            impl ::core::convert::From<isPermissionedProverEnabledReturn> for UnderlyingRustTuple<'_> {
7424                fn from(value: isPermissionedProverEnabledReturn) -> Self {
7425                    (value._0,)
7426                }
7427            }
7428            #[automatically_derived]
7429            #[doc(hidden)]
7430            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isPermissionedProverEnabledReturn {
7431                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7432                    Self { _0: tuple.0 }
7433                }
7434            }
7435        }
7436        #[automatically_derived]
7437        impl alloy_sol_types::SolCall for isPermissionedProverEnabledCall {
7438            type Parameters<'a> = ();
7439            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7440            type Return = isPermissionedProverEnabledReturn;
7441            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
7442            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7443            const SIGNATURE: &'static str = "isPermissionedProverEnabled()";
7444            const SELECTOR: [u8; 4] = [130u8, 110u8, 65u8, 252u8];
7445            #[inline]
7446            fn new<'a>(
7447                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7448            ) -> Self {
7449                tuple.into()
7450            }
7451            #[inline]
7452            fn tokenize(&self) -> Self::Token<'_> {
7453                ()
7454            }
7455            #[inline]
7456            fn abi_decode_returns(
7457                data: &[u8],
7458                validate: bool,
7459            ) -> alloy_sol_types::Result<Self::Return> {
7460                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
7461                    data, validate,
7462                )
7463                .map(Into::into)
7464            }
7465        }
7466    };
7467    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7468    /**Function with signature `lagOverEscapeHatchThreshold(uint256,uint256)` and selector `0xe0303301`.
7469    ```solidity
7470    function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 blockThreshold) external view returns (bool);
7471    ```*/
7472    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7473    #[derive(Clone)]
7474    pub struct lagOverEscapeHatchThresholdCall {
7475        #[allow(missing_docs)]
7476        pub blockNumber: alloy::sol_types::private::primitives::aliases::U256,
7477        #[allow(missing_docs)]
7478        pub blockThreshold: alloy::sol_types::private::primitives::aliases::U256,
7479    }
7480    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7481    ///Container type for the return parameters of the [`lagOverEscapeHatchThreshold(uint256,uint256)`](lagOverEscapeHatchThresholdCall) function.
7482    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7483    #[derive(Clone)]
7484    pub struct lagOverEscapeHatchThresholdReturn {
7485        #[allow(missing_docs)]
7486        pub _0: bool,
7487    }
7488    #[allow(
7489        non_camel_case_types,
7490        non_snake_case,
7491        clippy::pub_underscore_fields,
7492        clippy::style
7493    )]
7494    const _: () = {
7495        use alloy::sol_types as alloy_sol_types;
7496        {
7497            #[doc(hidden)]
7498            type UnderlyingSolTuple<'a> = (
7499                alloy::sol_types::sol_data::Uint<256>,
7500                alloy::sol_types::sol_data::Uint<256>,
7501            );
7502            #[doc(hidden)]
7503            type UnderlyingRustTuple<'a> = (
7504                alloy::sol_types::private::primitives::aliases::U256,
7505                alloy::sol_types::private::primitives::aliases::U256,
7506            );
7507            #[cfg(test)]
7508            #[allow(dead_code, unreachable_patterns)]
7509            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7510                match _t {
7511                    alloy_sol_types::private::AssertTypeEq::<
7512                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7513                    >(_) => {},
7514                }
7515            }
7516            #[automatically_derived]
7517            #[doc(hidden)]
7518            impl ::core::convert::From<lagOverEscapeHatchThresholdCall> for UnderlyingRustTuple<'_> {
7519                fn from(value: lagOverEscapeHatchThresholdCall) -> Self {
7520                    (value.blockNumber, value.blockThreshold)
7521                }
7522            }
7523            #[automatically_derived]
7524            #[doc(hidden)]
7525            impl ::core::convert::From<UnderlyingRustTuple<'_>> for lagOverEscapeHatchThresholdCall {
7526                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7527                    Self {
7528                        blockNumber: tuple.0,
7529                        blockThreshold: tuple.1,
7530                    }
7531                }
7532            }
7533        }
7534        {
7535            #[doc(hidden)]
7536            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
7537            #[doc(hidden)]
7538            type UnderlyingRustTuple<'a> = (bool,);
7539            #[cfg(test)]
7540            #[allow(dead_code, unreachable_patterns)]
7541            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7542                match _t {
7543                    alloy_sol_types::private::AssertTypeEq::<
7544                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7545                    >(_) => {},
7546                }
7547            }
7548            #[automatically_derived]
7549            #[doc(hidden)]
7550            impl ::core::convert::From<lagOverEscapeHatchThresholdReturn> for UnderlyingRustTuple<'_> {
7551                fn from(value: lagOverEscapeHatchThresholdReturn) -> Self {
7552                    (value._0,)
7553                }
7554            }
7555            #[automatically_derived]
7556            #[doc(hidden)]
7557            impl ::core::convert::From<UnderlyingRustTuple<'_>> for lagOverEscapeHatchThresholdReturn {
7558                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7559                    Self { _0: tuple.0 }
7560                }
7561            }
7562        }
7563        #[automatically_derived]
7564        impl alloy_sol_types::SolCall for lagOverEscapeHatchThresholdCall {
7565            type Parameters<'a> = (
7566                alloy::sol_types::sol_data::Uint<256>,
7567                alloy::sol_types::sol_data::Uint<256>,
7568            );
7569            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7570            type Return = lagOverEscapeHatchThresholdReturn;
7571            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
7572            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7573            const SIGNATURE: &'static str = "lagOverEscapeHatchThreshold(uint256,uint256)";
7574            const SELECTOR: [u8; 4] = [224u8, 48u8, 51u8, 1u8];
7575            #[inline]
7576            fn new<'a>(
7577                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7578            ) -> Self {
7579                tuple.into()
7580            }
7581            #[inline]
7582            fn tokenize(&self) -> Self::Token<'_> {
7583                (
7584                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
7585                        &self.blockNumber,
7586                    ),
7587                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
7588                        &self.blockThreshold,
7589                    ),
7590                )
7591            }
7592            #[inline]
7593            fn abi_decode_returns(
7594                data: &[u8],
7595                validate: bool,
7596            ) -> alloy_sol_types::Result<Self::Return> {
7597                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
7598                    data, validate,
7599                )
7600                .map(Into::into)
7601            }
7602        }
7603    };
7604    #[derive()]
7605    /**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`.
7606    ```solidity
7607    function newFinalizedState(LightClient.LightClientState memory newState, IPlonkVerifier.PlonkProof memory proof) external;
7608    ```*/
7609    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7610    #[derive(Clone)]
7611    pub struct newFinalizedStateCall {
7612        #[allow(missing_docs)]
7613        pub newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
7614        #[allow(missing_docs)]
7615        pub proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
7616    }
7617    ///Container type for the return parameters of the [`newFinalizedState((uint64,uint64,uint256),((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))`](newFinalizedStateCall) function.
7618    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7619    #[derive(Clone)]
7620    pub struct newFinalizedStateReturn {}
7621    #[allow(
7622        non_camel_case_types,
7623        non_snake_case,
7624        clippy::pub_underscore_fields,
7625        clippy::style
7626    )]
7627    const _: () = {
7628        use alloy::sol_types as alloy_sol_types;
7629        {
7630            #[doc(hidden)]
7631            type UnderlyingSolTuple<'a> =
7632                (LightClient::LightClientState, IPlonkVerifier::PlonkProof);
7633            #[doc(hidden)]
7634            type UnderlyingRustTuple<'a> = (
7635                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
7636                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
7637            );
7638            #[cfg(test)]
7639            #[allow(dead_code, unreachable_patterns)]
7640            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7641                match _t {
7642                    alloy_sol_types::private::AssertTypeEq::<
7643                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7644                    >(_) => {},
7645                }
7646            }
7647            #[automatically_derived]
7648            #[doc(hidden)]
7649            impl ::core::convert::From<newFinalizedStateCall> for UnderlyingRustTuple<'_> {
7650                fn from(value: newFinalizedStateCall) -> Self {
7651                    (value.newState, value.proof)
7652                }
7653            }
7654            #[automatically_derived]
7655            #[doc(hidden)]
7656            impl ::core::convert::From<UnderlyingRustTuple<'_>> for newFinalizedStateCall {
7657                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7658                    Self {
7659                        newState: tuple.0,
7660                        proof: tuple.1,
7661                    }
7662                }
7663            }
7664        }
7665        {
7666            #[doc(hidden)]
7667            type UnderlyingSolTuple<'a> = ();
7668            #[doc(hidden)]
7669            type UnderlyingRustTuple<'a> = ();
7670            #[cfg(test)]
7671            #[allow(dead_code, unreachable_patterns)]
7672            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7673                match _t {
7674                    alloy_sol_types::private::AssertTypeEq::<
7675                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7676                    >(_) => {},
7677                }
7678            }
7679            #[automatically_derived]
7680            #[doc(hidden)]
7681            impl ::core::convert::From<newFinalizedStateReturn> for UnderlyingRustTuple<'_> {
7682                fn from(value: newFinalizedStateReturn) -> Self {
7683                    ()
7684                }
7685            }
7686            #[automatically_derived]
7687            #[doc(hidden)]
7688            impl ::core::convert::From<UnderlyingRustTuple<'_>> for newFinalizedStateReturn {
7689                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7690                    Self {}
7691                }
7692            }
7693        }
7694        #[automatically_derived]
7695        impl alloy_sol_types::SolCall for newFinalizedStateCall {
7696            type Parameters<'a> = (LightClient::LightClientState, IPlonkVerifier::PlonkProof);
7697            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7698            type Return = newFinalizedStateReturn;
7699            type ReturnTuple<'a> = ();
7700            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7701            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))";
7702            const SELECTOR: [u8; 4] = [32u8, 99u8, 212u8, 247u8];
7703            #[inline]
7704            fn new<'a>(
7705                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7706            ) -> Self {
7707                tuple.into()
7708            }
7709            #[inline]
7710            fn tokenize(&self) -> Self::Token<'_> {
7711                (
7712                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
7713                        &self.newState,
7714                    ),
7715                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(&self.proof),
7716                )
7717            }
7718            #[inline]
7719            fn abi_decode_returns(
7720                data: &[u8],
7721                validate: bool,
7722            ) -> alloy_sol_types::Result<Self::Return> {
7723                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
7724                    data, validate,
7725                )
7726                .map(Into::into)
7727            }
7728        }
7729    };
7730    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7731    /**Function with signature `owner()` and selector `0x8da5cb5b`.
7732    ```solidity
7733    function owner() external view returns (address);
7734    ```*/
7735    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7736    #[derive(Clone)]
7737    pub struct ownerCall {}
7738    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7739    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
7740    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7741    #[derive(Clone)]
7742    pub struct ownerReturn {
7743        #[allow(missing_docs)]
7744        pub _0: alloy::sol_types::private::Address,
7745    }
7746    #[allow(
7747        non_camel_case_types,
7748        non_snake_case,
7749        clippy::pub_underscore_fields,
7750        clippy::style
7751    )]
7752    const _: () = {
7753        use alloy::sol_types as alloy_sol_types;
7754        {
7755            #[doc(hidden)]
7756            type UnderlyingSolTuple<'a> = ();
7757            #[doc(hidden)]
7758            type UnderlyingRustTuple<'a> = ();
7759            #[cfg(test)]
7760            #[allow(dead_code, unreachable_patterns)]
7761            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7762                match _t {
7763                    alloy_sol_types::private::AssertTypeEq::<
7764                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7765                    >(_) => {},
7766                }
7767            }
7768            #[automatically_derived]
7769            #[doc(hidden)]
7770            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
7771                fn from(value: ownerCall) -> Self {
7772                    ()
7773                }
7774            }
7775            #[automatically_derived]
7776            #[doc(hidden)]
7777            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
7778                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7779                    Self {}
7780                }
7781            }
7782        }
7783        {
7784            #[doc(hidden)]
7785            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7786            #[doc(hidden)]
7787            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7788            #[cfg(test)]
7789            #[allow(dead_code, unreachable_patterns)]
7790            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7791                match _t {
7792                    alloy_sol_types::private::AssertTypeEq::<
7793                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7794                    >(_) => {},
7795                }
7796            }
7797            #[automatically_derived]
7798            #[doc(hidden)]
7799            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
7800                fn from(value: ownerReturn) -> Self {
7801                    (value._0,)
7802                }
7803            }
7804            #[automatically_derived]
7805            #[doc(hidden)]
7806            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
7807                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7808                    Self { _0: tuple.0 }
7809                }
7810            }
7811        }
7812        #[automatically_derived]
7813        impl alloy_sol_types::SolCall for ownerCall {
7814            type Parameters<'a> = ();
7815            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7816            type Return = ownerReturn;
7817            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
7818            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7819            const SIGNATURE: &'static str = "owner()";
7820            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
7821            #[inline]
7822            fn new<'a>(
7823                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7824            ) -> Self {
7825                tuple.into()
7826            }
7827            #[inline]
7828            fn tokenize(&self) -> Self::Token<'_> {
7829                ()
7830            }
7831            #[inline]
7832            fn abi_decode_returns(
7833                data: &[u8],
7834                validate: bool,
7835            ) -> alloy_sol_types::Result<Self::Return> {
7836                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
7837                    data, validate,
7838                )
7839                .map(Into::into)
7840            }
7841        }
7842    };
7843    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7844    /**Function with signature `permissionedProver()` and selector `0x313df7b1`.
7845    ```solidity
7846    function permissionedProver() external view returns (address);
7847    ```*/
7848    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7849    #[derive(Clone)]
7850    pub struct permissionedProverCall {}
7851    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7852    ///Container type for the return parameters of the [`permissionedProver()`](permissionedProverCall) function.
7853    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7854    #[derive(Clone)]
7855    pub struct permissionedProverReturn {
7856        #[allow(missing_docs)]
7857        pub _0: alloy::sol_types::private::Address,
7858    }
7859    #[allow(
7860        non_camel_case_types,
7861        non_snake_case,
7862        clippy::pub_underscore_fields,
7863        clippy::style
7864    )]
7865    const _: () = {
7866        use alloy::sol_types as alloy_sol_types;
7867        {
7868            #[doc(hidden)]
7869            type UnderlyingSolTuple<'a> = ();
7870            #[doc(hidden)]
7871            type UnderlyingRustTuple<'a> = ();
7872            #[cfg(test)]
7873            #[allow(dead_code, unreachable_patterns)]
7874            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7875                match _t {
7876                    alloy_sol_types::private::AssertTypeEq::<
7877                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7878                    >(_) => {},
7879                }
7880            }
7881            #[automatically_derived]
7882            #[doc(hidden)]
7883            impl ::core::convert::From<permissionedProverCall> for UnderlyingRustTuple<'_> {
7884                fn from(value: permissionedProverCall) -> Self {
7885                    ()
7886                }
7887            }
7888            #[automatically_derived]
7889            #[doc(hidden)]
7890            impl ::core::convert::From<UnderlyingRustTuple<'_>> for permissionedProverCall {
7891                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7892                    Self {}
7893                }
7894            }
7895        }
7896        {
7897            #[doc(hidden)]
7898            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7899            #[doc(hidden)]
7900            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7901            #[cfg(test)]
7902            #[allow(dead_code, unreachable_patterns)]
7903            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7904                match _t {
7905                    alloy_sol_types::private::AssertTypeEq::<
7906                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7907                    >(_) => {},
7908                }
7909            }
7910            #[automatically_derived]
7911            #[doc(hidden)]
7912            impl ::core::convert::From<permissionedProverReturn> for UnderlyingRustTuple<'_> {
7913                fn from(value: permissionedProverReturn) -> Self {
7914                    (value._0,)
7915                }
7916            }
7917            #[automatically_derived]
7918            #[doc(hidden)]
7919            impl ::core::convert::From<UnderlyingRustTuple<'_>> for permissionedProverReturn {
7920                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7921                    Self { _0: tuple.0 }
7922                }
7923            }
7924        }
7925        #[automatically_derived]
7926        impl alloy_sol_types::SolCall for permissionedProverCall {
7927            type Parameters<'a> = ();
7928            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7929            type Return = permissionedProverReturn;
7930            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
7931            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7932            const SIGNATURE: &'static str = "permissionedProver()";
7933            const SELECTOR: [u8; 4] = [49u8, 61u8, 247u8, 177u8];
7934            #[inline]
7935            fn new<'a>(
7936                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7937            ) -> Self {
7938                tuple.into()
7939            }
7940            #[inline]
7941            fn tokenize(&self) -> Self::Token<'_> {
7942                ()
7943            }
7944            #[inline]
7945            fn abi_decode_returns(
7946                data: &[u8],
7947                validate: bool,
7948            ) -> alloy_sol_types::Result<Self::Return> {
7949                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
7950                    data, validate,
7951                )
7952                .map(Into::into)
7953            }
7954        }
7955    };
7956    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7957    /**Function with signature `proxiableUUID()` and selector `0x52d1902d`.
7958    ```solidity
7959    function proxiableUUID() external view returns (bytes32);
7960    ```*/
7961    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7962    #[derive(Clone)]
7963    pub struct proxiableUUIDCall {}
7964    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7965    ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function.
7966    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7967    #[derive(Clone)]
7968    pub struct proxiableUUIDReturn {
7969        #[allow(missing_docs)]
7970        pub _0: alloy::sol_types::private::FixedBytes<32>,
7971    }
7972    #[allow(
7973        non_camel_case_types,
7974        non_snake_case,
7975        clippy::pub_underscore_fields,
7976        clippy::style
7977    )]
7978    const _: () = {
7979        use alloy::sol_types as alloy_sol_types;
7980        {
7981            #[doc(hidden)]
7982            type UnderlyingSolTuple<'a> = ();
7983            #[doc(hidden)]
7984            type UnderlyingRustTuple<'a> = ();
7985            #[cfg(test)]
7986            #[allow(dead_code, unreachable_patterns)]
7987            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7988                match _t {
7989                    alloy_sol_types::private::AssertTypeEq::<
7990                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7991                    >(_) => {},
7992                }
7993            }
7994            #[automatically_derived]
7995            #[doc(hidden)]
7996            impl ::core::convert::From<proxiableUUIDCall> for UnderlyingRustTuple<'_> {
7997                fn from(value: proxiableUUIDCall) -> Self {
7998                    ()
7999                }
8000            }
8001            #[automatically_derived]
8002            #[doc(hidden)]
8003            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDCall {
8004                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8005                    Self {}
8006                }
8007            }
8008        }
8009        {
8010            #[doc(hidden)]
8011            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
8012            #[doc(hidden)]
8013            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
8014            #[cfg(test)]
8015            #[allow(dead_code, unreachable_patterns)]
8016            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8017                match _t {
8018                    alloy_sol_types::private::AssertTypeEq::<
8019                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8020                    >(_) => {},
8021                }
8022            }
8023            #[automatically_derived]
8024            #[doc(hidden)]
8025            impl ::core::convert::From<proxiableUUIDReturn> for UnderlyingRustTuple<'_> {
8026                fn from(value: proxiableUUIDReturn) -> Self {
8027                    (value._0,)
8028                }
8029            }
8030            #[automatically_derived]
8031            #[doc(hidden)]
8032            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDReturn {
8033                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8034                    Self { _0: tuple.0 }
8035                }
8036            }
8037        }
8038        #[automatically_derived]
8039        impl alloy_sol_types::SolCall for proxiableUUIDCall {
8040            type Parameters<'a> = ();
8041            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8042            type Return = proxiableUUIDReturn;
8043            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
8044            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8045            const SIGNATURE: &'static str = "proxiableUUID()";
8046            const SELECTOR: [u8; 4] = [82u8, 209u8, 144u8, 45u8];
8047            #[inline]
8048            fn new<'a>(
8049                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8050            ) -> Self {
8051                tuple.into()
8052            }
8053            #[inline]
8054            fn tokenize(&self) -> Self::Token<'_> {
8055                ()
8056            }
8057            #[inline]
8058            fn abi_decode_returns(
8059                data: &[u8],
8060                validate: bool,
8061            ) -> alloy_sol_types::Result<Self::Return> {
8062                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
8063                    data, validate,
8064                )
8065                .map(Into::into)
8066            }
8067        }
8068    };
8069    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8070    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
8071    ```solidity
8072    function renounceOwnership() external;
8073    ```*/
8074    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8075    #[derive(Clone)]
8076    pub struct renounceOwnershipCall {}
8077    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
8078    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8079    #[derive(Clone)]
8080    pub struct renounceOwnershipReturn {}
8081    #[allow(
8082        non_camel_case_types,
8083        non_snake_case,
8084        clippy::pub_underscore_fields,
8085        clippy::style
8086    )]
8087    const _: () = {
8088        use alloy::sol_types as alloy_sol_types;
8089        {
8090            #[doc(hidden)]
8091            type UnderlyingSolTuple<'a> = ();
8092            #[doc(hidden)]
8093            type UnderlyingRustTuple<'a> = ();
8094            #[cfg(test)]
8095            #[allow(dead_code, unreachable_patterns)]
8096            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8097                match _t {
8098                    alloy_sol_types::private::AssertTypeEq::<
8099                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8100                    >(_) => {},
8101                }
8102            }
8103            #[automatically_derived]
8104            #[doc(hidden)]
8105            impl ::core::convert::From<renounceOwnershipCall> for UnderlyingRustTuple<'_> {
8106                fn from(value: renounceOwnershipCall) -> Self {
8107                    ()
8108                }
8109            }
8110            #[automatically_derived]
8111            #[doc(hidden)]
8112            impl ::core::convert::From<UnderlyingRustTuple<'_>> for renounceOwnershipCall {
8113                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8114                    Self {}
8115                }
8116            }
8117        }
8118        {
8119            #[doc(hidden)]
8120            type UnderlyingSolTuple<'a> = ();
8121            #[doc(hidden)]
8122            type UnderlyingRustTuple<'a> = ();
8123            #[cfg(test)]
8124            #[allow(dead_code, unreachable_patterns)]
8125            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8126                match _t {
8127                    alloy_sol_types::private::AssertTypeEq::<
8128                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8129                    >(_) => {},
8130                }
8131            }
8132            #[automatically_derived]
8133            #[doc(hidden)]
8134            impl ::core::convert::From<renounceOwnershipReturn> for UnderlyingRustTuple<'_> {
8135                fn from(value: renounceOwnershipReturn) -> Self {
8136                    ()
8137                }
8138            }
8139            #[automatically_derived]
8140            #[doc(hidden)]
8141            impl ::core::convert::From<UnderlyingRustTuple<'_>> for renounceOwnershipReturn {
8142                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8143                    Self {}
8144                }
8145            }
8146        }
8147        #[automatically_derived]
8148        impl alloy_sol_types::SolCall for renounceOwnershipCall {
8149            type Parameters<'a> = ();
8150            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8151            type Return = renounceOwnershipReturn;
8152            type ReturnTuple<'a> = ();
8153            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8154            const SIGNATURE: &'static str = "renounceOwnership()";
8155            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
8156            #[inline]
8157            fn new<'a>(
8158                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8159            ) -> Self {
8160                tuple.into()
8161            }
8162            #[inline]
8163            fn tokenize(&self) -> Self::Token<'_> {
8164                ()
8165            }
8166            #[inline]
8167            fn abi_decode_returns(
8168                data: &[u8],
8169                validate: bool,
8170            ) -> alloy_sol_types::Result<Self::Return> {
8171                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
8172                    data, validate,
8173                )
8174                .map(Into::into)
8175            }
8176        }
8177    };
8178    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8179    /**Function with signature `setPermissionedProver(address)` and selector `0x013fa5fc`.
8180    ```solidity
8181    function setPermissionedProver(address prover) external;
8182    ```*/
8183    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8184    #[derive(Clone)]
8185    pub struct setPermissionedProverCall {
8186        #[allow(missing_docs)]
8187        pub prover: alloy::sol_types::private::Address,
8188    }
8189    ///Container type for the return parameters of the [`setPermissionedProver(address)`](setPermissionedProverCall) function.
8190    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8191    #[derive(Clone)]
8192    pub struct setPermissionedProverReturn {}
8193    #[allow(
8194        non_camel_case_types,
8195        non_snake_case,
8196        clippy::pub_underscore_fields,
8197        clippy::style
8198    )]
8199    const _: () = {
8200        use alloy::sol_types as alloy_sol_types;
8201        {
8202            #[doc(hidden)]
8203            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
8204            #[doc(hidden)]
8205            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
8206            #[cfg(test)]
8207            #[allow(dead_code, unreachable_patterns)]
8208            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8209                match _t {
8210                    alloy_sol_types::private::AssertTypeEq::<
8211                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8212                    >(_) => {},
8213                }
8214            }
8215            #[automatically_derived]
8216            #[doc(hidden)]
8217            impl ::core::convert::From<setPermissionedProverCall> for UnderlyingRustTuple<'_> {
8218                fn from(value: setPermissionedProverCall) -> Self {
8219                    (value.prover,)
8220                }
8221            }
8222            #[automatically_derived]
8223            #[doc(hidden)]
8224            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setPermissionedProverCall {
8225                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8226                    Self { prover: tuple.0 }
8227                }
8228            }
8229        }
8230        {
8231            #[doc(hidden)]
8232            type UnderlyingSolTuple<'a> = ();
8233            #[doc(hidden)]
8234            type UnderlyingRustTuple<'a> = ();
8235            #[cfg(test)]
8236            #[allow(dead_code, unreachable_patterns)]
8237            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8238                match _t {
8239                    alloy_sol_types::private::AssertTypeEq::<
8240                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8241                    >(_) => {},
8242                }
8243            }
8244            #[automatically_derived]
8245            #[doc(hidden)]
8246            impl ::core::convert::From<setPermissionedProverReturn> for UnderlyingRustTuple<'_> {
8247                fn from(value: setPermissionedProverReturn) -> Self {
8248                    ()
8249                }
8250            }
8251            #[automatically_derived]
8252            #[doc(hidden)]
8253            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setPermissionedProverReturn {
8254                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8255                    Self {}
8256                }
8257            }
8258        }
8259        #[automatically_derived]
8260        impl alloy_sol_types::SolCall for setPermissionedProverCall {
8261            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
8262            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8263            type Return = setPermissionedProverReturn;
8264            type ReturnTuple<'a> = ();
8265            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8266            const SIGNATURE: &'static str = "setPermissionedProver(address)";
8267            const SELECTOR: [u8; 4] = [1u8, 63u8, 165u8, 252u8];
8268            #[inline]
8269            fn new<'a>(
8270                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8271            ) -> Self {
8272                tuple.into()
8273            }
8274            #[inline]
8275            fn tokenize(&self) -> Self::Token<'_> {
8276                (
8277                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8278                        &self.prover,
8279                    ),
8280                )
8281            }
8282            #[inline]
8283            fn abi_decode_returns(
8284                data: &[u8],
8285                validate: bool,
8286            ) -> alloy_sol_types::Result<Self::Return> {
8287                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
8288                    data, validate,
8289                )
8290                .map(Into::into)
8291            }
8292        }
8293    };
8294    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8295    /**Function with signature `setstateHistoryRetentionPeriod(uint32)` and selector `0x96c1ca61`.
8296    ```solidity
8297    function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
8298    ```*/
8299    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8300    #[derive(Clone)]
8301    pub struct setstateHistoryRetentionPeriodCall {
8302        #[allow(missing_docs)]
8303        pub historySeconds: u32,
8304    }
8305    ///Container type for the return parameters of the [`setstateHistoryRetentionPeriod(uint32)`](setstateHistoryRetentionPeriodCall) function.
8306    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8307    #[derive(Clone)]
8308    pub struct setstateHistoryRetentionPeriodReturn {}
8309    #[allow(
8310        non_camel_case_types,
8311        non_snake_case,
8312        clippy::pub_underscore_fields,
8313        clippy::style
8314    )]
8315    const _: () = {
8316        use alloy::sol_types as alloy_sol_types;
8317        {
8318            #[doc(hidden)]
8319            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
8320            #[doc(hidden)]
8321            type UnderlyingRustTuple<'a> = (u32,);
8322            #[cfg(test)]
8323            #[allow(dead_code, unreachable_patterns)]
8324            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8325                match _t {
8326                    alloy_sol_types::private::AssertTypeEq::<
8327                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8328                    >(_) => {},
8329                }
8330            }
8331            #[automatically_derived]
8332            #[doc(hidden)]
8333            impl ::core::convert::From<setstateHistoryRetentionPeriodCall> for UnderlyingRustTuple<'_> {
8334                fn from(value: setstateHistoryRetentionPeriodCall) -> Self {
8335                    (value.historySeconds,)
8336                }
8337            }
8338            #[automatically_derived]
8339            #[doc(hidden)]
8340            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setstateHistoryRetentionPeriodCall {
8341                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8342                    Self {
8343                        historySeconds: tuple.0,
8344                    }
8345                }
8346            }
8347        }
8348        {
8349            #[doc(hidden)]
8350            type UnderlyingSolTuple<'a> = ();
8351            #[doc(hidden)]
8352            type UnderlyingRustTuple<'a> = ();
8353            #[cfg(test)]
8354            #[allow(dead_code, unreachable_patterns)]
8355            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8356                match _t {
8357                    alloy_sol_types::private::AssertTypeEq::<
8358                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8359                    >(_) => {},
8360                }
8361            }
8362            #[automatically_derived]
8363            #[doc(hidden)]
8364            impl ::core::convert::From<setstateHistoryRetentionPeriodReturn> for UnderlyingRustTuple<'_> {
8365                fn from(value: setstateHistoryRetentionPeriodReturn) -> Self {
8366                    ()
8367                }
8368            }
8369            #[automatically_derived]
8370            #[doc(hidden)]
8371            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setstateHistoryRetentionPeriodReturn {
8372                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8373                    Self {}
8374                }
8375            }
8376        }
8377        #[automatically_derived]
8378        impl alloy_sol_types::SolCall for setstateHistoryRetentionPeriodCall {
8379            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
8380            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8381            type Return = setstateHistoryRetentionPeriodReturn;
8382            type ReturnTuple<'a> = ();
8383            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8384            const SIGNATURE: &'static str = "setstateHistoryRetentionPeriod(uint32)";
8385            const SELECTOR: [u8; 4] = [150u8, 193u8, 202u8, 97u8];
8386            #[inline]
8387            fn new<'a>(
8388                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8389            ) -> Self {
8390                tuple.into()
8391            }
8392            #[inline]
8393            fn tokenize(&self) -> Self::Token<'_> {
8394                (
8395                    <alloy::sol_types::sol_data::Uint<32> as alloy_sol_types::SolType>::tokenize(
8396                        &self.historySeconds,
8397                    ),
8398                )
8399            }
8400            #[inline]
8401            fn abi_decode_returns(
8402                data: &[u8],
8403                validate: bool,
8404            ) -> alloy_sol_types::Result<Self::Return> {
8405                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
8406                    data, validate,
8407                )
8408                .map(Into::into)
8409            }
8410        }
8411    };
8412    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8413    /**Function with signature `stateHistoryCommitments(uint256)` and selector `0x02b592f3`.
8414    ```solidity
8415    function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
8416    ```*/
8417    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8418    #[derive(Clone)]
8419    pub struct stateHistoryCommitmentsCall {
8420        #[allow(missing_docs)]
8421        pub _0: alloy::sol_types::private::primitives::aliases::U256,
8422    }
8423    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8424    ///Container type for the return parameters of the [`stateHistoryCommitments(uint256)`](stateHistoryCommitmentsCall) function.
8425    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8426    #[derive(Clone)]
8427    pub struct stateHistoryCommitmentsReturn {
8428        #[allow(missing_docs)]
8429        pub l1BlockHeight: u64,
8430        #[allow(missing_docs)]
8431        pub l1BlockTimestamp: u64,
8432        #[allow(missing_docs)]
8433        pub hotShotBlockHeight: u64,
8434        #[allow(missing_docs)]
8435        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8436    }
8437    #[allow(
8438        non_camel_case_types,
8439        non_snake_case,
8440        clippy::pub_underscore_fields,
8441        clippy::style
8442    )]
8443    const _: () = {
8444        use alloy::sol_types as alloy_sol_types;
8445        {
8446            #[doc(hidden)]
8447            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8448            #[doc(hidden)]
8449            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
8450            #[cfg(test)]
8451            #[allow(dead_code, unreachable_patterns)]
8452            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8453                match _t {
8454                    alloy_sol_types::private::AssertTypeEq::<
8455                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8456                    >(_) => {},
8457                }
8458            }
8459            #[automatically_derived]
8460            #[doc(hidden)]
8461            impl ::core::convert::From<stateHistoryCommitmentsCall> for UnderlyingRustTuple<'_> {
8462                fn from(value: stateHistoryCommitmentsCall) -> Self {
8463                    (value._0,)
8464                }
8465            }
8466            #[automatically_derived]
8467            #[doc(hidden)]
8468            impl ::core::convert::From<UnderlyingRustTuple<'_>> for stateHistoryCommitmentsCall {
8469                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8470                    Self { _0: tuple.0 }
8471                }
8472            }
8473        }
8474        {
8475            #[doc(hidden)]
8476            type UnderlyingSolTuple<'a> = (
8477                alloy::sol_types::sol_data::Uint<64>,
8478                alloy::sol_types::sol_data::Uint<64>,
8479                alloy::sol_types::sol_data::Uint<64>,
8480                BN254::ScalarField,
8481            );
8482            #[doc(hidden)]
8483            type UnderlyingRustTuple<'a> = (
8484                u64,
8485                u64,
8486                u64,
8487                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8488            );
8489            #[cfg(test)]
8490            #[allow(dead_code, unreachable_patterns)]
8491            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8492                match _t {
8493                    alloy_sol_types::private::AssertTypeEq::<
8494                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8495                    >(_) => {},
8496                }
8497            }
8498            #[automatically_derived]
8499            #[doc(hidden)]
8500            impl ::core::convert::From<stateHistoryCommitmentsReturn> for UnderlyingRustTuple<'_> {
8501                fn from(value: stateHistoryCommitmentsReturn) -> Self {
8502                    (
8503                        value.l1BlockHeight,
8504                        value.l1BlockTimestamp,
8505                        value.hotShotBlockHeight,
8506                        value.hotShotBlockCommRoot,
8507                    )
8508                }
8509            }
8510            #[automatically_derived]
8511            #[doc(hidden)]
8512            impl ::core::convert::From<UnderlyingRustTuple<'_>> for stateHistoryCommitmentsReturn {
8513                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8514                    Self {
8515                        l1BlockHeight: tuple.0,
8516                        l1BlockTimestamp: tuple.1,
8517                        hotShotBlockHeight: tuple.2,
8518                        hotShotBlockCommRoot: tuple.3,
8519                    }
8520                }
8521            }
8522        }
8523        #[automatically_derived]
8524        impl alloy_sol_types::SolCall for stateHistoryCommitmentsCall {
8525            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8526            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8527            type Return = stateHistoryCommitmentsReturn;
8528            type ReturnTuple<'a> = (
8529                alloy::sol_types::sol_data::Uint<64>,
8530                alloy::sol_types::sol_data::Uint<64>,
8531                alloy::sol_types::sol_data::Uint<64>,
8532                BN254::ScalarField,
8533            );
8534            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8535            const SIGNATURE: &'static str = "stateHistoryCommitments(uint256)";
8536            const SELECTOR: [u8; 4] = [2u8, 181u8, 146u8, 243u8];
8537            #[inline]
8538            fn new<'a>(
8539                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8540            ) -> Self {
8541                tuple.into()
8542            }
8543            #[inline]
8544            fn tokenize(&self) -> Self::Token<'_> {
8545                (
8546                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
8547                        &self._0,
8548                    ),
8549                )
8550            }
8551            #[inline]
8552            fn abi_decode_returns(
8553                data: &[u8],
8554                validate: bool,
8555            ) -> alloy_sol_types::Result<Self::Return> {
8556                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
8557                    data, validate,
8558                )
8559                .map(Into::into)
8560            }
8561        }
8562    };
8563    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8564    /**Function with signature `stateHistoryFirstIndex()` and selector `0x2f79889d`.
8565    ```solidity
8566    function stateHistoryFirstIndex() external view returns (uint64);
8567    ```*/
8568    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8569    #[derive(Clone)]
8570    pub struct stateHistoryFirstIndexCall {}
8571    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8572    ///Container type for the return parameters of the [`stateHistoryFirstIndex()`](stateHistoryFirstIndexCall) function.
8573    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8574    #[derive(Clone)]
8575    pub struct stateHistoryFirstIndexReturn {
8576        #[allow(missing_docs)]
8577        pub _0: u64,
8578    }
8579    #[allow(
8580        non_camel_case_types,
8581        non_snake_case,
8582        clippy::pub_underscore_fields,
8583        clippy::style
8584    )]
8585    const _: () = {
8586        use alloy::sol_types as alloy_sol_types;
8587        {
8588            #[doc(hidden)]
8589            type UnderlyingSolTuple<'a> = ();
8590            #[doc(hidden)]
8591            type UnderlyingRustTuple<'a> = ();
8592            #[cfg(test)]
8593            #[allow(dead_code, unreachable_patterns)]
8594            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8595                match _t {
8596                    alloy_sol_types::private::AssertTypeEq::<
8597                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8598                    >(_) => {},
8599                }
8600            }
8601            #[automatically_derived]
8602            #[doc(hidden)]
8603            impl ::core::convert::From<stateHistoryFirstIndexCall> for UnderlyingRustTuple<'_> {
8604                fn from(value: stateHistoryFirstIndexCall) -> Self {
8605                    ()
8606                }
8607            }
8608            #[automatically_derived]
8609            #[doc(hidden)]
8610            impl ::core::convert::From<UnderlyingRustTuple<'_>> for stateHistoryFirstIndexCall {
8611                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8612                    Self {}
8613                }
8614            }
8615        }
8616        {
8617            #[doc(hidden)]
8618            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8619            #[doc(hidden)]
8620            type UnderlyingRustTuple<'a> = (u64,);
8621            #[cfg(test)]
8622            #[allow(dead_code, unreachable_patterns)]
8623            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8624                match _t {
8625                    alloy_sol_types::private::AssertTypeEq::<
8626                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8627                    >(_) => {},
8628                }
8629            }
8630            #[automatically_derived]
8631            #[doc(hidden)]
8632            impl ::core::convert::From<stateHistoryFirstIndexReturn> for UnderlyingRustTuple<'_> {
8633                fn from(value: stateHistoryFirstIndexReturn) -> Self {
8634                    (value._0,)
8635                }
8636            }
8637            #[automatically_derived]
8638            #[doc(hidden)]
8639            impl ::core::convert::From<UnderlyingRustTuple<'_>> for stateHistoryFirstIndexReturn {
8640                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8641                    Self { _0: tuple.0 }
8642                }
8643            }
8644        }
8645        #[automatically_derived]
8646        impl alloy_sol_types::SolCall for stateHistoryFirstIndexCall {
8647            type Parameters<'a> = ();
8648            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8649            type Return = stateHistoryFirstIndexReturn;
8650            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8651            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8652            const SIGNATURE: &'static str = "stateHistoryFirstIndex()";
8653            const SELECTOR: [u8; 4] = [47u8, 121u8, 136u8, 157u8];
8654            #[inline]
8655            fn new<'a>(
8656                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8657            ) -> Self {
8658                tuple.into()
8659            }
8660            #[inline]
8661            fn tokenize(&self) -> Self::Token<'_> {
8662                ()
8663            }
8664            #[inline]
8665            fn abi_decode_returns(
8666                data: &[u8],
8667                validate: bool,
8668            ) -> alloy_sol_types::Result<Self::Return> {
8669                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
8670                    data, validate,
8671                )
8672                .map(Into::into)
8673            }
8674        }
8675    };
8676    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8677    /**Function with signature `stateHistoryRetentionPeriod()` and selector `0xc23b9e9e`.
8678    ```solidity
8679    function stateHistoryRetentionPeriod() external view returns (uint32);
8680    ```*/
8681    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8682    #[derive(Clone)]
8683    pub struct stateHistoryRetentionPeriodCall {}
8684    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8685    ///Container type for the return parameters of the [`stateHistoryRetentionPeriod()`](stateHistoryRetentionPeriodCall) function.
8686    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8687    #[derive(Clone)]
8688    pub struct stateHistoryRetentionPeriodReturn {
8689        #[allow(missing_docs)]
8690        pub _0: u32,
8691    }
8692    #[allow(
8693        non_camel_case_types,
8694        non_snake_case,
8695        clippy::pub_underscore_fields,
8696        clippy::style
8697    )]
8698    const _: () = {
8699        use alloy::sol_types as alloy_sol_types;
8700        {
8701            #[doc(hidden)]
8702            type UnderlyingSolTuple<'a> = ();
8703            #[doc(hidden)]
8704            type UnderlyingRustTuple<'a> = ();
8705            #[cfg(test)]
8706            #[allow(dead_code, unreachable_patterns)]
8707            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8708                match _t {
8709                    alloy_sol_types::private::AssertTypeEq::<
8710                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8711                    >(_) => {},
8712                }
8713            }
8714            #[automatically_derived]
8715            #[doc(hidden)]
8716            impl ::core::convert::From<stateHistoryRetentionPeriodCall> for UnderlyingRustTuple<'_> {
8717                fn from(value: stateHistoryRetentionPeriodCall) -> Self {
8718                    ()
8719                }
8720            }
8721            #[automatically_derived]
8722            #[doc(hidden)]
8723            impl ::core::convert::From<UnderlyingRustTuple<'_>> for stateHistoryRetentionPeriodCall {
8724                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8725                    Self {}
8726                }
8727            }
8728        }
8729        {
8730            #[doc(hidden)]
8731            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
8732            #[doc(hidden)]
8733            type UnderlyingRustTuple<'a> = (u32,);
8734            #[cfg(test)]
8735            #[allow(dead_code, unreachable_patterns)]
8736            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8737                match _t {
8738                    alloy_sol_types::private::AssertTypeEq::<
8739                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8740                    >(_) => {},
8741                }
8742            }
8743            #[automatically_derived]
8744            #[doc(hidden)]
8745            impl ::core::convert::From<stateHistoryRetentionPeriodReturn> for UnderlyingRustTuple<'_> {
8746                fn from(value: stateHistoryRetentionPeriodReturn) -> Self {
8747                    (value._0,)
8748                }
8749            }
8750            #[automatically_derived]
8751            #[doc(hidden)]
8752            impl ::core::convert::From<UnderlyingRustTuple<'_>> for stateHistoryRetentionPeriodReturn {
8753                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8754                    Self { _0: tuple.0 }
8755                }
8756            }
8757        }
8758        #[automatically_derived]
8759        impl alloy_sol_types::SolCall for stateHistoryRetentionPeriodCall {
8760            type Parameters<'a> = ();
8761            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8762            type Return = stateHistoryRetentionPeriodReturn;
8763            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
8764            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8765            const SIGNATURE: &'static str = "stateHistoryRetentionPeriod()";
8766            const SELECTOR: [u8; 4] = [194u8, 59u8, 158u8, 158u8];
8767            #[inline]
8768            fn new<'a>(
8769                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8770            ) -> Self {
8771                tuple.into()
8772            }
8773            #[inline]
8774            fn tokenize(&self) -> Self::Token<'_> {
8775                ()
8776            }
8777            #[inline]
8778            fn abi_decode_returns(
8779                data: &[u8],
8780                validate: bool,
8781            ) -> alloy_sol_types::Result<Self::Return> {
8782                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
8783                    data, validate,
8784                )
8785                .map(Into::into)
8786            }
8787        }
8788    };
8789    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8790    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
8791    ```solidity
8792    function transferOwnership(address newOwner) external;
8793    ```*/
8794    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8795    #[derive(Clone)]
8796    pub struct transferOwnershipCall {
8797        #[allow(missing_docs)]
8798        pub newOwner: alloy::sol_types::private::Address,
8799    }
8800    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
8801    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8802    #[derive(Clone)]
8803    pub struct transferOwnershipReturn {}
8804    #[allow(
8805        non_camel_case_types,
8806        non_snake_case,
8807        clippy::pub_underscore_fields,
8808        clippy::style
8809    )]
8810    const _: () = {
8811        use alloy::sol_types as alloy_sol_types;
8812        {
8813            #[doc(hidden)]
8814            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
8815            #[doc(hidden)]
8816            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
8817            #[cfg(test)]
8818            #[allow(dead_code, unreachable_patterns)]
8819            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8820                match _t {
8821                    alloy_sol_types::private::AssertTypeEq::<
8822                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8823                    >(_) => {},
8824                }
8825            }
8826            #[automatically_derived]
8827            #[doc(hidden)]
8828            impl ::core::convert::From<transferOwnershipCall> for UnderlyingRustTuple<'_> {
8829                fn from(value: transferOwnershipCall) -> Self {
8830                    (value.newOwner,)
8831                }
8832            }
8833            #[automatically_derived]
8834            #[doc(hidden)]
8835            impl ::core::convert::From<UnderlyingRustTuple<'_>> for transferOwnershipCall {
8836                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8837                    Self { newOwner: tuple.0 }
8838                }
8839            }
8840        }
8841        {
8842            #[doc(hidden)]
8843            type UnderlyingSolTuple<'a> = ();
8844            #[doc(hidden)]
8845            type UnderlyingRustTuple<'a> = ();
8846            #[cfg(test)]
8847            #[allow(dead_code, unreachable_patterns)]
8848            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8849                match _t {
8850                    alloy_sol_types::private::AssertTypeEq::<
8851                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8852                    >(_) => {},
8853                }
8854            }
8855            #[automatically_derived]
8856            #[doc(hidden)]
8857            impl ::core::convert::From<transferOwnershipReturn> for UnderlyingRustTuple<'_> {
8858                fn from(value: transferOwnershipReturn) -> Self {
8859                    ()
8860                }
8861            }
8862            #[automatically_derived]
8863            #[doc(hidden)]
8864            impl ::core::convert::From<UnderlyingRustTuple<'_>> for transferOwnershipReturn {
8865                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8866                    Self {}
8867                }
8868            }
8869        }
8870        #[automatically_derived]
8871        impl alloy_sol_types::SolCall for transferOwnershipCall {
8872            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
8873            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8874            type Return = transferOwnershipReturn;
8875            type ReturnTuple<'a> = ();
8876            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8877            const SIGNATURE: &'static str = "transferOwnership(address)";
8878            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
8879            #[inline]
8880            fn new<'a>(
8881                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8882            ) -> Self {
8883                tuple.into()
8884            }
8885            #[inline]
8886            fn tokenize(&self) -> Self::Token<'_> {
8887                (
8888                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8889                        &self.newOwner,
8890                    ),
8891                )
8892            }
8893            #[inline]
8894            fn abi_decode_returns(
8895                data: &[u8],
8896                validate: bool,
8897            ) -> alloy_sol_types::Result<Self::Return> {
8898                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
8899                    data, validate,
8900                )
8901                .map(Into::into)
8902            }
8903        }
8904    };
8905    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8906    /**Function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`.
8907    ```solidity
8908    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
8909    ```*/
8910    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8911    #[derive(Clone)]
8912    pub struct upgradeToAndCallCall {
8913        #[allow(missing_docs)]
8914        pub newImplementation: alloy::sol_types::private::Address,
8915        #[allow(missing_docs)]
8916        pub data: alloy::sol_types::private::Bytes,
8917    }
8918    ///Container type for the return parameters of the [`upgradeToAndCall(address,bytes)`](upgradeToAndCallCall) function.
8919    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8920    #[derive(Clone)]
8921    pub struct upgradeToAndCallReturn {}
8922    #[allow(
8923        non_camel_case_types,
8924        non_snake_case,
8925        clippy::pub_underscore_fields,
8926        clippy::style
8927    )]
8928    const _: () = {
8929        use alloy::sol_types as alloy_sol_types;
8930        {
8931            #[doc(hidden)]
8932            type UnderlyingSolTuple<'a> = (
8933                alloy::sol_types::sol_data::Address,
8934                alloy::sol_types::sol_data::Bytes,
8935            );
8936            #[doc(hidden)]
8937            type UnderlyingRustTuple<'a> = (
8938                alloy::sol_types::private::Address,
8939                alloy::sol_types::private::Bytes,
8940            );
8941            #[cfg(test)]
8942            #[allow(dead_code, unreachable_patterns)]
8943            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8944                match _t {
8945                    alloy_sol_types::private::AssertTypeEq::<
8946                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8947                    >(_) => {},
8948                }
8949            }
8950            #[automatically_derived]
8951            #[doc(hidden)]
8952            impl ::core::convert::From<upgradeToAndCallCall> for UnderlyingRustTuple<'_> {
8953                fn from(value: upgradeToAndCallCall) -> Self {
8954                    (value.newImplementation, value.data)
8955                }
8956            }
8957            #[automatically_derived]
8958            #[doc(hidden)]
8959            impl ::core::convert::From<UnderlyingRustTuple<'_>> for upgradeToAndCallCall {
8960                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8961                    Self {
8962                        newImplementation: tuple.0,
8963                        data: tuple.1,
8964                    }
8965                }
8966            }
8967        }
8968        {
8969            #[doc(hidden)]
8970            type UnderlyingSolTuple<'a> = ();
8971            #[doc(hidden)]
8972            type UnderlyingRustTuple<'a> = ();
8973            #[cfg(test)]
8974            #[allow(dead_code, unreachable_patterns)]
8975            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8976                match _t {
8977                    alloy_sol_types::private::AssertTypeEq::<
8978                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8979                    >(_) => {},
8980                }
8981            }
8982            #[automatically_derived]
8983            #[doc(hidden)]
8984            impl ::core::convert::From<upgradeToAndCallReturn> for UnderlyingRustTuple<'_> {
8985                fn from(value: upgradeToAndCallReturn) -> Self {
8986                    ()
8987                }
8988            }
8989            #[automatically_derived]
8990            #[doc(hidden)]
8991            impl ::core::convert::From<UnderlyingRustTuple<'_>> for upgradeToAndCallReturn {
8992                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8993                    Self {}
8994                }
8995            }
8996        }
8997        #[automatically_derived]
8998        impl alloy_sol_types::SolCall for upgradeToAndCallCall {
8999            type Parameters<'a> = (
9000                alloy::sol_types::sol_data::Address,
9001                alloy::sol_types::sol_data::Bytes,
9002            );
9003            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
9004            type Return = upgradeToAndCallReturn;
9005            type ReturnTuple<'a> = ();
9006            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
9007            const SIGNATURE: &'static str = "upgradeToAndCall(address,bytes)";
9008            const SELECTOR: [u8; 4] = [79u8, 30u8, 242u8, 134u8];
9009            #[inline]
9010            fn new<'a>(
9011                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9012            ) -> Self {
9013                tuple.into()
9014            }
9015            #[inline]
9016            fn tokenize(&self) -> Self::Token<'_> {
9017                (
9018                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9019                        &self.newImplementation,
9020                    ),
9021                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
9022                        &self.data,
9023                    ),
9024                )
9025            }
9026            #[inline]
9027            fn abi_decode_returns(
9028                data: &[u8],
9029                validate: bool,
9030            ) -> alloy_sol_types::Result<Self::Return> {
9031                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
9032                    data, validate,
9033                )
9034                .map(Into::into)
9035            }
9036        }
9037    };
9038    ///Container for all the [`LightClientArbitrum`](self) function calls.
9039    #[derive()]
9040    pub enum LightClientArbitrumCalls {
9041        #[allow(missing_docs)]
9042        UPGRADE_INTERFACE_VERSION(UPGRADE_INTERFACE_VERSIONCall),
9043        #[allow(missing_docs)]
9044        _getVk(_getVkCall),
9045        #[allow(missing_docs)]
9046        currentBlockNumber(currentBlockNumberCall),
9047        #[allow(missing_docs)]
9048        disablePermissionedProverMode(disablePermissionedProverModeCall),
9049        #[allow(missing_docs)]
9050        finalizedState(finalizedStateCall),
9051        #[allow(missing_docs)]
9052        genesisStakeTableState(genesisStakeTableStateCall),
9053        #[allow(missing_docs)]
9054        genesisState(genesisStateCall),
9055        #[allow(missing_docs)]
9056        getHotShotCommitment(getHotShotCommitmentCall),
9057        #[allow(missing_docs)]
9058        getStateHistoryCount(getStateHistoryCountCall),
9059        #[allow(missing_docs)]
9060        getVersion(getVersionCall),
9061        #[allow(missing_docs)]
9062        initialize(initializeCall),
9063        #[allow(missing_docs)]
9064        isPermissionedProverEnabled(isPermissionedProverEnabledCall),
9065        #[allow(missing_docs)]
9066        lagOverEscapeHatchThreshold(lagOverEscapeHatchThresholdCall),
9067        #[allow(missing_docs)]
9068        newFinalizedState(newFinalizedStateCall),
9069        #[allow(missing_docs)]
9070        owner(ownerCall),
9071        #[allow(missing_docs)]
9072        permissionedProver(permissionedProverCall),
9073        #[allow(missing_docs)]
9074        proxiableUUID(proxiableUUIDCall),
9075        #[allow(missing_docs)]
9076        renounceOwnership(renounceOwnershipCall),
9077        #[allow(missing_docs)]
9078        setPermissionedProver(setPermissionedProverCall),
9079        #[allow(missing_docs)]
9080        setstateHistoryRetentionPeriod(setstateHistoryRetentionPeriodCall),
9081        #[allow(missing_docs)]
9082        stateHistoryCommitments(stateHistoryCommitmentsCall),
9083        #[allow(missing_docs)]
9084        stateHistoryFirstIndex(stateHistoryFirstIndexCall),
9085        #[allow(missing_docs)]
9086        stateHistoryRetentionPeriod(stateHistoryRetentionPeriodCall),
9087        #[allow(missing_docs)]
9088        transferOwnership(transferOwnershipCall),
9089        #[allow(missing_docs)]
9090        upgradeToAndCall(upgradeToAndCallCall),
9091    }
9092    #[automatically_derived]
9093    impl LightClientArbitrumCalls {
9094        /// All the selectors of this enum.
9095        ///
9096        /// Note that the selectors might not be in the same order as the variants.
9097        /// No guarantees are made about the order of the selectors.
9098        ///
9099        /// Prefer using `SolInterface` methods instead.
9100        pub const SELECTORS: &'static [[u8; 4usize]] = &[
9101            [1u8, 63u8, 165u8, 252u8],
9102            [2u8, 181u8, 146u8, 243u8],
9103            [13u8, 142u8, 110u8, 44u8],
9104            [18u8, 23u8, 60u8, 44u8],
9105            [32u8, 99u8, 212u8, 247u8],
9106            [47u8, 121u8, 136u8, 157u8],
9107            [49u8, 61u8, 247u8, 177u8],
9108            [55u8, 142u8, 194u8, 59u8],
9109            [66u8, 109u8, 49u8, 148u8],
9110            [79u8, 30u8, 242u8, 134u8],
9111            [82u8, 209u8, 144u8, 45u8],
9112            [105u8, 204u8, 106u8, 4u8],
9113            [113u8, 80u8, 24u8, 166u8],
9114            [130u8, 110u8, 65u8, 252u8],
9115            [133u8, 132u8, 210u8, 63u8],
9116            [141u8, 165u8, 203u8, 91u8],
9117            [150u8, 193u8, 202u8, 97u8],
9118            [155u8, 170u8, 60u8, 201u8],
9119            [159u8, 219u8, 84u8, 167u8],
9120            [173u8, 60u8, 177u8, 204u8],
9121            [194u8, 59u8, 158u8, 158u8],
9122            [210u8, 77u8, 147u8, 61u8],
9123            [224u8, 48u8, 51u8, 1u8],
9124            [242u8, 253u8, 227u8, 139u8],
9125            [249u8, 229u8, 13u8, 25u8],
9126        ];
9127    }
9128    #[automatically_derived]
9129    impl alloy_sol_types::SolInterface for LightClientArbitrumCalls {
9130        const NAME: &'static str = "LightClientArbitrumCalls";
9131        const MIN_DATA_LENGTH: usize = 0usize;
9132        const COUNT: usize = 25usize;
9133        #[inline]
9134        fn selector(&self) -> [u8; 4] {
9135            match self {
9136                Self::UPGRADE_INTERFACE_VERSION(_) => {
9137                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SELECTOR
9138                },
9139                Self::_getVk(_) => <_getVkCall as alloy_sol_types::SolCall>::SELECTOR,
9140                Self::currentBlockNumber(_) => {
9141                    <currentBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
9142                },
9143                Self::disablePermissionedProverMode(_) => {
9144                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::SELECTOR
9145                },
9146                Self::finalizedState(_) => {
9147                    <finalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
9148                },
9149                Self::genesisStakeTableState(_) => {
9150                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
9151                },
9152                Self::genesisState(_) => <genesisStateCall as alloy_sol_types::SolCall>::SELECTOR,
9153                Self::getHotShotCommitment(_) => {
9154                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::SELECTOR
9155                },
9156                Self::getStateHistoryCount(_) => {
9157                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::SELECTOR
9158                },
9159                Self::getVersion(_) => <getVersionCall as alloy_sol_types::SolCall>::SELECTOR,
9160                Self::initialize(_) => <initializeCall as alloy_sol_types::SolCall>::SELECTOR,
9161                Self::isPermissionedProverEnabled(_) => {
9162                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::SELECTOR
9163                },
9164                Self::lagOverEscapeHatchThreshold(_) => {
9165                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::SELECTOR
9166                },
9167                Self::newFinalizedState(_) => {
9168                    <newFinalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
9169                },
9170                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
9171                Self::permissionedProver(_) => {
9172                    <permissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
9173                },
9174                Self::proxiableUUID(_) => <proxiableUUIDCall as alloy_sol_types::SolCall>::SELECTOR,
9175                Self::renounceOwnership(_) => {
9176                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
9177                },
9178                Self::setPermissionedProver(_) => {
9179                    <setPermissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
9180                },
9181                Self::setstateHistoryRetentionPeriod(_) => {
9182                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
9183                },
9184                Self::stateHistoryCommitments(_) => {
9185                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::SELECTOR
9186                },
9187                Self::stateHistoryFirstIndex(_) => {
9188                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::SELECTOR
9189                },
9190                Self::stateHistoryRetentionPeriod(_) => {
9191                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
9192                },
9193                Self::transferOwnership(_) => {
9194                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
9195                },
9196                Self::upgradeToAndCall(_) => {
9197                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::SELECTOR
9198                },
9199            }
9200        }
9201        #[inline]
9202        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
9203            Self::SELECTORS.get(i).copied()
9204        }
9205        #[inline]
9206        fn valid_selector(selector: [u8; 4]) -> bool {
9207            Self::SELECTORS.binary_search(&selector).is_ok()
9208        }
9209        #[inline]
9210        #[allow(non_snake_case)]
9211        fn abi_decode_raw(
9212            selector: [u8; 4],
9213            data: &[u8],
9214            validate: bool,
9215        ) -> alloy_sol_types::Result<Self> {
9216            static DECODE_SHIMS: &[fn(
9217                &[u8],
9218                bool,
9219            )
9220                -> alloy_sol_types::Result<LightClientArbitrumCalls>] = &[
9221                {
9222                    fn setPermissionedProver(
9223                        data: &[u8],
9224                        validate: bool,
9225                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
9226                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
9227                            data, validate,
9228                        )
9229                        .map(LightClientArbitrumCalls::setPermissionedProver)
9230                    }
9231                    setPermissionedProver
9232                },
9233                {
9234                    fn stateHistoryCommitments(
9235                        data: &[u8],
9236                        validate: bool,
9237                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
9238                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw(
9239                            data, validate,
9240                        )
9241                        .map(LightClientArbitrumCalls::stateHistoryCommitments)
9242                    }
9243                    stateHistoryCommitments
9244                },
9245                {
9246                    fn getVersion(
9247                        data: &[u8],
9248                        validate: bool,
9249                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
9250                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw(data, validate)
9251                            .map(LightClientArbitrumCalls::getVersion)
9252                    }
9253                    getVersion
9254                },
9255                {
9256                    fn _getVk(
9257                        data: &[u8],
9258                        validate: bool,
9259                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
9260                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw(data, validate)
9261                            .map(LightClientArbitrumCalls::_getVk)
9262                    }
9263                    _getVk
9264                },
9265                {
9266                    fn newFinalizedState(
9267                        data: &[u8],
9268                        validate: bool,
9269                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
9270                        <newFinalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
9271                            data, validate,
9272                        )
9273                        .map(LightClientArbitrumCalls::newFinalizedState)
9274                    }
9275                    newFinalizedState
9276                },
9277                {
9278                    fn stateHistoryFirstIndex(
9279                        data: &[u8],
9280                        validate: bool,
9281                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
9282                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw(
9283                            data, validate,
9284                        )
9285                        .map(LightClientArbitrumCalls::stateHistoryFirstIndex)
9286                    }
9287                    stateHistoryFirstIndex
9288                },
9289                {
9290                    fn permissionedProver(
9291                        data: &[u8],
9292                        validate: bool,
9293                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
9294                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
9295                            data, validate,
9296                        )
9297                        .map(LightClientArbitrumCalls::permissionedProver)
9298                    }
9299                    permissionedProver
9300                },
9301                {
9302                    fn currentBlockNumber(
9303                        data: &[u8],
9304                        validate: bool,
9305                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
9306                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
9307                            data, validate,
9308                        )
9309                        .map(LightClientArbitrumCalls::currentBlockNumber)
9310                    }
9311                    currentBlockNumber
9312                },
9313                {
9314                    fn genesisStakeTableState(
9315                        data: &[u8],
9316                        validate: bool,
9317                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
9318                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
9319                            data, validate,
9320                        )
9321                        .map(LightClientArbitrumCalls::genesisStakeTableState)
9322                    }
9323                    genesisStakeTableState
9324                },
9325                {
9326                    fn upgradeToAndCall(
9327                        data: &[u8],
9328                        validate: bool,
9329                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
9330                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw(
9331                            data, validate,
9332                        )
9333                        .map(LightClientArbitrumCalls::upgradeToAndCall)
9334                    }
9335                    upgradeToAndCall
9336                },
9337                {
9338                    fn proxiableUUID(
9339                        data: &[u8],
9340                        validate: bool,
9341                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
9342                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw(
9343                            data, validate,
9344                        )
9345                        .map(LightClientArbitrumCalls::proxiableUUID)
9346                    }
9347                    proxiableUUID
9348                },
9349                {
9350                    fn disablePermissionedProverMode(
9351                        data: &[u8],
9352                        validate: bool,
9353                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
9354                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw(
9355                                data,
9356                                validate,
9357                            )
9358                            .map(LightClientArbitrumCalls::disablePermissionedProverMode)
9359                    }
9360                    disablePermissionedProverMode
9361                },
9362                {
9363                    fn renounceOwnership(
9364                        data: &[u8],
9365                        validate: bool,
9366                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
9367                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
9368                            data, validate,
9369                        )
9370                        .map(LightClientArbitrumCalls::renounceOwnership)
9371                    }
9372                    renounceOwnership
9373                },
9374                {
9375                    fn isPermissionedProverEnabled(
9376                        data: &[u8],
9377                        validate: bool,
9378                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
9379                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw(
9380                                data,
9381                                validate,
9382                            )
9383                            .map(LightClientArbitrumCalls::isPermissionedProverEnabled)
9384                    }
9385                    isPermissionedProverEnabled
9386                },
9387                {
9388                    fn getHotShotCommitment(
9389                        data: &[u8],
9390                        validate: bool,
9391                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
9392                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw(
9393                            data, validate,
9394                        )
9395                        .map(LightClientArbitrumCalls::getHotShotCommitment)
9396                    }
9397                    getHotShotCommitment
9398                },
9399                {
9400                    fn owner(
9401                        data: &[u8],
9402                        validate: bool,
9403                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
9404                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(data, validate)
9405                            .map(LightClientArbitrumCalls::owner)
9406                    }
9407                    owner
9408                },
9409                {
9410                    fn setstateHistoryRetentionPeriod(
9411                        data: &[u8],
9412                        validate: bool,
9413                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
9414                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
9415                                data,
9416                                validate,
9417                            )
9418                            .map(
9419                                LightClientArbitrumCalls::setstateHistoryRetentionPeriod,
9420                            )
9421                    }
9422                    setstateHistoryRetentionPeriod
9423                },
9424                {
9425                    fn initialize(
9426                        data: &[u8],
9427                        validate: bool,
9428                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
9429                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(data, validate)
9430                            .map(LightClientArbitrumCalls::initialize)
9431                    }
9432                    initialize
9433                },
9434                {
9435                    fn finalizedState(
9436                        data: &[u8],
9437                        validate: bool,
9438                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
9439                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
9440                            data, validate,
9441                        )
9442                        .map(LightClientArbitrumCalls::finalizedState)
9443                    }
9444                    finalizedState
9445                },
9446                {
9447                    fn UPGRADE_INTERFACE_VERSION(
9448                        data: &[u8],
9449                        validate: bool,
9450                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
9451                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw(
9452                            data, validate,
9453                        )
9454                        .map(LightClientArbitrumCalls::UPGRADE_INTERFACE_VERSION)
9455                    }
9456                    UPGRADE_INTERFACE_VERSION
9457                },
9458                {
9459                    fn stateHistoryRetentionPeriod(
9460                        data: &[u8],
9461                        validate: bool,
9462                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
9463                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
9464                                data,
9465                                validate,
9466                            )
9467                            .map(LightClientArbitrumCalls::stateHistoryRetentionPeriod)
9468                    }
9469                    stateHistoryRetentionPeriod
9470                },
9471                {
9472                    fn genesisState(
9473                        data: &[u8],
9474                        validate: bool,
9475                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
9476                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
9477                            data, validate,
9478                        )
9479                        .map(LightClientArbitrumCalls::genesisState)
9480                    }
9481                    genesisState
9482                },
9483                {
9484                    fn lagOverEscapeHatchThreshold(
9485                        data: &[u8],
9486                        validate: bool,
9487                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
9488                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw(
9489                                data,
9490                                validate,
9491                            )
9492                            .map(LightClientArbitrumCalls::lagOverEscapeHatchThreshold)
9493                    }
9494                    lagOverEscapeHatchThreshold
9495                },
9496                {
9497                    fn transferOwnership(
9498                        data: &[u8],
9499                        validate: bool,
9500                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
9501                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
9502                            data, validate,
9503                        )
9504                        .map(LightClientArbitrumCalls::transferOwnership)
9505                    }
9506                    transferOwnership
9507                },
9508                {
9509                    fn getStateHistoryCount(
9510                        data: &[u8],
9511                        validate: bool,
9512                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
9513                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw(
9514                            data, validate,
9515                        )
9516                        .map(LightClientArbitrumCalls::getStateHistoryCount)
9517                    }
9518                    getStateHistoryCount
9519                },
9520            ];
9521            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
9522                return Err(alloy_sol_types::Error::unknown_selector(
9523                    <Self as alloy_sol_types::SolInterface>::NAME,
9524                    selector,
9525                ));
9526            };
9527            DECODE_SHIMS[idx](data, validate)
9528        }
9529        #[inline]
9530        fn abi_encoded_size(&self) -> usize {
9531            match self {
9532                Self::UPGRADE_INTERFACE_VERSION(inner) => {
9533                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encoded_size(
9534                        inner,
9535                    )
9536                }
9537                Self::_getVk(inner) => {
9538                    <_getVkCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9539                }
9540                Self::currentBlockNumber(inner) => {
9541                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
9542                        inner,
9543                    )
9544                }
9545                Self::disablePermissionedProverMode(inner) => {
9546                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encoded_size(
9547                        inner,
9548                    )
9549                }
9550                Self::finalizedState(inner) => {
9551                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
9552                        inner,
9553                    )
9554                }
9555                Self::genesisStakeTableState(inner) => {
9556                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
9557                        inner,
9558                    )
9559                }
9560                Self::genesisState(inner) => {
9561                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
9562                        inner,
9563                    )
9564                }
9565                Self::getHotShotCommitment(inner) => {
9566                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encoded_size(
9567                        inner,
9568                    )
9569                }
9570                Self::getStateHistoryCount(inner) => {
9571                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encoded_size(
9572                        inner,
9573                    )
9574                }
9575                Self::getVersion(inner) => {
9576                    <getVersionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9577                }
9578                Self::initialize(inner) => {
9579                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9580                }
9581                Self::isPermissionedProverEnabled(inner) => {
9582                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encoded_size(
9583                        inner,
9584                    )
9585                }
9586                Self::lagOverEscapeHatchThreshold(inner) => {
9587                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encoded_size(
9588                        inner,
9589                    )
9590                }
9591                Self::newFinalizedState(inner) => {
9592                    <newFinalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
9593                        inner,
9594                    )
9595                }
9596                Self::owner(inner) => {
9597                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9598                }
9599                Self::permissionedProver(inner) => {
9600                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
9601                        inner,
9602                    )
9603                }
9604                Self::proxiableUUID(inner) => {
9605                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encoded_size(
9606                        inner,
9607                    )
9608                }
9609                Self::renounceOwnership(inner) => {
9610                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
9611                        inner,
9612                    )
9613                }
9614                Self::setPermissionedProver(inner) => {
9615                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
9616                        inner,
9617                    )
9618                }
9619                Self::setstateHistoryRetentionPeriod(inner) => {
9620                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
9621                        inner,
9622                    )
9623                }
9624                Self::stateHistoryCommitments(inner) => {
9625                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encoded_size(
9626                        inner,
9627                    )
9628                }
9629                Self::stateHistoryFirstIndex(inner) => {
9630                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encoded_size(
9631                        inner,
9632                    )
9633                }
9634                Self::stateHistoryRetentionPeriod(inner) => {
9635                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
9636                        inner,
9637                    )
9638                }
9639                Self::transferOwnership(inner) => {
9640                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
9641                        inner,
9642                    )
9643                }
9644                Self::upgradeToAndCall(inner) => {
9645                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encoded_size(
9646                        inner,
9647                    )
9648                }
9649            }
9650        }
9651        #[inline]
9652        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
9653            match self {
9654                Self::UPGRADE_INTERFACE_VERSION(inner) => {
9655                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encode_raw(
9656                        inner, out,
9657                    )
9658                },
9659                Self::_getVk(inner) => {
9660                    <_getVkCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
9661                },
9662                Self::currentBlockNumber(inner) => {
9663                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
9664                },
9665                Self::disablePermissionedProverMode(inner) => {
9666                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encode_raw(
9667                        inner, out,
9668                    )
9669                },
9670                Self::finalizedState(inner) => {
9671                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
9672                },
9673                Self::genesisStakeTableState(inner) => {
9674                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
9675                        inner, out,
9676                    )
9677                },
9678                Self::genesisState(inner) => {
9679                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
9680                },
9681                Self::getHotShotCommitment(inner) => {
9682                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encode_raw(
9683                        inner, out,
9684                    )
9685                },
9686                Self::getStateHistoryCount(inner) => {
9687                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encode_raw(
9688                        inner, out,
9689                    )
9690                },
9691                Self::getVersion(inner) => {
9692                    <getVersionCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
9693                },
9694                Self::initialize(inner) => {
9695                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
9696                },
9697                Self::isPermissionedProverEnabled(inner) => {
9698                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encode_raw(
9699                        inner, out,
9700                    )
9701                },
9702                Self::lagOverEscapeHatchThreshold(inner) => {
9703                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encode_raw(
9704                        inner, out,
9705                    )
9706                },
9707                Self::newFinalizedState(inner) => {
9708                    <newFinalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
9709                },
9710                Self::owner(inner) => {
9711                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
9712                },
9713                Self::permissionedProver(inner) => {
9714                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
9715                },
9716                Self::proxiableUUID(inner) => {
9717                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
9718                },
9719                Self::renounceOwnership(inner) => {
9720                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
9721                },
9722                Self::setPermissionedProver(inner) => {
9723                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
9724                        inner, out,
9725                    )
9726                },
9727                Self::setstateHistoryRetentionPeriod(inner) => {
9728                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
9729                        inner, out,
9730                    )
9731                },
9732                Self::stateHistoryCommitments(inner) => {
9733                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encode_raw(
9734                        inner, out,
9735                    )
9736                },
9737                Self::stateHistoryFirstIndex(inner) => {
9738                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encode_raw(
9739                        inner, out,
9740                    )
9741                },
9742                Self::stateHistoryRetentionPeriod(inner) => {
9743                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
9744                        inner, out,
9745                    )
9746                },
9747                Self::transferOwnership(inner) => {
9748                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
9749                },
9750                Self::upgradeToAndCall(inner) => {
9751                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
9752                },
9753            }
9754        }
9755    }
9756    ///Container for all the [`LightClientArbitrum`](self) custom errors.
9757    #[derive(Debug, PartialEq, Eq, Hash)]
9758    pub enum LightClientArbitrumErrors {
9759        #[allow(missing_docs)]
9760        AddressEmptyCode(AddressEmptyCode),
9761        #[allow(missing_docs)]
9762        ERC1967InvalidImplementation(ERC1967InvalidImplementation),
9763        #[allow(missing_docs)]
9764        ERC1967NonPayable(ERC1967NonPayable),
9765        #[allow(missing_docs)]
9766        FailedInnerCall(FailedInnerCall),
9767        #[allow(missing_docs)]
9768        InsufficientSnapshotHistory(InsufficientSnapshotHistory),
9769        #[allow(missing_docs)]
9770        InvalidAddress(InvalidAddress),
9771        #[allow(missing_docs)]
9772        InvalidArgs(InvalidArgs),
9773        #[allow(missing_docs)]
9774        InvalidHotShotBlockForCommitmentCheck(InvalidHotShotBlockForCommitmentCheck),
9775        #[allow(missing_docs)]
9776        InvalidInitialization(InvalidInitialization),
9777        #[allow(missing_docs)]
9778        InvalidMaxStateHistory(InvalidMaxStateHistory),
9779        #[allow(missing_docs)]
9780        InvalidProof(InvalidProof),
9781        #[allow(missing_docs)]
9782        NoChangeRequired(NoChangeRequired),
9783        #[allow(missing_docs)]
9784        NotInitializing(NotInitializing),
9785        #[allow(missing_docs)]
9786        OutdatedState(OutdatedState),
9787        #[allow(missing_docs)]
9788        OwnableInvalidOwner(OwnableInvalidOwner),
9789        #[allow(missing_docs)]
9790        OwnableUnauthorizedAccount(OwnableUnauthorizedAccount),
9791        #[allow(missing_docs)]
9792        ProverNotPermissioned(ProverNotPermissioned),
9793        #[allow(missing_docs)]
9794        UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext),
9795        #[allow(missing_docs)]
9796        UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID),
9797        #[allow(missing_docs)]
9798        WrongStakeTableUsed(WrongStakeTableUsed),
9799    }
9800    #[automatically_derived]
9801    impl LightClientArbitrumErrors {
9802        /// All the selectors of this enum.
9803        ///
9804        /// Note that the selectors might not be in the same order as the variants.
9805        /// No guarantees are made about the order of the selectors.
9806        ///
9807        /// Prefer using `SolInterface` methods instead.
9808        pub const SELECTORS: &'static [[u8; 4usize]] = &[
9809            [5u8, 28u8, 70u8, 239u8],
9810            [9u8, 189u8, 227u8, 57u8],
9811            [17u8, 140u8, 218u8, 167u8],
9812            [20u8, 37u8, 234u8, 66u8],
9813            [30u8, 79u8, 189u8, 247u8],
9814            [76u8, 156u8, 140u8, 227u8],
9815            [81u8, 97u8, 128u8, 137u8],
9816            [97u8, 90u8, 146u8, 100u8],
9817            [153u8, 150u8, 179u8, 21u8],
9818            [161u8, 186u8, 7u8, 238u8],
9819            [163u8, 166u8, 71u8, 128u8],
9820            [168u8, 99u8, 174u8, 201u8],
9821            [170u8, 29u8, 73u8, 164u8],
9822            [176u8, 180u8, 56u8, 119u8],
9823            [179u8, 152u8, 151u8, 159u8],
9824            [215u8, 230u8, 188u8, 248u8],
9825            [224u8, 124u8, 141u8, 186u8],
9826            [230u8, 196u8, 36u8, 123u8],
9827            [244u8, 160u8, 238u8, 224u8],
9828            [249u8, 46u8, 232u8, 169u8],
9829        ];
9830    }
9831    #[automatically_derived]
9832    impl alloy_sol_types::SolInterface for LightClientArbitrumErrors {
9833        const NAME: &'static str = "LightClientArbitrumErrors";
9834        const MIN_DATA_LENGTH: usize = 0usize;
9835        const COUNT: usize = 20usize;
9836        #[inline]
9837        fn selector(&self) -> [u8; 4] {
9838            match self {
9839                Self::AddressEmptyCode(_) => {
9840                    <AddressEmptyCode as alloy_sol_types::SolError>::SELECTOR
9841                },
9842                Self::ERC1967InvalidImplementation(_) => {
9843                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SELECTOR
9844                },
9845                Self::ERC1967NonPayable(_) => {
9846                    <ERC1967NonPayable as alloy_sol_types::SolError>::SELECTOR
9847                },
9848                Self::FailedInnerCall(_) => {
9849                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
9850                },
9851                Self::InsufficientSnapshotHistory(_) => {
9852                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::SELECTOR
9853                },
9854                Self::InvalidAddress(_) => <InvalidAddress as alloy_sol_types::SolError>::SELECTOR,
9855                Self::InvalidArgs(_) => <InvalidArgs as alloy_sol_types::SolError>::SELECTOR,
9856                Self::InvalidHotShotBlockForCommitmentCheck(_) => {
9857                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::SELECTOR
9858                },
9859                Self::InvalidInitialization(_) => {
9860                    <InvalidInitialization as alloy_sol_types::SolError>::SELECTOR
9861                },
9862                Self::InvalidMaxStateHistory(_) => {
9863                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::SELECTOR
9864                },
9865                Self::InvalidProof(_) => <InvalidProof as alloy_sol_types::SolError>::SELECTOR,
9866                Self::NoChangeRequired(_) => {
9867                    <NoChangeRequired as alloy_sol_types::SolError>::SELECTOR
9868                },
9869                Self::NotInitializing(_) => {
9870                    <NotInitializing as alloy_sol_types::SolError>::SELECTOR
9871                },
9872                Self::OutdatedState(_) => <OutdatedState as alloy_sol_types::SolError>::SELECTOR,
9873                Self::OwnableInvalidOwner(_) => {
9874                    <OwnableInvalidOwner as alloy_sol_types::SolError>::SELECTOR
9875                },
9876                Self::OwnableUnauthorizedAccount(_) => {
9877                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
9878                },
9879                Self::ProverNotPermissioned(_) => {
9880                    <ProverNotPermissioned as alloy_sol_types::SolError>::SELECTOR
9881                },
9882                Self::UUPSUnauthorizedCallContext(_) => {
9883                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SELECTOR
9884                },
9885                Self::UUPSUnsupportedProxiableUUID(_) => {
9886                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SELECTOR
9887                },
9888                Self::WrongStakeTableUsed(_) => {
9889                    <WrongStakeTableUsed as alloy_sol_types::SolError>::SELECTOR
9890                },
9891            }
9892        }
9893        #[inline]
9894        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
9895            Self::SELECTORS.get(i).copied()
9896        }
9897        #[inline]
9898        fn valid_selector(selector: [u8; 4]) -> bool {
9899            Self::SELECTORS.binary_search(&selector).is_ok()
9900        }
9901        #[inline]
9902        #[allow(non_snake_case)]
9903        fn abi_decode_raw(
9904            selector: [u8; 4],
9905            data: &[u8],
9906            validate: bool,
9907        ) -> alloy_sol_types::Result<Self> {
9908            static DECODE_SHIMS: &[fn(
9909                &[u8],
9910                bool,
9911            )
9912                -> alloy_sol_types::Result<LightClientArbitrumErrors>] = &[
9913                {
9914                    fn OutdatedState(
9915                        data: &[u8],
9916                        validate: bool,
9917                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
9918                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw(data, validate)
9919                            .map(LightClientArbitrumErrors::OutdatedState)
9920                    }
9921                    OutdatedState
9922                },
9923                {
9924                    fn InvalidProof(
9925                        data: &[u8],
9926                        validate: bool,
9927                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
9928                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw(data, validate)
9929                            .map(LightClientArbitrumErrors::InvalidProof)
9930                    }
9931                    InvalidProof
9932                },
9933                {
9934                    fn OwnableUnauthorizedAccount(
9935                        data: &[u8],
9936                        validate: bool,
9937                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
9938                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
9939                            data, validate,
9940                        )
9941                        .map(LightClientArbitrumErrors::OwnableUnauthorizedAccount)
9942                    }
9943                    OwnableUnauthorizedAccount
9944                },
9945                {
9946                    fn FailedInnerCall(
9947                        data: &[u8],
9948                        validate: bool,
9949                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
9950                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw(
9951                            data, validate,
9952                        )
9953                        .map(LightClientArbitrumErrors::FailedInnerCall)
9954                    }
9955                    FailedInnerCall
9956                },
9957                {
9958                    fn OwnableInvalidOwner(
9959                        data: &[u8],
9960                        validate: bool,
9961                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
9962                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw(
9963                            data, validate,
9964                        )
9965                        .map(LightClientArbitrumErrors::OwnableInvalidOwner)
9966                    }
9967                    OwnableInvalidOwner
9968                },
9969                {
9970                    fn ERC1967InvalidImplementation(
9971                        data: &[u8],
9972                        validate: bool,
9973                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
9974                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw(
9975                            data, validate,
9976                        )
9977                        .map(LightClientArbitrumErrors::ERC1967InvalidImplementation)
9978                    }
9979                    ERC1967InvalidImplementation
9980                },
9981                {
9982                    fn WrongStakeTableUsed(
9983                        data: &[u8],
9984                        validate: bool,
9985                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
9986                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw(
9987                            data, validate,
9988                        )
9989                        .map(LightClientArbitrumErrors::WrongStakeTableUsed)
9990                    }
9991                    WrongStakeTableUsed
9992                },
9993                {
9994                    fn InvalidHotShotBlockForCommitmentCheck(
9995                        data: &[u8],
9996                        validate: bool,
9997                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
9998                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw(
9999                                data,
10000                                validate,
10001                            )
10002                            .map(
10003                                LightClientArbitrumErrors::InvalidHotShotBlockForCommitmentCheck,
10004                            )
10005                    }
10006                    InvalidHotShotBlockForCommitmentCheck
10007                },
10008                {
10009                    fn AddressEmptyCode(
10010                        data: &[u8],
10011                        validate: bool,
10012                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
10013                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw(
10014                            data, validate,
10015                        )
10016                        .map(LightClientArbitrumErrors::AddressEmptyCode)
10017                    }
10018                    AddressEmptyCode
10019                },
10020                {
10021                    fn InvalidArgs(
10022                        data: &[u8],
10023                        validate: bool,
10024                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
10025                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw(data, validate)
10026                            .map(LightClientArbitrumErrors::InvalidArgs)
10027                    }
10028                    InvalidArgs
10029                },
10030                {
10031                    fn ProverNotPermissioned(
10032                        data: &[u8],
10033                        validate: bool,
10034                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
10035                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw(
10036                            data, validate,
10037                        )
10038                        .map(LightClientArbitrumErrors::ProverNotPermissioned)
10039                    }
10040                    ProverNotPermissioned
10041                },
10042                {
10043                    fn NoChangeRequired(
10044                        data: &[u8],
10045                        validate: bool,
10046                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
10047                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw(
10048                            data, validate,
10049                        )
10050                        .map(LightClientArbitrumErrors::NoChangeRequired)
10051                    }
10052                    NoChangeRequired
10053                },
10054                {
10055                    fn UUPSUnsupportedProxiableUUID(
10056                        data: &[u8],
10057                        validate: bool,
10058                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
10059                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw(
10060                            data, validate,
10061                        )
10062                        .map(LightClientArbitrumErrors::UUPSUnsupportedProxiableUUID)
10063                    }
10064                    UUPSUnsupportedProxiableUUID
10065                },
10066                {
10067                    fn InsufficientSnapshotHistory(
10068                        data: &[u8],
10069                        validate: bool,
10070                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
10071                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw(
10072                            data, validate,
10073                        )
10074                        .map(LightClientArbitrumErrors::InsufficientSnapshotHistory)
10075                    }
10076                    InsufficientSnapshotHistory
10077                },
10078                {
10079                    fn ERC1967NonPayable(
10080                        data: &[u8],
10081                        validate: bool,
10082                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
10083                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw(
10084                            data, validate,
10085                        )
10086                        .map(LightClientArbitrumErrors::ERC1967NonPayable)
10087                    }
10088                    ERC1967NonPayable
10089                },
10090                {
10091                    fn NotInitializing(
10092                        data: &[u8],
10093                        validate: bool,
10094                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
10095                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw(
10096                            data, validate,
10097                        )
10098                        .map(LightClientArbitrumErrors::NotInitializing)
10099                    }
10100                    NotInitializing
10101                },
10102                {
10103                    fn UUPSUnauthorizedCallContext(
10104                        data: &[u8],
10105                        validate: bool,
10106                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
10107                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw(
10108                            data, validate,
10109                        )
10110                        .map(LightClientArbitrumErrors::UUPSUnauthorizedCallContext)
10111                    }
10112                    UUPSUnauthorizedCallContext
10113                },
10114                {
10115                    fn InvalidAddress(
10116                        data: &[u8],
10117                        validate: bool,
10118                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
10119                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw(
10120                            data, validate,
10121                        )
10122                        .map(LightClientArbitrumErrors::InvalidAddress)
10123                    }
10124                    InvalidAddress
10125                },
10126                {
10127                    fn InvalidMaxStateHistory(
10128                        data: &[u8],
10129                        validate: bool,
10130                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
10131                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw(
10132                            data, validate,
10133                        )
10134                        .map(LightClientArbitrumErrors::InvalidMaxStateHistory)
10135                    }
10136                    InvalidMaxStateHistory
10137                },
10138                {
10139                    fn InvalidInitialization(
10140                        data: &[u8],
10141                        validate: bool,
10142                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
10143                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw(
10144                            data, validate,
10145                        )
10146                        .map(LightClientArbitrumErrors::InvalidInitialization)
10147                    }
10148                    InvalidInitialization
10149                },
10150            ];
10151            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
10152                return Err(alloy_sol_types::Error::unknown_selector(
10153                    <Self as alloy_sol_types::SolInterface>::NAME,
10154                    selector,
10155                ));
10156            };
10157            DECODE_SHIMS[idx](data, validate)
10158        }
10159        #[inline]
10160        fn abi_encoded_size(&self) -> usize {
10161            match self {
10162                Self::AddressEmptyCode(inner) => {
10163                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encoded_size(
10164                        inner,
10165                    )
10166                }
10167                Self::ERC1967InvalidImplementation(inner) => {
10168                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encoded_size(
10169                        inner,
10170                    )
10171                }
10172                Self::ERC1967NonPayable(inner) => {
10173                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encoded_size(
10174                        inner,
10175                    )
10176                }
10177                Self::FailedInnerCall(inner) => {
10178                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
10179                        inner,
10180                    )
10181                }
10182                Self::InsufficientSnapshotHistory(inner) => {
10183                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encoded_size(
10184                        inner,
10185                    )
10186                }
10187                Self::InvalidAddress(inner) => {
10188                    <InvalidAddress as alloy_sol_types::SolError>::abi_encoded_size(
10189                        inner,
10190                    )
10191                }
10192                Self::InvalidArgs(inner) => {
10193                    <InvalidArgs as alloy_sol_types::SolError>::abi_encoded_size(inner)
10194                }
10195                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
10196                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encoded_size(
10197                        inner,
10198                    )
10199                }
10200                Self::InvalidInitialization(inner) => {
10201                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encoded_size(
10202                        inner,
10203                    )
10204                }
10205                Self::InvalidMaxStateHistory(inner) => {
10206                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encoded_size(
10207                        inner,
10208                    )
10209                }
10210                Self::InvalidProof(inner) => {
10211                    <InvalidProof as alloy_sol_types::SolError>::abi_encoded_size(inner)
10212                }
10213                Self::NoChangeRequired(inner) => {
10214                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encoded_size(
10215                        inner,
10216                    )
10217                }
10218                Self::NotInitializing(inner) => {
10219                    <NotInitializing as alloy_sol_types::SolError>::abi_encoded_size(
10220                        inner,
10221                    )
10222                }
10223                Self::OutdatedState(inner) => {
10224                    <OutdatedState as alloy_sol_types::SolError>::abi_encoded_size(inner)
10225                }
10226                Self::OwnableInvalidOwner(inner) => {
10227                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encoded_size(
10228                        inner,
10229                    )
10230                }
10231                Self::OwnableUnauthorizedAccount(inner) => {
10232                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
10233                        inner,
10234                    )
10235                }
10236                Self::ProverNotPermissioned(inner) => {
10237                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encoded_size(
10238                        inner,
10239                    )
10240                }
10241                Self::UUPSUnauthorizedCallContext(inner) => {
10242                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encoded_size(
10243                        inner,
10244                    )
10245                }
10246                Self::UUPSUnsupportedProxiableUUID(inner) => {
10247                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encoded_size(
10248                        inner,
10249                    )
10250                }
10251                Self::WrongStakeTableUsed(inner) => {
10252                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encoded_size(
10253                        inner,
10254                    )
10255                }
10256            }
10257        }
10258        #[inline]
10259        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
10260            match self {
10261                Self::AddressEmptyCode(inner) => {
10262                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encode_raw(
10263                        inner,
10264                        out,
10265                    )
10266                }
10267                Self::ERC1967InvalidImplementation(inner) => {
10268                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encode_raw(
10269                        inner,
10270                        out,
10271                    )
10272                }
10273                Self::ERC1967NonPayable(inner) => {
10274                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encode_raw(
10275                        inner,
10276                        out,
10277                    )
10278                }
10279                Self::FailedInnerCall(inner) => {
10280                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
10281                        inner,
10282                        out,
10283                    )
10284                }
10285                Self::InsufficientSnapshotHistory(inner) => {
10286                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encode_raw(
10287                        inner,
10288                        out,
10289                    )
10290                }
10291                Self::InvalidAddress(inner) => {
10292                    <InvalidAddress as alloy_sol_types::SolError>::abi_encode_raw(
10293                        inner,
10294                        out,
10295                    )
10296                }
10297                Self::InvalidArgs(inner) => {
10298                    <InvalidArgs as alloy_sol_types::SolError>::abi_encode_raw(
10299                        inner,
10300                        out,
10301                    )
10302                }
10303                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
10304                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encode_raw(
10305                        inner,
10306                        out,
10307                    )
10308                }
10309                Self::InvalidInitialization(inner) => {
10310                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encode_raw(
10311                        inner,
10312                        out,
10313                    )
10314                }
10315                Self::InvalidMaxStateHistory(inner) => {
10316                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encode_raw(
10317                        inner,
10318                        out,
10319                    )
10320                }
10321                Self::InvalidProof(inner) => {
10322                    <InvalidProof as alloy_sol_types::SolError>::abi_encode_raw(
10323                        inner,
10324                        out,
10325                    )
10326                }
10327                Self::NoChangeRequired(inner) => {
10328                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encode_raw(
10329                        inner,
10330                        out,
10331                    )
10332                }
10333                Self::NotInitializing(inner) => {
10334                    <NotInitializing as alloy_sol_types::SolError>::abi_encode_raw(
10335                        inner,
10336                        out,
10337                    )
10338                }
10339                Self::OutdatedState(inner) => {
10340                    <OutdatedState as alloy_sol_types::SolError>::abi_encode_raw(
10341                        inner,
10342                        out,
10343                    )
10344                }
10345                Self::OwnableInvalidOwner(inner) => {
10346                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encode_raw(
10347                        inner,
10348                        out,
10349                    )
10350                }
10351                Self::OwnableUnauthorizedAccount(inner) => {
10352                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
10353                        inner,
10354                        out,
10355                    )
10356                }
10357                Self::ProverNotPermissioned(inner) => {
10358                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encode_raw(
10359                        inner,
10360                        out,
10361                    )
10362                }
10363                Self::UUPSUnauthorizedCallContext(inner) => {
10364                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encode_raw(
10365                        inner,
10366                        out,
10367                    )
10368                }
10369                Self::UUPSUnsupportedProxiableUUID(inner) => {
10370                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encode_raw(
10371                        inner,
10372                        out,
10373                    )
10374                }
10375                Self::WrongStakeTableUsed(inner) => {
10376                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encode_raw(
10377                        inner,
10378                        out,
10379                    )
10380                }
10381            }
10382        }
10383    }
10384    ///Container for all the [`LightClientArbitrum`](self) events.
10385    #[derive(Debug, PartialEq, Eq, Hash)]
10386    pub enum LightClientArbitrumEvents {
10387        #[allow(missing_docs)]
10388        Initialized(Initialized),
10389        #[allow(missing_docs)]
10390        NewState(NewState),
10391        #[allow(missing_docs)]
10392        OwnershipTransferred(OwnershipTransferred),
10393        #[allow(missing_docs)]
10394        PermissionedProverNotRequired(PermissionedProverNotRequired),
10395        #[allow(missing_docs)]
10396        PermissionedProverRequired(PermissionedProverRequired),
10397        #[allow(missing_docs)]
10398        Upgrade(Upgrade),
10399        #[allow(missing_docs)]
10400        Upgraded(Upgraded),
10401    }
10402    #[automatically_derived]
10403    impl LightClientArbitrumEvents {
10404        /// All the selectors of this enum.
10405        ///
10406        /// Note that the selectors might not be in the same order as the variants.
10407        /// No guarantees are made about the order of the selectors.
10408        ///
10409        /// Prefer using `SolInterface` methods instead.
10410        pub const SELECTORS: &'static [[u8; 32usize]] = &[
10411            [
10412                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8, 212u8,
10413                15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8, 250u8, 133u8,
10414                216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
10415            ],
10416            [
10417                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8, 31u8, 208u8,
10418                164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8, 218u8, 175u8, 227u8,
10419                180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
10420            ],
10421            [
10422                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8, 94u8,
10423                92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8, 168u8, 119u8,
10424                109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
10425            ],
10426            [
10427                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8, 55u8, 37u8,
10428                245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8, 189u8, 110u8, 252u8,
10429                231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
10430            ],
10431            [
10432                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8, 179u8,
10433                32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8, 12u8, 192u8, 34u8,
10434                91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
10435            ],
10436            [
10437                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8, 19u8,
10438                244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8, 33u8, 238u8,
10439                209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
10440            ],
10441            [
10442                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8, 154u8,
10443                22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8, 185u8, 62u8, 237u8,
10444                168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
10445            ],
10446        ];
10447    }
10448    #[automatically_derived]
10449    impl alloy_sol_types::SolEventInterface for LightClientArbitrumEvents {
10450        const NAME: &'static str = "LightClientArbitrumEvents";
10451        const COUNT: usize = 7usize;
10452        fn decode_raw_log(
10453            topics: &[alloy_sol_types::Word],
10454            data: &[u8],
10455            validate: bool,
10456        ) -> alloy_sol_types::Result<Self> {
10457            match topics.first().copied() {
10458                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
10459                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(
10460                        topics, data, validate,
10461                    )
10462                    .map(Self::Initialized)
10463                },
10464                Some(<NewState as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
10465                    <NewState as alloy_sol_types::SolEvent>::decode_raw_log(topics, data, validate)
10466                        .map(Self::NewState)
10467                },
10468                Some(<OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
10469                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
10470                        topics, data, validate,
10471                    )
10472                    .map(Self::OwnershipTransferred)
10473                },
10474                Some(
10475                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
10476                ) => <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::decode_raw_log(
10477                    topics, data, validate,
10478                )
10479                .map(Self::PermissionedProverNotRequired),
10480                Some(<PermissionedProverRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
10481                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::decode_raw_log(
10482                        topics, data, validate,
10483                    )
10484                    .map(Self::PermissionedProverRequired)
10485                },
10486                Some(<Upgrade as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
10487                    <Upgrade as alloy_sol_types::SolEvent>::decode_raw_log(topics, data, validate)
10488                        .map(Self::Upgrade)
10489                },
10490                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
10491                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log(topics, data, validate)
10492                        .map(Self::Upgraded)
10493                },
10494                _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
10495                    name: <Self as alloy_sol_types::SolEventInterface>::NAME,
10496                    log: alloy_sol_types::private::Box::new(
10497                        alloy_sol_types::private::LogData::new_unchecked(
10498                            topics.to_vec(),
10499                            data.to_vec().into(),
10500                        ),
10501                    ),
10502                }),
10503            }
10504        }
10505    }
10506    #[automatically_derived]
10507    impl alloy_sol_types::private::IntoLogData for LightClientArbitrumEvents {
10508        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10509            match self {
10510                Self::Initialized(inner) => {
10511                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
10512                },
10513                Self::NewState(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner),
10514                Self::OwnershipTransferred(inner) => {
10515                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
10516                },
10517                Self::PermissionedProverNotRequired(inner) => {
10518                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
10519                },
10520                Self::PermissionedProverRequired(inner) => {
10521                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
10522                },
10523                Self::Upgrade(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner),
10524                Self::Upgraded(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner),
10525            }
10526        }
10527        fn into_log_data(self) -> alloy_sol_types::private::LogData {
10528            match self {
10529                Self::Initialized(inner) => {
10530                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10531                },
10532                Self::NewState(inner) => {
10533                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10534                },
10535                Self::OwnershipTransferred(inner) => {
10536                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10537                },
10538                Self::PermissionedProverNotRequired(inner) => {
10539                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10540                },
10541                Self::PermissionedProverRequired(inner) => {
10542                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10543                },
10544                Self::Upgrade(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner),
10545                Self::Upgraded(inner) => {
10546                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10547                },
10548            }
10549        }
10550    }
10551    use alloy::contract as alloy_contract;
10552    /**Creates a new wrapper around an on-chain [`LightClientArbitrum`](self) contract instance.
10553
10554    See the [wrapper's documentation](`LightClientArbitrumInstance`) for more details.*/
10555    #[inline]
10556    pub const fn new<
10557        T: alloy_contract::private::Transport + ::core::clone::Clone,
10558        P: alloy_contract::private::Provider<T, N>,
10559        N: alloy_contract::private::Network,
10560    >(
10561        address: alloy_sol_types::private::Address,
10562        provider: P,
10563    ) -> LightClientArbitrumInstance<T, P, N> {
10564        LightClientArbitrumInstance::<T, P, N>::new(address, provider)
10565    }
10566    /**Deploys this contract using the given `provider` and constructor arguments, if any.
10567
10568    Returns a new instance of the contract, if the deployment was successful.
10569
10570    For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
10571    #[inline]
10572    pub fn deploy<
10573        T: alloy_contract::private::Transport + ::core::clone::Clone,
10574        P: alloy_contract::private::Provider<T, N>,
10575        N: alloy_contract::private::Network,
10576    >(
10577        provider: P,
10578    ) -> impl ::core::future::Future<Output = alloy_contract::Result<LightClientArbitrumInstance<T, P, N>>>
10579    {
10580        LightClientArbitrumInstance::<T, P, N>::deploy(provider)
10581    }
10582    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
10583    and constructor arguments, if any.
10584
10585    This is a simple wrapper around creating a `RawCallBuilder` with the data set to
10586    the bytecode concatenated with the constructor's ABI-encoded arguments.*/
10587    #[inline]
10588    pub fn deploy_builder<
10589        T: alloy_contract::private::Transport + ::core::clone::Clone,
10590        P: alloy_contract::private::Provider<T, N>,
10591        N: alloy_contract::private::Network,
10592    >(
10593        provider: P,
10594    ) -> alloy_contract::RawCallBuilder<T, P, N> {
10595        LightClientArbitrumInstance::<T, P, N>::deploy_builder(provider)
10596    }
10597    /**A [`LightClientArbitrum`](self) instance.
10598
10599    Contains type-safe methods for interacting with an on-chain instance of the
10600    [`LightClientArbitrum`](self) contract located at a given `address`, using a given
10601    provider `P`.
10602
10603    If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
10604    documentation on how to provide it), the `deploy` and `deploy_builder` methods can
10605    be used to deploy a new instance of the contract.
10606
10607    See the [module-level documentation](self) for all the available methods.*/
10608    #[derive(Clone)]
10609    pub struct LightClientArbitrumInstance<T, P, N = alloy_contract::private::Ethereum> {
10610        address: alloy_sol_types::private::Address,
10611        provider: P,
10612        _network_transport: ::core::marker::PhantomData<(N, T)>,
10613    }
10614    #[automatically_derived]
10615    impl<T, P, N> ::core::fmt::Debug for LightClientArbitrumInstance<T, P, N> {
10616        #[inline]
10617        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
10618            f.debug_tuple("LightClientArbitrumInstance")
10619                .field(&self.address)
10620                .finish()
10621        }
10622    }
10623    /// Instantiation and getters/setters.
10624    #[automatically_derived]
10625    impl<
10626            T: alloy_contract::private::Transport + ::core::clone::Clone,
10627            P: alloy_contract::private::Provider<T, N>,
10628            N: alloy_contract::private::Network,
10629        > LightClientArbitrumInstance<T, P, N>
10630    {
10631        /**Creates a new wrapper around an on-chain [`LightClientArbitrum`](self) contract instance.
10632
10633        See the [wrapper's documentation](`LightClientArbitrumInstance`) for more details.*/
10634        #[inline]
10635        pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self {
10636            Self {
10637                address,
10638                provider,
10639                _network_transport: ::core::marker::PhantomData,
10640            }
10641        }
10642        /**Deploys this contract using the given `provider` and constructor arguments, if any.
10643
10644        Returns a new instance of the contract, if the deployment was successful.
10645
10646        For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
10647        #[inline]
10648        pub async fn deploy(
10649            provider: P,
10650        ) -> alloy_contract::Result<LightClientArbitrumInstance<T, P, N>> {
10651            let call_builder = Self::deploy_builder(provider);
10652            let contract_address = call_builder.deploy().await?;
10653            Ok(Self::new(contract_address, call_builder.provider))
10654        }
10655        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
10656        and constructor arguments, if any.
10657
10658        This is a simple wrapper around creating a `RawCallBuilder` with the data set to
10659        the bytecode concatenated with the constructor's ABI-encoded arguments.*/
10660        #[inline]
10661        pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder<T, P, N> {
10662            alloy_contract::RawCallBuilder::new_raw_deploy(
10663                provider,
10664                ::core::clone::Clone::clone(&BYTECODE),
10665            )
10666        }
10667        /// Returns a reference to the address.
10668        #[inline]
10669        pub const fn address(&self) -> &alloy_sol_types::private::Address {
10670            &self.address
10671        }
10672        /// Sets the address.
10673        #[inline]
10674        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
10675            self.address = address;
10676        }
10677        /// Sets the address and returns `self`.
10678        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
10679            self.set_address(address);
10680            self
10681        }
10682        /// Returns a reference to the provider.
10683        #[inline]
10684        pub const fn provider(&self) -> &P {
10685            &self.provider
10686        }
10687    }
10688    impl<T, P: ::core::clone::Clone, N> LightClientArbitrumInstance<T, &P, N> {
10689        /// Clones the provider and returns a new instance with the cloned provider.
10690        #[inline]
10691        pub fn with_cloned_provider(self) -> LightClientArbitrumInstance<T, P, N> {
10692            LightClientArbitrumInstance {
10693                address: self.address,
10694                provider: ::core::clone::Clone::clone(&self.provider),
10695                _network_transport: ::core::marker::PhantomData,
10696            }
10697        }
10698    }
10699    /// Function calls.
10700    #[automatically_derived]
10701    impl<
10702            T: alloy_contract::private::Transport + ::core::clone::Clone,
10703            P: alloy_contract::private::Provider<T, N>,
10704            N: alloy_contract::private::Network,
10705        > LightClientArbitrumInstance<T, P, N>
10706    {
10707        /// Creates a new call builder using this contract instance's provider and address.
10708        ///
10709        /// Note that the call can be any function call, not just those defined in this
10710        /// contract. Prefer using the other methods for building type-safe contract calls.
10711        pub fn call_builder<C: alloy_sol_types::SolCall>(
10712            &self,
10713            call: &C,
10714        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
10715            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
10716        }
10717        ///Creates a new call builder for the [`UPGRADE_INTERFACE_VERSION`] function.
10718        pub fn UPGRADE_INTERFACE_VERSION(
10719            &self,
10720        ) -> alloy_contract::SolCallBuilder<T, &P, UPGRADE_INTERFACE_VERSIONCall, N> {
10721            self.call_builder(&UPGRADE_INTERFACE_VERSIONCall {})
10722        }
10723        ///Creates a new call builder for the [`_getVk`] function.
10724        pub fn _getVk(&self) -> alloy_contract::SolCallBuilder<T, &P, _getVkCall, N> {
10725            self.call_builder(&_getVkCall {})
10726        }
10727        ///Creates a new call builder for the [`currentBlockNumber`] function.
10728        pub fn currentBlockNumber(
10729            &self,
10730        ) -> alloy_contract::SolCallBuilder<T, &P, currentBlockNumberCall, N> {
10731            self.call_builder(&currentBlockNumberCall {})
10732        }
10733        ///Creates a new call builder for the [`disablePermissionedProverMode`] function.
10734        pub fn disablePermissionedProverMode(
10735            &self,
10736        ) -> alloy_contract::SolCallBuilder<T, &P, disablePermissionedProverModeCall, N> {
10737            self.call_builder(&disablePermissionedProverModeCall {})
10738        }
10739        ///Creates a new call builder for the [`finalizedState`] function.
10740        pub fn finalizedState(
10741            &self,
10742        ) -> alloy_contract::SolCallBuilder<T, &P, finalizedStateCall, N> {
10743            self.call_builder(&finalizedStateCall {})
10744        }
10745        ///Creates a new call builder for the [`genesisStakeTableState`] function.
10746        pub fn genesisStakeTableState(
10747            &self,
10748        ) -> alloy_contract::SolCallBuilder<T, &P, genesisStakeTableStateCall, N> {
10749            self.call_builder(&genesisStakeTableStateCall {})
10750        }
10751        ///Creates a new call builder for the [`genesisState`] function.
10752        pub fn genesisState(&self) -> alloy_contract::SolCallBuilder<T, &P, genesisStateCall, N> {
10753            self.call_builder(&genesisStateCall {})
10754        }
10755        ///Creates a new call builder for the [`getHotShotCommitment`] function.
10756        pub fn getHotShotCommitment(
10757            &self,
10758            hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
10759        ) -> alloy_contract::SolCallBuilder<T, &P, getHotShotCommitmentCall, N> {
10760            self.call_builder(&getHotShotCommitmentCall { hotShotBlockHeight })
10761        }
10762        ///Creates a new call builder for the [`getStateHistoryCount`] function.
10763        pub fn getStateHistoryCount(
10764            &self,
10765        ) -> alloy_contract::SolCallBuilder<T, &P, getStateHistoryCountCall, N> {
10766            self.call_builder(&getStateHistoryCountCall {})
10767        }
10768        ///Creates a new call builder for the [`getVersion`] function.
10769        pub fn getVersion(&self) -> alloy_contract::SolCallBuilder<T, &P, getVersionCall, N> {
10770            self.call_builder(&getVersionCall {})
10771        }
10772        ///Creates a new call builder for the [`initialize`] function.
10773        pub fn initialize(
10774            &self,
10775            _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10776            _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
10777            _stateHistoryRetentionPeriod: u32,
10778            owner: alloy::sol_types::private::Address,
10779        ) -> alloy_contract::SolCallBuilder<T, &P, initializeCall, N> {
10780            self.call_builder(&initializeCall {
10781                _genesis,
10782                _genesisStakeTableState,
10783                _stateHistoryRetentionPeriod,
10784                owner,
10785            })
10786        }
10787        ///Creates a new call builder for the [`isPermissionedProverEnabled`] function.
10788        pub fn isPermissionedProverEnabled(
10789            &self,
10790        ) -> alloy_contract::SolCallBuilder<T, &P, isPermissionedProverEnabledCall, N> {
10791            self.call_builder(&isPermissionedProverEnabledCall {})
10792        }
10793        ///Creates a new call builder for the [`lagOverEscapeHatchThreshold`] function.
10794        pub fn lagOverEscapeHatchThreshold(
10795            &self,
10796            blockNumber: alloy::sol_types::private::primitives::aliases::U256,
10797            blockThreshold: alloy::sol_types::private::primitives::aliases::U256,
10798        ) -> alloy_contract::SolCallBuilder<T, &P, lagOverEscapeHatchThresholdCall, N> {
10799            self.call_builder(&lagOverEscapeHatchThresholdCall {
10800                blockNumber,
10801                blockThreshold,
10802            })
10803        }
10804        ///Creates a new call builder for the [`newFinalizedState`] function.
10805        pub fn newFinalizedState(
10806            &self,
10807            newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10808            proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
10809        ) -> alloy_contract::SolCallBuilder<T, &P, newFinalizedStateCall, N> {
10810            self.call_builder(&newFinalizedStateCall { newState, proof })
10811        }
10812        ///Creates a new call builder for the [`owner`] function.
10813        pub fn owner(&self) -> alloy_contract::SolCallBuilder<T, &P, ownerCall, N> {
10814            self.call_builder(&ownerCall {})
10815        }
10816        ///Creates a new call builder for the [`permissionedProver`] function.
10817        pub fn permissionedProver(
10818            &self,
10819        ) -> alloy_contract::SolCallBuilder<T, &P, permissionedProverCall, N> {
10820            self.call_builder(&permissionedProverCall {})
10821        }
10822        ///Creates a new call builder for the [`proxiableUUID`] function.
10823        pub fn proxiableUUID(&self) -> alloy_contract::SolCallBuilder<T, &P, proxiableUUIDCall, N> {
10824            self.call_builder(&proxiableUUIDCall {})
10825        }
10826        ///Creates a new call builder for the [`renounceOwnership`] function.
10827        pub fn renounceOwnership(
10828            &self,
10829        ) -> alloy_contract::SolCallBuilder<T, &P, renounceOwnershipCall, N> {
10830            self.call_builder(&renounceOwnershipCall {})
10831        }
10832        ///Creates a new call builder for the [`setPermissionedProver`] function.
10833        pub fn setPermissionedProver(
10834            &self,
10835            prover: alloy::sol_types::private::Address,
10836        ) -> alloy_contract::SolCallBuilder<T, &P, setPermissionedProverCall, N> {
10837            self.call_builder(&setPermissionedProverCall { prover })
10838        }
10839        ///Creates a new call builder for the [`setstateHistoryRetentionPeriod`] function.
10840        pub fn setstateHistoryRetentionPeriod(
10841            &self,
10842            historySeconds: u32,
10843        ) -> alloy_contract::SolCallBuilder<T, &P, setstateHistoryRetentionPeriodCall, N> {
10844            self.call_builder(&setstateHistoryRetentionPeriodCall { historySeconds })
10845        }
10846        ///Creates a new call builder for the [`stateHistoryCommitments`] function.
10847        pub fn stateHistoryCommitments(
10848            &self,
10849            _0: alloy::sol_types::private::primitives::aliases::U256,
10850        ) -> alloy_contract::SolCallBuilder<T, &P, stateHistoryCommitmentsCall, N> {
10851            self.call_builder(&stateHistoryCommitmentsCall { _0 })
10852        }
10853        ///Creates a new call builder for the [`stateHistoryFirstIndex`] function.
10854        pub fn stateHistoryFirstIndex(
10855            &self,
10856        ) -> alloy_contract::SolCallBuilder<T, &P, stateHistoryFirstIndexCall, N> {
10857            self.call_builder(&stateHistoryFirstIndexCall {})
10858        }
10859        ///Creates a new call builder for the [`stateHistoryRetentionPeriod`] function.
10860        pub fn stateHistoryRetentionPeriod(
10861            &self,
10862        ) -> alloy_contract::SolCallBuilder<T, &P, stateHistoryRetentionPeriodCall, N> {
10863            self.call_builder(&stateHistoryRetentionPeriodCall {})
10864        }
10865        ///Creates a new call builder for the [`transferOwnership`] function.
10866        pub fn transferOwnership(
10867            &self,
10868            newOwner: alloy::sol_types::private::Address,
10869        ) -> alloy_contract::SolCallBuilder<T, &P, transferOwnershipCall, N> {
10870            self.call_builder(&transferOwnershipCall { newOwner })
10871        }
10872        ///Creates a new call builder for the [`upgradeToAndCall`] function.
10873        pub fn upgradeToAndCall(
10874            &self,
10875            newImplementation: alloy::sol_types::private::Address,
10876            data: alloy::sol_types::private::Bytes,
10877        ) -> alloy_contract::SolCallBuilder<T, &P, upgradeToAndCallCall, N> {
10878            self.call_builder(&upgradeToAndCallCall {
10879                newImplementation,
10880                data,
10881            })
10882        }
10883    }
10884    /// Event filters.
10885    #[automatically_derived]
10886    impl<
10887            T: alloy_contract::private::Transport + ::core::clone::Clone,
10888            P: alloy_contract::private::Provider<T, N>,
10889            N: alloy_contract::private::Network,
10890        > LightClientArbitrumInstance<T, P, N>
10891    {
10892        /// Creates a new event filter using this contract instance's provider and address.
10893        ///
10894        /// Note that the type can be any event, not just those defined in this contract.
10895        /// Prefer using the other methods for building type-safe event filters.
10896        pub fn event_filter<E: alloy_sol_types::SolEvent>(
10897            &self,
10898        ) -> alloy_contract::Event<T, &P, E, N> {
10899            alloy_contract::Event::new_sol(&self.provider, &self.address)
10900        }
10901        ///Creates a new event filter for the [`Initialized`] event.
10902        pub fn Initialized_filter(&self) -> alloy_contract::Event<T, &P, Initialized, N> {
10903            self.event_filter::<Initialized>()
10904        }
10905        ///Creates a new event filter for the [`NewState`] event.
10906        pub fn NewState_filter(&self) -> alloy_contract::Event<T, &P, NewState, N> {
10907            self.event_filter::<NewState>()
10908        }
10909        ///Creates a new event filter for the [`OwnershipTransferred`] event.
10910        pub fn OwnershipTransferred_filter(
10911            &self,
10912        ) -> alloy_contract::Event<T, &P, OwnershipTransferred, N> {
10913            self.event_filter::<OwnershipTransferred>()
10914        }
10915        ///Creates a new event filter for the [`PermissionedProverNotRequired`] event.
10916        pub fn PermissionedProverNotRequired_filter(
10917            &self,
10918        ) -> alloy_contract::Event<T, &P, PermissionedProverNotRequired, N> {
10919            self.event_filter::<PermissionedProverNotRequired>()
10920        }
10921        ///Creates a new event filter for the [`PermissionedProverRequired`] event.
10922        pub fn PermissionedProverRequired_filter(
10923            &self,
10924        ) -> alloy_contract::Event<T, &P, PermissionedProverRequired, N> {
10925            self.event_filter::<PermissionedProverRequired>()
10926        }
10927        ///Creates a new event filter for the [`Upgrade`] event.
10928        pub fn Upgrade_filter(&self) -> alloy_contract::Event<T, &P, Upgrade, N> {
10929            self.event_filter::<Upgrade>()
10930        }
10931        ///Creates a new event filter for the [`Upgraded`] event.
10932        pub fn Upgraded_filter(&self) -> alloy_contract::Event<T, &P, Upgraded, N> {
10933            self.event_filter::<Upgraded>()
10934        }
10935    }
10936}