eigenlayer_contract_deployer/bindings/deploy/
squaringtask.rs

1#![allow(clippy::all, clippy::pedantic, clippy::nursery, warnings, unknown_lints, rustdoc::all, elided_lifetimes_in_paths)]
2use SquaringTask::*;
3
4///Module containing a contract's types and functions.
5/**
6
7```solidity
8library BN254 {
9    struct G1Point { uint256 X; uint256 Y; }
10    struct G2Point { uint256[2] X; uint256[2] Y; }
11}
12```*/
13#[allow(
14    non_camel_case_types,
15    non_snake_case,
16    clippy::pub_underscore_fields,
17    clippy::style,
18    clippy::empty_structs_with_brackets
19)]
20pub mod BN254 {
21    use super::*;
22    use alloy::sol_types as alloy_sol_types;
23    #[derive(Default, Debug, PartialEq, Eq, Hash)]
24    /**```solidity
25struct G1Point { uint256 X; uint256 Y; }
26```*/
27    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
28    #[derive(Clone)]
29    pub struct G1Point {
30        #[allow(missing_docs)]
31        pub X: alloy::sol_types::private::primitives::aliases::U256,
32        #[allow(missing_docs)]
33        pub Y: alloy::sol_types::private::primitives::aliases::U256,
34    }
35    #[allow(
36        non_camel_case_types,
37        non_snake_case,
38        clippy::pub_underscore_fields,
39        clippy::style
40    )]
41    const _: () = {
42        use alloy::sol_types as alloy_sol_types;
43        #[doc(hidden)]
44        type UnderlyingSolTuple<'a> = (
45            alloy::sol_types::sol_data::Uint<256>,
46            alloy::sol_types::sol_data::Uint<256>,
47        );
48        #[doc(hidden)]
49        type UnderlyingRustTuple<'a> = (
50            alloy::sol_types::private::primitives::aliases::U256,
51            alloy::sol_types::private::primitives::aliases::U256,
52        );
53        #[cfg(test)]
54        #[allow(dead_code, unreachable_patterns)]
55        fn _type_assertion(
56            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
57        ) {
58            match _t {
59                alloy_sol_types::private::AssertTypeEq::<
60                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
61                >(_) => {}
62            }
63        }
64        #[automatically_derived]
65        #[doc(hidden)]
66        impl ::core::convert::From<G1Point> for UnderlyingRustTuple<'_> {
67            fn from(value: G1Point) -> Self {
68                (value.X, value.Y)
69            }
70        }
71        #[automatically_derived]
72        #[doc(hidden)]
73        impl ::core::convert::From<UnderlyingRustTuple<'_>> for G1Point {
74            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
75                Self { X: tuple.0, Y: tuple.1 }
76            }
77        }
78        #[automatically_derived]
79        impl alloy_sol_types::SolValue for G1Point {
80            type SolType = Self;
81        }
82        #[automatically_derived]
83        impl alloy_sol_types::private::SolTypeValue<Self> for G1Point {
84            #[inline]
85            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
86                (
87                    <alloy::sol_types::sol_data::Uint<
88                        256,
89                    > as alloy_sol_types::SolType>::tokenize(&self.X),
90                    <alloy::sol_types::sol_data::Uint<
91                        256,
92                    > as alloy_sol_types::SolType>::tokenize(&self.Y),
93                )
94            }
95            #[inline]
96            fn stv_abi_encoded_size(&self) -> usize {
97                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
98                    return size;
99                }
100                let tuple = <UnderlyingRustTuple<
101                    '_,
102                > as ::core::convert::From<Self>>::from(self.clone());
103                <UnderlyingSolTuple<
104                    '_,
105                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
106            }
107            #[inline]
108            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
109                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
110            }
111            #[inline]
112            fn stv_abi_encode_packed_to(
113                &self,
114                out: &mut alloy_sol_types::private::Vec<u8>,
115            ) {
116                let tuple = <UnderlyingRustTuple<
117                    '_,
118                > as ::core::convert::From<Self>>::from(self.clone());
119                <UnderlyingSolTuple<
120                    '_,
121                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
122            }
123            #[inline]
124            fn stv_abi_packed_encoded_size(&self) -> usize {
125                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
126                    return size;
127                }
128                let tuple = <UnderlyingRustTuple<
129                    '_,
130                > as ::core::convert::From<Self>>::from(self.clone());
131                <UnderlyingSolTuple<
132                    '_,
133                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
134            }
135        }
136        #[automatically_derived]
137        impl alloy_sol_types::SolType for G1Point {
138            type RustType = Self;
139            type Token<'a> = <UnderlyingSolTuple<
140                'a,
141            > as alloy_sol_types::SolType>::Token<'a>;
142            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
143            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
144                '_,
145            > as alloy_sol_types::SolType>::ENCODED_SIZE;
146            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
147                '_,
148            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
149            #[inline]
150            fn valid_token(token: &Self::Token<'_>) -> bool {
151                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
152            }
153            #[inline]
154            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
155                let tuple = <UnderlyingSolTuple<
156                    '_,
157                > as alloy_sol_types::SolType>::detokenize(token);
158                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
159            }
160        }
161        #[automatically_derived]
162        impl alloy_sol_types::SolStruct for G1Point {
163            const NAME: &'static str = "G1Point";
164            #[inline]
165            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
166                alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 X,uint256 Y)")
167            }
168            #[inline]
169            fn eip712_components() -> alloy_sol_types::private::Vec<
170                alloy_sol_types::private::Cow<'static, str>,
171            > {
172                alloy_sol_types::private::Vec::new()
173            }
174            #[inline]
175            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
176                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
177            }
178            #[inline]
179            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
180                [
181                    <alloy::sol_types::sol_data::Uint<
182                        256,
183                    > as alloy_sol_types::SolType>::eip712_data_word(&self.X)
184                        .0,
185                    <alloy::sol_types::sol_data::Uint<
186                        256,
187                    > as alloy_sol_types::SolType>::eip712_data_word(&self.Y)
188                        .0,
189                ]
190                    .concat()
191            }
192        }
193        #[automatically_derived]
194        impl alloy_sol_types::EventTopic for G1Point {
195            #[inline]
196            fn topic_preimage_length(rust: &Self::RustType) -> usize {
197                0usize
198                    + <alloy::sol_types::sol_data::Uint<
199                        256,
200                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.X)
201                    + <alloy::sol_types::sol_data::Uint<
202                        256,
203                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.Y)
204            }
205            #[inline]
206            fn encode_topic_preimage(
207                rust: &Self::RustType,
208                out: &mut alloy_sol_types::private::Vec<u8>,
209            ) {
210                out.reserve(
211                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
212                );
213                <alloy::sol_types::sol_data::Uint<
214                    256,
215                > as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.X, out);
216                <alloy::sol_types::sol_data::Uint<
217                    256,
218                > as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.Y, out);
219            }
220            #[inline]
221            fn encode_topic(
222                rust: &Self::RustType,
223            ) -> alloy_sol_types::abi::token::WordToken {
224                let mut out = alloy_sol_types::private::Vec::new();
225                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
226                    rust,
227                    &mut out,
228                );
229                alloy_sol_types::abi::token::WordToken(
230                    alloy_sol_types::private::keccak256(out),
231                )
232            }
233        }
234    };
235    #[derive(Default, Debug, PartialEq, Eq, Hash)]
236    /**```solidity
237struct G2Point { uint256[2] X; uint256[2] Y; }
238```*/
239    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
240    #[derive(Clone)]
241    pub struct G2Point {
242        #[allow(missing_docs)]
243        pub X: [alloy::sol_types::private::primitives::aliases::U256; 2usize],
244        #[allow(missing_docs)]
245        pub Y: [alloy::sol_types::private::primitives::aliases::U256; 2usize],
246    }
247    #[allow(
248        non_camel_case_types,
249        non_snake_case,
250        clippy::pub_underscore_fields,
251        clippy::style
252    )]
253    const _: () = {
254        use alloy::sol_types as alloy_sol_types;
255        #[doc(hidden)]
256        type UnderlyingSolTuple<'a> = (
257            alloy::sol_types::sol_data::FixedArray<
258                alloy::sol_types::sol_data::Uint<256>,
259                2usize,
260            >,
261            alloy::sol_types::sol_data::FixedArray<
262                alloy::sol_types::sol_data::Uint<256>,
263                2usize,
264            >,
265        );
266        #[doc(hidden)]
267        type UnderlyingRustTuple<'a> = (
268            [alloy::sol_types::private::primitives::aliases::U256; 2usize],
269            [alloy::sol_types::private::primitives::aliases::U256; 2usize],
270        );
271        #[cfg(test)]
272        #[allow(dead_code, unreachable_patterns)]
273        fn _type_assertion(
274            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
275        ) {
276            match _t {
277                alloy_sol_types::private::AssertTypeEq::<
278                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
279                >(_) => {}
280            }
281        }
282        #[automatically_derived]
283        #[doc(hidden)]
284        impl ::core::convert::From<G2Point> for UnderlyingRustTuple<'_> {
285            fn from(value: G2Point) -> Self {
286                (value.X, value.Y)
287            }
288        }
289        #[automatically_derived]
290        #[doc(hidden)]
291        impl ::core::convert::From<UnderlyingRustTuple<'_>> for G2Point {
292            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
293                Self { X: tuple.0, Y: tuple.1 }
294            }
295        }
296        #[automatically_derived]
297        impl alloy_sol_types::SolValue for G2Point {
298            type SolType = Self;
299        }
300        #[automatically_derived]
301        impl alloy_sol_types::private::SolTypeValue<Self> for G2Point {
302            #[inline]
303            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
304                (
305                    <alloy::sol_types::sol_data::FixedArray<
306                        alloy::sol_types::sol_data::Uint<256>,
307                        2usize,
308                    > as alloy_sol_types::SolType>::tokenize(&self.X),
309                    <alloy::sol_types::sol_data::FixedArray<
310                        alloy::sol_types::sol_data::Uint<256>,
311                        2usize,
312                    > as alloy_sol_types::SolType>::tokenize(&self.Y),
313                )
314            }
315            #[inline]
316            fn stv_abi_encoded_size(&self) -> usize {
317                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
318                    return size;
319                }
320                let tuple = <UnderlyingRustTuple<
321                    '_,
322                > as ::core::convert::From<Self>>::from(self.clone());
323                <UnderlyingSolTuple<
324                    '_,
325                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
326            }
327            #[inline]
328            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
329                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
330            }
331            #[inline]
332            fn stv_abi_encode_packed_to(
333                &self,
334                out: &mut alloy_sol_types::private::Vec<u8>,
335            ) {
336                let tuple = <UnderlyingRustTuple<
337                    '_,
338                > as ::core::convert::From<Self>>::from(self.clone());
339                <UnderlyingSolTuple<
340                    '_,
341                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
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 = <UnderlyingRustTuple<
349                    '_,
350                > as ::core::convert::From<Self>>::from(self.clone());
351                <UnderlyingSolTuple<
352                    '_,
353                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
354            }
355        }
356        #[automatically_derived]
357        impl alloy_sol_types::SolType for G2Point {
358            type RustType = Self;
359            type Token<'a> = <UnderlyingSolTuple<
360                'a,
361            > as alloy_sol_types::SolType>::Token<'a>;
362            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
363            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
364                '_,
365            > as alloy_sol_types::SolType>::ENCODED_SIZE;
366            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
367                '_,
368            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
369            #[inline]
370            fn valid_token(token: &Self::Token<'_>) -> bool {
371                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
372            }
373            #[inline]
374            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
375                let tuple = <UnderlyingSolTuple<
376                    '_,
377                > as alloy_sol_types::SolType>::detokenize(token);
378                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
379            }
380        }
381        #[automatically_derived]
382        impl alloy_sol_types::SolStruct for G2Point {
383            const NAME: &'static str = "G2Point";
384            #[inline]
385            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
386                alloy_sol_types::private::Cow::Borrowed(
387                    "G2Point(uint256[2] X,uint256[2] Y)",
388                )
389            }
390            #[inline]
391            fn eip712_components() -> alloy_sol_types::private::Vec<
392                alloy_sol_types::private::Cow<'static, str>,
393            > {
394                alloy_sol_types::private::Vec::new()
395            }
396            #[inline]
397            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
398                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
399            }
400            #[inline]
401            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
402                [
403                    <alloy::sol_types::sol_data::FixedArray<
404                        alloy::sol_types::sol_data::Uint<256>,
405                        2usize,
406                    > as alloy_sol_types::SolType>::eip712_data_word(&self.X)
407                        .0,
408                    <alloy::sol_types::sol_data::FixedArray<
409                        alloy::sol_types::sol_data::Uint<256>,
410                        2usize,
411                    > as alloy_sol_types::SolType>::eip712_data_word(&self.Y)
412                        .0,
413                ]
414                    .concat()
415            }
416        }
417        #[automatically_derived]
418        impl alloy_sol_types::EventTopic for G2Point {
419            #[inline]
420            fn topic_preimage_length(rust: &Self::RustType) -> usize {
421                0usize
422                    + <alloy::sol_types::sol_data::FixedArray<
423                        alloy::sol_types::sol_data::Uint<256>,
424                        2usize,
425                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.X)
426                    + <alloy::sol_types::sol_data::FixedArray<
427                        alloy::sol_types::sol_data::Uint<256>,
428                        2usize,
429                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.Y)
430            }
431            #[inline]
432            fn encode_topic_preimage(
433                rust: &Self::RustType,
434                out: &mut alloy_sol_types::private::Vec<u8>,
435            ) {
436                out.reserve(
437                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
438                );
439                <alloy::sol_types::sol_data::FixedArray<
440                    alloy::sol_types::sol_data::Uint<256>,
441                    2usize,
442                > as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.X, out);
443                <alloy::sol_types::sol_data::FixedArray<
444                    alloy::sol_types::sol_data::Uint<256>,
445                    2usize,
446                > as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.Y, out);
447            }
448            #[inline]
449            fn encode_topic(
450                rust: &Self::RustType,
451            ) -> alloy_sol_types::abi::token::WordToken {
452                let mut out = alloy_sol_types::private::Vec::new();
453                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
454                    rust,
455                    &mut out,
456                );
457                alloy_sol_types::abi::token::WordToken(
458                    alloy_sol_types::private::keccak256(out),
459                )
460            }
461        }
462    };
463    use alloy::contract as alloy_contract;
464    /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
465
466See the [wrapper's documentation](`BN254Instance`) for more details.*/
467    #[inline]
468    pub const fn new<
469        T: alloy_contract::private::Transport + ::core::clone::Clone,
470        P: alloy_contract::private::Provider<T, N>,
471        N: alloy_contract::private::Network,
472    >(
473        address: alloy_sol_types::private::Address,
474        provider: P,
475    ) -> BN254Instance<T, P, N> {
476        BN254Instance::<T, P, N>::new(address, provider)
477    }
478    /**A [`BN254`](self) instance.
479
480Contains type-safe methods for interacting with an on-chain instance of the
481[`BN254`](self) contract located at a given `address`, using a given
482provider `P`.
483
484If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
485documentation on how to provide it), the `deploy` and `deploy_builder` methods can
486be used to deploy a new instance of the contract.
487
488See the [module-level documentation](self) for all the available methods.*/
489    #[derive(Clone)]
490    pub struct BN254Instance<T, P, N = alloy_contract::private::Ethereum> {
491        address: alloy_sol_types::private::Address,
492        provider: P,
493        _network_transport: ::core::marker::PhantomData<(N, T)>,
494    }
495    #[automatically_derived]
496    impl<T, P, N> ::core::fmt::Debug for BN254Instance<T, P, N> {
497        #[inline]
498        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
499            f.debug_tuple("BN254Instance").field(&self.address).finish()
500        }
501    }
502    /// Instantiation and getters/setters.
503    #[automatically_derived]
504    impl<
505        T: alloy_contract::private::Transport + ::core::clone::Clone,
506        P: alloy_contract::private::Provider<T, N>,
507        N: alloy_contract::private::Network,
508    > BN254Instance<T, P, N> {
509        /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
510
511See the [wrapper's documentation](`BN254Instance`) for more details.*/
512        #[inline]
513        pub const fn new(
514            address: alloy_sol_types::private::Address,
515            provider: P,
516        ) -> Self {
517            Self {
518                address,
519                provider,
520                _network_transport: ::core::marker::PhantomData,
521            }
522        }
523        /// Returns a reference to the address.
524        #[inline]
525        pub const fn address(&self) -> &alloy_sol_types::private::Address {
526            &self.address
527        }
528        /// Sets the address.
529        #[inline]
530        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
531            self.address = address;
532        }
533        /// Sets the address and returns `self`.
534        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
535            self.set_address(address);
536            self
537        }
538        /// Returns a reference to the provider.
539        #[inline]
540        pub const fn provider(&self) -> &P {
541            &self.provider
542        }
543    }
544    impl<T, P: ::core::clone::Clone, N> BN254Instance<T, &P, N> {
545        /// Clones the provider and returns a new instance with the cloned provider.
546        #[inline]
547        pub fn with_cloned_provider(self) -> BN254Instance<T, P, N> {
548            BN254Instance {
549                address: self.address,
550                provider: ::core::clone::Clone::clone(&self.provider),
551                _network_transport: ::core::marker::PhantomData,
552            }
553        }
554    }
555    /// Function calls.
556    #[automatically_derived]
557    impl<
558        T: alloy_contract::private::Transport + ::core::clone::Clone,
559        P: alloy_contract::private::Provider<T, N>,
560        N: alloy_contract::private::Network,
561    > BN254Instance<T, P, N> {
562        /// Creates a new call builder using this contract instance's provider and address.
563        ///
564        /// Note that the call can be any function call, not just those defined in this
565        /// contract. Prefer using the other methods for building type-safe contract calls.
566        pub fn call_builder<C: alloy_sol_types::SolCall>(
567            &self,
568            call: &C,
569        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
570            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
571        }
572    }
573    /// Event filters.
574    #[automatically_derived]
575    impl<
576        T: alloy_contract::private::Transport + ::core::clone::Clone,
577        P: alloy_contract::private::Provider<T, N>,
578        N: alloy_contract::private::Network,
579    > BN254Instance<T, P, N> {
580        /// Creates a new event filter using this contract instance's provider and address.
581        ///
582        /// Note that the type can be any event, not just those defined in this contract.
583        /// Prefer using the other methods for building type-safe event filters.
584        pub fn event_filter<E: alloy_sol_types::SolEvent>(
585            &self,
586        ) -> alloy_contract::Event<T, &P, E, N> {
587            alloy_contract::Event::new_sol(&self.provider, &self.address)
588        }
589    }
590}
591///Module containing a contract's types and functions.
592/**
593
594```solidity
595library IBLSSignatureCheckerTypes {
596    struct NonSignerStakesAndSignature { uint32[] nonSignerQuorumBitmapIndices; BN254.G1Point[] nonSignerPubkeys; BN254.G1Point[] quorumApks; BN254.G2Point apkG2; BN254.G1Point sigma; uint32[] quorumApkIndices; uint32[] totalStakeIndices; uint32[][] nonSignerStakeIndices; }
597    struct QuorumStakeTotals { uint96[] signedStakeForQuorum; uint96[] totalStakeForQuorum; }
598}
599```*/
600#[allow(
601    non_camel_case_types,
602    non_snake_case,
603    clippy::pub_underscore_fields,
604    clippy::style,
605    clippy::empty_structs_with_brackets
606)]
607pub mod IBLSSignatureCheckerTypes {
608    use super::*;
609    use alloy::sol_types as alloy_sol_types;
610    #[derive(Default, Debug, PartialEq, Eq, Hash)]
611    /**```solidity
612struct NonSignerStakesAndSignature { uint32[] nonSignerQuorumBitmapIndices; BN254.G1Point[] nonSignerPubkeys; BN254.G1Point[] quorumApks; BN254.G2Point apkG2; BN254.G1Point sigma; uint32[] quorumApkIndices; uint32[] totalStakeIndices; uint32[][] nonSignerStakeIndices; }
613```*/
614    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
615    #[derive(Clone)]
616    pub struct NonSignerStakesAndSignature {
617        #[allow(missing_docs)]
618        pub nonSignerQuorumBitmapIndices: alloy::sol_types::private::Vec<u32>,
619        #[allow(missing_docs)]
620        pub nonSignerPubkeys: alloy::sol_types::private::Vec<
621            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
622        >,
623        #[allow(missing_docs)]
624        pub quorumApks: alloy::sol_types::private::Vec<
625            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
626        >,
627        #[allow(missing_docs)]
628        pub apkG2: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
629        #[allow(missing_docs)]
630        pub sigma: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
631        #[allow(missing_docs)]
632        pub quorumApkIndices: alloy::sol_types::private::Vec<u32>,
633        #[allow(missing_docs)]
634        pub totalStakeIndices: alloy::sol_types::private::Vec<u32>,
635        #[allow(missing_docs)]
636        pub nonSignerStakeIndices: alloy::sol_types::private::Vec<
637            alloy::sol_types::private::Vec<u32>,
638        >,
639    }
640    #[allow(
641        non_camel_case_types,
642        non_snake_case,
643        clippy::pub_underscore_fields,
644        clippy::style
645    )]
646    const _: () = {
647        use alloy::sol_types as alloy_sol_types;
648        #[doc(hidden)]
649        type UnderlyingSolTuple<'a> = (
650            alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<32>>,
651            alloy::sol_types::sol_data::Array<BN254::G1Point>,
652            alloy::sol_types::sol_data::Array<BN254::G1Point>,
653            BN254::G2Point,
654            BN254::G1Point,
655            alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<32>>,
656            alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<32>>,
657            alloy::sol_types::sol_data::Array<
658                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<32>>,
659            >,
660        );
661        #[doc(hidden)]
662        type UnderlyingRustTuple<'a> = (
663            alloy::sol_types::private::Vec<u32>,
664            alloy::sol_types::private::Vec<
665                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
666            >,
667            alloy::sol_types::private::Vec<
668                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
669            >,
670            <BN254::G2Point as alloy::sol_types::SolType>::RustType,
671            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
672            alloy::sol_types::private::Vec<u32>,
673            alloy::sol_types::private::Vec<u32>,
674            alloy::sol_types::private::Vec<alloy::sol_types::private::Vec<u32>>,
675        );
676        #[cfg(test)]
677        #[allow(dead_code, unreachable_patterns)]
678        fn _type_assertion(
679            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
680        ) {
681            match _t {
682                alloy_sol_types::private::AssertTypeEq::<
683                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
684                >(_) => {}
685            }
686        }
687        #[automatically_derived]
688        #[doc(hidden)]
689        impl ::core::convert::From<NonSignerStakesAndSignature>
690        for UnderlyingRustTuple<'_> {
691            fn from(value: NonSignerStakesAndSignature) -> Self {
692                (
693                    value.nonSignerQuorumBitmapIndices,
694                    value.nonSignerPubkeys,
695                    value.quorumApks,
696                    value.apkG2,
697                    value.sigma,
698                    value.quorumApkIndices,
699                    value.totalStakeIndices,
700                    value.nonSignerStakeIndices,
701                )
702            }
703        }
704        #[automatically_derived]
705        #[doc(hidden)]
706        impl ::core::convert::From<UnderlyingRustTuple<'_>>
707        for NonSignerStakesAndSignature {
708            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
709                Self {
710                    nonSignerQuorumBitmapIndices: tuple.0,
711                    nonSignerPubkeys: tuple.1,
712                    quorumApks: tuple.2,
713                    apkG2: tuple.3,
714                    sigma: tuple.4,
715                    quorumApkIndices: tuple.5,
716                    totalStakeIndices: tuple.6,
717                    nonSignerStakeIndices: tuple.7,
718                }
719            }
720        }
721        #[automatically_derived]
722        impl alloy_sol_types::SolValue for NonSignerStakesAndSignature {
723            type SolType = Self;
724        }
725        #[automatically_derived]
726        impl alloy_sol_types::private::SolTypeValue<Self>
727        for NonSignerStakesAndSignature {
728            #[inline]
729            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
730                (
731                    <alloy::sol_types::sol_data::Array<
732                        alloy::sol_types::sol_data::Uint<32>,
733                    > as alloy_sol_types::SolType>::tokenize(
734                        &self.nonSignerQuorumBitmapIndices,
735                    ),
736                    <alloy::sol_types::sol_data::Array<
737                        BN254::G1Point,
738                    > as alloy_sol_types::SolType>::tokenize(&self.nonSignerPubkeys),
739                    <alloy::sol_types::sol_data::Array<
740                        BN254::G1Point,
741                    > as alloy_sol_types::SolType>::tokenize(&self.quorumApks),
742                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.apkG2),
743                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma),
744                    <alloy::sol_types::sol_data::Array<
745                        alloy::sol_types::sol_data::Uint<32>,
746                    > as alloy_sol_types::SolType>::tokenize(&self.quorumApkIndices),
747                    <alloy::sol_types::sol_data::Array<
748                        alloy::sol_types::sol_data::Uint<32>,
749                    > as alloy_sol_types::SolType>::tokenize(&self.totalStakeIndices),
750                    <alloy::sol_types::sol_data::Array<
751                        alloy::sol_types::sol_data::Array<
752                            alloy::sol_types::sol_data::Uint<32>,
753                        >,
754                    > as alloy_sol_types::SolType>::tokenize(&self.nonSignerStakeIndices),
755                )
756            }
757            #[inline]
758            fn stv_abi_encoded_size(&self) -> usize {
759                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
760                    return size;
761                }
762                let tuple = <UnderlyingRustTuple<
763                    '_,
764                > as ::core::convert::From<Self>>::from(self.clone());
765                <UnderlyingSolTuple<
766                    '_,
767                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
768            }
769            #[inline]
770            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
771                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
772            }
773            #[inline]
774            fn stv_abi_encode_packed_to(
775                &self,
776                out: &mut alloy_sol_types::private::Vec<u8>,
777            ) {
778                let tuple = <UnderlyingRustTuple<
779                    '_,
780                > as ::core::convert::From<Self>>::from(self.clone());
781                <UnderlyingSolTuple<
782                    '_,
783                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
784            }
785            #[inline]
786            fn stv_abi_packed_encoded_size(&self) -> usize {
787                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
788                    return size;
789                }
790                let tuple = <UnderlyingRustTuple<
791                    '_,
792                > as ::core::convert::From<Self>>::from(self.clone());
793                <UnderlyingSolTuple<
794                    '_,
795                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
796            }
797        }
798        #[automatically_derived]
799        impl alloy_sol_types::SolType for NonSignerStakesAndSignature {
800            type RustType = Self;
801            type Token<'a> = <UnderlyingSolTuple<
802                'a,
803            > as alloy_sol_types::SolType>::Token<'a>;
804            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
805            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
806                '_,
807            > as alloy_sol_types::SolType>::ENCODED_SIZE;
808            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
809                '_,
810            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
811            #[inline]
812            fn valid_token(token: &Self::Token<'_>) -> bool {
813                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
814            }
815            #[inline]
816            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
817                let tuple = <UnderlyingSolTuple<
818                    '_,
819                > as alloy_sol_types::SolType>::detokenize(token);
820                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
821            }
822        }
823        #[automatically_derived]
824        impl alloy_sol_types::SolStruct for NonSignerStakesAndSignature {
825            const NAME: &'static str = "NonSignerStakesAndSignature";
826            #[inline]
827            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
828                alloy_sol_types::private::Cow::Borrowed(
829                    "NonSignerStakesAndSignature(uint32[] nonSignerQuorumBitmapIndices,BN254.G1Point[] nonSignerPubkeys,BN254.G1Point[] quorumApks,BN254.G2Point apkG2,BN254.G1Point sigma,uint32[] quorumApkIndices,uint32[] totalStakeIndices,uint32[][] nonSignerStakeIndices)",
830                )
831            }
832            #[inline]
833            fn eip712_components() -> alloy_sol_types::private::Vec<
834                alloy_sol_types::private::Cow<'static, str>,
835            > {
836                let mut components = alloy_sol_types::private::Vec::with_capacity(4);
837                components
838                    .push(
839                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
840                    );
841                components
842                    .extend(
843                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
844                    );
845                components
846                    .push(
847                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
848                    );
849                components
850                    .extend(
851                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
852                    );
853                components
854                    .push(
855                        <BN254::G2Point as alloy_sol_types::SolStruct>::eip712_root_type(),
856                    );
857                components
858                    .extend(
859                        <BN254::G2Point as alloy_sol_types::SolStruct>::eip712_components(),
860                    );
861                components
862                    .push(
863                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
864                    );
865                components
866                    .extend(
867                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
868                    );
869                components
870            }
871            #[inline]
872            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
873                [
874                    <alloy::sol_types::sol_data::Array<
875                        alloy::sol_types::sol_data::Uint<32>,
876                    > as alloy_sol_types::SolType>::eip712_data_word(
877                            &self.nonSignerQuorumBitmapIndices,
878                        )
879                        .0,
880                    <alloy::sol_types::sol_data::Array<
881                        BN254::G1Point,
882                    > as alloy_sol_types::SolType>::eip712_data_word(
883                            &self.nonSignerPubkeys,
884                        )
885                        .0,
886                    <alloy::sol_types::sol_data::Array<
887                        BN254::G1Point,
888                    > as alloy_sol_types::SolType>::eip712_data_word(&self.quorumApks)
889                        .0,
890                    <BN254::G2Point as alloy_sol_types::SolType>::eip712_data_word(
891                            &self.apkG2,
892                        )
893                        .0,
894                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
895                            &self.sigma,
896                        )
897                        .0,
898                    <alloy::sol_types::sol_data::Array<
899                        alloy::sol_types::sol_data::Uint<32>,
900                    > as alloy_sol_types::SolType>::eip712_data_word(
901                            &self.quorumApkIndices,
902                        )
903                        .0,
904                    <alloy::sol_types::sol_data::Array<
905                        alloy::sol_types::sol_data::Uint<32>,
906                    > as alloy_sol_types::SolType>::eip712_data_word(
907                            &self.totalStakeIndices,
908                        )
909                        .0,
910                    <alloy::sol_types::sol_data::Array<
911                        alloy::sol_types::sol_data::Array<
912                            alloy::sol_types::sol_data::Uint<32>,
913                        >,
914                    > as alloy_sol_types::SolType>::eip712_data_word(
915                            &self.nonSignerStakeIndices,
916                        )
917                        .0,
918                ]
919                    .concat()
920            }
921        }
922        #[automatically_derived]
923        impl alloy_sol_types::EventTopic for NonSignerStakesAndSignature {
924            #[inline]
925            fn topic_preimage_length(rust: &Self::RustType) -> usize {
926                0usize
927                    + <alloy::sol_types::sol_data::Array<
928                        alloy::sol_types::sol_data::Uint<32>,
929                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
930                        &rust.nonSignerQuorumBitmapIndices,
931                    )
932                    + <alloy::sol_types::sol_data::Array<
933                        BN254::G1Point,
934                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
935                        &rust.nonSignerPubkeys,
936                    )
937                    + <alloy::sol_types::sol_data::Array<
938                        BN254::G1Point,
939                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
940                        &rust.quorumApks,
941                    )
942                    + <BN254::G2Point as alloy_sol_types::EventTopic>::topic_preimage_length(
943                        &rust.apkG2,
944                    )
945                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
946                        &rust.sigma,
947                    )
948                    + <alloy::sol_types::sol_data::Array<
949                        alloy::sol_types::sol_data::Uint<32>,
950                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
951                        &rust.quorumApkIndices,
952                    )
953                    + <alloy::sol_types::sol_data::Array<
954                        alloy::sol_types::sol_data::Uint<32>,
955                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
956                        &rust.totalStakeIndices,
957                    )
958                    + <alloy::sol_types::sol_data::Array<
959                        alloy::sol_types::sol_data::Array<
960                            alloy::sol_types::sol_data::Uint<32>,
961                        >,
962                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
963                        &rust.nonSignerStakeIndices,
964                    )
965            }
966            #[inline]
967            fn encode_topic_preimage(
968                rust: &Self::RustType,
969                out: &mut alloy_sol_types::private::Vec<u8>,
970            ) {
971                out.reserve(
972                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
973                );
974                <alloy::sol_types::sol_data::Array<
975                    alloy::sol_types::sol_data::Uint<32>,
976                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
977                    &rust.nonSignerQuorumBitmapIndices,
978                    out,
979                );
980                <alloy::sol_types::sol_data::Array<
981                    BN254::G1Point,
982                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
983                    &rust.nonSignerPubkeys,
984                    out,
985                );
986                <alloy::sol_types::sol_data::Array<
987                    BN254::G1Point,
988                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
989                    &rust.quorumApks,
990                    out,
991                );
992                <BN254::G2Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
993                    &rust.apkG2,
994                    out,
995                );
996                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
997                    &rust.sigma,
998                    out,
999                );
1000                <alloy::sol_types::sol_data::Array<
1001                    alloy::sol_types::sol_data::Uint<32>,
1002                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1003                    &rust.quorumApkIndices,
1004                    out,
1005                );
1006                <alloy::sol_types::sol_data::Array<
1007                    alloy::sol_types::sol_data::Uint<32>,
1008                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1009                    &rust.totalStakeIndices,
1010                    out,
1011                );
1012                <alloy::sol_types::sol_data::Array<
1013                    alloy::sol_types::sol_data::Array<
1014                        alloy::sol_types::sol_data::Uint<32>,
1015                    >,
1016                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1017                    &rust.nonSignerStakeIndices,
1018                    out,
1019                );
1020            }
1021            #[inline]
1022            fn encode_topic(
1023                rust: &Self::RustType,
1024            ) -> alloy_sol_types::abi::token::WordToken {
1025                let mut out = alloy_sol_types::private::Vec::new();
1026                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
1027                    rust,
1028                    &mut out,
1029                );
1030                alloy_sol_types::abi::token::WordToken(
1031                    alloy_sol_types::private::keccak256(out),
1032                )
1033            }
1034        }
1035    };
1036    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1037    /**```solidity
1038struct QuorumStakeTotals { uint96[] signedStakeForQuorum; uint96[] totalStakeForQuorum; }
1039```*/
1040    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1041    #[derive(Clone)]
1042    pub struct QuorumStakeTotals {
1043        #[allow(missing_docs)]
1044        pub signedStakeForQuorum: alloy::sol_types::private::Vec<
1045            alloy::sol_types::private::primitives::aliases::U96,
1046        >,
1047        #[allow(missing_docs)]
1048        pub totalStakeForQuorum: alloy::sol_types::private::Vec<
1049            alloy::sol_types::private::primitives::aliases::U96,
1050        >,
1051    }
1052    #[allow(
1053        non_camel_case_types,
1054        non_snake_case,
1055        clippy::pub_underscore_fields,
1056        clippy::style
1057    )]
1058    const _: () = {
1059        use alloy::sol_types as alloy_sol_types;
1060        #[doc(hidden)]
1061        type UnderlyingSolTuple<'a> = (
1062            alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<96>>,
1063            alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<96>>,
1064        );
1065        #[doc(hidden)]
1066        type UnderlyingRustTuple<'a> = (
1067            alloy::sol_types::private::Vec<
1068                alloy::sol_types::private::primitives::aliases::U96,
1069            >,
1070            alloy::sol_types::private::Vec<
1071                alloy::sol_types::private::primitives::aliases::U96,
1072            >,
1073        );
1074        #[cfg(test)]
1075        #[allow(dead_code, unreachable_patterns)]
1076        fn _type_assertion(
1077            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1078        ) {
1079            match _t {
1080                alloy_sol_types::private::AssertTypeEq::<
1081                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1082                >(_) => {}
1083            }
1084        }
1085        #[automatically_derived]
1086        #[doc(hidden)]
1087        impl ::core::convert::From<QuorumStakeTotals> for UnderlyingRustTuple<'_> {
1088            fn from(value: QuorumStakeTotals) -> Self {
1089                (value.signedStakeForQuorum, value.totalStakeForQuorum)
1090            }
1091        }
1092        #[automatically_derived]
1093        #[doc(hidden)]
1094        impl ::core::convert::From<UnderlyingRustTuple<'_>> for QuorumStakeTotals {
1095            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1096                Self {
1097                    signedStakeForQuorum: tuple.0,
1098                    totalStakeForQuorum: tuple.1,
1099                }
1100            }
1101        }
1102        #[automatically_derived]
1103        impl alloy_sol_types::SolValue for QuorumStakeTotals {
1104            type SolType = Self;
1105        }
1106        #[automatically_derived]
1107        impl alloy_sol_types::private::SolTypeValue<Self> for QuorumStakeTotals {
1108            #[inline]
1109            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
1110                (
1111                    <alloy::sol_types::sol_data::Array<
1112                        alloy::sol_types::sol_data::Uint<96>,
1113                    > as alloy_sol_types::SolType>::tokenize(&self.signedStakeForQuorum),
1114                    <alloy::sol_types::sol_data::Array<
1115                        alloy::sol_types::sol_data::Uint<96>,
1116                    > as alloy_sol_types::SolType>::tokenize(&self.totalStakeForQuorum),
1117                )
1118            }
1119            #[inline]
1120            fn stv_abi_encoded_size(&self) -> usize {
1121                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
1122                    return size;
1123                }
1124                let tuple = <UnderlyingRustTuple<
1125                    '_,
1126                > as ::core::convert::From<Self>>::from(self.clone());
1127                <UnderlyingSolTuple<
1128                    '_,
1129                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
1130            }
1131            #[inline]
1132            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1133                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
1134            }
1135            #[inline]
1136            fn stv_abi_encode_packed_to(
1137                &self,
1138                out: &mut alloy_sol_types::private::Vec<u8>,
1139            ) {
1140                let tuple = <UnderlyingRustTuple<
1141                    '_,
1142                > as ::core::convert::From<Self>>::from(self.clone());
1143                <UnderlyingSolTuple<
1144                    '_,
1145                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
1146            }
1147            #[inline]
1148            fn stv_abi_packed_encoded_size(&self) -> usize {
1149                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
1150                    return size;
1151                }
1152                let tuple = <UnderlyingRustTuple<
1153                    '_,
1154                > as ::core::convert::From<Self>>::from(self.clone());
1155                <UnderlyingSolTuple<
1156                    '_,
1157                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
1158            }
1159        }
1160        #[automatically_derived]
1161        impl alloy_sol_types::SolType for QuorumStakeTotals {
1162            type RustType = Self;
1163            type Token<'a> = <UnderlyingSolTuple<
1164                'a,
1165            > as alloy_sol_types::SolType>::Token<'a>;
1166            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
1167            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1168                '_,
1169            > as alloy_sol_types::SolType>::ENCODED_SIZE;
1170            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1171                '_,
1172            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1173            #[inline]
1174            fn valid_token(token: &Self::Token<'_>) -> bool {
1175                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
1176            }
1177            #[inline]
1178            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1179                let tuple = <UnderlyingSolTuple<
1180                    '_,
1181                > as alloy_sol_types::SolType>::detokenize(token);
1182                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
1183            }
1184        }
1185        #[automatically_derived]
1186        impl alloy_sol_types::SolStruct for QuorumStakeTotals {
1187            const NAME: &'static str = "QuorumStakeTotals";
1188            #[inline]
1189            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
1190                alloy_sol_types::private::Cow::Borrowed(
1191                    "QuorumStakeTotals(uint96[] signedStakeForQuorum,uint96[] totalStakeForQuorum)",
1192                )
1193            }
1194            #[inline]
1195            fn eip712_components() -> alloy_sol_types::private::Vec<
1196                alloy_sol_types::private::Cow<'static, str>,
1197            > {
1198                alloy_sol_types::private::Vec::new()
1199            }
1200            #[inline]
1201            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
1202                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
1203            }
1204            #[inline]
1205            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1206                [
1207                    <alloy::sol_types::sol_data::Array<
1208                        alloy::sol_types::sol_data::Uint<96>,
1209                    > as alloy_sol_types::SolType>::eip712_data_word(
1210                            &self.signedStakeForQuorum,
1211                        )
1212                        .0,
1213                    <alloy::sol_types::sol_data::Array<
1214                        alloy::sol_types::sol_data::Uint<96>,
1215                    > as alloy_sol_types::SolType>::eip712_data_word(
1216                            &self.totalStakeForQuorum,
1217                        )
1218                        .0,
1219                ]
1220                    .concat()
1221            }
1222        }
1223        #[automatically_derived]
1224        impl alloy_sol_types::EventTopic for QuorumStakeTotals {
1225            #[inline]
1226            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1227                0usize
1228                    + <alloy::sol_types::sol_data::Array<
1229                        alloy::sol_types::sol_data::Uint<96>,
1230                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1231                        &rust.signedStakeForQuorum,
1232                    )
1233                    + <alloy::sol_types::sol_data::Array<
1234                        alloy::sol_types::sol_data::Uint<96>,
1235                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1236                        &rust.totalStakeForQuorum,
1237                    )
1238            }
1239            #[inline]
1240            fn encode_topic_preimage(
1241                rust: &Self::RustType,
1242                out: &mut alloy_sol_types::private::Vec<u8>,
1243            ) {
1244                out.reserve(
1245                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
1246                );
1247                <alloy::sol_types::sol_data::Array<
1248                    alloy::sol_types::sol_data::Uint<96>,
1249                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1250                    &rust.signedStakeForQuorum,
1251                    out,
1252                );
1253                <alloy::sol_types::sol_data::Array<
1254                    alloy::sol_types::sol_data::Uint<96>,
1255                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1256                    &rust.totalStakeForQuorum,
1257                    out,
1258                );
1259            }
1260            #[inline]
1261            fn encode_topic(
1262                rust: &Self::RustType,
1263            ) -> alloy_sol_types::abi::token::WordToken {
1264                let mut out = alloy_sol_types::private::Vec::new();
1265                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
1266                    rust,
1267                    &mut out,
1268                );
1269                alloy_sol_types::abi::token::WordToken(
1270                    alloy_sol_types::private::keccak256(out),
1271                )
1272            }
1273        }
1274    };
1275    use alloy::contract as alloy_contract;
1276    /**Creates a new wrapper around an on-chain [`IBLSSignatureCheckerTypes`](self) contract instance.
1277
1278See the [wrapper's documentation](`IBLSSignatureCheckerTypesInstance`) for more details.*/
1279    #[inline]
1280    pub const fn new<
1281        T: alloy_contract::private::Transport + ::core::clone::Clone,
1282        P: alloy_contract::private::Provider<T, N>,
1283        N: alloy_contract::private::Network,
1284    >(
1285        address: alloy_sol_types::private::Address,
1286        provider: P,
1287    ) -> IBLSSignatureCheckerTypesInstance<T, P, N> {
1288        IBLSSignatureCheckerTypesInstance::<T, P, N>::new(address, provider)
1289    }
1290    /**A [`IBLSSignatureCheckerTypes`](self) instance.
1291
1292Contains type-safe methods for interacting with an on-chain instance of the
1293[`IBLSSignatureCheckerTypes`](self) contract located at a given `address`, using a given
1294provider `P`.
1295
1296If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
1297documentation on how to provide it), the `deploy` and `deploy_builder` methods can
1298be used to deploy a new instance of the contract.
1299
1300See the [module-level documentation](self) for all the available methods.*/
1301    #[derive(Clone)]
1302    pub struct IBLSSignatureCheckerTypesInstance<
1303        T,
1304        P,
1305        N = alloy_contract::private::Ethereum,
1306    > {
1307        address: alloy_sol_types::private::Address,
1308        provider: P,
1309        _network_transport: ::core::marker::PhantomData<(N, T)>,
1310    }
1311    #[automatically_derived]
1312    impl<T, P, N> ::core::fmt::Debug for IBLSSignatureCheckerTypesInstance<T, P, N> {
1313        #[inline]
1314        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
1315            f.debug_tuple("IBLSSignatureCheckerTypesInstance")
1316                .field(&self.address)
1317                .finish()
1318        }
1319    }
1320    /// Instantiation and getters/setters.
1321    #[automatically_derived]
1322    impl<
1323        T: alloy_contract::private::Transport + ::core::clone::Clone,
1324        P: alloy_contract::private::Provider<T, N>,
1325        N: alloy_contract::private::Network,
1326    > IBLSSignatureCheckerTypesInstance<T, P, N> {
1327        /**Creates a new wrapper around an on-chain [`IBLSSignatureCheckerTypes`](self) contract instance.
1328
1329See the [wrapper's documentation](`IBLSSignatureCheckerTypesInstance`) for more details.*/
1330        #[inline]
1331        pub const fn new(
1332            address: alloy_sol_types::private::Address,
1333            provider: P,
1334        ) -> Self {
1335            Self {
1336                address,
1337                provider,
1338                _network_transport: ::core::marker::PhantomData,
1339            }
1340        }
1341        /// Returns a reference to the address.
1342        #[inline]
1343        pub const fn address(&self) -> &alloy_sol_types::private::Address {
1344            &self.address
1345        }
1346        /// Sets the address.
1347        #[inline]
1348        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
1349            self.address = address;
1350        }
1351        /// Sets the address and returns `self`.
1352        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
1353            self.set_address(address);
1354            self
1355        }
1356        /// Returns a reference to the provider.
1357        #[inline]
1358        pub const fn provider(&self) -> &P {
1359            &self.provider
1360        }
1361    }
1362    impl<T, P: ::core::clone::Clone, N> IBLSSignatureCheckerTypesInstance<T, &P, N> {
1363        /// Clones the provider and returns a new instance with the cloned provider.
1364        #[inline]
1365        pub fn with_cloned_provider(self) -> IBLSSignatureCheckerTypesInstance<T, P, N> {
1366            IBLSSignatureCheckerTypesInstance {
1367                address: self.address,
1368                provider: ::core::clone::Clone::clone(&self.provider),
1369                _network_transport: ::core::marker::PhantomData,
1370            }
1371        }
1372    }
1373    /// Function calls.
1374    #[automatically_derived]
1375    impl<
1376        T: alloy_contract::private::Transport + ::core::clone::Clone,
1377        P: alloy_contract::private::Provider<T, N>,
1378        N: alloy_contract::private::Network,
1379    > IBLSSignatureCheckerTypesInstance<T, P, N> {
1380        /// Creates a new call builder using this contract instance's provider and address.
1381        ///
1382        /// Note that the call can be any function call, not just those defined in this
1383        /// contract. Prefer using the other methods for building type-safe contract calls.
1384        pub fn call_builder<C: alloy_sol_types::SolCall>(
1385            &self,
1386            call: &C,
1387        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
1388            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
1389        }
1390    }
1391    /// Event filters.
1392    #[automatically_derived]
1393    impl<
1394        T: alloy_contract::private::Transport + ::core::clone::Clone,
1395        P: alloy_contract::private::Provider<T, N>,
1396        N: alloy_contract::private::Network,
1397    > IBLSSignatureCheckerTypesInstance<T, P, N> {
1398        /// Creates a new event filter using this contract instance's provider and address.
1399        ///
1400        /// Note that the type can be any event, not just those defined in this contract.
1401        /// Prefer using the other methods for building type-safe event filters.
1402        pub fn event_filter<E: alloy_sol_types::SolEvent>(
1403            &self,
1404        ) -> alloy_contract::Event<T, &P, E, N> {
1405            alloy_contract::Event::new_sol(&self.provider, &self.address)
1406        }
1407    }
1408}
1409///Module containing a contract's types and functions.
1410/**
1411
1412```solidity
1413library TaskManager {
1414    struct Task { uint32 taskCreatedBlock; uint32 quorumThresholdPercentage; bytes message; bytes quorumNumbers; }
1415    struct TaskResponse { uint32 referenceTaskIndex; bytes message; }
1416    struct TaskResponseMetadata { uint32 taskResponsedBlock; bytes32 hashOfNonSigners; }
1417}
1418```*/
1419#[allow(
1420    non_camel_case_types,
1421    non_snake_case,
1422    clippy::pub_underscore_fields,
1423    clippy::style,
1424    clippy::empty_structs_with_brackets
1425)]
1426pub mod TaskManager {
1427    use super::*;
1428    use alloy::sol_types as alloy_sol_types;
1429    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1430    /**```solidity
1431struct Task { uint32 taskCreatedBlock; uint32 quorumThresholdPercentage; bytes message; bytes quorumNumbers; }
1432```*/
1433    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1434    #[derive(Clone)]
1435    pub struct Task {
1436        #[allow(missing_docs)]
1437        pub taskCreatedBlock: u32,
1438        #[allow(missing_docs)]
1439        pub quorumThresholdPercentage: u32,
1440        #[allow(missing_docs)]
1441        pub message: alloy::sol_types::private::Bytes,
1442        #[allow(missing_docs)]
1443        pub quorumNumbers: alloy::sol_types::private::Bytes,
1444    }
1445    #[allow(
1446        non_camel_case_types,
1447        non_snake_case,
1448        clippy::pub_underscore_fields,
1449        clippy::style
1450    )]
1451    const _: () = {
1452        use alloy::sol_types as alloy_sol_types;
1453        #[doc(hidden)]
1454        type UnderlyingSolTuple<'a> = (
1455            alloy::sol_types::sol_data::Uint<32>,
1456            alloy::sol_types::sol_data::Uint<32>,
1457            alloy::sol_types::sol_data::Bytes,
1458            alloy::sol_types::sol_data::Bytes,
1459        );
1460        #[doc(hidden)]
1461        type UnderlyingRustTuple<'a> = (
1462            u32,
1463            u32,
1464            alloy::sol_types::private::Bytes,
1465            alloy::sol_types::private::Bytes,
1466        );
1467        #[cfg(test)]
1468        #[allow(dead_code, unreachable_patterns)]
1469        fn _type_assertion(
1470            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1471        ) {
1472            match _t {
1473                alloy_sol_types::private::AssertTypeEq::<
1474                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1475                >(_) => {}
1476            }
1477        }
1478        #[automatically_derived]
1479        #[doc(hidden)]
1480        impl ::core::convert::From<Task> for UnderlyingRustTuple<'_> {
1481            fn from(value: Task) -> Self {
1482                (
1483                    value.taskCreatedBlock,
1484                    value.quorumThresholdPercentage,
1485                    value.message,
1486                    value.quorumNumbers,
1487                )
1488            }
1489        }
1490        #[automatically_derived]
1491        #[doc(hidden)]
1492        impl ::core::convert::From<UnderlyingRustTuple<'_>> for Task {
1493            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1494                Self {
1495                    taskCreatedBlock: tuple.0,
1496                    quorumThresholdPercentage: tuple.1,
1497                    message: tuple.2,
1498                    quorumNumbers: tuple.3,
1499                }
1500            }
1501        }
1502        #[automatically_derived]
1503        impl alloy_sol_types::SolValue for Task {
1504            type SolType = Self;
1505        }
1506        #[automatically_derived]
1507        impl alloy_sol_types::private::SolTypeValue<Self> for Task {
1508            #[inline]
1509            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
1510                (
1511                    <alloy::sol_types::sol_data::Uint<
1512                        32,
1513                    > as alloy_sol_types::SolType>::tokenize(&self.taskCreatedBlock),
1514                    <alloy::sol_types::sol_data::Uint<
1515                        32,
1516                    > as alloy_sol_types::SolType>::tokenize(
1517                        &self.quorumThresholdPercentage,
1518                    ),
1519                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
1520                        &self.message,
1521                    ),
1522                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
1523                        &self.quorumNumbers,
1524                    ),
1525                )
1526            }
1527            #[inline]
1528            fn stv_abi_encoded_size(&self) -> usize {
1529                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
1530                    return size;
1531                }
1532                let tuple = <UnderlyingRustTuple<
1533                    '_,
1534                > as ::core::convert::From<Self>>::from(self.clone());
1535                <UnderlyingSolTuple<
1536                    '_,
1537                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
1538            }
1539            #[inline]
1540            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1541                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
1542            }
1543            #[inline]
1544            fn stv_abi_encode_packed_to(
1545                &self,
1546                out: &mut alloy_sol_types::private::Vec<u8>,
1547            ) {
1548                let tuple = <UnderlyingRustTuple<
1549                    '_,
1550                > as ::core::convert::From<Self>>::from(self.clone());
1551                <UnderlyingSolTuple<
1552                    '_,
1553                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
1554            }
1555            #[inline]
1556            fn stv_abi_packed_encoded_size(&self) -> usize {
1557                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
1558                    return size;
1559                }
1560                let tuple = <UnderlyingRustTuple<
1561                    '_,
1562                > as ::core::convert::From<Self>>::from(self.clone());
1563                <UnderlyingSolTuple<
1564                    '_,
1565                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
1566            }
1567        }
1568        #[automatically_derived]
1569        impl alloy_sol_types::SolType for Task {
1570            type RustType = Self;
1571            type Token<'a> = <UnderlyingSolTuple<
1572                'a,
1573            > as alloy_sol_types::SolType>::Token<'a>;
1574            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
1575            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1576                '_,
1577            > as alloy_sol_types::SolType>::ENCODED_SIZE;
1578            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1579                '_,
1580            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1581            #[inline]
1582            fn valid_token(token: &Self::Token<'_>) -> bool {
1583                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
1584            }
1585            #[inline]
1586            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1587                let tuple = <UnderlyingSolTuple<
1588                    '_,
1589                > as alloy_sol_types::SolType>::detokenize(token);
1590                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
1591            }
1592        }
1593        #[automatically_derived]
1594        impl alloy_sol_types::SolStruct for Task {
1595            const NAME: &'static str = "Task";
1596            #[inline]
1597            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
1598                alloy_sol_types::private::Cow::Borrowed(
1599                    "Task(uint32 taskCreatedBlock,uint32 quorumThresholdPercentage,bytes message,bytes quorumNumbers)",
1600                )
1601            }
1602            #[inline]
1603            fn eip712_components() -> alloy_sol_types::private::Vec<
1604                alloy_sol_types::private::Cow<'static, str>,
1605            > {
1606                alloy_sol_types::private::Vec::new()
1607            }
1608            #[inline]
1609            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
1610                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
1611            }
1612            #[inline]
1613            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1614                [
1615                    <alloy::sol_types::sol_data::Uint<
1616                        32,
1617                    > as alloy_sol_types::SolType>::eip712_data_word(
1618                            &self.taskCreatedBlock,
1619                        )
1620                        .0,
1621                    <alloy::sol_types::sol_data::Uint<
1622                        32,
1623                    > as alloy_sol_types::SolType>::eip712_data_word(
1624                            &self.quorumThresholdPercentage,
1625                        )
1626                        .0,
1627                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::eip712_data_word(
1628                            &self.message,
1629                        )
1630                        .0,
1631                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::eip712_data_word(
1632                            &self.quorumNumbers,
1633                        )
1634                        .0,
1635                ]
1636                    .concat()
1637            }
1638        }
1639        #[automatically_derived]
1640        impl alloy_sol_types::EventTopic for Task {
1641            #[inline]
1642            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1643                0usize
1644                    + <alloy::sol_types::sol_data::Uint<
1645                        32,
1646                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1647                        &rust.taskCreatedBlock,
1648                    )
1649                    + <alloy::sol_types::sol_data::Uint<
1650                        32,
1651                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1652                        &rust.quorumThresholdPercentage,
1653                    )
1654                    + <alloy::sol_types::sol_data::Bytes as alloy_sol_types::EventTopic>::topic_preimage_length(
1655                        &rust.message,
1656                    )
1657                    + <alloy::sol_types::sol_data::Bytes as alloy_sol_types::EventTopic>::topic_preimage_length(
1658                        &rust.quorumNumbers,
1659                    )
1660            }
1661            #[inline]
1662            fn encode_topic_preimage(
1663                rust: &Self::RustType,
1664                out: &mut alloy_sol_types::private::Vec<u8>,
1665            ) {
1666                out.reserve(
1667                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
1668                );
1669                <alloy::sol_types::sol_data::Uint<
1670                    32,
1671                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1672                    &rust.taskCreatedBlock,
1673                    out,
1674                );
1675                <alloy::sol_types::sol_data::Uint<
1676                    32,
1677                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1678                    &rust.quorumThresholdPercentage,
1679                    out,
1680                );
1681                <alloy::sol_types::sol_data::Bytes as alloy_sol_types::EventTopic>::encode_topic_preimage(
1682                    &rust.message,
1683                    out,
1684                );
1685                <alloy::sol_types::sol_data::Bytes as alloy_sol_types::EventTopic>::encode_topic_preimage(
1686                    &rust.quorumNumbers,
1687                    out,
1688                );
1689            }
1690            #[inline]
1691            fn encode_topic(
1692                rust: &Self::RustType,
1693            ) -> alloy_sol_types::abi::token::WordToken {
1694                let mut out = alloy_sol_types::private::Vec::new();
1695                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
1696                    rust,
1697                    &mut out,
1698                );
1699                alloy_sol_types::abi::token::WordToken(
1700                    alloy_sol_types::private::keccak256(out),
1701                )
1702            }
1703        }
1704    };
1705    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1706    /**```solidity
1707struct TaskResponse { uint32 referenceTaskIndex; bytes message; }
1708```*/
1709    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1710    #[derive(Clone)]
1711    pub struct TaskResponse {
1712        #[allow(missing_docs)]
1713        pub referenceTaskIndex: u32,
1714        #[allow(missing_docs)]
1715        pub message: alloy::sol_types::private::Bytes,
1716    }
1717    #[allow(
1718        non_camel_case_types,
1719        non_snake_case,
1720        clippy::pub_underscore_fields,
1721        clippy::style
1722    )]
1723    const _: () = {
1724        use alloy::sol_types as alloy_sol_types;
1725        #[doc(hidden)]
1726        type UnderlyingSolTuple<'a> = (
1727            alloy::sol_types::sol_data::Uint<32>,
1728            alloy::sol_types::sol_data::Bytes,
1729        );
1730        #[doc(hidden)]
1731        type UnderlyingRustTuple<'a> = (u32, alloy::sol_types::private::Bytes);
1732        #[cfg(test)]
1733        #[allow(dead_code, unreachable_patterns)]
1734        fn _type_assertion(
1735            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1736        ) {
1737            match _t {
1738                alloy_sol_types::private::AssertTypeEq::<
1739                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1740                >(_) => {}
1741            }
1742        }
1743        #[automatically_derived]
1744        #[doc(hidden)]
1745        impl ::core::convert::From<TaskResponse> for UnderlyingRustTuple<'_> {
1746            fn from(value: TaskResponse) -> Self {
1747                (value.referenceTaskIndex, value.message)
1748            }
1749        }
1750        #[automatically_derived]
1751        #[doc(hidden)]
1752        impl ::core::convert::From<UnderlyingRustTuple<'_>> for TaskResponse {
1753            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1754                Self {
1755                    referenceTaskIndex: tuple.0,
1756                    message: tuple.1,
1757                }
1758            }
1759        }
1760        #[automatically_derived]
1761        impl alloy_sol_types::SolValue for TaskResponse {
1762            type SolType = Self;
1763        }
1764        #[automatically_derived]
1765        impl alloy_sol_types::private::SolTypeValue<Self> for TaskResponse {
1766            #[inline]
1767            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
1768                (
1769                    <alloy::sol_types::sol_data::Uint<
1770                        32,
1771                    > as alloy_sol_types::SolType>::tokenize(&self.referenceTaskIndex),
1772                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
1773                        &self.message,
1774                    ),
1775                )
1776            }
1777            #[inline]
1778            fn stv_abi_encoded_size(&self) -> usize {
1779                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
1780                    return size;
1781                }
1782                let tuple = <UnderlyingRustTuple<
1783                    '_,
1784                > as ::core::convert::From<Self>>::from(self.clone());
1785                <UnderlyingSolTuple<
1786                    '_,
1787                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
1788            }
1789            #[inline]
1790            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1791                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
1792            }
1793            #[inline]
1794            fn stv_abi_encode_packed_to(
1795                &self,
1796                out: &mut alloy_sol_types::private::Vec<u8>,
1797            ) {
1798                let tuple = <UnderlyingRustTuple<
1799                    '_,
1800                > as ::core::convert::From<Self>>::from(self.clone());
1801                <UnderlyingSolTuple<
1802                    '_,
1803                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
1804            }
1805            #[inline]
1806            fn stv_abi_packed_encoded_size(&self) -> usize {
1807                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
1808                    return size;
1809                }
1810                let tuple = <UnderlyingRustTuple<
1811                    '_,
1812                > as ::core::convert::From<Self>>::from(self.clone());
1813                <UnderlyingSolTuple<
1814                    '_,
1815                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
1816            }
1817        }
1818        #[automatically_derived]
1819        impl alloy_sol_types::SolType for TaskResponse {
1820            type RustType = Self;
1821            type Token<'a> = <UnderlyingSolTuple<
1822                'a,
1823            > as alloy_sol_types::SolType>::Token<'a>;
1824            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
1825            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1826                '_,
1827            > as alloy_sol_types::SolType>::ENCODED_SIZE;
1828            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1829                '_,
1830            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1831            #[inline]
1832            fn valid_token(token: &Self::Token<'_>) -> bool {
1833                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
1834            }
1835            #[inline]
1836            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1837                let tuple = <UnderlyingSolTuple<
1838                    '_,
1839                > as alloy_sol_types::SolType>::detokenize(token);
1840                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
1841            }
1842        }
1843        #[automatically_derived]
1844        impl alloy_sol_types::SolStruct for TaskResponse {
1845            const NAME: &'static str = "TaskResponse";
1846            #[inline]
1847            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
1848                alloy_sol_types::private::Cow::Borrowed(
1849                    "TaskResponse(uint32 referenceTaskIndex,bytes message)",
1850                )
1851            }
1852            #[inline]
1853            fn eip712_components() -> alloy_sol_types::private::Vec<
1854                alloy_sol_types::private::Cow<'static, str>,
1855            > {
1856                alloy_sol_types::private::Vec::new()
1857            }
1858            #[inline]
1859            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
1860                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
1861            }
1862            #[inline]
1863            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1864                [
1865                    <alloy::sol_types::sol_data::Uint<
1866                        32,
1867                    > as alloy_sol_types::SolType>::eip712_data_word(
1868                            &self.referenceTaskIndex,
1869                        )
1870                        .0,
1871                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::eip712_data_word(
1872                            &self.message,
1873                        )
1874                        .0,
1875                ]
1876                    .concat()
1877            }
1878        }
1879        #[automatically_derived]
1880        impl alloy_sol_types::EventTopic for TaskResponse {
1881            #[inline]
1882            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1883                0usize
1884                    + <alloy::sol_types::sol_data::Uint<
1885                        32,
1886                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1887                        &rust.referenceTaskIndex,
1888                    )
1889                    + <alloy::sol_types::sol_data::Bytes as alloy_sol_types::EventTopic>::topic_preimage_length(
1890                        &rust.message,
1891                    )
1892            }
1893            #[inline]
1894            fn encode_topic_preimage(
1895                rust: &Self::RustType,
1896                out: &mut alloy_sol_types::private::Vec<u8>,
1897            ) {
1898                out.reserve(
1899                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
1900                );
1901                <alloy::sol_types::sol_data::Uint<
1902                    32,
1903                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1904                    &rust.referenceTaskIndex,
1905                    out,
1906                );
1907                <alloy::sol_types::sol_data::Bytes as alloy_sol_types::EventTopic>::encode_topic_preimage(
1908                    &rust.message,
1909                    out,
1910                );
1911            }
1912            #[inline]
1913            fn encode_topic(
1914                rust: &Self::RustType,
1915            ) -> alloy_sol_types::abi::token::WordToken {
1916                let mut out = alloy_sol_types::private::Vec::new();
1917                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
1918                    rust,
1919                    &mut out,
1920                );
1921                alloy_sol_types::abi::token::WordToken(
1922                    alloy_sol_types::private::keccak256(out),
1923                )
1924            }
1925        }
1926    };
1927    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1928    /**```solidity
1929struct TaskResponseMetadata { uint32 taskResponsedBlock; bytes32 hashOfNonSigners; }
1930```*/
1931    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1932    #[derive(Clone)]
1933    pub struct TaskResponseMetadata {
1934        #[allow(missing_docs)]
1935        pub taskResponsedBlock: u32,
1936        #[allow(missing_docs)]
1937        pub hashOfNonSigners: alloy::sol_types::private::FixedBytes<32>,
1938    }
1939    #[allow(
1940        non_camel_case_types,
1941        non_snake_case,
1942        clippy::pub_underscore_fields,
1943        clippy::style
1944    )]
1945    const _: () = {
1946        use alloy::sol_types as alloy_sol_types;
1947        #[doc(hidden)]
1948        type UnderlyingSolTuple<'a> = (
1949            alloy::sol_types::sol_data::Uint<32>,
1950            alloy::sol_types::sol_data::FixedBytes<32>,
1951        );
1952        #[doc(hidden)]
1953        type UnderlyingRustTuple<'a> = (u32, alloy::sol_types::private::FixedBytes<32>);
1954        #[cfg(test)]
1955        #[allow(dead_code, unreachable_patterns)]
1956        fn _type_assertion(
1957            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1958        ) {
1959            match _t {
1960                alloy_sol_types::private::AssertTypeEq::<
1961                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1962                >(_) => {}
1963            }
1964        }
1965        #[automatically_derived]
1966        #[doc(hidden)]
1967        impl ::core::convert::From<TaskResponseMetadata> for UnderlyingRustTuple<'_> {
1968            fn from(value: TaskResponseMetadata) -> Self {
1969                (value.taskResponsedBlock, value.hashOfNonSigners)
1970            }
1971        }
1972        #[automatically_derived]
1973        #[doc(hidden)]
1974        impl ::core::convert::From<UnderlyingRustTuple<'_>> for TaskResponseMetadata {
1975            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1976                Self {
1977                    taskResponsedBlock: tuple.0,
1978                    hashOfNonSigners: tuple.1,
1979                }
1980            }
1981        }
1982        #[automatically_derived]
1983        impl alloy_sol_types::SolValue for TaskResponseMetadata {
1984            type SolType = Self;
1985        }
1986        #[automatically_derived]
1987        impl alloy_sol_types::private::SolTypeValue<Self> for TaskResponseMetadata {
1988            #[inline]
1989            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
1990                (
1991                    <alloy::sol_types::sol_data::Uint<
1992                        32,
1993                    > as alloy_sol_types::SolType>::tokenize(&self.taskResponsedBlock),
1994                    <alloy::sol_types::sol_data::FixedBytes<
1995                        32,
1996                    > as alloy_sol_types::SolType>::tokenize(&self.hashOfNonSigners),
1997                )
1998            }
1999            #[inline]
2000            fn stv_abi_encoded_size(&self) -> usize {
2001                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2002                    return size;
2003                }
2004                let tuple = <UnderlyingRustTuple<
2005                    '_,
2006                > as ::core::convert::From<Self>>::from(self.clone());
2007                <UnderlyingSolTuple<
2008                    '_,
2009                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2010            }
2011            #[inline]
2012            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2013                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2014            }
2015            #[inline]
2016            fn stv_abi_encode_packed_to(
2017                &self,
2018                out: &mut alloy_sol_types::private::Vec<u8>,
2019            ) {
2020                let tuple = <UnderlyingRustTuple<
2021                    '_,
2022                > as ::core::convert::From<Self>>::from(self.clone());
2023                <UnderlyingSolTuple<
2024                    '_,
2025                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2026            }
2027            #[inline]
2028            fn stv_abi_packed_encoded_size(&self) -> usize {
2029                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2030                    return size;
2031                }
2032                let tuple = <UnderlyingRustTuple<
2033                    '_,
2034                > as ::core::convert::From<Self>>::from(self.clone());
2035                <UnderlyingSolTuple<
2036                    '_,
2037                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2038            }
2039        }
2040        #[automatically_derived]
2041        impl alloy_sol_types::SolType for TaskResponseMetadata {
2042            type RustType = Self;
2043            type Token<'a> = <UnderlyingSolTuple<
2044                'a,
2045            > as alloy_sol_types::SolType>::Token<'a>;
2046            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2047            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2048                '_,
2049            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2050            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2051                '_,
2052            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2053            #[inline]
2054            fn valid_token(token: &Self::Token<'_>) -> bool {
2055                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2056            }
2057            #[inline]
2058            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2059                let tuple = <UnderlyingSolTuple<
2060                    '_,
2061                > as alloy_sol_types::SolType>::detokenize(token);
2062                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2063            }
2064        }
2065        #[automatically_derived]
2066        impl alloy_sol_types::SolStruct for TaskResponseMetadata {
2067            const NAME: &'static str = "TaskResponseMetadata";
2068            #[inline]
2069            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2070                alloy_sol_types::private::Cow::Borrowed(
2071                    "TaskResponseMetadata(uint32 taskResponsedBlock,bytes32 hashOfNonSigners)",
2072                )
2073            }
2074            #[inline]
2075            fn eip712_components() -> alloy_sol_types::private::Vec<
2076                alloy_sol_types::private::Cow<'static, str>,
2077            > {
2078                alloy_sol_types::private::Vec::new()
2079            }
2080            #[inline]
2081            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2082                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2083            }
2084            #[inline]
2085            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2086                [
2087                    <alloy::sol_types::sol_data::Uint<
2088                        32,
2089                    > as alloy_sol_types::SolType>::eip712_data_word(
2090                            &self.taskResponsedBlock,
2091                        )
2092                        .0,
2093                    <alloy::sol_types::sol_data::FixedBytes<
2094                        32,
2095                    > as alloy_sol_types::SolType>::eip712_data_word(
2096                            &self.hashOfNonSigners,
2097                        )
2098                        .0,
2099                ]
2100                    .concat()
2101            }
2102        }
2103        #[automatically_derived]
2104        impl alloy_sol_types::EventTopic for TaskResponseMetadata {
2105            #[inline]
2106            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2107                0usize
2108                    + <alloy::sol_types::sol_data::Uint<
2109                        32,
2110                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2111                        &rust.taskResponsedBlock,
2112                    )
2113                    + <alloy::sol_types::sol_data::FixedBytes<
2114                        32,
2115                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2116                        &rust.hashOfNonSigners,
2117                    )
2118            }
2119            #[inline]
2120            fn encode_topic_preimage(
2121                rust: &Self::RustType,
2122                out: &mut alloy_sol_types::private::Vec<u8>,
2123            ) {
2124                out.reserve(
2125                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2126                );
2127                <alloy::sol_types::sol_data::Uint<
2128                    32,
2129                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2130                    &rust.taskResponsedBlock,
2131                    out,
2132                );
2133                <alloy::sol_types::sol_data::FixedBytes<
2134                    32,
2135                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2136                    &rust.hashOfNonSigners,
2137                    out,
2138                );
2139            }
2140            #[inline]
2141            fn encode_topic(
2142                rust: &Self::RustType,
2143            ) -> alloy_sol_types::abi::token::WordToken {
2144                let mut out = alloy_sol_types::private::Vec::new();
2145                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2146                    rust,
2147                    &mut out,
2148                );
2149                alloy_sol_types::abi::token::WordToken(
2150                    alloy_sol_types::private::keccak256(out),
2151                )
2152            }
2153        }
2154    };
2155    use alloy::contract as alloy_contract;
2156    /**Creates a new wrapper around an on-chain [`TaskManager`](self) contract instance.
2157
2158See the [wrapper's documentation](`TaskManagerInstance`) for more details.*/
2159    #[inline]
2160    pub const fn new<
2161        T: alloy_contract::private::Transport + ::core::clone::Clone,
2162        P: alloy_contract::private::Provider<T, N>,
2163        N: alloy_contract::private::Network,
2164    >(
2165        address: alloy_sol_types::private::Address,
2166        provider: P,
2167    ) -> TaskManagerInstance<T, P, N> {
2168        TaskManagerInstance::<T, P, N>::new(address, provider)
2169    }
2170    /**A [`TaskManager`](self) instance.
2171
2172Contains type-safe methods for interacting with an on-chain instance of the
2173[`TaskManager`](self) contract located at a given `address`, using a given
2174provider `P`.
2175
2176If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
2177documentation on how to provide it), the `deploy` and `deploy_builder` methods can
2178be used to deploy a new instance of the contract.
2179
2180See the [module-level documentation](self) for all the available methods.*/
2181    #[derive(Clone)]
2182    pub struct TaskManagerInstance<T, P, N = alloy_contract::private::Ethereum> {
2183        address: alloy_sol_types::private::Address,
2184        provider: P,
2185        _network_transport: ::core::marker::PhantomData<(N, T)>,
2186    }
2187    #[automatically_derived]
2188    impl<T, P, N> ::core::fmt::Debug for TaskManagerInstance<T, P, N> {
2189        #[inline]
2190        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2191            f.debug_tuple("TaskManagerInstance").field(&self.address).finish()
2192        }
2193    }
2194    /// Instantiation and getters/setters.
2195    #[automatically_derived]
2196    impl<
2197        T: alloy_contract::private::Transport + ::core::clone::Clone,
2198        P: alloy_contract::private::Provider<T, N>,
2199        N: alloy_contract::private::Network,
2200    > TaskManagerInstance<T, P, N> {
2201        /**Creates a new wrapper around an on-chain [`TaskManager`](self) contract instance.
2202
2203See the [wrapper's documentation](`TaskManagerInstance`) for more details.*/
2204        #[inline]
2205        pub const fn new(
2206            address: alloy_sol_types::private::Address,
2207            provider: P,
2208        ) -> Self {
2209            Self {
2210                address,
2211                provider,
2212                _network_transport: ::core::marker::PhantomData,
2213            }
2214        }
2215        /// Returns a reference to the address.
2216        #[inline]
2217        pub const fn address(&self) -> &alloy_sol_types::private::Address {
2218            &self.address
2219        }
2220        /// Sets the address.
2221        #[inline]
2222        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
2223            self.address = address;
2224        }
2225        /// Sets the address and returns `self`.
2226        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
2227            self.set_address(address);
2228            self
2229        }
2230        /// Returns a reference to the provider.
2231        #[inline]
2232        pub const fn provider(&self) -> &P {
2233            &self.provider
2234        }
2235    }
2236    impl<T, P: ::core::clone::Clone, N> TaskManagerInstance<T, &P, N> {
2237        /// Clones the provider and returns a new instance with the cloned provider.
2238        #[inline]
2239        pub fn with_cloned_provider(self) -> TaskManagerInstance<T, P, N> {
2240            TaskManagerInstance {
2241                address: self.address,
2242                provider: ::core::clone::Clone::clone(&self.provider),
2243                _network_transport: ::core::marker::PhantomData,
2244            }
2245        }
2246    }
2247    /// Function calls.
2248    #[automatically_derived]
2249    impl<
2250        T: alloy_contract::private::Transport + ::core::clone::Clone,
2251        P: alloy_contract::private::Provider<T, N>,
2252        N: alloy_contract::private::Network,
2253    > TaskManagerInstance<T, P, N> {
2254        /// Creates a new call builder using this contract instance's provider and address.
2255        ///
2256        /// Note that the call can be any function call, not just those defined in this
2257        /// contract. Prefer using the other methods for building type-safe contract calls.
2258        pub fn call_builder<C: alloy_sol_types::SolCall>(
2259            &self,
2260            call: &C,
2261        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
2262            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
2263        }
2264    }
2265    /// Event filters.
2266    #[automatically_derived]
2267    impl<
2268        T: alloy_contract::private::Transport + ::core::clone::Clone,
2269        P: alloy_contract::private::Provider<T, N>,
2270        N: alloy_contract::private::Network,
2271    > TaskManagerInstance<T, P, N> {
2272        /// Creates a new event filter using this contract instance's provider and address.
2273        ///
2274        /// Note that the type can be any event, not just those defined in this contract.
2275        /// Prefer using the other methods for building type-safe event filters.
2276        pub fn event_filter<E: alloy_sol_types::SolEvent>(
2277            &self,
2278        ) -> alloy_contract::Event<T, &P, E, N> {
2279            alloy_contract::Event::new_sol(&self.provider, &self.address)
2280        }
2281    }
2282}
2283/**
2284
2285Generated by the following Solidity interface...
2286```solidity
2287library BN254 {
2288    struct G1Point {
2289        uint256 X;
2290        uint256 Y;
2291    }
2292    struct G2Point {
2293        uint256[2] X;
2294        uint256[2] Y;
2295    }
2296}
2297
2298library IBLSSignatureCheckerTypes {
2299    struct NonSignerStakesAndSignature {
2300        uint32[] nonSignerQuorumBitmapIndices;
2301        BN254.G1Point[] nonSignerPubkeys;
2302        BN254.G1Point[] quorumApks;
2303        BN254.G2Point apkG2;
2304        BN254.G1Point sigma;
2305        uint32[] quorumApkIndices;
2306        uint32[] totalStakeIndices;
2307        uint32[][] nonSignerStakeIndices;
2308    }
2309    struct QuorumStakeTotals {
2310        uint96[] signedStakeForQuorum;
2311        uint96[] totalStakeForQuorum;
2312    }
2313}
2314
2315library TaskManager {
2316    struct Task {
2317        uint32 taskCreatedBlock;
2318        uint32 quorumThresholdPercentage;
2319        bytes message;
2320        bytes quorumNumbers;
2321    }
2322    struct TaskResponse {
2323        uint32 referenceTaskIndex;
2324        bytes message;
2325    }
2326    struct TaskResponseMetadata {
2327        uint32 taskResponsedBlock;
2328        bytes32 hashOfNonSigners;
2329    }
2330}
2331
2332interface SquaringTask {
2333    error AlreadySet();
2334    error BitmapValueTooLarge();
2335    error BytesArrayLengthTooLong();
2336    error BytesArrayNotOrdered();
2337    error ECAddFailed();
2338    error ECMulFailed();
2339    error ExpModFailed();
2340    error IncorrectSquareResult(uint256 number, uint256 submittedResult, uint256 expectedResult);
2341    error InputArrayLengthMismatch();
2342    error InputEmptyQuorumNumbers();
2343    error InputNonSignerLengthMismatch();
2344    error InvalidBLSPairingKey();
2345    error InvalidBLSSignature();
2346    error InvalidQuorumApkHash();
2347    error InvalidReferenceBlocknumber();
2348    error NoOngoingDeployment();
2349    error NonSignerPubkeysNotSorted();
2350    error OnlyRegistryCoordinatorOwner();
2351    error ScalarTooLarge();
2352    error StaleStakesForbidden();
2353    error ZeroAddress();
2354    error ZeroValue();
2355
2356    event AggregatorUpdated(address indexed oldAggregator, address indexed newAggregator);
2357    event GeneratorUpdated(address indexed oldGenerator, address indexed newGenerator);
2358    event Initialized(uint8 version);
2359    event NewTaskCreated(uint32 indexed taskIndex, TaskManager.Task task);
2360    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
2361    event SquaringTaskCompleted(uint256 number, uint256 result);
2362    event StaleStakesForbiddenUpdate(bool value);
2363    event TaskResponded(TaskManager.TaskResponse taskResponse, TaskManager.TaskResponseMetadata taskResponseMetadata);
2364
2365    constructor(address _registryCoordinator, uint32 _taskResponseWindowBlock);
2366
2367    function TASK_RESPONSE_WINDOW_BLOCK() external view returns (uint32);
2368    function __TaskManager_init(address _aggregator, address _generator, address initialOwner) external;
2369    function aggregator() external view returns (address);
2370    function allTaskHashes(uint32) external view returns (bytes32);
2371    function allTaskResponses(uint32) external view returns (bytes32);
2372    function blsApkRegistry() external view returns (address);
2373    function checkSignatures(bytes32 msgHash, bytes memory quorumNumbers, uint32 referenceBlockNumber, IBLSSignatureCheckerTypes.NonSignerStakesAndSignature memory params) external view returns (IBLSSignatureCheckerTypes.QuorumStakeTotals memory, bytes32);
2374    function createSquaringTask(uint256 number, uint32 quorumThresholdPercentage, bytes memory quorumNumbers) external;
2375    function delegation() external view returns (address);
2376    function generator() external view returns (address);
2377    function initialize(address _aggregator, address _generator, address initialOwner) external;
2378    function latestTaskNum() external view returns (uint32);
2379    function owner() external view returns (address);
2380    function registryCoordinator() external view returns (address);
2381    function renounceOwnership() external;
2382    function respondToSquaringTask(TaskManager.Task memory task, TaskManager.TaskResponse memory taskResponse, IBLSSignatureCheckerTypes.NonSignerStakesAndSignature memory nonSignerStakesAndSignature) external;
2383    function setAggregator(address newAggregator) external;
2384    function setGenerator(address newGenerator) external;
2385    function setStaleStakesForbidden(bool value) external;
2386    function stakeRegistry() external view returns (address);
2387    function staleStakesForbidden() external view returns (bool);
2388    function transferOwnership(address newOwner) external;
2389    function trySignatureAndApkVerification(bytes32 msgHash, BN254.G1Point memory apk, BN254.G2Point memory apkG2, BN254.G1Point memory sigma) external view returns (bool pairingSuccessful, bool siganatureIsValid);
2390}
2391```
2392
2393...which was generated by the following JSON ABI:
2394```json
2395[
2396  {
2397    "type": "constructor",
2398    "inputs": [
2399      {
2400        "name": "_registryCoordinator",
2401        "type": "address",
2402        "internalType": "contract IRegistryCoordinator"
2403      },
2404      {
2405        "name": "_taskResponseWindowBlock",
2406        "type": "uint32",
2407        "internalType": "uint32"
2408      }
2409    ],
2410    "stateMutability": "nonpayable"
2411  },
2412  {
2413    "type": "function",
2414    "name": "TASK_RESPONSE_WINDOW_BLOCK",
2415    "inputs": [],
2416    "outputs": [
2417      {
2418        "name": "",
2419        "type": "uint32",
2420        "internalType": "uint32"
2421      }
2422    ],
2423    "stateMutability": "view"
2424  },
2425  {
2426    "type": "function",
2427    "name": "__TaskManager_init",
2428    "inputs": [
2429      {
2430        "name": "_aggregator",
2431        "type": "address",
2432        "internalType": "address"
2433      },
2434      {
2435        "name": "_generator",
2436        "type": "address",
2437        "internalType": "address"
2438      },
2439      {
2440        "name": "initialOwner",
2441        "type": "address",
2442        "internalType": "address"
2443      }
2444    ],
2445    "outputs": [],
2446    "stateMutability": "nonpayable"
2447  },
2448  {
2449    "type": "function",
2450    "name": "aggregator",
2451    "inputs": [],
2452    "outputs": [
2453      {
2454        "name": "",
2455        "type": "address",
2456        "internalType": "address"
2457      }
2458    ],
2459    "stateMutability": "view"
2460  },
2461  {
2462    "type": "function",
2463    "name": "allTaskHashes",
2464    "inputs": [
2465      {
2466        "name": "",
2467        "type": "uint32",
2468        "internalType": "uint32"
2469      }
2470    ],
2471    "outputs": [
2472      {
2473        "name": "",
2474        "type": "bytes32",
2475        "internalType": "bytes32"
2476      }
2477    ],
2478    "stateMutability": "view"
2479  },
2480  {
2481    "type": "function",
2482    "name": "allTaskResponses",
2483    "inputs": [
2484      {
2485        "name": "",
2486        "type": "uint32",
2487        "internalType": "uint32"
2488      }
2489    ],
2490    "outputs": [
2491      {
2492        "name": "",
2493        "type": "bytes32",
2494        "internalType": "bytes32"
2495      }
2496    ],
2497    "stateMutability": "view"
2498  },
2499  {
2500    "type": "function",
2501    "name": "blsApkRegistry",
2502    "inputs": [],
2503    "outputs": [
2504      {
2505        "name": "",
2506        "type": "address",
2507        "internalType": "contract IBLSApkRegistry"
2508      }
2509    ],
2510    "stateMutability": "view"
2511  },
2512  {
2513    "type": "function",
2514    "name": "checkSignatures",
2515    "inputs": [
2516      {
2517        "name": "msgHash",
2518        "type": "bytes32",
2519        "internalType": "bytes32"
2520      },
2521      {
2522        "name": "quorumNumbers",
2523        "type": "bytes",
2524        "internalType": "bytes"
2525      },
2526      {
2527        "name": "referenceBlockNumber",
2528        "type": "uint32",
2529        "internalType": "uint32"
2530      },
2531      {
2532        "name": "params",
2533        "type": "tuple",
2534        "internalType": "struct IBLSSignatureCheckerTypes.NonSignerStakesAndSignature",
2535        "components": [
2536          {
2537            "name": "nonSignerQuorumBitmapIndices",
2538            "type": "uint32[]",
2539            "internalType": "uint32[]"
2540          },
2541          {
2542            "name": "nonSignerPubkeys",
2543            "type": "tuple[]",
2544            "internalType": "struct BN254.G1Point[]",
2545            "components": [
2546              {
2547                "name": "X",
2548                "type": "uint256",
2549                "internalType": "uint256"
2550              },
2551              {
2552                "name": "Y",
2553                "type": "uint256",
2554                "internalType": "uint256"
2555              }
2556            ]
2557          },
2558          {
2559            "name": "quorumApks",
2560            "type": "tuple[]",
2561            "internalType": "struct BN254.G1Point[]",
2562            "components": [
2563              {
2564                "name": "X",
2565                "type": "uint256",
2566                "internalType": "uint256"
2567              },
2568              {
2569                "name": "Y",
2570                "type": "uint256",
2571                "internalType": "uint256"
2572              }
2573            ]
2574          },
2575          {
2576            "name": "apkG2",
2577            "type": "tuple",
2578            "internalType": "struct BN254.G2Point",
2579            "components": [
2580              {
2581                "name": "X",
2582                "type": "uint256[2]",
2583                "internalType": "uint256[2]"
2584              },
2585              {
2586                "name": "Y",
2587                "type": "uint256[2]",
2588                "internalType": "uint256[2]"
2589              }
2590            ]
2591          },
2592          {
2593            "name": "sigma",
2594            "type": "tuple",
2595            "internalType": "struct BN254.G1Point",
2596            "components": [
2597              {
2598                "name": "X",
2599                "type": "uint256",
2600                "internalType": "uint256"
2601              },
2602              {
2603                "name": "Y",
2604                "type": "uint256",
2605                "internalType": "uint256"
2606              }
2607            ]
2608          },
2609          {
2610            "name": "quorumApkIndices",
2611            "type": "uint32[]",
2612            "internalType": "uint32[]"
2613          },
2614          {
2615            "name": "totalStakeIndices",
2616            "type": "uint32[]",
2617            "internalType": "uint32[]"
2618          },
2619          {
2620            "name": "nonSignerStakeIndices",
2621            "type": "uint32[][]",
2622            "internalType": "uint32[][]"
2623          }
2624        ]
2625      }
2626    ],
2627    "outputs": [
2628      {
2629        "name": "",
2630        "type": "tuple",
2631        "internalType": "struct IBLSSignatureCheckerTypes.QuorumStakeTotals",
2632        "components": [
2633          {
2634            "name": "signedStakeForQuorum",
2635            "type": "uint96[]",
2636            "internalType": "uint96[]"
2637          },
2638          {
2639            "name": "totalStakeForQuorum",
2640            "type": "uint96[]",
2641            "internalType": "uint96[]"
2642          }
2643        ]
2644      },
2645      {
2646        "name": "",
2647        "type": "bytes32",
2648        "internalType": "bytes32"
2649      }
2650    ],
2651    "stateMutability": "view"
2652  },
2653  {
2654    "type": "function",
2655    "name": "createSquaringTask",
2656    "inputs": [
2657      {
2658        "name": "number",
2659        "type": "uint256",
2660        "internalType": "uint256"
2661      },
2662      {
2663        "name": "quorumThresholdPercentage",
2664        "type": "uint32",
2665        "internalType": "uint32"
2666      },
2667      {
2668        "name": "quorumNumbers",
2669        "type": "bytes",
2670        "internalType": "bytes"
2671      }
2672    ],
2673    "outputs": [],
2674    "stateMutability": "nonpayable"
2675  },
2676  {
2677    "type": "function",
2678    "name": "delegation",
2679    "inputs": [],
2680    "outputs": [
2681      {
2682        "name": "",
2683        "type": "address",
2684        "internalType": "contract IDelegationManager"
2685      }
2686    ],
2687    "stateMutability": "view"
2688  },
2689  {
2690    "type": "function",
2691    "name": "generator",
2692    "inputs": [],
2693    "outputs": [
2694      {
2695        "name": "",
2696        "type": "address",
2697        "internalType": "address"
2698      }
2699    ],
2700    "stateMutability": "view"
2701  },
2702  {
2703    "type": "function",
2704    "name": "initialize",
2705    "inputs": [
2706      {
2707        "name": "_aggregator",
2708        "type": "address",
2709        "internalType": "address"
2710      },
2711      {
2712        "name": "_generator",
2713        "type": "address",
2714        "internalType": "address"
2715      },
2716      {
2717        "name": "initialOwner",
2718        "type": "address",
2719        "internalType": "address"
2720      }
2721    ],
2722    "outputs": [],
2723    "stateMutability": "nonpayable"
2724  },
2725  {
2726    "type": "function",
2727    "name": "latestTaskNum",
2728    "inputs": [],
2729    "outputs": [
2730      {
2731        "name": "",
2732        "type": "uint32",
2733        "internalType": "uint32"
2734      }
2735    ],
2736    "stateMutability": "view"
2737  },
2738  {
2739    "type": "function",
2740    "name": "owner",
2741    "inputs": [],
2742    "outputs": [
2743      {
2744        "name": "",
2745        "type": "address",
2746        "internalType": "address"
2747      }
2748    ],
2749    "stateMutability": "view"
2750  },
2751  {
2752    "type": "function",
2753    "name": "registryCoordinator",
2754    "inputs": [],
2755    "outputs": [
2756      {
2757        "name": "",
2758        "type": "address",
2759        "internalType": "contract ISlashingRegistryCoordinator"
2760      }
2761    ],
2762    "stateMutability": "view"
2763  },
2764  {
2765    "type": "function",
2766    "name": "renounceOwnership",
2767    "inputs": [],
2768    "outputs": [],
2769    "stateMutability": "nonpayable"
2770  },
2771  {
2772    "type": "function",
2773    "name": "respondToSquaringTask",
2774    "inputs": [
2775      {
2776        "name": "task",
2777        "type": "tuple",
2778        "internalType": "struct TaskManager.Task",
2779        "components": [
2780          {
2781            "name": "taskCreatedBlock",
2782            "type": "uint32",
2783            "internalType": "uint32"
2784          },
2785          {
2786            "name": "quorumThresholdPercentage",
2787            "type": "uint32",
2788            "internalType": "uint32"
2789          },
2790          {
2791            "name": "message",
2792            "type": "bytes",
2793            "internalType": "bytes"
2794          },
2795          {
2796            "name": "quorumNumbers",
2797            "type": "bytes",
2798            "internalType": "bytes"
2799          }
2800        ]
2801      },
2802      {
2803        "name": "taskResponse",
2804        "type": "tuple",
2805        "internalType": "struct TaskManager.TaskResponse",
2806        "components": [
2807          {
2808            "name": "referenceTaskIndex",
2809            "type": "uint32",
2810            "internalType": "uint32"
2811          },
2812          {
2813            "name": "message",
2814            "type": "bytes",
2815            "internalType": "bytes"
2816          }
2817        ]
2818      },
2819      {
2820        "name": "nonSignerStakesAndSignature",
2821        "type": "tuple",
2822        "internalType": "struct IBLSSignatureCheckerTypes.NonSignerStakesAndSignature",
2823        "components": [
2824          {
2825            "name": "nonSignerQuorumBitmapIndices",
2826            "type": "uint32[]",
2827            "internalType": "uint32[]"
2828          },
2829          {
2830            "name": "nonSignerPubkeys",
2831            "type": "tuple[]",
2832            "internalType": "struct BN254.G1Point[]",
2833            "components": [
2834              {
2835                "name": "X",
2836                "type": "uint256",
2837                "internalType": "uint256"
2838              },
2839              {
2840                "name": "Y",
2841                "type": "uint256",
2842                "internalType": "uint256"
2843              }
2844            ]
2845          },
2846          {
2847            "name": "quorumApks",
2848            "type": "tuple[]",
2849            "internalType": "struct BN254.G1Point[]",
2850            "components": [
2851              {
2852                "name": "X",
2853                "type": "uint256",
2854                "internalType": "uint256"
2855              },
2856              {
2857                "name": "Y",
2858                "type": "uint256",
2859                "internalType": "uint256"
2860              }
2861            ]
2862          },
2863          {
2864            "name": "apkG2",
2865            "type": "tuple",
2866            "internalType": "struct BN254.G2Point",
2867            "components": [
2868              {
2869                "name": "X",
2870                "type": "uint256[2]",
2871                "internalType": "uint256[2]"
2872              },
2873              {
2874                "name": "Y",
2875                "type": "uint256[2]",
2876                "internalType": "uint256[2]"
2877              }
2878            ]
2879          },
2880          {
2881            "name": "sigma",
2882            "type": "tuple",
2883            "internalType": "struct BN254.G1Point",
2884            "components": [
2885              {
2886                "name": "X",
2887                "type": "uint256",
2888                "internalType": "uint256"
2889              },
2890              {
2891                "name": "Y",
2892                "type": "uint256",
2893                "internalType": "uint256"
2894              }
2895            ]
2896          },
2897          {
2898            "name": "quorumApkIndices",
2899            "type": "uint32[]",
2900            "internalType": "uint32[]"
2901          },
2902          {
2903            "name": "totalStakeIndices",
2904            "type": "uint32[]",
2905            "internalType": "uint32[]"
2906          },
2907          {
2908            "name": "nonSignerStakeIndices",
2909            "type": "uint32[][]",
2910            "internalType": "uint32[][]"
2911          }
2912        ]
2913      }
2914    ],
2915    "outputs": [],
2916    "stateMutability": "nonpayable"
2917  },
2918  {
2919    "type": "function",
2920    "name": "setAggregator",
2921    "inputs": [
2922      {
2923        "name": "newAggregator",
2924        "type": "address",
2925        "internalType": "address"
2926      }
2927    ],
2928    "outputs": [],
2929    "stateMutability": "nonpayable"
2930  },
2931  {
2932    "type": "function",
2933    "name": "setGenerator",
2934    "inputs": [
2935      {
2936        "name": "newGenerator",
2937        "type": "address",
2938        "internalType": "address"
2939      }
2940    ],
2941    "outputs": [],
2942    "stateMutability": "nonpayable"
2943  },
2944  {
2945    "type": "function",
2946    "name": "setStaleStakesForbidden",
2947    "inputs": [
2948      {
2949        "name": "value",
2950        "type": "bool",
2951        "internalType": "bool"
2952      }
2953    ],
2954    "outputs": [],
2955    "stateMutability": "nonpayable"
2956  },
2957  {
2958    "type": "function",
2959    "name": "stakeRegistry",
2960    "inputs": [],
2961    "outputs": [
2962      {
2963        "name": "",
2964        "type": "address",
2965        "internalType": "contract IStakeRegistry"
2966      }
2967    ],
2968    "stateMutability": "view"
2969  },
2970  {
2971    "type": "function",
2972    "name": "staleStakesForbidden",
2973    "inputs": [],
2974    "outputs": [
2975      {
2976        "name": "",
2977        "type": "bool",
2978        "internalType": "bool"
2979      }
2980    ],
2981    "stateMutability": "view"
2982  },
2983  {
2984    "type": "function",
2985    "name": "transferOwnership",
2986    "inputs": [
2987      {
2988        "name": "newOwner",
2989        "type": "address",
2990        "internalType": "address"
2991      }
2992    ],
2993    "outputs": [],
2994    "stateMutability": "nonpayable"
2995  },
2996  {
2997    "type": "function",
2998    "name": "trySignatureAndApkVerification",
2999    "inputs": [
3000      {
3001        "name": "msgHash",
3002        "type": "bytes32",
3003        "internalType": "bytes32"
3004      },
3005      {
3006        "name": "apk",
3007        "type": "tuple",
3008        "internalType": "struct BN254.G1Point",
3009        "components": [
3010          {
3011            "name": "X",
3012            "type": "uint256",
3013            "internalType": "uint256"
3014          },
3015          {
3016            "name": "Y",
3017            "type": "uint256",
3018            "internalType": "uint256"
3019          }
3020        ]
3021      },
3022      {
3023        "name": "apkG2",
3024        "type": "tuple",
3025        "internalType": "struct BN254.G2Point",
3026        "components": [
3027          {
3028            "name": "X",
3029            "type": "uint256[2]",
3030            "internalType": "uint256[2]"
3031          },
3032          {
3033            "name": "Y",
3034            "type": "uint256[2]",
3035            "internalType": "uint256[2]"
3036          }
3037        ]
3038      },
3039      {
3040        "name": "sigma",
3041        "type": "tuple",
3042        "internalType": "struct BN254.G1Point",
3043        "components": [
3044          {
3045            "name": "X",
3046            "type": "uint256",
3047            "internalType": "uint256"
3048          },
3049          {
3050            "name": "Y",
3051            "type": "uint256",
3052            "internalType": "uint256"
3053          }
3054        ]
3055      }
3056    ],
3057    "outputs": [
3058      {
3059        "name": "pairingSuccessful",
3060        "type": "bool",
3061        "internalType": "bool"
3062      },
3063      {
3064        "name": "siganatureIsValid",
3065        "type": "bool",
3066        "internalType": "bool"
3067      }
3068    ],
3069    "stateMutability": "view"
3070  },
3071  {
3072    "type": "event",
3073    "name": "AggregatorUpdated",
3074    "inputs": [
3075      {
3076        "name": "oldAggregator",
3077        "type": "address",
3078        "indexed": true,
3079        "internalType": "address"
3080      },
3081      {
3082        "name": "newAggregator",
3083        "type": "address",
3084        "indexed": true,
3085        "internalType": "address"
3086      }
3087    ],
3088    "anonymous": false
3089  },
3090  {
3091    "type": "event",
3092    "name": "GeneratorUpdated",
3093    "inputs": [
3094      {
3095        "name": "oldGenerator",
3096        "type": "address",
3097        "indexed": true,
3098        "internalType": "address"
3099      },
3100      {
3101        "name": "newGenerator",
3102        "type": "address",
3103        "indexed": true,
3104        "internalType": "address"
3105      }
3106    ],
3107    "anonymous": false
3108  },
3109  {
3110    "type": "event",
3111    "name": "Initialized",
3112    "inputs": [
3113      {
3114        "name": "version",
3115        "type": "uint8",
3116        "indexed": false,
3117        "internalType": "uint8"
3118      }
3119    ],
3120    "anonymous": false
3121  },
3122  {
3123    "type": "event",
3124    "name": "NewTaskCreated",
3125    "inputs": [
3126      {
3127        "name": "taskIndex",
3128        "type": "uint32",
3129        "indexed": true,
3130        "internalType": "uint32"
3131      },
3132      {
3133        "name": "task",
3134        "type": "tuple",
3135        "indexed": false,
3136        "internalType": "struct TaskManager.Task",
3137        "components": [
3138          {
3139            "name": "taskCreatedBlock",
3140            "type": "uint32",
3141            "internalType": "uint32"
3142          },
3143          {
3144            "name": "quorumThresholdPercentage",
3145            "type": "uint32",
3146            "internalType": "uint32"
3147          },
3148          {
3149            "name": "message",
3150            "type": "bytes",
3151            "internalType": "bytes"
3152          },
3153          {
3154            "name": "quorumNumbers",
3155            "type": "bytes",
3156            "internalType": "bytes"
3157          }
3158        ]
3159      }
3160    ],
3161    "anonymous": false
3162  },
3163  {
3164    "type": "event",
3165    "name": "OwnershipTransferred",
3166    "inputs": [
3167      {
3168        "name": "previousOwner",
3169        "type": "address",
3170        "indexed": true,
3171        "internalType": "address"
3172      },
3173      {
3174        "name": "newOwner",
3175        "type": "address",
3176        "indexed": true,
3177        "internalType": "address"
3178      }
3179    ],
3180    "anonymous": false
3181  },
3182  {
3183    "type": "event",
3184    "name": "SquaringTaskCompleted",
3185    "inputs": [
3186      {
3187        "name": "number",
3188        "type": "uint256",
3189        "indexed": false,
3190        "internalType": "uint256"
3191      },
3192      {
3193        "name": "result",
3194        "type": "uint256",
3195        "indexed": false,
3196        "internalType": "uint256"
3197      }
3198    ],
3199    "anonymous": false
3200  },
3201  {
3202    "type": "event",
3203    "name": "StaleStakesForbiddenUpdate",
3204    "inputs": [
3205      {
3206        "name": "value",
3207        "type": "bool",
3208        "indexed": false,
3209        "internalType": "bool"
3210      }
3211    ],
3212    "anonymous": false
3213  },
3214  {
3215    "type": "event",
3216    "name": "TaskResponded",
3217    "inputs": [
3218      {
3219        "name": "taskResponse",
3220        "type": "tuple",
3221        "indexed": false,
3222        "internalType": "struct TaskManager.TaskResponse",
3223        "components": [
3224          {
3225            "name": "referenceTaskIndex",
3226            "type": "uint32",
3227            "internalType": "uint32"
3228          },
3229          {
3230            "name": "message",
3231            "type": "bytes",
3232            "internalType": "bytes"
3233          }
3234        ]
3235      },
3236      {
3237        "name": "taskResponseMetadata",
3238        "type": "tuple",
3239        "indexed": false,
3240        "internalType": "struct TaskManager.TaskResponseMetadata",
3241        "components": [
3242          {
3243            "name": "taskResponsedBlock",
3244            "type": "uint32",
3245            "internalType": "uint32"
3246          },
3247          {
3248            "name": "hashOfNonSigners",
3249            "type": "bytes32",
3250            "internalType": "bytes32"
3251          }
3252        ]
3253      }
3254    ],
3255    "anonymous": false
3256  },
3257  {
3258    "type": "error",
3259    "name": "AlreadySet",
3260    "inputs": []
3261  },
3262  {
3263    "type": "error",
3264    "name": "BitmapValueTooLarge",
3265    "inputs": []
3266  },
3267  {
3268    "type": "error",
3269    "name": "BytesArrayLengthTooLong",
3270    "inputs": []
3271  },
3272  {
3273    "type": "error",
3274    "name": "BytesArrayNotOrdered",
3275    "inputs": []
3276  },
3277  {
3278    "type": "error",
3279    "name": "ECAddFailed",
3280    "inputs": []
3281  },
3282  {
3283    "type": "error",
3284    "name": "ECMulFailed",
3285    "inputs": []
3286  },
3287  {
3288    "type": "error",
3289    "name": "ExpModFailed",
3290    "inputs": []
3291  },
3292  {
3293    "type": "error",
3294    "name": "IncorrectSquareResult",
3295    "inputs": [
3296      {
3297        "name": "number",
3298        "type": "uint256",
3299        "internalType": "uint256"
3300      },
3301      {
3302        "name": "submittedResult",
3303        "type": "uint256",
3304        "internalType": "uint256"
3305      },
3306      {
3307        "name": "expectedResult",
3308        "type": "uint256",
3309        "internalType": "uint256"
3310      }
3311    ]
3312  },
3313  {
3314    "type": "error",
3315    "name": "InputArrayLengthMismatch",
3316    "inputs": []
3317  },
3318  {
3319    "type": "error",
3320    "name": "InputEmptyQuorumNumbers",
3321    "inputs": []
3322  },
3323  {
3324    "type": "error",
3325    "name": "InputNonSignerLengthMismatch",
3326    "inputs": []
3327  },
3328  {
3329    "type": "error",
3330    "name": "InvalidBLSPairingKey",
3331    "inputs": []
3332  },
3333  {
3334    "type": "error",
3335    "name": "InvalidBLSSignature",
3336    "inputs": []
3337  },
3338  {
3339    "type": "error",
3340    "name": "InvalidQuorumApkHash",
3341    "inputs": []
3342  },
3343  {
3344    "type": "error",
3345    "name": "InvalidReferenceBlocknumber",
3346    "inputs": []
3347  },
3348  {
3349    "type": "error",
3350    "name": "NoOngoingDeployment",
3351    "inputs": []
3352  },
3353  {
3354    "type": "error",
3355    "name": "NonSignerPubkeysNotSorted",
3356    "inputs": []
3357  },
3358  {
3359    "type": "error",
3360    "name": "OnlyRegistryCoordinatorOwner",
3361    "inputs": []
3362  },
3363  {
3364    "type": "error",
3365    "name": "ScalarTooLarge",
3366    "inputs": []
3367  },
3368  {
3369    "type": "error",
3370    "name": "StaleStakesForbidden",
3371    "inputs": []
3372  },
3373  {
3374    "type": "error",
3375    "name": "ZeroAddress",
3376    "inputs": []
3377  },
3378  {
3379    "type": "error",
3380    "name": "ZeroValue",
3381    "inputs": []
3382  }
3383]
3384```*/
3385#[allow(
3386    non_camel_case_types,
3387    non_snake_case,
3388    clippy::pub_underscore_fields,
3389    clippy::style,
3390    clippy::empty_structs_with_brackets
3391)]
3392pub mod SquaringTask {
3393    use super::*;
3394    use alloy::sol_types as alloy_sol_types;
3395    /// The creation / init bytecode of the contract.
3396    ///
3397    /// ```text
3398    ///0x610120604052348015610010575f5ffd5b506040516135ea3803806135ea83398101604081905261002f916101d9565b81818180806001600160a01b03166080816001600160a01b031681525050806001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa158015610089573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100ad9190610219565b6001600160a01b031660a0816001600160a01b031681525050806001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015610102573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101269190610219565b6001600160a01b031660c0816001600160a01b03168152505060a0516001600160a01b031663df5cf7236040518163ffffffff1660e01b8152600401602060405180830381865afa15801561017d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101a19190610219565b6001600160a01b031660e052505063ffffffff16610100525061023b915050565b6001600160a01b03811681146101d6575f5ffd5b50565b5f5f604083850312156101ea575f5ffd5b82516101f5816101c2565b602084015190925063ffffffff8116811461020e575f5ffd5b809150509250929050565b5f60208284031215610229575f5ffd5b8151610234816101c2565b9392505050565b60805160a05160c05160e051610100516133336102b75f395f81816101800152611fa601525f81816103950152610bef01525f818161026e0152610d5a01525f818161029501528181610ebb015261107001525f81816102bc015281816105610152818161091101528181610a610152610c8f01526133335ff3fe608060405234801561000f575f5ffd5b5060043610610148575f3560e01c80636efb4636116100bf578063b98d090811610079578063b98d09081461034e578063bbcee46e1461036a578063c0c53b8b1461037d578063df5cf72314610390578063f2fde38b146103b7578063f9120af6146103ca575f5ffd5b80636efb4636146102de578063715018a6146102ff5780637afa1eed146103075780637e8ef1be1461031a5780638b00ce7c1461032d5780638da5cb5b1461033d575f5ffd5b8063416c7e5e11610110578063416c7e5e1461022e5780634a7c7e4b146102435780635919d07e146102565780635df459461461026957806368304835146102905780636d14a987146102b7575f5ffd5b8063171f1d5b1461014c5780631ad431891461017b578063245a7bfc146101b75780632cb223d5146101e25780632d89f6fc1461020f575b5f5ffd5b61015f61015a36600461275c565b6103dd565b6040805192151583529015156020830152015b60405180910390f35b6101a27f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610172565b609a546101ca906001600160a01b031681565b6040516001600160a01b039091168152602001610172565b6102016101f03660046127bb565b60996020525f908152604090205481565b604051908152602001610172565b61020161021d3660046127bb565b60986020525f908152604090205481565b61024161023c3660046127d6565b61055f565b005b610241610251366004612809565b61061c565b610241610264366004612824565b61062d565b6101ca7f000000000000000000000000000000000000000000000000000000000000000081565b6101ca7f000000000000000000000000000000000000000000000000000000000000000081565b6101ca7f000000000000000000000000000000000000000000000000000000000000000081565b6102f16102ec366004612b66565b610685565b604051610172929190612c2c565b61024161127a565b609b546101ca906001600160a01b031681565b610241610328366004612c74565b61128d565b6097546101a29063ffffffff1681565b6065546001600160a01b03166101ca565b5f5461035a9060ff1681565b6040519015158152602001610172565b610241610378366004612d07565b61137b565b61024161038b366004612824565b6113dd565b6101ca7f000000000000000000000000000000000000000000000000000000000000000081565b6102416103c5366004612809565b6114f4565b6102416103d8366004612809565b61156a565b5f5f5f7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000187875f01518860200151885f01515f6002811061042057610420612d5e565b60200201518951600160200201518a602001515f6002811061044457610444612d5e565b60200201518b6020015160016002811061046057610460612d5e565b602090810291909101518c518d8301516040516104bd9a99989796959401988952602089019790975260408801959095526060870193909352608086019190915260a085015260c084015260e08301526101008201526101200190565b604051602081830303815290604052805190602001205f1c6104df9190612d72565b90506105516104f86104f1888461157b565b86906115eb565b61050061165f565b610547610538856105326040805180820182525f80825260209182015281518083019092526001825260029082015290565b9061157b565b6105418c61171f565b906115eb565b886201d4c06117a9565b909890975095505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105bb573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105df9190612d91565b6001600160a01b0316336001600160a01b03161461061057604051637070f3b160e11b815260040160405180910390fd5b610619816119bd565b50565b610624611a03565b61061981611a5d565b603254610100900460ff1661065d5760405162461bcd60e51b815260040161065490612dac565b60405180910390fd5b610665611b04565b61066e816114f4565b61067783611b33565b61068082611a5d565b505050565b60408051808201909152606080825260208201525f8481036106b95760405162f8202d60e51b815260040160405180910390fd5b604083015151851480156106d1575060a08301515185145b80156106e1575060c08301515185145b80156106f1575060e08301515185145b61070e576040516343714afd60e01b815260040160405180910390fd5b8251516020840151511461073557604051635f832f4160e01b815260040160405180910390fd5b4363ffffffff168463ffffffff161061076157604051634b874f4560e01b815260040160405180910390fd5b6040805180820182525f808252602080830191909152825180840190935260608084529083015290866001600160401b038111156107a1576107a1612613565b6040519080825280602002602001820160405280156107ca578160200160208202803683370190505b506020820152866001600160401b038111156107e8576107e8612613565b604051908082528060200260200182016040528015610811578160200160208202803683370190505b50815260408051808201909152606080825260208201528560200151516001600160401b0381111561084557610845612613565b60405190808252806020026020018201604052801561086e578160200160208202803683370190505b5081526020860151516001600160401b0381111561088e5761088e612613565b6040519080825280602002602001820160405280156108b7578160200160208202803683370190505b5081602001819052505f6109858a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505060408051639aa1653d60e01b815290516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169350639aa1653d925060048083019260209291908290030181865afa15801561095c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109809190612df7565b611be4565b90505f5b876020015151811015610bcb576109cd886020015182815181106109af576109af612d5e565b602002602001015180515f9081526020918201519091526040902090565b836020015182815181106109e3576109e3612d5e565b60209081029190910101528015610a5f576020830151610a04600183612e2b565b81518110610a1457610a14612d5e565b60200260200101515f1c83602001518281518110610a3457610a34612d5e565b60200260200101515f1c11610a5f57604051600162239afb60e21b0319815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166304ec635184602001518381518110610aa457610aa4612d5e565b60200260200101518b8b5f01518581518110610ac257610ac2612d5e565b60200260200101516040518463ffffffff1660e01b8152600401610aff9392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015610b1a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b3e9190612e3e565b6001600160c01b0316835f01518281518110610b5c57610b5c612d5e565b602002602001018181525050610bc16104f1610b9584865f01518581518110610b8757610b87612d5e565b602002602001015116611c21565b8a602001518481518110610bab57610bab612d5e565b6020026020010151611c4b90919063ffffffff16565b9450600101610989565b5050610bd683611d0d565b5f805491945060ff9091169081610bed575f610c6d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c448feb86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c49573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c6d9190612e64565b63ffffffff1690505f5b8a8110156111dd578215610d58578963ffffffff16827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663249a0c428f8f86818110610cce57610cce612d5e565b60405160e085901b6001600160e01b031916815292013560f81c600483015250602401602060405180830381865afa158015610d0c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d309190612e7f565b610d3a9190612e96565b11610d585760405163affc5edb60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166368bccaac8d8d84818110610d9957610d99612d5e565b9050013560f81c60f81b60f81c8c8c60a001518581518110610dbd57610dbd612d5e565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa158015610e17573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e3b9190612ea9565b6001600160401b031916610e5e8a6040015183815181106109af576109af612d5e565b67ffffffffffffffff191614610e875760405163e1310aed60e01b815260040160405180910390fd5b610eb789604001518281518110610ea057610ea0612d5e565b6020026020010151876115eb90919063ffffffff16565b95507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c8294c568d8d84818110610efa57610efa612d5e565b9050013560f81c60f81b60f81c8c8c60c001518581518110610f1e57610f1e612d5e565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa158015610f78573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f9c9190612ed1565b85602001518281518110610fb257610fb2612d5e565b6001600160601b03909216602092830291909101820152850151805182908110610fde57610fde612d5e565b6020026020010151855f01518281518110610ffb57610ffb612d5e565b6001600160601b03909216602092830291909101909101525f805b8a60200151518110156111d357611069865f0151828151811061103b5761103b612d5e565b60200260200101518f8f8681811061105557611055612d5e565b600192013560f81c9290921c811614919050565b156111cb577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f2be94ae8f8f868181106110af576110af612d5e565b9050013560f81c60f81b60f81c8e896020015185815181106110d3576110d3612d5e565b60200260200101518f60e0015188815181106110f1576110f1612d5e565b6020026020010151878151811061110a5761110a612d5e565b60209081029190910101516040516001600160e01b031960e087901b16815260ff909416600485015263ffffffff92831660248501526044840191909152166064820152608401602060405180830381865afa15801561116c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111909190612ed1565b87518051859081106111a4576111a4612d5e565b602002602001018181516111b89190612ef7565b6001600160601b03169052506001909101905b600101611016565b5050600101610c77565b5050505f5f6111f68c868a606001518b608001516103dd565b9150915081611218576040516367988d3360e01b815260040160405180910390fd5b806112365760405163ab1b236b60e01b815260040160405180910390fd5b50505f878260200151604051602001611250929190612f16565b60408051808303601f190181529190528051602090910120929b929a509198505050505050505050565b611282611a03565b61128b5f611d9e565b565b609a546001600160a01b031633146112b75760405162461bcd60e51b815260040161065490612f5c565b6112c2838383611def565b5f6112d06040850185612f93565b8101906112dd9190612fd5565b90505f6112ed6020850185612f93565b8101906112fa9190612fd5565b90505f6113078380612fec565b905080821461133a57604051630cf92dd560e01b8152600481018490526024810183905260448101829052606401610654565b60408051848152602081018490527fa7a707dd7f4ca00fe1afcd34df7ebb6c47f23880c34d254cc312e5c41e3974c5910160405180910390a1505050505050565b609b546001600160a01b031633146113a55760405162461bcd60e51b815260040161065490613003565b5f846040516020016113b991815260200190565b60405160208183030381529060405290506113d681858585612218565b5050505050565b603254610100900460ff16158080156113fd5750603254600160ff909116105b806114175750303b158015611417575060325460ff166001145b61147a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610654565b6032805460ff19166001179055801561149d576032805461ff0019166101001790555b6114a884848461062d565b80156114ee576032805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b6114fc611a03565b6001600160a01b0381166115615760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610654565b61061981611d9e565b611572611a03565b61061981611b33565b604080518082019091525f8082526020820152611596612539565b835181526020808501519082015260408082018490525f908360608460076107d05a03fa905080806115c457fe5b50806115e357604051632319df1960e11b815260040160405180910390fd5b505092915050565b604080518082019091525f8082526020820152611606612557565b835181526020808501518183015283516040808401919091529084015160608301525f908360808460066107d05a03fa9050808061164057fe5b50806115e35760405163d4b68fd760e01b815260040160405180910390fd5b611667612575565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b604080518082019091525f80825260208201525f808061174c5f5160206132de5f395f51905f5286612d72565b90505b61175881612359565b90935091505f5160206132de5f395f51905f528283098303611790576040805180820190915290815260208101919091529392505050565b5f5160206132de5f395f51905f5260018208905061174f565b6040805180820182528681526020808201869052825180840190935286835282018490525f918291906117da61259a565b5f5b6002811015611991575f6117f1826006612fec565b905084826002811061180557611805612d5e565b60200201515183611816835f612e96565b600c811061182657611826612d5e565b602002015284826002811061183d5761183d612d5e565b602002015160200151838260016118549190612e96565b600c811061186457611864612d5e565b602002015283826002811061187b5761187b612d5e565b602002015151518361188e836002612e96565b600c811061189e5761189e612d5e565b60200201528382600281106118b5576118b5612d5e565b60200201515160016020020151836118ce836003612e96565b600c81106118de576118de612d5e565b60200201528382600281106118f5576118f5612d5e565b6020020151602001515f6002811061190f5761190f612d5e565b602002015183611920836004612e96565b600c811061193057611930612d5e565b602002015283826002811061194757611947612d5e565b60200201516020015160016002811061196257611962612d5e565b602002015183611973836005612e96565b600c811061198357611983612d5e565b6020020152506001016117dc565b5061199a6125b9565b5f6020826101808560088cfa9151919c9115159b50909950505050505050505050565b5f805460ff19168215159081179091556040519081527f40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc9060200160405180910390a150565b6065546001600160a01b0316331461128b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610654565b6001600160a01b038116611ab35760405162461bcd60e51b815260206004820181905260248201527f47656e657261746f722063616e6e6f74206265207a65726f20616464726573736044820152606401610654565b609b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f0ddfab8a635d71f15d72e2d2dff55d32119d13270d2ea4c3dc0043b66c2c476b905f90a35050565b603254610100900460ff16611b2b5760405162461bcd60e51b815260040161065490612dac565b61128b6123d5565b6001600160a01b038116611b935760405162461bcd60e51b815260206004820152602160248201527f41676772656761746f722063616e6e6f74206265207a65726f206164647265736044820152607360f81b6064820152608401610654565b609a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f89baabef7dfd0683c0ac16fd2a8431c51b49fbe654c3f7b5ef19763e2ccd88f2905f90a35050565b5f5f611bef84612405565b9050808360ff166001901b11611c185760405163ca95733360e01b815260040160405180910390fd5b90505b92915050565b5f805b8215611c1b57611c35600184612e2b565b9092169180611c4381613044565b915050611c24565b604080518082019091525f80825260208201526102008261ffff1610611c87576040516001623b158360e11b0319815260040160405180910390fd5b8161ffff16600103611c9a575081611c1b565b604080518082019091525f8082526020820181905284906001905b8161ffff168661ffff1610611d0257600161ffff871660ff83161c81169003611ce557611ce284846115eb565b93505b611cef83846115eb565b92506201fffe600192831b169101611cb5565b509195945050505050565b604080518082019091525f80825260208201528151158015611d3157506020820151155b15611d4e575050604080518082019091525f808252602082015290565b6040518060400160405280835f015181526020015f5160206132de5f395f51905f528460200151611d7f9190612d72565b611d96905f5160206132de5f395f51905f52612e2b565b905292915050565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b609a546001600160a01b03163314611e195760405162461bcd60e51b815260040161065490612f5c565b5f611e2760208501856127bb565b9050365f611e386060870187612f93565b90925090505f611e4e60408801602089016127bb565b905060985f611e6060208901896127bb565b63ffffffff1663ffffffff1681526020019081526020015f205487604051602001611e8b91906130cd565b6040516020818303038152906040528051906020012014611f145760405162461bcd60e51b815260206004820152603d60248201527f537570706c696564207461736b20646f6573206e6f74206d617463682074686560448201527f206f6e65207265636f7264656420696e2074686520636f6e74726163740000006064820152608401610654565b5f609981611f2560208a018a6127bb565b63ffffffff1663ffffffff1681526020019081526020015f205414611fa15760405162461bcd60e51b815260206004820152602c60248201527f41676772656761746f722068617320616c726561647920726573706f6e64656460448201526b20746f20746865207461736b60a01b6064820152608401610654565b611fcb7f000000000000000000000000000000000000000000000000000000000000000085613158565b63ffffffff164363ffffffff1611156120305760405162461bcd60e51b815260206004820152602160248201527f41676772656761746f722068617320726573706f6e64656420746f6f206c61746044820152606560f81b6064820152608401610654565b5f8660405160200161204291906131b3565b6040516020818303038152906040528051906020012090505f5f6120698387878a8c610685565b90925090505f5b8581101561215d578460ff168360200151828151811061209257612092612d5e565b60200260200101516120a491906131cc565b6001600160601b03166064845f015183815181106120c4576120c4612d5e565b60200260200101516001600160601b03166120df9190612fec565b1015612155576040805162461bcd60e51b81526020600482015260248101919091527f5369676e61746f7269657320646f206e6f74206f776e206174206c656173742060448201527f7468726573686f6c642070657263656e74616765206f6620612071756f72756d6064820152608401610654565b600101612070565b5060408051808201825263ffffffff4316815260208082018490529151909161218a918c918491016131f5565b6040516020818303038152906040528051906020012060995f8c5f0160208101906121b591906127bb565b63ffffffff1663ffffffff1681526020019081526020015f20819055507f9b96c981c7c70a9f1702abb044782746c11d090f58ea34b12daf2cc53cf8ab5f8a826040516122039291906131f5565b60405180910390a15050505050505050505050565b609b546001600160a01b031633146122425760405162461bcd60e51b815260040161065490613003565b6040805160808101825260608082015280820186905263ffffffff438116825285166020808301919091528251601f850182900482028101820190935283835290919084908490819084018382808284375f9201919091525050505060608201526040516122b490829060200161326a565b60408051601f1981840301815282825280516020918201206097805463ffffffff9081165f908152609890945293909220555416907fba37832bdd21742b86a633043b923a9aa978f1cfb2b274c6661eb573cf092bf09061231690849061326a565b60405180910390a26097805463ffffffff16905f612333836132c2565b91906101000a81548163ffffffff021916908363ffffffff160217905550505050505050565b5f80805f5160206132de5f395f51905f5260035f5160206132de5f395f51905f52865f5160206132de5f395f51905f52888909090890505f6123c9827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f525f5160206132de5f395f51905f526124c0565b91959194509092505050565b603254610100900460ff166123fc5760405162461bcd60e51b815260040161065490612dac565b61128b33611d9e565b5f6101008251111561242a57604051637da54e4760e11b815260040160405180910390fd5b81515f0361243957505f919050565b5f5f835f8151811061244d5761244d612d5e565b0160200151600160f89190911c81901b92505b84518110156124b75784818151811061247b5761247b612d5e565b0160200151600160f89190911c1b91508282116124ab57604051631019106960e31b815260040160405180910390fd5b91811791600101612460565b50909392505050565b5f5f6124ca6125b9565b6124d26125d7565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa9250828061250f57fe5b508261252e5760405163d51edae360e01b815260040160405180910390fd5b505195945050505050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806125886125f5565b81526020016125956125f5565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b038111828210171561264957612649612613565b60405290565b60405161010081016001600160401b038111828210171561264957612649612613565b604051601f8201601f191681016001600160401b038111828210171561269a5761269a612613565b604052919050565b5f604082840312156126b2575f5ffd5b6126ba612627565b823581526020928301359281019290925250919050565b5f82601f8301126126e0575f5ffd5b6126e8612627565b8060408401858111156126f9575f5ffd5b845b818110156127135780358452602093840193016126fb565b509095945050505050565b5f6080828403121561272e575f5ffd5b612736612627565b905061274283836126d1565b815261275183604084016126d1565b602082015292915050565b5f5f5f5f6101208587031215612770575f5ffd5b8435935061278186602087016126a2565b9250612790866060870161271e565b915061279f8660e087016126a2565b905092959194509250565b63ffffffff81168114610619575f5ffd5b5f602082840312156127cb575f5ffd5b8135611c18816127aa565b5f602082840312156127e6575f5ffd5b81358015158114611c18575f5ffd5b6001600160a01b0381168114610619575f5ffd5b5f60208284031215612819575f5ffd5b8135611c18816127f5565b5f5f5f60608486031215612836575f5ffd5b8335612841816127f5565b92506020840135612851816127f5565b91506040840135612861816127f5565b809150509250925092565b5f5f83601f84011261287c575f5ffd5b5081356001600160401b03811115612892575f5ffd5b6020830191508360208285010111156128a9575f5ffd5b9250929050565b5f6001600160401b038211156128c8576128c8612613565b5060051b60200190565b5f82601f8301126128e1575f5ffd5b81356128f46128ef826128b0565b612672565b8082825260208201915060208360051b860101925085831115612915575f5ffd5b602085015b8381101561293b57803561292d816127aa565b83526020928301920161291a565b5095945050505050565b5f82601f830112612954575f5ffd5b81356129626128ef826128b0565b8082825260208201915060208360061b860101925085831115612983575f5ffd5b602085015b8381101561293b5761299a87826126a2565b8352602090920191604001612988565b5f82601f8301126129b9575f5ffd5b81356129c76128ef826128b0565b8082825260208201915060208360051b8601019250858311156129e8575f5ffd5b602085015b8381101561293b5780356001600160401b03811115612a0a575f5ffd5b612a19886020838a01016128d2565b845250602092830192016129ed565b5f6101808284031215612a39575f5ffd5b612a4161264f565b905081356001600160401b03811115612a58575f5ffd5b612a64848285016128d2565b82525060208201356001600160401b03811115612a7f575f5ffd5b612a8b84828501612945565b60208301525060408201356001600160401b03811115612aa9575f5ffd5b612ab584828501612945565b604083015250612ac8836060840161271e565b6060820152612ada8360e084016126a2565b60808201526101208201356001600160401b03811115612af8575f5ffd5b612b04848285016128d2565b60a0830152506101408201356001600160401b03811115612b23575f5ffd5b612b2f848285016128d2565b60c0830152506101608201356001600160401b03811115612b4e575f5ffd5b612b5a848285016129aa565b60e08301525092915050565b5f5f5f5f5f60808688031215612b7a575f5ffd5b8535945060208601356001600160401b03811115612b96575f5ffd5b612ba28882890161286c565b9095509350506040860135612bb6816127aa565b915060608601356001600160401b03811115612bd0575f5ffd5b612bdc88828901612a28565b9150509295509295909350565b5f8151808452602084019350602083015f5b82811015612c225781516001600160601b0316865260209586019590910190600101612bfb565b5093949350505050565b604081525f8351604080840152612c466080840182612be9565b90506020850151603f19848303016060850152612c638282612be9565b925050508260208301529392505050565b5f5f5f60608486031215612c86575f5ffd5b83356001600160401b03811115612c9b575f5ffd5b840160808187031215612cac575f5ffd5b925060208401356001600160401b03811115612cc6575f5ffd5b840160408187031215612cd7575f5ffd5b915060408401356001600160401b03811115612cf1575f5ffd5b612cfd86828701612a28565b9150509250925092565b5f5f5f5f60608587031215612d1a575f5ffd5b843593506020850135612d2c816127aa565b925060408501356001600160401b03811115612d46575f5ffd5b612d528782880161286c565b95989497509550505050565b634e487b7160e01b5f52603260045260245ffd5b5f82612d8c57634e487b7160e01b5f52601260045260245ffd5b500690565b5f60208284031215612da1575f5ffd5b8151611c18816127f5565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f60208284031215612e07575f5ffd5b815160ff81168114611c18575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b81810381811115611c1b57611c1b612e17565b5f60208284031215612e4e575f5ffd5b81516001600160c01b0381168114611c18575f5ffd5b5f60208284031215612e74575f5ffd5b8151611c18816127aa565b5f60208284031215612e8f575f5ffd5b5051919050565b80820180821115611c1b57611c1b612e17565b5f60208284031215612eb9575f5ffd5b815167ffffffffffffffff1981168114611c18575f5ffd5b5f60208284031215612ee1575f5ffd5b81516001600160601b0381168114611c18575f5ffd5b6001600160601b038281168282160390811115611c1b57611c1b612e17565b63ffffffff60e01b8360e01b1681525f600482018351602085015f5b82811015612f50578151845260209384019390910190600101612f32565b50919695505050505050565b6020808252601d908201527f41676772656761746f72206d757374206265207468652063616c6c6572000000604082015260600190565b5f5f8335601e19843603018112612fa8575f5ffd5b8301803591506001600160401b03821115612fc1575f5ffd5b6020019150368190038213156128a9575f5ffd5b5f60208284031215612fe5575f5ffd5b5035919050565b8082028115828204841417611c1b57611c1b612e17565b60208082526021908201527f5461736b2067656e657261746f72206d757374206265207468652063616c6c656040820152603960f91b606082015260800190565b5f61ffff821661ffff810361305b5761305b612e17565b60010192915050565b5f5f8335601e19843603018112613079575f5ffd5b83016020810192503590506001600160401b03811115613097575f5ffd5b8036038213156128a9575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b602081525f82356130dd816127aa565b63ffffffff811660208401525060208301356130f8816127aa565b63ffffffff81166040840152506131126040840184613064565b6080606085015261312760a0850182846130a5565b9150506131376060850185613064565b848303601f1901608086015261314e8382846130a5565b9695505050505050565b63ffffffff8181168382160190811115611c1b57611c1b612e17565b5f8135613180816127aa565b63ffffffff1683526131956020830183613064565b604060208601526131aa6040860182846130a5565b95945050505050565b602081525f6131c56020830184613174565b9392505050565b6001600160601b0381811683821602908116908181146131ee576131ee612e17565b5092915050565b606081525f6132076060830185613174565b905063ffffffff8351166020830152602083015160408301529392505050565b5f81518084525f5b8181101561324b5760208185018101518683018201520161322f565b505f602082860101526020601f19601f83011685010191505092915050565b6020815263ffffffff825116602082015263ffffffff60208301511660408201525f6040830151608060608401526132a560a0840182613227565b90506060840151601f198483030160808501526131aa8282613227565b5f63ffffffff821663ffffffff810361305b5761305b612e1756fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a26469706673582212208e0fedc4acb8326e5ce15c29ce2e046801bf1ecc96837850d79b9a52a0163aa564736f6c634300081b0033
3399    /// ```
3400    #[rustfmt::skip]
3401    #[allow(clippy::all)]
3402    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
3403        b"a\x01 `@R4\x80\x15a\0\x10W__\xFD[P`@Qa5\xEA8\x03\x80a5\xEA\x839\x81\x01`@\x81\x90Ra\0/\x91a\x01\xD9V[\x81\x81\x81\x80\x80`\x01`\x01`\xA0\x1B\x03\x16`\x80\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x80`\x01`\x01`\xA0\x1B\x03\x16ch0H5`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\0\x89W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0\xAD\x91\x90a\x02\x19V[`\x01`\x01`\xA0\x1B\x03\x16`\xA0\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x80`\x01`\x01`\xA0\x1B\x03\x16c]\xF4YF`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01\x02W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01&\x91\x90a\x02\x19V[`\x01`\x01`\xA0\x1B\x03\x16`\xC0\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP`\xA0Q`\x01`\x01`\xA0\x1B\x03\x16c\xDF\\\xF7#`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01}W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\xA1\x91\x90a\x02\x19V[`\x01`\x01`\xA0\x1B\x03\x16`\xE0RPPc\xFF\xFF\xFF\xFF\x16a\x01\0RPa\x02;\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01\xD6W__\xFD[PV[__`@\x83\x85\x03\x12\x15a\x01\xEAW__\xFD[\x82Qa\x01\xF5\x81a\x01\xC2V[` \x84\x01Q\x90\x92Pc\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x02\x0EW__\xFD[\x80\x91PP\x92P\x92\x90PV[_` \x82\x84\x03\x12\x15a\x02)W__\xFD[\x81Qa\x024\x81a\x01\xC2V[\x93\x92PPPV[`\x80Q`\xA0Q`\xC0Q`\xE0Qa\x01\0Qa33a\x02\xB7_9_\x81\x81a\x01\x80\x01Ra\x1F\xA6\x01R_\x81\x81a\x03\x95\x01Ra\x0B\xEF\x01R_\x81\x81a\x02n\x01Ra\rZ\x01R_\x81\x81a\x02\x95\x01R\x81\x81a\x0E\xBB\x01Ra\x10p\x01R_\x81\x81a\x02\xBC\x01R\x81\x81a\x05a\x01R\x81\x81a\t\x11\x01R\x81\x81a\na\x01Ra\x0C\x8F\x01Ra33_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\x01HW_5`\xE0\x1C\x80cn\xFBF6\x11a\0\xBFW\x80c\xB9\x8D\t\x08\x11a\0yW\x80c\xB9\x8D\t\x08\x14a\x03NW\x80c\xBB\xCE\xE4n\x14a\x03jW\x80c\xC0\xC5;\x8B\x14a\x03}W\x80c\xDF\\\xF7#\x14a\x03\x90W\x80c\xF2\xFD\xE3\x8B\x14a\x03\xB7W\x80c\xF9\x12\n\xF6\x14a\x03\xCAW__\xFD[\x80cn\xFBF6\x14a\x02\xDEW\x80cqP\x18\xA6\x14a\x02\xFFW\x80cz\xFA\x1E\xED\x14a\x03\x07W\x80c~\x8E\xF1\xBE\x14a\x03\x1AW\x80c\x8B\0\xCE|\x14a\x03-W\x80c\x8D\xA5\xCB[\x14a\x03=W__\xFD[\x80cAl~^\x11a\x01\x10W\x80cAl~^\x14a\x02.W\x80cJ|~K\x14a\x02CW\x80cY\x19\xD0~\x14a\x02VW\x80c]\xF4YF\x14a\x02iW\x80ch0H5\x14a\x02\x90W\x80cm\x14\xA9\x87\x14a\x02\xB7W__\xFD[\x80c\x17\x1F\x1D[\x14a\x01LW\x80c\x1A\xD41\x89\x14a\x01{W\x80c$Z{\xFC\x14a\x01\xB7W\x80c,\xB2#\xD5\x14a\x01\xE2W\x80c-\x89\xF6\xFC\x14a\x02\x0FW[__\xFD[a\x01_a\x01Z6`\x04a'\\V[a\x03\xDDV[`@\x80Q\x92\x15\x15\x83R\x90\x15\x15` \x83\x01R\x01[`@Q\x80\x91\x03\x90\xF3[a\x01\xA2\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\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x01rV[`\x9ATa\x01\xCA\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01rV[a\x02\x01a\x01\xF06`\x04a'\xBBV[`\x99` R_\x90\x81R`@\x90 T\x81V[`@Q\x90\x81R` \x01a\x01rV[a\x02\x01a\x02\x1D6`\x04a'\xBBV[`\x98` R_\x90\x81R`@\x90 T\x81V[a\x02Aa\x02<6`\x04a'\xD6V[a\x05_V[\0[a\x02Aa\x02Q6`\x04a(\tV[a\x06\x1CV[a\x02Aa\x02d6`\x04a($V[a\x06-V[a\x01\xCA\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\x81V[a\x01\xCA\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\x81V[a\x01\xCA\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\x81V[a\x02\xF1a\x02\xEC6`\x04a+fV[a\x06\x85V[`@Qa\x01r\x92\x91\x90a,,V[a\x02Aa\x12zV[`\x9BTa\x01\xCA\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x02Aa\x03(6`\x04a,tV[a\x12\x8DV[`\x97Ta\x01\xA2\x90c\xFF\xFF\xFF\xFF\x16\x81V[`eT`\x01`\x01`\xA0\x1B\x03\x16a\x01\xCAV[_Ta\x03Z\x90`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\x01rV[a\x02Aa\x03x6`\x04a-\x07V[a\x13{V[a\x02Aa\x03\x8B6`\x04a($V[a\x13\xDDV[a\x01\xCA\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\x81V[a\x02Aa\x03\xC56`\x04a(\tV[a\x14\xF4V[a\x02Aa\x03\xD86`\x04a(\tV[a\x15jV[___\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x87\x87_\x01Q\x88` \x01Q\x88_\x01Q_`\x02\x81\x10a\x04 Wa\x04 a-^V[` \x02\x01Q\x89Q`\x01` \x02\x01Q\x8A` \x01Q_`\x02\x81\x10a\x04DWa\x04Da-^V[` \x02\x01Q\x8B` \x01Q`\x01`\x02\x81\x10a\x04`Wa\x04`a-^V[` \x90\x81\x02\x91\x90\x91\x01Q\x8CQ\x8D\x83\x01Q`@Qa\x04\xBD\x9A\x99\x98\x97\x96\x95\x94\x01\x98\x89R` \x89\x01\x97\x90\x97R`@\x88\x01\x95\x90\x95R``\x87\x01\x93\x90\x93R`\x80\x86\x01\x91\x90\x91R`\xA0\x85\x01R`\xC0\x84\x01R`\xE0\x83\x01Ra\x01\0\x82\x01Ra\x01 \x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 _\x1Ca\x04\xDF\x91\x90a-rV[\x90Pa\x05Qa\x04\xF8a\x04\xF1\x88\x84a\x15{V[\x86\x90a\x15\xEBV[a\x05\0a\x16_V[a\x05Ga\x058\x85a\x052`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92R`\x01\x82R`\x02\x90\x82\x01R\x90V[\x90a\x15{V[a\x05A\x8Ca\x17\x1FV[\x90a\x15\xEBV[\x88b\x01\xD4\xC0a\x17\xA9V[\x90\x98\x90\x97P\x95PPPPPPV[\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\x16c\x8D\xA5\xCB[`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05\xBBW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xDF\x91\x90a-\x91V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x06\x10W`@Qcpp\xF3\xB1`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x06\x19\x81a\x19\xBDV[PV[a\x06$a\x1A\x03V[a\x06\x19\x81a\x1A]V[`2Ta\x01\0\x90\x04`\xFF\x16a\x06]W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06T\x90a-\xACV[`@Q\x80\x91\x03\x90\xFD[a\x06ea\x1B\x04V[a\x06n\x81a\x14\xF4V[a\x06w\x83a\x1B3V[a\x06\x80\x82a\x1A]V[PPPV[`@\x80Q\x80\x82\x01\x90\x91R``\x80\x82R` \x82\x01R_\x84\x81\x03a\x06\xB9W`@Qb\xF8 -`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x83\x01QQ\x85\x14\x80\x15a\x06\xD1WP`\xA0\x83\x01QQ\x85\x14[\x80\x15a\x06\xE1WP`\xC0\x83\x01QQ\x85\x14[\x80\x15a\x06\xF1WP`\xE0\x83\x01QQ\x85\x14[a\x07\x0EW`@QcCqJ\xFD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82QQ` \x84\x01QQ\x14a\x075W`@Qc_\x83/A`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[Cc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10a\x07aW`@QcK\x87OE`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x80\x83\x01\x91\x90\x91R\x82Q\x80\x84\x01\x90\x93R``\x80\x84R\x90\x83\x01R\x90\x86`\x01`\x01`@\x1B\x03\x81\x11\x15a\x07\xA1Wa\x07\xA1a&\x13V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07\xCAW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P` \x82\x01R\x86`\x01`\x01`@\x1B\x03\x81\x11\x15a\x07\xE8Wa\x07\xE8a&\x13V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x08\x11W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81R`@\x80Q\x80\x82\x01\x90\x91R``\x80\x82R` \x82\x01R\x85` \x01QQ`\x01`\x01`@\x1B\x03\x81\x11\x15a\x08EWa\x08Ea&\x13V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x08nW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81R` \x86\x01QQ`\x01`\x01`@\x1B\x03\x81\x11\x15a\x08\x8EWa\x08\x8Ea&\x13V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x08\xB7W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81` \x01\x81\x90RP_a\t\x85\x8A\x8A\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RPP`@\x80Qc\x9A\xA1e=`\xE0\x1B\x81R\x90Q`\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\x93Pc\x9A\xA1e=\x92P`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\t\\W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\x80\x91\x90a-\xF7V[a\x1B\xE4V[\x90P_[\x87` \x01QQ\x81\x10\x15a\x0B\xCBWa\t\xCD\x88` \x01Q\x82\x81Q\x81\x10a\t\xAFWa\t\xAFa-^V[` \x02` \x01\x01Q\x80Q_\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[\x83` \x01Q\x82\x81Q\x81\x10a\t\xE3Wa\t\xE3a-^V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80\x15a\n_W` \x83\x01Qa\n\x04`\x01\x83a.+V[\x81Q\x81\x10a\n\x14Wa\n\x14a-^V[` \x02` \x01\x01Q_\x1C\x83` \x01Q\x82\x81Q\x81\x10a\n4Wa\n4a-^V[` \x02` \x01\x01Q_\x1C\x11a\n_W`@Q`\x01b#\x9A\xFB`\xE2\x1B\x03\x19\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\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\x16c\x04\xECcQ\x84` \x01Q\x83\x81Q\x81\x10a\n\xA4Wa\n\xA4a-^V[` \x02` \x01\x01Q\x8B\x8B_\x01Q\x85\x81Q\x81\x10a\n\xC2Wa\n\xC2a-^V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\n\xFF\x93\x92\x91\x90\x92\x83Rc\xFF\xFF\xFF\xFF\x91\x82\x16` \x84\x01R\x16`@\x82\x01R``\x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0B\x1AW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B>\x91\x90a.>V[`\x01`\x01`\xC0\x1B\x03\x16\x83_\x01Q\x82\x81Q\x81\x10a\x0B\\Wa\x0B\\a-^V[` \x02` \x01\x01\x81\x81RPPa\x0B\xC1a\x04\xF1a\x0B\x95\x84\x86_\x01Q\x85\x81Q\x81\x10a\x0B\x87Wa\x0B\x87a-^V[` \x02` \x01\x01Q\x16a\x1C!V[\x8A` \x01Q\x84\x81Q\x81\x10a\x0B\xABWa\x0B\xABa-^V[` \x02` \x01\x01Qa\x1CK\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x94P`\x01\x01a\t\x89V[PPa\x0B\xD6\x83a\x1D\rV[_\x80T\x91\x94P`\xFF\x90\x91\x16\x90\x81a\x0B\xEDW_a\x0CmV[\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\x16c\xC4H\xFE\xB8`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0CIW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0Cm\x91\x90a.dV[c\xFF\xFF\xFF\xFF\x16\x90P_[\x8A\x81\x10\x15a\x11\xDDW\x82\x15a\rXW\x89c\xFF\xFF\xFF\xFF\x16\x82\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\x16c$\x9A\x0CB\x8F\x8F\x86\x81\x81\x10a\x0C\xCEWa\x0C\xCEa-^V[`@Q`\xE0\x85\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R\x92\x015`\xF8\x1C`\x04\x83\x01RP`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\r\x0CW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r0\x91\x90a.\x7FV[a\r:\x91\x90a.\x96V[\x11a\rXW`@Qc\xAF\xFC^\xDB`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\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\x16ch\xBC\xCA\xAC\x8D\x8D\x84\x81\x81\x10a\r\x99Wa\r\x99a-^V[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x8C\x8C`\xA0\x01Q\x85\x81Q\x81\x10a\r\xBDWa\r\xBDa-^V[` \x90\x81\x02\x91\x90\x91\x01\x01Q`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x86\x90\x1B\x16\x81R`\xFF\x90\x93\x16`\x04\x84\x01Rc\xFF\xFF\xFF\xFF\x91\x82\x16`$\x84\x01R\x16`D\x82\x01R`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\x17W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E;\x91\x90a.\xA9V[`\x01`\x01`@\x1B\x03\x19\x16a\x0E^\x8A`@\x01Q\x83\x81Q\x81\x10a\t\xAFWa\t\xAFa-^V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x14a\x0E\x87W`@Qc\xE11\n\xED`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0E\xB7\x89`@\x01Q\x82\x81Q\x81\x10a\x0E\xA0Wa\x0E\xA0a-^V[` \x02` \x01\x01Q\x87a\x15\xEB\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x95P\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\x16c\xC8)LV\x8D\x8D\x84\x81\x81\x10a\x0E\xFAWa\x0E\xFAa-^V[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x8C\x8C`\xC0\x01Q\x85\x81Q\x81\x10a\x0F\x1EWa\x0F\x1Ea-^V[` \x90\x81\x02\x91\x90\x91\x01\x01Q`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x86\x90\x1B\x16\x81R`\xFF\x90\x93\x16`\x04\x84\x01Rc\xFF\xFF\xFF\xFF\x91\x82\x16`$\x84\x01R\x16`D\x82\x01R`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0FxW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\x9C\x91\x90a.\xD1V[\x85` \x01Q\x82\x81Q\x81\x10a\x0F\xB2Wa\x0F\xB2a-^V[`\x01`\x01``\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x82\x01R\x85\x01Q\x80Q\x82\x90\x81\x10a\x0F\xDEWa\x0F\xDEa-^V[` \x02` \x01\x01Q\x85_\x01Q\x82\x81Q\x81\x10a\x0F\xFBWa\x0F\xFBa-^V[`\x01`\x01``\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R_\x80[\x8A` \x01QQ\x81\x10\x15a\x11\xD3Wa\x10i\x86_\x01Q\x82\x81Q\x81\x10a\x10;Wa\x10;a-^V[` \x02` \x01\x01Q\x8F\x8F\x86\x81\x81\x10a\x10UWa\x10Ua-^V[`\x01\x92\x015`\xF8\x1C\x92\x90\x92\x1C\x81\x16\x14\x91\x90PV[\x15a\x11\xCBW\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\x16c\xF2\xBE\x94\xAE\x8F\x8F\x86\x81\x81\x10a\x10\xAFWa\x10\xAFa-^V[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x8E\x89` \x01Q\x85\x81Q\x81\x10a\x10\xD3Wa\x10\xD3a-^V[` \x02` \x01\x01Q\x8F`\xE0\x01Q\x88\x81Q\x81\x10a\x10\xF1Wa\x10\xF1a-^V[` \x02` \x01\x01Q\x87\x81Q\x81\x10a\x11\nWa\x11\na-^V[` \x90\x81\x02\x91\x90\x91\x01\x01Q`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x87\x90\x1B\x16\x81R`\xFF\x90\x94\x16`\x04\x85\x01Rc\xFF\xFF\xFF\xFF\x92\x83\x16`$\x85\x01R`D\x84\x01\x91\x90\x91R\x16`d\x82\x01R`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11lW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11\x90\x91\x90a.\xD1V[\x87Q\x80Q\x85\x90\x81\x10a\x11\xA4Wa\x11\xA4a-^V[` \x02` \x01\x01\x81\x81Qa\x11\xB8\x91\x90a.\xF7V[`\x01`\x01``\x1B\x03\x16\x90RP`\x01\x90\x91\x01\x90[`\x01\x01a\x10\x16V[PP`\x01\x01a\x0CwV[PPP__a\x11\xF6\x8C\x86\x8A``\x01Q\x8B`\x80\x01Qa\x03\xDDV[\x91P\x91P\x81a\x12\x18W`@Qcg\x98\x8D3`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80a\x126W`@Qc\xAB\x1B#k`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PP_\x87\x82` \x01Q`@Q` \x01a\x12P\x92\x91\x90a/\x16V[`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x91\x90R\x80Q` \x90\x91\x01 \x92\x9B\x92\x9AP\x91\x98PPPPPPPPPV[a\x12\x82a\x1A\x03V[a\x12\x8B_a\x1D\x9EV[V[`\x9AT`\x01`\x01`\xA0\x1B\x03\x163\x14a\x12\xB7W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06T\x90a/\\V[a\x12\xC2\x83\x83\x83a\x1D\xEFV[_a\x12\xD0`@\x85\x01\x85a/\x93V[\x81\x01\x90a\x12\xDD\x91\x90a/\xD5V[\x90P_a\x12\xED` \x85\x01\x85a/\x93V[\x81\x01\x90a\x12\xFA\x91\x90a/\xD5V[\x90P_a\x13\x07\x83\x80a/\xECV[\x90P\x80\x82\x14a\x13:W`@Qc\x0C\xF9-\xD5`\xE0\x1B\x81R`\x04\x81\x01\x84\x90R`$\x81\x01\x83\x90R`D\x81\x01\x82\x90R`d\x01a\x06TV[`@\x80Q\x84\x81R` \x81\x01\x84\x90R\x7F\xA7\xA7\x07\xDD\x7FL\xA0\x0F\xE1\xAF\xCD4\xDF~\xBBlG\xF28\x80\xC3M%L\xC3\x12\xE5\xC4\x1E9t\xC5\x91\x01`@Q\x80\x91\x03\x90\xA1PPPPPPV[`\x9BT`\x01`\x01`\xA0\x1B\x03\x163\x14a\x13\xA5W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06T\x90a0\x03V[_\x84`@Q` \x01a\x13\xB9\x91\x81R` \x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa\x13\xD6\x81\x85\x85\x85a\"\x18V[PPPPPV[`2Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x13\xFDWP`2T`\x01`\xFF\x90\x91\x16\x10[\x80a\x14\x17WP0;\x15\x80\x15a\x14\x17WP`2T`\xFF\x16`\x01\x14[a\x14zW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`.`$\x82\x01R\x7FInitializable: contract is alrea`D\x82\x01Rm\x19\x1EH\x1A[\x9A]\x1AX[\x1A^\x99Y`\x92\x1B`d\x82\x01R`\x84\x01a\x06TV[`2\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x14\x9DW`2\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x14\xA8\x84\x84\x84a\x06-V[\x80\x15a\x14\xEEW`2\x80Ta\xFF\0\x19\x16\x90U`@Q`\x01\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPV[a\x14\xFCa\x1A\x03V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x15aW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x06TV[a\x06\x19\x81a\x1D\x9EV[a\x15ra\x1A\x03V[a\x06\x19\x81a\x1B3V[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x15\x96a%9V[\x83Q\x81R` \x80\x85\x01Q\x90\x82\x01R`@\x80\x82\x01\x84\x90R_\x90\x83``\x84`\x07a\x07\xD0Z\x03\xFA\x90P\x80\x80a\x15\xC4W\xFE[P\x80a\x15\xE3W`@Qc#\x19\xDF\x19`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PP\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x16\x06a%WV[\x83Q\x81R` \x80\x85\x01Q\x81\x83\x01R\x83Q`@\x80\x84\x01\x91\x90\x91R\x90\x84\x01Q``\x83\x01R_\x90\x83`\x80\x84`\x06a\x07\xD0Z\x03\xFA\x90P\x80\x80a\x16@W\xFE[P\x80a\x15\xE3W`@Qc\xD4\xB6\x8F\xD7`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x16ga%uV[P`@\x80Q`\x80\x81\x01\x82R\x7F\x19\x8E\x93\x93\x92\rH:r`\xBF\xB71\xFB]%\xF1\xAAI35\xA9\xE7\x12\x97\xE4\x85\xB7\xAE\xF3\x12\xC2\x81\x83\x01\x90\x81R\x7F\x18\0\xDE\xEF\x12\x1F\x1EvBj\0f^\\DygC\"\xD4\xF7^\xDA\xDDF\xDE\xBD\\\xD9\x92\xF6\xED``\x83\x01R\x81R\x81Q\x80\x83\x01\x90\x92R\x7F']\xC4\xA2\x88\xD1\xAF\xB3\xCB\xB1\xAC\t\x18u$\xC7\xDB69]\xF7\xBE;\x99\xE6s\xB1:\x07Ze\xEC\x82R\x7F\x1D\x9B\xEF\xCD\x05\xA52>m\xA4\xD45\xF3\xB6\x17\xCD\xB3\xAF\x83(\\-\xF7\x11\xEF9\xC0\x15q\x82\x7F\x9D` \x83\x81\x01\x91\x90\x91R\x81\x01\x91\x90\x91R\x90V[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R_\x80\x80a\x17L_Q` a2\xDE_9_Q\x90_R\x86a-rV[\x90P[a\x17X\x81a#YV[\x90\x93P\x91P_Q` a2\xDE_9_Q\x90_R\x82\x83\t\x83\x03a\x17\x90W`@\x80Q\x80\x82\x01\x90\x91R\x90\x81R` \x81\x01\x91\x90\x91R\x93\x92PPPV[_Q` a2\xDE_9_Q\x90_R`\x01\x82\x08\x90Pa\x17OV[`@\x80Q\x80\x82\x01\x82R\x86\x81R` \x80\x82\x01\x86\x90R\x82Q\x80\x84\x01\x90\x93R\x86\x83R\x82\x01\x84\x90R_\x91\x82\x91\x90a\x17\xDAa%\x9AV[_[`\x02\x81\x10\x15a\x19\x91W_a\x17\xF1\x82`\x06a/\xECV[\x90P\x84\x82`\x02\x81\x10a\x18\x05Wa\x18\x05a-^V[` \x02\x01QQ\x83a\x18\x16\x83_a.\x96V[`\x0C\x81\x10a\x18&Wa\x18&a-^V[` \x02\x01R\x84\x82`\x02\x81\x10a\x18=Wa\x18=a-^V[` \x02\x01Q` \x01Q\x83\x82`\x01a\x18T\x91\x90a.\x96V[`\x0C\x81\x10a\x18dWa\x18da-^V[` \x02\x01R\x83\x82`\x02\x81\x10a\x18{Wa\x18{a-^V[` \x02\x01QQQ\x83a\x18\x8E\x83`\x02a.\x96V[`\x0C\x81\x10a\x18\x9EWa\x18\x9Ea-^V[` \x02\x01R\x83\x82`\x02\x81\x10a\x18\xB5Wa\x18\xB5a-^V[` \x02\x01QQ`\x01` \x02\x01Q\x83a\x18\xCE\x83`\x03a.\x96V[`\x0C\x81\x10a\x18\xDEWa\x18\xDEa-^V[` \x02\x01R\x83\x82`\x02\x81\x10a\x18\xF5Wa\x18\xF5a-^V[` \x02\x01Q` \x01Q_`\x02\x81\x10a\x19\x0FWa\x19\x0Fa-^V[` \x02\x01Q\x83a\x19 \x83`\x04a.\x96V[`\x0C\x81\x10a\x190Wa\x190a-^V[` \x02\x01R\x83\x82`\x02\x81\x10a\x19GWa\x19Ga-^V[` \x02\x01Q` \x01Q`\x01`\x02\x81\x10a\x19bWa\x19ba-^V[` \x02\x01Q\x83a\x19s\x83`\x05a.\x96V[`\x0C\x81\x10a\x19\x83Wa\x19\x83a-^V[` \x02\x01RP`\x01\x01a\x17\xDCV[Pa\x19\x9Aa%\xB9V[_` \x82a\x01\x80\x85`\x08\x8C\xFA\x91Q\x91\x9C\x91\x15\x15\x9BP\x90\x99PPPPPPPPPPV[_\x80T`\xFF\x19\x16\x82\x15\x15\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F@\xE4\xED\x88\n)\xE0\xF6\xDD\xCE0tW\xFBu\xCD\xDFO\xEE\xF7\xD3\xEC\xB00\x1B\xFD\xF4\x97j\x0E-\xFC\x90` \x01`@Q\x80\x91\x03\x90\xA1PV[`eT`\x01`\x01`\xA0\x1B\x03\x163\x14a\x12\x8BW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x06TV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x1A\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FGenerator cannot be zero address`D\x82\x01R`d\x01a\x06TV[`\x9B\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x90\x93U`@Q\x91\x16\x91\x90\x82\x90\x7F\r\xDF\xAB\x8Ac]q\xF1]r\xE2\xD2\xDF\xF5]2\x11\x9D\x13'\r.\xA4\xC3\xDC\0C\xB6l,Gk\x90_\x90\xA3PPV[`2Ta\x01\0\x90\x04`\xFF\x16a\x1B+W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06T\x90a-\xACV[a\x12\x8Ba#\xD5V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x1B\x93W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`!`$\x82\x01R\x7FAggregator cannot be zero addres`D\x82\x01R`s`\xF8\x1B`d\x82\x01R`\x84\x01a\x06TV[`\x9A\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x90\x93U`@Q\x91\x16\x91\x90\x82\x90\x7F\x89\xBA\xAB\xEF}\xFD\x06\x83\xC0\xAC\x16\xFD*\x841\xC5\x1BI\xFB\xE6T\xC3\xF7\xB5\xEF\x19v>,\xCD\x88\xF2\x90_\x90\xA3PPV[__a\x1B\xEF\x84a$\x05V[\x90P\x80\x83`\xFF\x16`\x01\x90\x1B\x11a\x1C\x18W`@Qc\xCA\x95s3`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x90P[\x92\x91PPV[_\x80[\x82\x15a\x1C\x1BWa\x1C5`\x01\x84a.+V[\x90\x92\x16\x91\x80a\x1CC\x81a0DV[\x91PPa\x1C$V[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x02\0\x82a\xFF\xFF\x16\x10a\x1C\x87W`@Q`\x01b;\x15\x83`\xE1\x1B\x03\x19\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81a\xFF\xFF\x16`\x01\x03a\x1C\x9AWP\x81a\x1C\x1BV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01\x81\x90R\x84\x90`\x01\x90[\x81a\xFF\xFF\x16\x86a\xFF\xFF\x16\x10a\x1D\x02W`\x01a\xFF\xFF\x87\x16`\xFF\x83\x16\x1C\x81\x16\x90\x03a\x1C\xE5Wa\x1C\xE2\x84\x84a\x15\xEBV[\x93P[a\x1C\xEF\x83\x84a\x15\xEBV[\x92Pb\x01\xFF\xFE`\x01\x92\x83\x1B\x16\x91\x01a\x1C\xB5V[P\x91\x95\x94PPPPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R\x81Q\x15\x80\x15a\x1D1WP` \x82\x01Q\x15[\x15a\x1DNWPP`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R\x90V[`@Q\x80`@\x01`@R\x80\x83_\x01Q\x81R` \x01_Q` a2\xDE_9_Q\x90_R\x84` \x01Qa\x1D\x7F\x91\x90a-rV[a\x1D\x96\x90_Q` a2\xDE_9_Q\x90_Ra.+V[\x90R\x92\x91PPV[`e\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x90\x93U`@Q\x91\x16\x91\x90\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\xA3PPV[`\x9AT`\x01`\x01`\xA0\x1B\x03\x163\x14a\x1E\x19W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06T\x90a/\\V[_a\x1E'` \x85\x01\x85a'\xBBV[\x90P6_a\x1E8``\x87\x01\x87a/\x93V[\x90\x92P\x90P_a\x1EN`@\x88\x01` \x89\x01a'\xBBV[\x90P`\x98_a\x1E`` \x89\x01\x89a'\xBBV[c\xFF\xFF\xFF\xFF\x16c\xFF\xFF\xFF\xFF\x16\x81R` \x01\x90\x81R` \x01_ T\x87`@Q` \x01a\x1E\x8B\x91\x90a0\xCDV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x14a\x1F\x14W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R\x7FSupplied task does not match the`D\x82\x01R\x7F one recorded in the contract\0\0\0`d\x82\x01R`\x84\x01a\x06TV[_`\x99\x81a\x1F%` \x8A\x01\x8Aa'\xBBV[c\xFF\xFF\xFF\xFF\x16c\xFF\xFF\xFF\xFF\x16\x81R` \x01\x90\x81R` \x01_ T\x14a\x1F\xA1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`,`$\x82\x01R\x7FAggregator has already responded`D\x82\x01Rk to the task`\xA0\x1B`d\x82\x01R`\x84\x01a\x06TV[a\x1F\xCB\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\x85a1XV[c\xFF\xFF\xFF\xFF\x16Cc\xFF\xFF\xFF\xFF\x16\x11\x15a 0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`!`$\x82\x01R\x7FAggregator has responded too lat`D\x82\x01R`e`\xF8\x1B`d\x82\x01R`\x84\x01a\x06TV[_\x86`@Q` \x01a B\x91\x90a1\xB3V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P__a i\x83\x87\x87\x8A\x8Ca\x06\x85V[\x90\x92P\x90P_[\x85\x81\x10\x15a!]W\x84`\xFF\x16\x83` \x01Q\x82\x81Q\x81\x10a \x92Wa \x92a-^V[` \x02` \x01\x01Qa \xA4\x91\x90a1\xCCV[`\x01`\x01``\x1B\x03\x16`d\x84_\x01Q\x83\x81Q\x81\x10a \xC4Wa \xC4a-^V[` \x02` \x01\x01Q`\x01`\x01``\x1B\x03\x16a \xDF\x91\x90a/\xECV[\x10\x15a!UW`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R\x7FSignatories do not own at least `D\x82\x01R\x7Fthreshold percentage of a quorum`d\x82\x01R`\x84\x01a\x06TV[`\x01\x01a pV[P`@\x80Q\x80\x82\x01\x82Rc\xFF\xFF\xFF\xFFC\x16\x81R` \x80\x82\x01\x84\x90R\x91Q\x90\x91a!\x8A\x91\x8C\x91\x84\x91\x01a1\xF5V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 `\x99_\x8C_\x01` \x81\x01\x90a!\xB5\x91\x90a'\xBBV[c\xFF\xFF\xFF\xFF\x16c\xFF\xFF\xFF\xFF\x16\x81R` \x01\x90\x81R` \x01_ \x81\x90UP\x7F\x9B\x96\xC9\x81\xC7\xC7\n\x9F\x17\x02\xAB\xB0Dx'F\xC1\x1D\t\x0FX\xEA4\xB1-\xAF,\xC5<\xF8\xAB_\x8A\x82`@Qa\"\x03\x92\x91\x90a1\xF5V[`@Q\x80\x91\x03\x90\xA1PPPPPPPPPPPV[`\x9BT`\x01`\x01`\xA0\x1B\x03\x163\x14a\"BW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06T\x90a0\x03V[`@\x80Q`\x80\x81\x01\x82R``\x80\x82\x01R\x80\x82\x01\x86\x90Rc\xFF\xFF\xFF\xFFC\x81\x16\x82R\x85\x16` \x80\x83\x01\x91\x90\x91R\x82Q`\x1F\x85\x01\x82\x90\x04\x82\x02\x81\x01\x82\x01\x90\x93R\x83\x83R\x90\x91\x90\x84\x90\x84\x90\x81\x90\x84\x01\x83\x82\x80\x82\x847_\x92\x01\x91\x90\x91RPPPP``\x82\x01R`@Qa\"\xB4\x90\x82\x90` \x01a2jV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 `\x97\x80Tc\xFF\xFF\xFF\xFF\x90\x81\x16_\x90\x81R`\x98\x90\x94R\x93\x90\x92 UT\x16\x90\x7F\xBA7\x83+\xDD!t+\x86\xA63\x04;\x92:\x9A\xA9x\xF1\xCF\xB2\xB2t\xC6f\x1E\xB5s\xCF\t+\xF0\x90a#\x16\x90\x84\x90a2jV[`@Q\x80\x91\x03\x90\xA2`\x97\x80Tc\xFF\xFF\xFF\xFF\x16\x90_a#3\x83a2\xC2V[\x91\x90a\x01\0\n\x81T\x81c\xFF\xFF\xFF\xFF\x02\x19\x16\x90\x83c\xFF\xFF\xFF\xFF\x16\x02\x17\x90UPPPPPPPV[_\x80\x80_Q` a2\xDE_9_Q\x90_R`\x03_Q` a2\xDE_9_Q\x90_R\x86_Q` a2\xDE_9_Q\x90_R\x88\x89\t\t\x08\x90P_a#\xC9\x82\x7F\x0C\x19\x13\x9C\xB8Lh\nn\x14\x11m\xA0`V\x17e\xE0Z\xA4Z\x1Cr\xA3O\x08#\x05\xB6\x1F?R_Q` a2\xDE_9_Q\x90_Ra$\xC0V[\x91\x95\x91\x94P\x90\x92PPPV[`2Ta\x01\0\x90\x04`\xFF\x16a#\xFCW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06T\x90a-\xACV[a\x12\x8B3a\x1D\x9EV[_a\x01\0\x82Q\x11\x15a$*W`@Qc}\xA5NG`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q_\x03a$9WP_\x91\x90PV[__\x83_\x81Q\x81\x10a$MWa$Ma-^V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15a$\xB7W\x84\x81\x81Q\x81\x10a${Wa${a-^V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11a$\xABW`@Qc\x10\x19\x10i`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x91\x81\x17\x91`\x01\x01a$`V[P\x90\x93\x92PPPV[__a$\xCAa%\xB9V[a$\xD2a%\xD7V[` \x80\x82R\x81\x81\x01\x81\x90R`@\x82\x01\x81\x90R``\x82\x01\x88\x90R`\x80\x82\x01\x87\x90R`\xA0\x82\x01\x86\x90R\x82`\xC0\x83`\x05a\x07\xD0Z\x03\xFA\x92P\x82\x80a%\x0FW\xFE[P\x82a%.W`@Qc\xD5\x1E\xDA\xE3`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PQ\x95\x94PPPPPV[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`\x80\x01`@R\x80`\x04\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`@\x01`@R\x80a%\x88a%\xF5V[\x81R` \x01a%\x95a%\xF5V[\x90R\x90V[`@Q\x80a\x01\x80\x01`@R\x80`\x0C\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80` \x01`@R\x80`\x01\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`\xC0\x01`@R\x80`\x06\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`@\x01`@R\x80`\x02\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&IWa&Ia&\x13V[`@R\x90V[`@Qa\x01\0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&IWa&Ia&\x13V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x9AWa&\x9Aa&\x13V[`@R\x91\x90PV[_`@\x82\x84\x03\x12\x15a&\xB2W__\xFD[a&\xBAa&'V[\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_\x82`\x1F\x83\x01\x12a&\xE0W__\xFD[a&\xE8a&'V[\x80`@\x84\x01\x85\x81\x11\x15a&\xF9W__\xFD[\x84[\x81\x81\x10\x15a'\x13W\x805\x84R` \x93\x84\x01\x93\x01a&\xFBV[P\x90\x95\x94PPPPPV[_`\x80\x82\x84\x03\x12\x15a'.W__\xFD[a'6a&'V[\x90Pa'B\x83\x83a&\xD1V[\x81Ra'Q\x83`@\x84\x01a&\xD1V[` \x82\x01R\x92\x91PPV[____a\x01 \x85\x87\x03\x12\x15a'pW__\xFD[\x845\x93Pa'\x81\x86` \x87\x01a&\xA2V[\x92Pa'\x90\x86``\x87\x01a'\x1EV[\x91Pa'\x9F\x86`\xE0\x87\x01a&\xA2V[\x90P\x92\x95\x91\x94P\x92PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x06\x19W__\xFD[_` \x82\x84\x03\x12\x15a'\xCBW__\xFD[\x815a\x1C\x18\x81a'\xAAV[_` \x82\x84\x03\x12\x15a'\xE6W__\xFD[\x815\x80\x15\x15\x81\x14a\x1C\x18W__\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x06\x19W__\xFD[_` \x82\x84\x03\x12\x15a(\x19W__\xFD[\x815a\x1C\x18\x81a'\xF5V[___``\x84\x86\x03\x12\x15a(6W__\xFD[\x835a(A\x81a'\xF5V[\x92P` \x84\x015a(Q\x81a'\xF5V[\x91P`@\x84\x015a(a\x81a'\xF5V[\x80\x91PP\x92P\x92P\x92V[__\x83`\x1F\x84\x01\x12a(|W__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a(\x92W__\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a(\xA9W__\xFD[\x92P\x92\x90PV[_`\x01`\x01`@\x1B\x03\x82\x11\x15a(\xC8Wa(\xC8a&\x13V[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a(\xE1W__\xFD[\x815a(\xF4a(\xEF\x82a(\xB0V[a&rV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a)\x15W__\xFD[` \x85\x01[\x83\x81\x10\x15a);W\x805a)-\x81a'\xAAV[\x83R` \x92\x83\x01\x92\x01a)\x1AV[P\x95\x94PPPPPV[_\x82`\x1F\x83\x01\x12a)TW__\xFD[\x815a)ba(\xEF\x82a(\xB0V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x06\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a)\x83W__\xFD[` \x85\x01[\x83\x81\x10\x15a);Wa)\x9A\x87\x82a&\xA2V[\x83R` \x90\x92\x01\x91`@\x01a)\x88V[_\x82`\x1F\x83\x01\x12a)\xB9W__\xFD[\x815a)\xC7a(\xEF\x82a(\xB0V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a)\xE8W__\xFD[` \x85\x01[\x83\x81\x10\x15a);W\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a*\nW__\xFD[a*\x19\x88` \x83\x8A\x01\x01a(\xD2V[\x84RP` \x92\x83\x01\x92\x01a)\xEDV[_a\x01\x80\x82\x84\x03\x12\x15a*9W__\xFD[a*Aa&OV[\x90P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a*XW__\xFD[a*d\x84\x82\x85\x01a(\xD2V[\x82RP` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\x7FW__\xFD[a*\x8B\x84\x82\x85\x01a)EV[` \x83\x01RP`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\xA9W__\xFD[a*\xB5\x84\x82\x85\x01a)EV[`@\x83\x01RPa*\xC8\x83``\x84\x01a'\x1EV[``\x82\x01Ra*\xDA\x83`\xE0\x84\x01a&\xA2V[`\x80\x82\x01Ra\x01 \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\xF8W__\xFD[a+\x04\x84\x82\x85\x01a(\xD2V[`\xA0\x83\x01RPa\x01@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+#W__\xFD[a+/\x84\x82\x85\x01a(\xD2V[`\xC0\x83\x01RPa\x01`\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+NW__\xFD[a+Z\x84\x82\x85\x01a)\xAAV[`\xE0\x83\x01RP\x92\x91PPV[_____`\x80\x86\x88\x03\x12\x15a+zW__\xFD[\x855\x94P` \x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+\x96W__\xFD[a+\xA2\x88\x82\x89\x01a(lV[\x90\x95P\x93PP`@\x86\x015a+\xB6\x81a'\xAAV[\x91P``\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+\xD0W__\xFD[a+\xDC\x88\x82\x89\x01a*(V[\x91PP\x92\x95P\x92\x95\x90\x93PV[_\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01_[\x82\x81\x10\x15a,\"W\x81Q`\x01`\x01``\x1B\x03\x16\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a+\xFBV[P\x93\x94\x93PPPPV[`@\x81R_\x83Q`@\x80\x84\x01Ra,F`\x80\x84\x01\x82a+\xE9V[\x90P` \x85\x01Q`?\x19\x84\x83\x03\x01``\x85\x01Ra,c\x82\x82a+\xE9V[\x92PPP\x82` \x83\x01R\x93\x92PPPV[___``\x84\x86\x03\x12\x15a,\x86W__\xFD[\x835`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x9BW__\xFD[\x84\x01`\x80\x81\x87\x03\x12\x15a,\xACW__\xFD[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\xC6W__\xFD[\x84\x01`@\x81\x87\x03\x12\x15a,\xD7W__\xFD[\x91P`@\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\xF1W__\xFD[a,\xFD\x86\x82\x87\x01a*(V[\x91PP\x92P\x92P\x92V[____``\x85\x87\x03\x12\x15a-\x1AW__\xFD[\x845\x93P` \x85\x015a-,\x81a'\xAAV[\x92P`@\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-FW__\xFD[a-R\x87\x82\x88\x01a(lV[\x95\x98\x94\x97P\x95PPPPV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_\x82a-\x8CWcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x06\x90V[_` \x82\x84\x03\x12\x15a-\xA1W__\xFD[\x81Qa\x1C\x18\x81a'\xF5V[` \x80\x82R`+\x90\x82\x01R\x7FInitializable: contract is not i`@\x82\x01Rjnitializing`\xA8\x1B``\x82\x01R`\x80\x01\x90V[_` \x82\x84\x03\x12\x15a.\x07W__\xFD[\x81Q`\xFF\x81\x16\x81\x14a\x1C\x18W__\xFD[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\x1C\x1BWa\x1C\x1Ba.\x17V[_` \x82\x84\x03\x12\x15a.NW__\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a\x1C\x18W__\xFD[_` \x82\x84\x03\x12\x15a.tW__\xFD[\x81Qa\x1C\x18\x81a'\xAAV[_` \x82\x84\x03\x12\x15a.\x8FW__\xFD[PQ\x91\x90PV[\x80\x82\x01\x80\x82\x11\x15a\x1C\x1BWa\x1C\x1Ba.\x17V[_` \x82\x84\x03\x12\x15a.\xB9W__\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x81\x16\x81\x14a\x1C\x18W__\xFD[_` \x82\x84\x03\x12\x15a.\xE1W__\xFD[\x81Q`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\x1C\x18W__\xFD[`\x01`\x01``\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x1C\x1BWa\x1C\x1Ba.\x17V[c\xFF\xFF\xFF\xFF`\xE0\x1B\x83`\xE0\x1B\x16\x81R_`\x04\x82\x01\x83Q` \x85\x01_[\x82\x81\x10\x15a/PW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a/2V[P\x91\x96\x95PPPPPPV[` \x80\x82R`\x1D\x90\x82\x01R\x7FAggregator must be the caller\0\0\0`@\x82\x01R``\x01\x90V[__\x835`\x1E\x19\x846\x03\x01\x81\x12a/\xA8W__\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15a/\xC1W__\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a(\xA9W__\xFD[_` \x82\x84\x03\x12\x15a/\xE5W__\xFD[P5\x91\x90PV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x1C\x1BWa\x1C\x1Ba.\x17V[` \x80\x82R`!\x90\x82\x01R\x7FTask generator must be the calle`@\x82\x01R`9`\xF9\x1B``\x82\x01R`\x80\x01\x90V[_a\xFF\xFF\x82\x16a\xFF\xFF\x81\x03a0[Wa0[a.\x17V[`\x01\x01\x92\x91PPV[__\x835`\x1E\x19\x846\x03\x01\x81\x12a0yW__\xFD[\x83\x01` \x81\x01\x92P5\x90P`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x97W__\xFD[\x806\x03\x82\x13\x15a(\xA9W__\xFD[\x81\x83R\x81\x81` \x85\x017P_\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1F\x90\x91\x01`\x1F\x19\x16\x90\x91\x01\x01\x90V[` \x81R_\x825a0\xDD\x81a'\xAAV[c\xFF\xFF\xFF\xFF\x81\x16` \x84\x01RP` \x83\x015a0\xF8\x81a'\xAAV[c\xFF\xFF\xFF\xFF\x81\x16`@\x84\x01RPa1\x12`@\x84\x01\x84a0dV[`\x80``\x85\x01Ra1'`\xA0\x85\x01\x82\x84a0\xA5V[\x91PPa17``\x85\x01\x85a0dV[\x84\x83\x03`\x1F\x19\x01`\x80\x86\x01Ra1N\x83\x82\x84a0\xA5V[\x96\x95PPPPPPV[c\xFF\xFF\xFF\xFF\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\x1C\x1BWa\x1C\x1Ba.\x17V[_\x815a1\x80\x81a'\xAAV[c\xFF\xFF\xFF\xFF\x16\x83Ra1\x95` \x83\x01\x83a0dV[`@` \x86\x01Ra1\xAA`@\x86\x01\x82\x84a0\xA5V[\x95\x94PPPPPV[` \x81R_a1\xC5` \x83\x01\x84a1tV[\x93\x92PPPV[`\x01`\x01``\x1B\x03\x81\x81\x16\x83\x82\x16\x02\x90\x81\x16\x90\x81\x81\x14a1\xEEWa1\xEEa.\x17V[P\x92\x91PPV[``\x81R_a2\x07``\x83\x01\x85a1tV[\x90Pc\xFF\xFF\xFF\xFF\x83Q\x16` \x83\x01R` \x83\x01Q`@\x83\x01R\x93\x92PPPV[_\x81Q\x80\x84R_[\x81\x81\x10\x15a2KW` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a2/V[P_` \x82\x86\x01\x01R` `\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[` \x81Rc\xFF\xFF\xFF\xFF\x82Q\x16` \x82\x01Rc\xFF\xFF\xFF\xFF` \x83\x01Q\x16`@\x82\x01R_`@\x83\x01Q`\x80``\x84\x01Ra2\xA5`\xA0\x84\x01\x82a2'V[\x90P``\x84\x01Q`\x1F\x19\x84\x83\x03\x01`\x80\x85\x01Ra1\xAA\x82\x82a2'V[_c\xFF\xFF\xFF\xFF\x82\x16c\xFF\xFF\xFF\xFF\x81\x03a0[Wa0[a.\x17V\xFE0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDG\xA2dipfsX\"\x12 \x8E\x0F\xED\xC4\xAC\xB82n\\\xE1\\)\xCE.\x04h\x01\xBF\x1E\xCC\x96\x83xP\xD7\x9B\x9AR\xA0\x16:\xA5dsolcC\0\x08\x1B\x003",
3404    );
3405    /// The runtime bytecode of the contract, as deployed on the network.
3406    ///
3407    /// ```text
3408    ///0x608060405234801561000f575f5ffd5b5060043610610148575f3560e01c80636efb4636116100bf578063b98d090811610079578063b98d09081461034e578063bbcee46e1461036a578063c0c53b8b1461037d578063df5cf72314610390578063f2fde38b146103b7578063f9120af6146103ca575f5ffd5b80636efb4636146102de578063715018a6146102ff5780637afa1eed146103075780637e8ef1be1461031a5780638b00ce7c1461032d5780638da5cb5b1461033d575f5ffd5b8063416c7e5e11610110578063416c7e5e1461022e5780634a7c7e4b146102435780635919d07e146102565780635df459461461026957806368304835146102905780636d14a987146102b7575f5ffd5b8063171f1d5b1461014c5780631ad431891461017b578063245a7bfc146101b75780632cb223d5146101e25780632d89f6fc1461020f575b5f5ffd5b61015f61015a36600461275c565b6103dd565b6040805192151583529015156020830152015b60405180910390f35b6101a27f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610172565b609a546101ca906001600160a01b031681565b6040516001600160a01b039091168152602001610172565b6102016101f03660046127bb565b60996020525f908152604090205481565b604051908152602001610172565b61020161021d3660046127bb565b60986020525f908152604090205481565b61024161023c3660046127d6565b61055f565b005b610241610251366004612809565b61061c565b610241610264366004612824565b61062d565b6101ca7f000000000000000000000000000000000000000000000000000000000000000081565b6101ca7f000000000000000000000000000000000000000000000000000000000000000081565b6101ca7f000000000000000000000000000000000000000000000000000000000000000081565b6102f16102ec366004612b66565b610685565b604051610172929190612c2c565b61024161127a565b609b546101ca906001600160a01b031681565b610241610328366004612c74565b61128d565b6097546101a29063ffffffff1681565b6065546001600160a01b03166101ca565b5f5461035a9060ff1681565b6040519015158152602001610172565b610241610378366004612d07565b61137b565b61024161038b366004612824565b6113dd565b6101ca7f000000000000000000000000000000000000000000000000000000000000000081565b6102416103c5366004612809565b6114f4565b6102416103d8366004612809565b61156a565b5f5f5f7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000187875f01518860200151885f01515f6002811061042057610420612d5e565b60200201518951600160200201518a602001515f6002811061044457610444612d5e565b60200201518b6020015160016002811061046057610460612d5e565b602090810291909101518c518d8301516040516104bd9a99989796959401988952602089019790975260408801959095526060870193909352608086019190915260a085015260c084015260e08301526101008201526101200190565b604051602081830303815290604052805190602001205f1c6104df9190612d72565b90506105516104f86104f1888461157b565b86906115eb565b61050061165f565b610547610538856105326040805180820182525f80825260209182015281518083019092526001825260029082015290565b9061157b565b6105418c61171f565b906115eb565b886201d4c06117a9565b909890975095505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105bb573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105df9190612d91565b6001600160a01b0316336001600160a01b03161461061057604051637070f3b160e11b815260040160405180910390fd5b610619816119bd565b50565b610624611a03565b61061981611a5d565b603254610100900460ff1661065d5760405162461bcd60e51b815260040161065490612dac565b60405180910390fd5b610665611b04565b61066e816114f4565b61067783611b33565b61068082611a5d565b505050565b60408051808201909152606080825260208201525f8481036106b95760405162f8202d60e51b815260040160405180910390fd5b604083015151851480156106d1575060a08301515185145b80156106e1575060c08301515185145b80156106f1575060e08301515185145b61070e576040516343714afd60e01b815260040160405180910390fd5b8251516020840151511461073557604051635f832f4160e01b815260040160405180910390fd5b4363ffffffff168463ffffffff161061076157604051634b874f4560e01b815260040160405180910390fd5b6040805180820182525f808252602080830191909152825180840190935260608084529083015290866001600160401b038111156107a1576107a1612613565b6040519080825280602002602001820160405280156107ca578160200160208202803683370190505b506020820152866001600160401b038111156107e8576107e8612613565b604051908082528060200260200182016040528015610811578160200160208202803683370190505b50815260408051808201909152606080825260208201528560200151516001600160401b0381111561084557610845612613565b60405190808252806020026020018201604052801561086e578160200160208202803683370190505b5081526020860151516001600160401b0381111561088e5761088e612613565b6040519080825280602002602001820160405280156108b7578160200160208202803683370190505b5081602001819052505f6109858a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505060408051639aa1653d60e01b815290516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169350639aa1653d925060048083019260209291908290030181865afa15801561095c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109809190612df7565b611be4565b90505f5b876020015151811015610bcb576109cd886020015182815181106109af576109af612d5e565b602002602001015180515f9081526020918201519091526040902090565b836020015182815181106109e3576109e3612d5e565b60209081029190910101528015610a5f576020830151610a04600183612e2b565b81518110610a1457610a14612d5e565b60200260200101515f1c83602001518281518110610a3457610a34612d5e565b60200260200101515f1c11610a5f57604051600162239afb60e21b0319815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166304ec635184602001518381518110610aa457610aa4612d5e565b60200260200101518b8b5f01518581518110610ac257610ac2612d5e565b60200260200101516040518463ffffffff1660e01b8152600401610aff9392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015610b1a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b3e9190612e3e565b6001600160c01b0316835f01518281518110610b5c57610b5c612d5e565b602002602001018181525050610bc16104f1610b9584865f01518581518110610b8757610b87612d5e565b602002602001015116611c21565b8a602001518481518110610bab57610bab612d5e565b6020026020010151611c4b90919063ffffffff16565b9450600101610989565b5050610bd683611d0d565b5f805491945060ff9091169081610bed575f610c6d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c448feb86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c49573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c6d9190612e64565b63ffffffff1690505f5b8a8110156111dd578215610d58578963ffffffff16827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663249a0c428f8f86818110610cce57610cce612d5e565b60405160e085901b6001600160e01b031916815292013560f81c600483015250602401602060405180830381865afa158015610d0c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d309190612e7f565b610d3a9190612e96565b11610d585760405163affc5edb60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166368bccaac8d8d84818110610d9957610d99612d5e565b9050013560f81c60f81b60f81c8c8c60a001518581518110610dbd57610dbd612d5e565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa158015610e17573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e3b9190612ea9565b6001600160401b031916610e5e8a6040015183815181106109af576109af612d5e565b67ffffffffffffffff191614610e875760405163e1310aed60e01b815260040160405180910390fd5b610eb789604001518281518110610ea057610ea0612d5e565b6020026020010151876115eb90919063ffffffff16565b95507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c8294c568d8d84818110610efa57610efa612d5e565b9050013560f81c60f81b60f81c8c8c60c001518581518110610f1e57610f1e612d5e565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa158015610f78573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f9c9190612ed1565b85602001518281518110610fb257610fb2612d5e565b6001600160601b03909216602092830291909101820152850151805182908110610fde57610fde612d5e565b6020026020010151855f01518281518110610ffb57610ffb612d5e565b6001600160601b03909216602092830291909101909101525f805b8a60200151518110156111d357611069865f0151828151811061103b5761103b612d5e565b60200260200101518f8f8681811061105557611055612d5e565b600192013560f81c9290921c811614919050565b156111cb577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f2be94ae8f8f868181106110af576110af612d5e565b9050013560f81c60f81b60f81c8e896020015185815181106110d3576110d3612d5e565b60200260200101518f60e0015188815181106110f1576110f1612d5e565b6020026020010151878151811061110a5761110a612d5e565b60209081029190910101516040516001600160e01b031960e087901b16815260ff909416600485015263ffffffff92831660248501526044840191909152166064820152608401602060405180830381865afa15801561116c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111909190612ed1565b87518051859081106111a4576111a4612d5e565b602002602001018181516111b89190612ef7565b6001600160601b03169052506001909101905b600101611016565b5050600101610c77565b5050505f5f6111f68c868a606001518b608001516103dd565b9150915081611218576040516367988d3360e01b815260040160405180910390fd5b806112365760405163ab1b236b60e01b815260040160405180910390fd5b50505f878260200151604051602001611250929190612f16565b60408051808303601f190181529190528051602090910120929b929a509198505050505050505050565b611282611a03565b61128b5f611d9e565b565b609a546001600160a01b031633146112b75760405162461bcd60e51b815260040161065490612f5c565b6112c2838383611def565b5f6112d06040850185612f93565b8101906112dd9190612fd5565b90505f6112ed6020850185612f93565b8101906112fa9190612fd5565b90505f6113078380612fec565b905080821461133a57604051630cf92dd560e01b8152600481018490526024810183905260448101829052606401610654565b60408051848152602081018490527fa7a707dd7f4ca00fe1afcd34df7ebb6c47f23880c34d254cc312e5c41e3974c5910160405180910390a1505050505050565b609b546001600160a01b031633146113a55760405162461bcd60e51b815260040161065490613003565b5f846040516020016113b991815260200190565b60405160208183030381529060405290506113d681858585612218565b5050505050565b603254610100900460ff16158080156113fd5750603254600160ff909116105b806114175750303b158015611417575060325460ff166001145b61147a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610654565b6032805460ff19166001179055801561149d576032805461ff0019166101001790555b6114a884848461062d565b80156114ee576032805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b6114fc611a03565b6001600160a01b0381166115615760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610654565b61061981611d9e565b611572611a03565b61061981611b33565b604080518082019091525f8082526020820152611596612539565b835181526020808501519082015260408082018490525f908360608460076107d05a03fa905080806115c457fe5b50806115e357604051632319df1960e11b815260040160405180910390fd5b505092915050565b604080518082019091525f8082526020820152611606612557565b835181526020808501518183015283516040808401919091529084015160608301525f908360808460066107d05a03fa9050808061164057fe5b50806115e35760405163d4b68fd760e01b815260040160405180910390fd5b611667612575565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b604080518082019091525f80825260208201525f808061174c5f5160206132de5f395f51905f5286612d72565b90505b61175881612359565b90935091505f5160206132de5f395f51905f528283098303611790576040805180820190915290815260208101919091529392505050565b5f5160206132de5f395f51905f5260018208905061174f565b6040805180820182528681526020808201869052825180840190935286835282018490525f918291906117da61259a565b5f5b6002811015611991575f6117f1826006612fec565b905084826002811061180557611805612d5e565b60200201515183611816835f612e96565b600c811061182657611826612d5e565b602002015284826002811061183d5761183d612d5e565b602002015160200151838260016118549190612e96565b600c811061186457611864612d5e565b602002015283826002811061187b5761187b612d5e565b602002015151518361188e836002612e96565b600c811061189e5761189e612d5e565b60200201528382600281106118b5576118b5612d5e565b60200201515160016020020151836118ce836003612e96565b600c81106118de576118de612d5e565b60200201528382600281106118f5576118f5612d5e565b6020020151602001515f6002811061190f5761190f612d5e565b602002015183611920836004612e96565b600c811061193057611930612d5e565b602002015283826002811061194757611947612d5e565b60200201516020015160016002811061196257611962612d5e565b602002015183611973836005612e96565b600c811061198357611983612d5e565b6020020152506001016117dc565b5061199a6125b9565b5f6020826101808560088cfa9151919c9115159b50909950505050505050505050565b5f805460ff19168215159081179091556040519081527f40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc9060200160405180910390a150565b6065546001600160a01b0316331461128b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610654565b6001600160a01b038116611ab35760405162461bcd60e51b815260206004820181905260248201527f47656e657261746f722063616e6e6f74206265207a65726f20616464726573736044820152606401610654565b609b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f0ddfab8a635d71f15d72e2d2dff55d32119d13270d2ea4c3dc0043b66c2c476b905f90a35050565b603254610100900460ff16611b2b5760405162461bcd60e51b815260040161065490612dac565b61128b6123d5565b6001600160a01b038116611b935760405162461bcd60e51b815260206004820152602160248201527f41676772656761746f722063616e6e6f74206265207a65726f206164647265736044820152607360f81b6064820152608401610654565b609a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f89baabef7dfd0683c0ac16fd2a8431c51b49fbe654c3f7b5ef19763e2ccd88f2905f90a35050565b5f5f611bef84612405565b9050808360ff166001901b11611c185760405163ca95733360e01b815260040160405180910390fd5b90505b92915050565b5f805b8215611c1b57611c35600184612e2b565b9092169180611c4381613044565b915050611c24565b604080518082019091525f80825260208201526102008261ffff1610611c87576040516001623b158360e11b0319815260040160405180910390fd5b8161ffff16600103611c9a575081611c1b565b604080518082019091525f8082526020820181905284906001905b8161ffff168661ffff1610611d0257600161ffff871660ff83161c81169003611ce557611ce284846115eb565b93505b611cef83846115eb565b92506201fffe600192831b169101611cb5565b509195945050505050565b604080518082019091525f80825260208201528151158015611d3157506020820151155b15611d4e575050604080518082019091525f808252602082015290565b6040518060400160405280835f015181526020015f5160206132de5f395f51905f528460200151611d7f9190612d72565b611d96905f5160206132de5f395f51905f52612e2b565b905292915050565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b609a546001600160a01b03163314611e195760405162461bcd60e51b815260040161065490612f5c565b5f611e2760208501856127bb565b9050365f611e386060870187612f93565b90925090505f611e4e60408801602089016127bb565b905060985f611e6060208901896127bb565b63ffffffff1663ffffffff1681526020019081526020015f205487604051602001611e8b91906130cd565b6040516020818303038152906040528051906020012014611f145760405162461bcd60e51b815260206004820152603d60248201527f537570706c696564207461736b20646f6573206e6f74206d617463682074686560448201527f206f6e65207265636f7264656420696e2074686520636f6e74726163740000006064820152608401610654565b5f609981611f2560208a018a6127bb565b63ffffffff1663ffffffff1681526020019081526020015f205414611fa15760405162461bcd60e51b815260206004820152602c60248201527f41676772656761746f722068617320616c726561647920726573706f6e64656460448201526b20746f20746865207461736b60a01b6064820152608401610654565b611fcb7f000000000000000000000000000000000000000000000000000000000000000085613158565b63ffffffff164363ffffffff1611156120305760405162461bcd60e51b815260206004820152602160248201527f41676772656761746f722068617320726573706f6e64656420746f6f206c61746044820152606560f81b6064820152608401610654565b5f8660405160200161204291906131b3565b6040516020818303038152906040528051906020012090505f5f6120698387878a8c610685565b90925090505f5b8581101561215d578460ff168360200151828151811061209257612092612d5e565b60200260200101516120a491906131cc565b6001600160601b03166064845f015183815181106120c4576120c4612d5e565b60200260200101516001600160601b03166120df9190612fec565b1015612155576040805162461bcd60e51b81526020600482015260248101919091527f5369676e61746f7269657320646f206e6f74206f776e206174206c656173742060448201527f7468726573686f6c642070657263656e74616765206f6620612071756f72756d6064820152608401610654565b600101612070565b5060408051808201825263ffffffff4316815260208082018490529151909161218a918c918491016131f5565b6040516020818303038152906040528051906020012060995f8c5f0160208101906121b591906127bb565b63ffffffff1663ffffffff1681526020019081526020015f20819055507f9b96c981c7c70a9f1702abb044782746c11d090f58ea34b12daf2cc53cf8ab5f8a826040516122039291906131f5565b60405180910390a15050505050505050505050565b609b546001600160a01b031633146122425760405162461bcd60e51b815260040161065490613003565b6040805160808101825260608082015280820186905263ffffffff438116825285166020808301919091528251601f850182900482028101820190935283835290919084908490819084018382808284375f9201919091525050505060608201526040516122b490829060200161326a565b60408051601f1981840301815282825280516020918201206097805463ffffffff9081165f908152609890945293909220555416907fba37832bdd21742b86a633043b923a9aa978f1cfb2b274c6661eb573cf092bf09061231690849061326a565b60405180910390a26097805463ffffffff16905f612333836132c2565b91906101000a81548163ffffffff021916908363ffffffff160217905550505050505050565b5f80805f5160206132de5f395f51905f5260035f5160206132de5f395f51905f52865f5160206132de5f395f51905f52888909090890505f6123c9827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f525f5160206132de5f395f51905f526124c0565b91959194509092505050565b603254610100900460ff166123fc5760405162461bcd60e51b815260040161065490612dac565b61128b33611d9e565b5f6101008251111561242a57604051637da54e4760e11b815260040160405180910390fd5b81515f0361243957505f919050565b5f5f835f8151811061244d5761244d612d5e565b0160200151600160f89190911c81901b92505b84518110156124b75784818151811061247b5761247b612d5e565b0160200151600160f89190911c1b91508282116124ab57604051631019106960e31b815260040160405180910390fd5b91811791600101612460565b50909392505050565b5f5f6124ca6125b9565b6124d26125d7565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa9250828061250f57fe5b508261252e5760405163d51edae360e01b815260040160405180910390fd5b505195945050505050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806125886125f5565b81526020016125956125f5565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b038111828210171561264957612649612613565b60405290565b60405161010081016001600160401b038111828210171561264957612649612613565b604051601f8201601f191681016001600160401b038111828210171561269a5761269a612613565b604052919050565b5f604082840312156126b2575f5ffd5b6126ba612627565b823581526020928301359281019290925250919050565b5f82601f8301126126e0575f5ffd5b6126e8612627565b8060408401858111156126f9575f5ffd5b845b818110156127135780358452602093840193016126fb565b509095945050505050565b5f6080828403121561272e575f5ffd5b612736612627565b905061274283836126d1565b815261275183604084016126d1565b602082015292915050565b5f5f5f5f6101208587031215612770575f5ffd5b8435935061278186602087016126a2565b9250612790866060870161271e565b915061279f8660e087016126a2565b905092959194509250565b63ffffffff81168114610619575f5ffd5b5f602082840312156127cb575f5ffd5b8135611c18816127aa565b5f602082840312156127e6575f5ffd5b81358015158114611c18575f5ffd5b6001600160a01b0381168114610619575f5ffd5b5f60208284031215612819575f5ffd5b8135611c18816127f5565b5f5f5f60608486031215612836575f5ffd5b8335612841816127f5565b92506020840135612851816127f5565b91506040840135612861816127f5565b809150509250925092565b5f5f83601f84011261287c575f5ffd5b5081356001600160401b03811115612892575f5ffd5b6020830191508360208285010111156128a9575f5ffd5b9250929050565b5f6001600160401b038211156128c8576128c8612613565b5060051b60200190565b5f82601f8301126128e1575f5ffd5b81356128f46128ef826128b0565b612672565b8082825260208201915060208360051b860101925085831115612915575f5ffd5b602085015b8381101561293b57803561292d816127aa565b83526020928301920161291a565b5095945050505050565b5f82601f830112612954575f5ffd5b81356129626128ef826128b0565b8082825260208201915060208360061b860101925085831115612983575f5ffd5b602085015b8381101561293b5761299a87826126a2565b8352602090920191604001612988565b5f82601f8301126129b9575f5ffd5b81356129c76128ef826128b0565b8082825260208201915060208360051b8601019250858311156129e8575f5ffd5b602085015b8381101561293b5780356001600160401b03811115612a0a575f5ffd5b612a19886020838a01016128d2565b845250602092830192016129ed565b5f6101808284031215612a39575f5ffd5b612a4161264f565b905081356001600160401b03811115612a58575f5ffd5b612a64848285016128d2565b82525060208201356001600160401b03811115612a7f575f5ffd5b612a8b84828501612945565b60208301525060408201356001600160401b03811115612aa9575f5ffd5b612ab584828501612945565b604083015250612ac8836060840161271e565b6060820152612ada8360e084016126a2565b60808201526101208201356001600160401b03811115612af8575f5ffd5b612b04848285016128d2565b60a0830152506101408201356001600160401b03811115612b23575f5ffd5b612b2f848285016128d2565b60c0830152506101608201356001600160401b03811115612b4e575f5ffd5b612b5a848285016129aa565b60e08301525092915050565b5f5f5f5f5f60808688031215612b7a575f5ffd5b8535945060208601356001600160401b03811115612b96575f5ffd5b612ba28882890161286c565b9095509350506040860135612bb6816127aa565b915060608601356001600160401b03811115612bd0575f5ffd5b612bdc88828901612a28565b9150509295509295909350565b5f8151808452602084019350602083015f5b82811015612c225781516001600160601b0316865260209586019590910190600101612bfb565b5093949350505050565b604081525f8351604080840152612c466080840182612be9565b90506020850151603f19848303016060850152612c638282612be9565b925050508260208301529392505050565b5f5f5f60608486031215612c86575f5ffd5b83356001600160401b03811115612c9b575f5ffd5b840160808187031215612cac575f5ffd5b925060208401356001600160401b03811115612cc6575f5ffd5b840160408187031215612cd7575f5ffd5b915060408401356001600160401b03811115612cf1575f5ffd5b612cfd86828701612a28565b9150509250925092565b5f5f5f5f60608587031215612d1a575f5ffd5b843593506020850135612d2c816127aa565b925060408501356001600160401b03811115612d46575f5ffd5b612d528782880161286c565b95989497509550505050565b634e487b7160e01b5f52603260045260245ffd5b5f82612d8c57634e487b7160e01b5f52601260045260245ffd5b500690565b5f60208284031215612da1575f5ffd5b8151611c18816127f5565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f60208284031215612e07575f5ffd5b815160ff81168114611c18575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b81810381811115611c1b57611c1b612e17565b5f60208284031215612e4e575f5ffd5b81516001600160c01b0381168114611c18575f5ffd5b5f60208284031215612e74575f5ffd5b8151611c18816127aa565b5f60208284031215612e8f575f5ffd5b5051919050565b80820180821115611c1b57611c1b612e17565b5f60208284031215612eb9575f5ffd5b815167ffffffffffffffff1981168114611c18575f5ffd5b5f60208284031215612ee1575f5ffd5b81516001600160601b0381168114611c18575f5ffd5b6001600160601b038281168282160390811115611c1b57611c1b612e17565b63ffffffff60e01b8360e01b1681525f600482018351602085015f5b82811015612f50578151845260209384019390910190600101612f32565b50919695505050505050565b6020808252601d908201527f41676772656761746f72206d757374206265207468652063616c6c6572000000604082015260600190565b5f5f8335601e19843603018112612fa8575f5ffd5b8301803591506001600160401b03821115612fc1575f5ffd5b6020019150368190038213156128a9575f5ffd5b5f60208284031215612fe5575f5ffd5b5035919050565b8082028115828204841417611c1b57611c1b612e17565b60208082526021908201527f5461736b2067656e657261746f72206d757374206265207468652063616c6c656040820152603960f91b606082015260800190565b5f61ffff821661ffff810361305b5761305b612e17565b60010192915050565b5f5f8335601e19843603018112613079575f5ffd5b83016020810192503590506001600160401b03811115613097575f5ffd5b8036038213156128a9575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b602081525f82356130dd816127aa565b63ffffffff811660208401525060208301356130f8816127aa565b63ffffffff81166040840152506131126040840184613064565b6080606085015261312760a0850182846130a5565b9150506131376060850185613064565b848303601f1901608086015261314e8382846130a5565b9695505050505050565b63ffffffff8181168382160190811115611c1b57611c1b612e17565b5f8135613180816127aa565b63ffffffff1683526131956020830183613064565b604060208601526131aa6040860182846130a5565b95945050505050565b602081525f6131c56020830184613174565b9392505050565b6001600160601b0381811683821602908116908181146131ee576131ee612e17565b5092915050565b606081525f6132076060830185613174565b905063ffffffff8351166020830152602083015160408301529392505050565b5f81518084525f5b8181101561324b5760208185018101518683018201520161322f565b505f602082860101526020601f19601f83011685010191505092915050565b6020815263ffffffff825116602082015263ffffffff60208301511660408201525f6040830151608060608401526132a560a0840182613227565b90506060840151601f198483030160808501526131aa8282613227565b5f63ffffffff821663ffffffff810361305b5761305b612e1756fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a26469706673582212208e0fedc4acb8326e5ce15c29ce2e046801bf1ecc96837850d79b9a52a0163aa564736f6c634300081b0033
3409    /// ```
3410    #[rustfmt::skip]
3411    #[allow(clippy::all)]
3412    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
3413        b"`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\x01HW_5`\xE0\x1C\x80cn\xFBF6\x11a\0\xBFW\x80c\xB9\x8D\t\x08\x11a\0yW\x80c\xB9\x8D\t\x08\x14a\x03NW\x80c\xBB\xCE\xE4n\x14a\x03jW\x80c\xC0\xC5;\x8B\x14a\x03}W\x80c\xDF\\\xF7#\x14a\x03\x90W\x80c\xF2\xFD\xE3\x8B\x14a\x03\xB7W\x80c\xF9\x12\n\xF6\x14a\x03\xCAW__\xFD[\x80cn\xFBF6\x14a\x02\xDEW\x80cqP\x18\xA6\x14a\x02\xFFW\x80cz\xFA\x1E\xED\x14a\x03\x07W\x80c~\x8E\xF1\xBE\x14a\x03\x1AW\x80c\x8B\0\xCE|\x14a\x03-W\x80c\x8D\xA5\xCB[\x14a\x03=W__\xFD[\x80cAl~^\x11a\x01\x10W\x80cAl~^\x14a\x02.W\x80cJ|~K\x14a\x02CW\x80cY\x19\xD0~\x14a\x02VW\x80c]\xF4YF\x14a\x02iW\x80ch0H5\x14a\x02\x90W\x80cm\x14\xA9\x87\x14a\x02\xB7W__\xFD[\x80c\x17\x1F\x1D[\x14a\x01LW\x80c\x1A\xD41\x89\x14a\x01{W\x80c$Z{\xFC\x14a\x01\xB7W\x80c,\xB2#\xD5\x14a\x01\xE2W\x80c-\x89\xF6\xFC\x14a\x02\x0FW[__\xFD[a\x01_a\x01Z6`\x04a'\\V[a\x03\xDDV[`@\x80Q\x92\x15\x15\x83R\x90\x15\x15` \x83\x01R\x01[`@Q\x80\x91\x03\x90\xF3[a\x01\xA2\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\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x01rV[`\x9ATa\x01\xCA\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01rV[a\x02\x01a\x01\xF06`\x04a'\xBBV[`\x99` R_\x90\x81R`@\x90 T\x81V[`@Q\x90\x81R` \x01a\x01rV[a\x02\x01a\x02\x1D6`\x04a'\xBBV[`\x98` R_\x90\x81R`@\x90 T\x81V[a\x02Aa\x02<6`\x04a'\xD6V[a\x05_V[\0[a\x02Aa\x02Q6`\x04a(\tV[a\x06\x1CV[a\x02Aa\x02d6`\x04a($V[a\x06-V[a\x01\xCA\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\x81V[a\x01\xCA\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\x81V[a\x01\xCA\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\x81V[a\x02\xF1a\x02\xEC6`\x04a+fV[a\x06\x85V[`@Qa\x01r\x92\x91\x90a,,V[a\x02Aa\x12zV[`\x9BTa\x01\xCA\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x02Aa\x03(6`\x04a,tV[a\x12\x8DV[`\x97Ta\x01\xA2\x90c\xFF\xFF\xFF\xFF\x16\x81V[`eT`\x01`\x01`\xA0\x1B\x03\x16a\x01\xCAV[_Ta\x03Z\x90`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\x01rV[a\x02Aa\x03x6`\x04a-\x07V[a\x13{V[a\x02Aa\x03\x8B6`\x04a($V[a\x13\xDDV[a\x01\xCA\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\x81V[a\x02Aa\x03\xC56`\x04a(\tV[a\x14\xF4V[a\x02Aa\x03\xD86`\x04a(\tV[a\x15jV[___\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x87\x87_\x01Q\x88` \x01Q\x88_\x01Q_`\x02\x81\x10a\x04 Wa\x04 a-^V[` \x02\x01Q\x89Q`\x01` \x02\x01Q\x8A` \x01Q_`\x02\x81\x10a\x04DWa\x04Da-^V[` \x02\x01Q\x8B` \x01Q`\x01`\x02\x81\x10a\x04`Wa\x04`a-^V[` \x90\x81\x02\x91\x90\x91\x01Q\x8CQ\x8D\x83\x01Q`@Qa\x04\xBD\x9A\x99\x98\x97\x96\x95\x94\x01\x98\x89R` \x89\x01\x97\x90\x97R`@\x88\x01\x95\x90\x95R``\x87\x01\x93\x90\x93R`\x80\x86\x01\x91\x90\x91R`\xA0\x85\x01R`\xC0\x84\x01R`\xE0\x83\x01Ra\x01\0\x82\x01Ra\x01 \x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 _\x1Ca\x04\xDF\x91\x90a-rV[\x90Pa\x05Qa\x04\xF8a\x04\xF1\x88\x84a\x15{V[\x86\x90a\x15\xEBV[a\x05\0a\x16_V[a\x05Ga\x058\x85a\x052`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92R`\x01\x82R`\x02\x90\x82\x01R\x90V[\x90a\x15{V[a\x05A\x8Ca\x17\x1FV[\x90a\x15\xEBV[\x88b\x01\xD4\xC0a\x17\xA9V[\x90\x98\x90\x97P\x95PPPPPPV[\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\x16c\x8D\xA5\xCB[`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05\xBBW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xDF\x91\x90a-\x91V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x06\x10W`@Qcpp\xF3\xB1`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x06\x19\x81a\x19\xBDV[PV[a\x06$a\x1A\x03V[a\x06\x19\x81a\x1A]V[`2Ta\x01\0\x90\x04`\xFF\x16a\x06]W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06T\x90a-\xACV[`@Q\x80\x91\x03\x90\xFD[a\x06ea\x1B\x04V[a\x06n\x81a\x14\xF4V[a\x06w\x83a\x1B3V[a\x06\x80\x82a\x1A]V[PPPV[`@\x80Q\x80\x82\x01\x90\x91R``\x80\x82R` \x82\x01R_\x84\x81\x03a\x06\xB9W`@Qb\xF8 -`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x83\x01QQ\x85\x14\x80\x15a\x06\xD1WP`\xA0\x83\x01QQ\x85\x14[\x80\x15a\x06\xE1WP`\xC0\x83\x01QQ\x85\x14[\x80\x15a\x06\xF1WP`\xE0\x83\x01QQ\x85\x14[a\x07\x0EW`@QcCqJ\xFD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82QQ` \x84\x01QQ\x14a\x075W`@Qc_\x83/A`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[Cc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10a\x07aW`@QcK\x87OE`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x80\x83\x01\x91\x90\x91R\x82Q\x80\x84\x01\x90\x93R``\x80\x84R\x90\x83\x01R\x90\x86`\x01`\x01`@\x1B\x03\x81\x11\x15a\x07\xA1Wa\x07\xA1a&\x13V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07\xCAW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P` \x82\x01R\x86`\x01`\x01`@\x1B\x03\x81\x11\x15a\x07\xE8Wa\x07\xE8a&\x13V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x08\x11W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81R`@\x80Q\x80\x82\x01\x90\x91R``\x80\x82R` \x82\x01R\x85` \x01QQ`\x01`\x01`@\x1B\x03\x81\x11\x15a\x08EWa\x08Ea&\x13V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x08nW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81R` \x86\x01QQ`\x01`\x01`@\x1B\x03\x81\x11\x15a\x08\x8EWa\x08\x8Ea&\x13V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x08\xB7W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81` \x01\x81\x90RP_a\t\x85\x8A\x8A\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RPP`@\x80Qc\x9A\xA1e=`\xE0\x1B\x81R\x90Q`\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\x93Pc\x9A\xA1e=\x92P`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\t\\W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\x80\x91\x90a-\xF7V[a\x1B\xE4V[\x90P_[\x87` \x01QQ\x81\x10\x15a\x0B\xCBWa\t\xCD\x88` \x01Q\x82\x81Q\x81\x10a\t\xAFWa\t\xAFa-^V[` \x02` \x01\x01Q\x80Q_\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[\x83` \x01Q\x82\x81Q\x81\x10a\t\xE3Wa\t\xE3a-^V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80\x15a\n_W` \x83\x01Qa\n\x04`\x01\x83a.+V[\x81Q\x81\x10a\n\x14Wa\n\x14a-^V[` \x02` \x01\x01Q_\x1C\x83` \x01Q\x82\x81Q\x81\x10a\n4Wa\n4a-^V[` \x02` \x01\x01Q_\x1C\x11a\n_W`@Q`\x01b#\x9A\xFB`\xE2\x1B\x03\x19\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\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\x16c\x04\xECcQ\x84` \x01Q\x83\x81Q\x81\x10a\n\xA4Wa\n\xA4a-^V[` \x02` \x01\x01Q\x8B\x8B_\x01Q\x85\x81Q\x81\x10a\n\xC2Wa\n\xC2a-^V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\n\xFF\x93\x92\x91\x90\x92\x83Rc\xFF\xFF\xFF\xFF\x91\x82\x16` \x84\x01R\x16`@\x82\x01R``\x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0B\x1AW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B>\x91\x90a.>V[`\x01`\x01`\xC0\x1B\x03\x16\x83_\x01Q\x82\x81Q\x81\x10a\x0B\\Wa\x0B\\a-^V[` \x02` \x01\x01\x81\x81RPPa\x0B\xC1a\x04\xF1a\x0B\x95\x84\x86_\x01Q\x85\x81Q\x81\x10a\x0B\x87Wa\x0B\x87a-^V[` \x02` \x01\x01Q\x16a\x1C!V[\x8A` \x01Q\x84\x81Q\x81\x10a\x0B\xABWa\x0B\xABa-^V[` \x02` \x01\x01Qa\x1CK\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x94P`\x01\x01a\t\x89V[PPa\x0B\xD6\x83a\x1D\rV[_\x80T\x91\x94P`\xFF\x90\x91\x16\x90\x81a\x0B\xEDW_a\x0CmV[\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\x16c\xC4H\xFE\xB8`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0CIW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0Cm\x91\x90a.dV[c\xFF\xFF\xFF\xFF\x16\x90P_[\x8A\x81\x10\x15a\x11\xDDW\x82\x15a\rXW\x89c\xFF\xFF\xFF\xFF\x16\x82\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\x16c$\x9A\x0CB\x8F\x8F\x86\x81\x81\x10a\x0C\xCEWa\x0C\xCEa-^V[`@Q`\xE0\x85\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R\x92\x015`\xF8\x1C`\x04\x83\x01RP`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\r\x0CW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r0\x91\x90a.\x7FV[a\r:\x91\x90a.\x96V[\x11a\rXW`@Qc\xAF\xFC^\xDB`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\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\x16ch\xBC\xCA\xAC\x8D\x8D\x84\x81\x81\x10a\r\x99Wa\r\x99a-^V[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x8C\x8C`\xA0\x01Q\x85\x81Q\x81\x10a\r\xBDWa\r\xBDa-^V[` \x90\x81\x02\x91\x90\x91\x01\x01Q`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x86\x90\x1B\x16\x81R`\xFF\x90\x93\x16`\x04\x84\x01Rc\xFF\xFF\xFF\xFF\x91\x82\x16`$\x84\x01R\x16`D\x82\x01R`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\x17W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E;\x91\x90a.\xA9V[`\x01`\x01`@\x1B\x03\x19\x16a\x0E^\x8A`@\x01Q\x83\x81Q\x81\x10a\t\xAFWa\t\xAFa-^V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x14a\x0E\x87W`@Qc\xE11\n\xED`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0E\xB7\x89`@\x01Q\x82\x81Q\x81\x10a\x0E\xA0Wa\x0E\xA0a-^V[` \x02` \x01\x01Q\x87a\x15\xEB\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x95P\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\x16c\xC8)LV\x8D\x8D\x84\x81\x81\x10a\x0E\xFAWa\x0E\xFAa-^V[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x8C\x8C`\xC0\x01Q\x85\x81Q\x81\x10a\x0F\x1EWa\x0F\x1Ea-^V[` \x90\x81\x02\x91\x90\x91\x01\x01Q`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x86\x90\x1B\x16\x81R`\xFF\x90\x93\x16`\x04\x84\x01Rc\xFF\xFF\xFF\xFF\x91\x82\x16`$\x84\x01R\x16`D\x82\x01R`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0FxW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\x9C\x91\x90a.\xD1V[\x85` \x01Q\x82\x81Q\x81\x10a\x0F\xB2Wa\x0F\xB2a-^V[`\x01`\x01``\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x82\x01R\x85\x01Q\x80Q\x82\x90\x81\x10a\x0F\xDEWa\x0F\xDEa-^V[` \x02` \x01\x01Q\x85_\x01Q\x82\x81Q\x81\x10a\x0F\xFBWa\x0F\xFBa-^V[`\x01`\x01``\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R_\x80[\x8A` \x01QQ\x81\x10\x15a\x11\xD3Wa\x10i\x86_\x01Q\x82\x81Q\x81\x10a\x10;Wa\x10;a-^V[` \x02` \x01\x01Q\x8F\x8F\x86\x81\x81\x10a\x10UWa\x10Ua-^V[`\x01\x92\x015`\xF8\x1C\x92\x90\x92\x1C\x81\x16\x14\x91\x90PV[\x15a\x11\xCBW\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\x16c\xF2\xBE\x94\xAE\x8F\x8F\x86\x81\x81\x10a\x10\xAFWa\x10\xAFa-^V[\x90P\x015`\xF8\x1C`\xF8\x1B`\xF8\x1C\x8E\x89` \x01Q\x85\x81Q\x81\x10a\x10\xD3Wa\x10\xD3a-^V[` \x02` \x01\x01Q\x8F`\xE0\x01Q\x88\x81Q\x81\x10a\x10\xF1Wa\x10\xF1a-^V[` \x02` \x01\x01Q\x87\x81Q\x81\x10a\x11\nWa\x11\na-^V[` \x90\x81\x02\x91\x90\x91\x01\x01Q`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x87\x90\x1B\x16\x81R`\xFF\x90\x94\x16`\x04\x85\x01Rc\xFF\xFF\xFF\xFF\x92\x83\x16`$\x85\x01R`D\x84\x01\x91\x90\x91R\x16`d\x82\x01R`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11lW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11\x90\x91\x90a.\xD1V[\x87Q\x80Q\x85\x90\x81\x10a\x11\xA4Wa\x11\xA4a-^V[` \x02` \x01\x01\x81\x81Qa\x11\xB8\x91\x90a.\xF7V[`\x01`\x01``\x1B\x03\x16\x90RP`\x01\x90\x91\x01\x90[`\x01\x01a\x10\x16V[PP`\x01\x01a\x0CwV[PPP__a\x11\xF6\x8C\x86\x8A``\x01Q\x8B`\x80\x01Qa\x03\xDDV[\x91P\x91P\x81a\x12\x18W`@Qcg\x98\x8D3`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80a\x126W`@Qc\xAB\x1B#k`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PP_\x87\x82` \x01Q`@Q` \x01a\x12P\x92\x91\x90a/\x16V[`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x91\x90R\x80Q` \x90\x91\x01 \x92\x9B\x92\x9AP\x91\x98PPPPPPPPPV[a\x12\x82a\x1A\x03V[a\x12\x8B_a\x1D\x9EV[V[`\x9AT`\x01`\x01`\xA0\x1B\x03\x163\x14a\x12\xB7W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06T\x90a/\\V[a\x12\xC2\x83\x83\x83a\x1D\xEFV[_a\x12\xD0`@\x85\x01\x85a/\x93V[\x81\x01\x90a\x12\xDD\x91\x90a/\xD5V[\x90P_a\x12\xED` \x85\x01\x85a/\x93V[\x81\x01\x90a\x12\xFA\x91\x90a/\xD5V[\x90P_a\x13\x07\x83\x80a/\xECV[\x90P\x80\x82\x14a\x13:W`@Qc\x0C\xF9-\xD5`\xE0\x1B\x81R`\x04\x81\x01\x84\x90R`$\x81\x01\x83\x90R`D\x81\x01\x82\x90R`d\x01a\x06TV[`@\x80Q\x84\x81R` \x81\x01\x84\x90R\x7F\xA7\xA7\x07\xDD\x7FL\xA0\x0F\xE1\xAF\xCD4\xDF~\xBBlG\xF28\x80\xC3M%L\xC3\x12\xE5\xC4\x1E9t\xC5\x91\x01`@Q\x80\x91\x03\x90\xA1PPPPPPV[`\x9BT`\x01`\x01`\xA0\x1B\x03\x163\x14a\x13\xA5W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06T\x90a0\x03V[_\x84`@Q` \x01a\x13\xB9\x91\x81R` \x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa\x13\xD6\x81\x85\x85\x85a\"\x18V[PPPPPV[`2Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x13\xFDWP`2T`\x01`\xFF\x90\x91\x16\x10[\x80a\x14\x17WP0;\x15\x80\x15a\x14\x17WP`2T`\xFF\x16`\x01\x14[a\x14zW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`.`$\x82\x01R\x7FInitializable: contract is alrea`D\x82\x01Rm\x19\x1EH\x1A[\x9A]\x1AX[\x1A^\x99Y`\x92\x1B`d\x82\x01R`\x84\x01a\x06TV[`2\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x14\x9DW`2\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x14\xA8\x84\x84\x84a\x06-V[\x80\x15a\x14\xEEW`2\x80Ta\xFF\0\x19\x16\x90U`@Q`\x01\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPV[a\x14\xFCa\x1A\x03V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x15aW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x06TV[a\x06\x19\x81a\x1D\x9EV[a\x15ra\x1A\x03V[a\x06\x19\x81a\x1B3V[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x15\x96a%9V[\x83Q\x81R` \x80\x85\x01Q\x90\x82\x01R`@\x80\x82\x01\x84\x90R_\x90\x83``\x84`\x07a\x07\xD0Z\x03\xFA\x90P\x80\x80a\x15\xC4W\xFE[P\x80a\x15\xE3W`@Qc#\x19\xDF\x19`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PP\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x16\x06a%WV[\x83Q\x81R` \x80\x85\x01Q\x81\x83\x01R\x83Q`@\x80\x84\x01\x91\x90\x91R\x90\x84\x01Q``\x83\x01R_\x90\x83`\x80\x84`\x06a\x07\xD0Z\x03\xFA\x90P\x80\x80a\x16@W\xFE[P\x80a\x15\xE3W`@Qc\xD4\xB6\x8F\xD7`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x16ga%uV[P`@\x80Q`\x80\x81\x01\x82R\x7F\x19\x8E\x93\x93\x92\rH:r`\xBF\xB71\xFB]%\xF1\xAAI35\xA9\xE7\x12\x97\xE4\x85\xB7\xAE\xF3\x12\xC2\x81\x83\x01\x90\x81R\x7F\x18\0\xDE\xEF\x12\x1F\x1EvBj\0f^\\DygC\"\xD4\xF7^\xDA\xDDF\xDE\xBD\\\xD9\x92\xF6\xED``\x83\x01R\x81R\x81Q\x80\x83\x01\x90\x92R\x7F']\xC4\xA2\x88\xD1\xAF\xB3\xCB\xB1\xAC\t\x18u$\xC7\xDB69]\xF7\xBE;\x99\xE6s\xB1:\x07Ze\xEC\x82R\x7F\x1D\x9B\xEF\xCD\x05\xA52>m\xA4\xD45\xF3\xB6\x17\xCD\xB3\xAF\x83(\\-\xF7\x11\xEF9\xC0\x15q\x82\x7F\x9D` \x83\x81\x01\x91\x90\x91R\x81\x01\x91\x90\x91R\x90V[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R_\x80\x80a\x17L_Q` a2\xDE_9_Q\x90_R\x86a-rV[\x90P[a\x17X\x81a#YV[\x90\x93P\x91P_Q` a2\xDE_9_Q\x90_R\x82\x83\t\x83\x03a\x17\x90W`@\x80Q\x80\x82\x01\x90\x91R\x90\x81R` \x81\x01\x91\x90\x91R\x93\x92PPPV[_Q` a2\xDE_9_Q\x90_R`\x01\x82\x08\x90Pa\x17OV[`@\x80Q\x80\x82\x01\x82R\x86\x81R` \x80\x82\x01\x86\x90R\x82Q\x80\x84\x01\x90\x93R\x86\x83R\x82\x01\x84\x90R_\x91\x82\x91\x90a\x17\xDAa%\x9AV[_[`\x02\x81\x10\x15a\x19\x91W_a\x17\xF1\x82`\x06a/\xECV[\x90P\x84\x82`\x02\x81\x10a\x18\x05Wa\x18\x05a-^V[` \x02\x01QQ\x83a\x18\x16\x83_a.\x96V[`\x0C\x81\x10a\x18&Wa\x18&a-^V[` \x02\x01R\x84\x82`\x02\x81\x10a\x18=Wa\x18=a-^V[` \x02\x01Q` \x01Q\x83\x82`\x01a\x18T\x91\x90a.\x96V[`\x0C\x81\x10a\x18dWa\x18da-^V[` \x02\x01R\x83\x82`\x02\x81\x10a\x18{Wa\x18{a-^V[` \x02\x01QQQ\x83a\x18\x8E\x83`\x02a.\x96V[`\x0C\x81\x10a\x18\x9EWa\x18\x9Ea-^V[` \x02\x01R\x83\x82`\x02\x81\x10a\x18\xB5Wa\x18\xB5a-^V[` \x02\x01QQ`\x01` \x02\x01Q\x83a\x18\xCE\x83`\x03a.\x96V[`\x0C\x81\x10a\x18\xDEWa\x18\xDEa-^V[` \x02\x01R\x83\x82`\x02\x81\x10a\x18\xF5Wa\x18\xF5a-^V[` \x02\x01Q` \x01Q_`\x02\x81\x10a\x19\x0FWa\x19\x0Fa-^V[` \x02\x01Q\x83a\x19 \x83`\x04a.\x96V[`\x0C\x81\x10a\x190Wa\x190a-^V[` \x02\x01R\x83\x82`\x02\x81\x10a\x19GWa\x19Ga-^V[` \x02\x01Q` \x01Q`\x01`\x02\x81\x10a\x19bWa\x19ba-^V[` \x02\x01Q\x83a\x19s\x83`\x05a.\x96V[`\x0C\x81\x10a\x19\x83Wa\x19\x83a-^V[` \x02\x01RP`\x01\x01a\x17\xDCV[Pa\x19\x9Aa%\xB9V[_` \x82a\x01\x80\x85`\x08\x8C\xFA\x91Q\x91\x9C\x91\x15\x15\x9BP\x90\x99PPPPPPPPPPV[_\x80T`\xFF\x19\x16\x82\x15\x15\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F@\xE4\xED\x88\n)\xE0\xF6\xDD\xCE0tW\xFBu\xCD\xDFO\xEE\xF7\xD3\xEC\xB00\x1B\xFD\xF4\x97j\x0E-\xFC\x90` \x01`@Q\x80\x91\x03\x90\xA1PV[`eT`\x01`\x01`\xA0\x1B\x03\x163\x14a\x12\x8BW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x06TV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x1A\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FGenerator cannot be zero address`D\x82\x01R`d\x01a\x06TV[`\x9B\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x90\x93U`@Q\x91\x16\x91\x90\x82\x90\x7F\r\xDF\xAB\x8Ac]q\xF1]r\xE2\xD2\xDF\xF5]2\x11\x9D\x13'\r.\xA4\xC3\xDC\0C\xB6l,Gk\x90_\x90\xA3PPV[`2Ta\x01\0\x90\x04`\xFF\x16a\x1B+W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06T\x90a-\xACV[a\x12\x8Ba#\xD5V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x1B\x93W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`!`$\x82\x01R\x7FAggregator cannot be zero addres`D\x82\x01R`s`\xF8\x1B`d\x82\x01R`\x84\x01a\x06TV[`\x9A\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x90\x93U`@Q\x91\x16\x91\x90\x82\x90\x7F\x89\xBA\xAB\xEF}\xFD\x06\x83\xC0\xAC\x16\xFD*\x841\xC5\x1BI\xFB\xE6T\xC3\xF7\xB5\xEF\x19v>,\xCD\x88\xF2\x90_\x90\xA3PPV[__a\x1B\xEF\x84a$\x05V[\x90P\x80\x83`\xFF\x16`\x01\x90\x1B\x11a\x1C\x18W`@Qc\xCA\x95s3`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x90P[\x92\x91PPV[_\x80[\x82\x15a\x1C\x1BWa\x1C5`\x01\x84a.+V[\x90\x92\x16\x91\x80a\x1CC\x81a0DV[\x91PPa\x1C$V[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x02\0\x82a\xFF\xFF\x16\x10a\x1C\x87W`@Q`\x01b;\x15\x83`\xE1\x1B\x03\x19\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81a\xFF\xFF\x16`\x01\x03a\x1C\x9AWP\x81a\x1C\x1BV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01\x81\x90R\x84\x90`\x01\x90[\x81a\xFF\xFF\x16\x86a\xFF\xFF\x16\x10a\x1D\x02W`\x01a\xFF\xFF\x87\x16`\xFF\x83\x16\x1C\x81\x16\x90\x03a\x1C\xE5Wa\x1C\xE2\x84\x84a\x15\xEBV[\x93P[a\x1C\xEF\x83\x84a\x15\xEBV[\x92Pb\x01\xFF\xFE`\x01\x92\x83\x1B\x16\x91\x01a\x1C\xB5V[P\x91\x95\x94PPPPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R\x81Q\x15\x80\x15a\x1D1WP` \x82\x01Q\x15[\x15a\x1DNWPP`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R\x90V[`@Q\x80`@\x01`@R\x80\x83_\x01Q\x81R` \x01_Q` a2\xDE_9_Q\x90_R\x84` \x01Qa\x1D\x7F\x91\x90a-rV[a\x1D\x96\x90_Q` a2\xDE_9_Q\x90_Ra.+V[\x90R\x92\x91PPV[`e\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x90\x93U`@Q\x91\x16\x91\x90\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\xA3PPV[`\x9AT`\x01`\x01`\xA0\x1B\x03\x163\x14a\x1E\x19W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06T\x90a/\\V[_a\x1E'` \x85\x01\x85a'\xBBV[\x90P6_a\x1E8``\x87\x01\x87a/\x93V[\x90\x92P\x90P_a\x1EN`@\x88\x01` \x89\x01a'\xBBV[\x90P`\x98_a\x1E`` \x89\x01\x89a'\xBBV[c\xFF\xFF\xFF\xFF\x16c\xFF\xFF\xFF\xFF\x16\x81R` \x01\x90\x81R` \x01_ T\x87`@Q` \x01a\x1E\x8B\x91\x90a0\xCDV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x14a\x1F\x14W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R\x7FSupplied task does not match the`D\x82\x01R\x7F one recorded in the contract\0\0\0`d\x82\x01R`\x84\x01a\x06TV[_`\x99\x81a\x1F%` \x8A\x01\x8Aa'\xBBV[c\xFF\xFF\xFF\xFF\x16c\xFF\xFF\xFF\xFF\x16\x81R` \x01\x90\x81R` \x01_ T\x14a\x1F\xA1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`,`$\x82\x01R\x7FAggregator has already responded`D\x82\x01Rk to the task`\xA0\x1B`d\x82\x01R`\x84\x01a\x06TV[a\x1F\xCB\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\x85a1XV[c\xFF\xFF\xFF\xFF\x16Cc\xFF\xFF\xFF\xFF\x16\x11\x15a 0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`!`$\x82\x01R\x7FAggregator has responded too lat`D\x82\x01R`e`\xF8\x1B`d\x82\x01R`\x84\x01a\x06TV[_\x86`@Q` \x01a B\x91\x90a1\xB3V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P__a i\x83\x87\x87\x8A\x8Ca\x06\x85V[\x90\x92P\x90P_[\x85\x81\x10\x15a!]W\x84`\xFF\x16\x83` \x01Q\x82\x81Q\x81\x10a \x92Wa \x92a-^V[` \x02` \x01\x01Qa \xA4\x91\x90a1\xCCV[`\x01`\x01``\x1B\x03\x16`d\x84_\x01Q\x83\x81Q\x81\x10a \xC4Wa \xC4a-^V[` \x02` \x01\x01Q`\x01`\x01``\x1B\x03\x16a \xDF\x91\x90a/\xECV[\x10\x15a!UW`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R\x7FSignatories do not own at least `D\x82\x01R\x7Fthreshold percentage of a quorum`d\x82\x01R`\x84\x01a\x06TV[`\x01\x01a pV[P`@\x80Q\x80\x82\x01\x82Rc\xFF\xFF\xFF\xFFC\x16\x81R` \x80\x82\x01\x84\x90R\x91Q\x90\x91a!\x8A\x91\x8C\x91\x84\x91\x01a1\xF5V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 `\x99_\x8C_\x01` \x81\x01\x90a!\xB5\x91\x90a'\xBBV[c\xFF\xFF\xFF\xFF\x16c\xFF\xFF\xFF\xFF\x16\x81R` \x01\x90\x81R` \x01_ \x81\x90UP\x7F\x9B\x96\xC9\x81\xC7\xC7\n\x9F\x17\x02\xAB\xB0Dx'F\xC1\x1D\t\x0FX\xEA4\xB1-\xAF,\xC5<\xF8\xAB_\x8A\x82`@Qa\"\x03\x92\x91\x90a1\xF5V[`@Q\x80\x91\x03\x90\xA1PPPPPPPPPPPV[`\x9BT`\x01`\x01`\xA0\x1B\x03\x163\x14a\"BW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06T\x90a0\x03V[`@\x80Q`\x80\x81\x01\x82R``\x80\x82\x01R\x80\x82\x01\x86\x90Rc\xFF\xFF\xFF\xFFC\x81\x16\x82R\x85\x16` \x80\x83\x01\x91\x90\x91R\x82Q`\x1F\x85\x01\x82\x90\x04\x82\x02\x81\x01\x82\x01\x90\x93R\x83\x83R\x90\x91\x90\x84\x90\x84\x90\x81\x90\x84\x01\x83\x82\x80\x82\x847_\x92\x01\x91\x90\x91RPPPP``\x82\x01R`@Qa\"\xB4\x90\x82\x90` \x01a2jV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 `\x97\x80Tc\xFF\xFF\xFF\xFF\x90\x81\x16_\x90\x81R`\x98\x90\x94R\x93\x90\x92 UT\x16\x90\x7F\xBA7\x83+\xDD!t+\x86\xA63\x04;\x92:\x9A\xA9x\xF1\xCF\xB2\xB2t\xC6f\x1E\xB5s\xCF\t+\xF0\x90a#\x16\x90\x84\x90a2jV[`@Q\x80\x91\x03\x90\xA2`\x97\x80Tc\xFF\xFF\xFF\xFF\x16\x90_a#3\x83a2\xC2V[\x91\x90a\x01\0\n\x81T\x81c\xFF\xFF\xFF\xFF\x02\x19\x16\x90\x83c\xFF\xFF\xFF\xFF\x16\x02\x17\x90UPPPPPPPV[_\x80\x80_Q` a2\xDE_9_Q\x90_R`\x03_Q` a2\xDE_9_Q\x90_R\x86_Q` a2\xDE_9_Q\x90_R\x88\x89\t\t\x08\x90P_a#\xC9\x82\x7F\x0C\x19\x13\x9C\xB8Lh\nn\x14\x11m\xA0`V\x17e\xE0Z\xA4Z\x1Cr\xA3O\x08#\x05\xB6\x1F?R_Q` a2\xDE_9_Q\x90_Ra$\xC0V[\x91\x95\x91\x94P\x90\x92PPPV[`2Ta\x01\0\x90\x04`\xFF\x16a#\xFCW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06T\x90a-\xACV[a\x12\x8B3a\x1D\x9EV[_a\x01\0\x82Q\x11\x15a$*W`@Qc}\xA5NG`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q_\x03a$9WP_\x91\x90PV[__\x83_\x81Q\x81\x10a$MWa$Ma-^V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x81\x90\x1B\x92P[\x84Q\x81\x10\x15a$\xB7W\x84\x81\x81Q\x81\x10a${Wa${a-^V[\x01` \x01Q`\x01`\xF8\x91\x90\x91\x1C\x1B\x91P\x82\x82\x11a$\xABW`@Qc\x10\x19\x10i`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x91\x81\x17\x91`\x01\x01a$`V[P\x90\x93\x92PPPV[__a$\xCAa%\xB9V[a$\xD2a%\xD7V[` \x80\x82R\x81\x81\x01\x81\x90R`@\x82\x01\x81\x90R``\x82\x01\x88\x90R`\x80\x82\x01\x87\x90R`\xA0\x82\x01\x86\x90R\x82`\xC0\x83`\x05a\x07\xD0Z\x03\xFA\x92P\x82\x80a%\x0FW\xFE[P\x82a%.W`@Qc\xD5\x1E\xDA\xE3`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PQ\x95\x94PPPPPV[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`\x80\x01`@R\x80`\x04\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`@\x01`@R\x80a%\x88a%\xF5V[\x81R` \x01a%\x95a%\xF5V[\x90R\x90V[`@Q\x80a\x01\x80\x01`@R\x80`\x0C\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80` \x01`@R\x80`\x01\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`\xC0\x01`@R\x80`\x06\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`@\x01`@R\x80`\x02\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&IWa&Ia&\x13V[`@R\x90V[`@Qa\x01\0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&IWa&Ia&\x13V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x9AWa&\x9Aa&\x13V[`@R\x91\x90PV[_`@\x82\x84\x03\x12\x15a&\xB2W__\xFD[a&\xBAa&'V[\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_\x82`\x1F\x83\x01\x12a&\xE0W__\xFD[a&\xE8a&'V[\x80`@\x84\x01\x85\x81\x11\x15a&\xF9W__\xFD[\x84[\x81\x81\x10\x15a'\x13W\x805\x84R` \x93\x84\x01\x93\x01a&\xFBV[P\x90\x95\x94PPPPPV[_`\x80\x82\x84\x03\x12\x15a'.W__\xFD[a'6a&'V[\x90Pa'B\x83\x83a&\xD1V[\x81Ra'Q\x83`@\x84\x01a&\xD1V[` \x82\x01R\x92\x91PPV[____a\x01 \x85\x87\x03\x12\x15a'pW__\xFD[\x845\x93Pa'\x81\x86` \x87\x01a&\xA2V[\x92Pa'\x90\x86``\x87\x01a'\x1EV[\x91Pa'\x9F\x86`\xE0\x87\x01a&\xA2V[\x90P\x92\x95\x91\x94P\x92PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x06\x19W__\xFD[_` \x82\x84\x03\x12\x15a'\xCBW__\xFD[\x815a\x1C\x18\x81a'\xAAV[_` \x82\x84\x03\x12\x15a'\xE6W__\xFD[\x815\x80\x15\x15\x81\x14a\x1C\x18W__\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x06\x19W__\xFD[_` \x82\x84\x03\x12\x15a(\x19W__\xFD[\x815a\x1C\x18\x81a'\xF5V[___``\x84\x86\x03\x12\x15a(6W__\xFD[\x835a(A\x81a'\xF5V[\x92P` \x84\x015a(Q\x81a'\xF5V[\x91P`@\x84\x015a(a\x81a'\xF5V[\x80\x91PP\x92P\x92P\x92V[__\x83`\x1F\x84\x01\x12a(|W__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a(\x92W__\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a(\xA9W__\xFD[\x92P\x92\x90PV[_`\x01`\x01`@\x1B\x03\x82\x11\x15a(\xC8Wa(\xC8a&\x13V[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a(\xE1W__\xFD[\x815a(\xF4a(\xEF\x82a(\xB0V[a&rV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a)\x15W__\xFD[` \x85\x01[\x83\x81\x10\x15a);W\x805a)-\x81a'\xAAV[\x83R` \x92\x83\x01\x92\x01a)\x1AV[P\x95\x94PPPPPV[_\x82`\x1F\x83\x01\x12a)TW__\xFD[\x815a)ba(\xEF\x82a(\xB0V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x06\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a)\x83W__\xFD[` \x85\x01[\x83\x81\x10\x15a);Wa)\x9A\x87\x82a&\xA2V[\x83R` \x90\x92\x01\x91`@\x01a)\x88V[_\x82`\x1F\x83\x01\x12a)\xB9W__\xFD[\x815a)\xC7a(\xEF\x82a(\xB0V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a)\xE8W__\xFD[` \x85\x01[\x83\x81\x10\x15a);W\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a*\nW__\xFD[a*\x19\x88` \x83\x8A\x01\x01a(\xD2V[\x84RP` \x92\x83\x01\x92\x01a)\xEDV[_a\x01\x80\x82\x84\x03\x12\x15a*9W__\xFD[a*Aa&OV[\x90P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a*XW__\xFD[a*d\x84\x82\x85\x01a(\xD2V[\x82RP` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\x7FW__\xFD[a*\x8B\x84\x82\x85\x01a)EV[` \x83\x01RP`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\xA9W__\xFD[a*\xB5\x84\x82\x85\x01a)EV[`@\x83\x01RPa*\xC8\x83``\x84\x01a'\x1EV[``\x82\x01Ra*\xDA\x83`\xE0\x84\x01a&\xA2V[`\x80\x82\x01Ra\x01 \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\xF8W__\xFD[a+\x04\x84\x82\x85\x01a(\xD2V[`\xA0\x83\x01RPa\x01@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+#W__\xFD[a+/\x84\x82\x85\x01a(\xD2V[`\xC0\x83\x01RPa\x01`\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+NW__\xFD[a+Z\x84\x82\x85\x01a)\xAAV[`\xE0\x83\x01RP\x92\x91PPV[_____`\x80\x86\x88\x03\x12\x15a+zW__\xFD[\x855\x94P` \x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+\x96W__\xFD[a+\xA2\x88\x82\x89\x01a(lV[\x90\x95P\x93PP`@\x86\x015a+\xB6\x81a'\xAAV[\x91P``\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+\xD0W__\xFD[a+\xDC\x88\x82\x89\x01a*(V[\x91PP\x92\x95P\x92\x95\x90\x93PV[_\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01_[\x82\x81\x10\x15a,\"W\x81Q`\x01`\x01``\x1B\x03\x16\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a+\xFBV[P\x93\x94\x93PPPPV[`@\x81R_\x83Q`@\x80\x84\x01Ra,F`\x80\x84\x01\x82a+\xE9V[\x90P` \x85\x01Q`?\x19\x84\x83\x03\x01``\x85\x01Ra,c\x82\x82a+\xE9V[\x92PPP\x82` \x83\x01R\x93\x92PPPV[___``\x84\x86\x03\x12\x15a,\x86W__\xFD[\x835`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x9BW__\xFD[\x84\x01`\x80\x81\x87\x03\x12\x15a,\xACW__\xFD[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\xC6W__\xFD[\x84\x01`@\x81\x87\x03\x12\x15a,\xD7W__\xFD[\x91P`@\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\xF1W__\xFD[a,\xFD\x86\x82\x87\x01a*(V[\x91PP\x92P\x92P\x92V[____``\x85\x87\x03\x12\x15a-\x1AW__\xFD[\x845\x93P` \x85\x015a-,\x81a'\xAAV[\x92P`@\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-FW__\xFD[a-R\x87\x82\x88\x01a(lV[\x95\x98\x94\x97P\x95PPPPV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_\x82a-\x8CWcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x06\x90V[_` \x82\x84\x03\x12\x15a-\xA1W__\xFD[\x81Qa\x1C\x18\x81a'\xF5V[` \x80\x82R`+\x90\x82\x01R\x7FInitializable: contract is not i`@\x82\x01Rjnitializing`\xA8\x1B``\x82\x01R`\x80\x01\x90V[_` \x82\x84\x03\x12\x15a.\x07W__\xFD[\x81Q`\xFF\x81\x16\x81\x14a\x1C\x18W__\xFD[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\x1C\x1BWa\x1C\x1Ba.\x17V[_` \x82\x84\x03\x12\x15a.NW__\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a\x1C\x18W__\xFD[_` \x82\x84\x03\x12\x15a.tW__\xFD[\x81Qa\x1C\x18\x81a'\xAAV[_` \x82\x84\x03\x12\x15a.\x8FW__\xFD[PQ\x91\x90PV[\x80\x82\x01\x80\x82\x11\x15a\x1C\x1BWa\x1C\x1Ba.\x17V[_` \x82\x84\x03\x12\x15a.\xB9W__\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x81\x16\x81\x14a\x1C\x18W__\xFD[_` \x82\x84\x03\x12\x15a.\xE1W__\xFD[\x81Q`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\x1C\x18W__\xFD[`\x01`\x01``\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x1C\x1BWa\x1C\x1Ba.\x17V[c\xFF\xFF\xFF\xFF`\xE0\x1B\x83`\xE0\x1B\x16\x81R_`\x04\x82\x01\x83Q` \x85\x01_[\x82\x81\x10\x15a/PW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a/2V[P\x91\x96\x95PPPPPPV[` \x80\x82R`\x1D\x90\x82\x01R\x7FAggregator must be the caller\0\0\0`@\x82\x01R``\x01\x90V[__\x835`\x1E\x19\x846\x03\x01\x81\x12a/\xA8W__\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15a/\xC1W__\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a(\xA9W__\xFD[_` \x82\x84\x03\x12\x15a/\xE5W__\xFD[P5\x91\x90PV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x1C\x1BWa\x1C\x1Ba.\x17V[` \x80\x82R`!\x90\x82\x01R\x7FTask generator must be the calle`@\x82\x01R`9`\xF9\x1B``\x82\x01R`\x80\x01\x90V[_a\xFF\xFF\x82\x16a\xFF\xFF\x81\x03a0[Wa0[a.\x17V[`\x01\x01\x92\x91PPV[__\x835`\x1E\x19\x846\x03\x01\x81\x12a0yW__\xFD[\x83\x01` \x81\x01\x92P5\x90P`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x97W__\xFD[\x806\x03\x82\x13\x15a(\xA9W__\xFD[\x81\x83R\x81\x81` \x85\x017P_\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1F\x90\x91\x01`\x1F\x19\x16\x90\x91\x01\x01\x90V[` \x81R_\x825a0\xDD\x81a'\xAAV[c\xFF\xFF\xFF\xFF\x81\x16` \x84\x01RP` \x83\x015a0\xF8\x81a'\xAAV[c\xFF\xFF\xFF\xFF\x81\x16`@\x84\x01RPa1\x12`@\x84\x01\x84a0dV[`\x80``\x85\x01Ra1'`\xA0\x85\x01\x82\x84a0\xA5V[\x91PPa17``\x85\x01\x85a0dV[\x84\x83\x03`\x1F\x19\x01`\x80\x86\x01Ra1N\x83\x82\x84a0\xA5V[\x96\x95PPPPPPV[c\xFF\xFF\xFF\xFF\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\x1C\x1BWa\x1C\x1Ba.\x17V[_\x815a1\x80\x81a'\xAAV[c\xFF\xFF\xFF\xFF\x16\x83Ra1\x95` \x83\x01\x83a0dV[`@` \x86\x01Ra1\xAA`@\x86\x01\x82\x84a0\xA5V[\x95\x94PPPPPV[` \x81R_a1\xC5` \x83\x01\x84a1tV[\x93\x92PPPV[`\x01`\x01``\x1B\x03\x81\x81\x16\x83\x82\x16\x02\x90\x81\x16\x90\x81\x81\x14a1\xEEWa1\xEEa.\x17V[P\x92\x91PPV[``\x81R_a2\x07``\x83\x01\x85a1tV[\x90Pc\xFF\xFF\xFF\xFF\x83Q\x16` \x83\x01R` \x83\x01Q`@\x83\x01R\x93\x92PPPV[_\x81Q\x80\x84R_[\x81\x81\x10\x15a2KW` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a2/V[P_` \x82\x86\x01\x01R` `\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[` \x81Rc\xFF\xFF\xFF\xFF\x82Q\x16` \x82\x01Rc\xFF\xFF\xFF\xFF` \x83\x01Q\x16`@\x82\x01R_`@\x83\x01Q`\x80``\x84\x01Ra2\xA5`\xA0\x84\x01\x82a2'V[\x90P``\x84\x01Q`\x1F\x19\x84\x83\x03\x01`\x80\x85\x01Ra1\xAA\x82\x82a2'V[_c\xFF\xFF\xFF\xFF\x82\x16c\xFF\xFF\xFF\xFF\x81\x03a0[Wa0[a.\x17V\xFE0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDG\xA2dipfsX\"\x12 \x8E\x0F\xED\xC4\xAC\xB82n\\\xE1\\)\xCE.\x04h\x01\xBF\x1E\xCC\x96\x83xP\xD7\x9B\x9AR\xA0\x16:\xA5dsolcC\0\x08\x1B\x003",
3414    );
3415    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3416    /**Custom error with signature `AlreadySet()` and selector `0xa741a045`.
3417```solidity
3418error AlreadySet();
3419```*/
3420    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3421    #[derive(Clone)]
3422    pub struct AlreadySet {}
3423    #[allow(
3424        non_camel_case_types,
3425        non_snake_case,
3426        clippy::pub_underscore_fields,
3427        clippy::style
3428    )]
3429    const _: () = {
3430        use alloy::sol_types as alloy_sol_types;
3431        #[doc(hidden)]
3432        type UnderlyingSolTuple<'a> = ();
3433        #[doc(hidden)]
3434        type UnderlyingRustTuple<'a> = ();
3435        #[cfg(test)]
3436        #[allow(dead_code, unreachable_patterns)]
3437        fn _type_assertion(
3438            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3439        ) {
3440            match _t {
3441                alloy_sol_types::private::AssertTypeEq::<
3442                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3443                >(_) => {}
3444            }
3445        }
3446        #[automatically_derived]
3447        #[doc(hidden)]
3448        impl ::core::convert::From<AlreadySet> for UnderlyingRustTuple<'_> {
3449            fn from(value: AlreadySet) -> Self {
3450                ()
3451            }
3452        }
3453        #[automatically_derived]
3454        #[doc(hidden)]
3455        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AlreadySet {
3456            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3457                Self {}
3458            }
3459        }
3460        #[automatically_derived]
3461        impl alloy_sol_types::SolError for AlreadySet {
3462            type Parameters<'a> = UnderlyingSolTuple<'a>;
3463            type Token<'a> = <Self::Parameters<
3464                'a,
3465            > as alloy_sol_types::SolType>::Token<'a>;
3466            const SIGNATURE: &'static str = "AlreadySet()";
3467            const SELECTOR: [u8; 4] = [167u8, 65u8, 160u8, 69u8];
3468            #[inline]
3469            fn new<'a>(
3470                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3471            ) -> Self {
3472                tuple.into()
3473            }
3474            #[inline]
3475            fn tokenize(&self) -> Self::Token<'_> {
3476                ()
3477            }
3478        }
3479    };
3480    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3481    /**Custom error with signature `BitmapValueTooLarge()` and selector `0xca957333`.
3482```solidity
3483error BitmapValueTooLarge();
3484```*/
3485    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3486    #[derive(Clone)]
3487    pub struct BitmapValueTooLarge {}
3488    #[allow(
3489        non_camel_case_types,
3490        non_snake_case,
3491        clippy::pub_underscore_fields,
3492        clippy::style
3493    )]
3494    const _: () = {
3495        use alloy::sol_types as alloy_sol_types;
3496        #[doc(hidden)]
3497        type UnderlyingSolTuple<'a> = ();
3498        #[doc(hidden)]
3499        type UnderlyingRustTuple<'a> = ();
3500        #[cfg(test)]
3501        #[allow(dead_code, unreachable_patterns)]
3502        fn _type_assertion(
3503            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3504        ) {
3505            match _t {
3506                alloy_sol_types::private::AssertTypeEq::<
3507                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3508                >(_) => {}
3509            }
3510        }
3511        #[automatically_derived]
3512        #[doc(hidden)]
3513        impl ::core::convert::From<BitmapValueTooLarge> for UnderlyingRustTuple<'_> {
3514            fn from(value: BitmapValueTooLarge) -> Self {
3515                ()
3516            }
3517        }
3518        #[automatically_derived]
3519        #[doc(hidden)]
3520        impl ::core::convert::From<UnderlyingRustTuple<'_>> for BitmapValueTooLarge {
3521            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3522                Self {}
3523            }
3524        }
3525        #[automatically_derived]
3526        impl alloy_sol_types::SolError for BitmapValueTooLarge {
3527            type Parameters<'a> = UnderlyingSolTuple<'a>;
3528            type Token<'a> = <Self::Parameters<
3529                'a,
3530            > as alloy_sol_types::SolType>::Token<'a>;
3531            const SIGNATURE: &'static str = "BitmapValueTooLarge()";
3532            const SELECTOR: [u8; 4] = [202u8, 149u8, 115u8, 51u8];
3533            #[inline]
3534            fn new<'a>(
3535                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3536            ) -> Self {
3537                tuple.into()
3538            }
3539            #[inline]
3540            fn tokenize(&self) -> Self::Token<'_> {
3541                ()
3542            }
3543        }
3544    };
3545    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3546    /**Custom error with signature `BytesArrayLengthTooLong()` and selector `0xfb4a9c8e`.
3547```solidity
3548error BytesArrayLengthTooLong();
3549```*/
3550    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3551    #[derive(Clone)]
3552    pub struct BytesArrayLengthTooLong {}
3553    #[allow(
3554        non_camel_case_types,
3555        non_snake_case,
3556        clippy::pub_underscore_fields,
3557        clippy::style
3558    )]
3559    const _: () = {
3560        use alloy::sol_types as alloy_sol_types;
3561        #[doc(hidden)]
3562        type UnderlyingSolTuple<'a> = ();
3563        #[doc(hidden)]
3564        type UnderlyingRustTuple<'a> = ();
3565        #[cfg(test)]
3566        #[allow(dead_code, unreachable_patterns)]
3567        fn _type_assertion(
3568            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3569        ) {
3570            match _t {
3571                alloy_sol_types::private::AssertTypeEq::<
3572                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3573                >(_) => {}
3574            }
3575        }
3576        #[automatically_derived]
3577        #[doc(hidden)]
3578        impl ::core::convert::From<BytesArrayLengthTooLong> for UnderlyingRustTuple<'_> {
3579            fn from(value: BytesArrayLengthTooLong) -> Self {
3580                ()
3581            }
3582        }
3583        #[automatically_derived]
3584        #[doc(hidden)]
3585        impl ::core::convert::From<UnderlyingRustTuple<'_>> for BytesArrayLengthTooLong {
3586            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3587                Self {}
3588            }
3589        }
3590        #[automatically_derived]
3591        impl alloy_sol_types::SolError for BytesArrayLengthTooLong {
3592            type Parameters<'a> = UnderlyingSolTuple<'a>;
3593            type Token<'a> = <Self::Parameters<
3594                'a,
3595            > as alloy_sol_types::SolType>::Token<'a>;
3596            const SIGNATURE: &'static str = "BytesArrayLengthTooLong()";
3597            const SELECTOR: [u8; 4] = [251u8, 74u8, 156u8, 142u8];
3598            #[inline]
3599            fn new<'a>(
3600                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3601            ) -> Self {
3602                tuple.into()
3603            }
3604            #[inline]
3605            fn tokenize(&self) -> Self::Token<'_> {
3606                ()
3607            }
3608        }
3609    };
3610    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3611    /**Custom error with signature `BytesArrayNotOrdered()` and selector `0x80c88348`.
3612```solidity
3613error BytesArrayNotOrdered();
3614```*/
3615    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3616    #[derive(Clone)]
3617    pub struct BytesArrayNotOrdered {}
3618    #[allow(
3619        non_camel_case_types,
3620        non_snake_case,
3621        clippy::pub_underscore_fields,
3622        clippy::style
3623    )]
3624    const _: () = {
3625        use alloy::sol_types as alloy_sol_types;
3626        #[doc(hidden)]
3627        type UnderlyingSolTuple<'a> = ();
3628        #[doc(hidden)]
3629        type UnderlyingRustTuple<'a> = ();
3630        #[cfg(test)]
3631        #[allow(dead_code, unreachable_patterns)]
3632        fn _type_assertion(
3633            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3634        ) {
3635            match _t {
3636                alloy_sol_types::private::AssertTypeEq::<
3637                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3638                >(_) => {}
3639            }
3640        }
3641        #[automatically_derived]
3642        #[doc(hidden)]
3643        impl ::core::convert::From<BytesArrayNotOrdered> for UnderlyingRustTuple<'_> {
3644            fn from(value: BytesArrayNotOrdered) -> Self {
3645                ()
3646            }
3647        }
3648        #[automatically_derived]
3649        #[doc(hidden)]
3650        impl ::core::convert::From<UnderlyingRustTuple<'_>> for BytesArrayNotOrdered {
3651            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3652                Self {}
3653            }
3654        }
3655        #[automatically_derived]
3656        impl alloy_sol_types::SolError for BytesArrayNotOrdered {
3657            type Parameters<'a> = UnderlyingSolTuple<'a>;
3658            type Token<'a> = <Self::Parameters<
3659                'a,
3660            > as alloy_sol_types::SolType>::Token<'a>;
3661            const SIGNATURE: &'static str = "BytesArrayNotOrdered()";
3662            const SELECTOR: [u8; 4] = [128u8, 200u8, 131u8, 72u8];
3663            #[inline]
3664            fn new<'a>(
3665                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3666            ) -> Self {
3667                tuple.into()
3668            }
3669            #[inline]
3670            fn tokenize(&self) -> Self::Token<'_> {
3671                ()
3672            }
3673        }
3674    };
3675    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3676    /**Custom error with signature `ECAddFailed()` and selector `0xd4b68fd7`.
3677```solidity
3678error ECAddFailed();
3679```*/
3680    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3681    #[derive(Clone)]
3682    pub struct ECAddFailed {}
3683    #[allow(
3684        non_camel_case_types,
3685        non_snake_case,
3686        clippy::pub_underscore_fields,
3687        clippy::style
3688    )]
3689    const _: () = {
3690        use alloy::sol_types as alloy_sol_types;
3691        #[doc(hidden)]
3692        type UnderlyingSolTuple<'a> = ();
3693        #[doc(hidden)]
3694        type UnderlyingRustTuple<'a> = ();
3695        #[cfg(test)]
3696        #[allow(dead_code, unreachable_patterns)]
3697        fn _type_assertion(
3698            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3699        ) {
3700            match _t {
3701                alloy_sol_types::private::AssertTypeEq::<
3702                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3703                >(_) => {}
3704            }
3705        }
3706        #[automatically_derived]
3707        #[doc(hidden)]
3708        impl ::core::convert::From<ECAddFailed> for UnderlyingRustTuple<'_> {
3709            fn from(value: ECAddFailed) -> Self {
3710                ()
3711            }
3712        }
3713        #[automatically_derived]
3714        #[doc(hidden)]
3715        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ECAddFailed {
3716            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3717                Self {}
3718            }
3719        }
3720        #[automatically_derived]
3721        impl alloy_sol_types::SolError for ECAddFailed {
3722            type Parameters<'a> = UnderlyingSolTuple<'a>;
3723            type Token<'a> = <Self::Parameters<
3724                'a,
3725            > as alloy_sol_types::SolType>::Token<'a>;
3726            const SIGNATURE: &'static str = "ECAddFailed()";
3727            const SELECTOR: [u8; 4] = [212u8, 182u8, 143u8, 215u8];
3728            #[inline]
3729            fn new<'a>(
3730                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3731            ) -> Self {
3732                tuple.into()
3733            }
3734            #[inline]
3735            fn tokenize(&self) -> Self::Token<'_> {
3736                ()
3737            }
3738        }
3739    };
3740    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3741    /**Custom error with signature `ECMulFailed()` and selector `0x4633be32`.
3742```solidity
3743error ECMulFailed();
3744```*/
3745    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3746    #[derive(Clone)]
3747    pub struct ECMulFailed {}
3748    #[allow(
3749        non_camel_case_types,
3750        non_snake_case,
3751        clippy::pub_underscore_fields,
3752        clippy::style
3753    )]
3754    const _: () = {
3755        use alloy::sol_types as alloy_sol_types;
3756        #[doc(hidden)]
3757        type UnderlyingSolTuple<'a> = ();
3758        #[doc(hidden)]
3759        type UnderlyingRustTuple<'a> = ();
3760        #[cfg(test)]
3761        #[allow(dead_code, unreachable_patterns)]
3762        fn _type_assertion(
3763            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3764        ) {
3765            match _t {
3766                alloy_sol_types::private::AssertTypeEq::<
3767                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3768                >(_) => {}
3769            }
3770        }
3771        #[automatically_derived]
3772        #[doc(hidden)]
3773        impl ::core::convert::From<ECMulFailed> for UnderlyingRustTuple<'_> {
3774            fn from(value: ECMulFailed) -> Self {
3775                ()
3776            }
3777        }
3778        #[automatically_derived]
3779        #[doc(hidden)]
3780        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ECMulFailed {
3781            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3782                Self {}
3783            }
3784        }
3785        #[automatically_derived]
3786        impl alloy_sol_types::SolError for ECMulFailed {
3787            type Parameters<'a> = UnderlyingSolTuple<'a>;
3788            type Token<'a> = <Self::Parameters<
3789                'a,
3790            > as alloy_sol_types::SolType>::Token<'a>;
3791            const SIGNATURE: &'static str = "ECMulFailed()";
3792            const SELECTOR: [u8; 4] = [70u8, 51u8, 190u8, 50u8];
3793            #[inline]
3794            fn new<'a>(
3795                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3796            ) -> Self {
3797                tuple.into()
3798            }
3799            #[inline]
3800            fn tokenize(&self) -> Self::Token<'_> {
3801                ()
3802            }
3803        }
3804    };
3805    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3806    /**Custom error with signature `ExpModFailed()` and selector `0xd51edae3`.
3807```solidity
3808error ExpModFailed();
3809```*/
3810    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3811    #[derive(Clone)]
3812    pub struct ExpModFailed {}
3813    #[allow(
3814        non_camel_case_types,
3815        non_snake_case,
3816        clippy::pub_underscore_fields,
3817        clippy::style
3818    )]
3819    const _: () = {
3820        use alloy::sol_types as alloy_sol_types;
3821        #[doc(hidden)]
3822        type UnderlyingSolTuple<'a> = ();
3823        #[doc(hidden)]
3824        type UnderlyingRustTuple<'a> = ();
3825        #[cfg(test)]
3826        #[allow(dead_code, unreachable_patterns)]
3827        fn _type_assertion(
3828            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3829        ) {
3830            match _t {
3831                alloy_sol_types::private::AssertTypeEq::<
3832                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3833                >(_) => {}
3834            }
3835        }
3836        #[automatically_derived]
3837        #[doc(hidden)]
3838        impl ::core::convert::From<ExpModFailed> for UnderlyingRustTuple<'_> {
3839            fn from(value: ExpModFailed) -> Self {
3840                ()
3841            }
3842        }
3843        #[automatically_derived]
3844        #[doc(hidden)]
3845        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ExpModFailed {
3846            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3847                Self {}
3848            }
3849        }
3850        #[automatically_derived]
3851        impl alloy_sol_types::SolError for ExpModFailed {
3852            type Parameters<'a> = UnderlyingSolTuple<'a>;
3853            type Token<'a> = <Self::Parameters<
3854                'a,
3855            > as alloy_sol_types::SolType>::Token<'a>;
3856            const SIGNATURE: &'static str = "ExpModFailed()";
3857            const SELECTOR: [u8; 4] = [213u8, 30u8, 218u8, 227u8];
3858            #[inline]
3859            fn new<'a>(
3860                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3861            ) -> Self {
3862                tuple.into()
3863            }
3864            #[inline]
3865            fn tokenize(&self) -> Self::Token<'_> {
3866                ()
3867            }
3868        }
3869    };
3870    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3871    /**Custom error with signature `IncorrectSquareResult(uint256,uint256,uint256)` and selector `0x0cf92dd5`.
3872```solidity
3873error IncorrectSquareResult(uint256 number, uint256 submittedResult, uint256 expectedResult);
3874```*/
3875    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3876    #[derive(Clone)]
3877    pub struct IncorrectSquareResult {
3878        #[allow(missing_docs)]
3879        pub number: alloy::sol_types::private::primitives::aliases::U256,
3880        #[allow(missing_docs)]
3881        pub submittedResult: alloy::sol_types::private::primitives::aliases::U256,
3882        #[allow(missing_docs)]
3883        pub expectedResult: alloy::sol_types::private::primitives::aliases::U256,
3884    }
3885    #[allow(
3886        non_camel_case_types,
3887        non_snake_case,
3888        clippy::pub_underscore_fields,
3889        clippy::style
3890    )]
3891    const _: () = {
3892        use alloy::sol_types as alloy_sol_types;
3893        #[doc(hidden)]
3894        type UnderlyingSolTuple<'a> = (
3895            alloy::sol_types::sol_data::Uint<256>,
3896            alloy::sol_types::sol_data::Uint<256>,
3897            alloy::sol_types::sol_data::Uint<256>,
3898        );
3899        #[doc(hidden)]
3900        type UnderlyingRustTuple<'a> = (
3901            alloy::sol_types::private::primitives::aliases::U256,
3902            alloy::sol_types::private::primitives::aliases::U256,
3903            alloy::sol_types::private::primitives::aliases::U256,
3904        );
3905        #[cfg(test)]
3906        #[allow(dead_code, unreachable_patterns)]
3907        fn _type_assertion(
3908            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3909        ) {
3910            match _t {
3911                alloy_sol_types::private::AssertTypeEq::<
3912                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3913                >(_) => {}
3914            }
3915        }
3916        #[automatically_derived]
3917        #[doc(hidden)]
3918        impl ::core::convert::From<IncorrectSquareResult> for UnderlyingRustTuple<'_> {
3919            fn from(value: IncorrectSquareResult) -> Self {
3920                (value.number, value.submittedResult, value.expectedResult)
3921            }
3922        }
3923        #[automatically_derived]
3924        #[doc(hidden)]
3925        impl ::core::convert::From<UnderlyingRustTuple<'_>> for IncorrectSquareResult {
3926            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3927                Self {
3928                    number: tuple.0,
3929                    submittedResult: tuple.1,
3930                    expectedResult: tuple.2,
3931                }
3932            }
3933        }
3934        #[automatically_derived]
3935        impl alloy_sol_types::SolError for IncorrectSquareResult {
3936            type Parameters<'a> = UnderlyingSolTuple<'a>;
3937            type Token<'a> = <Self::Parameters<
3938                'a,
3939            > as alloy_sol_types::SolType>::Token<'a>;
3940            const SIGNATURE: &'static str = "IncorrectSquareResult(uint256,uint256,uint256)";
3941            const SELECTOR: [u8; 4] = [12u8, 249u8, 45u8, 213u8];
3942            #[inline]
3943            fn new<'a>(
3944                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3945            ) -> Self {
3946                tuple.into()
3947            }
3948            #[inline]
3949            fn tokenize(&self) -> Self::Token<'_> {
3950                (
3951                    <alloy::sol_types::sol_data::Uint<
3952                        256,
3953                    > as alloy_sol_types::SolType>::tokenize(&self.number),
3954                    <alloy::sol_types::sol_data::Uint<
3955                        256,
3956                    > as alloy_sol_types::SolType>::tokenize(&self.submittedResult),
3957                    <alloy::sol_types::sol_data::Uint<
3958                        256,
3959                    > as alloy_sol_types::SolType>::tokenize(&self.expectedResult),
3960                )
3961            }
3962        }
3963    };
3964    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3965    /**Custom error with signature `InputArrayLengthMismatch()` and selector `0x43714afd`.
3966```solidity
3967error InputArrayLengthMismatch();
3968```*/
3969    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3970    #[derive(Clone)]
3971    pub struct InputArrayLengthMismatch {}
3972    #[allow(
3973        non_camel_case_types,
3974        non_snake_case,
3975        clippy::pub_underscore_fields,
3976        clippy::style
3977    )]
3978    const _: () = {
3979        use alloy::sol_types as alloy_sol_types;
3980        #[doc(hidden)]
3981        type UnderlyingSolTuple<'a> = ();
3982        #[doc(hidden)]
3983        type UnderlyingRustTuple<'a> = ();
3984        #[cfg(test)]
3985        #[allow(dead_code, unreachable_patterns)]
3986        fn _type_assertion(
3987            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3988        ) {
3989            match _t {
3990                alloy_sol_types::private::AssertTypeEq::<
3991                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3992                >(_) => {}
3993            }
3994        }
3995        #[automatically_derived]
3996        #[doc(hidden)]
3997        impl ::core::convert::From<InputArrayLengthMismatch>
3998        for UnderlyingRustTuple<'_> {
3999            fn from(value: InputArrayLengthMismatch) -> Self {
4000                ()
4001            }
4002        }
4003        #[automatically_derived]
4004        #[doc(hidden)]
4005        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4006        for InputArrayLengthMismatch {
4007            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4008                Self {}
4009            }
4010        }
4011        #[automatically_derived]
4012        impl alloy_sol_types::SolError for InputArrayLengthMismatch {
4013            type Parameters<'a> = UnderlyingSolTuple<'a>;
4014            type Token<'a> = <Self::Parameters<
4015                'a,
4016            > as alloy_sol_types::SolType>::Token<'a>;
4017            const SIGNATURE: &'static str = "InputArrayLengthMismatch()";
4018            const SELECTOR: [u8; 4] = [67u8, 113u8, 74u8, 253u8];
4019            #[inline]
4020            fn new<'a>(
4021                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4022            ) -> Self {
4023                tuple.into()
4024            }
4025            #[inline]
4026            fn tokenize(&self) -> Self::Token<'_> {
4027                ()
4028            }
4029        }
4030    };
4031    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4032    /**Custom error with signature `InputEmptyQuorumNumbers()` and selector `0x1f0405a0`.
4033```solidity
4034error InputEmptyQuorumNumbers();
4035```*/
4036    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4037    #[derive(Clone)]
4038    pub struct InputEmptyQuorumNumbers {}
4039    #[allow(
4040        non_camel_case_types,
4041        non_snake_case,
4042        clippy::pub_underscore_fields,
4043        clippy::style
4044    )]
4045    const _: () = {
4046        use alloy::sol_types as alloy_sol_types;
4047        #[doc(hidden)]
4048        type UnderlyingSolTuple<'a> = ();
4049        #[doc(hidden)]
4050        type UnderlyingRustTuple<'a> = ();
4051        #[cfg(test)]
4052        #[allow(dead_code, unreachable_patterns)]
4053        fn _type_assertion(
4054            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4055        ) {
4056            match _t {
4057                alloy_sol_types::private::AssertTypeEq::<
4058                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4059                >(_) => {}
4060            }
4061        }
4062        #[automatically_derived]
4063        #[doc(hidden)]
4064        impl ::core::convert::From<InputEmptyQuorumNumbers> for UnderlyingRustTuple<'_> {
4065            fn from(value: InputEmptyQuorumNumbers) -> Self {
4066                ()
4067            }
4068        }
4069        #[automatically_derived]
4070        #[doc(hidden)]
4071        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InputEmptyQuorumNumbers {
4072            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4073                Self {}
4074            }
4075        }
4076        #[automatically_derived]
4077        impl alloy_sol_types::SolError for InputEmptyQuorumNumbers {
4078            type Parameters<'a> = UnderlyingSolTuple<'a>;
4079            type Token<'a> = <Self::Parameters<
4080                'a,
4081            > as alloy_sol_types::SolType>::Token<'a>;
4082            const SIGNATURE: &'static str = "InputEmptyQuorumNumbers()";
4083            const SELECTOR: [u8; 4] = [31u8, 4u8, 5u8, 160u8];
4084            #[inline]
4085            fn new<'a>(
4086                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4087            ) -> Self {
4088                tuple.into()
4089            }
4090            #[inline]
4091            fn tokenize(&self) -> Self::Token<'_> {
4092                ()
4093            }
4094        }
4095    };
4096    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4097    /**Custom error with signature `InputNonSignerLengthMismatch()` and selector `0x5f832f41`.
4098```solidity
4099error InputNonSignerLengthMismatch();
4100```*/
4101    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4102    #[derive(Clone)]
4103    pub struct InputNonSignerLengthMismatch {}
4104    #[allow(
4105        non_camel_case_types,
4106        non_snake_case,
4107        clippy::pub_underscore_fields,
4108        clippy::style
4109    )]
4110    const _: () = {
4111        use alloy::sol_types as alloy_sol_types;
4112        #[doc(hidden)]
4113        type UnderlyingSolTuple<'a> = ();
4114        #[doc(hidden)]
4115        type UnderlyingRustTuple<'a> = ();
4116        #[cfg(test)]
4117        #[allow(dead_code, unreachable_patterns)]
4118        fn _type_assertion(
4119            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4120        ) {
4121            match _t {
4122                alloy_sol_types::private::AssertTypeEq::<
4123                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4124                >(_) => {}
4125            }
4126        }
4127        #[automatically_derived]
4128        #[doc(hidden)]
4129        impl ::core::convert::From<InputNonSignerLengthMismatch>
4130        for UnderlyingRustTuple<'_> {
4131            fn from(value: InputNonSignerLengthMismatch) -> Self {
4132                ()
4133            }
4134        }
4135        #[automatically_derived]
4136        #[doc(hidden)]
4137        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4138        for InputNonSignerLengthMismatch {
4139            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4140                Self {}
4141            }
4142        }
4143        #[automatically_derived]
4144        impl alloy_sol_types::SolError for InputNonSignerLengthMismatch {
4145            type Parameters<'a> = UnderlyingSolTuple<'a>;
4146            type Token<'a> = <Self::Parameters<
4147                'a,
4148            > as alloy_sol_types::SolType>::Token<'a>;
4149            const SIGNATURE: &'static str = "InputNonSignerLengthMismatch()";
4150            const SELECTOR: [u8; 4] = [95u8, 131u8, 47u8, 65u8];
4151            #[inline]
4152            fn new<'a>(
4153                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4154            ) -> Self {
4155                tuple.into()
4156            }
4157            #[inline]
4158            fn tokenize(&self) -> Self::Token<'_> {
4159                ()
4160            }
4161        }
4162    };
4163    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4164    /**Custom error with signature `InvalidBLSPairingKey()` and selector `0x67988d33`.
4165```solidity
4166error InvalidBLSPairingKey();
4167```*/
4168    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4169    #[derive(Clone)]
4170    pub struct InvalidBLSPairingKey {}
4171    #[allow(
4172        non_camel_case_types,
4173        non_snake_case,
4174        clippy::pub_underscore_fields,
4175        clippy::style
4176    )]
4177    const _: () = {
4178        use alloy::sol_types as alloy_sol_types;
4179        #[doc(hidden)]
4180        type UnderlyingSolTuple<'a> = ();
4181        #[doc(hidden)]
4182        type UnderlyingRustTuple<'a> = ();
4183        #[cfg(test)]
4184        #[allow(dead_code, unreachable_patterns)]
4185        fn _type_assertion(
4186            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4187        ) {
4188            match _t {
4189                alloy_sol_types::private::AssertTypeEq::<
4190                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4191                >(_) => {}
4192            }
4193        }
4194        #[automatically_derived]
4195        #[doc(hidden)]
4196        impl ::core::convert::From<InvalidBLSPairingKey> for UnderlyingRustTuple<'_> {
4197            fn from(value: InvalidBLSPairingKey) -> Self {
4198                ()
4199            }
4200        }
4201        #[automatically_derived]
4202        #[doc(hidden)]
4203        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidBLSPairingKey {
4204            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4205                Self {}
4206            }
4207        }
4208        #[automatically_derived]
4209        impl alloy_sol_types::SolError for InvalidBLSPairingKey {
4210            type Parameters<'a> = UnderlyingSolTuple<'a>;
4211            type Token<'a> = <Self::Parameters<
4212                'a,
4213            > as alloy_sol_types::SolType>::Token<'a>;
4214            const SIGNATURE: &'static str = "InvalidBLSPairingKey()";
4215            const SELECTOR: [u8; 4] = [103u8, 152u8, 141u8, 51u8];
4216            #[inline]
4217            fn new<'a>(
4218                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4219            ) -> Self {
4220                tuple.into()
4221            }
4222            #[inline]
4223            fn tokenize(&self) -> Self::Token<'_> {
4224                ()
4225            }
4226        }
4227    };
4228    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4229    /**Custom error with signature `InvalidBLSSignature()` and selector `0xab1b236b`.
4230```solidity
4231error InvalidBLSSignature();
4232```*/
4233    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4234    #[derive(Clone)]
4235    pub struct InvalidBLSSignature {}
4236    #[allow(
4237        non_camel_case_types,
4238        non_snake_case,
4239        clippy::pub_underscore_fields,
4240        clippy::style
4241    )]
4242    const _: () = {
4243        use alloy::sol_types as alloy_sol_types;
4244        #[doc(hidden)]
4245        type UnderlyingSolTuple<'a> = ();
4246        #[doc(hidden)]
4247        type UnderlyingRustTuple<'a> = ();
4248        #[cfg(test)]
4249        #[allow(dead_code, unreachable_patterns)]
4250        fn _type_assertion(
4251            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4252        ) {
4253            match _t {
4254                alloy_sol_types::private::AssertTypeEq::<
4255                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4256                >(_) => {}
4257            }
4258        }
4259        #[automatically_derived]
4260        #[doc(hidden)]
4261        impl ::core::convert::From<InvalidBLSSignature> for UnderlyingRustTuple<'_> {
4262            fn from(value: InvalidBLSSignature) -> Self {
4263                ()
4264            }
4265        }
4266        #[automatically_derived]
4267        #[doc(hidden)]
4268        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidBLSSignature {
4269            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4270                Self {}
4271            }
4272        }
4273        #[automatically_derived]
4274        impl alloy_sol_types::SolError for InvalidBLSSignature {
4275            type Parameters<'a> = UnderlyingSolTuple<'a>;
4276            type Token<'a> = <Self::Parameters<
4277                'a,
4278            > as alloy_sol_types::SolType>::Token<'a>;
4279            const SIGNATURE: &'static str = "InvalidBLSSignature()";
4280            const SELECTOR: [u8; 4] = [171u8, 27u8, 35u8, 107u8];
4281            #[inline]
4282            fn new<'a>(
4283                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4284            ) -> Self {
4285                tuple.into()
4286            }
4287            #[inline]
4288            fn tokenize(&self) -> Self::Token<'_> {
4289                ()
4290            }
4291        }
4292    };
4293    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4294    /**Custom error with signature `InvalidQuorumApkHash()` and selector `0xe1310aed`.
4295```solidity
4296error InvalidQuorumApkHash();
4297```*/
4298    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4299    #[derive(Clone)]
4300    pub struct InvalidQuorumApkHash {}
4301    #[allow(
4302        non_camel_case_types,
4303        non_snake_case,
4304        clippy::pub_underscore_fields,
4305        clippy::style
4306    )]
4307    const _: () = {
4308        use alloy::sol_types as alloy_sol_types;
4309        #[doc(hidden)]
4310        type UnderlyingSolTuple<'a> = ();
4311        #[doc(hidden)]
4312        type UnderlyingRustTuple<'a> = ();
4313        #[cfg(test)]
4314        #[allow(dead_code, unreachable_patterns)]
4315        fn _type_assertion(
4316            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4317        ) {
4318            match _t {
4319                alloy_sol_types::private::AssertTypeEq::<
4320                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4321                >(_) => {}
4322            }
4323        }
4324        #[automatically_derived]
4325        #[doc(hidden)]
4326        impl ::core::convert::From<InvalidQuorumApkHash> for UnderlyingRustTuple<'_> {
4327            fn from(value: InvalidQuorumApkHash) -> Self {
4328                ()
4329            }
4330        }
4331        #[automatically_derived]
4332        #[doc(hidden)]
4333        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidQuorumApkHash {
4334            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4335                Self {}
4336            }
4337        }
4338        #[automatically_derived]
4339        impl alloy_sol_types::SolError for InvalidQuorumApkHash {
4340            type Parameters<'a> = UnderlyingSolTuple<'a>;
4341            type Token<'a> = <Self::Parameters<
4342                'a,
4343            > as alloy_sol_types::SolType>::Token<'a>;
4344            const SIGNATURE: &'static str = "InvalidQuorumApkHash()";
4345            const SELECTOR: [u8; 4] = [225u8, 49u8, 10u8, 237u8];
4346            #[inline]
4347            fn new<'a>(
4348                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4349            ) -> Self {
4350                tuple.into()
4351            }
4352            #[inline]
4353            fn tokenize(&self) -> Self::Token<'_> {
4354                ()
4355            }
4356        }
4357    };
4358    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4359    /**Custom error with signature `InvalidReferenceBlocknumber()` and selector `0x4b874f45`.
4360```solidity
4361error InvalidReferenceBlocknumber();
4362```*/
4363    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4364    #[derive(Clone)]
4365    pub struct InvalidReferenceBlocknumber {}
4366    #[allow(
4367        non_camel_case_types,
4368        non_snake_case,
4369        clippy::pub_underscore_fields,
4370        clippy::style
4371    )]
4372    const _: () = {
4373        use alloy::sol_types as alloy_sol_types;
4374        #[doc(hidden)]
4375        type UnderlyingSolTuple<'a> = ();
4376        #[doc(hidden)]
4377        type UnderlyingRustTuple<'a> = ();
4378        #[cfg(test)]
4379        #[allow(dead_code, unreachable_patterns)]
4380        fn _type_assertion(
4381            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4382        ) {
4383            match _t {
4384                alloy_sol_types::private::AssertTypeEq::<
4385                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4386                >(_) => {}
4387            }
4388        }
4389        #[automatically_derived]
4390        #[doc(hidden)]
4391        impl ::core::convert::From<InvalidReferenceBlocknumber>
4392        for UnderlyingRustTuple<'_> {
4393            fn from(value: InvalidReferenceBlocknumber) -> Self {
4394                ()
4395            }
4396        }
4397        #[automatically_derived]
4398        #[doc(hidden)]
4399        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4400        for InvalidReferenceBlocknumber {
4401            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4402                Self {}
4403            }
4404        }
4405        #[automatically_derived]
4406        impl alloy_sol_types::SolError for InvalidReferenceBlocknumber {
4407            type Parameters<'a> = UnderlyingSolTuple<'a>;
4408            type Token<'a> = <Self::Parameters<
4409                'a,
4410            > as alloy_sol_types::SolType>::Token<'a>;
4411            const SIGNATURE: &'static str = "InvalidReferenceBlocknumber()";
4412            const SELECTOR: [u8; 4] = [75u8, 135u8, 79u8, 69u8];
4413            #[inline]
4414            fn new<'a>(
4415                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4416            ) -> Self {
4417                tuple.into()
4418            }
4419            #[inline]
4420            fn tokenize(&self) -> Self::Token<'_> {
4421                ()
4422            }
4423        }
4424    };
4425    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4426    /**Custom error with signature `NoOngoingDeployment()` and selector `0xc8748ab4`.
4427```solidity
4428error NoOngoingDeployment();
4429```*/
4430    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4431    #[derive(Clone)]
4432    pub struct NoOngoingDeployment {}
4433    #[allow(
4434        non_camel_case_types,
4435        non_snake_case,
4436        clippy::pub_underscore_fields,
4437        clippy::style
4438    )]
4439    const _: () = {
4440        use alloy::sol_types as alloy_sol_types;
4441        #[doc(hidden)]
4442        type UnderlyingSolTuple<'a> = ();
4443        #[doc(hidden)]
4444        type UnderlyingRustTuple<'a> = ();
4445        #[cfg(test)]
4446        #[allow(dead_code, unreachable_patterns)]
4447        fn _type_assertion(
4448            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4449        ) {
4450            match _t {
4451                alloy_sol_types::private::AssertTypeEq::<
4452                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4453                >(_) => {}
4454            }
4455        }
4456        #[automatically_derived]
4457        #[doc(hidden)]
4458        impl ::core::convert::From<NoOngoingDeployment> for UnderlyingRustTuple<'_> {
4459            fn from(value: NoOngoingDeployment) -> Self {
4460                ()
4461            }
4462        }
4463        #[automatically_derived]
4464        #[doc(hidden)]
4465        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NoOngoingDeployment {
4466            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4467                Self {}
4468            }
4469        }
4470        #[automatically_derived]
4471        impl alloy_sol_types::SolError for NoOngoingDeployment {
4472            type Parameters<'a> = UnderlyingSolTuple<'a>;
4473            type Token<'a> = <Self::Parameters<
4474                'a,
4475            > as alloy_sol_types::SolType>::Token<'a>;
4476            const SIGNATURE: &'static str = "NoOngoingDeployment()";
4477            const SELECTOR: [u8; 4] = [200u8, 116u8, 138u8, 180u8];
4478            #[inline]
4479            fn new<'a>(
4480                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4481            ) -> Self {
4482                tuple.into()
4483            }
4484            #[inline]
4485            fn tokenize(&self) -> Self::Token<'_> {
4486                ()
4487            }
4488        }
4489    };
4490    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4491    /**Custom error with signature `NonSignerPubkeysNotSorted()` and selector `0xff719414`.
4492```solidity
4493error NonSignerPubkeysNotSorted();
4494```*/
4495    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4496    #[derive(Clone)]
4497    pub struct NonSignerPubkeysNotSorted {}
4498    #[allow(
4499        non_camel_case_types,
4500        non_snake_case,
4501        clippy::pub_underscore_fields,
4502        clippy::style
4503    )]
4504    const _: () = {
4505        use alloy::sol_types as alloy_sol_types;
4506        #[doc(hidden)]
4507        type UnderlyingSolTuple<'a> = ();
4508        #[doc(hidden)]
4509        type UnderlyingRustTuple<'a> = ();
4510        #[cfg(test)]
4511        #[allow(dead_code, unreachable_patterns)]
4512        fn _type_assertion(
4513            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4514        ) {
4515            match _t {
4516                alloy_sol_types::private::AssertTypeEq::<
4517                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4518                >(_) => {}
4519            }
4520        }
4521        #[automatically_derived]
4522        #[doc(hidden)]
4523        impl ::core::convert::From<NonSignerPubkeysNotSorted>
4524        for UnderlyingRustTuple<'_> {
4525            fn from(value: NonSignerPubkeysNotSorted) -> Self {
4526                ()
4527            }
4528        }
4529        #[automatically_derived]
4530        #[doc(hidden)]
4531        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4532        for NonSignerPubkeysNotSorted {
4533            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4534                Self {}
4535            }
4536        }
4537        #[automatically_derived]
4538        impl alloy_sol_types::SolError for NonSignerPubkeysNotSorted {
4539            type Parameters<'a> = UnderlyingSolTuple<'a>;
4540            type Token<'a> = <Self::Parameters<
4541                'a,
4542            > as alloy_sol_types::SolType>::Token<'a>;
4543            const SIGNATURE: &'static str = "NonSignerPubkeysNotSorted()";
4544            const SELECTOR: [u8; 4] = [255u8, 113u8, 148u8, 20u8];
4545            #[inline]
4546            fn new<'a>(
4547                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4548            ) -> Self {
4549                tuple.into()
4550            }
4551            #[inline]
4552            fn tokenize(&self) -> Self::Token<'_> {
4553                ()
4554            }
4555        }
4556    };
4557    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4558    /**Custom error with signature `OnlyRegistryCoordinatorOwner()` and selector `0xe0e1e762`.
4559```solidity
4560error OnlyRegistryCoordinatorOwner();
4561```*/
4562    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4563    #[derive(Clone)]
4564    pub struct OnlyRegistryCoordinatorOwner {}
4565    #[allow(
4566        non_camel_case_types,
4567        non_snake_case,
4568        clippy::pub_underscore_fields,
4569        clippy::style
4570    )]
4571    const _: () = {
4572        use alloy::sol_types as alloy_sol_types;
4573        #[doc(hidden)]
4574        type UnderlyingSolTuple<'a> = ();
4575        #[doc(hidden)]
4576        type UnderlyingRustTuple<'a> = ();
4577        #[cfg(test)]
4578        #[allow(dead_code, unreachable_patterns)]
4579        fn _type_assertion(
4580            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4581        ) {
4582            match _t {
4583                alloy_sol_types::private::AssertTypeEq::<
4584                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4585                >(_) => {}
4586            }
4587        }
4588        #[automatically_derived]
4589        #[doc(hidden)]
4590        impl ::core::convert::From<OnlyRegistryCoordinatorOwner>
4591        for UnderlyingRustTuple<'_> {
4592            fn from(value: OnlyRegistryCoordinatorOwner) -> Self {
4593                ()
4594            }
4595        }
4596        #[automatically_derived]
4597        #[doc(hidden)]
4598        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4599        for OnlyRegistryCoordinatorOwner {
4600            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4601                Self {}
4602            }
4603        }
4604        #[automatically_derived]
4605        impl alloy_sol_types::SolError for OnlyRegistryCoordinatorOwner {
4606            type Parameters<'a> = UnderlyingSolTuple<'a>;
4607            type Token<'a> = <Self::Parameters<
4608                'a,
4609            > as alloy_sol_types::SolType>::Token<'a>;
4610            const SIGNATURE: &'static str = "OnlyRegistryCoordinatorOwner()";
4611            const SELECTOR: [u8; 4] = [224u8, 225u8, 231u8, 98u8];
4612            #[inline]
4613            fn new<'a>(
4614                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4615            ) -> Self {
4616                tuple.into()
4617            }
4618            #[inline]
4619            fn tokenize(&self) -> Self::Token<'_> {
4620                ()
4621            }
4622        }
4623    };
4624    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4625    /**Custom error with signature `ScalarTooLarge()` and selector `0xff89d4fa`.
4626```solidity
4627error ScalarTooLarge();
4628```*/
4629    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4630    #[derive(Clone)]
4631    pub struct ScalarTooLarge {}
4632    #[allow(
4633        non_camel_case_types,
4634        non_snake_case,
4635        clippy::pub_underscore_fields,
4636        clippy::style
4637    )]
4638    const _: () = {
4639        use alloy::sol_types as alloy_sol_types;
4640        #[doc(hidden)]
4641        type UnderlyingSolTuple<'a> = ();
4642        #[doc(hidden)]
4643        type UnderlyingRustTuple<'a> = ();
4644        #[cfg(test)]
4645        #[allow(dead_code, unreachable_patterns)]
4646        fn _type_assertion(
4647            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4648        ) {
4649            match _t {
4650                alloy_sol_types::private::AssertTypeEq::<
4651                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4652                >(_) => {}
4653            }
4654        }
4655        #[automatically_derived]
4656        #[doc(hidden)]
4657        impl ::core::convert::From<ScalarTooLarge> for UnderlyingRustTuple<'_> {
4658            fn from(value: ScalarTooLarge) -> Self {
4659                ()
4660            }
4661        }
4662        #[automatically_derived]
4663        #[doc(hidden)]
4664        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ScalarTooLarge {
4665            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4666                Self {}
4667            }
4668        }
4669        #[automatically_derived]
4670        impl alloy_sol_types::SolError for ScalarTooLarge {
4671            type Parameters<'a> = UnderlyingSolTuple<'a>;
4672            type Token<'a> = <Self::Parameters<
4673                'a,
4674            > as alloy_sol_types::SolType>::Token<'a>;
4675            const SIGNATURE: &'static str = "ScalarTooLarge()";
4676            const SELECTOR: [u8; 4] = [255u8, 137u8, 212u8, 250u8];
4677            #[inline]
4678            fn new<'a>(
4679                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4680            ) -> Self {
4681                tuple.into()
4682            }
4683            #[inline]
4684            fn tokenize(&self) -> Self::Token<'_> {
4685                ()
4686            }
4687        }
4688    };
4689    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4690    /**Custom error with signature `StaleStakesForbidden()` and selector `0xaffc5edb`.
4691```solidity
4692error StaleStakesForbidden();
4693```*/
4694    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4695    #[derive(Clone)]
4696    pub struct StaleStakesForbidden {}
4697    #[allow(
4698        non_camel_case_types,
4699        non_snake_case,
4700        clippy::pub_underscore_fields,
4701        clippy::style
4702    )]
4703    const _: () = {
4704        use alloy::sol_types as alloy_sol_types;
4705        #[doc(hidden)]
4706        type UnderlyingSolTuple<'a> = ();
4707        #[doc(hidden)]
4708        type UnderlyingRustTuple<'a> = ();
4709        #[cfg(test)]
4710        #[allow(dead_code, unreachable_patterns)]
4711        fn _type_assertion(
4712            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4713        ) {
4714            match _t {
4715                alloy_sol_types::private::AssertTypeEq::<
4716                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4717                >(_) => {}
4718            }
4719        }
4720        #[automatically_derived]
4721        #[doc(hidden)]
4722        impl ::core::convert::From<StaleStakesForbidden> for UnderlyingRustTuple<'_> {
4723            fn from(value: StaleStakesForbidden) -> Self {
4724                ()
4725            }
4726        }
4727        #[automatically_derived]
4728        #[doc(hidden)]
4729        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StaleStakesForbidden {
4730            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4731                Self {}
4732            }
4733        }
4734        #[automatically_derived]
4735        impl alloy_sol_types::SolError for StaleStakesForbidden {
4736            type Parameters<'a> = UnderlyingSolTuple<'a>;
4737            type Token<'a> = <Self::Parameters<
4738                'a,
4739            > as alloy_sol_types::SolType>::Token<'a>;
4740            const SIGNATURE: &'static str = "StaleStakesForbidden()";
4741            const SELECTOR: [u8; 4] = [175u8, 252u8, 94u8, 219u8];
4742            #[inline]
4743            fn new<'a>(
4744                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4745            ) -> Self {
4746                tuple.into()
4747            }
4748            #[inline]
4749            fn tokenize(&self) -> Self::Token<'_> {
4750                ()
4751            }
4752        }
4753    };
4754    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4755    /**Custom error with signature `ZeroAddress()` and selector `0xd92e233d`.
4756```solidity
4757error ZeroAddress();
4758```*/
4759    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4760    #[derive(Clone)]
4761    pub struct ZeroAddress {}
4762    #[allow(
4763        non_camel_case_types,
4764        non_snake_case,
4765        clippy::pub_underscore_fields,
4766        clippy::style
4767    )]
4768    const _: () = {
4769        use alloy::sol_types as alloy_sol_types;
4770        #[doc(hidden)]
4771        type UnderlyingSolTuple<'a> = ();
4772        #[doc(hidden)]
4773        type UnderlyingRustTuple<'a> = ();
4774        #[cfg(test)]
4775        #[allow(dead_code, unreachable_patterns)]
4776        fn _type_assertion(
4777            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4778        ) {
4779            match _t {
4780                alloy_sol_types::private::AssertTypeEq::<
4781                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4782                >(_) => {}
4783            }
4784        }
4785        #[automatically_derived]
4786        #[doc(hidden)]
4787        impl ::core::convert::From<ZeroAddress> for UnderlyingRustTuple<'_> {
4788            fn from(value: ZeroAddress) -> Self {
4789                ()
4790            }
4791        }
4792        #[automatically_derived]
4793        #[doc(hidden)]
4794        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ZeroAddress {
4795            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4796                Self {}
4797            }
4798        }
4799        #[automatically_derived]
4800        impl alloy_sol_types::SolError for ZeroAddress {
4801            type Parameters<'a> = UnderlyingSolTuple<'a>;
4802            type Token<'a> = <Self::Parameters<
4803                'a,
4804            > as alloy_sol_types::SolType>::Token<'a>;
4805            const SIGNATURE: &'static str = "ZeroAddress()";
4806            const SELECTOR: [u8; 4] = [217u8, 46u8, 35u8, 61u8];
4807            #[inline]
4808            fn new<'a>(
4809                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4810            ) -> Self {
4811                tuple.into()
4812            }
4813            #[inline]
4814            fn tokenize(&self) -> Self::Token<'_> {
4815                ()
4816            }
4817        }
4818    };
4819    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4820    /**Custom error with signature `ZeroValue()` and selector `0x7c946ed7`.
4821```solidity
4822error ZeroValue();
4823```*/
4824    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4825    #[derive(Clone)]
4826    pub struct ZeroValue {}
4827    #[allow(
4828        non_camel_case_types,
4829        non_snake_case,
4830        clippy::pub_underscore_fields,
4831        clippy::style
4832    )]
4833    const _: () = {
4834        use alloy::sol_types as alloy_sol_types;
4835        #[doc(hidden)]
4836        type UnderlyingSolTuple<'a> = ();
4837        #[doc(hidden)]
4838        type UnderlyingRustTuple<'a> = ();
4839        #[cfg(test)]
4840        #[allow(dead_code, unreachable_patterns)]
4841        fn _type_assertion(
4842            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4843        ) {
4844            match _t {
4845                alloy_sol_types::private::AssertTypeEq::<
4846                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4847                >(_) => {}
4848            }
4849        }
4850        #[automatically_derived]
4851        #[doc(hidden)]
4852        impl ::core::convert::From<ZeroValue> for UnderlyingRustTuple<'_> {
4853            fn from(value: ZeroValue) -> Self {
4854                ()
4855            }
4856        }
4857        #[automatically_derived]
4858        #[doc(hidden)]
4859        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ZeroValue {
4860            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4861                Self {}
4862            }
4863        }
4864        #[automatically_derived]
4865        impl alloy_sol_types::SolError for ZeroValue {
4866            type Parameters<'a> = UnderlyingSolTuple<'a>;
4867            type Token<'a> = <Self::Parameters<
4868                'a,
4869            > as alloy_sol_types::SolType>::Token<'a>;
4870            const SIGNATURE: &'static str = "ZeroValue()";
4871            const SELECTOR: [u8; 4] = [124u8, 148u8, 110u8, 215u8];
4872            #[inline]
4873            fn new<'a>(
4874                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4875            ) -> Self {
4876                tuple.into()
4877            }
4878            #[inline]
4879            fn tokenize(&self) -> Self::Token<'_> {
4880                ()
4881            }
4882        }
4883    };
4884    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4885    /**Event with signature `AggregatorUpdated(address,address)` and selector `0x89baabef7dfd0683c0ac16fd2a8431c51b49fbe654c3f7b5ef19763e2ccd88f2`.
4886```solidity
4887event AggregatorUpdated(address indexed oldAggregator, address indexed newAggregator);
4888```*/
4889    #[allow(
4890        non_camel_case_types,
4891        non_snake_case,
4892        clippy::pub_underscore_fields,
4893        clippy::style
4894    )]
4895    #[derive(Clone)]
4896    pub struct AggregatorUpdated {
4897        #[allow(missing_docs)]
4898        pub oldAggregator: alloy::sol_types::private::Address,
4899        #[allow(missing_docs)]
4900        pub newAggregator: alloy::sol_types::private::Address,
4901    }
4902    #[allow(
4903        non_camel_case_types,
4904        non_snake_case,
4905        clippy::pub_underscore_fields,
4906        clippy::style
4907    )]
4908    const _: () = {
4909        use alloy::sol_types as alloy_sol_types;
4910        #[automatically_derived]
4911        impl alloy_sol_types::SolEvent for AggregatorUpdated {
4912            type DataTuple<'a> = ();
4913            type DataToken<'a> = <Self::DataTuple<
4914                'a,
4915            > as alloy_sol_types::SolType>::Token<'a>;
4916            type TopicList = (
4917                alloy_sol_types::sol_data::FixedBytes<32>,
4918                alloy::sol_types::sol_data::Address,
4919                alloy::sol_types::sol_data::Address,
4920            );
4921            const SIGNATURE: &'static str = "AggregatorUpdated(address,address)";
4922            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
4923                137u8, 186u8, 171u8, 239u8, 125u8, 253u8, 6u8, 131u8, 192u8, 172u8, 22u8,
4924                253u8, 42u8, 132u8, 49u8, 197u8, 27u8, 73u8, 251u8, 230u8, 84u8, 195u8,
4925                247u8, 181u8, 239u8, 25u8, 118u8, 62u8, 44u8, 205u8, 136u8, 242u8,
4926            ]);
4927            const ANONYMOUS: bool = false;
4928            #[allow(unused_variables)]
4929            #[inline]
4930            fn new(
4931                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
4932                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
4933            ) -> Self {
4934                Self {
4935                    oldAggregator: topics.1,
4936                    newAggregator: topics.2,
4937                }
4938            }
4939            #[inline]
4940            fn check_signature(
4941                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
4942            ) -> alloy_sol_types::Result<()> {
4943                if topics.0 != Self::SIGNATURE_HASH {
4944                    return Err(
4945                        alloy_sol_types::Error::invalid_event_signature_hash(
4946                            Self::SIGNATURE,
4947                            topics.0,
4948                            Self::SIGNATURE_HASH,
4949                        ),
4950                    );
4951                }
4952                Ok(())
4953            }
4954            #[inline]
4955            fn tokenize_body(&self) -> Self::DataToken<'_> {
4956                ()
4957            }
4958            #[inline]
4959            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
4960                (
4961                    Self::SIGNATURE_HASH.into(),
4962                    self.oldAggregator.clone(),
4963                    self.newAggregator.clone(),
4964                )
4965            }
4966            #[inline]
4967            fn encode_topics_raw(
4968                &self,
4969                out: &mut [alloy_sol_types::abi::token::WordToken],
4970            ) -> alloy_sol_types::Result<()> {
4971                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
4972                    return Err(alloy_sol_types::Error::Overrun);
4973                }
4974                out[0usize] = alloy_sol_types::abi::token::WordToken(
4975                    Self::SIGNATURE_HASH,
4976                );
4977                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
4978                    &self.oldAggregator,
4979                );
4980                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
4981                    &self.newAggregator,
4982                );
4983                Ok(())
4984            }
4985        }
4986        #[automatically_derived]
4987        impl alloy_sol_types::private::IntoLogData for AggregatorUpdated {
4988            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
4989                From::from(self)
4990            }
4991            fn into_log_data(self) -> alloy_sol_types::private::LogData {
4992                From::from(&self)
4993            }
4994        }
4995        #[automatically_derived]
4996        impl From<&AggregatorUpdated> for alloy_sol_types::private::LogData {
4997            #[inline]
4998            fn from(this: &AggregatorUpdated) -> alloy_sol_types::private::LogData {
4999                alloy_sol_types::SolEvent::encode_log_data(this)
5000            }
5001        }
5002    };
5003    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5004    /**Event with signature `GeneratorUpdated(address,address)` and selector `0x0ddfab8a635d71f15d72e2d2dff55d32119d13270d2ea4c3dc0043b66c2c476b`.
5005```solidity
5006event GeneratorUpdated(address indexed oldGenerator, address indexed newGenerator);
5007```*/
5008    #[allow(
5009        non_camel_case_types,
5010        non_snake_case,
5011        clippy::pub_underscore_fields,
5012        clippy::style
5013    )]
5014    #[derive(Clone)]
5015    pub struct GeneratorUpdated {
5016        #[allow(missing_docs)]
5017        pub oldGenerator: alloy::sol_types::private::Address,
5018        #[allow(missing_docs)]
5019        pub newGenerator: alloy::sol_types::private::Address,
5020    }
5021    #[allow(
5022        non_camel_case_types,
5023        non_snake_case,
5024        clippy::pub_underscore_fields,
5025        clippy::style
5026    )]
5027    const _: () = {
5028        use alloy::sol_types as alloy_sol_types;
5029        #[automatically_derived]
5030        impl alloy_sol_types::SolEvent for GeneratorUpdated {
5031            type DataTuple<'a> = ();
5032            type DataToken<'a> = <Self::DataTuple<
5033                'a,
5034            > as alloy_sol_types::SolType>::Token<'a>;
5035            type TopicList = (
5036                alloy_sol_types::sol_data::FixedBytes<32>,
5037                alloy::sol_types::sol_data::Address,
5038                alloy::sol_types::sol_data::Address,
5039            );
5040            const SIGNATURE: &'static str = "GeneratorUpdated(address,address)";
5041            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5042                13u8, 223u8, 171u8, 138u8, 99u8, 93u8, 113u8, 241u8, 93u8, 114u8, 226u8,
5043                210u8, 223u8, 245u8, 93u8, 50u8, 17u8, 157u8, 19u8, 39u8, 13u8, 46u8,
5044                164u8, 195u8, 220u8, 0u8, 67u8, 182u8, 108u8, 44u8, 71u8, 107u8,
5045            ]);
5046            const ANONYMOUS: bool = false;
5047            #[allow(unused_variables)]
5048            #[inline]
5049            fn new(
5050                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5051                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5052            ) -> Self {
5053                Self {
5054                    oldGenerator: topics.1,
5055                    newGenerator: topics.2,
5056                }
5057            }
5058            #[inline]
5059            fn check_signature(
5060                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5061            ) -> alloy_sol_types::Result<()> {
5062                if topics.0 != Self::SIGNATURE_HASH {
5063                    return Err(
5064                        alloy_sol_types::Error::invalid_event_signature_hash(
5065                            Self::SIGNATURE,
5066                            topics.0,
5067                            Self::SIGNATURE_HASH,
5068                        ),
5069                    );
5070                }
5071                Ok(())
5072            }
5073            #[inline]
5074            fn tokenize_body(&self) -> Self::DataToken<'_> {
5075                ()
5076            }
5077            #[inline]
5078            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5079                (
5080                    Self::SIGNATURE_HASH.into(),
5081                    self.oldGenerator.clone(),
5082                    self.newGenerator.clone(),
5083                )
5084            }
5085            #[inline]
5086            fn encode_topics_raw(
5087                &self,
5088                out: &mut [alloy_sol_types::abi::token::WordToken],
5089            ) -> alloy_sol_types::Result<()> {
5090                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5091                    return Err(alloy_sol_types::Error::Overrun);
5092                }
5093                out[0usize] = alloy_sol_types::abi::token::WordToken(
5094                    Self::SIGNATURE_HASH,
5095                );
5096                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5097                    &self.oldGenerator,
5098                );
5099                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5100                    &self.newGenerator,
5101                );
5102                Ok(())
5103            }
5104        }
5105        #[automatically_derived]
5106        impl alloy_sol_types::private::IntoLogData for GeneratorUpdated {
5107            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5108                From::from(self)
5109            }
5110            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5111                From::from(&self)
5112            }
5113        }
5114        #[automatically_derived]
5115        impl From<&GeneratorUpdated> for alloy_sol_types::private::LogData {
5116            #[inline]
5117            fn from(this: &GeneratorUpdated) -> alloy_sol_types::private::LogData {
5118                alloy_sol_types::SolEvent::encode_log_data(this)
5119            }
5120        }
5121    };
5122    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5123    /**Event with signature `Initialized(uint8)` and selector `0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498`.
5124```solidity
5125event Initialized(uint8 version);
5126```*/
5127    #[allow(
5128        non_camel_case_types,
5129        non_snake_case,
5130        clippy::pub_underscore_fields,
5131        clippy::style
5132    )]
5133    #[derive(Clone)]
5134    pub struct Initialized {
5135        #[allow(missing_docs)]
5136        pub version: u8,
5137    }
5138    #[allow(
5139        non_camel_case_types,
5140        non_snake_case,
5141        clippy::pub_underscore_fields,
5142        clippy::style
5143    )]
5144    const _: () = {
5145        use alloy::sol_types as alloy_sol_types;
5146        #[automatically_derived]
5147        impl alloy_sol_types::SolEvent for Initialized {
5148            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,);
5149            type DataToken<'a> = <Self::DataTuple<
5150                'a,
5151            > as alloy_sol_types::SolType>::Token<'a>;
5152            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
5153            const SIGNATURE: &'static str = "Initialized(uint8)";
5154            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5155                127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8,
5156                19u8, 56u8, 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8,
5157                146u8, 20u8, 96u8, 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8,
5158            ]);
5159            const ANONYMOUS: bool = false;
5160            #[allow(unused_variables)]
5161            #[inline]
5162            fn new(
5163                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5164                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5165            ) -> Self {
5166                Self { version: data.0 }
5167            }
5168            #[inline]
5169            fn check_signature(
5170                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5171            ) -> alloy_sol_types::Result<()> {
5172                if topics.0 != Self::SIGNATURE_HASH {
5173                    return Err(
5174                        alloy_sol_types::Error::invalid_event_signature_hash(
5175                            Self::SIGNATURE,
5176                            topics.0,
5177                            Self::SIGNATURE_HASH,
5178                        ),
5179                    );
5180                }
5181                Ok(())
5182            }
5183            #[inline]
5184            fn tokenize_body(&self) -> Self::DataToken<'_> {
5185                (
5186                    <alloy::sol_types::sol_data::Uint<
5187                        8,
5188                    > as alloy_sol_types::SolType>::tokenize(&self.version),
5189                )
5190            }
5191            #[inline]
5192            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5193                (Self::SIGNATURE_HASH.into(),)
5194            }
5195            #[inline]
5196            fn encode_topics_raw(
5197                &self,
5198                out: &mut [alloy_sol_types::abi::token::WordToken],
5199            ) -> alloy_sol_types::Result<()> {
5200                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5201                    return Err(alloy_sol_types::Error::Overrun);
5202                }
5203                out[0usize] = alloy_sol_types::abi::token::WordToken(
5204                    Self::SIGNATURE_HASH,
5205                );
5206                Ok(())
5207            }
5208        }
5209        #[automatically_derived]
5210        impl alloy_sol_types::private::IntoLogData for Initialized {
5211            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5212                From::from(self)
5213            }
5214            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5215                From::from(&self)
5216            }
5217        }
5218        #[automatically_derived]
5219        impl From<&Initialized> for alloy_sol_types::private::LogData {
5220            #[inline]
5221            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
5222                alloy_sol_types::SolEvent::encode_log_data(this)
5223            }
5224        }
5225    };
5226    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5227    /**Event with signature `NewTaskCreated(uint32,(uint32,uint32,bytes,bytes))` and selector `0xba37832bdd21742b86a633043b923a9aa978f1cfb2b274c6661eb573cf092bf0`.
5228```solidity
5229event NewTaskCreated(uint32 indexed taskIndex, TaskManager.Task task);
5230```*/
5231    #[allow(
5232        non_camel_case_types,
5233        non_snake_case,
5234        clippy::pub_underscore_fields,
5235        clippy::style
5236    )]
5237    #[derive(Clone)]
5238    pub struct NewTaskCreated {
5239        #[allow(missing_docs)]
5240        pub taskIndex: u32,
5241        #[allow(missing_docs)]
5242        pub task: <TaskManager::Task as alloy::sol_types::SolType>::RustType,
5243    }
5244    #[allow(
5245        non_camel_case_types,
5246        non_snake_case,
5247        clippy::pub_underscore_fields,
5248        clippy::style
5249    )]
5250    const _: () = {
5251        use alloy::sol_types as alloy_sol_types;
5252        #[automatically_derived]
5253        impl alloy_sol_types::SolEvent for NewTaskCreated {
5254            type DataTuple<'a> = (TaskManager::Task,);
5255            type DataToken<'a> = <Self::DataTuple<
5256                'a,
5257            > as alloy_sol_types::SolType>::Token<'a>;
5258            type TopicList = (
5259                alloy_sol_types::sol_data::FixedBytes<32>,
5260                alloy::sol_types::sol_data::Uint<32>,
5261            );
5262            const SIGNATURE: &'static str = "NewTaskCreated(uint32,(uint32,uint32,bytes,bytes))";
5263            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5264                186u8, 55u8, 131u8, 43u8, 221u8, 33u8, 116u8, 43u8, 134u8, 166u8, 51u8,
5265                4u8, 59u8, 146u8, 58u8, 154u8, 169u8, 120u8, 241u8, 207u8, 178u8, 178u8,
5266                116u8, 198u8, 102u8, 30u8, 181u8, 115u8, 207u8, 9u8, 43u8, 240u8,
5267            ]);
5268            const ANONYMOUS: bool = false;
5269            #[allow(unused_variables)]
5270            #[inline]
5271            fn new(
5272                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5273                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5274            ) -> Self {
5275                Self {
5276                    taskIndex: topics.1,
5277                    task: data.0,
5278                }
5279            }
5280            #[inline]
5281            fn check_signature(
5282                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5283            ) -> alloy_sol_types::Result<()> {
5284                if topics.0 != Self::SIGNATURE_HASH {
5285                    return Err(
5286                        alloy_sol_types::Error::invalid_event_signature_hash(
5287                            Self::SIGNATURE,
5288                            topics.0,
5289                            Self::SIGNATURE_HASH,
5290                        ),
5291                    );
5292                }
5293                Ok(())
5294            }
5295            #[inline]
5296            fn tokenize_body(&self) -> Self::DataToken<'_> {
5297                (<TaskManager::Task as alloy_sol_types::SolType>::tokenize(&self.task),)
5298            }
5299            #[inline]
5300            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5301                (Self::SIGNATURE_HASH.into(), self.taskIndex.clone())
5302            }
5303            #[inline]
5304            fn encode_topics_raw(
5305                &self,
5306                out: &mut [alloy_sol_types::abi::token::WordToken],
5307            ) -> alloy_sol_types::Result<()> {
5308                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5309                    return Err(alloy_sol_types::Error::Overrun);
5310                }
5311                out[0usize] = alloy_sol_types::abi::token::WordToken(
5312                    Self::SIGNATURE_HASH,
5313                );
5314                out[1usize] = <alloy::sol_types::sol_data::Uint<
5315                    32,
5316                > as alloy_sol_types::EventTopic>::encode_topic(&self.taskIndex);
5317                Ok(())
5318            }
5319        }
5320        #[automatically_derived]
5321        impl alloy_sol_types::private::IntoLogData for NewTaskCreated {
5322            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5323                From::from(self)
5324            }
5325            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5326                From::from(&self)
5327            }
5328        }
5329        #[automatically_derived]
5330        impl From<&NewTaskCreated> for alloy_sol_types::private::LogData {
5331            #[inline]
5332            fn from(this: &NewTaskCreated) -> alloy_sol_types::private::LogData {
5333                alloy_sol_types::SolEvent::encode_log_data(this)
5334            }
5335        }
5336    };
5337    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5338    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
5339```solidity
5340event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
5341```*/
5342    #[allow(
5343        non_camel_case_types,
5344        non_snake_case,
5345        clippy::pub_underscore_fields,
5346        clippy::style
5347    )]
5348    #[derive(Clone)]
5349    pub struct OwnershipTransferred {
5350        #[allow(missing_docs)]
5351        pub previousOwner: alloy::sol_types::private::Address,
5352        #[allow(missing_docs)]
5353        pub newOwner: alloy::sol_types::private::Address,
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 OwnershipTransferred {
5365            type DataTuple<'a> = ();
5366            type DataToken<'a> = <Self::DataTuple<
5367                'a,
5368            > as alloy_sol_types::SolType>::Token<'a>;
5369            type TopicList = (
5370                alloy_sol_types::sol_data::FixedBytes<32>,
5371                alloy::sol_types::sol_data::Address,
5372                alloy::sol_types::sol_data::Address,
5373            );
5374            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
5375            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5376                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
5377                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
5378                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
5379            ]);
5380            const ANONYMOUS: bool = false;
5381            #[allow(unused_variables)]
5382            #[inline]
5383            fn new(
5384                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5385                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5386            ) -> Self {
5387                Self {
5388                    previousOwner: topics.1,
5389                    newOwner: topics.2,
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(
5398                        alloy_sol_types::Error::invalid_event_signature_hash(
5399                            Self::SIGNATURE,
5400                            topics.0,
5401                            Self::SIGNATURE_HASH,
5402                        ),
5403                    );
5404                }
5405                Ok(())
5406            }
5407            #[inline]
5408            fn tokenize_body(&self) -> Self::DataToken<'_> {
5409                ()
5410            }
5411            #[inline]
5412            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5413                (
5414                    Self::SIGNATURE_HASH.into(),
5415                    self.previousOwner.clone(),
5416                    self.newOwner.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(
5428                    Self::SIGNATURE_HASH,
5429                );
5430                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5431                    &self.previousOwner,
5432                );
5433                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5434                    &self.newOwner,
5435                );
5436                Ok(())
5437            }
5438        }
5439        #[automatically_derived]
5440        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
5441            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5442                From::from(self)
5443            }
5444            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5445                From::from(&self)
5446            }
5447        }
5448        #[automatically_derived]
5449        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
5450            #[inline]
5451            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
5452                alloy_sol_types::SolEvent::encode_log_data(this)
5453            }
5454        }
5455    };
5456    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5457    /**Event with signature `SquaringTaskCompleted(uint256,uint256)` and selector `0xa7a707dd7f4ca00fe1afcd34df7ebb6c47f23880c34d254cc312e5c41e3974c5`.
5458```solidity
5459event SquaringTaskCompleted(uint256 number, uint256 result);
5460```*/
5461    #[allow(
5462        non_camel_case_types,
5463        non_snake_case,
5464        clippy::pub_underscore_fields,
5465        clippy::style
5466    )]
5467    #[derive(Clone)]
5468    pub struct SquaringTaskCompleted {
5469        #[allow(missing_docs)]
5470        pub number: alloy::sol_types::private::primitives::aliases::U256,
5471        #[allow(missing_docs)]
5472        pub result: alloy::sol_types::private::primitives::aliases::U256,
5473    }
5474    #[allow(
5475        non_camel_case_types,
5476        non_snake_case,
5477        clippy::pub_underscore_fields,
5478        clippy::style
5479    )]
5480    const _: () = {
5481        use alloy::sol_types as alloy_sol_types;
5482        #[automatically_derived]
5483        impl alloy_sol_types::SolEvent for SquaringTaskCompleted {
5484            type DataTuple<'a> = (
5485                alloy::sol_types::sol_data::Uint<256>,
5486                alloy::sol_types::sol_data::Uint<256>,
5487            );
5488            type DataToken<'a> = <Self::DataTuple<
5489                'a,
5490            > as alloy_sol_types::SolType>::Token<'a>;
5491            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
5492            const SIGNATURE: &'static str = "SquaringTaskCompleted(uint256,uint256)";
5493            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5494                167u8, 167u8, 7u8, 221u8, 127u8, 76u8, 160u8, 15u8, 225u8, 175u8, 205u8,
5495                52u8, 223u8, 126u8, 187u8, 108u8, 71u8, 242u8, 56u8, 128u8, 195u8, 77u8,
5496                37u8, 76u8, 195u8, 18u8, 229u8, 196u8, 30u8, 57u8, 116u8, 197u8,
5497            ]);
5498            const ANONYMOUS: bool = false;
5499            #[allow(unused_variables)]
5500            #[inline]
5501            fn new(
5502                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5503                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5504            ) -> Self {
5505                Self {
5506                    number: data.0,
5507                    result: data.1,
5508                }
5509            }
5510            #[inline]
5511            fn check_signature(
5512                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5513            ) -> alloy_sol_types::Result<()> {
5514                if topics.0 != Self::SIGNATURE_HASH {
5515                    return Err(
5516                        alloy_sol_types::Error::invalid_event_signature_hash(
5517                            Self::SIGNATURE,
5518                            topics.0,
5519                            Self::SIGNATURE_HASH,
5520                        ),
5521                    );
5522                }
5523                Ok(())
5524            }
5525            #[inline]
5526            fn tokenize_body(&self) -> Self::DataToken<'_> {
5527                (
5528                    <alloy::sol_types::sol_data::Uint<
5529                        256,
5530                    > as alloy_sol_types::SolType>::tokenize(&self.number),
5531                    <alloy::sol_types::sol_data::Uint<
5532                        256,
5533                    > as alloy_sol_types::SolType>::tokenize(&self.result),
5534                )
5535            }
5536            #[inline]
5537            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5538                (Self::SIGNATURE_HASH.into(),)
5539            }
5540            #[inline]
5541            fn encode_topics_raw(
5542                &self,
5543                out: &mut [alloy_sol_types::abi::token::WordToken],
5544            ) -> alloy_sol_types::Result<()> {
5545                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5546                    return Err(alloy_sol_types::Error::Overrun);
5547                }
5548                out[0usize] = alloy_sol_types::abi::token::WordToken(
5549                    Self::SIGNATURE_HASH,
5550                );
5551                Ok(())
5552            }
5553        }
5554        #[automatically_derived]
5555        impl alloy_sol_types::private::IntoLogData for SquaringTaskCompleted {
5556            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5557                From::from(self)
5558            }
5559            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5560                From::from(&self)
5561            }
5562        }
5563        #[automatically_derived]
5564        impl From<&SquaringTaskCompleted> for alloy_sol_types::private::LogData {
5565            #[inline]
5566            fn from(this: &SquaringTaskCompleted) -> alloy_sol_types::private::LogData {
5567                alloy_sol_types::SolEvent::encode_log_data(this)
5568            }
5569        }
5570    };
5571    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5572    /**Event with signature `StaleStakesForbiddenUpdate(bool)` and selector `0x40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc`.
5573```solidity
5574event StaleStakesForbiddenUpdate(bool value);
5575```*/
5576    #[allow(
5577        non_camel_case_types,
5578        non_snake_case,
5579        clippy::pub_underscore_fields,
5580        clippy::style
5581    )]
5582    #[derive(Clone)]
5583    pub struct StaleStakesForbiddenUpdate {
5584        #[allow(missing_docs)]
5585        pub value: bool,
5586    }
5587    #[allow(
5588        non_camel_case_types,
5589        non_snake_case,
5590        clippy::pub_underscore_fields,
5591        clippy::style
5592    )]
5593    const _: () = {
5594        use alloy::sol_types as alloy_sol_types;
5595        #[automatically_derived]
5596        impl alloy_sol_types::SolEvent for StaleStakesForbiddenUpdate {
5597            type DataTuple<'a> = (alloy::sol_types::sol_data::Bool,);
5598            type DataToken<'a> = <Self::DataTuple<
5599                'a,
5600            > as alloy_sol_types::SolType>::Token<'a>;
5601            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
5602            const SIGNATURE: &'static str = "StaleStakesForbiddenUpdate(bool)";
5603            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5604                64u8, 228u8, 237u8, 136u8, 10u8, 41u8, 224u8, 246u8, 221u8, 206u8, 48u8,
5605                116u8, 87u8, 251u8, 117u8, 205u8, 223u8, 79u8, 238u8, 247u8, 211u8,
5606                236u8, 176u8, 48u8, 27u8, 253u8, 244u8, 151u8, 106u8, 14u8, 45u8, 252u8,
5607            ]);
5608            const ANONYMOUS: bool = false;
5609            #[allow(unused_variables)]
5610            #[inline]
5611            fn new(
5612                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5613                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5614            ) -> Self {
5615                Self { value: data.0 }
5616            }
5617            #[inline]
5618            fn check_signature(
5619                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5620            ) -> alloy_sol_types::Result<()> {
5621                if topics.0 != Self::SIGNATURE_HASH {
5622                    return Err(
5623                        alloy_sol_types::Error::invalid_event_signature_hash(
5624                            Self::SIGNATURE,
5625                            topics.0,
5626                            Self::SIGNATURE_HASH,
5627                        ),
5628                    );
5629                }
5630                Ok(())
5631            }
5632            #[inline]
5633            fn tokenize_body(&self) -> Self::DataToken<'_> {
5634                (
5635                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
5636                        &self.value,
5637                    ),
5638                )
5639            }
5640            #[inline]
5641            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5642                (Self::SIGNATURE_HASH.into(),)
5643            }
5644            #[inline]
5645            fn encode_topics_raw(
5646                &self,
5647                out: &mut [alloy_sol_types::abi::token::WordToken],
5648            ) -> alloy_sol_types::Result<()> {
5649                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5650                    return Err(alloy_sol_types::Error::Overrun);
5651                }
5652                out[0usize] = alloy_sol_types::abi::token::WordToken(
5653                    Self::SIGNATURE_HASH,
5654                );
5655                Ok(())
5656            }
5657        }
5658        #[automatically_derived]
5659        impl alloy_sol_types::private::IntoLogData for StaleStakesForbiddenUpdate {
5660            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5661                From::from(self)
5662            }
5663            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5664                From::from(&self)
5665            }
5666        }
5667        #[automatically_derived]
5668        impl From<&StaleStakesForbiddenUpdate> for alloy_sol_types::private::LogData {
5669            #[inline]
5670            fn from(
5671                this: &StaleStakesForbiddenUpdate,
5672            ) -> alloy_sol_types::private::LogData {
5673                alloy_sol_types::SolEvent::encode_log_data(this)
5674            }
5675        }
5676    };
5677    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5678    /**Event with signature `TaskResponded((uint32,bytes),(uint32,bytes32))` and selector `0x9b96c981c7c70a9f1702abb044782746c11d090f58ea34b12daf2cc53cf8ab5f`.
5679```solidity
5680event TaskResponded(TaskManager.TaskResponse taskResponse, TaskManager.TaskResponseMetadata taskResponseMetadata);
5681```*/
5682    #[allow(
5683        non_camel_case_types,
5684        non_snake_case,
5685        clippy::pub_underscore_fields,
5686        clippy::style
5687    )]
5688    #[derive(Clone)]
5689    pub struct TaskResponded {
5690        #[allow(missing_docs)]
5691        pub taskResponse: <TaskManager::TaskResponse as alloy::sol_types::SolType>::RustType,
5692        #[allow(missing_docs)]
5693        pub taskResponseMetadata: <TaskManager::TaskResponseMetadata as alloy::sol_types::SolType>::RustType,
5694    }
5695    #[allow(
5696        non_camel_case_types,
5697        non_snake_case,
5698        clippy::pub_underscore_fields,
5699        clippy::style
5700    )]
5701    const _: () = {
5702        use alloy::sol_types as alloy_sol_types;
5703        #[automatically_derived]
5704        impl alloy_sol_types::SolEvent for TaskResponded {
5705            type DataTuple<'a> = (
5706                TaskManager::TaskResponse,
5707                TaskManager::TaskResponseMetadata,
5708            );
5709            type DataToken<'a> = <Self::DataTuple<
5710                'a,
5711            > as alloy_sol_types::SolType>::Token<'a>;
5712            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
5713            const SIGNATURE: &'static str = "TaskResponded((uint32,bytes),(uint32,bytes32))";
5714            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5715                155u8, 150u8, 201u8, 129u8, 199u8, 199u8, 10u8, 159u8, 23u8, 2u8, 171u8,
5716                176u8, 68u8, 120u8, 39u8, 70u8, 193u8, 29u8, 9u8, 15u8, 88u8, 234u8,
5717                52u8, 177u8, 45u8, 175u8, 44u8, 197u8, 60u8, 248u8, 171u8, 95u8,
5718            ]);
5719            const ANONYMOUS: bool = false;
5720            #[allow(unused_variables)]
5721            #[inline]
5722            fn new(
5723                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5724                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5725            ) -> Self {
5726                Self {
5727                    taskResponse: data.0,
5728                    taskResponseMetadata: data.1,
5729                }
5730            }
5731            #[inline]
5732            fn check_signature(
5733                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5734            ) -> alloy_sol_types::Result<()> {
5735                if topics.0 != Self::SIGNATURE_HASH {
5736                    return Err(
5737                        alloy_sol_types::Error::invalid_event_signature_hash(
5738                            Self::SIGNATURE,
5739                            topics.0,
5740                            Self::SIGNATURE_HASH,
5741                        ),
5742                    );
5743                }
5744                Ok(())
5745            }
5746            #[inline]
5747            fn tokenize_body(&self) -> Self::DataToken<'_> {
5748                (
5749                    <TaskManager::TaskResponse as alloy_sol_types::SolType>::tokenize(
5750                        &self.taskResponse,
5751                    ),
5752                    <TaskManager::TaskResponseMetadata as alloy_sol_types::SolType>::tokenize(
5753                        &self.taskResponseMetadata,
5754                    ),
5755                )
5756            }
5757            #[inline]
5758            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5759                (Self::SIGNATURE_HASH.into(),)
5760            }
5761            #[inline]
5762            fn encode_topics_raw(
5763                &self,
5764                out: &mut [alloy_sol_types::abi::token::WordToken],
5765            ) -> alloy_sol_types::Result<()> {
5766                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5767                    return Err(alloy_sol_types::Error::Overrun);
5768                }
5769                out[0usize] = alloy_sol_types::abi::token::WordToken(
5770                    Self::SIGNATURE_HASH,
5771                );
5772                Ok(())
5773            }
5774        }
5775        #[automatically_derived]
5776        impl alloy_sol_types::private::IntoLogData for TaskResponded {
5777            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5778                From::from(self)
5779            }
5780            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5781                From::from(&self)
5782            }
5783        }
5784        #[automatically_derived]
5785        impl From<&TaskResponded> for alloy_sol_types::private::LogData {
5786            #[inline]
5787            fn from(this: &TaskResponded) -> alloy_sol_types::private::LogData {
5788                alloy_sol_types::SolEvent::encode_log_data(this)
5789            }
5790        }
5791    };
5792    /**Constructor`.
5793```solidity
5794constructor(address _registryCoordinator, uint32 _taskResponseWindowBlock);
5795```*/
5796    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5797    #[derive(Clone)]
5798    pub struct constructorCall {
5799        #[allow(missing_docs)]
5800        pub _registryCoordinator: alloy::sol_types::private::Address,
5801        #[allow(missing_docs)]
5802        pub _taskResponseWindowBlock: u32,
5803    }
5804    const _: () = {
5805        use alloy::sol_types as alloy_sol_types;
5806        {
5807            #[doc(hidden)]
5808            type UnderlyingSolTuple<'a> = (
5809                alloy::sol_types::sol_data::Address,
5810                alloy::sol_types::sol_data::Uint<32>,
5811            );
5812            #[doc(hidden)]
5813            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address, u32);
5814            #[cfg(test)]
5815            #[allow(dead_code, unreachable_patterns)]
5816            fn _type_assertion(
5817                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5818            ) {
5819                match _t {
5820                    alloy_sol_types::private::AssertTypeEq::<
5821                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5822                    >(_) => {}
5823                }
5824            }
5825            #[automatically_derived]
5826            #[doc(hidden)]
5827            impl ::core::convert::From<constructorCall> for UnderlyingRustTuple<'_> {
5828                fn from(value: constructorCall) -> Self {
5829                    (value._registryCoordinator, value._taskResponseWindowBlock)
5830                }
5831            }
5832            #[automatically_derived]
5833            #[doc(hidden)]
5834            impl ::core::convert::From<UnderlyingRustTuple<'_>> for constructorCall {
5835                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5836                    Self {
5837                        _registryCoordinator: tuple.0,
5838                        _taskResponseWindowBlock: tuple.1,
5839                    }
5840                }
5841            }
5842        }
5843        #[automatically_derived]
5844        impl alloy_sol_types::SolConstructor for constructorCall {
5845            type Parameters<'a> = (
5846                alloy::sol_types::sol_data::Address,
5847                alloy::sol_types::sol_data::Uint<32>,
5848            );
5849            type Token<'a> = <Self::Parameters<
5850                'a,
5851            > as alloy_sol_types::SolType>::Token<'a>;
5852            #[inline]
5853            fn new<'a>(
5854                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5855            ) -> Self {
5856                tuple.into()
5857            }
5858            #[inline]
5859            fn tokenize(&self) -> Self::Token<'_> {
5860                (
5861                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5862                        &self._registryCoordinator,
5863                    ),
5864                    <alloy::sol_types::sol_data::Uint<
5865                        32,
5866                    > as alloy_sol_types::SolType>::tokenize(
5867                        &self._taskResponseWindowBlock,
5868                    ),
5869                )
5870            }
5871        }
5872    };
5873    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5874    /**Function with signature `TASK_RESPONSE_WINDOW_BLOCK()` and selector `0x1ad43189`.
5875```solidity
5876function TASK_RESPONSE_WINDOW_BLOCK() external view returns (uint32);
5877```*/
5878    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5879    #[derive(Clone)]
5880    pub struct TASK_RESPONSE_WINDOW_BLOCKCall {}
5881    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5882    ///Container type for the return parameters of the [`TASK_RESPONSE_WINDOW_BLOCK()`](TASK_RESPONSE_WINDOW_BLOCKCall) function.
5883    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5884    #[derive(Clone)]
5885    pub struct TASK_RESPONSE_WINDOW_BLOCKReturn {
5886        #[allow(missing_docs)]
5887        pub _0: u32,
5888    }
5889    #[allow(
5890        non_camel_case_types,
5891        non_snake_case,
5892        clippy::pub_underscore_fields,
5893        clippy::style
5894    )]
5895    const _: () = {
5896        use alloy::sol_types as alloy_sol_types;
5897        {
5898            #[doc(hidden)]
5899            type UnderlyingSolTuple<'a> = ();
5900            #[doc(hidden)]
5901            type UnderlyingRustTuple<'a> = ();
5902            #[cfg(test)]
5903            #[allow(dead_code, unreachable_patterns)]
5904            fn _type_assertion(
5905                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5906            ) {
5907                match _t {
5908                    alloy_sol_types::private::AssertTypeEq::<
5909                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5910                    >(_) => {}
5911                }
5912            }
5913            #[automatically_derived]
5914            #[doc(hidden)]
5915            impl ::core::convert::From<TASK_RESPONSE_WINDOW_BLOCKCall>
5916            for UnderlyingRustTuple<'_> {
5917                fn from(value: TASK_RESPONSE_WINDOW_BLOCKCall) -> Self {
5918                    ()
5919                }
5920            }
5921            #[automatically_derived]
5922            #[doc(hidden)]
5923            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5924            for TASK_RESPONSE_WINDOW_BLOCKCall {
5925                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5926                    Self {}
5927                }
5928            }
5929        }
5930        {
5931            #[doc(hidden)]
5932            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
5933            #[doc(hidden)]
5934            type UnderlyingRustTuple<'a> = (u32,);
5935            #[cfg(test)]
5936            #[allow(dead_code, unreachable_patterns)]
5937            fn _type_assertion(
5938                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5939            ) {
5940                match _t {
5941                    alloy_sol_types::private::AssertTypeEq::<
5942                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5943                    >(_) => {}
5944                }
5945            }
5946            #[automatically_derived]
5947            #[doc(hidden)]
5948            impl ::core::convert::From<TASK_RESPONSE_WINDOW_BLOCKReturn>
5949            for UnderlyingRustTuple<'_> {
5950                fn from(value: TASK_RESPONSE_WINDOW_BLOCKReturn) -> Self {
5951                    (value._0,)
5952                }
5953            }
5954            #[automatically_derived]
5955            #[doc(hidden)]
5956            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5957            for TASK_RESPONSE_WINDOW_BLOCKReturn {
5958                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5959                    Self { _0: tuple.0 }
5960                }
5961            }
5962        }
5963        #[automatically_derived]
5964        impl alloy_sol_types::SolCall for TASK_RESPONSE_WINDOW_BLOCKCall {
5965            type Parameters<'a> = ();
5966            type Token<'a> = <Self::Parameters<
5967                'a,
5968            > as alloy_sol_types::SolType>::Token<'a>;
5969            type Return = TASK_RESPONSE_WINDOW_BLOCKReturn;
5970            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
5971            type ReturnToken<'a> = <Self::ReturnTuple<
5972                'a,
5973            > as alloy_sol_types::SolType>::Token<'a>;
5974            const SIGNATURE: &'static str = "TASK_RESPONSE_WINDOW_BLOCK()";
5975            const SELECTOR: [u8; 4] = [26u8, 212u8, 49u8, 137u8];
5976            #[inline]
5977            fn new<'a>(
5978                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5979            ) -> Self {
5980                tuple.into()
5981            }
5982            #[inline]
5983            fn tokenize(&self) -> Self::Token<'_> {
5984                ()
5985            }
5986            #[inline]
5987            fn abi_decode_returns(
5988                data: &[u8],
5989                validate: bool,
5990            ) -> alloy_sol_types::Result<Self::Return> {
5991                <Self::ReturnTuple<
5992                    '_,
5993                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
5994                    .map(Into::into)
5995            }
5996        }
5997    };
5998    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5999    /**Function with signature `__TaskManager_init(address,address,address)` and selector `0x5919d07e`.
6000```solidity
6001function __TaskManager_init(address _aggregator, address _generator, address initialOwner) external;
6002```*/
6003    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6004    #[derive(Clone)]
6005    pub struct __TaskManager_initCall {
6006        #[allow(missing_docs)]
6007        pub _aggregator: alloy::sol_types::private::Address,
6008        #[allow(missing_docs)]
6009        pub _generator: alloy::sol_types::private::Address,
6010        #[allow(missing_docs)]
6011        pub initialOwner: alloy::sol_types::private::Address,
6012    }
6013    ///Container type for the return parameters of the [`__TaskManager_init(address,address,address)`](__TaskManager_initCall) function.
6014    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6015    #[derive(Clone)]
6016    pub struct __TaskManager_initReturn {}
6017    #[allow(
6018        non_camel_case_types,
6019        non_snake_case,
6020        clippy::pub_underscore_fields,
6021        clippy::style
6022    )]
6023    const _: () = {
6024        use alloy::sol_types as alloy_sol_types;
6025        {
6026            #[doc(hidden)]
6027            type UnderlyingSolTuple<'a> = (
6028                alloy::sol_types::sol_data::Address,
6029                alloy::sol_types::sol_data::Address,
6030                alloy::sol_types::sol_data::Address,
6031            );
6032            #[doc(hidden)]
6033            type UnderlyingRustTuple<'a> = (
6034                alloy::sol_types::private::Address,
6035                alloy::sol_types::private::Address,
6036                alloy::sol_types::private::Address,
6037            );
6038            #[cfg(test)]
6039            #[allow(dead_code, unreachable_patterns)]
6040            fn _type_assertion(
6041                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6042            ) {
6043                match _t {
6044                    alloy_sol_types::private::AssertTypeEq::<
6045                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6046                    >(_) => {}
6047                }
6048            }
6049            #[automatically_derived]
6050            #[doc(hidden)]
6051            impl ::core::convert::From<__TaskManager_initCall>
6052            for UnderlyingRustTuple<'_> {
6053                fn from(value: __TaskManager_initCall) -> Self {
6054                    (value._aggregator, value._generator, value.initialOwner)
6055                }
6056            }
6057            #[automatically_derived]
6058            #[doc(hidden)]
6059            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6060            for __TaskManager_initCall {
6061                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6062                    Self {
6063                        _aggregator: tuple.0,
6064                        _generator: tuple.1,
6065                        initialOwner: tuple.2,
6066                    }
6067                }
6068            }
6069        }
6070        {
6071            #[doc(hidden)]
6072            type UnderlyingSolTuple<'a> = ();
6073            #[doc(hidden)]
6074            type UnderlyingRustTuple<'a> = ();
6075            #[cfg(test)]
6076            #[allow(dead_code, unreachable_patterns)]
6077            fn _type_assertion(
6078                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6079            ) {
6080                match _t {
6081                    alloy_sol_types::private::AssertTypeEq::<
6082                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6083                    >(_) => {}
6084                }
6085            }
6086            #[automatically_derived]
6087            #[doc(hidden)]
6088            impl ::core::convert::From<__TaskManager_initReturn>
6089            for UnderlyingRustTuple<'_> {
6090                fn from(value: __TaskManager_initReturn) -> Self {
6091                    ()
6092                }
6093            }
6094            #[automatically_derived]
6095            #[doc(hidden)]
6096            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6097            for __TaskManager_initReturn {
6098                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6099                    Self {}
6100                }
6101            }
6102        }
6103        #[automatically_derived]
6104        impl alloy_sol_types::SolCall for __TaskManager_initCall {
6105            type Parameters<'a> = (
6106                alloy::sol_types::sol_data::Address,
6107                alloy::sol_types::sol_data::Address,
6108                alloy::sol_types::sol_data::Address,
6109            );
6110            type Token<'a> = <Self::Parameters<
6111                'a,
6112            > as alloy_sol_types::SolType>::Token<'a>;
6113            type Return = __TaskManager_initReturn;
6114            type ReturnTuple<'a> = ();
6115            type ReturnToken<'a> = <Self::ReturnTuple<
6116                'a,
6117            > as alloy_sol_types::SolType>::Token<'a>;
6118            const SIGNATURE: &'static str = "__TaskManager_init(address,address,address)";
6119            const SELECTOR: [u8; 4] = [89u8, 25u8, 208u8, 126u8];
6120            #[inline]
6121            fn new<'a>(
6122                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6123            ) -> Self {
6124                tuple.into()
6125            }
6126            #[inline]
6127            fn tokenize(&self) -> Self::Token<'_> {
6128                (
6129                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6130                        &self._aggregator,
6131                    ),
6132                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6133                        &self._generator,
6134                    ),
6135                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6136                        &self.initialOwner,
6137                    ),
6138                )
6139            }
6140            #[inline]
6141            fn abi_decode_returns(
6142                data: &[u8],
6143                validate: bool,
6144            ) -> alloy_sol_types::Result<Self::Return> {
6145                <Self::ReturnTuple<
6146                    '_,
6147                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
6148                    .map(Into::into)
6149            }
6150        }
6151    };
6152    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6153    /**Function with signature `aggregator()` and selector `0x245a7bfc`.
6154```solidity
6155function aggregator() external view returns (address);
6156```*/
6157    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6158    #[derive(Clone)]
6159    pub struct aggregatorCall {}
6160    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6161    ///Container type for the return parameters of the [`aggregator()`](aggregatorCall) function.
6162    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6163    #[derive(Clone)]
6164    pub struct aggregatorReturn {
6165        #[allow(missing_docs)]
6166        pub _0: alloy::sol_types::private::Address,
6167    }
6168    #[allow(
6169        non_camel_case_types,
6170        non_snake_case,
6171        clippy::pub_underscore_fields,
6172        clippy::style
6173    )]
6174    const _: () = {
6175        use alloy::sol_types as alloy_sol_types;
6176        {
6177            #[doc(hidden)]
6178            type UnderlyingSolTuple<'a> = ();
6179            #[doc(hidden)]
6180            type UnderlyingRustTuple<'a> = ();
6181            #[cfg(test)]
6182            #[allow(dead_code, unreachable_patterns)]
6183            fn _type_assertion(
6184                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6185            ) {
6186                match _t {
6187                    alloy_sol_types::private::AssertTypeEq::<
6188                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6189                    >(_) => {}
6190                }
6191            }
6192            #[automatically_derived]
6193            #[doc(hidden)]
6194            impl ::core::convert::From<aggregatorCall> for UnderlyingRustTuple<'_> {
6195                fn from(value: aggregatorCall) -> Self {
6196                    ()
6197                }
6198            }
6199            #[automatically_derived]
6200            #[doc(hidden)]
6201            impl ::core::convert::From<UnderlyingRustTuple<'_>> for aggregatorCall {
6202                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6203                    Self {}
6204                }
6205            }
6206        }
6207        {
6208            #[doc(hidden)]
6209            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6210            #[doc(hidden)]
6211            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6212            #[cfg(test)]
6213            #[allow(dead_code, unreachable_patterns)]
6214            fn _type_assertion(
6215                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6216            ) {
6217                match _t {
6218                    alloy_sol_types::private::AssertTypeEq::<
6219                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6220                    >(_) => {}
6221                }
6222            }
6223            #[automatically_derived]
6224            #[doc(hidden)]
6225            impl ::core::convert::From<aggregatorReturn> for UnderlyingRustTuple<'_> {
6226                fn from(value: aggregatorReturn) -> Self {
6227                    (value._0,)
6228                }
6229            }
6230            #[automatically_derived]
6231            #[doc(hidden)]
6232            impl ::core::convert::From<UnderlyingRustTuple<'_>> for aggregatorReturn {
6233                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6234                    Self { _0: tuple.0 }
6235                }
6236            }
6237        }
6238        #[automatically_derived]
6239        impl alloy_sol_types::SolCall for aggregatorCall {
6240            type Parameters<'a> = ();
6241            type Token<'a> = <Self::Parameters<
6242                'a,
6243            > as alloy_sol_types::SolType>::Token<'a>;
6244            type Return = aggregatorReturn;
6245            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
6246            type ReturnToken<'a> = <Self::ReturnTuple<
6247                'a,
6248            > as alloy_sol_types::SolType>::Token<'a>;
6249            const SIGNATURE: &'static str = "aggregator()";
6250            const SELECTOR: [u8; 4] = [36u8, 90u8, 123u8, 252u8];
6251            #[inline]
6252            fn new<'a>(
6253                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6254            ) -> Self {
6255                tuple.into()
6256            }
6257            #[inline]
6258            fn tokenize(&self) -> Self::Token<'_> {
6259                ()
6260            }
6261            #[inline]
6262            fn abi_decode_returns(
6263                data: &[u8],
6264                validate: bool,
6265            ) -> alloy_sol_types::Result<Self::Return> {
6266                <Self::ReturnTuple<
6267                    '_,
6268                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
6269                    .map(Into::into)
6270            }
6271        }
6272    };
6273    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6274    /**Function with signature `allTaskHashes(uint32)` and selector `0x2d89f6fc`.
6275```solidity
6276function allTaskHashes(uint32) external view returns (bytes32);
6277```*/
6278    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6279    #[derive(Clone)]
6280    pub struct allTaskHashesCall {
6281        #[allow(missing_docs)]
6282        pub _0: u32,
6283    }
6284    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6285    ///Container type for the return parameters of the [`allTaskHashes(uint32)`](allTaskHashesCall) function.
6286    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6287    #[derive(Clone)]
6288    pub struct allTaskHashesReturn {
6289        #[allow(missing_docs)]
6290        pub _0: alloy::sol_types::private::FixedBytes<32>,
6291    }
6292    #[allow(
6293        non_camel_case_types,
6294        non_snake_case,
6295        clippy::pub_underscore_fields,
6296        clippy::style
6297    )]
6298    const _: () = {
6299        use alloy::sol_types as alloy_sol_types;
6300        {
6301            #[doc(hidden)]
6302            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
6303            #[doc(hidden)]
6304            type UnderlyingRustTuple<'a> = (u32,);
6305            #[cfg(test)]
6306            #[allow(dead_code, unreachable_patterns)]
6307            fn _type_assertion(
6308                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6309            ) {
6310                match _t {
6311                    alloy_sol_types::private::AssertTypeEq::<
6312                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6313                    >(_) => {}
6314                }
6315            }
6316            #[automatically_derived]
6317            #[doc(hidden)]
6318            impl ::core::convert::From<allTaskHashesCall> for UnderlyingRustTuple<'_> {
6319                fn from(value: allTaskHashesCall) -> Self {
6320                    (value._0,)
6321                }
6322            }
6323            #[automatically_derived]
6324            #[doc(hidden)]
6325            impl ::core::convert::From<UnderlyingRustTuple<'_>> for allTaskHashesCall {
6326                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6327                    Self { _0: tuple.0 }
6328                }
6329            }
6330        }
6331        {
6332            #[doc(hidden)]
6333            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6334            #[doc(hidden)]
6335            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
6336            #[cfg(test)]
6337            #[allow(dead_code, unreachable_patterns)]
6338            fn _type_assertion(
6339                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6340            ) {
6341                match _t {
6342                    alloy_sol_types::private::AssertTypeEq::<
6343                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6344                    >(_) => {}
6345                }
6346            }
6347            #[automatically_derived]
6348            #[doc(hidden)]
6349            impl ::core::convert::From<allTaskHashesReturn> for UnderlyingRustTuple<'_> {
6350                fn from(value: allTaskHashesReturn) -> Self {
6351                    (value._0,)
6352                }
6353            }
6354            #[automatically_derived]
6355            #[doc(hidden)]
6356            impl ::core::convert::From<UnderlyingRustTuple<'_>> for allTaskHashesReturn {
6357                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6358                    Self { _0: tuple.0 }
6359                }
6360            }
6361        }
6362        #[automatically_derived]
6363        impl alloy_sol_types::SolCall for allTaskHashesCall {
6364            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
6365            type Token<'a> = <Self::Parameters<
6366                'a,
6367            > as alloy_sol_types::SolType>::Token<'a>;
6368            type Return = allTaskHashesReturn;
6369            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6370            type ReturnToken<'a> = <Self::ReturnTuple<
6371                'a,
6372            > as alloy_sol_types::SolType>::Token<'a>;
6373            const SIGNATURE: &'static str = "allTaskHashes(uint32)";
6374            const SELECTOR: [u8; 4] = [45u8, 137u8, 246u8, 252u8];
6375            #[inline]
6376            fn new<'a>(
6377                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6378            ) -> Self {
6379                tuple.into()
6380            }
6381            #[inline]
6382            fn tokenize(&self) -> Self::Token<'_> {
6383                (
6384                    <alloy::sol_types::sol_data::Uint<
6385                        32,
6386                    > as alloy_sol_types::SolType>::tokenize(&self._0),
6387                )
6388            }
6389            #[inline]
6390            fn abi_decode_returns(
6391                data: &[u8],
6392                validate: bool,
6393            ) -> alloy_sol_types::Result<Self::Return> {
6394                <Self::ReturnTuple<
6395                    '_,
6396                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
6397                    .map(Into::into)
6398            }
6399        }
6400    };
6401    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6402    /**Function with signature `allTaskResponses(uint32)` and selector `0x2cb223d5`.
6403```solidity
6404function allTaskResponses(uint32) external view returns (bytes32);
6405```*/
6406    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6407    #[derive(Clone)]
6408    pub struct allTaskResponsesCall {
6409        #[allow(missing_docs)]
6410        pub _0: u32,
6411    }
6412    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6413    ///Container type for the return parameters of the [`allTaskResponses(uint32)`](allTaskResponsesCall) function.
6414    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6415    #[derive(Clone)]
6416    pub struct allTaskResponsesReturn {
6417        #[allow(missing_docs)]
6418        pub _0: alloy::sol_types::private::FixedBytes<32>,
6419    }
6420    #[allow(
6421        non_camel_case_types,
6422        non_snake_case,
6423        clippy::pub_underscore_fields,
6424        clippy::style
6425    )]
6426    const _: () = {
6427        use alloy::sol_types as alloy_sol_types;
6428        {
6429            #[doc(hidden)]
6430            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
6431            #[doc(hidden)]
6432            type UnderlyingRustTuple<'a> = (u32,);
6433            #[cfg(test)]
6434            #[allow(dead_code, unreachable_patterns)]
6435            fn _type_assertion(
6436                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6437            ) {
6438                match _t {
6439                    alloy_sol_types::private::AssertTypeEq::<
6440                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6441                    >(_) => {}
6442                }
6443            }
6444            #[automatically_derived]
6445            #[doc(hidden)]
6446            impl ::core::convert::From<allTaskResponsesCall>
6447            for UnderlyingRustTuple<'_> {
6448                fn from(value: allTaskResponsesCall) -> Self {
6449                    (value._0,)
6450                }
6451            }
6452            #[automatically_derived]
6453            #[doc(hidden)]
6454            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6455            for allTaskResponsesCall {
6456                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6457                    Self { _0: tuple.0 }
6458                }
6459            }
6460        }
6461        {
6462            #[doc(hidden)]
6463            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6464            #[doc(hidden)]
6465            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
6466            #[cfg(test)]
6467            #[allow(dead_code, unreachable_patterns)]
6468            fn _type_assertion(
6469                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6470            ) {
6471                match _t {
6472                    alloy_sol_types::private::AssertTypeEq::<
6473                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6474                    >(_) => {}
6475                }
6476            }
6477            #[automatically_derived]
6478            #[doc(hidden)]
6479            impl ::core::convert::From<allTaskResponsesReturn>
6480            for UnderlyingRustTuple<'_> {
6481                fn from(value: allTaskResponsesReturn) -> Self {
6482                    (value._0,)
6483                }
6484            }
6485            #[automatically_derived]
6486            #[doc(hidden)]
6487            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6488            for allTaskResponsesReturn {
6489                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6490                    Self { _0: tuple.0 }
6491                }
6492            }
6493        }
6494        #[automatically_derived]
6495        impl alloy_sol_types::SolCall for allTaskResponsesCall {
6496            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
6497            type Token<'a> = <Self::Parameters<
6498                'a,
6499            > as alloy_sol_types::SolType>::Token<'a>;
6500            type Return = allTaskResponsesReturn;
6501            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6502            type ReturnToken<'a> = <Self::ReturnTuple<
6503                'a,
6504            > as alloy_sol_types::SolType>::Token<'a>;
6505            const SIGNATURE: &'static str = "allTaskResponses(uint32)";
6506            const SELECTOR: [u8; 4] = [44u8, 178u8, 35u8, 213u8];
6507            #[inline]
6508            fn new<'a>(
6509                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6510            ) -> Self {
6511                tuple.into()
6512            }
6513            #[inline]
6514            fn tokenize(&self) -> Self::Token<'_> {
6515                (
6516                    <alloy::sol_types::sol_data::Uint<
6517                        32,
6518                    > as alloy_sol_types::SolType>::tokenize(&self._0),
6519                )
6520            }
6521            #[inline]
6522            fn abi_decode_returns(
6523                data: &[u8],
6524                validate: bool,
6525            ) -> alloy_sol_types::Result<Self::Return> {
6526                <Self::ReturnTuple<
6527                    '_,
6528                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
6529                    .map(Into::into)
6530            }
6531        }
6532    };
6533    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6534    /**Function with signature `blsApkRegistry()` and selector `0x5df45946`.
6535```solidity
6536function blsApkRegistry() external view returns (address);
6537```*/
6538    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6539    #[derive(Clone)]
6540    pub struct blsApkRegistryCall {}
6541    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6542    ///Container type for the return parameters of the [`blsApkRegistry()`](blsApkRegistryCall) function.
6543    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6544    #[derive(Clone)]
6545    pub struct blsApkRegistryReturn {
6546        #[allow(missing_docs)]
6547        pub _0: alloy::sol_types::private::Address,
6548    }
6549    #[allow(
6550        non_camel_case_types,
6551        non_snake_case,
6552        clippy::pub_underscore_fields,
6553        clippy::style
6554    )]
6555    const _: () = {
6556        use alloy::sol_types as alloy_sol_types;
6557        {
6558            #[doc(hidden)]
6559            type UnderlyingSolTuple<'a> = ();
6560            #[doc(hidden)]
6561            type UnderlyingRustTuple<'a> = ();
6562            #[cfg(test)]
6563            #[allow(dead_code, unreachable_patterns)]
6564            fn _type_assertion(
6565                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6566            ) {
6567                match _t {
6568                    alloy_sol_types::private::AssertTypeEq::<
6569                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6570                    >(_) => {}
6571                }
6572            }
6573            #[automatically_derived]
6574            #[doc(hidden)]
6575            impl ::core::convert::From<blsApkRegistryCall> for UnderlyingRustTuple<'_> {
6576                fn from(value: blsApkRegistryCall) -> Self {
6577                    ()
6578                }
6579            }
6580            #[automatically_derived]
6581            #[doc(hidden)]
6582            impl ::core::convert::From<UnderlyingRustTuple<'_>> for blsApkRegistryCall {
6583                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6584                    Self {}
6585                }
6586            }
6587        }
6588        {
6589            #[doc(hidden)]
6590            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6591            #[doc(hidden)]
6592            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6593            #[cfg(test)]
6594            #[allow(dead_code, unreachable_patterns)]
6595            fn _type_assertion(
6596                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6597            ) {
6598                match _t {
6599                    alloy_sol_types::private::AssertTypeEq::<
6600                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6601                    >(_) => {}
6602                }
6603            }
6604            #[automatically_derived]
6605            #[doc(hidden)]
6606            impl ::core::convert::From<blsApkRegistryReturn>
6607            for UnderlyingRustTuple<'_> {
6608                fn from(value: blsApkRegistryReturn) -> Self {
6609                    (value._0,)
6610                }
6611            }
6612            #[automatically_derived]
6613            #[doc(hidden)]
6614            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6615            for blsApkRegistryReturn {
6616                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6617                    Self { _0: tuple.0 }
6618                }
6619            }
6620        }
6621        #[automatically_derived]
6622        impl alloy_sol_types::SolCall for blsApkRegistryCall {
6623            type Parameters<'a> = ();
6624            type Token<'a> = <Self::Parameters<
6625                'a,
6626            > as alloy_sol_types::SolType>::Token<'a>;
6627            type Return = blsApkRegistryReturn;
6628            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
6629            type ReturnToken<'a> = <Self::ReturnTuple<
6630                'a,
6631            > as alloy_sol_types::SolType>::Token<'a>;
6632            const SIGNATURE: &'static str = "blsApkRegistry()";
6633            const SELECTOR: [u8; 4] = [93u8, 244u8, 89u8, 70u8];
6634            #[inline]
6635            fn new<'a>(
6636                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6637            ) -> Self {
6638                tuple.into()
6639            }
6640            #[inline]
6641            fn tokenize(&self) -> Self::Token<'_> {
6642                ()
6643            }
6644            #[inline]
6645            fn abi_decode_returns(
6646                data: &[u8],
6647                validate: bool,
6648            ) -> alloy_sol_types::Result<Self::Return> {
6649                <Self::ReturnTuple<
6650                    '_,
6651                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
6652                    .map(Into::into)
6653            }
6654        }
6655    };
6656    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6657    /**Function with signature `checkSignatures(bytes32,bytes,uint32,(uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]))` and selector `0x6efb4636`.
6658```solidity
6659function checkSignatures(bytes32 msgHash, bytes memory quorumNumbers, uint32 referenceBlockNumber, IBLSSignatureCheckerTypes.NonSignerStakesAndSignature memory params) external view returns (IBLSSignatureCheckerTypes.QuorumStakeTotals memory, bytes32);
6660```*/
6661    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6662    #[derive(Clone)]
6663    pub struct checkSignaturesCall {
6664        #[allow(missing_docs)]
6665        pub msgHash: alloy::sol_types::private::FixedBytes<32>,
6666        #[allow(missing_docs)]
6667        pub quorumNumbers: alloy::sol_types::private::Bytes,
6668        #[allow(missing_docs)]
6669        pub referenceBlockNumber: u32,
6670        #[allow(missing_docs)]
6671        pub params: <IBLSSignatureCheckerTypes::NonSignerStakesAndSignature as alloy::sol_types::SolType>::RustType,
6672    }
6673    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6674    ///Container type for the return parameters of the [`checkSignatures(bytes32,bytes,uint32,(uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]))`](checkSignaturesCall) function.
6675    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6676    #[derive(Clone)]
6677    pub struct checkSignaturesReturn {
6678        #[allow(missing_docs)]
6679        pub _0: <IBLSSignatureCheckerTypes::QuorumStakeTotals as alloy::sol_types::SolType>::RustType,
6680        #[allow(missing_docs)]
6681        pub _1: alloy::sol_types::private::FixedBytes<32>,
6682    }
6683    #[allow(
6684        non_camel_case_types,
6685        non_snake_case,
6686        clippy::pub_underscore_fields,
6687        clippy::style
6688    )]
6689    const _: () = {
6690        use alloy::sol_types as alloy_sol_types;
6691        {
6692            #[doc(hidden)]
6693            type UnderlyingSolTuple<'a> = (
6694                alloy::sol_types::sol_data::FixedBytes<32>,
6695                alloy::sol_types::sol_data::Bytes,
6696                alloy::sol_types::sol_data::Uint<32>,
6697                IBLSSignatureCheckerTypes::NonSignerStakesAndSignature,
6698            );
6699            #[doc(hidden)]
6700            type UnderlyingRustTuple<'a> = (
6701                alloy::sol_types::private::FixedBytes<32>,
6702                alloy::sol_types::private::Bytes,
6703                u32,
6704                <IBLSSignatureCheckerTypes::NonSignerStakesAndSignature as alloy::sol_types::SolType>::RustType,
6705            );
6706            #[cfg(test)]
6707            #[allow(dead_code, unreachable_patterns)]
6708            fn _type_assertion(
6709                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6710            ) {
6711                match _t {
6712                    alloy_sol_types::private::AssertTypeEq::<
6713                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6714                    >(_) => {}
6715                }
6716            }
6717            #[automatically_derived]
6718            #[doc(hidden)]
6719            impl ::core::convert::From<checkSignaturesCall> for UnderlyingRustTuple<'_> {
6720                fn from(value: checkSignaturesCall) -> Self {
6721                    (
6722                        value.msgHash,
6723                        value.quorumNumbers,
6724                        value.referenceBlockNumber,
6725                        value.params,
6726                    )
6727                }
6728            }
6729            #[automatically_derived]
6730            #[doc(hidden)]
6731            impl ::core::convert::From<UnderlyingRustTuple<'_>> for checkSignaturesCall {
6732                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6733                    Self {
6734                        msgHash: tuple.0,
6735                        quorumNumbers: tuple.1,
6736                        referenceBlockNumber: tuple.2,
6737                        params: tuple.3,
6738                    }
6739                }
6740            }
6741        }
6742        {
6743            #[doc(hidden)]
6744            type UnderlyingSolTuple<'a> = (
6745                IBLSSignatureCheckerTypes::QuorumStakeTotals,
6746                alloy::sol_types::sol_data::FixedBytes<32>,
6747            );
6748            #[doc(hidden)]
6749            type UnderlyingRustTuple<'a> = (
6750                <IBLSSignatureCheckerTypes::QuorumStakeTotals as alloy::sol_types::SolType>::RustType,
6751                alloy::sol_types::private::FixedBytes<32>,
6752            );
6753            #[cfg(test)]
6754            #[allow(dead_code, unreachable_patterns)]
6755            fn _type_assertion(
6756                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6757            ) {
6758                match _t {
6759                    alloy_sol_types::private::AssertTypeEq::<
6760                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6761                    >(_) => {}
6762                }
6763            }
6764            #[automatically_derived]
6765            #[doc(hidden)]
6766            impl ::core::convert::From<checkSignaturesReturn>
6767            for UnderlyingRustTuple<'_> {
6768                fn from(value: checkSignaturesReturn) -> Self {
6769                    (value._0, value._1)
6770                }
6771            }
6772            #[automatically_derived]
6773            #[doc(hidden)]
6774            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6775            for checkSignaturesReturn {
6776                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6777                    Self { _0: tuple.0, _1: tuple.1 }
6778                }
6779            }
6780        }
6781        #[automatically_derived]
6782        impl alloy_sol_types::SolCall for checkSignaturesCall {
6783            type Parameters<'a> = (
6784                alloy::sol_types::sol_data::FixedBytes<32>,
6785                alloy::sol_types::sol_data::Bytes,
6786                alloy::sol_types::sol_data::Uint<32>,
6787                IBLSSignatureCheckerTypes::NonSignerStakesAndSignature,
6788            );
6789            type Token<'a> = <Self::Parameters<
6790                'a,
6791            > as alloy_sol_types::SolType>::Token<'a>;
6792            type Return = checkSignaturesReturn;
6793            type ReturnTuple<'a> = (
6794                IBLSSignatureCheckerTypes::QuorumStakeTotals,
6795                alloy::sol_types::sol_data::FixedBytes<32>,
6796            );
6797            type ReturnToken<'a> = <Self::ReturnTuple<
6798                'a,
6799            > as alloy_sol_types::SolType>::Token<'a>;
6800            const SIGNATURE: &'static str = "checkSignatures(bytes32,bytes,uint32,(uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]))";
6801            const SELECTOR: [u8; 4] = [110u8, 251u8, 70u8, 54u8];
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                    <alloy::sol_types::sol_data::FixedBytes<
6812                        32,
6813                    > as alloy_sol_types::SolType>::tokenize(&self.msgHash),
6814                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
6815                        &self.quorumNumbers,
6816                    ),
6817                    <alloy::sol_types::sol_data::Uint<
6818                        32,
6819                    > as alloy_sol_types::SolType>::tokenize(&self.referenceBlockNumber),
6820                    <IBLSSignatureCheckerTypes::NonSignerStakesAndSignature as alloy_sol_types::SolType>::tokenize(
6821                        &self.params,
6822                    ),
6823                )
6824            }
6825            #[inline]
6826            fn abi_decode_returns(
6827                data: &[u8],
6828                validate: bool,
6829            ) -> alloy_sol_types::Result<Self::Return> {
6830                <Self::ReturnTuple<
6831                    '_,
6832                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
6833                    .map(Into::into)
6834            }
6835        }
6836    };
6837    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6838    /**Function with signature `createSquaringTask(uint256,uint32,bytes)` and selector `0xbbcee46e`.
6839```solidity
6840function createSquaringTask(uint256 number, uint32 quorumThresholdPercentage, bytes memory quorumNumbers) external;
6841```*/
6842    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6843    #[derive(Clone)]
6844    pub struct createSquaringTaskCall {
6845        #[allow(missing_docs)]
6846        pub number: alloy::sol_types::private::primitives::aliases::U256,
6847        #[allow(missing_docs)]
6848        pub quorumThresholdPercentage: u32,
6849        #[allow(missing_docs)]
6850        pub quorumNumbers: alloy::sol_types::private::Bytes,
6851    }
6852    ///Container type for the return parameters of the [`createSquaringTask(uint256,uint32,bytes)`](createSquaringTaskCall) function.
6853    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6854    #[derive(Clone)]
6855    pub struct createSquaringTaskReturn {}
6856    #[allow(
6857        non_camel_case_types,
6858        non_snake_case,
6859        clippy::pub_underscore_fields,
6860        clippy::style
6861    )]
6862    const _: () = {
6863        use alloy::sol_types as alloy_sol_types;
6864        {
6865            #[doc(hidden)]
6866            type UnderlyingSolTuple<'a> = (
6867                alloy::sol_types::sol_data::Uint<256>,
6868                alloy::sol_types::sol_data::Uint<32>,
6869                alloy::sol_types::sol_data::Bytes,
6870            );
6871            #[doc(hidden)]
6872            type UnderlyingRustTuple<'a> = (
6873                alloy::sol_types::private::primitives::aliases::U256,
6874                u32,
6875                alloy::sol_types::private::Bytes,
6876            );
6877            #[cfg(test)]
6878            #[allow(dead_code, unreachable_patterns)]
6879            fn _type_assertion(
6880                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6881            ) {
6882                match _t {
6883                    alloy_sol_types::private::AssertTypeEq::<
6884                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6885                    >(_) => {}
6886                }
6887            }
6888            #[automatically_derived]
6889            #[doc(hidden)]
6890            impl ::core::convert::From<createSquaringTaskCall>
6891            for UnderlyingRustTuple<'_> {
6892                fn from(value: createSquaringTaskCall) -> Self {
6893                    (value.number, value.quorumThresholdPercentage, value.quorumNumbers)
6894                }
6895            }
6896            #[automatically_derived]
6897            #[doc(hidden)]
6898            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6899            for createSquaringTaskCall {
6900                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6901                    Self {
6902                        number: tuple.0,
6903                        quorumThresholdPercentage: tuple.1,
6904                        quorumNumbers: tuple.2,
6905                    }
6906                }
6907            }
6908        }
6909        {
6910            #[doc(hidden)]
6911            type UnderlyingSolTuple<'a> = ();
6912            #[doc(hidden)]
6913            type UnderlyingRustTuple<'a> = ();
6914            #[cfg(test)]
6915            #[allow(dead_code, unreachable_patterns)]
6916            fn _type_assertion(
6917                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6918            ) {
6919                match _t {
6920                    alloy_sol_types::private::AssertTypeEq::<
6921                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6922                    >(_) => {}
6923                }
6924            }
6925            #[automatically_derived]
6926            #[doc(hidden)]
6927            impl ::core::convert::From<createSquaringTaskReturn>
6928            for UnderlyingRustTuple<'_> {
6929                fn from(value: createSquaringTaskReturn) -> Self {
6930                    ()
6931                }
6932            }
6933            #[automatically_derived]
6934            #[doc(hidden)]
6935            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6936            for createSquaringTaskReturn {
6937                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6938                    Self {}
6939                }
6940            }
6941        }
6942        #[automatically_derived]
6943        impl alloy_sol_types::SolCall for createSquaringTaskCall {
6944            type Parameters<'a> = (
6945                alloy::sol_types::sol_data::Uint<256>,
6946                alloy::sol_types::sol_data::Uint<32>,
6947                alloy::sol_types::sol_data::Bytes,
6948            );
6949            type Token<'a> = <Self::Parameters<
6950                'a,
6951            > as alloy_sol_types::SolType>::Token<'a>;
6952            type Return = createSquaringTaskReturn;
6953            type ReturnTuple<'a> = ();
6954            type ReturnToken<'a> = <Self::ReturnTuple<
6955                'a,
6956            > as alloy_sol_types::SolType>::Token<'a>;
6957            const SIGNATURE: &'static str = "createSquaringTask(uint256,uint32,bytes)";
6958            const SELECTOR: [u8; 4] = [187u8, 206u8, 228u8, 110u8];
6959            #[inline]
6960            fn new<'a>(
6961                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6962            ) -> Self {
6963                tuple.into()
6964            }
6965            #[inline]
6966            fn tokenize(&self) -> Self::Token<'_> {
6967                (
6968                    <alloy::sol_types::sol_data::Uint<
6969                        256,
6970                    > as alloy_sol_types::SolType>::tokenize(&self.number),
6971                    <alloy::sol_types::sol_data::Uint<
6972                        32,
6973                    > as alloy_sol_types::SolType>::tokenize(
6974                        &self.quorumThresholdPercentage,
6975                    ),
6976                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
6977                        &self.quorumNumbers,
6978                    ),
6979                )
6980            }
6981            #[inline]
6982            fn abi_decode_returns(
6983                data: &[u8],
6984                validate: bool,
6985            ) -> alloy_sol_types::Result<Self::Return> {
6986                <Self::ReturnTuple<
6987                    '_,
6988                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
6989                    .map(Into::into)
6990            }
6991        }
6992    };
6993    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6994    /**Function with signature `delegation()` and selector `0xdf5cf723`.
6995```solidity
6996function delegation() external view returns (address);
6997```*/
6998    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6999    #[derive(Clone)]
7000    pub struct delegationCall {}
7001    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7002    ///Container type for the return parameters of the [`delegation()`](delegationCall) function.
7003    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7004    #[derive(Clone)]
7005    pub struct delegationReturn {
7006        #[allow(missing_docs)]
7007        pub _0: alloy::sol_types::private::Address,
7008    }
7009    #[allow(
7010        non_camel_case_types,
7011        non_snake_case,
7012        clippy::pub_underscore_fields,
7013        clippy::style
7014    )]
7015    const _: () = {
7016        use alloy::sol_types as alloy_sol_types;
7017        {
7018            #[doc(hidden)]
7019            type UnderlyingSolTuple<'a> = ();
7020            #[doc(hidden)]
7021            type UnderlyingRustTuple<'a> = ();
7022            #[cfg(test)]
7023            #[allow(dead_code, unreachable_patterns)]
7024            fn _type_assertion(
7025                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7026            ) {
7027                match _t {
7028                    alloy_sol_types::private::AssertTypeEq::<
7029                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7030                    >(_) => {}
7031                }
7032            }
7033            #[automatically_derived]
7034            #[doc(hidden)]
7035            impl ::core::convert::From<delegationCall> for UnderlyingRustTuple<'_> {
7036                fn from(value: delegationCall) -> Self {
7037                    ()
7038                }
7039            }
7040            #[automatically_derived]
7041            #[doc(hidden)]
7042            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegationCall {
7043                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7044                    Self {}
7045                }
7046            }
7047        }
7048        {
7049            #[doc(hidden)]
7050            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7051            #[doc(hidden)]
7052            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7053            #[cfg(test)]
7054            #[allow(dead_code, unreachable_patterns)]
7055            fn _type_assertion(
7056                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7057            ) {
7058                match _t {
7059                    alloy_sol_types::private::AssertTypeEq::<
7060                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7061                    >(_) => {}
7062                }
7063            }
7064            #[automatically_derived]
7065            #[doc(hidden)]
7066            impl ::core::convert::From<delegationReturn> for UnderlyingRustTuple<'_> {
7067                fn from(value: delegationReturn) -> Self {
7068                    (value._0,)
7069                }
7070            }
7071            #[automatically_derived]
7072            #[doc(hidden)]
7073            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegationReturn {
7074                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7075                    Self { _0: tuple.0 }
7076                }
7077            }
7078        }
7079        #[automatically_derived]
7080        impl alloy_sol_types::SolCall for delegationCall {
7081            type Parameters<'a> = ();
7082            type Token<'a> = <Self::Parameters<
7083                'a,
7084            > as alloy_sol_types::SolType>::Token<'a>;
7085            type Return = delegationReturn;
7086            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
7087            type ReturnToken<'a> = <Self::ReturnTuple<
7088                'a,
7089            > as alloy_sol_types::SolType>::Token<'a>;
7090            const SIGNATURE: &'static str = "delegation()";
7091            const SELECTOR: [u8; 4] = [223u8, 92u8, 247u8, 35u8];
7092            #[inline]
7093            fn new<'a>(
7094                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7095            ) -> Self {
7096                tuple.into()
7097            }
7098            #[inline]
7099            fn tokenize(&self) -> Self::Token<'_> {
7100                ()
7101            }
7102            #[inline]
7103            fn abi_decode_returns(
7104                data: &[u8],
7105                validate: bool,
7106            ) -> alloy_sol_types::Result<Self::Return> {
7107                <Self::ReturnTuple<
7108                    '_,
7109                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7110                    .map(Into::into)
7111            }
7112        }
7113    };
7114    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7115    /**Function with signature `generator()` and selector `0x7afa1eed`.
7116```solidity
7117function generator() external view returns (address);
7118```*/
7119    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7120    #[derive(Clone)]
7121    pub struct generatorCall {}
7122    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7123    ///Container type for the return parameters of the [`generator()`](generatorCall) function.
7124    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7125    #[derive(Clone)]
7126    pub struct generatorReturn {
7127        #[allow(missing_docs)]
7128        pub _0: alloy::sol_types::private::Address,
7129    }
7130    #[allow(
7131        non_camel_case_types,
7132        non_snake_case,
7133        clippy::pub_underscore_fields,
7134        clippy::style
7135    )]
7136    const _: () = {
7137        use alloy::sol_types as alloy_sol_types;
7138        {
7139            #[doc(hidden)]
7140            type UnderlyingSolTuple<'a> = ();
7141            #[doc(hidden)]
7142            type UnderlyingRustTuple<'a> = ();
7143            #[cfg(test)]
7144            #[allow(dead_code, unreachable_patterns)]
7145            fn _type_assertion(
7146                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7147            ) {
7148                match _t {
7149                    alloy_sol_types::private::AssertTypeEq::<
7150                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7151                    >(_) => {}
7152                }
7153            }
7154            #[automatically_derived]
7155            #[doc(hidden)]
7156            impl ::core::convert::From<generatorCall> for UnderlyingRustTuple<'_> {
7157                fn from(value: generatorCall) -> Self {
7158                    ()
7159                }
7160            }
7161            #[automatically_derived]
7162            #[doc(hidden)]
7163            impl ::core::convert::From<UnderlyingRustTuple<'_>> for generatorCall {
7164                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7165                    Self {}
7166                }
7167            }
7168        }
7169        {
7170            #[doc(hidden)]
7171            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7172            #[doc(hidden)]
7173            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7174            #[cfg(test)]
7175            #[allow(dead_code, unreachable_patterns)]
7176            fn _type_assertion(
7177                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7178            ) {
7179                match _t {
7180                    alloy_sol_types::private::AssertTypeEq::<
7181                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7182                    >(_) => {}
7183                }
7184            }
7185            #[automatically_derived]
7186            #[doc(hidden)]
7187            impl ::core::convert::From<generatorReturn> for UnderlyingRustTuple<'_> {
7188                fn from(value: generatorReturn) -> Self {
7189                    (value._0,)
7190                }
7191            }
7192            #[automatically_derived]
7193            #[doc(hidden)]
7194            impl ::core::convert::From<UnderlyingRustTuple<'_>> for generatorReturn {
7195                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7196                    Self { _0: tuple.0 }
7197                }
7198            }
7199        }
7200        #[automatically_derived]
7201        impl alloy_sol_types::SolCall for generatorCall {
7202            type Parameters<'a> = ();
7203            type Token<'a> = <Self::Parameters<
7204                'a,
7205            > as alloy_sol_types::SolType>::Token<'a>;
7206            type Return = generatorReturn;
7207            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
7208            type ReturnToken<'a> = <Self::ReturnTuple<
7209                'a,
7210            > as alloy_sol_types::SolType>::Token<'a>;
7211            const SIGNATURE: &'static str = "generator()";
7212            const SELECTOR: [u8; 4] = [122u8, 250u8, 30u8, 237u8];
7213            #[inline]
7214            fn new<'a>(
7215                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7216            ) -> Self {
7217                tuple.into()
7218            }
7219            #[inline]
7220            fn tokenize(&self) -> Self::Token<'_> {
7221                ()
7222            }
7223            #[inline]
7224            fn abi_decode_returns(
7225                data: &[u8],
7226                validate: bool,
7227            ) -> alloy_sol_types::Result<Self::Return> {
7228                <Self::ReturnTuple<
7229                    '_,
7230                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7231                    .map(Into::into)
7232            }
7233        }
7234    };
7235    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7236    /**Function with signature `initialize(address,address,address)` and selector `0xc0c53b8b`.
7237```solidity
7238function initialize(address _aggregator, address _generator, address initialOwner) external;
7239```*/
7240    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7241    #[derive(Clone)]
7242    pub struct initializeCall {
7243        #[allow(missing_docs)]
7244        pub _aggregator: alloy::sol_types::private::Address,
7245        #[allow(missing_docs)]
7246        pub _generator: alloy::sol_types::private::Address,
7247        #[allow(missing_docs)]
7248        pub initialOwner: alloy::sol_types::private::Address,
7249    }
7250    ///Container type for the return parameters of the [`initialize(address,address,address)`](initializeCall) function.
7251    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7252    #[derive(Clone)]
7253    pub struct initializeReturn {}
7254    #[allow(
7255        non_camel_case_types,
7256        non_snake_case,
7257        clippy::pub_underscore_fields,
7258        clippy::style
7259    )]
7260    const _: () = {
7261        use alloy::sol_types as alloy_sol_types;
7262        {
7263            #[doc(hidden)]
7264            type UnderlyingSolTuple<'a> = (
7265                alloy::sol_types::sol_data::Address,
7266                alloy::sol_types::sol_data::Address,
7267                alloy::sol_types::sol_data::Address,
7268            );
7269            #[doc(hidden)]
7270            type UnderlyingRustTuple<'a> = (
7271                alloy::sol_types::private::Address,
7272                alloy::sol_types::private::Address,
7273                alloy::sol_types::private::Address,
7274            );
7275            #[cfg(test)]
7276            #[allow(dead_code, unreachable_patterns)]
7277            fn _type_assertion(
7278                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7279            ) {
7280                match _t {
7281                    alloy_sol_types::private::AssertTypeEq::<
7282                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7283                    >(_) => {}
7284                }
7285            }
7286            #[automatically_derived]
7287            #[doc(hidden)]
7288            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
7289                fn from(value: initializeCall) -> Self {
7290                    (value._aggregator, value._generator, value.initialOwner)
7291                }
7292            }
7293            #[automatically_derived]
7294            #[doc(hidden)]
7295            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
7296                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7297                    Self {
7298                        _aggregator: tuple.0,
7299                        _generator: tuple.1,
7300                        initialOwner: tuple.2,
7301                    }
7302                }
7303            }
7304        }
7305        {
7306            #[doc(hidden)]
7307            type UnderlyingSolTuple<'a> = ();
7308            #[doc(hidden)]
7309            type UnderlyingRustTuple<'a> = ();
7310            #[cfg(test)]
7311            #[allow(dead_code, unreachable_patterns)]
7312            fn _type_assertion(
7313                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7314            ) {
7315                match _t {
7316                    alloy_sol_types::private::AssertTypeEq::<
7317                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7318                    >(_) => {}
7319                }
7320            }
7321            #[automatically_derived]
7322            #[doc(hidden)]
7323            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
7324                fn from(value: initializeReturn) -> Self {
7325                    ()
7326                }
7327            }
7328            #[automatically_derived]
7329            #[doc(hidden)]
7330            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
7331                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7332                    Self {}
7333                }
7334            }
7335        }
7336        #[automatically_derived]
7337        impl alloy_sol_types::SolCall for initializeCall {
7338            type Parameters<'a> = (
7339                alloy::sol_types::sol_data::Address,
7340                alloy::sol_types::sol_data::Address,
7341                alloy::sol_types::sol_data::Address,
7342            );
7343            type Token<'a> = <Self::Parameters<
7344                'a,
7345            > as alloy_sol_types::SolType>::Token<'a>;
7346            type Return = initializeReturn;
7347            type ReturnTuple<'a> = ();
7348            type ReturnToken<'a> = <Self::ReturnTuple<
7349                'a,
7350            > as alloy_sol_types::SolType>::Token<'a>;
7351            const SIGNATURE: &'static str = "initialize(address,address,address)";
7352            const SELECTOR: [u8; 4] = [192u8, 197u8, 59u8, 139u8];
7353            #[inline]
7354            fn new<'a>(
7355                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7356            ) -> Self {
7357                tuple.into()
7358            }
7359            #[inline]
7360            fn tokenize(&self) -> Self::Token<'_> {
7361                (
7362                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7363                        &self._aggregator,
7364                    ),
7365                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7366                        &self._generator,
7367                    ),
7368                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7369                        &self.initialOwner,
7370                    ),
7371                )
7372            }
7373            #[inline]
7374            fn abi_decode_returns(
7375                data: &[u8],
7376                validate: bool,
7377            ) -> alloy_sol_types::Result<Self::Return> {
7378                <Self::ReturnTuple<
7379                    '_,
7380                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7381                    .map(Into::into)
7382            }
7383        }
7384    };
7385    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7386    /**Function with signature `latestTaskNum()` and selector `0x8b00ce7c`.
7387```solidity
7388function latestTaskNum() external view returns (uint32);
7389```*/
7390    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7391    #[derive(Clone)]
7392    pub struct latestTaskNumCall {}
7393    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7394    ///Container type for the return parameters of the [`latestTaskNum()`](latestTaskNumCall) function.
7395    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7396    #[derive(Clone)]
7397    pub struct latestTaskNumReturn {
7398        #[allow(missing_docs)]
7399        pub _0: u32,
7400    }
7401    #[allow(
7402        non_camel_case_types,
7403        non_snake_case,
7404        clippy::pub_underscore_fields,
7405        clippy::style
7406    )]
7407    const _: () = {
7408        use alloy::sol_types as alloy_sol_types;
7409        {
7410            #[doc(hidden)]
7411            type UnderlyingSolTuple<'a> = ();
7412            #[doc(hidden)]
7413            type UnderlyingRustTuple<'a> = ();
7414            #[cfg(test)]
7415            #[allow(dead_code, unreachable_patterns)]
7416            fn _type_assertion(
7417                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7418            ) {
7419                match _t {
7420                    alloy_sol_types::private::AssertTypeEq::<
7421                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7422                    >(_) => {}
7423                }
7424            }
7425            #[automatically_derived]
7426            #[doc(hidden)]
7427            impl ::core::convert::From<latestTaskNumCall> for UnderlyingRustTuple<'_> {
7428                fn from(value: latestTaskNumCall) -> Self {
7429                    ()
7430                }
7431            }
7432            #[automatically_derived]
7433            #[doc(hidden)]
7434            impl ::core::convert::From<UnderlyingRustTuple<'_>> for latestTaskNumCall {
7435                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7436                    Self {}
7437                }
7438            }
7439        }
7440        {
7441            #[doc(hidden)]
7442            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
7443            #[doc(hidden)]
7444            type UnderlyingRustTuple<'a> = (u32,);
7445            #[cfg(test)]
7446            #[allow(dead_code, unreachable_patterns)]
7447            fn _type_assertion(
7448                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7449            ) {
7450                match _t {
7451                    alloy_sol_types::private::AssertTypeEq::<
7452                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7453                    >(_) => {}
7454                }
7455            }
7456            #[automatically_derived]
7457            #[doc(hidden)]
7458            impl ::core::convert::From<latestTaskNumReturn> for UnderlyingRustTuple<'_> {
7459                fn from(value: latestTaskNumReturn) -> Self {
7460                    (value._0,)
7461                }
7462            }
7463            #[automatically_derived]
7464            #[doc(hidden)]
7465            impl ::core::convert::From<UnderlyingRustTuple<'_>> for latestTaskNumReturn {
7466                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7467                    Self { _0: tuple.0 }
7468                }
7469            }
7470        }
7471        #[automatically_derived]
7472        impl alloy_sol_types::SolCall for latestTaskNumCall {
7473            type Parameters<'a> = ();
7474            type Token<'a> = <Self::Parameters<
7475                'a,
7476            > as alloy_sol_types::SolType>::Token<'a>;
7477            type Return = latestTaskNumReturn;
7478            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
7479            type ReturnToken<'a> = <Self::ReturnTuple<
7480                'a,
7481            > as alloy_sol_types::SolType>::Token<'a>;
7482            const SIGNATURE: &'static str = "latestTaskNum()";
7483            const SELECTOR: [u8; 4] = [139u8, 0u8, 206u8, 124u8];
7484            #[inline]
7485            fn new<'a>(
7486                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7487            ) -> Self {
7488                tuple.into()
7489            }
7490            #[inline]
7491            fn tokenize(&self) -> Self::Token<'_> {
7492                ()
7493            }
7494            #[inline]
7495            fn abi_decode_returns(
7496                data: &[u8],
7497                validate: bool,
7498            ) -> alloy_sol_types::Result<Self::Return> {
7499                <Self::ReturnTuple<
7500                    '_,
7501                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7502                    .map(Into::into)
7503            }
7504        }
7505    };
7506    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7507    /**Function with signature `owner()` and selector `0x8da5cb5b`.
7508```solidity
7509function owner() external view returns (address);
7510```*/
7511    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7512    #[derive(Clone)]
7513    pub struct ownerCall {}
7514    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7515    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
7516    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7517    #[derive(Clone)]
7518    pub struct ownerReturn {
7519        #[allow(missing_docs)]
7520        pub _0: alloy::sol_types::private::Address,
7521    }
7522    #[allow(
7523        non_camel_case_types,
7524        non_snake_case,
7525        clippy::pub_underscore_fields,
7526        clippy::style
7527    )]
7528    const _: () = {
7529        use alloy::sol_types as alloy_sol_types;
7530        {
7531            #[doc(hidden)]
7532            type UnderlyingSolTuple<'a> = ();
7533            #[doc(hidden)]
7534            type UnderlyingRustTuple<'a> = ();
7535            #[cfg(test)]
7536            #[allow(dead_code, unreachable_patterns)]
7537            fn _type_assertion(
7538                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7539            ) {
7540                match _t {
7541                    alloy_sol_types::private::AssertTypeEq::<
7542                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7543                    >(_) => {}
7544                }
7545            }
7546            #[automatically_derived]
7547            #[doc(hidden)]
7548            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
7549                fn from(value: ownerCall) -> Self {
7550                    ()
7551                }
7552            }
7553            #[automatically_derived]
7554            #[doc(hidden)]
7555            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
7556                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7557                    Self {}
7558                }
7559            }
7560        }
7561        {
7562            #[doc(hidden)]
7563            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7564            #[doc(hidden)]
7565            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7566            #[cfg(test)]
7567            #[allow(dead_code, unreachable_patterns)]
7568            fn _type_assertion(
7569                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7570            ) {
7571                match _t {
7572                    alloy_sol_types::private::AssertTypeEq::<
7573                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7574                    >(_) => {}
7575                }
7576            }
7577            #[automatically_derived]
7578            #[doc(hidden)]
7579            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
7580                fn from(value: ownerReturn) -> Self {
7581                    (value._0,)
7582                }
7583            }
7584            #[automatically_derived]
7585            #[doc(hidden)]
7586            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
7587                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7588                    Self { _0: tuple.0 }
7589                }
7590            }
7591        }
7592        #[automatically_derived]
7593        impl alloy_sol_types::SolCall for ownerCall {
7594            type Parameters<'a> = ();
7595            type Token<'a> = <Self::Parameters<
7596                'a,
7597            > as alloy_sol_types::SolType>::Token<'a>;
7598            type Return = ownerReturn;
7599            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
7600            type ReturnToken<'a> = <Self::ReturnTuple<
7601                'a,
7602            > as alloy_sol_types::SolType>::Token<'a>;
7603            const SIGNATURE: &'static str = "owner()";
7604            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
7605            #[inline]
7606            fn new<'a>(
7607                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7608            ) -> Self {
7609                tuple.into()
7610            }
7611            #[inline]
7612            fn tokenize(&self) -> Self::Token<'_> {
7613                ()
7614            }
7615            #[inline]
7616            fn abi_decode_returns(
7617                data: &[u8],
7618                validate: bool,
7619            ) -> alloy_sol_types::Result<Self::Return> {
7620                <Self::ReturnTuple<
7621                    '_,
7622                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7623                    .map(Into::into)
7624            }
7625        }
7626    };
7627    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7628    /**Function with signature `registryCoordinator()` and selector `0x6d14a987`.
7629```solidity
7630function registryCoordinator() external view returns (address);
7631```*/
7632    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7633    #[derive(Clone)]
7634    pub struct registryCoordinatorCall {}
7635    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7636    ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function.
7637    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7638    #[derive(Clone)]
7639    pub struct registryCoordinatorReturn {
7640        #[allow(missing_docs)]
7641        pub _0: alloy::sol_types::private::Address,
7642    }
7643    #[allow(
7644        non_camel_case_types,
7645        non_snake_case,
7646        clippy::pub_underscore_fields,
7647        clippy::style
7648    )]
7649    const _: () = {
7650        use alloy::sol_types as alloy_sol_types;
7651        {
7652            #[doc(hidden)]
7653            type UnderlyingSolTuple<'a> = ();
7654            #[doc(hidden)]
7655            type UnderlyingRustTuple<'a> = ();
7656            #[cfg(test)]
7657            #[allow(dead_code, unreachable_patterns)]
7658            fn _type_assertion(
7659                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7660            ) {
7661                match _t {
7662                    alloy_sol_types::private::AssertTypeEq::<
7663                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7664                    >(_) => {}
7665                }
7666            }
7667            #[automatically_derived]
7668            #[doc(hidden)]
7669            impl ::core::convert::From<registryCoordinatorCall>
7670            for UnderlyingRustTuple<'_> {
7671                fn from(value: registryCoordinatorCall) -> Self {
7672                    ()
7673                }
7674            }
7675            #[automatically_derived]
7676            #[doc(hidden)]
7677            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7678            for registryCoordinatorCall {
7679                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7680                    Self {}
7681                }
7682            }
7683        }
7684        {
7685            #[doc(hidden)]
7686            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7687            #[doc(hidden)]
7688            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7689            #[cfg(test)]
7690            #[allow(dead_code, unreachable_patterns)]
7691            fn _type_assertion(
7692                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7693            ) {
7694                match _t {
7695                    alloy_sol_types::private::AssertTypeEq::<
7696                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7697                    >(_) => {}
7698                }
7699            }
7700            #[automatically_derived]
7701            #[doc(hidden)]
7702            impl ::core::convert::From<registryCoordinatorReturn>
7703            for UnderlyingRustTuple<'_> {
7704                fn from(value: registryCoordinatorReturn) -> Self {
7705                    (value._0,)
7706                }
7707            }
7708            #[automatically_derived]
7709            #[doc(hidden)]
7710            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7711            for registryCoordinatorReturn {
7712                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7713                    Self { _0: tuple.0 }
7714                }
7715            }
7716        }
7717        #[automatically_derived]
7718        impl alloy_sol_types::SolCall for registryCoordinatorCall {
7719            type Parameters<'a> = ();
7720            type Token<'a> = <Self::Parameters<
7721                'a,
7722            > as alloy_sol_types::SolType>::Token<'a>;
7723            type Return = registryCoordinatorReturn;
7724            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
7725            type ReturnToken<'a> = <Self::ReturnTuple<
7726                'a,
7727            > as alloy_sol_types::SolType>::Token<'a>;
7728            const SIGNATURE: &'static str = "registryCoordinator()";
7729            const SELECTOR: [u8; 4] = [109u8, 20u8, 169u8, 135u8];
7730            #[inline]
7731            fn new<'a>(
7732                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7733            ) -> Self {
7734                tuple.into()
7735            }
7736            #[inline]
7737            fn tokenize(&self) -> Self::Token<'_> {
7738                ()
7739            }
7740            #[inline]
7741            fn abi_decode_returns(
7742                data: &[u8],
7743                validate: bool,
7744            ) -> alloy_sol_types::Result<Self::Return> {
7745                <Self::ReturnTuple<
7746                    '_,
7747                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7748                    .map(Into::into)
7749            }
7750        }
7751    };
7752    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7753    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
7754```solidity
7755function renounceOwnership() external;
7756```*/
7757    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7758    #[derive(Clone)]
7759    pub struct renounceOwnershipCall {}
7760    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
7761    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7762    #[derive(Clone)]
7763    pub struct renounceOwnershipReturn {}
7764    #[allow(
7765        non_camel_case_types,
7766        non_snake_case,
7767        clippy::pub_underscore_fields,
7768        clippy::style
7769    )]
7770    const _: () = {
7771        use alloy::sol_types as alloy_sol_types;
7772        {
7773            #[doc(hidden)]
7774            type UnderlyingSolTuple<'a> = ();
7775            #[doc(hidden)]
7776            type UnderlyingRustTuple<'a> = ();
7777            #[cfg(test)]
7778            #[allow(dead_code, unreachable_patterns)]
7779            fn _type_assertion(
7780                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7781            ) {
7782                match _t {
7783                    alloy_sol_types::private::AssertTypeEq::<
7784                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7785                    >(_) => {}
7786                }
7787            }
7788            #[automatically_derived]
7789            #[doc(hidden)]
7790            impl ::core::convert::From<renounceOwnershipCall>
7791            for UnderlyingRustTuple<'_> {
7792                fn from(value: renounceOwnershipCall) -> Self {
7793                    ()
7794                }
7795            }
7796            #[automatically_derived]
7797            #[doc(hidden)]
7798            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7799            for renounceOwnershipCall {
7800                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7801                    Self {}
7802                }
7803            }
7804        }
7805        {
7806            #[doc(hidden)]
7807            type UnderlyingSolTuple<'a> = ();
7808            #[doc(hidden)]
7809            type UnderlyingRustTuple<'a> = ();
7810            #[cfg(test)]
7811            #[allow(dead_code, unreachable_patterns)]
7812            fn _type_assertion(
7813                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7814            ) {
7815                match _t {
7816                    alloy_sol_types::private::AssertTypeEq::<
7817                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7818                    >(_) => {}
7819                }
7820            }
7821            #[automatically_derived]
7822            #[doc(hidden)]
7823            impl ::core::convert::From<renounceOwnershipReturn>
7824            for UnderlyingRustTuple<'_> {
7825                fn from(value: renounceOwnershipReturn) -> Self {
7826                    ()
7827                }
7828            }
7829            #[automatically_derived]
7830            #[doc(hidden)]
7831            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7832            for renounceOwnershipReturn {
7833                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7834                    Self {}
7835                }
7836            }
7837        }
7838        #[automatically_derived]
7839        impl alloy_sol_types::SolCall for renounceOwnershipCall {
7840            type Parameters<'a> = ();
7841            type Token<'a> = <Self::Parameters<
7842                'a,
7843            > as alloy_sol_types::SolType>::Token<'a>;
7844            type Return = renounceOwnershipReturn;
7845            type ReturnTuple<'a> = ();
7846            type ReturnToken<'a> = <Self::ReturnTuple<
7847                'a,
7848            > as alloy_sol_types::SolType>::Token<'a>;
7849            const SIGNATURE: &'static str = "renounceOwnership()";
7850            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
7851            #[inline]
7852            fn new<'a>(
7853                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7854            ) -> Self {
7855                tuple.into()
7856            }
7857            #[inline]
7858            fn tokenize(&self) -> Self::Token<'_> {
7859                ()
7860            }
7861            #[inline]
7862            fn abi_decode_returns(
7863                data: &[u8],
7864                validate: bool,
7865            ) -> alloy_sol_types::Result<Self::Return> {
7866                <Self::ReturnTuple<
7867                    '_,
7868                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7869                    .map(Into::into)
7870            }
7871        }
7872    };
7873    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7874    /**Function with signature `respondToSquaringTask((uint32,uint32,bytes,bytes),(uint32,bytes),(uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]))` and selector `0x7e8ef1be`.
7875```solidity
7876function respondToSquaringTask(TaskManager.Task memory task, TaskManager.TaskResponse memory taskResponse, IBLSSignatureCheckerTypes.NonSignerStakesAndSignature memory nonSignerStakesAndSignature) external;
7877```*/
7878    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7879    #[derive(Clone)]
7880    pub struct respondToSquaringTaskCall {
7881        #[allow(missing_docs)]
7882        pub task: <TaskManager::Task as alloy::sol_types::SolType>::RustType,
7883        #[allow(missing_docs)]
7884        pub taskResponse: <TaskManager::TaskResponse as alloy::sol_types::SolType>::RustType,
7885        #[allow(missing_docs)]
7886        pub nonSignerStakesAndSignature: <IBLSSignatureCheckerTypes::NonSignerStakesAndSignature as alloy::sol_types::SolType>::RustType,
7887    }
7888    ///Container type for the return parameters of the [`respondToSquaringTask((uint32,uint32,bytes,bytes),(uint32,bytes),(uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]))`](respondToSquaringTaskCall) function.
7889    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7890    #[derive(Clone)]
7891    pub struct respondToSquaringTaskReturn {}
7892    #[allow(
7893        non_camel_case_types,
7894        non_snake_case,
7895        clippy::pub_underscore_fields,
7896        clippy::style
7897    )]
7898    const _: () = {
7899        use alloy::sol_types as alloy_sol_types;
7900        {
7901            #[doc(hidden)]
7902            type UnderlyingSolTuple<'a> = (
7903                TaskManager::Task,
7904                TaskManager::TaskResponse,
7905                IBLSSignatureCheckerTypes::NonSignerStakesAndSignature,
7906            );
7907            #[doc(hidden)]
7908            type UnderlyingRustTuple<'a> = (
7909                <TaskManager::Task as alloy::sol_types::SolType>::RustType,
7910                <TaskManager::TaskResponse as alloy::sol_types::SolType>::RustType,
7911                <IBLSSignatureCheckerTypes::NonSignerStakesAndSignature as alloy::sol_types::SolType>::RustType,
7912            );
7913            #[cfg(test)]
7914            #[allow(dead_code, unreachable_patterns)]
7915            fn _type_assertion(
7916                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7917            ) {
7918                match _t {
7919                    alloy_sol_types::private::AssertTypeEq::<
7920                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7921                    >(_) => {}
7922                }
7923            }
7924            #[automatically_derived]
7925            #[doc(hidden)]
7926            impl ::core::convert::From<respondToSquaringTaskCall>
7927            for UnderlyingRustTuple<'_> {
7928                fn from(value: respondToSquaringTaskCall) -> Self {
7929                    (value.task, value.taskResponse, value.nonSignerStakesAndSignature)
7930                }
7931            }
7932            #[automatically_derived]
7933            #[doc(hidden)]
7934            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7935            for respondToSquaringTaskCall {
7936                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7937                    Self {
7938                        task: tuple.0,
7939                        taskResponse: tuple.1,
7940                        nonSignerStakesAndSignature: tuple.2,
7941                    }
7942                }
7943            }
7944        }
7945        {
7946            #[doc(hidden)]
7947            type UnderlyingSolTuple<'a> = ();
7948            #[doc(hidden)]
7949            type UnderlyingRustTuple<'a> = ();
7950            #[cfg(test)]
7951            #[allow(dead_code, unreachable_patterns)]
7952            fn _type_assertion(
7953                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7954            ) {
7955                match _t {
7956                    alloy_sol_types::private::AssertTypeEq::<
7957                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7958                    >(_) => {}
7959                }
7960            }
7961            #[automatically_derived]
7962            #[doc(hidden)]
7963            impl ::core::convert::From<respondToSquaringTaskReturn>
7964            for UnderlyingRustTuple<'_> {
7965                fn from(value: respondToSquaringTaskReturn) -> Self {
7966                    ()
7967                }
7968            }
7969            #[automatically_derived]
7970            #[doc(hidden)]
7971            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7972            for respondToSquaringTaskReturn {
7973                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7974                    Self {}
7975                }
7976            }
7977        }
7978        #[automatically_derived]
7979        impl alloy_sol_types::SolCall for respondToSquaringTaskCall {
7980            type Parameters<'a> = (
7981                TaskManager::Task,
7982                TaskManager::TaskResponse,
7983                IBLSSignatureCheckerTypes::NonSignerStakesAndSignature,
7984            );
7985            type Token<'a> = <Self::Parameters<
7986                'a,
7987            > as alloy_sol_types::SolType>::Token<'a>;
7988            type Return = respondToSquaringTaskReturn;
7989            type ReturnTuple<'a> = ();
7990            type ReturnToken<'a> = <Self::ReturnTuple<
7991                'a,
7992            > as alloy_sol_types::SolType>::Token<'a>;
7993            const SIGNATURE: &'static str = "respondToSquaringTask((uint32,uint32,bytes,bytes),(uint32,bytes),(uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]))";
7994            const SELECTOR: [u8; 4] = [126u8, 142u8, 241u8, 190u8];
7995            #[inline]
7996            fn new<'a>(
7997                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7998            ) -> Self {
7999                tuple.into()
8000            }
8001            #[inline]
8002            fn tokenize(&self) -> Self::Token<'_> {
8003                (
8004                    <TaskManager::Task as alloy_sol_types::SolType>::tokenize(
8005                        &self.task,
8006                    ),
8007                    <TaskManager::TaskResponse as alloy_sol_types::SolType>::tokenize(
8008                        &self.taskResponse,
8009                    ),
8010                    <IBLSSignatureCheckerTypes::NonSignerStakesAndSignature as alloy_sol_types::SolType>::tokenize(
8011                        &self.nonSignerStakesAndSignature,
8012                    ),
8013                )
8014            }
8015            #[inline]
8016            fn abi_decode_returns(
8017                data: &[u8],
8018                validate: bool,
8019            ) -> alloy_sol_types::Result<Self::Return> {
8020                <Self::ReturnTuple<
8021                    '_,
8022                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8023                    .map(Into::into)
8024            }
8025        }
8026    };
8027    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8028    /**Function with signature `setAggregator(address)` and selector `0xf9120af6`.
8029```solidity
8030function setAggregator(address newAggregator) external;
8031```*/
8032    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8033    #[derive(Clone)]
8034    pub struct setAggregatorCall {
8035        #[allow(missing_docs)]
8036        pub newAggregator: alloy::sol_types::private::Address,
8037    }
8038    ///Container type for the return parameters of the [`setAggregator(address)`](setAggregatorCall) function.
8039    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8040    #[derive(Clone)]
8041    pub struct setAggregatorReturn {}
8042    #[allow(
8043        non_camel_case_types,
8044        non_snake_case,
8045        clippy::pub_underscore_fields,
8046        clippy::style
8047    )]
8048    const _: () = {
8049        use alloy::sol_types as alloy_sol_types;
8050        {
8051            #[doc(hidden)]
8052            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
8053            #[doc(hidden)]
8054            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
8055            #[cfg(test)]
8056            #[allow(dead_code, unreachable_patterns)]
8057            fn _type_assertion(
8058                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8059            ) {
8060                match _t {
8061                    alloy_sol_types::private::AssertTypeEq::<
8062                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8063                    >(_) => {}
8064                }
8065            }
8066            #[automatically_derived]
8067            #[doc(hidden)]
8068            impl ::core::convert::From<setAggregatorCall> for UnderlyingRustTuple<'_> {
8069                fn from(value: setAggregatorCall) -> Self {
8070                    (value.newAggregator,)
8071                }
8072            }
8073            #[automatically_derived]
8074            #[doc(hidden)]
8075            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setAggregatorCall {
8076                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8077                    Self { newAggregator: tuple.0 }
8078                }
8079            }
8080        }
8081        {
8082            #[doc(hidden)]
8083            type UnderlyingSolTuple<'a> = ();
8084            #[doc(hidden)]
8085            type UnderlyingRustTuple<'a> = ();
8086            #[cfg(test)]
8087            #[allow(dead_code, unreachable_patterns)]
8088            fn _type_assertion(
8089                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8090            ) {
8091                match _t {
8092                    alloy_sol_types::private::AssertTypeEq::<
8093                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8094                    >(_) => {}
8095                }
8096            }
8097            #[automatically_derived]
8098            #[doc(hidden)]
8099            impl ::core::convert::From<setAggregatorReturn> for UnderlyingRustTuple<'_> {
8100                fn from(value: setAggregatorReturn) -> Self {
8101                    ()
8102                }
8103            }
8104            #[automatically_derived]
8105            #[doc(hidden)]
8106            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setAggregatorReturn {
8107                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8108                    Self {}
8109                }
8110            }
8111        }
8112        #[automatically_derived]
8113        impl alloy_sol_types::SolCall for setAggregatorCall {
8114            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
8115            type Token<'a> = <Self::Parameters<
8116                'a,
8117            > as alloy_sol_types::SolType>::Token<'a>;
8118            type Return = setAggregatorReturn;
8119            type ReturnTuple<'a> = ();
8120            type ReturnToken<'a> = <Self::ReturnTuple<
8121                'a,
8122            > as alloy_sol_types::SolType>::Token<'a>;
8123            const SIGNATURE: &'static str = "setAggregator(address)";
8124            const SELECTOR: [u8; 4] = [249u8, 18u8, 10u8, 246u8];
8125            #[inline]
8126            fn new<'a>(
8127                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8128            ) -> Self {
8129                tuple.into()
8130            }
8131            #[inline]
8132            fn tokenize(&self) -> Self::Token<'_> {
8133                (
8134                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8135                        &self.newAggregator,
8136                    ),
8137                )
8138            }
8139            #[inline]
8140            fn abi_decode_returns(
8141                data: &[u8],
8142                validate: bool,
8143            ) -> alloy_sol_types::Result<Self::Return> {
8144                <Self::ReturnTuple<
8145                    '_,
8146                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8147                    .map(Into::into)
8148            }
8149        }
8150    };
8151    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8152    /**Function with signature `setGenerator(address)` and selector `0x4a7c7e4b`.
8153```solidity
8154function setGenerator(address newGenerator) external;
8155```*/
8156    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8157    #[derive(Clone)]
8158    pub struct setGeneratorCall {
8159        #[allow(missing_docs)]
8160        pub newGenerator: alloy::sol_types::private::Address,
8161    }
8162    ///Container type for the return parameters of the [`setGenerator(address)`](setGeneratorCall) function.
8163    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8164    #[derive(Clone)]
8165    pub struct setGeneratorReturn {}
8166    #[allow(
8167        non_camel_case_types,
8168        non_snake_case,
8169        clippy::pub_underscore_fields,
8170        clippy::style
8171    )]
8172    const _: () = {
8173        use alloy::sol_types as alloy_sol_types;
8174        {
8175            #[doc(hidden)]
8176            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
8177            #[doc(hidden)]
8178            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
8179            #[cfg(test)]
8180            #[allow(dead_code, unreachable_patterns)]
8181            fn _type_assertion(
8182                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8183            ) {
8184                match _t {
8185                    alloy_sol_types::private::AssertTypeEq::<
8186                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8187                    >(_) => {}
8188                }
8189            }
8190            #[automatically_derived]
8191            #[doc(hidden)]
8192            impl ::core::convert::From<setGeneratorCall> for UnderlyingRustTuple<'_> {
8193                fn from(value: setGeneratorCall) -> Self {
8194                    (value.newGenerator,)
8195                }
8196            }
8197            #[automatically_derived]
8198            #[doc(hidden)]
8199            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setGeneratorCall {
8200                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8201                    Self { newGenerator: tuple.0 }
8202                }
8203            }
8204        }
8205        {
8206            #[doc(hidden)]
8207            type UnderlyingSolTuple<'a> = ();
8208            #[doc(hidden)]
8209            type UnderlyingRustTuple<'a> = ();
8210            #[cfg(test)]
8211            #[allow(dead_code, unreachable_patterns)]
8212            fn _type_assertion(
8213                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8214            ) {
8215                match _t {
8216                    alloy_sol_types::private::AssertTypeEq::<
8217                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8218                    >(_) => {}
8219                }
8220            }
8221            #[automatically_derived]
8222            #[doc(hidden)]
8223            impl ::core::convert::From<setGeneratorReturn> for UnderlyingRustTuple<'_> {
8224                fn from(value: setGeneratorReturn) -> Self {
8225                    ()
8226                }
8227            }
8228            #[automatically_derived]
8229            #[doc(hidden)]
8230            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setGeneratorReturn {
8231                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8232                    Self {}
8233                }
8234            }
8235        }
8236        #[automatically_derived]
8237        impl alloy_sol_types::SolCall for setGeneratorCall {
8238            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
8239            type Token<'a> = <Self::Parameters<
8240                'a,
8241            > as alloy_sol_types::SolType>::Token<'a>;
8242            type Return = setGeneratorReturn;
8243            type ReturnTuple<'a> = ();
8244            type ReturnToken<'a> = <Self::ReturnTuple<
8245                'a,
8246            > as alloy_sol_types::SolType>::Token<'a>;
8247            const SIGNATURE: &'static str = "setGenerator(address)";
8248            const SELECTOR: [u8; 4] = [74u8, 124u8, 126u8, 75u8];
8249            #[inline]
8250            fn new<'a>(
8251                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8252            ) -> Self {
8253                tuple.into()
8254            }
8255            #[inline]
8256            fn tokenize(&self) -> Self::Token<'_> {
8257                (
8258                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8259                        &self.newGenerator,
8260                    ),
8261                )
8262            }
8263            #[inline]
8264            fn abi_decode_returns(
8265                data: &[u8],
8266                validate: bool,
8267            ) -> alloy_sol_types::Result<Self::Return> {
8268                <Self::ReturnTuple<
8269                    '_,
8270                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8271                    .map(Into::into)
8272            }
8273        }
8274    };
8275    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8276    /**Function with signature `setStaleStakesForbidden(bool)` and selector `0x416c7e5e`.
8277```solidity
8278function setStaleStakesForbidden(bool value) external;
8279```*/
8280    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8281    #[derive(Clone)]
8282    pub struct setStaleStakesForbiddenCall {
8283        #[allow(missing_docs)]
8284        pub value: bool,
8285    }
8286    ///Container type for the return parameters of the [`setStaleStakesForbidden(bool)`](setStaleStakesForbiddenCall) function.
8287    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8288    #[derive(Clone)]
8289    pub struct setStaleStakesForbiddenReturn {}
8290    #[allow(
8291        non_camel_case_types,
8292        non_snake_case,
8293        clippy::pub_underscore_fields,
8294        clippy::style
8295    )]
8296    const _: () = {
8297        use alloy::sol_types as alloy_sol_types;
8298        {
8299            #[doc(hidden)]
8300            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
8301            #[doc(hidden)]
8302            type UnderlyingRustTuple<'a> = (bool,);
8303            #[cfg(test)]
8304            #[allow(dead_code, unreachable_patterns)]
8305            fn _type_assertion(
8306                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8307            ) {
8308                match _t {
8309                    alloy_sol_types::private::AssertTypeEq::<
8310                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8311                    >(_) => {}
8312                }
8313            }
8314            #[automatically_derived]
8315            #[doc(hidden)]
8316            impl ::core::convert::From<setStaleStakesForbiddenCall>
8317            for UnderlyingRustTuple<'_> {
8318                fn from(value: setStaleStakesForbiddenCall) -> Self {
8319                    (value.value,)
8320                }
8321            }
8322            #[automatically_derived]
8323            #[doc(hidden)]
8324            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8325            for setStaleStakesForbiddenCall {
8326                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8327                    Self { value: tuple.0 }
8328                }
8329            }
8330        }
8331        {
8332            #[doc(hidden)]
8333            type UnderlyingSolTuple<'a> = ();
8334            #[doc(hidden)]
8335            type UnderlyingRustTuple<'a> = ();
8336            #[cfg(test)]
8337            #[allow(dead_code, unreachable_patterns)]
8338            fn _type_assertion(
8339                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8340            ) {
8341                match _t {
8342                    alloy_sol_types::private::AssertTypeEq::<
8343                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8344                    >(_) => {}
8345                }
8346            }
8347            #[automatically_derived]
8348            #[doc(hidden)]
8349            impl ::core::convert::From<setStaleStakesForbiddenReturn>
8350            for UnderlyingRustTuple<'_> {
8351                fn from(value: setStaleStakesForbiddenReturn) -> Self {
8352                    ()
8353                }
8354            }
8355            #[automatically_derived]
8356            #[doc(hidden)]
8357            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8358            for setStaleStakesForbiddenReturn {
8359                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8360                    Self {}
8361                }
8362            }
8363        }
8364        #[automatically_derived]
8365        impl alloy_sol_types::SolCall for setStaleStakesForbiddenCall {
8366            type Parameters<'a> = (alloy::sol_types::sol_data::Bool,);
8367            type Token<'a> = <Self::Parameters<
8368                'a,
8369            > as alloy_sol_types::SolType>::Token<'a>;
8370            type Return = setStaleStakesForbiddenReturn;
8371            type ReturnTuple<'a> = ();
8372            type ReturnToken<'a> = <Self::ReturnTuple<
8373                'a,
8374            > as alloy_sol_types::SolType>::Token<'a>;
8375            const SIGNATURE: &'static str = "setStaleStakesForbidden(bool)";
8376            const SELECTOR: [u8; 4] = [65u8, 108u8, 126u8, 94u8];
8377            #[inline]
8378            fn new<'a>(
8379                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8380            ) -> Self {
8381                tuple.into()
8382            }
8383            #[inline]
8384            fn tokenize(&self) -> Self::Token<'_> {
8385                (
8386                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
8387                        &self.value,
8388                    ),
8389                )
8390            }
8391            #[inline]
8392            fn abi_decode_returns(
8393                data: &[u8],
8394                validate: bool,
8395            ) -> alloy_sol_types::Result<Self::Return> {
8396                <Self::ReturnTuple<
8397                    '_,
8398                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8399                    .map(Into::into)
8400            }
8401        }
8402    };
8403    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8404    /**Function with signature `stakeRegistry()` and selector `0x68304835`.
8405```solidity
8406function stakeRegistry() external view returns (address);
8407```*/
8408    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8409    #[derive(Clone)]
8410    pub struct stakeRegistryCall {}
8411    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8412    ///Container type for the return parameters of the [`stakeRegistry()`](stakeRegistryCall) function.
8413    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8414    #[derive(Clone)]
8415    pub struct stakeRegistryReturn {
8416        #[allow(missing_docs)]
8417        pub _0: alloy::sol_types::private::Address,
8418    }
8419    #[allow(
8420        non_camel_case_types,
8421        non_snake_case,
8422        clippy::pub_underscore_fields,
8423        clippy::style
8424    )]
8425    const _: () = {
8426        use alloy::sol_types as alloy_sol_types;
8427        {
8428            #[doc(hidden)]
8429            type UnderlyingSolTuple<'a> = ();
8430            #[doc(hidden)]
8431            type UnderlyingRustTuple<'a> = ();
8432            #[cfg(test)]
8433            #[allow(dead_code, unreachable_patterns)]
8434            fn _type_assertion(
8435                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8436            ) {
8437                match _t {
8438                    alloy_sol_types::private::AssertTypeEq::<
8439                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8440                    >(_) => {}
8441                }
8442            }
8443            #[automatically_derived]
8444            #[doc(hidden)]
8445            impl ::core::convert::From<stakeRegistryCall> for UnderlyingRustTuple<'_> {
8446                fn from(value: stakeRegistryCall) -> Self {
8447                    ()
8448                }
8449            }
8450            #[automatically_derived]
8451            #[doc(hidden)]
8452            impl ::core::convert::From<UnderlyingRustTuple<'_>> for stakeRegistryCall {
8453                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8454                    Self {}
8455                }
8456            }
8457        }
8458        {
8459            #[doc(hidden)]
8460            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
8461            #[doc(hidden)]
8462            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
8463            #[cfg(test)]
8464            #[allow(dead_code, unreachable_patterns)]
8465            fn _type_assertion(
8466                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8467            ) {
8468                match _t {
8469                    alloy_sol_types::private::AssertTypeEq::<
8470                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8471                    >(_) => {}
8472                }
8473            }
8474            #[automatically_derived]
8475            #[doc(hidden)]
8476            impl ::core::convert::From<stakeRegistryReturn> for UnderlyingRustTuple<'_> {
8477                fn from(value: stakeRegistryReturn) -> Self {
8478                    (value._0,)
8479                }
8480            }
8481            #[automatically_derived]
8482            #[doc(hidden)]
8483            impl ::core::convert::From<UnderlyingRustTuple<'_>> for stakeRegistryReturn {
8484                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8485                    Self { _0: tuple.0 }
8486                }
8487            }
8488        }
8489        #[automatically_derived]
8490        impl alloy_sol_types::SolCall for stakeRegistryCall {
8491            type Parameters<'a> = ();
8492            type Token<'a> = <Self::Parameters<
8493                'a,
8494            > as alloy_sol_types::SolType>::Token<'a>;
8495            type Return = stakeRegistryReturn;
8496            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
8497            type ReturnToken<'a> = <Self::ReturnTuple<
8498                'a,
8499            > as alloy_sol_types::SolType>::Token<'a>;
8500            const SIGNATURE: &'static str = "stakeRegistry()";
8501            const SELECTOR: [u8; 4] = [104u8, 48u8, 72u8, 53u8];
8502            #[inline]
8503            fn new<'a>(
8504                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8505            ) -> Self {
8506                tuple.into()
8507            }
8508            #[inline]
8509            fn tokenize(&self) -> Self::Token<'_> {
8510                ()
8511            }
8512            #[inline]
8513            fn abi_decode_returns(
8514                data: &[u8],
8515                validate: bool,
8516            ) -> alloy_sol_types::Result<Self::Return> {
8517                <Self::ReturnTuple<
8518                    '_,
8519                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8520                    .map(Into::into)
8521            }
8522        }
8523    };
8524    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8525    /**Function with signature `staleStakesForbidden()` and selector `0xb98d0908`.
8526```solidity
8527function staleStakesForbidden() external view returns (bool);
8528```*/
8529    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8530    #[derive(Clone)]
8531    pub struct staleStakesForbiddenCall {}
8532    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8533    ///Container type for the return parameters of the [`staleStakesForbidden()`](staleStakesForbiddenCall) function.
8534    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8535    #[derive(Clone)]
8536    pub struct staleStakesForbiddenReturn {
8537        #[allow(missing_docs)]
8538        pub _0: bool,
8539    }
8540    #[allow(
8541        non_camel_case_types,
8542        non_snake_case,
8543        clippy::pub_underscore_fields,
8544        clippy::style
8545    )]
8546    const _: () = {
8547        use alloy::sol_types as alloy_sol_types;
8548        {
8549            #[doc(hidden)]
8550            type UnderlyingSolTuple<'a> = ();
8551            #[doc(hidden)]
8552            type UnderlyingRustTuple<'a> = ();
8553            #[cfg(test)]
8554            #[allow(dead_code, unreachable_patterns)]
8555            fn _type_assertion(
8556                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8557            ) {
8558                match _t {
8559                    alloy_sol_types::private::AssertTypeEq::<
8560                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8561                    >(_) => {}
8562                }
8563            }
8564            #[automatically_derived]
8565            #[doc(hidden)]
8566            impl ::core::convert::From<staleStakesForbiddenCall>
8567            for UnderlyingRustTuple<'_> {
8568                fn from(value: staleStakesForbiddenCall) -> Self {
8569                    ()
8570                }
8571            }
8572            #[automatically_derived]
8573            #[doc(hidden)]
8574            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8575            for staleStakesForbiddenCall {
8576                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8577                    Self {}
8578                }
8579            }
8580        }
8581        {
8582            #[doc(hidden)]
8583            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
8584            #[doc(hidden)]
8585            type UnderlyingRustTuple<'a> = (bool,);
8586            #[cfg(test)]
8587            #[allow(dead_code, unreachable_patterns)]
8588            fn _type_assertion(
8589                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8590            ) {
8591                match _t {
8592                    alloy_sol_types::private::AssertTypeEq::<
8593                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8594                    >(_) => {}
8595                }
8596            }
8597            #[automatically_derived]
8598            #[doc(hidden)]
8599            impl ::core::convert::From<staleStakesForbiddenReturn>
8600            for UnderlyingRustTuple<'_> {
8601                fn from(value: staleStakesForbiddenReturn) -> Self {
8602                    (value._0,)
8603                }
8604            }
8605            #[automatically_derived]
8606            #[doc(hidden)]
8607            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8608            for staleStakesForbiddenReturn {
8609                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8610                    Self { _0: tuple.0 }
8611                }
8612            }
8613        }
8614        #[automatically_derived]
8615        impl alloy_sol_types::SolCall for staleStakesForbiddenCall {
8616            type Parameters<'a> = ();
8617            type Token<'a> = <Self::Parameters<
8618                'a,
8619            > as alloy_sol_types::SolType>::Token<'a>;
8620            type Return = staleStakesForbiddenReturn;
8621            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
8622            type ReturnToken<'a> = <Self::ReturnTuple<
8623                'a,
8624            > as alloy_sol_types::SolType>::Token<'a>;
8625            const SIGNATURE: &'static str = "staleStakesForbidden()";
8626            const SELECTOR: [u8; 4] = [185u8, 141u8, 9u8, 8u8];
8627            #[inline]
8628            fn new<'a>(
8629                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8630            ) -> Self {
8631                tuple.into()
8632            }
8633            #[inline]
8634            fn tokenize(&self) -> Self::Token<'_> {
8635                ()
8636            }
8637            #[inline]
8638            fn abi_decode_returns(
8639                data: &[u8],
8640                validate: bool,
8641            ) -> alloy_sol_types::Result<Self::Return> {
8642                <Self::ReturnTuple<
8643                    '_,
8644                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8645                    .map(Into::into)
8646            }
8647        }
8648    };
8649    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8650    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
8651```solidity
8652function transferOwnership(address newOwner) external;
8653```*/
8654    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8655    #[derive(Clone)]
8656    pub struct transferOwnershipCall {
8657        #[allow(missing_docs)]
8658        pub newOwner: alloy::sol_types::private::Address,
8659    }
8660    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
8661    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8662    #[derive(Clone)]
8663    pub struct transferOwnershipReturn {}
8664    #[allow(
8665        non_camel_case_types,
8666        non_snake_case,
8667        clippy::pub_underscore_fields,
8668        clippy::style
8669    )]
8670    const _: () = {
8671        use alloy::sol_types as alloy_sol_types;
8672        {
8673            #[doc(hidden)]
8674            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
8675            #[doc(hidden)]
8676            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
8677            #[cfg(test)]
8678            #[allow(dead_code, unreachable_patterns)]
8679            fn _type_assertion(
8680                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8681            ) {
8682                match _t {
8683                    alloy_sol_types::private::AssertTypeEq::<
8684                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8685                    >(_) => {}
8686                }
8687            }
8688            #[automatically_derived]
8689            #[doc(hidden)]
8690            impl ::core::convert::From<transferOwnershipCall>
8691            for UnderlyingRustTuple<'_> {
8692                fn from(value: transferOwnershipCall) -> Self {
8693                    (value.newOwner,)
8694                }
8695            }
8696            #[automatically_derived]
8697            #[doc(hidden)]
8698            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8699            for transferOwnershipCall {
8700                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8701                    Self { newOwner: tuple.0 }
8702                }
8703            }
8704        }
8705        {
8706            #[doc(hidden)]
8707            type UnderlyingSolTuple<'a> = ();
8708            #[doc(hidden)]
8709            type UnderlyingRustTuple<'a> = ();
8710            #[cfg(test)]
8711            #[allow(dead_code, unreachable_patterns)]
8712            fn _type_assertion(
8713                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8714            ) {
8715                match _t {
8716                    alloy_sol_types::private::AssertTypeEq::<
8717                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8718                    >(_) => {}
8719                }
8720            }
8721            #[automatically_derived]
8722            #[doc(hidden)]
8723            impl ::core::convert::From<transferOwnershipReturn>
8724            for UnderlyingRustTuple<'_> {
8725                fn from(value: transferOwnershipReturn) -> Self {
8726                    ()
8727                }
8728            }
8729            #[automatically_derived]
8730            #[doc(hidden)]
8731            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8732            for transferOwnershipReturn {
8733                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8734                    Self {}
8735                }
8736            }
8737        }
8738        #[automatically_derived]
8739        impl alloy_sol_types::SolCall for transferOwnershipCall {
8740            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
8741            type Token<'a> = <Self::Parameters<
8742                'a,
8743            > as alloy_sol_types::SolType>::Token<'a>;
8744            type Return = transferOwnershipReturn;
8745            type ReturnTuple<'a> = ();
8746            type ReturnToken<'a> = <Self::ReturnTuple<
8747                'a,
8748            > as alloy_sol_types::SolType>::Token<'a>;
8749            const SIGNATURE: &'static str = "transferOwnership(address)";
8750            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
8751            #[inline]
8752            fn new<'a>(
8753                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8754            ) -> Self {
8755                tuple.into()
8756            }
8757            #[inline]
8758            fn tokenize(&self) -> Self::Token<'_> {
8759                (
8760                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8761                        &self.newOwner,
8762                    ),
8763                )
8764            }
8765            #[inline]
8766            fn abi_decode_returns(
8767                data: &[u8],
8768                validate: bool,
8769            ) -> alloy_sol_types::Result<Self::Return> {
8770                <Self::ReturnTuple<
8771                    '_,
8772                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8773                    .map(Into::into)
8774            }
8775        }
8776    };
8777    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8778    /**Function with signature `trySignatureAndApkVerification(bytes32,(uint256,uint256),(uint256[2],uint256[2]),(uint256,uint256))` and selector `0x171f1d5b`.
8779```solidity
8780function trySignatureAndApkVerification(bytes32 msgHash, BN254.G1Point memory apk, BN254.G2Point memory apkG2, BN254.G1Point memory sigma) external view returns (bool pairingSuccessful, bool siganatureIsValid);
8781```*/
8782    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8783    #[derive(Clone)]
8784    pub struct trySignatureAndApkVerificationCall {
8785        #[allow(missing_docs)]
8786        pub msgHash: alloy::sol_types::private::FixedBytes<32>,
8787        #[allow(missing_docs)]
8788        pub apk: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
8789        #[allow(missing_docs)]
8790        pub apkG2: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
8791        #[allow(missing_docs)]
8792        pub sigma: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
8793    }
8794    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8795    ///Container type for the return parameters of the [`trySignatureAndApkVerification(bytes32,(uint256,uint256),(uint256[2],uint256[2]),(uint256,uint256))`](trySignatureAndApkVerificationCall) function.
8796    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8797    #[derive(Clone)]
8798    pub struct trySignatureAndApkVerificationReturn {
8799        #[allow(missing_docs)]
8800        pub pairingSuccessful: bool,
8801        #[allow(missing_docs)]
8802        pub siganatureIsValid: bool,
8803    }
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> = (
8815                alloy::sol_types::sol_data::FixedBytes<32>,
8816                BN254::G1Point,
8817                BN254::G2Point,
8818                BN254::G1Point,
8819            );
8820            #[doc(hidden)]
8821            type UnderlyingRustTuple<'a> = (
8822                alloy::sol_types::private::FixedBytes<32>,
8823                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
8824                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
8825                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
8826            );
8827            #[cfg(test)]
8828            #[allow(dead_code, unreachable_patterns)]
8829            fn _type_assertion(
8830                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8831            ) {
8832                match _t {
8833                    alloy_sol_types::private::AssertTypeEq::<
8834                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8835                    >(_) => {}
8836                }
8837            }
8838            #[automatically_derived]
8839            #[doc(hidden)]
8840            impl ::core::convert::From<trySignatureAndApkVerificationCall>
8841            for UnderlyingRustTuple<'_> {
8842                fn from(value: trySignatureAndApkVerificationCall) -> Self {
8843                    (value.msgHash, value.apk, value.apkG2, value.sigma)
8844                }
8845            }
8846            #[automatically_derived]
8847            #[doc(hidden)]
8848            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8849            for trySignatureAndApkVerificationCall {
8850                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8851                    Self {
8852                        msgHash: tuple.0,
8853                        apk: tuple.1,
8854                        apkG2: tuple.2,
8855                        sigma: tuple.3,
8856                    }
8857                }
8858            }
8859        }
8860        {
8861            #[doc(hidden)]
8862            type UnderlyingSolTuple<'a> = (
8863                alloy::sol_types::sol_data::Bool,
8864                alloy::sol_types::sol_data::Bool,
8865            );
8866            #[doc(hidden)]
8867            type UnderlyingRustTuple<'a> = (bool, bool);
8868            #[cfg(test)]
8869            #[allow(dead_code, unreachable_patterns)]
8870            fn _type_assertion(
8871                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8872            ) {
8873                match _t {
8874                    alloy_sol_types::private::AssertTypeEq::<
8875                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8876                    >(_) => {}
8877                }
8878            }
8879            #[automatically_derived]
8880            #[doc(hidden)]
8881            impl ::core::convert::From<trySignatureAndApkVerificationReturn>
8882            for UnderlyingRustTuple<'_> {
8883                fn from(value: trySignatureAndApkVerificationReturn) -> Self {
8884                    (value.pairingSuccessful, value.siganatureIsValid)
8885                }
8886            }
8887            #[automatically_derived]
8888            #[doc(hidden)]
8889            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8890            for trySignatureAndApkVerificationReturn {
8891                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8892                    Self {
8893                        pairingSuccessful: tuple.0,
8894                        siganatureIsValid: tuple.1,
8895                    }
8896                }
8897            }
8898        }
8899        #[automatically_derived]
8900        impl alloy_sol_types::SolCall for trySignatureAndApkVerificationCall {
8901            type Parameters<'a> = (
8902                alloy::sol_types::sol_data::FixedBytes<32>,
8903                BN254::G1Point,
8904                BN254::G2Point,
8905                BN254::G1Point,
8906            );
8907            type Token<'a> = <Self::Parameters<
8908                'a,
8909            > as alloy_sol_types::SolType>::Token<'a>;
8910            type Return = trySignatureAndApkVerificationReturn;
8911            type ReturnTuple<'a> = (
8912                alloy::sol_types::sol_data::Bool,
8913                alloy::sol_types::sol_data::Bool,
8914            );
8915            type ReturnToken<'a> = <Self::ReturnTuple<
8916                'a,
8917            > as alloy_sol_types::SolType>::Token<'a>;
8918            const SIGNATURE: &'static str = "trySignatureAndApkVerification(bytes32,(uint256,uint256),(uint256[2],uint256[2]),(uint256,uint256))";
8919            const SELECTOR: [u8; 4] = [23u8, 31u8, 29u8, 91u8];
8920            #[inline]
8921            fn new<'a>(
8922                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8923            ) -> Self {
8924                tuple.into()
8925            }
8926            #[inline]
8927            fn tokenize(&self) -> Self::Token<'_> {
8928                (
8929                    <alloy::sol_types::sol_data::FixedBytes<
8930                        32,
8931                    > as alloy_sol_types::SolType>::tokenize(&self.msgHash),
8932                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.apk),
8933                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.apkG2),
8934                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma),
8935                )
8936            }
8937            #[inline]
8938            fn abi_decode_returns(
8939                data: &[u8],
8940                validate: bool,
8941            ) -> alloy_sol_types::Result<Self::Return> {
8942                <Self::ReturnTuple<
8943                    '_,
8944                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8945                    .map(Into::into)
8946            }
8947        }
8948    };
8949    ///Container for all the [`SquaringTask`](self) function calls.
8950    #[derive()]
8951    pub enum SquaringTaskCalls {
8952        #[allow(missing_docs)]
8953        TASK_RESPONSE_WINDOW_BLOCK(TASK_RESPONSE_WINDOW_BLOCKCall),
8954        #[allow(missing_docs)]
8955        __TaskManager_init(__TaskManager_initCall),
8956        #[allow(missing_docs)]
8957        aggregator(aggregatorCall),
8958        #[allow(missing_docs)]
8959        allTaskHashes(allTaskHashesCall),
8960        #[allow(missing_docs)]
8961        allTaskResponses(allTaskResponsesCall),
8962        #[allow(missing_docs)]
8963        blsApkRegistry(blsApkRegistryCall),
8964        #[allow(missing_docs)]
8965        checkSignatures(checkSignaturesCall),
8966        #[allow(missing_docs)]
8967        createSquaringTask(createSquaringTaskCall),
8968        #[allow(missing_docs)]
8969        delegation(delegationCall),
8970        #[allow(missing_docs)]
8971        generator(generatorCall),
8972        #[allow(missing_docs)]
8973        initialize(initializeCall),
8974        #[allow(missing_docs)]
8975        latestTaskNum(latestTaskNumCall),
8976        #[allow(missing_docs)]
8977        owner(ownerCall),
8978        #[allow(missing_docs)]
8979        registryCoordinator(registryCoordinatorCall),
8980        #[allow(missing_docs)]
8981        renounceOwnership(renounceOwnershipCall),
8982        #[allow(missing_docs)]
8983        respondToSquaringTask(respondToSquaringTaskCall),
8984        #[allow(missing_docs)]
8985        setAggregator(setAggregatorCall),
8986        #[allow(missing_docs)]
8987        setGenerator(setGeneratorCall),
8988        #[allow(missing_docs)]
8989        setStaleStakesForbidden(setStaleStakesForbiddenCall),
8990        #[allow(missing_docs)]
8991        stakeRegistry(stakeRegistryCall),
8992        #[allow(missing_docs)]
8993        staleStakesForbidden(staleStakesForbiddenCall),
8994        #[allow(missing_docs)]
8995        transferOwnership(transferOwnershipCall),
8996        #[allow(missing_docs)]
8997        trySignatureAndApkVerification(trySignatureAndApkVerificationCall),
8998    }
8999    #[automatically_derived]
9000    impl SquaringTaskCalls {
9001        /// All the selectors of this enum.
9002        ///
9003        /// Note that the selectors might not be in the same order as the variants.
9004        /// No guarantees are made about the order of the selectors.
9005        ///
9006        /// Prefer using `SolInterface` methods instead.
9007        pub const SELECTORS: &'static [[u8; 4usize]] = &[
9008            [23u8, 31u8, 29u8, 91u8],
9009            [26u8, 212u8, 49u8, 137u8],
9010            [36u8, 90u8, 123u8, 252u8],
9011            [44u8, 178u8, 35u8, 213u8],
9012            [45u8, 137u8, 246u8, 252u8],
9013            [65u8, 108u8, 126u8, 94u8],
9014            [74u8, 124u8, 126u8, 75u8],
9015            [89u8, 25u8, 208u8, 126u8],
9016            [93u8, 244u8, 89u8, 70u8],
9017            [104u8, 48u8, 72u8, 53u8],
9018            [109u8, 20u8, 169u8, 135u8],
9019            [110u8, 251u8, 70u8, 54u8],
9020            [113u8, 80u8, 24u8, 166u8],
9021            [122u8, 250u8, 30u8, 237u8],
9022            [126u8, 142u8, 241u8, 190u8],
9023            [139u8, 0u8, 206u8, 124u8],
9024            [141u8, 165u8, 203u8, 91u8],
9025            [185u8, 141u8, 9u8, 8u8],
9026            [187u8, 206u8, 228u8, 110u8],
9027            [192u8, 197u8, 59u8, 139u8],
9028            [223u8, 92u8, 247u8, 35u8],
9029            [242u8, 253u8, 227u8, 139u8],
9030            [249u8, 18u8, 10u8, 246u8],
9031        ];
9032    }
9033    #[automatically_derived]
9034    impl alloy_sol_types::SolInterface for SquaringTaskCalls {
9035        const NAME: &'static str = "SquaringTaskCalls";
9036        const MIN_DATA_LENGTH: usize = 0usize;
9037        const COUNT: usize = 23usize;
9038        #[inline]
9039        fn selector(&self) -> [u8; 4] {
9040            match self {
9041                Self::TASK_RESPONSE_WINDOW_BLOCK(_) => {
9042                    <TASK_RESPONSE_WINDOW_BLOCKCall as alloy_sol_types::SolCall>::SELECTOR
9043                }
9044                Self::__TaskManager_init(_) => {
9045                    <__TaskManager_initCall as alloy_sol_types::SolCall>::SELECTOR
9046                }
9047                Self::aggregator(_) => {
9048                    <aggregatorCall as alloy_sol_types::SolCall>::SELECTOR
9049                }
9050                Self::allTaskHashes(_) => {
9051                    <allTaskHashesCall as alloy_sol_types::SolCall>::SELECTOR
9052                }
9053                Self::allTaskResponses(_) => {
9054                    <allTaskResponsesCall as alloy_sol_types::SolCall>::SELECTOR
9055                }
9056                Self::blsApkRegistry(_) => {
9057                    <blsApkRegistryCall as alloy_sol_types::SolCall>::SELECTOR
9058                }
9059                Self::checkSignatures(_) => {
9060                    <checkSignaturesCall as alloy_sol_types::SolCall>::SELECTOR
9061                }
9062                Self::createSquaringTask(_) => {
9063                    <createSquaringTaskCall as alloy_sol_types::SolCall>::SELECTOR
9064                }
9065                Self::delegation(_) => {
9066                    <delegationCall as alloy_sol_types::SolCall>::SELECTOR
9067                }
9068                Self::generator(_) => {
9069                    <generatorCall as alloy_sol_types::SolCall>::SELECTOR
9070                }
9071                Self::initialize(_) => {
9072                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
9073                }
9074                Self::latestTaskNum(_) => {
9075                    <latestTaskNumCall as alloy_sol_types::SolCall>::SELECTOR
9076                }
9077                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
9078                Self::registryCoordinator(_) => {
9079                    <registryCoordinatorCall as alloy_sol_types::SolCall>::SELECTOR
9080                }
9081                Self::renounceOwnership(_) => {
9082                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
9083                }
9084                Self::respondToSquaringTask(_) => {
9085                    <respondToSquaringTaskCall as alloy_sol_types::SolCall>::SELECTOR
9086                }
9087                Self::setAggregator(_) => {
9088                    <setAggregatorCall as alloy_sol_types::SolCall>::SELECTOR
9089                }
9090                Self::setGenerator(_) => {
9091                    <setGeneratorCall as alloy_sol_types::SolCall>::SELECTOR
9092                }
9093                Self::setStaleStakesForbidden(_) => {
9094                    <setStaleStakesForbiddenCall as alloy_sol_types::SolCall>::SELECTOR
9095                }
9096                Self::stakeRegistry(_) => {
9097                    <stakeRegistryCall as alloy_sol_types::SolCall>::SELECTOR
9098                }
9099                Self::staleStakesForbidden(_) => {
9100                    <staleStakesForbiddenCall as alloy_sol_types::SolCall>::SELECTOR
9101                }
9102                Self::transferOwnership(_) => {
9103                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
9104                }
9105                Self::trySignatureAndApkVerification(_) => {
9106                    <trySignatureAndApkVerificationCall as alloy_sol_types::SolCall>::SELECTOR
9107                }
9108            }
9109        }
9110        #[inline]
9111        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
9112            Self::SELECTORS.get(i).copied()
9113        }
9114        #[inline]
9115        fn valid_selector(selector: [u8; 4]) -> bool {
9116            Self::SELECTORS.binary_search(&selector).is_ok()
9117        }
9118        #[inline]
9119        #[allow(non_snake_case)]
9120        fn abi_decode_raw(
9121            selector: [u8; 4],
9122            data: &[u8],
9123            validate: bool,
9124        ) -> alloy_sol_types::Result<Self> {
9125            static DECODE_SHIMS: &[fn(
9126                &[u8],
9127                bool,
9128            ) -> alloy_sol_types::Result<SquaringTaskCalls>] = &[
9129                {
9130                    fn trySignatureAndApkVerification(
9131                        data: &[u8],
9132                        validate: bool,
9133                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9134                        <trySignatureAndApkVerificationCall as alloy_sol_types::SolCall>::abi_decode_raw(
9135                                data,
9136                                validate,
9137                            )
9138                            .map(SquaringTaskCalls::trySignatureAndApkVerification)
9139                    }
9140                    trySignatureAndApkVerification
9141                },
9142                {
9143                    fn TASK_RESPONSE_WINDOW_BLOCK(
9144                        data: &[u8],
9145                        validate: bool,
9146                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9147                        <TASK_RESPONSE_WINDOW_BLOCKCall as alloy_sol_types::SolCall>::abi_decode_raw(
9148                                data,
9149                                validate,
9150                            )
9151                            .map(SquaringTaskCalls::TASK_RESPONSE_WINDOW_BLOCK)
9152                    }
9153                    TASK_RESPONSE_WINDOW_BLOCK
9154                },
9155                {
9156                    fn aggregator(
9157                        data: &[u8],
9158                        validate: bool,
9159                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9160                        <aggregatorCall as alloy_sol_types::SolCall>::abi_decode_raw(
9161                                data,
9162                                validate,
9163                            )
9164                            .map(SquaringTaskCalls::aggregator)
9165                    }
9166                    aggregator
9167                },
9168                {
9169                    fn allTaskResponses(
9170                        data: &[u8],
9171                        validate: bool,
9172                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9173                        <allTaskResponsesCall as alloy_sol_types::SolCall>::abi_decode_raw(
9174                                data,
9175                                validate,
9176                            )
9177                            .map(SquaringTaskCalls::allTaskResponses)
9178                    }
9179                    allTaskResponses
9180                },
9181                {
9182                    fn allTaskHashes(
9183                        data: &[u8],
9184                        validate: bool,
9185                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9186                        <allTaskHashesCall as alloy_sol_types::SolCall>::abi_decode_raw(
9187                                data,
9188                                validate,
9189                            )
9190                            .map(SquaringTaskCalls::allTaskHashes)
9191                    }
9192                    allTaskHashes
9193                },
9194                {
9195                    fn setStaleStakesForbidden(
9196                        data: &[u8],
9197                        validate: bool,
9198                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9199                        <setStaleStakesForbiddenCall as alloy_sol_types::SolCall>::abi_decode_raw(
9200                                data,
9201                                validate,
9202                            )
9203                            .map(SquaringTaskCalls::setStaleStakesForbidden)
9204                    }
9205                    setStaleStakesForbidden
9206                },
9207                {
9208                    fn setGenerator(
9209                        data: &[u8],
9210                        validate: bool,
9211                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9212                        <setGeneratorCall as alloy_sol_types::SolCall>::abi_decode_raw(
9213                                data,
9214                                validate,
9215                            )
9216                            .map(SquaringTaskCalls::setGenerator)
9217                    }
9218                    setGenerator
9219                },
9220                {
9221                    fn __TaskManager_init(
9222                        data: &[u8],
9223                        validate: bool,
9224                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9225                        <__TaskManager_initCall as alloy_sol_types::SolCall>::abi_decode_raw(
9226                                data,
9227                                validate,
9228                            )
9229                            .map(SquaringTaskCalls::__TaskManager_init)
9230                    }
9231                    __TaskManager_init
9232                },
9233                {
9234                    fn blsApkRegistry(
9235                        data: &[u8],
9236                        validate: bool,
9237                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9238                        <blsApkRegistryCall as alloy_sol_types::SolCall>::abi_decode_raw(
9239                                data,
9240                                validate,
9241                            )
9242                            .map(SquaringTaskCalls::blsApkRegistry)
9243                    }
9244                    blsApkRegistry
9245                },
9246                {
9247                    fn stakeRegistry(
9248                        data: &[u8],
9249                        validate: bool,
9250                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9251                        <stakeRegistryCall as alloy_sol_types::SolCall>::abi_decode_raw(
9252                                data,
9253                                validate,
9254                            )
9255                            .map(SquaringTaskCalls::stakeRegistry)
9256                    }
9257                    stakeRegistry
9258                },
9259                {
9260                    fn registryCoordinator(
9261                        data: &[u8],
9262                        validate: bool,
9263                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9264                        <registryCoordinatorCall as alloy_sol_types::SolCall>::abi_decode_raw(
9265                                data,
9266                                validate,
9267                            )
9268                            .map(SquaringTaskCalls::registryCoordinator)
9269                    }
9270                    registryCoordinator
9271                },
9272                {
9273                    fn checkSignatures(
9274                        data: &[u8],
9275                        validate: bool,
9276                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9277                        <checkSignaturesCall as alloy_sol_types::SolCall>::abi_decode_raw(
9278                                data,
9279                                validate,
9280                            )
9281                            .map(SquaringTaskCalls::checkSignatures)
9282                    }
9283                    checkSignatures
9284                },
9285                {
9286                    fn renounceOwnership(
9287                        data: &[u8],
9288                        validate: bool,
9289                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9290                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
9291                                data,
9292                                validate,
9293                            )
9294                            .map(SquaringTaskCalls::renounceOwnership)
9295                    }
9296                    renounceOwnership
9297                },
9298                {
9299                    fn generator(
9300                        data: &[u8],
9301                        validate: bool,
9302                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9303                        <generatorCall as alloy_sol_types::SolCall>::abi_decode_raw(
9304                                data,
9305                                validate,
9306                            )
9307                            .map(SquaringTaskCalls::generator)
9308                    }
9309                    generator
9310                },
9311                {
9312                    fn respondToSquaringTask(
9313                        data: &[u8],
9314                        validate: bool,
9315                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9316                        <respondToSquaringTaskCall as alloy_sol_types::SolCall>::abi_decode_raw(
9317                                data,
9318                                validate,
9319                            )
9320                            .map(SquaringTaskCalls::respondToSquaringTask)
9321                    }
9322                    respondToSquaringTask
9323                },
9324                {
9325                    fn latestTaskNum(
9326                        data: &[u8],
9327                        validate: bool,
9328                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9329                        <latestTaskNumCall as alloy_sol_types::SolCall>::abi_decode_raw(
9330                                data,
9331                                validate,
9332                            )
9333                            .map(SquaringTaskCalls::latestTaskNum)
9334                    }
9335                    latestTaskNum
9336                },
9337                {
9338                    fn owner(
9339                        data: &[u8],
9340                        validate: bool,
9341                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9342                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(
9343                                data,
9344                                validate,
9345                            )
9346                            .map(SquaringTaskCalls::owner)
9347                    }
9348                    owner
9349                },
9350                {
9351                    fn staleStakesForbidden(
9352                        data: &[u8],
9353                        validate: bool,
9354                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9355                        <staleStakesForbiddenCall as alloy_sol_types::SolCall>::abi_decode_raw(
9356                                data,
9357                                validate,
9358                            )
9359                            .map(SquaringTaskCalls::staleStakesForbidden)
9360                    }
9361                    staleStakesForbidden
9362                },
9363                {
9364                    fn createSquaringTask(
9365                        data: &[u8],
9366                        validate: bool,
9367                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9368                        <createSquaringTaskCall as alloy_sol_types::SolCall>::abi_decode_raw(
9369                                data,
9370                                validate,
9371                            )
9372                            .map(SquaringTaskCalls::createSquaringTask)
9373                    }
9374                    createSquaringTask
9375                },
9376                {
9377                    fn initialize(
9378                        data: &[u8],
9379                        validate: bool,
9380                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9381                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(
9382                                data,
9383                                validate,
9384                            )
9385                            .map(SquaringTaskCalls::initialize)
9386                    }
9387                    initialize
9388                },
9389                {
9390                    fn delegation(
9391                        data: &[u8],
9392                        validate: bool,
9393                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9394                        <delegationCall as alloy_sol_types::SolCall>::abi_decode_raw(
9395                                data,
9396                                validate,
9397                            )
9398                            .map(SquaringTaskCalls::delegation)
9399                    }
9400                    delegation
9401                },
9402                {
9403                    fn transferOwnership(
9404                        data: &[u8],
9405                        validate: bool,
9406                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9407                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
9408                                data,
9409                                validate,
9410                            )
9411                            .map(SquaringTaskCalls::transferOwnership)
9412                    }
9413                    transferOwnership
9414                },
9415                {
9416                    fn setAggregator(
9417                        data: &[u8],
9418                        validate: bool,
9419                    ) -> alloy_sol_types::Result<SquaringTaskCalls> {
9420                        <setAggregatorCall as alloy_sol_types::SolCall>::abi_decode_raw(
9421                                data,
9422                                validate,
9423                            )
9424                            .map(SquaringTaskCalls::setAggregator)
9425                    }
9426                    setAggregator
9427                },
9428            ];
9429            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
9430                return Err(
9431                    alloy_sol_types::Error::unknown_selector(
9432                        <Self as alloy_sol_types::SolInterface>::NAME,
9433                        selector,
9434                    ),
9435                );
9436            };
9437            DECODE_SHIMS[idx](data, validate)
9438        }
9439        #[inline]
9440        fn abi_encoded_size(&self) -> usize {
9441            match self {
9442                Self::TASK_RESPONSE_WINDOW_BLOCK(inner) => {
9443                    <TASK_RESPONSE_WINDOW_BLOCKCall as alloy_sol_types::SolCall>::abi_encoded_size(
9444                        inner,
9445                    )
9446                }
9447                Self::__TaskManager_init(inner) => {
9448                    <__TaskManager_initCall as alloy_sol_types::SolCall>::abi_encoded_size(
9449                        inner,
9450                    )
9451                }
9452                Self::aggregator(inner) => {
9453                    <aggregatorCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9454                }
9455                Self::allTaskHashes(inner) => {
9456                    <allTaskHashesCall as alloy_sol_types::SolCall>::abi_encoded_size(
9457                        inner,
9458                    )
9459                }
9460                Self::allTaskResponses(inner) => {
9461                    <allTaskResponsesCall as alloy_sol_types::SolCall>::abi_encoded_size(
9462                        inner,
9463                    )
9464                }
9465                Self::blsApkRegistry(inner) => {
9466                    <blsApkRegistryCall as alloy_sol_types::SolCall>::abi_encoded_size(
9467                        inner,
9468                    )
9469                }
9470                Self::checkSignatures(inner) => {
9471                    <checkSignaturesCall as alloy_sol_types::SolCall>::abi_encoded_size(
9472                        inner,
9473                    )
9474                }
9475                Self::createSquaringTask(inner) => {
9476                    <createSquaringTaskCall as alloy_sol_types::SolCall>::abi_encoded_size(
9477                        inner,
9478                    )
9479                }
9480                Self::delegation(inner) => {
9481                    <delegationCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9482                }
9483                Self::generator(inner) => {
9484                    <generatorCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9485                }
9486                Self::initialize(inner) => {
9487                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9488                }
9489                Self::latestTaskNum(inner) => {
9490                    <latestTaskNumCall as alloy_sol_types::SolCall>::abi_encoded_size(
9491                        inner,
9492                    )
9493                }
9494                Self::owner(inner) => {
9495                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9496                }
9497                Self::registryCoordinator(inner) => {
9498                    <registryCoordinatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
9499                        inner,
9500                    )
9501                }
9502                Self::renounceOwnership(inner) => {
9503                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
9504                        inner,
9505                    )
9506                }
9507                Self::respondToSquaringTask(inner) => {
9508                    <respondToSquaringTaskCall as alloy_sol_types::SolCall>::abi_encoded_size(
9509                        inner,
9510                    )
9511                }
9512                Self::setAggregator(inner) => {
9513                    <setAggregatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
9514                        inner,
9515                    )
9516                }
9517                Self::setGenerator(inner) => {
9518                    <setGeneratorCall as alloy_sol_types::SolCall>::abi_encoded_size(
9519                        inner,
9520                    )
9521                }
9522                Self::setStaleStakesForbidden(inner) => {
9523                    <setStaleStakesForbiddenCall as alloy_sol_types::SolCall>::abi_encoded_size(
9524                        inner,
9525                    )
9526                }
9527                Self::stakeRegistry(inner) => {
9528                    <stakeRegistryCall as alloy_sol_types::SolCall>::abi_encoded_size(
9529                        inner,
9530                    )
9531                }
9532                Self::staleStakesForbidden(inner) => {
9533                    <staleStakesForbiddenCall as alloy_sol_types::SolCall>::abi_encoded_size(
9534                        inner,
9535                    )
9536                }
9537                Self::transferOwnership(inner) => {
9538                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
9539                        inner,
9540                    )
9541                }
9542                Self::trySignatureAndApkVerification(inner) => {
9543                    <trySignatureAndApkVerificationCall as alloy_sol_types::SolCall>::abi_encoded_size(
9544                        inner,
9545                    )
9546                }
9547            }
9548        }
9549        #[inline]
9550        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
9551            match self {
9552                Self::TASK_RESPONSE_WINDOW_BLOCK(inner) => {
9553                    <TASK_RESPONSE_WINDOW_BLOCKCall as alloy_sol_types::SolCall>::abi_encode_raw(
9554                        inner,
9555                        out,
9556                    )
9557                }
9558                Self::__TaskManager_init(inner) => {
9559                    <__TaskManager_initCall as alloy_sol_types::SolCall>::abi_encode_raw(
9560                        inner,
9561                        out,
9562                    )
9563                }
9564                Self::aggregator(inner) => {
9565                    <aggregatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
9566                        inner,
9567                        out,
9568                    )
9569                }
9570                Self::allTaskHashes(inner) => {
9571                    <allTaskHashesCall as alloy_sol_types::SolCall>::abi_encode_raw(
9572                        inner,
9573                        out,
9574                    )
9575                }
9576                Self::allTaskResponses(inner) => {
9577                    <allTaskResponsesCall as alloy_sol_types::SolCall>::abi_encode_raw(
9578                        inner,
9579                        out,
9580                    )
9581                }
9582                Self::blsApkRegistry(inner) => {
9583                    <blsApkRegistryCall as alloy_sol_types::SolCall>::abi_encode_raw(
9584                        inner,
9585                        out,
9586                    )
9587                }
9588                Self::checkSignatures(inner) => {
9589                    <checkSignaturesCall as alloy_sol_types::SolCall>::abi_encode_raw(
9590                        inner,
9591                        out,
9592                    )
9593                }
9594                Self::createSquaringTask(inner) => {
9595                    <createSquaringTaskCall as alloy_sol_types::SolCall>::abi_encode_raw(
9596                        inner,
9597                        out,
9598                    )
9599                }
9600                Self::delegation(inner) => {
9601                    <delegationCall as alloy_sol_types::SolCall>::abi_encode_raw(
9602                        inner,
9603                        out,
9604                    )
9605                }
9606                Self::generator(inner) => {
9607                    <generatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
9608                        inner,
9609                        out,
9610                    )
9611                }
9612                Self::initialize(inner) => {
9613                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
9614                        inner,
9615                        out,
9616                    )
9617                }
9618                Self::latestTaskNum(inner) => {
9619                    <latestTaskNumCall as alloy_sol_types::SolCall>::abi_encode_raw(
9620                        inner,
9621                        out,
9622                    )
9623                }
9624                Self::owner(inner) => {
9625                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
9626                }
9627                Self::registryCoordinator(inner) => {
9628                    <registryCoordinatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
9629                        inner,
9630                        out,
9631                    )
9632                }
9633                Self::renounceOwnership(inner) => {
9634                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
9635                        inner,
9636                        out,
9637                    )
9638                }
9639                Self::respondToSquaringTask(inner) => {
9640                    <respondToSquaringTaskCall as alloy_sol_types::SolCall>::abi_encode_raw(
9641                        inner,
9642                        out,
9643                    )
9644                }
9645                Self::setAggregator(inner) => {
9646                    <setAggregatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
9647                        inner,
9648                        out,
9649                    )
9650                }
9651                Self::setGenerator(inner) => {
9652                    <setGeneratorCall as alloy_sol_types::SolCall>::abi_encode_raw(
9653                        inner,
9654                        out,
9655                    )
9656                }
9657                Self::setStaleStakesForbidden(inner) => {
9658                    <setStaleStakesForbiddenCall as alloy_sol_types::SolCall>::abi_encode_raw(
9659                        inner,
9660                        out,
9661                    )
9662                }
9663                Self::stakeRegistry(inner) => {
9664                    <stakeRegistryCall as alloy_sol_types::SolCall>::abi_encode_raw(
9665                        inner,
9666                        out,
9667                    )
9668                }
9669                Self::staleStakesForbidden(inner) => {
9670                    <staleStakesForbiddenCall as alloy_sol_types::SolCall>::abi_encode_raw(
9671                        inner,
9672                        out,
9673                    )
9674                }
9675                Self::transferOwnership(inner) => {
9676                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
9677                        inner,
9678                        out,
9679                    )
9680                }
9681                Self::trySignatureAndApkVerification(inner) => {
9682                    <trySignatureAndApkVerificationCall as alloy_sol_types::SolCall>::abi_encode_raw(
9683                        inner,
9684                        out,
9685                    )
9686                }
9687            }
9688        }
9689    }
9690    ///Container for all the [`SquaringTask`](self) custom errors.
9691    #[derive(Debug, PartialEq, Eq, Hash)]
9692    pub enum SquaringTaskErrors {
9693        #[allow(missing_docs)]
9694        AlreadySet(AlreadySet),
9695        #[allow(missing_docs)]
9696        BitmapValueTooLarge(BitmapValueTooLarge),
9697        #[allow(missing_docs)]
9698        BytesArrayLengthTooLong(BytesArrayLengthTooLong),
9699        #[allow(missing_docs)]
9700        BytesArrayNotOrdered(BytesArrayNotOrdered),
9701        #[allow(missing_docs)]
9702        ECAddFailed(ECAddFailed),
9703        #[allow(missing_docs)]
9704        ECMulFailed(ECMulFailed),
9705        #[allow(missing_docs)]
9706        ExpModFailed(ExpModFailed),
9707        #[allow(missing_docs)]
9708        IncorrectSquareResult(IncorrectSquareResult),
9709        #[allow(missing_docs)]
9710        InputArrayLengthMismatch(InputArrayLengthMismatch),
9711        #[allow(missing_docs)]
9712        InputEmptyQuorumNumbers(InputEmptyQuorumNumbers),
9713        #[allow(missing_docs)]
9714        InputNonSignerLengthMismatch(InputNonSignerLengthMismatch),
9715        #[allow(missing_docs)]
9716        InvalidBLSPairingKey(InvalidBLSPairingKey),
9717        #[allow(missing_docs)]
9718        InvalidBLSSignature(InvalidBLSSignature),
9719        #[allow(missing_docs)]
9720        InvalidQuorumApkHash(InvalidQuorumApkHash),
9721        #[allow(missing_docs)]
9722        InvalidReferenceBlocknumber(InvalidReferenceBlocknumber),
9723        #[allow(missing_docs)]
9724        NoOngoingDeployment(NoOngoingDeployment),
9725        #[allow(missing_docs)]
9726        NonSignerPubkeysNotSorted(NonSignerPubkeysNotSorted),
9727        #[allow(missing_docs)]
9728        OnlyRegistryCoordinatorOwner(OnlyRegistryCoordinatorOwner),
9729        #[allow(missing_docs)]
9730        ScalarTooLarge(ScalarTooLarge),
9731        #[allow(missing_docs)]
9732        StaleStakesForbidden(StaleStakesForbidden),
9733        #[allow(missing_docs)]
9734        ZeroAddress(ZeroAddress),
9735        #[allow(missing_docs)]
9736        ZeroValue(ZeroValue),
9737    }
9738    #[automatically_derived]
9739    impl SquaringTaskErrors {
9740        /// All the selectors of this enum.
9741        ///
9742        /// Note that the selectors might not be in the same order as the variants.
9743        /// No guarantees are made about the order of the selectors.
9744        ///
9745        /// Prefer using `SolInterface` methods instead.
9746        pub const SELECTORS: &'static [[u8; 4usize]] = &[
9747            [12u8, 249u8, 45u8, 213u8],
9748            [31u8, 4u8, 5u8, 160u8],
9749            [67u8, 113u8, 74u8, 253u8],
9750            [70u8, 51u8, 190u8, 50u8],
9751            [75u8, 135u8, 79u8, 69u8],
9752            [95u8, 131u8, 47u8, 65u8],
9753            [103u8, 152u8, 141u8, 51u8],
9754            [124u8, 148u8, 110u8, 215u8],
9755            [128u8, 200u8, 131u8, 72u8],
9756            [167u8, 65u8, 160u8, 69u8],
9757            [171u8, 27u8, 35u8, 107u8],
9758            [175u8, 252u8, 94u8, 219u8],
9759            [200u8, 116u8, 138u8, 180u8],
9760            [202u8, 149u8, 115u8, 51u8],
9761            [212u8, 182u8, 143u8, 215u8],
9762            [213u8, 30u8, 218u8, 227u8],
9763            [217u8, 46u8, 35u8, 61u8],
9764            [224u8, 225u8, 231u8, 98u8],
9765            [225u8, 49u8, 10u8, 237u8],
9766            [251u8, 74u8, 156u8, 142u8],
9767            [255u8, 113u8, 148u8, 20u8],
9768            [255u8, 137u8, 212u8, 250u8],
9769        ];
9770    }
9771    #[automatically_derived]
9772    impl alloy_sol_types::SolInterface for SquaringTaskErrors {
9773        const NAME: &'static str = "SquaringTaskErrors";
9774        const MIN_DATA_LENGTH: usize = 0usize;
9775        const COUNT: usize = 22usize;
9776        #[inline]
9777        fn selector(&self) -> [u8; 4] {
9778            match self {
9779                Self::AlreadySet(_) => {
9780                    <AlreadySet as alloy_sol_types::SolError>::SELECTOR
9781                }
9782                Self::BitmapValueTooLarge(_) => {
9783                    <BitmapValueTooLarge as alloy_sol_types::SolError>::SELECTOR
9784                }
9785                Self::BytesArrayLengthTooLong(_) => {
9786                    <BytesArrayLengthTooLong as alloy_sol_types::SolError>::SELECTOR
9787                }
9788                Self::BytesArrayNotOrdered(_) => {
9789                    <BytesArrayNotOrdered as alloy_sol_types::SolError>::SELECTOR
9790                }
9791                Self::ECAddFailed(_) => {
9792                    <ECAddFailed as alloy_sol_types::SolError>::SELECTOR
9793                }
9794                Self::ECMulFailed(_) => {
9795                    <ECMulFailed as alloy_sol_types::SolError>::SELECTOR
9796                }
9797                Self::ExpModFailed(_) => {
9798                    <ExpModFailed as alloy_sol_types::SolError>::SELECTOR
9799                }
9800                Self::IncorrectSquareResult(_) => {
9801                    <IncorrectSquareResult as alloy_sol_types::SolError>::SELECTOR
9802                }
9803                Self::InputArrayLengthMismatch(_) => {
9804                    <InputArrayLengthMismatch as alloy_sol_types::SolError>::SELECTOR
9805                }
9806                Self::InputEmptyQuorumNumbers(_) => {
9807                    <InputEmptyQuorumNumbers as alloy_sol_types::SolError>::SELECTOR
9808                }
9809                Self::InputNonSignerLengthMismatch(_) => {
9810                    <InputNonSignerLengthMismatch as alloy_sol_types::SolError>::SELECTOR
9811                }
9812                Self::InvalidBLSPairingKey(_) => {
9813                    <InvalidBLSPairingKey as alloy_sol_types::SolError>::SELECTOR
9814                }
9815                Self::InvalidBLSSignature(_) => {
9816                    <InvalidBLSSignature as alloy_sol_types::SolError>::SELECTOR
9817                }
9818                Self::InvalidQuorumApkHash(_) => {
9819                    <InvalidQuorumApkHash as alloy_sol_types::SolError>::SELECTOR
9820                }
9821                Self::InvalidReferenceBlocknumber(_) => {
9822                    <InvalidReferenceBlocknumber as alloy_sol_types::SolError>::SELECTOR
9823                }
9824                Self::NoOngoingDeployment(_) => {
9825                    <NoOngoingDeployment as alloy_sol_types::SolError>::SELECTOR
9826                }
9827                Self::NonSignerPubkeysNotSorted(_) => {
9828                    <NonSignerPubkeysNotSorted as alloy_sol_types::SolError>::SELECTOR
9829                }
9830                Self::OnlyRegistryCoordinatorOwner(_) => {
9831                    <OnlyRegistryCoordinatorOwner as alloy_sol_types::SolError>::SELECTOR
9832                }
9833                Self::ScalarTooLarge(_) => {
9834                    <ScalarTooLarge as alloy_sol_types::SolError>::SELECTOR
9835                }
9836                Self::StaleStakesForbidden(_) => {
9837                    <StaleStakesForbidden as alloy_sol_types::SolError>::SELECTOR
9838                }
9839                Self::ZeroAddress(_) => {
9840                    <ZeroAddress as alloy_sol_types::SolError>::SELECTOR
9841                }
9842                Self::ZeroValue(_) => <ZeroValue as alloy_sol_types::SolError>::SELECTOR,
9843            }
9844        }
9845        #[inline]
9846        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
9847            Self::SELECTORS.get(i).copied()
9848        }
9849        #[inline]
9850        fn valid_selector(selector: [u8; 4]) -> bool {
9851            Self::SELECTORS.binary_search(&selector).is_ok()
9852        }
9853        #[inline]
9854        #[allow(non_snake_case)]
9855        fn abi_decode_raw(
9856            selector: [u8; 4],
9857            data: &[u8],
9858            validate: bool,
9859        ) -> alloy_sol_types::Result<Self> {
9860            static DECODE_SHIMS: &[fn(
9861                &[u8],
9862                bool,
9863            ) -> alloy_sol_types::Result<SquaringTaskErrors>] = &[
9864                {
9865                    fn IncorrectSquareResult(
9866                        data: &[u8],
9867                        validate: bool,
9868                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
9869                        <IncorrectSquareResult as alloy_sol_types::SolError>::abi_decode_raw(
9870                                data,
9871                                validate,
9872                            )
9873                            .map(SquaringTaskErrors::IncorrectSquareResult)
9874                    }
9875                    IncorrectSquareResult
9876                },
9877                {
9878                    fn InputEmptyQuorumNumbers(
9879                        data: &[u8],
9880                        validate: bool,
9881                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
9882                        <InputEmptyQuorumNumbers as alloy_sol_types::SolError>::abi_decode_raw(
9883                                data,
9884                                validate,
9885                            )
9886                            .map(SquaringTaskErrors::InputEmptyQuorumNumbers)
9887                    }
9888                    InputEmptyQuorumNumbers
9889                },
9890                {
9891                    fn InputArrayLengthMismatch(
9892                        data: &[u8],
9893                        validate: bool,
9894                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
9895                        <InputArrayLengthMismatch as alloy_sol_types::SolError>::abi_decode_raw(
9896                                data,
9897                                validate,
9898                            )
9899                            .map(SquaringTaskErrors::InputArrayLengthMismatch)
9900                    }
9901                    InputArrayLengthMismatch
9902                },
9903                {
9904                    fn ECMulFailed(
9905                        data: &[u8],
9906                        validate: bool,
9907                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
9908                        <ECMulFailed as alloy_sol_types::SolError>::abi_decode_raw(
9909                                data,
9910                                validate,
9911                            )
9912                            .map(SquaringTaskErrors::ECMulFailed)
9913                    }
9914                    ECMulFailed
9915                },
9916                {
9917                    fn InvalidReferenceBlocknumber(
9918                        data: &[u8],
9919                        validate: bool,
9920                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
9921                        <InvalidReferenceBlocknumber as alloy_sol_types::SolError>::abi_decode_raw(
9922                                data,
9923                                validate,
9924                            )
9925                            .map(SquaringTaskErrors::InvalidReferenceBlocknumber)
9926                    }
9927                    InvalidReferenceBlocknumber
9928                },
9929                {
9930                    fn InputNonSignerLengthMismatch(
9931                        data: &[u8],
9932                        validate: bool,
9933                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
9934                        <InputNonSignerLengthMismatch as alloy_sol_types::SolError>::abi_decode_raw(
9935                                data,
9936                                validate,
9937                            )
9938                            .map(SquaringTaskErrors::InputNonSignerLengthMismatch)
9939                    }
9940                    InputNonSignerLengthMismatch
9941                },
9942                {
9943                    fn InvalidBLSPairingKey(
9944                        data: &[u8],
9945                        validate: bool,
9946                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
9947                        <InvalidBLSPairingKey as alloy_sol_types::SolError>::abi_decode_raw(
9948                                data,
9949                                validate,
9950                            )
9951                            .map(SquaringTaskErrors::InvalidBLSPairingKey)
9952                    }
9953                    InvalidBLSPairingKey
9954                },
9955                {
9956                    fn ZeroValue(
9957                        data: &[u8],
9958                        validate: bool,
9959                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
9960                        <ZeroValue as alloy_sol_types::SolError>::abi_decode_raw(
9961                                data,
9962                                validate,
9963                            )
9964                            .map(SquaringTaskErrors::ZeroValue)
9965                    }
9966                    ZeroValue
9967                },
9968                {
9969                    fn BytesArrayNotOrdered(
9970                        data: &[u8],
9971                        validate: bool,
9972                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
9973                        <BytesArrayNotOrdered as alloy_sol_types::SolError>::abi_decode_raw(
9974                                data,
9975                                validate,
9976                            )
9977                            .map(SquaringTaskErrors::BytesArrayNotOrdered)
9978                    }
9979                    BytesArrayNotOrdered
9980                },
9981                {
9982                    fn AlreadySet(
9983                        data: &[u8],
9984                        validate: bool,
9985                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
9986                        <AlreadySet as alloy_sol_types::SolError>::abi_decode_raw(
9987                                data,
9988                                validate,
9989                            )
9990                            .map(SquaringTaskErrors::AlreadySet)
9991                    }
9992                    AlreadySet
9993                },
9994                {
9995                    fn InvalidBLSSignature(
9996                        data: &[u8],
9997                        validate: bool,
9998                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
9999                        <InvalidBLSSignature as alloy_sol_types::SolError>::abi_decode_raw(
10000                                data,
10001                                validate,
10002                            )
10003                            .map(SquaringTaskErrors::InvalidBLSSignature)
10004                    }
10005                    InvalidBLSSignature
10006                },
10007                {
10008                    fn StaleStakesForbidden(
10009                        data: &[u8],
10010                        validate: bool,
10011                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
10012                        <StaleStakesForbidden as alloy_sol_types::SolError>::abi_decode_raw(
10013                                data,
10014                                validate,
10015                            )
10016                            .map(SquaringTaskErrors::StaleStakesForbidden)
10017                    }
10018                    StaleStakesForbidden
10019                },
10020                {
10021                    fn NoOngoingDeployment(
10022                        data: &[u8],
10023                        validate: bool,
10024                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
10025                        <NoOngoingDeployment as alloy_sol_types::SolError>::abi_decode_raw(
10026                                data,
10027                                validate,
10028                            )
10029                            .map(SquaringTaskErrors::NoOngoingDeployment)
10030                    }
10031                    NoOngoingDeployment
10032                },
10033                {
10034                    fn BitmapValueTooLarge(
10035                        data: &[u8],
10036                        validate: bool,
10037                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
10038                        <BitmapValueTooLarge as alloy_sol_types::SolError>::abi_decode_raw(
10039                                data,
10040                                validate,
10041                            )
10042                            .map(SquaringTaskErrors::BitmapValueTooLarge)
10043                    }
10044                    BitmapValueTooLarge
10045                },
10046                {
10047                    fn ECAddFailed(
10048                        data: &[u8],
10049                        validate: bool,
10050                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
10051                        <ECAddFailed as alloy_sol_types::SolError>::abi_decode_raw(
10052                                data,
10053                                validate,
10054                            )
10055                            .map(SquaringTaskErrors::ECAddFailed)
10056                    }
10057                    ECAddFailed
10058                },
10059                {
10060                    fn ExpModFailed(
10061                        data: &[u8],
10062                        validate: bool,
10063                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
10064                        <ExpModFailed as alloy_sol_types::SolError>::abi_decode_raw(
10065                                data,
10066                                validate,
10067                            )
10068                            .map(SquaringTaskErrors::ExpModFailed)
10069                    }
10070                    ExpModFailed
10071                },
10072                {
10073                    fn ZeroAddress(
10074                        data: &[u8],
10075                        validate: bool,
10076                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
10077                        <ZeroAddress as alloy_sol_types::SolError>::abi_decode_raw(
10078                                data,
10079                                validate,
10080                            )
10081                            .map(SquaringTaskErrors::ZeroAddress)
10082                    }
10083                    ZeroAddress
10084                },
10085                {
10086                    fn OnlyRegistryCoordinatorOwner(
10087                        data: &[u8],
10088                        validate: bool,
10089                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
10090                        <OnlyRegistryCoordinatorOwner as alloy_sol_types::SolError>::abi_decode_raw(
10091                                data,
10092                                validate,
10093                            )
10094                            .map(SquaringTaskErrors::OnlyRegistryCoordinatorOwner)
10095                    }
10096                    OnlyRegistryCoordinatorOwner
10097                },
10098                {
10099                    fn InvalidQuorumApkHash(
10100                        data: &[u8],
10101                        validate: bool,
10102                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
10103                        <InvalidQuorumApkHash as alloy_sol_types::SolError>::abi_decode_raw(
10104                                data,
10105                                validate,
10106                            )
10107                            .map(SquaringTaskErrors::InvalidQuorumApkHash)
10108                    }
10109                    InvalidQuorumApkHash
10110                },
10111                {
10112                    fn BytesArrayLengthTooLong(
10113                        data: &[u8],
10114                        validate: bool,
10115                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
10116                        <BytesArrayLengthTooLong as alloy_sol_types::SolError>::abi_decode_raw(
10117                                data,
10118                                validate,
10119                            )
10120                            .map(SquaringTaskErrors::BytesArrayLengthTooLong)
10121                    }
10122                    BytesArrayLengthTooLong
10123                },
10124                {
10125                    fn NonSignerPubkeysNotSorted(
10126                        data: &[u8],
10127                        validate: bool,
10128                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
10129                        <NonSignerPubkeysNotSorted as alloy_sol_types::SolError>::abi_decode_raw(
10130                                data,
10131                                validate,
10132                            )
10133                            .map(SquaringTaskErrors::NonSignerPubkeysNotSorted)
10134                    }
10135                    NonSignerPubkeysNotSorted
10136                },
10137                {
10138                    fn ScalarTooLarge(
10139                        data: &[u8],
10140                        validate: bool,
10141                    ) -> alloy_sol_types::Result<SquaringTaskErrors> {
10142                        <ScalarTooLarge as alloy_sol_types::SolError>::abi_decode_raw(
10143                                data,
10144                                validate,
10145                            )
10146                            .map(SquaringTaskErrors::ScalarTooLarge)
10147                    }
10148                    ScalarTooLarge
10149                },
10150            ];
10151            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
10152                return Err(
10153                    alloy_sol_types::Error::unknown_selector(
10154                        <Self as alloy_sol_types::SolInterface>::NAME,
10155                        selector,
10156                    ),
10157                );
10158            };
10159            DECODE_SHIMS[idx](data, validate)
10160        }
10161        #[inline]
10162        fn abi_encoded_size(&self) -> usize {
10163            match self {
10164                Self::AlreadySet(inner) => {
10165                    <AlreadySet as alloy_sol_types::SolError>::abi_encoded_size(inner)
10166                }
10167                Self::BitmapValueTooLarge(inner) => {
10168                    <BitmapValueTooLarge as alloy_sol_types::SolError>::abi_encoded_size(
10169                        inner,
10170                    )
10171                }
10172                Self::BytesArrayLengthTooLong(inner) => {
10173                    <BytesArrayLengthTooLong as alloy_sol_types::SolError>::abi_encoded_size(
10174                        inner,
10175                    )
10176                }
10177                Self::BytesArrayNotOrdered(inner) => {
10178                    <BytesArrayNotOrdered as alloy_sol_types::SolError>::abi_encoded_size(
10179                        inner,
10180                    )
10181                }
10182                Self::ECAddFailed(inner) => {
10183                    <ECAddFailed as alloy_sol_types::SolError>::abi_encoded_size(inner)
10184                }
10185                Self::ECMulFailed(inner) => {
10186                    <ECMulFailed as alloy_sol_types::SolError>::abi_encoded_size(inner)
10187                }
10188                Self::ExpModFailed(inner) => {
10189                    <ExpModFailed as alloy_sol_types::SolError>::abi_encoded_size(inner)
10190                }
10191                Self::IncorrectSquareResult(inner) => {
10192                    <IncorrectSquareResult as alloy_sol_types::SolError>::abi_encoded_size(
10193                        inner,
10194                    )
10195                }
10196                Self::InputArrayLengthMismatch(inner) => {
10197                    <InputArrayLengthMismatch as alloy_sol_types::SolError>::abi_encoded_size(
10198                        inner,
10199                    )
10200                }
10201                Self::InputEmptyQuorumNumbers(inner) => {
10202                    <InputEmptyQuorumNumbers as alloy_sol_types::SolError>::abi_encoded_size(
10203                        inner,
10204                    )
10205                }
10206                Self::InputNonSignerLengthMismatch(inner) => {
10207                    <InputNonSignerLengthMismatch as alloy_sol_types::SolError>::abi_encoded_size(
10208                        inner,
10209                    )
10210                }
10211                Self::InvalidBLSPairingKey(inner) => {
10212                    <InvalidBLSPairingKey as alloy_sol_types::SolError>::abi_encoded_size(
10213                        inner,
10214                    )
10215                }
10216                Self::InvalidBLSSignature(inner) => {
10217                    <InvalidBLSSignature as alloy_sol_types::SolError>::abi_encoded_size(
10218                        inner,
10219                    )
10220                }
10221                Self::InvalidQuorumApkHash(inner) => {
10222                    <InvalidQuorumApkHash as alloy_sol_types::SolError>::abi_encoded_size(
10223                        inner,
10224                    )
10225                }
10226                Self::InvalidReferenceBlocknumber(inner) => {
10227                    <InvalidReferenceBlocknumber as alloy_sol_types::SolError>::abi_encoded_size(
10228                        inner,
10229                    )
10230                }
10231                Self::NoOngoingDeployment(inner) => {
10232                    <NoOngoingDeployment as alloy_sol_types::SolError>::abi_encoded_size(
10233                        inner,
10234                    )
10235                }
10236                Self::NonSignerPubkeysNotSorted(inner) => {
10237                    <NonSignerPubkeysNotSorted as alloy_sol_types::SolError>::abi_encoded_size(
10238                        inner,
10239                    )
10240                }
10241                Self::OnlyRegistryCoordinatorOwner(inner) => {
10242                    <OnlyRegistryCoordinatorOwner as alloy_sol_types::SolError>::abi_encoded_size(
10243                        inner,
10244                    )
10245                }
10246                Self::ScalarTooLarge(inner) => {
10247                    <ScalarTooLarge as alloy_sol_types::SolError>::abi_encoded_size(
10248                        inner,
10249                    )
10250                }
10251                Self::StaleStakesForbidden(inner) => {
10252                    <StaleStakesForbidden as alloy_sol_types::SolError>::abi_encoded_size(
10253                        inner,
10254                    )
10255                }
10256                Self::ZeroAddress(inner) => {
10257                    <ZeroAddress as alloy_sol_types::SolError>::abi_encoded_size(inner)
10258                }
10259                Self::ZeroValue(inner) => {
10260                    <ZeroValue as alloy_sol_types::SolError>::abi_encoded_size(inner)
10261                }
10262            }
10263        }
10264        #[inline]
10265        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
10266            match self {
10267                Self::AlreadySet(inner) => {
10268                    <AlreadySet as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
10269                }
10270                Self::BitmapValueTooLarge(inner) => {
10271                    <BitmapValueTooLarge as alloy_sol_types::SolError>::abi_encode_raw(
10272                        inner,
10273                        out,
10274                    )
10275                }
10276                Self::BytesArrayLengthTooLong(inner) => {
10277                    <BytesArrayLengthTooLong as alloy_sol_types::SolError>::abi_encode_raw(
10278                        inner,
10279                        out,
10280                    )
10281                }
10282                Self::BytesArrayNotOrdered(inner) => {
10283                    <BytesArrayNotOrdered as alloy_sol_types::SolError>::abi_encode_raw(
10284                        inner,
10285                        out,
10286                    )
10287                }
10288                Self::ECAddFailed(inner) => {
10289                    <ECAddFailed as alloy_sol_types::SolError>::abi_encode_raw(
10290                        inner,
10291                        out,
10292                    )
10293                }
10294                Self::ECMulFailed(inner) => {
10295                    <ECMulFailed as alloy_sol_types::SolError>::abi_encode_raw(
10296                        inner,
10297                        out,
10298                    )
10299                }
10300                Self::ExpModFailed(inner) => {
10301                    <ExpModFailed as alloy_sol_types::SolError>::abi_encode_raw(
10302                        inner,
10303                        out,
10304                    )
10305                }
10306                Self::IncorrectSquareResult(inner) => {
10307                    <IncorrectSquareResult as alloy_sol_types::SolError>::abi_encode_raw(
10308                        inner,
10309                        out,
10310                    )
10311                }
10312                Self::InputArrayLengthMismatch(inner) => {
10313                    <InputArrayLengthMismatch as alloy_sol_types::SolError>::abi_encode_raw(
10314                        inner,
10315                        out,
10316                    )
10317                }
10318                Self::InputEmptyQuorumNumbers(inner) => {
10319                    <InputEmptyQuorumNumbers as alloy_sol_types::SolError>::abi_encode_raw(
10320                        inner,
10321                        out,
10322                    )
10323                }
10324                Self::InputNonSignerLengthMismatch(inner) => {
10325                    <InputNonSignerLengthMismatch as alloy_sol_types::SolError>::abi_encode_raw(
10326                        inner,
10327                        out,
10328                    )
10329                }
10330                Self::InvalidBLSPairingKey(inner) => {
10331                    <InvalidBLSPairingKey as alloy_sol_types::SolError>::abi_encode_raw(
10332                        inner,
10333                        out,
10334                    )
10335                }
10336                Self::InvalidBLSSignature(inner) => {
10337                    <InvalidBLSSignature as alloy_sol_types::SolError>::abi_encode_raw(
10338                        inner,
10339                        out,
10340                    )
10341                }
10342                Self::InvalidQuorumApkHash(inner) => {
10343                    <InvalidQuorumApkHash as alloy_sol_types::SolError>::abi_encode_raw(
10344                        inner,
10345                        out,
10346                    )
10347                }
10348                Self::InvalidReferenceBlocknumber(inner) => {
10349                    <InvalidReferenceBlocknumber as alloy_sol_types::SolError>::abi_encode_raw(
10350                        inner,
10351                        out,
10352                    )
10353                }
10354                Self::NoOngoingDeployment(inner) => {
10355                    <NoOngoingDeployment as alloy_sol_types::SolError>::abi_encode_raw(
10356                        inner,
10357                        out,
10358                    )
10359                }
10360                Self::NonSignerPubkeysNotSorted(inner) => {
10361                    <NonSignerPubkeysNotSorted as alloy_sol_types::SolError>::abi_encode_raw(
10362                        inner,
10363                        out,
10364                    )
10365                }
10366                Self::OnlyRegistryCoordinatorOwner(inner) => {
10367                    <OnlyRegistryCoordinatorOwner as alloy_sol_types::SolError>::abi_encode_raw(
10368                        inner,
10369                        out,
10370                    )
10371                }
10372                Self::ScalarTooLarge(inner) => {
10373                    <ScalarTooLarge as alloy_sol_types::SolError>::abi_encode_raw(
10374                        inner,
10375                        out,
10376                    )
10377                }
10378                Self::StaleStakesForbidden(inner) => {
10379                    <StaleStakesForbidden as alloy_sol_types::SolError>::abi_encode_raw(
10380                        inner,
10381                        out,
10382                    )
10383                }
10384                Self::ZeroAddress(inner) => {
10385                    <ZeroAddress as alloy_sol_types::SolError>::abi_encode_raw(
10386                        inner,
10387                        out,
10388                    )
10389                }
10390                Self::ZeroValue(inner) => {
10391                    <ZeroValue as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
10392                }
10393            }
10394        }
10395    }
10396    ///Container for all the [`SquaringTask`](self) events.
10397    #[derive(Debug, PartialEq, Eq, Hash)]
10398    pub enum SquaringTaskEvents {
10399        #[allow(missing_docs)]
10400        AggregatorUpdated(AggregatorUpdated),
10401        #[allow(missing_docs)]
10402        GeneratorUpdated(GeneratorUpdated),
10403        #[allow(missing_docs)]
10404        Initialized(Initialized),
10405        #[allow(missing_docs)]
10406        NewTaskCreated(NewTaskCreated),
10407        #[allow(missing_docs)]
10408        OwnershipTransferred(OwnershipTransferred),
10409        #[allow(missing_docs)]
10410        SquaringTaskCompleted(SquaringTaskCompleted),
10411        #[allow(missing_docs)]
10412        StaleStakesForbiddenUpdate(StaleStakesForbiddenUpdate),
10413        #[allow(missing_docs)]
10414        TaskResponded(TaskResponded),
10415    }
10416    #[automatically_derived]
10417    impl SquaringTaskEvents {
10418        /// All the selectors of this enum.
10419        ///
10420        /// Note that the selectors might not be in the same order as the variants.
10421        /// No guarantees are made about the order of the selectors.
10422        ///
10423        /// Prefer using `SolInterface` methods instead.
10424        pub const SELECTORS: &'static [[u8; 32usize]] = &[
10425            [
10426                13u8, 223u8, 171u8, 138u8, 99u8, 93u8, 113u8, 241u8, 93u8, 114u8, 226u8,
10427                210u8, 223u8, 245u8, 93u8, 50u8, 17u8, 157u8, 19u8, 39u8, 13u8, 46u8,
10428                164u8, 195u8, 220u8, 0u8, 67u8, 182u8, 108u8, 44u8, 71u8, 107u8,
10429            ],
10430            [
10431                64u8, 228u8, 237u8, 136u8, 10u8, 41u8, 224u8, 246u8, 221u8, 206u8, 48u8,
10432                116u8, 87u8, 251u8, 117u8, 205u8, 223u8, 79u8, 238u8, 247u8, 211u8,
10433                236u8, 176u8, 48u8, 27u8, 253u8, 244u8, 151u8, 106u8, 14u8, 45u8, 252u8,
10434            ],
10435            [
10436                127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8,
10437                19u8, 56u8, 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8,
10438                146u8, 20u8, 96u8, 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8,
10439            ],
10440            [
10441                137u8, 186u8, 171u8, 239u8, 125u8, 253u8, 6u8, 131u8, 192u8, 172u8, 22u8,
10442                253u8, 42u8, 132u8, 49u8, 197u8, 27u8, 73u8, 251u8, 230u8, 84u8, 195u8,
10443                247u8, 181u8, 239u8, 25u8, 118u8, 62u8, 44u8, 205u8, 136u8, 242u8,
10444            ],
10445            [
10446                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
10447                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
10448                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
10449            ],
10450            [
10451                155u8, 150u8, 201u8, 129u8, 199u8, 199u8, 10u8, 159u8, 23u8, 2u8, 171u8,
10452                176u8, 68u8, 120u8, 39u8, 70u8, 193u8, 29u8, 9u8, 15u8, 88u8, 234u8,
10453                52u8, 177u8, 45u8, 175u8, 44u8, 197u8, 60u8, 248u8, 171u8, 95u8,
10454            ],
10455            [
10456                167u8, 167u8, 7u8, 221u8, 127u8, 76u8, 160u8, 15u8, 225u8, 175u8, 205u8,
10457                52u8, 223u8, 126u8, 187u8, 108u8, 71u8, 242u8, 56u8, 128u8, 195u8, 77u8,
10458                37u8, 76u8, 195u8, 18u8, 229u8, 196u8, 30u8, 57u8, 116u8, 197u8,
10459            ],
10460            [
10461                186u8, 55u8, 131u8, 43u8, 221u8, 33u8, 116u8, 43u8, 134u8, 166u8, 51u8,
10462                4u8, 59u8, 146u8, 58u8, 154u8, 169u8, 120u8, 241u8, 207u8, 178u8, 178u8,
10463                116u8, 198u8, 102u8, 30u8, 181u8, 115u8, 207u8, 9u8, 43u8, 240u8,
10464            ],
10465        ];
10466    }
10467    #[automatically_derived]
10468    impl alloy_sol_types::SolEventInterface for SquaringTaskEvents {
10469        const NAME: &'static str = "SquaringTaskEvents";
10470        const COUNT: usize = 8usize;
10471        fn decode_raw_log(
10472            topics: &[alloy_sol_types::Word],
10473            data: &[u8],
10474            validate: bool,
10475        ) -> alloy_sol_types::Result<Self> {
10476            match topics.first().copied() {
10477                Some(
10478                    <AggregatorUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
10479                ) => {
10480                    <AggregatorUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
10481                            topics,
10482                            data,
10483                            validate,
10484                        )
10485                        .map(Self::AggregatorUpdated)
10486                }
10487                Some(<GeneratorUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
10488                    <GeneratorUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
10489                            topics,
10490                            data,
10491                            validate,
10492                        )
10493                        .map(Self::GeneratorUpdated)
10494                }
10495                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
10496                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(
10497                            topics,
10498                            data,
10499                            validate,
10500                        )
10501                        .map(Self::Initialized)
10502                }
10503                Some(<NewTaskCreated as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
10504                    <NewTaskCreated as alloy_sol_types::SolEvent>::decode_raw_log(
10505                            topics,
10506                            data,
10507                            validate,
10508                        )
10509                        .map(Self::NewTaskCreated)
10510                }
10511                Some(
10512                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
10513                ) => {
10514                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
10515                            topics,
10516                            data,
10517                            validate,
10518                        )
10519                        .map(Self::OwnershipTransferred)
10520                }
10521                Some(
10522                    <SquaringTaskCompleted as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
10523                ) => {
10524                    <SquaringTaskCompleted as alloy_sol_types::SolEvent>::decode_raw_log(
10525                            topics,
10526                            data,
10527                            validate,
10528                        )
10529                        .map(Self::SquaringTaskCompleted)
10530                }
10531                Some(
10532                    <StaleStakesForbiddenUpdate as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
10533                ) => {
10534                    <StaleStakesForbiddenUpdate as alloy_sol_types::SolEvent>::decode_raw_log(
10535                            topics,
10536                            data,
10537                            validate,
10538                        )
10539                        .map(Self::StaleStakesForbiddenUpdate)
10540                }
10541                Some(<TaskResponded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
10542                    <TaskResponded as alloy_sol_types::SolEvent>::decode_raw_log(
10543                            topics,
10544                            data,
10545                            validate,
10546                        )
10547                        .map(Self::TaskResponded)
10548                }
10549                _ => {
10550                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
10551                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
10552                        log: alloy_sol_types::private::Box::new(
10553                            alloy_sol_types::private::LogData::new_unchecked(
10554                                topics.to_vec(),
10555                                data.to_vec().into(),
10556                            ),
10557                        ),
10558                    })
10559                }
10560            }
10561        }
10562    }
10563    #[automatically_derived]
10564    impl alloy_sol_types::private::IntoLogData for SquaringTaskEvents {
10565        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10566            match self {
10567                Self::AggregatorUpdated(inner) => {
10568                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
10569                }
10570                Self::GeneratorUpdated(inner) => {
10571                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
10572                }
10573                Self::Initialized(inner) => {
10574                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
10575                }
10576                Self::NewTaskCreated(inner) => {
10577                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
10578                }
10579                Self::OwnershipTransferred(inner) => {
10580                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
10581                }
10582                Self::SquaringTaskCompleted(inner) => {
10583                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
10584                }
10585                Self::StaleStakesForbiddenUpdate(inner) => {
10586                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
10587                }
10588                Self::TaskResponded(inner) => {
10589                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
10590                }
10591            }
10592        }
10593        fn into_log_data(self) -> alloy_sol_types::private::LogData {
10594            match self {
10595                Self::AggregatorUpdated(inner) => {
10596                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10597                }
10598                Self::GeneratorUpdated(inner) => {
10599                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10600                }
10601                Self::Initialized(inner) => {
10602                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10603                }
10604                Self::NewTaskCreated(inner) => {
10605                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10606                }
10607                Self::OwnershipTransferred(inner) => {
10608                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10609                }
10610                Self::SquaringTaskCompleted(inner) => {
10611                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10612                }
10613                Self::StaleStakesForbiddenUpdate(inner) => {
10614                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10615                }
10616                Self::TaskResponded(inner) => {
10617                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10618                }
10619            }
10620        }
10621    }
10622    use alloy::contract as alloy_contract;
10623    /**Creates a new wrapper around an on-chain [`SquaringTask`](self) contract instance.
10624
10625See the [wrapper's documentation](`SquaringTaskInstance`) for more details.*/
10626    #[inline]
10627    pub const fn new<
10628        T: alloy_contract::private::Transport + ::core::clone::Clone,
10629        P: alloy_contract::private::Provider<T, N>,
10630        N: alloy_contract::private::Network,
10631    >(
10632        address: alloy_sol_types::private::Address,
10633        provider: P,
10634    ) -> SquaringTaskInstance<T, P, N> {
10635        SquaringTaskInstance::<T, P, N>::new(address, provider)
10636    }
10637    /**Deploys this contract using the given `provider` and constructor arguments, if any.
10638
10639Returns a new instance of the contract, if the deployment was successful.
10640
10641For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
10642    #[inline]
10643    pub fn deploy<
10644        T: alloy_contract::private::Transport + ::core::clone::Clone,
10645        P: alloy_contract::private::Provider<T, N>,
10646        N: alloy_contract::private::Network,
10647    >(
10648        provider: P,
10649        _registryCoordinator: alloy::sol_types::private::Address,
10650        _taskResponseWindowBlock: u32,
10651    ) -> impl ::core::future::Future<
10652        Output = alloy_contract::Result<SquaringTaskInstance<T, P, N>>,
10653    > {
10654        SquaringTaskInstance::<
10655            T,
10656            P,
10657            N,
10658        >::deploy(provider, _registryCoordinator, _taskResponseWindowBlock)
10659    }
10660    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
10661and constructor arguments, if any.
10662
10663This is a simple wrapper around creating a `RawCallBuilder` with the data set to
10664the bytecode concatenated with the constructor's ABI-encoded arguments.*/
10665    #[inline]
10666    pub fn deploy_builder<
10667        T: alloy_contract::private::Transport + ::core::clone::Clone,
10668        P: alloy_contract::private::Provider<T, N>,
10669        N: alloy_contract::private::Network,
10670    >(
10671        provider: P,
10672        _registryCoordinator: alloy::sol_types::private::Address,
10673        _taskResponseWindowBlock: u32,
10674    ) -> alloy_contract::RawCallBuilder<T, P, N> {
10675        SquaringTaskInstance::<
10676            T,
10677            P,
10678            N,
10679        >::deploy_builder(provider, _registryCoordinator, _taskResponseWindowBlock)
10680    }
10681    /**A [`SquaringTask`](self) instance.
10682
10683Contains type-safe methods for interacting with an on-chain instance of the
10684[`SquaringTask`](self) contract located at a given `address`, using a given
10685provider `P`.
10686
10687If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
10688documentation on how to provide it), the `deploy` and `deploy_builder` methods can
10689be used to deploy a new instance of the contract.
10690
10691See the [module-level documentation](self) for all the available methods.*/
10692    #[derive(Clone)]
10693    pub struct SquaringTaskInstance<T, P, N = alloy_contract::private::Ethereum> {
10694        address: alloy_sol_types::private::Address,
10695        provider: P,
10696        _network_transport: ::core::marker::PhantomData<(N, T)>,
10697    }
10698    #[automatically_derived]
10699    impl<T, P, N> ::core::fmt::Debug for SquaringTaskInstance<T, P, N> {
10700        #[inline]
10701        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
10702            f.debug_tuple("SquaringTaskInstance").field(&self.address).finish()
10703        }
10704    }
10705    /// Instantiation and getters/setters.
10706    #[automatically_derived]
10707    impl<
10708        T: alloy_contract::private::Transport + ::core::clone::Clone,
10709        P: alloy_contract::private::Provider<T, N>,
10710        N: alloy_contract::private::Network,
10711    > SquaringTaskInstance<T, P, N> {
10712        /**Creates a new wrapper around an on-chain [`SquaringTask`](self) contract instance.
10713
10714See the [wrapper's documentation](`SquaringTaskInstance`) for more details.*/
10715        #[inline]
10716        pub const fn new(
10717            address: alloy_sol_types::private::Address,
10718            provider: P,
10719        ) -> Self {
10720            Self {
10721                address,
10722                provider,
10723                _network_transport: ::core::marker::PhantomData,
10724            }
10725        }
10726        /**Deploys this contract using the given `provider` and constructor arguments, if any.
10727
10728Returns a new instance of the contract, if the deployment was successful.
10729
10730For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
10731        #[inline]
10732        pub async fn deploy(
10733            provider: P,
10734            _registryCoordinator: alloy::sol_types::private::Address,
10735            _taskResponseWindowBlock: u32,
10736        ) -> alloy_contract::Result<SquaringTaskInstance<T, P, N>> {
10737            let call_builder = Self::deploy_builder(
10738                provider,
10739                _registryCoordinator,
10740                _taskResponseWindowBlock,
10741            );
10742            let contract_address = call_builder.deploy().await?;
10743            Ok(Self::new(contract_address, call_builder.provider))
10744        }
10745        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
10746and constructor arguments, if any.
10747
10748This is a simple wrapper around creating a `RawCallBuilder` with the data set to
10749the bytecode concatenated with the constructor's ABI-encoded arguments.*/
10750        #[inline]
10751        pub fn deploy_builder(
10752            provider: P,
10753            _registryCoordinator: alloy::sol_types::private::Address,
10754            _taskResponseWindowBlock: u32,
10755        ) -> alloy_contract::RawCallBuilder<T, P, N> {
10756            alloy_contract::RawCallBuilder::new_raw_deploy(
10757                provider,
10758                [
10759                    &BYTECODE[..],
10760                    &alloy_sol_types::SolConstructor::abi_encode(
10761                        &constructorCall {
10762                            _registryCoordinator,
10763                            _taskResponseWindowBlock,
10764                        },
10765                    )[..],
10766                ]
10767                    .concat()
10768                    .into(),
10769            )
10770        }
10771        /// Returns a reference to the address.
10772        #[inline]
10773        pub const fn address(&self) -> &alloy_sol_types::private::Address {
10774            &self.address
10775        }
10776        /// Sets the address.
10777        #[inline]
10778        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
10779            self.address = address;
10780        }
10781        /// Sets the address and returns `self`.
10782        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
10783            self.set_address(address);
10784            self
10785        }
10786        /// Returns a reference to the provider.
10787        #[inline]
10788        pub const fn provider(&self) -> &P {
10789            &self.provider
10790        }
10791    }
10792    impl<T, P: ::core::clone::Clone, N> SquaringTaskInstance<T, &P, N> {
10793        /// Clones the provider and returns a new instance with the cloned provider.
10794        #[inline]
10795        pub fn with_cloned_provider(self) -> SquaringTaskInstance<T, P, N> {
10796            SquaringTaskInstance {
10797                address: self.address,
10798                provider: ::core::clone::Clone::clone(&self.provider),
10799                _network_transport: ::core::marker::PhantomData,
10800            }
10801        }
10802    }
10803    /// Function calls.
10804    #[automatically_derived]
10805    impl<
10806        T: alloy_contract::private::Transport + ::core::clone::Clone,
10807        P: alloy_contract::private::Provider<T, N>,
10808        N: alloy_contract::private::Network,
10809    > SquaringTaskInstance<T, P, N> {
10810        /// Creates a new call builder using this contract instance's provider and address.
10811        ///
10812        /// Note that the call can be any function call, not just those defined in this
10813        /// contract. Prefer using the other methods for building type-safe contract calls.
10814        pub fn call_builder<C: alloy_sol_types::SolCall>(
10815            &self,
10816            call: &C,
10817        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
10818            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
10819        }
10820        ///Creates a new call builder for the [`TASK_RESPONSE_WINDOW_BLOCK`] function.
10821        pub fn TASK_RESPONSE_WINDOW_BLOCK(
10822            &self,
10823        ) -> alloy_contract::SolCallBuilder<T, &P, TASK_RESPONSE_WINDOW_BLOCKCall, N> {
10824            self.call_builder(&TASK_RESPONSE_WINDOW_BLOCKCall {})
10825        }
10826        ///Creates a new call builder for the [`__TaskManager_init`] function.
10827        pub fn __TaskManager_init(
10828            &self,
10829            _aggregator: alloy::sol_types::private::Address,
10830            _generator: alloy::sol_types::private::Address,
10831            initialOwner: alloy::sol_types::private::Address,
10832        ) -> alloy_contract::SolCallBuilder<T, &P, __TaskManager_initCall, N> {
10833            self.call_builder(
10834                &__TaskManager_initCall {
10835                    _aggregator,
10836                    _generator,
10837                    initialOwner,
10838                },
10839            )
10840        }
10841        ///Creates a new call builder for the [`aggregator`] function.
10842        pub fn aggregator(
10843            &self,
10844        ) -> alloy_contract::SolCallBuilder<T, &P, aggregatorCall, N> {
10845            self.call_builder(&aggregatorCall {})
10846        }
10847        ///Creates a new call builder for the [`allTaskHashes`] function.
10848        pub fn allTaskHashes(
10849            &self,
10850            _0: u32,
10851        ) -> alloy_contract::SolCallBuilder<T, &P, allTaskHashesCall, N> {
10852            self.call_builder(&allTaskHashesCall { _0 })
10853        }
10854        ///Creates a new call builder for the [`allTaskResponses`] function.
10855        pub fn allTaskResponses(
10856            &self,
10857            _0: u32,
10858        ) -> alloy_contract::SolCallBuilder<T, &P, allTaskResponsesCall, N> {
10859            self.call_builder(&allTaskResponsesCall { _0 })
10860        }
10861        ///Creates a new call builder for the [`blsApkRegistry`] function.
10862        pub fn blsApkRegistry(
10863            &self,
10864        ) -> alloy_contract::SolCallBuilder<T, &P, blsApkRegistryCall, N> {
10865            self.call_builder(&blsApkRegistryCall {})
10866        }
10867        ///Creates a new call builder for the [`checkSignatures`] function.
10868        pub fn checkSignatures(
10869            &self,
10870            msgHash: alloy::sol_types::private::FixedBytes<32>,
10871            quorumNumbers: alloy::sol_types::private::Bytes,
10872            referenceBlockNumber: u32,
10873            params: <IBLSSignatureCheckerTypes::NonSignerStakesAndSignature as alloy::sol_types::SolType>::RustType,
10874        ) -> alloy_contract::SolCallBuilder<T, &P, checkSignaturesCall, N> {
10875            self.call_builder(
10876                &checkSignaturesCall {
10877                    msgHash,
10878                    quorumNumbers,
10879                    referenceBlockNumber,
10880                    params,
10881                },
10882            )
10883        }
10884        ///Creates a new call builder for the [`createSquaringTask`] function.
10885        pub fn createSquaringTask(
10886            &self,
10887            number: alloy::sol_types::private::primitives::aliases::U256,
10888            quorumThresholdPercentage: u32,
10889            quorumNumbers: alloy::sol_types::private::Bytes,
10890        ) -> alloy_contract::SolCallBuilder<T, &P, createSquaringTaskCall, N> {
10891            self.call_builder(
10892                &createSquaringTaskCall {
10893                    number,
10894                    quorumThresholdPercentage,
10895                    quorumNumbers,
10896                },
10897            )
10898        }
10899        ///Creates a new call builder for the [`delegation`] function.
10900        pub fn delegation(
10901            &self,
10902        ) -> alloy_contract::SolCallBuilder<T, &P, delegationCall, N> {
10903            self.call_builder(&delegationCall {})
10904        }
10905        ///Creates a new call builder for the [`generator`] function.
10906        pub fn generator(
10907            &self,
10908        ) -> alloy_contract::SolCallBuilder<T, &P, generatorCall, N> {
10909            self.call_builder(&generatorCall {})
10910        }
10911        ///Creates a new call builder for the [`initialize`] function.
10912        pub fn initialize(
10913            &self,
10914            _aggregator: alloy::sol_types::private::Address,
10915            _generator: alloy::sol_types::private::Address,
10916            initialOwner: alloy::sol_types::private::Address,
10917        ) -> alloy_contract::SolCallBuilder<T, &P, initializeCall, N> {
10918            self.call_builder(
10919                &initializeCall {
10920                    _aggregator,
10921                    _generator,
10922                    initialOwner,
10923                },
10924            )
10925        }
10926        ///Creates a new call builder for the [`latestTaskNum`] function.
10927        pub fn latestTaskNum(
10928            &self,
10929        ) -> alloy_contract::SolCallBuilder<T, &P, latestTaskNumCall, N> {
10930            self.call_builder(&latestTaskNumCall {})
10931        }
10932        ///Creates a new call builder for the [`owner`] function.
10933        pub fn owner(&self) -> alloy_contract::SolCallBuilder<T, &P, ownerCall, N> {
10934            self.call_builder(&ownerCall {})
10935        }
10936        ///Creates a new call builder for the [`registryCoordinator`] function.
10937        pub fn registryCoordinator(
10938            &self,
10939        ) -> alloy_contract::SolCallBuilder<T, &P, registryCoordinatorCall, N> {
10940            self.call_builder(&registryCoordinatorCall {})
10941        }
10942        ///Creates a new call builder for the [`renounceOwnership`] function.
10943        pub fn renounceOwnership(
10944            &self,
10945        ) -> alloy_contract::SolCallBuilder<T, &P, renounceOwnershipCall, N> {
10946            self.call_builder(&renounceOwnershipCall {})
10947        }
10948        ///Creates a new call builder for the [`respondToSquaringTask`] function.
10949        pub fn respondToSquaringTask(
10950            &self,
10951            task: <TaskManager::Task as alloy::sol_types::SolType>::RustType,
10952            taskResponse: <TaskManager::TaskResponse as alloy::sol_types::SolType>::RustType,
10953            nonSignerStakesAndSignature: <IBLSSignatureCheckerTypes::NonSignerStakesAndSignature as alloy::sol_types::SolType>::RustType,
10954        ) -> alloy_contract::SolCallBuilder<T, &P, respondToSquaringTaskCall, N> {
10955            self.call_builder(
10956                &respondToSquaringTaskCall {
10957                    task,
10958                    taskResponse,
10959                    nonSignerStakesAndSignature,
10960                },
10961            )
10962        }
10963        ///Creates a new call builder for the [`setAggregator`] function.
10964        pub fn setAggregator(
10965            &self,
10966            newAggregator: alloy::sol_types::private::Address,
10967        ) -> alloy_contract::SolCallBuilder<T, &P, setAggregatorCall, N> {
10968            self.call_builder(&setAggregatorCall { newAggregator })
10969        }
10970        ///Creates a new call builder for the [`setGenerator`] function.
10971        pub fn setGenerator(
10972            &self,
10973            newGenerator: alloy::sol_types::private::Address,
10974        ) -> alloy_contract::SolCallBuilder<T, &P, setGeneratorCall, N> {
10975            self.call_builder(&setGeneratorCall { newGenerator })
10976        }
10977        ///Creates a new call builder for the [`setStaleStakesForbidden`] function.
10978        pub fn setStaleStakesForbidden(
10979            &self,
10980            value: bool,
10981        ) -> alloy_contract::SolCallBuilder<T, &P, setStaleStakesForbiddenCall, N> {
10982            self.call_builder(
10983                &setStaleStakesForbiddenCall {
10984                    value,
10985                },
10986            )
10987        }
10988        ///Creates a new call builder for the [`stakeRegistry`] function.
10989        pub fn stakeRegistry(
10990            &self,
10991        ) -> alloy_contract::SolCallBuilder<T, &P, stakeRegistryCall, N> {
10992            self.call_builder(&stakeRegistryCall {})
10993        }
10994        ///Creates a new call builder for the [`staleStakesForbidden`] function.
10995        pub fn staleStakesForbidden(
10996            &self,
10997        ) -> alloy_contract::SolCallBuilder<T, &P, staleStakesForbiddenCall, N> {
10998            self.call_builder(&staleStakesForbiddenCall {})
10999        }
11000        ///Creates a new call builder for the [`transferOwnership`] function.
11001        pub fn transferOwnership(
11002            &self,
11003            newOwner: alloy::sol_types::private::Address,
11004        ) -> alloy_contract::SolCallBuilder<T, &P, transferOwnershipCall, N> {
11005            self.call_builder(&transferOwnershipCall { newOwner })
11006        }
11007        ///Creates a new call builder for the [`trySignatureAndApkVerification`] function.
11008        pub fn trySignatureAndApkVerification(
11009            &self,
11010            msgHash: alloy::sol_types::private::FixedBytes<32>,
11011            apk: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
11012            apkG2: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
11013            sigma: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
11014        ) -> alloy_contract::SolCallBuilder<
11015            T,
11016            &P,
11017            trySignatureAndApkVerificationCall,
11018            N,
11019        > {
11020            self.call_builder(
11021                &trySignatureAndApkVerificationCall {
11022                    msgHash,
11023                    apk,
11024                    apkG2,
11025                    sigma,
11026                },
11027            )
11028        }
11029    }
11030    /// Event filters.
11031    #[automatically_derived]
11032    impl<
11033        T: alloy_contract::private::Transport + ::core::clone::Clone,
11034        P: alloy_contract::private::Provider<T, N>,
11035        N: alloy_contract::private::Network,
11036    > SquaringTaskInstance<T, P, N> {
11037        /// Creates a new event filter using this contract instance's provider and address.
11038        ///
11039        /// Note that the type can be any event, not just those defined in this contract.
11040        /// Prefer using the other methods for building type-safe event filters.
11041        pub fn event_filter<E: alloy_sol_types::SolEvent>(
11042            &self,
11043        ) -> alloy_contract::Event<T, &P, E, N> {
11044            alloy_contract::Event::new_sol(&self.provider, &self.address)
11045        }
11046        ///Creates a new event filter for the [`AggregatorUpdated`] event.
11047        pub fn AggregatorUpdated_filter(
11048            &self,
11049        ) -> alloy_contract::Event<T, &P, AggregatorUpdated, N> {
11050            self.event_filter::<AggregatorUpdated>()
11051        }
11052        ///Creates a new event filter for the [`GeneratorUpdated`] event.
11053        pub fn GeneratorUpdated_filter(
11054            &self,
11055        ) -> alloy_contract::Event<T, &P, GeneratorUpdated, N> {
11056            self.event_filter::<GeneratorUpdated>()
11057        }
11058        ///Creates a new event filter for the [`Initialized`] event.
11059        pub fn Initialized_filter(
11060            &self,
11061        ) -> alloy_contract::Event<T, &P, Initialized, N> {
11062            self.event_filter::<Initialized>()
11063        }
11064        ///Creates a new event filter for the [`NewTaskCreated`] event.
11065        pub fn NewTaskCreated_filter(
11066            &self,
11067        ) -> alloy_contract::Event<T, &P, NewTaskCreated, N> {
11068            self.event_filter::<NewTaskCreated>()
11069        }
11070        ///Creates a new event filter for the [`OwnershipTransferred`] event.
11071        pub fn OwnershipTransferred_filter(
11072            &self,
11073        ) -> alloy_contract::Event<T, &P, OwnershipTransferred, N> {
11074            self.event_filter::<OwnershipTransferred>()
11075        }
11076        ///Creates a new event filter for the [`SquaringTaskCompleted`] event.
11077        pub fn SquaringTaskCompleted_filter(
11078            &self,
11079        ) -> alloy_contract::Event<T, &P, SquaringTaskCompleted, N> {
11080            self.event_filter::<SquaringTaskCompleted>()
11081        }
11082        ///Creates a new event filter for the [`StaleStakesForbiddenUpdate`] event.
11083        pub fn StaleStakesForbiddenUpdate_filter(
11084            &self,
11085        ) -> alloy_contract::Event<T, &P, StaleStakesForbiddenUpdate, N> {
11086            self.event_filter::<StaleStakesForbiddenUpdate>()
11087        }
11088        ///Creates a new event filter for the [`TaskResponded`] event.
11089        pub fn TaskResponded_filter(
11090            &self,
11091        ) -> alloy_contract::Event<T, &P, TaskResponded, N> {
11092            self.event_filter::<TaskResponded>()
11093        }
11094    }
11095}