eigenlayer_contract_deployer/bindings/core/
eigen_pod.rs

1#![allow(clippy::all, clippy::pedantic, clippy::nursery, warnings, unknown_lints, rustdoc::all, elided_lifetimes_in_paths)]
2use EigenPod::*;
3
4///Module containing a contract's types and functions.
5/**
6
7```solidity
8library BeaconChainProofs {
9    struct BalanceContainerProof { bytes32 balanceContainerRoot; bytes proof; }
10    struct BalanceProof { bytes32 pubkeyHash; bytes32 balanceRoot; bytes proof; }
11    struct StateRootProof { bytes32 beaconStateRoot; bytes proof; }
12    struct ValidatorProof { bytes32[] validatorFields; bytes proof; }
13}
14```*/
15#[allow(
16    non_camel_case_types,
17    non_snake_case,
18    clippy::pub_underscore_fields,
19    clippy::style,
20    clippy::empty_structs_with_brackets
21)]
22pub mod BeaconChainProofs {
23    use super::*;
24    use alloy::sol_types as alloy_sol_types;
25    #[derive(serde::Serialize, serde::Deserialize)]
26    #[derive(Default, Debug, PartialEq, Eq, Hash)]
27    /**```solidity
28struct BalanceContainerProof { bytes32 balanceContainerRoot; bytes proof; }
29```*/
30    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
31    #[derive(Clone)]
32    pub struct BalanceContainerProof {
33        #[allow(missing_docs)]
34        pub balanceContainerRoot: alloy::sol_types::private::FixedBytes<32>,
35        #[allow(missing_docs)]
36        pub proof: alloy::sol_types::private::Bytes,
37    }
38    #[allow(
39        non_camel_case_types,
40        non_snake_case,
41        clippy::pub_underscore_fields,
42        clippy::style
43    )]
44    const _: () = {
45        use alloy::sol_types as alloy_sol_types;
46        #[doc(hidden)]
47        type UnderlyingSolTuple<'a> = (
48            alloy::sol_types::sol_data::FixedBytes<32>,
49            alloy::sol_types::sol_data::Bytes,
50        );
51        #[doc(hidden)]
52        type UnderlyingRustTuple<'a> = (
53            alloy::sol_types::private::FixedBytes<32>,
54            alloy::sol_types::private::Bytes,
55        );
56        #[cfg(test)]
57        #[allow(dead_code, unreachable_patterns)]
58        fn _type_assertion(
59            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
60        ) {
61            match _t {
62                alloy_sol_types::private::AssertTypeEq::<
63                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
64                >(_) => {}
65            }
66        }
67        #[automatically_derived]
68        #[doc(hidden)]
69        impl ::core::convert::From<BalanceContainerProof> for UnderlyingRustTuple<'_> {
70            fn from(value: BalanceContainerProof) -> Self {
71                (value.balanceContainerRoot, value.proof)
72            }
73        }
74        #[automatically_derived]
75        #[doc(hidden)]
76        impl ::core::convert::From<UnderlyingRustTuple<'_>> for BalanceContainerProof {
77            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
78                Self {
79                    balanceContainerRoot: tuple.0,
80                    proof: tuple.1,
81                }
82            }
83        }
84        #[automatically_derived]
85        impl alloy_sol_types::SolValue for BalanceContainerProof {
86            type SolType = Self;
87        }
88        #[automatically_derived]
89        impl alloy_sol_types::private::SolTypeValue<Self> for BalanceContainerProof {
90            #[inline]
91            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
92                (
93                    <alloy::sol_types::sol_data::FixedBytes<
94                        32,
95                    > as alloy_sol_types::SolType>::tokenize(&self.balanceContainerRoot),
96                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
97                        &self.proof,
98                    ),
99                )
100            }
101            #[inline]
102            fn stv_abi_encoded_size(&self) -> usize {
103                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
104                    return size;
105                }
106                let tuple = <UnderlyingRustTuple<
107                    '_,
108                > as ::core::convert::From<Self>>::from(self.clone());
109                <UnderlyingSolTuple<
110                    '_,
111                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
112            }
113            #[inline]
114            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
115                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
116            }
117            #[inline]
118            fn stv_abi_encode_packed_to(
119                &self,
120                out: &mut alloy_sol_types::private::Vec<u8>,
121            ) {
122                let tuple = <UnderlyingRustTuple<
123                    '_,
124                > as ::core::convert::From<Self>>::from(self.clone());
125                <UnderlyingSolTuple<
126                    '_,
127                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
128            }
129            #[inline]
130            fn stv_abi_packed_encoded_size(&self) -> usize {
131                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
132                    return size;
133                }
134                let tuple = <UnderlyingRustTuple<
135                    '_,
136                > as ::core::convert::From<Self>>::from(self.clone());
137                <UnderlyingSolTuple<
138                    '_,
139                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
140            }
141        }
142        #[automatically_derived]
143        impl alloy_sol_types::SolType for BalanceContainerProof {
144            type RustType = Self;
145            type Token<'a> = <UnderlyingSolTuple<
146                'a,
147            > as alloy_sol_types::SolType>::Token<'a>;
148            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
149            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
150                '_,
151            > as alloy_sol_types::SolType>::ENCODED_SIZE;
152            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
153                '_,
154            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
155            #[inline]
156            fn valid_token(token: &Self::Token<'_>) -> bool {
157                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
158            }
159            #[inline]
160            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
161                let tuple = <UnderlyingSolTuple<
162                    '_,
163                > as alloy_sol_types::SolType>::detokenize(token);
164                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
165            }
166        }
167        #[automatically_derived]
168        impl alloy_sol_types::SolStruct for BalanceContainerProof {
169            const NAME: &'static str = "BalanceContainerProof";
170            #[inline]
171            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
172                alloy_sol_types::private::Cow::Borrowed(
173                    "BalanceContainerProof(bytes32 balanceContainerRoot,bytes proof)",
174                )
175            }
176            #[inline]
177            fn eip712_components() -> alloy_sol_types::private::Vec<
178                alloy_sol_types::private::Cow<'static, str>,
179            > {
180                alloy_sol_types::private::Vec::new()
181            }
182            #[inline]
183            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
184                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
185            }
186            #[inline]
187            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
188                [
189                    <alloy::sol_types::sol_data::FixedBytes<
190                        32,
191                    > as alloy_sol_types::SolType>::eip712_data_word(
192                            &self.balanceContainerRoot,
193                        )
194                        .0,
195                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::eip712_data_word(
196                            &self.proof,
197                        )
198                        .0,
199                ]
200                    .concat()
201            }
202        }
203        #[automatically_derived]
204        impl alloy_sol_types::EventTopic for BalanceContainerProof {
205            #[inline]
206            fn topic_preimage_length(rust: &Self::RustType) -> usize {
207                0usize
208                    + <alloy::sol_types::sol_data::FixedBytes<
209                        32,
210                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
211                        &rust.balanceContainerRoot,
212                    )
213                    + <alloy::sol_types::sol_data::Bytes as alloy_sol_types::EventTopic>::topic_preimage_length(
214                        &rust.proof,
215                    )
216            }
217            #[inline]
218            fn encode_topic_preimage(
219                rust: &Self::RustType,
220                out: &mut alloy_sol_types::private::Vec<u8>,
221            ) {
222                out.reserve(
223                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
224                );
225                <alloy::sol_types::sol_data::FixedBytes<
226                    32,
227                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
228                    &rust.balanceContainerRoot,
229                    out,
230                );
231                <alloy::sol_types::sol_data::Bytes as alloy_sol_types::EventTopic>::encode_topic_preimage(
232                    &rust.proof,
233                    out,
234                );
235            }
236            #[inline]
237            fn encode_topic(
238                rust: &Self::RustType,
239            ) -> alloy_sol_types::abi::token::WordToken {
240                let mut out = alloy_sol_types::private::Vec::new();
241                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
242                    rust,
243                    &mut out,
244                );
245                alloy_sol_types::abi::token::WordToken(
246                    alloy_sol_types::private::keccak256(out),
247                )
248            }
249        }
250    };
251    #[derive(serde::Serialize, serde::Deserialize)]
252    #[derive(Default, Debug, PartialEq, Eq, Hash)]
253    /**```solidity
254struct BalanceProof { bytes32 pubkeyHash; bytes32 balanceRoot; bytes proof; }
255```*/
256    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
257    #[derive(Clone)]
258    pub struct BalanceProof {
259        #[allow(missing_docs)]
260        pub pubkeyHash: alloy::sol_types::private::FixedBytes<32>,
261        #[allow(missing_docs)]
262        pub balanceRoot: alloy::sol_types::private::FixedBytes<32>,
263        #[allow(missing_docs)]
264        pub proof: alloy::sol_types::private::Bytes,
265    }
266    #[allow(
267        non_camel_case_types,
268        non_snake_case,
269        clippy::pub_underscore_fields,
270        clippy::style
271    )]
272    const _: () = {
273        use alloy::sol_types as alloy_sol_types;
274        #[doc(hidden)]
275        type UnderlyingSolTuple<'a> = (
276            alloy::sol_types::sol_data::FixedBytes<32>,
277            alloy::sol_types::sol_data::FixedBytes<32>,
278            alloy::sol_types::sol_data::Bytes,
279        );
280        #[doc(hidden)]
281        type UnderlyingRustTuple<'a> = (
282            alloy::sol_types::private::FixedBytes<32>,
283            alloy::sol_types::private::FixedBytes<32>,
284            alloy::sol_types::private::Bytes,
285        );
286        #[cfg(test)]
287        #[allow(dead_code, unreachable_patterns)]
288        fn _type_assertion(
289            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
290        ) {
291            match _t {
292                alloy_sol_types::private::AssertTypeEq::<
293                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
294                >(_) => {}
295            }
296        }
297        #[automatically_derived]
298        #[doc(hidden)]
299        impl ::core::convert::From<BalanceProof> for UnderlyingRustTuple<'_> {
300            fn from(value: BalanceProof) -> Self {
301                (value.pubkeyHash, value.balanceRoot, value.proof)
302            }
303        }
304        #[automatically_derived]
305        #[doc(hidden)]
306        impl ::core::convert::From<UnderlyingRustTuple<'_>> for BalanceProof {
307            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
308                Self {
309                    pubkeyHash: tuple.0,
310                    balanceRoot: tuple.1,
311                    proof: tuple.2,
312                }
313            }
314        }
315        #[automatically_derived]
316        impl alloy_sol_types::SolValue for BalanceProof {
317            type SolType = Self;
318        }
319        #[automatically_derived]
320        impl alloy_sol_types::private::SolTypeValue<Self> for BalanceProof {
321            #[inline]
322            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
323                (
324                    <alloy::sol_types::sol_data::FixedBytes<
325                        32,
326                    > as alloy_sol_types::SolType>::tokenize(&self.pubkeyHash),
327                    <alloy::sol_types::sol_data::FixedBytes<
328                        32,
329                    > as alloy_sol_types::SolType>::tokenize(&self.balanceRoot),
330                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
331                        &self.proof,
332                    ),
333                )
334            }
335            #[inline]
336            fn stv_abi_encoded_size(&self) -> usize {
337                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
338                    return size;
339                }
340                let tuple = <UnderlyingRustTuple<
341                    '_,
342                > as ::core::convert::From<Self>>::from(self.clone());
343                <UnderlyingSolTuple<
344                    '_,
345                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
346            }
347            #[inline]
348            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
349                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
350            }
351            #[inline]
352            fn stv_abi_encode_packed_to(
353                &self,
354                out: &mut alloy_sol_types::private::Vec<u8>,
355            ) {
356                let tuple = <UnderlyingRustTuple<
357                    '_,
358                > as ::core::convert::From<Self>>::from(self.clone());
359                <UnderlyingSolTuple<
360                    '_,
361                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
362            }
363            #[inline]
364            fn stv_abi_packed_encoded_size(&self) -> usize {
365                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
366                    return size;
367                }
368                let tuple = <UnderlyingRustTuple<
369                    '_,
370                > as ::core::convert::From<Self>>::from(self.clone());
371                <UnderlyingSolTuple<
372                    '_,
373                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
374            }
375        }
376        #[automatically_derived]
377        impl alloy_sol_types::SolType for BalanceProof {
378            type RustType = Self;
379            type Token<'a> = <UnderlyingSolTuple<
380                'a,
381            > as alloy_sol_types::SolType>::Token<'a>;
382            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
383            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
384                '_,
385            > as alloy_sol_types::SolType>::ENCODED_SIZE;
386            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
387                '_,
388            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
389            #[inline]
390            fn valid_token(token: &Self::Token<'_>) -> bool {
391                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
392            }
393            #[inline]
394            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
395                let tuple = <UnderlyingSolTuple<
396                    '_,
397                > as alloy_sol_types::SolType>::detokenize(token);
398                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
399            }
400        }
401        #[automatically_derived]
402        impl alloy_sol_types::SolStruct for BalanceProof {
403            const NAME: &'static str = "BalanceProof";
404            #[inline]
405            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
406                alloy_sol_types::private::Cow::Borrowed(
407                    "BalanceProof(bytes32 pubkeyHash,bytes32 balanceRoot,bytes proof)",
408                )
409            }
410            #[inline]
411            fn eip712_components() -> alloy_sol_types::private::Vec<
412                alloy_sol_types::private::Cow<'static, str>,
413            > {
414                alloy_sol_types::private::Vec::new()
415            }
416            #[inline]
417            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
418                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
419            }
420            #[inline]
421            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
422                [
423                    <alloy::sol_types::sol_data::FixedBytes<
424                        32,
425                    > as alloy_sol_types::SolType>::eip712_data_word(&self.pubkeyHash)
426                        .0,
427                    <alloy::sol_types::sol_data::FixedBytes<
428                        32,
429                    > as alloy_sol_types::SolType>::eip712_data_word(&self.balanceRoot)
430                        .0,
431                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::eip712_data_word(
432                            &self.proof,
433                        )
434                        .0,
435                ]
436                    .concat()
437            }
438        }
439        #[automatically_derived]
440        impl alloy_sol_types::EventTopic for BalanceProof {
441            #[inline]
442            fn topic_preimage_length(rust: &Self::RustType) -> usize {
443                0usize
444                    + <alloy::sol_types::sol_data::FixedBytes<
445                        32,
446                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
447                        &rust.pubkeyHash,
448                    )
449                    + <alloy::sol_types::sol_data::FixedBytes<
450                        32,
451                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
452                        &rust.balanceRoot,
453                    )
454                    + <alloy::sol_types::sol_data::Bytes as alloy_sol_types::EventTopic>::topic_preimage_length(
455                        &rust.proof,
456                    )
457            }
458            #[inline]
459            fn encode_topic_preimage(
460                rust: &Self::RustType,
461                out: &mut alloy_sol_types::private::Vec<u8>,
462            ) {
463                out.reserve(
464                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
465                );
466                <alloy::sol_types::sol_data::FixedBytes<
467                    32,
468                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
469                    &rust.pubkeyHash,
470                    out,
471                );
472                <alloy::sol_types::sol_data::FixedBytes<
473                    32,
474                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
475                    &rust.balanceRoot,
476                    out,
477                );
478                <alloy::sol_types::sol_data::Bytes as alloy_sol_types::EventTopic>::encode_topic_preimage(
479                    &rust.proof,
480                    out,
481                );
482            }
483            #[inline]
484            fn encode_topic(
485                rust: &Self::RustType,
486            ) -> alloy_sol_types::abi::token::WordToken {
487                let mut out = alloy_sol_types::private::Vec::new();
488                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
489                    rust,
490                    &mut out,
491                );
492                alloy_sol_types::abi::token::WordToken(
493                    alloy_sol_types::private::keccak256(out),
494                )
495            }
496        }
497    };
498    #[derive(serde::Serialize, serde::Deserialize)]
499    #[derive(Default, Debug, PartialEq, Eq, Hash)]
500    /**```solidity
501struct StateRootProof { bytes32 beaconStateRoot; bytes proof; }
502```*/
503    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
504    #[derive(Clone)]
505    pub struct StateRootProof {
506        #[allow(missing_docs)]
507        pub beaconStateRoot: alloy::sol_types::private::FixedBytes<32>,
508        #[allow(missing_docs)]
509        pub proof: alloy::sol_types::private::Bytes,
510    }
511    #[allow(
512        non_camel_case_types,
513        non_snake_case,
514        clippy::pub_underscore_fields,
515        clippy::style
516    )]
517    const _: () = {
518        use alloy::sol_types as alloy_sol_types;
519        #[doc(hidden)]
520        type UnderlyingSolTuple<'a> = (
521            alloy::sol_types::sol_data::FixedBytes<32>,
522            alloy::sol_types::sol_data::Bytes,
523        );
524        #[doc(hidden)]
525        type UnderlyingRustTuple<'a> = (
526            alloy::sol_types::private::FixedBytes<32>,
527            alloy::sol_types::private::Bytes,
528        );
529        #[cfg(test)]
530        #[allow(dead_code, unreachable_patterns)]
531        fn _type_assertion(
532            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
533        ) {
534            match _t {
535                alloy_sol_types::private::AssertTypeEq::<
536                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
537                >(_) => {}
538            }
539        }
540        #[automatically_derived]
541        #[doc(hidden)]
542        impl ::core::convert::From<StateRootProof> for UnderlyingRustTuple<'_> {
543            fn from(value: StateRootProof) -> Self {
544                (value.beaconStateRoot, value.proof)
545            }
546        }
547        #[automatically_derived]
548        #[doc(hidden)]
549        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StateRootProof {
550            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
551                Self {
552                    beaconStateRoot: tuple.0,
553                    proof: tuple.1,
554                }
555            }
556        }
557        #[automatically_derived]
558        impl alloy_sol_types::SolValue for StateRootProof {
559            type SolType = Self;
560        }
561        #[automatically_derived]
562        impl alloy_sol_types::private::SolTypeValue<Self> for StateRootProof {
563            #[inline]
564            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
565                (
566                    <alloy::sol_types::sol_data::FixedBytes<
567                        32,
568                    > as alloy_sol_types::SolType>::tokenize(&self.beaconStateRoot),
569                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
570                        &self.proof,
571                    ),
572                )
573            }
574            #[inline]
575            fn stv_abi_encoded_size(&self) -> usize {
576                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
577                    return size;
578                }
579                let tuple = <UnderlyingRustTuple<
580                    '_,
581                > as ::core::convert::From<Self>>::from(self.clone());
582                <UnderlyingSolTuple<
583                    '_,
584                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
585            }
586            #[inline]
587            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
588                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
589            }
590            #[inline]
591            fn stv_abi_encode_packed_to(
592                &self,
593                out: &mut alloy_sol_types::private::Vec<u8>,
594            ) {
595                let tuple = <UnderlyingRustTuple<
596                    '_,
597                > as ::core::convert::From<Self>>::from(self.clone());
598                <UnderlyingSolTuple<
599                    '_,
600                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
601            }
602            #[inline]
603            fn stv_abi_packed_encoded_size(&self) -> usize {
604                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
605                    return size;
606                }
607                let tuple = <UnderlyingRustTuple<
608                    '_,
609                > as ::core::convert::From<Self>>::from(self.clone());
610                <UnderlyingSolTuple<
611                    '_,
612                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
613            }
614        }
615        #[automatically_derived]
616        impl alloy_sol_types::SolType for StateRootProof {
617            type RustType = Self;
618            type Token<'a> = <UnderlyingSolTuple<
619                'a,
620            > as alloy_sol_types::SolType>::Token<'a>;
621            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
622            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
623                '_,
624            > as alloy_sol_types::SolType>::ENCODED_SIZE;
625            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
626                '_,
627            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
628            #[inline]
629            fn valid_token(token: &Self::Token<'_>) -> bool {
630                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
631            }
632            #[inline]
633            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
634                let tuple = <UnderlyingSolTuple<
635                    '_,
636                > as alloy_sol_types::SolType>::detokenize(token);
637                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
638            }
639        }
640        #[automatically_derived]
641        impl alloy_sol_types::SolStruct for StateRootProof {
642            const NAME: &'static str = "StateRootProof";
643            #[inline]
644            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
645                alloy_sol_types::private::Cow::Borrowed(
646                    "StateRootProof(bytes32 beaconStateRoot,bytes proof)",
647                )
648            }
649            #[inline]
650            fn eip712_components() -> alloy_sol_types::private::Vec<
651                alloy_sol_types::private::Cow<'static, str>,
652            > {
653                alloy_sol_types::private::Vec::new()
654            }
655            #[inline]
656            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
657                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
658            }
659            #[inline]
660            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
661                [
662                    <alloy::sol_types::sol_data::FixedBytes<
663                        32,
664                    > as alloy_sol_types::SolType>::eip712_data_word(
665                            &self.beaconStateRoot,
666                        )
667                        .0,
668                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::eip712_data_word(
669                            &self.proof,
670                        )
671                        .0,
672                ]
673                    .concat()
674            }
675        }
676        #[automatically_derived]
677        impl alloy_sol_types::EventTopic for StateRootProof {
678            #[inline]
679            fn topic_preimage_length(rust: &Self::RustType) -> usize {
680                0usize
681                    + <alloy::sol_types::sol_data::FixedBytes<
682                        32,
683                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
684                        &rust.beaconStateRoot,
685                    )
686                    + <alloy::sol_types::sol_data::Bytes as alloy_sol_types::EventTopic>::topic_preimage_length(
687                        &rust.proof,
688                    )
689            }
690            #[inline]
691            fn encode_topic_preimage(
692                rust: &Self::RustType,
693                out: &mut alloy_sol_types::private::Vec<u8>,
694            ) {
695                out.reserve(
696                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
697                );
698                <alloy::sol_types::sol_data::FixedBytes<
699                    32,
700                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
701                    &rust.beaconStateRoot,
702                    out,
703                );
704                <alloy::sol_types::sol_data::Bytes as alloy_sol_types::EventTopic>::encode_topic_preimage(
705                    &rust.proof,
706                    out,
707                );
708            }
709            #[inline]
710            fn encode_topic(
711                rust: &Self::RustType,
712            ) -> alloy_sol_types::abi::token::WordToken {
713                let mut out = alloy_sol_types::private::Vec::new();
714                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
715                    rust,
716                    &mut out,
717                );
718                alloy_sol_types::abi::token::WordToken(
719                    alloy_sol_types::private::keccak256(out),
720                )
721            }
722        }
723    };
724    #[derive(serde::Serialize, serde::Deserialize)]
725    #[derive(Default, Debug, PartialEq, Eq, Hash)]
726    /**```solidity
727struct ValidatorProof { bytes32[] validatorFields; bytes proof; }
728```*/
729    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
730    #[derive(Clone)]
731    pub struct ValidatorProof {
732        #[allow(missing_docs)]
733        pub validatorFields: alloy::sol_types::private::Vec<
734            alloy::sol_types::private::FixedBytes<32>,
735        >,
736        #[allow(missing_docs)]
737        pub proof: alloy::sol_types::private::Bytes,
738    }
739    #[allow(
740        non_camel_case_types,
741        non_snake_case,
742        clippy::pub_underscore_fields,
743        clippy::style
744    )]
745    const _: () = {
746        use alloy::sol_types as alloy_sol_types;
747        #[doc(hidden)]
748        type UnderlyingSolTuple<'a> = (
749            alloy::sol_types::sol_data::Array<
750                alloy::sol_types::sol_data::FixedBytes<32>,
751            >,
752            alloy::sol_types::sol_data::Bytes,
753        );
754        #[doc(hidden)]
755        type UnderlyingRustTuple<'a> = (
756            alloy::sol_types::private::Vec<alloy::sol_types::private::FixedBytes<32>>,
757            alloy::sol_types::private::Bytes,
758        );
759        #[cfg(test)]
760        #[allow(dead_code, unreachable_patterns)]
761        fn _type_assertion(
762            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
763        ) {
764            match _t {
765                alloy_sol_types::private::AssertTypeEq::<
766                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
767                >(_) => {}
768            }
769        }
770        #[automatically_derived]
771        #[doc(hidden)]
772        impl ::core::convert::From<ValidatorProof> for UnderlyingRustTuple<'_> {
773            fn from(value: ValidatorProof) -> Self {
774                (value.validatorFields, value.proof)
775            }
776        }
777        #[automatically_derived]
778        #[doc(hidden)]
779        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ValidatorProof {
780            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
781                Self {
782                    validatorFields: tuple.0,
783                    proof: tuple.1,
784                }
785            }
786        }
787        #[automatically_derived]
788        impl alloy_sol_types::SolValue for ValidatorProof {
789            type SolType = Self;
790        }
791        #[automatically_derived]
792        impl alloy_sol_types::private::SolTypeValue<Self> for ValidatorProof {
793            #[inline]
794            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
795                (
796                    <alloy::sol_types::sol_data::Array<
797                        alloy::sol_types::sol_data::FixedBytes<32>,
798                    > as alloy_sol_types::SolType>::tokenize(&self.validatorFields),
799                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
800                        &self.proof,
801                    ),
802                )
803            }
804            #[inline]
805            fn stv_abi_encoded_size(&self) -> usize {
806                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
807                    return size;
808                }
809                let tuple = <UnderlyingRustTuple<
810                    '_,
811                > as ::core::convert::From<Self>>::from(self.clone());
812                <UnderlyingSolTuple<
813                    '_,
814                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
815            }
816            #[inline]
817            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
818                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
819            }
820            #[inline]
821            fn stv_abi_encode_packed_to(
822                &self,
823                out: &mut alloy_sol_types::private::Vec<u8>,
824            ) {
825                let tuple = <UnderlyingRustTuple<
826                    '_,
827                > as ::core::convert::From<Self>>::from(self.clone());
828                <UnderlyingSolTuple<
829                    '_,
830                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
831            }
832            #[inline]
833            fn stv_abi_packed_encoded_size(&self) -> usize {
834                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
835                    return size;
836                }
837                let tuple = <UnderlyingRustTuple<
838                    '_,
839                > as ::core::convert::From<Self>>::from(self.clone());
840                <UnderlyingSolTuple<
841                    '_,
842                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
843            }
844        }
845        #[automatically_derived]
846        impl alloy_sol_types::SolType for ValidatorProof {
847            type RustType = Self;
848            type Token<'a> = <UnderlyingSolTuple<
849                'a,
850            > as alloy_sol_types::SolType>::Token<'a>;
851            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
852            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
853                '_,
854            > as alloy_sol_types::SolType>::ENCODED_SIZE;
855            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
856                '_,
857            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
858            #[inline]
859            fn valid_token(token: &Self::Token<'_>) -> bool {
860                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
861            }
862            #[inline]
863            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
864                let tuple = <UnderlyingSolTuple<
865                    '_,
866                > as alloy_sol_types::SolType>::detokenize(token);
867                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
868            }
869        }
870        #[automatically_derived]
871        impl alloy_sol_types::SolStruct for ValidatorProof {
872            const NAME: &'static str = "ValidatorProof";
873            #[inline]
874            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
875                alloy_sol_types::private::Cow::Borrowed(
876                    "ValidatorProof(bytes32[] validatorFields,bytes proof)",
877                )
878            }
879            #[inline]
880            fn eip712_components() -> alloy_sol_types::private::Vec<
881                alloy_sol_types::private::Cow<'static, str>,
882            > {
883                alloy_sol_types::private::Vec::new()
884            }
885            #[inline]
886            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
887                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
888            }
889            #[inline]
890            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
891                [
892                    <alloy::sol_types::sol_data::Array<
893                        alloy::sol_types::sol_data::FixedBytes<32>,
894                    > as alloy_sol_types::SolType>::eip712_data_word(
895                            &self.validatorFields,
896                        )
897                        .0,
898                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::eip712_data_word(
899                            &self.proof,
900                        )
901                        .0,
902                ]
903                    .concat()
904            }
905        }
906        #[automatically_derived]
907        impl alloy_sol_types::EventTopic for ValidatorProof {
908            #[inline]
909            fn topic_preimage_length(rust: &Self::RustType) -> usize {
910                0usize
911                    + <alloy::sol_types::sol_data::Array<
912                        alloy::sol_types::sol_data::FixedBytes<32>,
913                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
914                        &rust.validatorFields,
915                    )
916                    + <alloy::sol_types::sol_data::Bytes as alloy_sol_types::EventTopic>::topic_preimage_length(
917                        &rust.proof,
918                    )
919            }
920            #[inline]
921            fn encode_topic_preimage(
922                rust: &Self::RustType,
923                out: &mut alloy_sol_types::private::Vec<u8>,
924            ) {
925                out.reserve(
926                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
927                );
928                <alloy::sol_types::sol_data::Array<
929                    alloy::sol_types::sol_data::FixedBytes<32>,
930                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
931                    &rust.validatorFields,
932                    out,
933                );
934                <alloy::sol_types::sol_data::Bytes as alloy_sol_types::EventTopic>::encode_topic_preimage(
935                    &rust.proof,
936                    out,
937                );
938            }
939            #[inline]
940            fn encode_topic(
941                rust: &Self::RustType,
942            ) -> alloy_sol_types::abi::token::WordToken {
943                let mut out = alloy_sol_types::private::Vec::new();
944                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
945                    rust,
946                    &mut out,
947                );
948                alloy_sol_types::abi::token::WordToken(
949                    alloy_sol_types::private::keccak256(out),
950                )
951            }
952        }
953    };
954    use alloy::contract as alloy_contract;
955    /**Creates a new wrapper around an on-chain [`BeaconChainProofs`](self) contract instance.
956
957See the [wrapper's documentation](`BeaconChainProofsInstance`) for more details.*/
958    #[inline]
959    pub const fn new<
960        P: alloy_contract::private::Provider<N>,
961        N: alloy_contract::private::Network,
962    >(
963        address: alloy_sol_types::private::Address,
964        provider: P,
965    ) -> BeaconChainProofsInstance<P, N> {
966        BeaconChainProofsInstance::<P, N>::new(address, provider)
967    }
968    /**A [`BeaconChainProofs`](self) instance.
969
970Contains type-safe methods for interacting with an on-chain instance of the
971[`BeaconChainProofs`](self) contract located at a given `address`, using a given
972provider `P`.
973
974If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
975documentation on how to provide it), the `deploy` and `deploy_builder` methods can
976be used to deploy a new instance of the contract.
977
978See the [module-level documentation](self) for all the available methods.*/
979    #[derive(Clone)]
980    pub struct BeaconChainProofsInstance<P, N = alloy_contract::private::Ethereum> {
981        address: alloy_sol_types::private::Address,
982        provider: P,
983        _network: ::core::marker::PhantomData<N>,
984    }
985    #[automatically_derived]
986    impl<P, N> ::core::fmt::Debug for BeaconChainProofsInstance<P, N> {
987        #[inline]
988        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
989            f.debug_tuple("BeaconChainProofsInstance").field(&self.address).finish()
990        }
991    }
992    /// Instantiation and getters/setters.
993    #[automatically_derived]
994    impl<
995        P: alloy_contract::private::Provider<N>,
996        N: alloy_contract::private::Network,
997    > BeaconChainProofsInstance<P, N> {
998        /**Creates a new wrapper around an on-chain [`BeaconChainProofs`](self) contract instance.
999
1000See the [wrapper's documentation](`BeaconChainProofsInstance`) for more details.*/
1001        #[inline]
1002        pub const fn new(
1003            address: alloy_sol_types::private::Address,
1004            provider: P,
1005        ) -> Self {
1006            Self {
1007                address,
1008                provider,
1009                _network: ::core::marker::PhantomData,
1010            }
1011        }
1012        /// Returns a reference to the address.
1013        #[inline]
1014        pub const fn address(&self) -> &alloy_sol_types::private::Address {
1015            &self.address
1016        }
1017        /// Sets the address.
1018        #[inline]
1019        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
1020            self.address = address;
1021        }
1022        /// Sets the address and returns `self`.
1023        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
1024            self.set_address(address);
1025            self
1026        }
1027        /// Returns a reference to the provider.
1028        #[inline]
1029        pub const fn provider(&self) -> &P {
1030            &self.provider
1031        }
1032    }
1033    impl<P: ::core::clone::Clone, N> BeaconChainProofsInstance<&P, N> {
1034        /// Clones the provider and returns a new instance with the cloned provider.
1035        #[inline]
1036        pub fn with_cloned_provider(self) -> BeaconChainProofsInstance<P, N> {
1037            BeaconChainProofsInstance {
1038                address: self.address,
1039                provider: ::core::clone::Clone::clone(&self.provider),
1040                _network: ::core::marker::PhantomData,
1041            }
1042        }
1043    }
1044    /// Function calls.
1045    #[automatically_derived]
1046    impl<
1047        P: alloy_contract::private::Provider<N>,
1048        N: alloy_contract::private::Network,
1049    > BeaconChainProofsInstance<P, N> {
1050        /// Creates a new call builder using this contract instance's provider and address.
1051        ///
1052        /// Note that the call can be any function call, not just those defined in this
1053        /// contract. Prefer using the other methods for building type-safe contract calls.
1054        pub fn call_builder<C: alloy_sol_types::SolCall>(
1055            &self,
1056            call: &C,
1057        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
1058            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
1059        }
1060    }
1061    /// Event filters.
1062    #[automatically_derived]
1063    impl<
1064        P: alloy_contract::private::Provider<N>,
1065        N: alloy_contract::private::Network,
1066    > BeaconChainProofsInstance<P, N> {
1067        /// Creates a new event filter using this contract instance's provider and address.
1068        ///
1069        /// Note that the type can be any event, not just those defined in this contract.
1070        /// Prefer using the other methods for building type-safe event filters.
1071        pub fn event_filter<E: alloy_sol_types::SolEvent>(
1072            &self,
1073        ) -> alloy_contract::Event<&P, E, N> {
1074            alloy_contract::Event::new_sol(&self.provider, &self.address)
1075        }
1076    }
1077}
1078///Module containing a contract's types and functions.
1079/**
1080
1081```solidity
1082library IEigenPodTypes {
1083    type VALIDATOR_STATUS is uint8;
1084    struct Checkpoint { bytes32 beaconBlockRoot; uint24 proofsRemaining; uint64 podBalanceGwei; int64 balanceDeltasGwei; uint64 prevBeaconBalanceGwei; }
1085    struct ValidatorInfo { uint64 validatorIndex; uint64 restakedBalanceGwei; uint64 lastCheckpointedAt; VALIDATOR_STATUS status; }
1086}
1087```*/
1088#[allow(
1089    non_camel_case_types,
1090    non_snake_case,
1091    clippy::pub_underscore_fields,
1092    clippy::style,
1093    clippy::empty_structs_with_brackets
1094)]
1095pub mod IEigenPodTypes {
1096    use super::*;
1097    use alloy::sol_types as alloy_sol_types;
1098    #[derive(serde::Serialize, serde::Deserialize)]
1099    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1100    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1101    #[derive(Clone)]
1102    pub struct VALIDATOR_STATUS(u8);
1103    const _: () = {
1104        use alloy::sol_types as alloy_sol_types;
1105        #[automatically_derived]
1106        impl alloy_sol_types::private::SolTypeValue<VALIDATOR_STATUS> for u8 {
1107            #[inline]
1108            fn stv_to_tokens(
1109                &self,
1110            ) -> <alloy::sol_types::sol_data::Uint<
1111                8,
1112            > as alloy_sol_types::SolType>::Token<'_> {
1113                alloy_sol_types::private::SolTypeValue::<
1114                    alloy::sol_types::sol_data::Uint<8>,
1115                >::stv_to_tokens(self)
1116            }
1117            #[inline]
1118            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1119                <alloy::sol_types::sol_data::Uint<
1120                    8,
1121                > as alloy_sol_types::SolType>::tokenize(self)
1122                    .0
1123            }
1124            #[inline]
1125            fn stv_abi_encode_packed_to(
1126                &self,
1127                out: &mut alloy_sol_types::private::Vec<u8>,
1128            ) {
1129                <alloy::sol_types::sol_data::Uint<
1130                    8,
1131                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
1132            }
1133            #[inline]
1134            fn stv_abi_packed_encoded_size(&self) -> usize {
1135                <alloy::sol_types::sol_data::Uint<
1136                    8,
1137                > as alloy_sol_types::SolType>::abi_encoded_size(self)
1138            }
1139        }
1140        #[automatically_derived]
1141        impl VALIDATOR_STATUS {
1142            /// The Solidity type name.
1143            pub const NAME: &'static str = stringify!(@ name);
1144            /// Convert from the underlying value type.
1145            #[inline]
1146            pub const fn from_underlying(value: u8) -> Self {
1147                Self(value)
1148            }
1149            /// Return the underlying value.
1150            #[inline]
1151            pub const fn into_underlying(self) -> u8 {
1152                self.0
1153            }
1154            /// Return the single encoding of this value, delegating to the
1155            /// underlying type.
1156            #[inline]
1157            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
1158                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
1159            }
1160            /// Return the packed encoding of this value, delegating to the
1161            /// underlying type.
1162            #[inline]
1163            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
1164                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
1165            }
1166        }
1167        #[automatically_derived]
1168        impl From<u8> for VALIDATOR_STATUS {
1169            fn from(value: u8) -> Self {
1170                Self::from_underlying(value)
1171            }
1172        }
1173        #[automatically_derived]
1174        impl From<VALIDATOR_STATUS> for u8 {
1175            fn from(value: VALIDATOR_STATUS) -> Self {
1176                value.into_underlying()
1177            }
1178        }
1179        #[automatically_derived]
1180        impl alloy_sol_types::SolType for VALIDATOR_STATUS {
1181            type RustType = u8;
1182            type Token<'a> = <alloy::sol_types::sol_data::Uint<
1183                8,
1184            > as alloy_sol_types::SolType>::Token<'a>;
1185            const SOL_NAME: &'static str = Self::NAME;
1186            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
1187                8,
1188            > as alloy_sol_types::SolType>::ENCODED_SIZE;
1189            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
1190                8,
1191            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1192            #[inline]
1193            fn valid_token(token: &Self::Token<'_>) -> bool {
1194                Self::type_check(token).is_ok()
1195            }
1196            #[inline]
1197            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
1198                <alloy::sol_types::sol_data::Uint<
1199                    8,
1200                > as alloy_sol_types::SolType>::type_check(token)
1201            }
1202            #[inline]
1203            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1204                <alloy::sol_types::sol_data::Uint<
1205                    8,
1206                > as alloy_sol_types::SolType>::detokenize(token)
1207            }
1208        }
1209        #[automatically_derived]
1210        impl alloy_sol_types::EventTopic for VALIDATOR_STATUS {
1211            #[inline]
1212            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1213                <alloy::sol_types::sol_data::Uint<
1214                    8,
1215                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
1216            }
1217            #[inline]
1218            fn encode_topic_preimage(
1219                rust: &Self::RustType,
1220                out: &mut alloy_sol_types::private::Vec<u8>,
1221            ) {
1222                <alloy::sol_types::sol_data::Uint<
1223                    8,
1224                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
1225            }
1226            #[inline]
1227            fn encode_topic(
1228                rust: &Self::RustType,
1229            ) -> alloy_sol_types::abi::token::WordToken {
1230                <alloy::sol_types::sol_data::Uint<
1231                    8,
1232                > as alloy_sol_types::EventTopic>::encode_topic(rust)
1233            }
1234        }
1235    };
1236    #[derive(serde::Serialize, serde::Deserialize)]
1237    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1238    /**```solidity
1239struct Checkpoint { bytes32 beaconBlockRoot; uint24 proofsRemaining; uint64 podBalanceGwei; int64 balanceDeltasGwei; uint64 prevBeaconBalanceGwei; }
1240```*/
1241    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1242    #[derive(Clone)]
1243    pub struct Checkpoint {
1244        #[allow(missing_docs)]
1245        pub beaconBlockRoot: alloy::sol_types::private::FixedBytes<32>,
1246        #[allow(missing_docs)]
1247        pub proofsRemaining: alloy::sol_types::private::primitives::aliases::U24,
1248        #[allow(missing_docs)]
1249        pub podBalanceGwei: u64,
1250        #[allow(missing_docs)]
1251        pub balanceDeltasGwei: i64,
1252        #[allow(missing_docs)]
1253        pub prevBeaconBalanceGwei: u64,
1254    }
1255    #[allow(
1256        non_camel_case_types,
1257        non_snake_case,
1258        clippy::pub_underscore_fields,
1259        clippy::style
1260    )]
1261    const _: () = {
1262        use alloy::sol_types as alloy_sol_types;
1263        #[doc(hidden)]
1264        type UnderlyingSolTuple<'a> = (
1265            alloy::sol_types::sol_data::FixedBytes<32>,
1266            alloy::sol_types::sol_data::Uint<24>,
1267            alloy::sol_types::sol_data::Uint<64>,
1268            alloy::sol_types::sol_data::Int<64>,
1269            alloy::sol_types::sol_data::Uint<64>,
1270        );
1271        #[doc(hidden)]
1272        type UnderlyingRustTuple<'a> = (
1273            alloy::sol_types::private::FixedBytes<32>,
1274            alloy::sol_types::private::primitives::aliases::U24,
1275            u64,
1276            i64,
1277            u64,
1278        );
1279        #[cfg(test)]
1280        #[allow(dead_code, unreachable_patterns)]
1281        fn _type_assertion(
1282            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1283        ) {
1284            match _t {
1285                alloy_sol_types::private::AssertTypeEq::<
1286                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1287                >(_) => {}
1288            }
1289        }
1290        #[automatically_derived]
1291        #[doc(hidden)]
1292        impl ::core::convert::From<Checkpoint> for UnderlyingRustTuple<'_> {
1293            fn from(value: Checkpoint) -> Self {
1294                (
1295                    value.beaconBlockRoot,
1296                    value.proofsRemaining,
1297                    value.podBalanceGwei,
1298                    value.balanceDeltasGwei,
1299                    value.prevBeaconBalanceGwei,
1300                )
1301            }
1302        }
1303        #[automatically_derived]
1304        #[doc(hidden)]
1305        impl ::core::convert::From<UnderlyingRustTuple<'_>> for Checkpoint {
1306            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1307                Self {
1308                    beaconBlockRoot: tuple.0,
1309                    proofsRemaining: tuple.1,
1310                    podBalanceGwei: tuple.2,
1311                    balanceDeltasGwei: tuple.3,
1312                    prevBeaconBalanceGwei: tuple.4,
1313                }
1314            }
1315        }
1316        #[automatically_derived]
1317        impl alloy_sol_types::SolValue for Checkpoint {
1318            type SolType = Self;
1319        }
1320        #[automatically_derived]
1321        impl alloy_sol_types::private::SolTypeValue<Self> for Checkpoint {
1322            #[inline]
1323            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
1324                (
1325                    <alloy::sol_types::sol_data::FixedBytes<
1326                        32,
1327                    > as alloy_sol_types::SolType>::tokenize(&self.beaconBlockRoot),
1328                    <alloy::sol_types::sol_data::Uint<
1329                        24,
1330                    > as alloy_sol_types::SolType>::tokenize(&self.proofsRemaining),
1331                    <alloy::sol_types::sol_data::Uint<
1332                        64,
1333                    > as alloy_sol_types::SolType>::tokenize(&self.podBalanceGwei),
1334                    <alloy::sol_types::sol_data::Int<
1335                        64,
1336                    > as alloy_sol_types::SolType>::tokenize(&self.balanceDeltasGwei),
1337                    <alloy::sol_types::sol_data::Uint<
1338                        64,
1339                    > as alloy_sol_types::SolType>::tokenize(&self.prevBeaconBalanceGwei),
1340                )
1341            }
1342            #[inline]
1343            fn stv_abi_encoded_size(&self) -> usize {
1344                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
1345                    return size;
1346                }
1347                let tuple = <UnderlyingRustTuple<
1348                    '_,
1349                > as ::core::convert::From<Self>>::from(self.clone());
1350                <UnderlyingSolTuple<
1351                    '_,
1352                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
1353            }
1354            #[inline]
1355            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1356                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
1357            }
1358            #[inline]
1359            fn stv_abi_encode_packed_to(
1360                &self,
1361                out: &mut alloy_sol_types::private::Vec<u8>,
1362            ) {
1363                let tuple = <UnderlyingRustTuple<
1364                    '_,
1365                > as ::core::convert::From<Self>>::from(self.clone());
1366                <UnderlyingSolTuple<
1367                    '_,
1368                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
1369            }
1370            #[inline]
1371            fn stv_abi_packed_encoded_size(&self) -> usize {
1372                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
1373                    return size;
1374                }
1375                let tuple = <UnderlyingRustTuple<
1376                    '_,
1377                > as ::core::convert::From<Self>>::from(self.clone());
1378                <UnderlyingSolTuple<
1379                    '_,
1380                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
1381            }
1382        }
1383        #[automatically_derived]
1384        impl alloy_sol_types::SolType for Checkpoint {
1385            type RustType = Self;
1386            type Token<'a> = <UnderlyingSolTuple<
1387                'a,
1388            > as alloy_sol_types::SolType>::Token<'a>;
1389            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
1390            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1391                '_,
1392            > as alloy_sol_types::SolType>::ENCODED_SIZE;
1393            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1394                '_,
1395            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1396            #[inline]
1397            fn valid_token(token: &Self::Token<'_>) -> bool {
1398                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
1399            }
1400            #[inline]
1401            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1402                let tuple = <UnderlyingSolTuple<
1403                    '_,
1404                > as alloy_sol_types::SolType>::detokenize(token);
1405                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
1406            }
1407        }
1408        #[automatically_derived]
1409        impl alloy_sol_types::SolStruct for Checkpoint {
1410            const NAME: &'static str = "Checkpoint";
1411            #[inline]
1412            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
1413                alloy_sol_types::private::Cow::Borrowed(
1414                    "Checkpoint(bytes32 beaconBlockRoot,uint24 proofsRemaining,uint64 podBalanceGwei,int64 balanceDeltasGwei,uint64 prevBeaconBalanceGwei)",
1415                )
1416            }
1417            #[inline]
1418            fn eip712_components() -> alloy_sol_types::private::Vec<
1419                alloy_sol_types::private::Cow<'static, str>,
1420            > {
1421                alloy_sol_types::private::Vec::new()
1422            }
1423            #[inline]
1424            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
1425                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
1426            }
1427            #[inline]
1428            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1429                [
1430                    <alloy::sol_types::sol_data::FixedBytes<
1431                        32,
1432                    > as alloy_sol_types::SolType>::eip712_data_word(
1433                            &self.beaconBlockRoot,
1434                        )
1435                        .0,
1436                    <alloy::sol_types::sol_data::Uint<
1437                        24,
1438                    > as alloy_sol_types::SolType>::eip712_data_word(
1439                            &self.proofsRemaining,
1440                        )
1441                        .0,
1442                    <alloy::sol_types::sol_data::Uint<
1443                        64,
1444                    > as alloy_sol_types::SolType>::eip712_data_word(
1445                            &self.podBalanceGwei,
1446                        )
1447                        .0,
1448                    <alloy::sol_types::sol_data::Int<
1449                        64,
1450                    > as alloy_sol_types::SolType>::eip712_data_word(
1451                            &self.balanceDeltasGwei,
1452                        )
1453                        .0,
1454                    <alloy::sol_types::sol_data::Uint<
1455                        64,
1456                    > as alloy_sol_types::SolType>::eip712_data_word(
1457                            &self.prevBeaconBalanceGwei,
1458                        )
1459                        .0,
1460                ]
1461                    .concat()
1462            }
1463        }
1464        #[automatically_derived]
1465        impl alloy_sol_types::EventTopic for Checkpoint {
1466            #[inline]
1467            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1468                0usize
1469                    + <alloy::sol_types::sol_data::FixedBytes<
1470                        32,
1471                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1472                        &rust.beaconBlockRoot,
1473                    )
1474                    + <alloy::sol_types::sol_data::Uint<
1475                        24,
1476                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1477                        &rust.proofsRemaining,
1478                    )
1479                    + <alloy::sol_types::sol_data::Uint<
1480                        64,
1481                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1482                        &rust.podBalanceGwei,
1483                    )
1484                    + <alloy::sol_types::sol_data::Int<
1485                        64,
1486                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1487                        &rust.balanceDeltasGwei,
1488                    )
1489                    + <alloy::sol_types::sol_data::Uint<
1490                        64,
1491                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1492                        &rust.prevBeaconBalanceGwei,
1493                    )
1494            }
1495            #[inline]
1496            fn encode_topic_preimage(
1497                rust: &Self::RustType,
1498                out: &mut alloy_sol_types::private::Vec<u8>,
1499            ) {
1500                out.reserve(
1501                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
1502                );
1503                <alloy::sol_types::sol_data::FixedBytes<
1504                    32,
1505                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1506                    &rust.beaconBlockRoot,
1507                    out,
1508                );
1509                <alloy::sol_types::sol_data::Uint<
1510                    24,
1511                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1512                    &rust.proofsRemaining,
1513                    out,
1514                );
1515                <alloy::sol_types::sol_data::Uint<
1516                    64,
1517                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1518                    &rust.podBalanceGwei,
1519                    out,
1520                );
1521                <alloy::sol_types::sol_data::Int<
1522                    64,
1523                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1524                    &rust.balanceDeltasGwei,
1525                    out,
1526                );
1527                <alloy::sol_types::sol_data::Uint<
1528                    64,
1529                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1530                    &rust.prevBeaconBalanceGwei,
1531                    out,
1532                );
1533            }
1534            #[inline]
1535            fn encode_topic(
1536                rust: &Self::RustType,
1537            ) -> alloy_sol_types::abi::token::WordToken {
1538                let mut out = alloy_sol_types::private::Vec::new();
1539                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
1540                    rust,
1541                    &mut out,
1542                );
1543                alloy_sol_types::abi::token::WordToken(
1544                    alloy_sol_types::private::keccak256(out),
1545                )
1546            }
1547        }
1548    };
1549    #[derive(serde::Serialize, serde::Deserialize)]
1550    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1551    /**```solidity
1552struct ValidatorInfo { uint64 validatorIndex; uint64 restakedBalanceGwei; uint64 lastCheckpointedAt; VALIDATOR_STATUS status; }
1553```*/
1554    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1555    #[derive(Clone)]
1556    pub struct ValidatorInfo {
1557        #[allow(missing_docs)]
1558        pub validatorIndex: u64,
1559        #[allow(missing_docs)]
1560        pub restakedBalanceGwei: u64,
1561        #[allow(missing_docs)]
1562        pub lastCheckpointedAt: u64,
1563        #[allow(missing_docs)]
1564        pub status: <VALIDATOR_STATUS as alloy::sol_types::SolType>::RustType,
1565    }
1566    #[allow(
1567        non_camel_case_types,
1568        non_snake_case,
1569        clippy::pub_underscore_fields,
1570        clippy::style
1571    )]
1572    const _: () = {
1573        use alloy::sol_types as alloy_sol_types;
1574        #[doc(hidden)]
1575        type UnderlyingSolTuple<'a> = (
1576            alloy::sol_types::sol_data::Uint<64>,
1577            alloy::sol_types::sol_data::Uint<64>,
1578            alloy::sol_types::sol_data::Uint<64>,
1579            VALIDATOR_STATUS,
1580        );
1581        #[doc(hidden)]
1582        type UnderlyingRustTuple<'a> = (
1583            u64,
1584            u64,
1585            u64,
1586            <VALIDATOR_STATUS as alloy::sol_types::SolType>::RustType,
1587        );
1588        #[cfg(test)]
1589        #[allow(dead_code, unreachable_patterns)]
1590        fn _type_assertion(
1591            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1592        ) {
1593            match _t {
1594                alloy_sol_types::private::AssertTypeEq::<
1595                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1596                >(_) => {}
1597            }
1598        }
1599        #[automatically_derived]
1600        #[doc(hidden)]
1601        impl ::core::convert::From<ValidatorInfo> for UnderlyingRustTuple<'_> {
1602            fn from(value: ValidatorInfo) -> Self {
1603                (
1604                    value.validatorIndex,
1605                    value.restakedBalanceGwei,
1606                    value.lastCheckpointedAt,
1607                    value.status,
1608                )
1609            }
1610        }
1611        #[automatically_derived]
1612        #[doc(hidden)]
1613        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ValidatorInfo {
1614            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1615                Self {
1616                    validatorIndex: tuple.0,
1617                    restakedBalanceGwei: tuple.1,
1618                    lastCheckpointedAt: tuple.2,
1619                    status: tuple.3,
1620                }
1621            }
1622        }
1623        #[automatically_derived]
1624        impl alloy_sol_types::SolValue for ValidatorInfo {
1625            type SolType = Self;
1626        }
1627        #[automatically_derived]
1628        impl alloy_sol_types::private::SolTypeValue<Self> for ValidatorInfo {
1629            #[inline]
1630            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
1631                (
1632                    <alloy::sol_types::sol_data::Uint<
1633                        64,
1634                    > as alloy_sol_types::SolType>::tokenize(&self.validatorIndex),
1635                    <alloy::sol_types::sol_data::Uint<
1636                        64,
1637                    > as alloy_sol_types::SolType>::tokenize(&self.restakedBalanceGwei),
1638                    <alloy::sol_types::sol_data::Uint<
1639                        64,
1640                    > as alloy_sol_types::SolType>::tokenize(&self.lastCheckpointedAt),
1641                    <VALIDATOR_STATUS as alloy_sol_types::SolType>::tokenize(
1642                        &self.status,
1643                    ),
1644                )
1645            }
1646            #[inline]
1647            fn stv_abi_encoded_size(&self) -> usize {
1648                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
1649                    return size;
1650                }
1651                let tuple = <UnderlyingRustTuple<
1652                    '_,
1653                > as ::core::convert::From<Self>>::from(self.clone());
1654                <UnderlyingSolTuple<
1655                    '_,
1656                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
1657            }
1658            #[inline]
1659            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1660                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
1661            }
1662            #[inline]
1663            fn stv_abi_encode_packed_to(
1664                &self,
1665                out: &mut alloy_sol_types::private::Vec<u8>,
1666            ) {
1667                let tuple = <UnderlyingRustTuple<
1668                    '_,
1669                > as ::core::convert::From<Self>>::from(self.clone());
1670                <UnderlyingSolTuple<
1671                    '_,
1672                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
1673            }
1674            #[inline]
1675            fn stv_abi_packed_encoded_size(&self) -> usize {
1676                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
1677                    return size;
1678                }
1679                let tuple = <UnderlyingRustTuple<
1680                    '_,
1681                > as ::core::convert::From<Self>>::from(self.clone());
1682                <UnderlyingSolTuple<
1683                    '_,
1684                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
1685            }
1686        }
1687        #[automatically_derived]
1688        impl alloy_sol_types::SolType for ValidatorInfo {
1689            type RustType = Self;
1690            type Token<'a> = <UnderlyingSolTuple<
1691                'a,
1692            > as alloy_sol_types::SolType>::Token<'a>;
1693            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
1694            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1695                '_,
1696            > as alloy_sol_types::SolType>::ENCODED_SIZE;
1697            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1698                '_,
1699            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1700            #[inline]
1701            fn valid_token(token: &Self::Token<'_>) -> bool {
1702                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
1703            }
1704            #[inline]
1705            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1706                let tuple = <UnderlyingSolTuple<
1707                    '_,
1708                > as alloy_sol_types::SolType>::detokenize(token);
1709                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
1710            }
1711        }
1712        #[automatically_derived]
1713        impl alloy_sol_types::SolStruct for ValidatorInfo {
1714            const NAME: &'static str = "ValidatorInfo";
1715            #[inline]
1716            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
1717                alloy_sol_types::private::Cow::Borrowed(
1718                    "ValidatorInfo(uint64 validatorIndex,uint64 restakedBalanceGwei,uint64 lastCheckpointedAt,uint8 status)",
1719                )
1720            }
1721            #[inline]
1722            fn eip712_components() -> alloy_sol_types::private::Vec<
1723                alloy_sol_types::private::Cow<'static, str>,
1724            > {
1725                alloy_sol_types::private::Vec::new()
1726            }
1727            #[inline]
1728            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
1729                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
1730            }
1731            #[inline]
1732            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1733                [
1734                    <alloy::sol_types::sol_data::Uint<
1735                        64,
1736                    > as alloy_sol_types::SolType>::eip712_data_word(
1737                            &self.validatorIndex,
1738                        )
1739                        .0,
1740                    <alloy::sol_types::sol_data::Uint<
1741                        64,
1742                    > as alloy_sol_types::SolType>::eip712_data_word(
1743                            &self.restakedBalanceGwei,
1744                        )
1745                        .0,
1746                    <alloy::sol_types::sol_data::Uint<
1747                        64,
1748                    > as alloy_sol_types::SolType>::eip712_data_word(
1749                            &self.lastCheckpointedAt,
1750                        )
1751                        .0,
1752                    <VALIDATOR_STATUS as alloy_sol_types::SolType>::eip712_data_word(
1753                            &self.status,
1754                        )
1755                        .0,
1756                ]
1757                    .concat()
1758            }
1759        }
1760        #[automatically_derived]
1761        impl alloy_sol_types::EventTopic for ValidatorInfo {
1762            #[inline]
1763            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1764                0usize
1765                    + <alloy::sol_types::sol_data::Uint<
1766                        64,
1767                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1768                        &rust.validatorIndex,
1769                    )
1770                    + <alloy::sol_types::sol_data::Uint<
1771                        64,
1772                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1773                        &rust.restakedBalanceGwei,
1774                    )
1775                    + <alloy::sol_types::sol_data::Uint<
1776                        64,
1777                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1778                        &rust.lastCheckpointedAt,
1779                    )
1780                    + <VALIDATOR_STATUS as alloy_sol_types::EventTopic>::topic_preimage_length(
1781                        &rust.status,
1782                    )
1783            }
1784            #[inline]
1785            fn encode_topic_preimage(
1786                rust: &Self::RustType,
1787                out: &mut alloy_sol_types::private::Vec<u8>,
1788            ) {
1789                out.reserve(
1790                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
1791                );
1792                <alloy::sol_types::sol_data::Uint<
1793                    64,
1794                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1795                    &rust.validatorIndex,
1796                    out,
1797                );
1798                <alloy::sol_types::sol_data::Uint<
1799                    64,
1800                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1801                    &rust.restakedBalanceGwei,
1802                    out,
1803                );
1804                <alloy::sol_types::sol_data::Uint<
1805                    64,
1806                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1807                    &rust.lastCheckpointedAt,
1808                    out,
1809                );
1810                <VALIDATOR_STATUS as alloy_sol_types::EventTopic>::encode_topic_preimage(
1811                    &rust.status,
1812                    out,
1813                );
1814            }
1815            #[inline]
1816            fn encode_topic(
1817                rust: &Self::RustType,
1818            ) -> alloy_sol_types::abi::token::WordToken {
1819                let mut out = alloy_sol_types::private::Vec::new();
1820                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
1821                    rust,
1822                    &mut out,
1823                );
1824                alloy_sol_types::abi::token::WordToken(
1825                    alloy_sol_types::private::keccak256(out),
1826                )
1827            }
1828        }
1829    };
1830    use alloy::contract as alloy_contract;
1831    /**Creates a new wrapper around an on-chain [`IEigenPodTypes`](self) contract instance.
1832
1833See the [wrapper's documentation](`IEigenPodTypesInstance`) for more details.*/
1834    #[inline]
1835    pub const fn new<
1836        P: alloy_contract::private::Provider<N>,
1837        N: alloy_contract::private::Network,
1838    >(
1839        address: alloy_sol_types::private::Address,
1840        provider: P,
1841    ) -> IEigenPodTypesInstance<P, N> {
1842        IEigenPodTypesInstance::<P, N>::new(address, provider)
1843    }
1844    /**A [`IEigenPodTypes`](self) instance.
1845
1846Contains type-safe methods for interacting with an on-chain instance of the
1847[`IEigenPodTypes`](self) contract located at a given `address`, using a given
1848provider `P`.
1849
1850If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
1851documentation on how to provide it), the `deploy` and `deploy_builder` methods can
1852be used to deploy a new instance of the contract.
1853
1854See the [module-level documentation](self) for all the available methods.*/
1855    #[derive(Clone)]
1856    pub struct IEigenPodTypesInstance<P, N = alloy_contract::private::Ethereum> {
1857        address: alloy_sol_types::private::Address,
1858        provider: P,
1859        _network: ::core::marker::PhantomData<N>,
1860    }
1861    #[automatically_derived]
1862    impl<P, N> ::core::fmt::Debug for IEigenPodTypesInstance<P, N> {
1863        #[inline]
1864        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
1865            f.debug_tuple("IEigenPodTypesInstance").field(&self.address).finish()
1866        }
1867    }
1868    /// Instantiation and getters/setters.
1869    #[automatically_derived]
1870    impl<
1871        P: alloy_contract::private::Provider<N>,
1872        N: alloy_contract::private::Network,
1873    > IEigenPodTypesInstance<P, N> {
1874        /**Creates a new wrapper around an on-chain [`IEigenPodTypes`](self) contract instance.
1875
1876See the [wrapper's documentation](`IEigenPodTypesInstance`) for more details.*/
1877        #[inline]
1878        pub const fn new(
1879            address: alloy_sol_types::private::Address,
1880            provider: P,
1881        ) -> Self {
1882            Self {
1883                address,
1884                provider,
1885                _network: ::core::marker::PhantomData,
1886            }
1887        }
1888        /// Returns a reference to the address.
1889        #[inline]
1890        pub const fn address(&self) -> &alloy_sol_types::private::Address {
1891            &self.address
1892        }
1893        /// Sets the address.
1894        #[inline]
1895        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
1896            self.address = address;
1897        }
1898        /// Sets the address and returns `self`.
1899        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
1900            self.set_address(address);
1901            self
1902        }
1903        /// Returns a reference to the provider.
1904        #[inline]
1905        pub const fn provider(&self) -> &P {
1906            &self.provider
1907        }
1908    }
1909    impl<P: ::core::clone::Clone, N> IEigenPodTypesInstance<&P, N> {
1910        /// Clones the provider and returns a new instance with the cloned provider.
1911        #[inline]
1912        pub fn with_cloned_provider(self) -> IEigenPodTypesInstance<P, N> {
1913            IEigenPodTypesInstance {
1914                address: self.address,
1915                provider: ::core::clone::Clone::clone(&self.provider),
1916                _network: ::core::marker::PhantomData,
1917            }
1918        }
1919    }
1920    /// Function calls.
1921    #[automatically_derived]
1922    impl<
1923        P: alloy_contract::private::Provider<N>,
1924        N: alloy_contract::private::Network,
1925    > IEigenPodTypesInstance<P, N> {
1926        /// Creates a new call builder using this contract instance's provider and address.
1927        ///
1928        /// Note that the call can be any function call, not just those defined in this
1929        /// contract. Prefer using the other methods for building type-safe contract calls.
1930        pub fn call_builder<C: alloy_sol_types::SolCall>(
1931            &self,
1932            call: &C,
1933        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
1934            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
1935        }
1936    }
1937    /// Event filters.
1938    #[automatically_derived]
1939    impl<
1940        P: alloy_contract::private::Provider<N>,
1941        N: alloy_contract::private::Network,
1942    > IEigenPodTypesInstance<P, N> {
1943        /// Creates a new event filter using this contract instance's provider and address.
1944        ///
1945        /// Note that the type can be any event, not just those defined in this contract.
1946        /// Prefer using the other methods for building type-safe event filters.
1947        pub fn event_filter<E: alloy_sol_types::SolEvent>(
1948            &self,
1949        ) -> alloy_contract::Event<&P, E, N> {
1950            alloy_contract::Event::new_sol(&self.provider, &self.address)
1951        }
1952    }
1953}
1954/**
1955
1956Generated by the following Solidity interface...
1957```solidity
1958library BeaconChainProofs {
1959    struct BalanceContainerProof {
1960        bytes32 balanceContainerRoot;
1961        bytes proof;
1962    }
1963    struct BalanceProof {
1964        bytes32 pubkeyHash;
1965        bytes32 balanceRoot;
1966        bytes proof;
1967    }
1968    struct StateRootProof {
1969        bytes32 beaconStateRoot;
1970        bytes proof;
1971    }
1972    struct ValidatorProof {
1973        bytes32[] validatorFields;
1974        bytes proof;
1975    }
1976}
1977
1978library IEigenPodTypes {
1979    type VALIDATOR_STATUS is uint8;
1980    struct Checkpoint {
1981        bytes32 beaconBlockRoot;
1982        uint24 proofsRemaining;
1983        uint64 podBalanceGwei;
1984        int64 balanceDeltasGwei;
1985        uint64 prevBeaconBalanceGwei;
1986    }
1987    struct ValidatorInfo {
1988        uint64 validatorIndex;
1989        uint64 restakedBalanceGwei;
1990        uint64 lastCheckpointedAt;
1991        VALIDATOR_STATUS status;
1992    }
1993}
1994
1995interface EigenPod {
1996    error BeaconTimestampTooFarInPast();
1997    error CannotCheckpointTwiceInSingleBlock();
1998    error CheckpointAlreadyActive();
1999    error CredentialsAlreadyVerified();
2000    error CurrentlyPaused();
2001    error InputAddressZero();
2002    error InputArrayLengthMismatch();
2003    error InsufficientWithdrawableBalance();
2004    error InvalidEIP4788Response();
2005    error InvalidProof();
2006    error InvalidProofLength();
2007    error InvalidPubKeyLength();
2008    error InvalidShortString();
2009    error InvalidValidatorFieldsLength();
2010    error MsgValueNot32ETH();
2011    error NoActiveCheckpoint();
2012    error NoBalanceToCheckpoint();
2013    error OnlyEigenPodManager();
2014    error OnlyEigenPodOwner();
2015    error OnlyEigenPodOwnerOrProofSubmitter();
2016    error StringTooLong(string str);
2017    error TimestampOutOfRange();
2018    error ValidatorInactiveOnBeaconChain();
2019    error ValidatorIsExitingBeaconChain();
2020    error ValidatorNotActiveInPod();
2021    error ValidatorNotSlashedOnBeaconChain();
2022    error WithdrawalCredentialsNotForEigenPod();
2023
2024    event CheckpointCreated(uint64 indexed checkpointTimestamp, bytes32 indexed beaconBlockRoot, uint256 validatorCount);
2025    event CheckpointFinalized(uint64 indexed checkpointTimestamp, int256 totalShareDeltaWei);
2026    event EigenPodStaked(bytes pubkey);
2027    event Initialized(uint8 version);
2028    event NonBeaconChainETHReceived(uint256 amountReceived);
2029    event ProofSubmitterUpdated(address prevProofSubmitter, address newProofSubmitter);
2030    event RestakedBeaconChainETHWithdrawn(address indexed recipient, uint256 amount);
2031    event ValidatorBalanceUpdated(uint40 validatorIndex, uint64 balanceTimestamp, uint64 newValidatorBalanceGwei);
2032    event ValidatorCheckpointed(uint64 indexed checkpointTimestamp, uint40 indexed validatorIndex);
2033    event ValidatorRestaked(uint40 validatorIndex);
2034    event ValidatorWithdrawn(uint64 indexed checkpointTimestamp, uint40 indexed validatorIndex);
2035
2036    constructor(address _ethPOS, address _eigenPodManager, uint64 _GENESIS_TIME, string _version);
2037
2038    receive() external payable;
2039
2040    function GENESIS_TIME() external view returns (uint64);
2041    function activeValidatorCount() external view returns (uint256);
2042    function checkpointBalanceExitedGwei(uint64) external view returns (uint64);
2043    function currentCheckpoint() external view returns (IEigenPodTypes.Checkpoint memory);
2044    function currentCheckpointTimestamp() external view returns (uint64);
2045    function eigenPodManager() external view returns (address);
2046    function ethPOS() external view returns (address);
2047    function getParentBlockRoot(uint64 timestamp) external view returns (bytes32);
2048    function initialize(address _podOwner) external;
2049    function lastCheckpointTimestamp() external view returns (uint64);
2050    function podOwner() external view returns (address);
2051    function proofSubmitter() external view returns (address);
2052    function recoverTokens(address[] memory tokenList, uint256[] memory amountsToWithdraw, address recipient) external;
2053    function setProofSubmitter(address newProofSubmitter) external;
2054    function stake(bytes memory pubkey, bytes memory signature, bytes32 depositDataRoot) external payable;
2055    function startCheckpoint(bool revertIfNoBalance) external;
2056    function validatorPubkeyHashToInfo(bytes32 validatorPubkeyHash) external view returns (IEigenPodTypes.ValidatorInfo memory);
2057    function validatorPubkeyToInfo(bytes memory validatorPubkey) external view returns (IEigenPodTypes.ValidatorInfo memory);
2058    function validatorStatus(bytes memory validatorPubkey) external view returns (IEigenPodTypes.VALIDATOR_STATUS);
2059    function validatorStatus(bytes32 pubkeyHash) external view returns (IEigenPodTypes.VALIDATOR_STATUS);
2060    function verifyCheckpointProofs(BeaconChainProofs.BalanceContainerProof memory balanceContainerProof, BeaconChainProofs.BalanceProof[] memory proofs) external;
2061    function verifyStaleBalance(uint64 beaconTimestamp, BeaconChainProofs.StateRootProof memory stateRootProof, BeaconChainProofs.ValidatorProof memory proof) external;
2062    function verifyWithdrawalCredentials(uint64 beaconTimestamp, BeaconChainProofs.StateRootProof memory stateRootProof, uint40[] memory validatorIndices, bytes[] memory validatorFieldsProofs, bytes32[][] memory validatorFields) external;
2063    function version() external view returns (string memory);
2064    function withdrawRestakedBeaconChainETH(address recipient, uint256 amountWei) external;
2065    function withdrawableRestakedExecutionLayerGwei() external view returns (uint64);
2066}
2067```
2068
2069...which was generated by the following JSON ABI:
2070```json
2071[
2072  {
2073    "type": "constructor",
2074    "inputs": [
2075      {
2076        "name": "_ethPOS",
2077        "type": "address",
2078        "internalType": "contract IETHPOSDeposit"
2079      },
2080      {
2081        "name": "_eigenPodManager",
2082        "type": "address",
2083        "internalType": "contract IEigenPodManager"
2084      },
2085      {
2086        "name": "_GENESIS_TIME",
2087        "type": "uint64",
2088        "internalType": "uint64"
2089      },
2090      {
2091        "name": "_version",
2092        "type": "string",
2093        "internalType": "string"
2094      }
2095    ],
2096    "stateMutability": "nonpayable"
2097  },
2098  {
2099    "type": "receive",
2100    "stateMutability": "payable"
2101  },
2102  {
2103    "type": "function",
2104    "name": "GENESIS_TIME",
2105    "inputs": [],
2106    "outputs": [
2107      {
2108        "name": "",
2109        "type": "uint64",
2110        "internalType": "uint64"
2111      }
2112    ],
2113    "stateMutability": "view"
2114  },
2115  {
2116    "type": "function",
2117    "name": "activeValidatorCount",
2118    "inputs": [],
2119    "outputs": [
2120      {
2121        "name": "",
2122        "type": "uint256",
2123        "internalType": "uint256"
2124      }
2125    ],
2126    "stateMutability": "view"
2127  },
2128  {
2129    "type": "function",
2130    "name": "checkpointBalanceExitedGwei",
2131    "inputs": [
2132      {
2133        "name": "",
2134        "type": "uint64",
2135        "internalType": "uint64"
2136      }
2137    ],
2138    "outputs": [
2139      {
2140        "name": "",
2141        "type": "uint64",
2142        "internalType": "uint64"
2143      }
2144    ],
2145    "stateMutability": "view"
2146  },
2147  {
2148    "type": "function",
2149    "name": "currentCheckpoint",
2150    "inputs": [],
2151    "outputs": [
2152      {
2153        "name": "",
2154        "type": "tuple",
2155        "internalType": "struct IEigenPodTypes.Checkpoint",
2156        "components": [
2157          {
2158            "name": "beaconBlockRoot",
2159            "type": "bytes32",
2160            "internalType": "bytes32"
2161          },
2162          {
2163            "name": "proofsRemaining",
2164            "type": "uint24",
2165            "internalType": "uint24"
2166          },
2167          {
2168            "name": "podBalanceGwei",
2169            "type": "uint64",
2170            "internalType": "uint64"
2171          },
2172          {
2173            "name": "balanceDeltasGwei",
2174            "type": "int64",
2175            "internalType": "int64"
2176          },
2177          {
2178            "name": "prevBeaconBalanceGwei",
2179            "type": "uint64",
2180            "internalType": "uint64"
2181          }
2182        ]
2183      }
2184    ],
2185    "stateMutability": "view"
2186  },
2187  {
2188    "type": "function",
2189    "name": "currentCheckpointTimestamp",
2190    "inputs": [],
2191    "outputs": [
2192      {
2193        "name": "",
2194        "type": "uint64",
2195        "internalType": "uint64"
2196      }
2197    ],
2198    "stateMutability": "view"
2199  },
2200  {
2201    "type": "function",
2202    "name": "eigenPodManager",
2203    "inputs": [],
2204    "outputs": [
2205      {
2206        "name": "",
2207        "type": "address",
2208        "internalType": "contract IEigenPodManager"
2209      }
2210    ],
2211    "stateMutability": "view"
2212  },
2213  {
2214    "type": "function",
2215    "name": "ethPOS",
2216    "inputs": [],
2217    "outputs": [
2218      {
2219        "name": "",
2220        "type": "address",
2221        "internalType": "contract IETHPOSDeposit"
2222      }
2223    ],
2224    "stateMutability": "view"
2225  },
2226  {
2227    "type": "function",
2228    "name": "getParentBlockRoot",
2229    "inputs": [
2230      {
2231        "name": "timestamp",
2232        "type": "uint64",
2233        "internalType": "uint64"
2234      }
2235    ],
2236    "outputs": [
2237      {
2238        "name": "",
2239        "type": "bytes32",
2240        "internalType": "bytes32"
2241      }
2242    ],
2243    "stateMutability": "view"
2244  },
2245  {
2246    "type": "function",
2247    "name": "initialize",
2248    "inputs": [
2249      {
2250        "name": "_podOwner",
2251        "type": "address",
2252        "internalType": "address"
2253      }
2254    ],
2255    "outputs": [],
2256    "stateMutability": "nonpayable"
2257  },
2258  {
2259    "type": "function",
2260    "name": "lastCheckpointTimestamp",
2261    "inputs": [],
2262    "outputs": [
2263      {
2264        "name": "",
2265        "type": "uint64",
2266        "internalType": "uint64"
2267      }
2268    ],
2269    "stateMutability": "view"
2270  },
2271  {
2272    "type": "function",
2273    "name": "podOwner",
2274    "inputs": [],
2275    "outputs": [
2276      {
2277        "name": "",
2278        "type": "address",
2279        "internalType": "address"
2280      }
2281    ],
2282    "stateMutability": "view"
2283  },
2284  {
2285    "type": "function",
2286    "name": "proofSubmitter",
2287    "inputs": [],
2288    "outputs": [
2289      {
2290        "name": "",
2291        "type": "address",
2292        "internalType": "address"
2293      }
2294    ],
2295    "stateMutability": "view"
2296  },
2297  {
2298    "type": "function",
2299    "name": "recoverTokens",
2300    "inputs": [
2301      {
2302        "name": "tokenList",
2303        "type": "address[]",
2304        "internalType": "contract IERC20[]"
2305      },
2306      {
2307        "name": "amountsToWithdraw",
2308        "type": "uint256[]",
2309        "internalType": "uint256[]"
2310      },
2311      {
2312        "name": "recipient",
2313        "type": "address",
2314        "internalType": "address"
2315      }
2316    ],
2317    "outputs": [],
2318    "stateMutability": "nonpayable"
2319  },
2320  {
2321    "type": "function",
2322    "name": "setProofSubmitter",
2323    "inputs": [
2324      {
2325        "name": "newProofSubmitter",
2326        "type": "address",
2327        "internalType": "address"
2328      }
2329    ],
2330    "outputs": [],
2331    "stateMutability": "nonpayable"
2332  },
2333  {
2334    "type": "function",
2335    "name": "stake",
2336    "inputs": [
2337      {
2338        "name": "pubkey",
2339        "type": "bytes",
2340        "internalType": "bytes"
2341      },
2342      {
2343        "name": "signature",
2344        "type": "bytes",
2345        "internalType": "bytes"
2346      },
2347      {
2348        "name": "depositDataRoot",
2349        "type": "bytes32",
2350        "internalType": "bytes32"
2351      }
2352    ],
2353    "outputs": [],
2354    "stateMutability": "payable"
2355  },
2356  {
2357    "type": "function",
2358    "name": "startCheckpoint",
2359    "inputs": [
2360      {
2361        "name": "revertIfNoBalance",
2362        "type": "bool",
2363        "internalType": "bool"
2364      }
2365    ],
2366    "outputs": [],
2367    "stateMutability": "nonpayable"
2368  },
2369  {
2370    "type": "function",
2371    "name": "validatorPubkeyHashToInfo",
2372    "inputs": [
2373      {
2374        "name": "validatorPubkeyHash",
2375        "type": "bytes32",
2376        "internalType": "bytes32"
2377      }
2378    ],
2379    "outputs": [
2380      {
2381        "name": "",
2382        "type": "tuple",
2383        "internalType": "struct IEigenPodTypes.ValidatorInfo",
2384        "components": [
2385          {
2386            "name": "validatorIndex",
2387            "type": "uint64",
2388            "internalType": "uint64"
2389          },
2390          {
2391            "name": "restakedBalanceGwei",
2392            "type": "uint64",
2393            "internalType": "uint64"
2394          },
2395          {
2396            "name": "lastCheckpointedAt",
2397            "type": "uint64",
2398            "internalType": "uint64"
2399          },
2400          {
2401            "name": "status",
2402            "type": "uint8",
2403            "internalType": "enum IEigenPodTypes.VALIDATOR_STATUS"
2404          }
2405        ]
2406      }
2407    ],
2408    "stateMutability": "view"
2409  },
2410  {
2411    "type": "function",
2412    "name": "validatorPubkeyToInfo",
2413    "inputs": [
2414      {
2415        "name": "validatorPubkey",
2416        "type": "bytes",
2417        "internalType": "bytes"
2418      }
2419    ],
2420    "outputs": [
2421      {
2422        "name": "",
2423        "type": "tuple",
2424        "internalType": "struct IEigenPodTypes.ValidatorInfo",
2425        "components": [
2426          {
2427            "name": "validatorIndex",
2428            "type": "uint64",
2429            "internalType": "uint64"
2430          },
2431          {
2432            "name": "restakedBalanceGwei",
2433            "type": "uint64",
2434            "internalType": "uint64"
2435          },
2436          {
2437            "name": "lastCheckpointedAt",
2438            "type": "uint64",
2439            "internalType": "uint64"
2440          },
2441          {
2442            "name": "status",
2443            "type": "uint8",
2444            "internalType": "enum IEigenPodTypes.VALIDATOR_STATUS"
2445          }
2446        ]
2447      }
2448    ],
2449    "stateMutability": "view"
2450  },
2451  {
2452    "type": "function",
2453    "name": "validatorStatus",
2454    "inputs": [
2455      {
2456        "name": "validatorPubkey",
2457        "type": "bytes",
2458        "internalType": "bytes"
2459      }
2460    ],
2461    "outputs": [
2462      {
2463        "name": "",
2464        "type": "uint8",
2465        "internalType": "enum IEigenPodTypes.VALIDATOR_STATUS"
2466      }
2467    ],
2468    "stateMutability": "view"
2469  },
2470  {
2471    "type": "function",
2472    "name": "validatorStatus",
2473    "inputs": [
2474      {
2475        "name": "pubkeyHash",
2476        "type": "bytes32",
2477        "internalType": "bytes32"
2478      }
2479    ],
2480    "outputs": [
2481      {
2482        "name": "",
2483        "type": "uint8",
2484        "internalType": "enum IEigenPodTypes.VALIDATOR_STATUS"
2485      }
2486    ],
2487    "stateMutability": "view"
2488  },
2489  {
2490    "type": "function",
2491    "name": "verifyCheckpointProofs",
2492    "inputs": [
2493      {
2494        "name": "balanceContainerProof",
2495        "type": "tuple",
2496        "internalType": "struct BeaconChainProofs.BalanceContainerProof",
2497        "components": [
2498          {
2499            "name": "balanceContainerRoot",
2500            "type": "bytes32",
2501            "internalType": "bytes32"
2502          },
2503          {
2504            "name": "proof",
2505            "type": "bytes",
2506            "internalType": "bytes"
2507          }
2508        ]
2509      },
2510      {
2511        "name": "proofs",
2512        "type": "tuple[]",
2513        "internalType": "struct BeaconChainProofs.BalanceProof[]",
2514        "components": [
2515          {
2516            "name": "pubkeyHash",
2517            "type": "bytes32",
2518            "internalType": "bytes32"
2519          },
2520          {
2521            "name": "balanceRoot",
2522            "type": "bytes32",
2523            "internalType": "bytes32"
2524          },
2525          {
2526            "name": "proof",
2527            "type": "bytes",
2528            "internalType": "bytes"
2529          }
2530        ]
2531      }
2532    ],
2533    "outputs": [],
2534    "stateMutability": "nonpayable"
2535  },
2536  {
2537    "type": "function",
2538    "name": "verifyStaleBalance",
2539    "inputs": [
2540      {
2541        "name": "beaconTimestamp",
2542        "type": "uint64",
2543        "internalType": "uint64"
2544      },
2545      {
2546        "name": "stateRootProof",
2547        "type": "tuple",
2548        "internalType": "struct BeaconChainProofs.StateRootProof",
2549        "components": [
2550          {
2551            "name": "beaconStateRoot",
2552            "type": "bytes32",
2553            "internalType": "bytes32"
2554          },
2555          {
2556            "name": "proof",
2557            "type": "bytes",
2558            "internalType": "bytes"
2559          }
2560        ]
2561      },
2562      {
2563        "name": "proof",
2564        "type": "tuple",
2565        "internalType": "struct BeaconChainProofs.ValidatorProof",
2566        "components": [
2567          {
2568            "name": "validatorFields",
2569            "type": "bytes32[]",
2570            "internalType": "bytes32[]"
2571          },
2572          {
2573            "name": "proof",
2574            "type": "bytes",
2575            "internalType": "bytes"
2576          }
2577        ]
2578      }
2579    ],
2580    "outputs": [],
2581    "stateMutability": "nonpayable"
2582  },
2583  {
2584    "type": "function",
2585    "name": "verifyWithdrawalCredentials",
2586    "inputs": [
2587      {
2588        "name": "beaconTimestamp",
2589        "type": "uint64",
2590        "internalType": "uint64"
2591      },
2592      {
2593        "name": "stateRootProof",
2594        "type": "tuple",
2595        "internalType": "struct BeaconChainProofs.StateRootProof",
2596        "components": [
2597          {
2598            "name": "beaconStateRoot",
2599            "type": "bytes32",
2600            "internalType": "bytes32"
2601          },
2602          {
2603            "name": "proof",
2604            "type": "bytes",
2605            "internalType": "bytes"
2606          }
2607        ]
2608      },
2609      {
2610        "name": "validatorIndices",
2611        "type": "uint40[]",
2612        "internalType": "uint40[]"
2613      },
2614      {
2615        "name": "validatorFieldsProofs",
2616        "type": "bytes[]",
2617        "internalType": "bytes[]"
2618      },
2619      {
2620        "name": "validatorFields",
2621        "type": "bytes32[][]",
2622        "internalType": "bytes32[][]"
2623      }
2624    ],
2625    "outputs": [],
2626    "stateMutability": "nonpayable"
2627  },
2628  {
2629    "type": "function",
2630    "name": "version",
2631    "inputs": [],
2632    "outputs": [
2633      {
2634        "name": "",
2635        "type": "string",
2636        "internalType": "string"
2637      }
2638    ],
2639    "stateMutability": "view"
2640  },
2641  {
2642    "type": "function",
2643    "name": "withdrawRestakedBeaconChainETH",
2644    "inputs": [
2645      {
2646        "name": "recipient",
2647        "type": "address",
2648        "internalType": "address"
2649      },
2650      {
2651        "name": "amountWei",
2652        "type": "uint256",
2653        "internalType": "uint256"
2654      }
2655    ],
2656    "outputs": [],
2657    "stateMutability": "nonpayable"
2658  },
2659  {
2660    "type": "function",
2661    "name": "withdrawableRestakedExecutionLayerGwei",
2662    "inputs": [],
2663    "outputs": [
2664      {
2665        "name": "",
2666        "type": "uint64",
2667        "internalType": "uint64"
2668      }
2669    ],
2670    "stateMutability": "view"
2671  },
2672  {
2673    "type": "event",
2674    "name": "CheckpointCreated",
2675    "inputs": [
2676      {
2677        "name": "checkpointTimestamp",
2678        "type": "uint64",
2679        "indexed": true,
2680        "internalType": "uint64"
2681      },
2682      {
2683        "name": "beaconBlockRoot",
2684        "type": "bytes32",
2685        "indexed": true,
2686        "internalType": "bytes32"
2687      },
2688      {
2689        "name": "validatorCount",
2690        "type": "uint256",
2691        "indexed": false,
2692        "internalType": "uint256"
2693      }
2694    ],
2695    "anonymous": false
2696  },
2697  {
2698    "type": "event",
2699    "name": "CheckpointFinalized",
2700    "inputs": [
2701      {
2702        "name": "checkpointTimestamp",
2703        "type": "uint64",
2704        "indexed": true,
2705        "internalType": "uint64"
2706      },
2707      {
2708        "name": "totalShareDeltaWei",
2709        "type": "int256",
2710        "indexed": false,
2711        "internalType": "int256"
2712      }
2713    ],
2714    "anonymous": false
2715  },
2716  {
2717    "type": "event",
2718    "name": "EigenPodStaked",
2719    "inputs": [
2720      {
2721        "name": "pubkey",
2722        "type": "bytes",
2723        "indexed": false,
2724        "internalType": "bytes"
2725      }
2726    ],
2727    "anonymous": false
2728  },
2729  {
2730    "type": "event",
2731    "name": "Initialized",
2732    "inputs": [
2733      {
2734        "name": "version",
2735        "type": "uint8",
2736        "indexed": false,
2737        "internalType": "uint8"
2738      }
2739    ],
2740    "anonymous": false
2741  },
2742  {
2743    "type": "event",
2744    "name": "NonBeaconChainETHReceived",
2745    "inputs": [
2746      {
2747        "name": "amountReceived",
2748        "type": "uint256",
2749        "indexed": false,
2750        "internalType": "uint256"
2751      }
2752    ],
2753    "anonymous": false
2754  },
2755  {
2756    "type": "event",
2757    "name": "ProofSubmitterUpdated",
2758    "inputs": [
2759      {
2760        "name": "prevProofSubmitter",
2761        "type": "address",
2762        "indexed": false,
2763        "internalType": "address"
2764      },
2765      {
2766        "name": "newProofSubmitter",
2767        "type": "address",
2768        "indexed": false,
2769        "internalType": "address"
2770      }
2771    ],
2772    "anonymous": false
2773  },
2774  {
2775    "type": "event",
2776    "name": "RestakedBeaconChainETHWithdrawn",
2777    "inputs": [
2778      {
2779        "name": "recipient",
2780        "type": "address",
2781        "indexed": true,
2782        "internalType": "address"
2783      },
2784      {
2785        "name": "amount",
2786        "type": "uint256",
2787        "indexed": false,
2788        "internalType": "uint256"
2789      }
2790    ],
2791    "anonymous": false
2792  },
2793  {
2794    "type": "event",
2795    "name": "ValidatorBalanceUpdated",
2796    "inputs": [
2797      {
2798        "name": "validatorIndex",
2799        "type": "uint40",
2800        "indexed": false,
2801        "internalType": "uint40"
2802      },
2803      {
2804        "name": "balanceTimestamp",
2805        "type": "uint64",
2806        "indexed": false,
2807        "internalType": "uint64"
2808      },
2809      {
2810        "name": "newValidatorBalanceGwei",
2811        "type": "uint64",
2812        "indexed": false,
2813        "internalType": "uint64"
2814      }
2815    ],
2816    "anonymous": false
2817  },
2818  {
2819    "type": "event",
2820    "name": "ValidatorCheckpointed",
2821    "inputs": [
2822      {
2823        "name": "checkpointTimestamp",
2824        "type": "uint64",
2825        "indexed": true,
2826        "internalType": "uint64"
2827      },
2828      {
2829        "name": "validatorIndex",
2830        "type": "uint40",
2831        "indexed": true,
2832        "internalType": "uint40"
2833      }
2834    ],
2835    "anonymous": false
2836  },
2837  {
2838    "type": "event",
2839    "name": "ValidatorRestaked",
2840    "inputs": [
2841      {
2842        "name": "validatorIndex",
2843        "type": "uint40",
2844        "indexed": false,
2845        "internalType": "uint40"
2846      }
2847    ],
2848    "anonymous": false
2849  },
2850  {
2851    "type": "event",
2852    "name": "ValidatorWithdrawn",
2853    "inputs": [
2854      {
2855        "name": "checkpointTimestamp",
2856        "type": "uint64",
2857        "indexed": true,
2858        "internalType": "uint64"
2859      },
2860      {
2861        "name": "validatorIndex",
2862        "type": "uint40",
2863        "indexed": true,
2864        "internalType": "uint40"
2865      }
2866    ],
2867    "anonymous": false
2868  },
2869  {
2870    "type": "error",
2871    "name": "BeaconTimestampTooFarInPast",
2872    "inputs": []
2873  },
2874  {
2875    "type": "error",
2876    "name": "CannotCheckpointTwiceInSingleBlock",
2877    "inputs": []
2878  },
2879  {
2880    "type": "error",
2881    "name": "CheckpointAlreadyActive",
2882    "inputs": []
2883  },
2884  {
2885    "type": "error",
2886    "name": "CredentialsAlreadyVerified",
2887    "inputs": []
2888  },
2889  {
2890    "type": "error",
2891    "name": "CurrentlyPaused",
2892    "inputs": []
2893  },
2894  {
2895    "type": "error",
2896    "name": "InputAddressZero",
2897    "inputs": []
2898  },
2899  {
2900    "type": "error",
2901    "name": "InputArrayLengthMismatch",
2902    "inputs": []
2903  },
2904  {
2905    "type": "error",
2906    "name": "InsufficientWithdrawableBalance",
2907    "inputs": []
2908  },
2909  {
2910    "type": "error",
2911    "name": "InvalidEIP4788Response",
2912    "inputs": []
2913  },
2914  {
2915    "type": "error",
2916    "name": "InvalidProof",
2917    "inputs": []
2918  },
2919  {
2920    "type": "error",
2921    "name": "InvalidProofLength",
2922    "inputs": []
2923  },
2924  {
2925    "type": "error",
2926    "name": "InvalidPubKeyLength",
2927    "inputs": []
2928  },
2929  {
2930    "type": "error",
2931    "name": "InvalidShortString",
2932    "inputs": []
2933  },
2934  {
2935    "type": "error",
2936    "name": "InvalidValidatorFieldsLength",
2937    "inputs": []
2938  },
2939  {
2940    "type": "error",
2941    "name": "MsgValueNot32ETH",
2942    "inputs": []
2943  },
2944  {
2945    "type": "error",
2946    "name": "NoActiveCheckpoint",
2947    "inputs": []
2948  },
2949  {
2950    "type": "error",
2951    "name": "NoBalanceToCheckpoint",
2952    "inputs": []
2953  },
2954  {
2955    "type": "error",
2956    "name": "OnlyEigenPodManager",
2957    "inputs": []
2958  },
2959  {
2960    "type": "error",
2961    "name": "OnlyEigenPodOwner",
2962    "inputs": []
2963  },
2964  {
2965    "type": "error",
2966    "name": "OnlyEigenPodOwnerOrProofSubmitter",
2967    "inputs": []
2968  },
2969  {
2970    "type": "error",
2971    "name": "StringTooLong",
2972    "inputs": [
2973      {
2974        "name": "str",
2975        "type": "string",
2976        "internalType": "string"
2977      }
2978    ]
2979  },
2980  {
2981    "type": "error",
2982    "name": "TimestampOutOfRange",
2983    "inputs": []
2984  },
2985  {
2986    "type": "error",
2987    "name": "ValidatorInactiveOnBeaconChain",
2988    "inputs": []
2989  },
2990  {
2991    "type": "error",
2992    "name": "ValidatorIsExitingBeaconChain",
2993    "inputs": []
2994  },
2995  {
2996    "type": "error",
2997    "name": "ValidatorNotActiveInPod",
2998    "inputs": []
2999  },
3000  {
3001    "type": "error",
3002    "name": "ValidatorNotSlashedOnBeaconChain",
3003    "inputs": []
3004  },
3005  {
3006    "type": "error",
3007    "name": "WithdrawalCredentialsNotForEigenPod",
3008    "inputs": []
3009  }
3010]
3011```*/
3012#[allow(
3013    non_camel_case_types,
3014    non_snake_case,
3015    clippy::pub_underscore_fields,
3016    clippy::style,
3017    clippy::empty_structs_with_brackets
3018)]
3019pub mod EigenPod {
3020    use super::*;
3021    use alloy::sol_types as alloy_sol_types;
3022    /// The creation / init bytecode of the contract.
3023    ///
3024    /// ```text
3025    ///0x610100604052348015610010575f5ffd5b50604051613ee9380380613ee983398101604081905261002f916101b9565b806100398161006e565b608052506001600160a01b0380851660a052831660c0526001600160401b03821660e0526100656100b4565b50505050610303565b5f5f829050601f815111156100a1578260405163305a27a960e01b815260040161009891906102ab565b60405180910390fd5b80516100ac826102dd565b179392505050565b5f54610100900460ff161561011b5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401610098565b5f5460ff9081161461016a575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b0381168114610180575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5b838110156101b1578181015183820152602001610199565b50505f910152565b5f5f5f5f608085870312156101cc575f5ffd5b84516101d78161016c565b60208601519094506101e88161016c565b60408601519093506001600160401b0381168114610204575f5ffd5b60608601519092506001600160401b0381111561021f575f5ffd5b8501601f8101871361022f575f5ffd5b80516001600160401b0381111561024857610248610183565b604051601f8201601f19908116603f011681016001600160401b038111828210171561027657610276610183565b60405281815282820160200189101561028d575f5ffd5b61029e826020830160208601610197565b9598949750929550505050565b602081525f82518060208401526102c9816040850160208701610197565b601f01601f19169190910160400192915050565b805160208083015191908110156102fd575f198160200360031b1b821691505b50919050565b60805160a05160c05160e051613b666103835f395f61063f01525f81816102c30152818161067a01528181610722015281816109e601528181610bb001528181610eb901528181610f6001528181611196015281816114e401528181611618015261286301525f81816105010152610fc901525f610c1c0152613b665ff3fe60806040526004361061017e575f3560e01c80636fcd0e53116100cd578063c490744211610087578063dda3346c11610062578063dda3346c146105d1578063ee94d67c146105f0578063f074ba621461060f578063f28824611461062e575f5ffd5b8063c490744214610574578063c4d66de814610593578063d06d5587146105b2575f5ffd5b80636fcd0e531461048f5780637439841f146104bb57806374cdd798146104f057806388676cad146105235780639b4e463414610542578063b522538a14610555575f5ffd5b80634665bcda1161013857806354fd4d501161011357806354fd4d5014610404578063587533571461042557806358eaee79146104445780636c0d2d5a14610470575f5ffd5b80634665bcda146102b257806347d28372146102e557806352396a59146103d0575f5ffd5b8063039157d2146101bc5780630b18ff66146101dd5780632340e8d3146102195780633474aa161461023c5780633f65cf191461026d57806342ecff2a1461028c575f5ffd5b366101b8576040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b5f5ffd5b3480156101c7575f5ffd5b506101db6101d63660046130c2565b610661565b005b3480156101e8575f5ffd5b506033546101fc906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b348015610224575f5ffd5b5061022e60395481565b604051908152602001610210565b348015610247575f5ffd5b506034546001600160401b03165b6040516001600160401b039091168152602001610210565b348015610278575f5ffd5b506101db61028736600461317b565b61098d565b348015610297575f5ffd5b50603a5461025590600160401b90046001600160401b031681565b3480156102bd575f5ffd5b506101fc7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102f0575f5ffd5b506103756040805160a0810182525f80825260208201819052918101829052606081018290526080810191909152506040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b9004909116608082015290565b60405161021091905f60a0820190508251825262ffffff60208401511660208301526001600160401b036040840151166040830152606083015160070b60608301526001600160401b03608084015116608083015292915050565b3480156103db575f5ffd5b506102556103ea366004613250565b603b6020525f90815260409020546001600160401b031681565b34801561040f575f5ffd5b50610418610c15565b60405161021091906132bd565b348015610430575f5ffd5b50603e546101fc906001600160a01b031681565b34801561044f575f5ffd5b5061046361045e36600461330c565b610c45565b604051610210919061337e565b34801561047b575f5ffd5b5061022e61048a366004613250565b610ca7565b34801561049a575f5ffd5b506104ae6104a936600461338c565b610db5565b60405161021091906133a3565b3480156104c6575f5ffd5b506104636104d536600461338c565b5f90815260366020526040902054600160c01b900460ff1690565b3480156104fb575f5ffd5b506101fc7f000000000000000000000000000000000000000000000000000000000000000081565b34801561052e575f5ffd5b506101db61053d366004613406565b610e60565b6101db610550366004613421565b610f55565b348015610560575f5ffd5b506104ae61056f36600461330c565b61109c565b34801561057f575f5ffd5b506101db61058e3660046134b1565b61118b565b34801561059e575f5ffd5b506101db6105ad3660046134db565b6112c2565b3480156105bd575f5ffd5b506101db6105cc3660046134db565b61140c565b3480156105dc575f5ffd5b506101db6105eb3660046135c6565b6114a0565b3480156105fb575f5ffd5b50603a54610255906001600160401b031681565b34801561061a575f5ffd5b506101db610629366004613698565b6115ff565b348015610639575f5ffd5b506102557f000000000000000000000000000000000000000000000000000000000000000081565b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa1580156106c7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106eb91906136ff565b156107095760405163840a48d560e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600860048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561076f573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061079391906136ff565b156107b15760405163840a48d560e01b815260040160405180910390fd5b5f6107f56107bf858061371a565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506119fc92505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156108635761086361334a565b60028111156108745761087461334a565b81525050905080604001516001600160401b0316876001600160401b0316116108b0576040516337e07ffd60e01b815260040160405180910390fd5b6001816060015160028111156108c8576108c861334a565b146108e65760405163d49e19a760e01b815260040160405180910390fd5b6109296108f3868061371a565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a1e92505050565b6109465760405163161ce5ed60e31b815260040160405180910390fd5b61095861095288610ca7565b87611a46565b61097b8635610967878061371a565b61097460208a018a61375f565b8651611aeb565b6109845f611c12565b50505050505050565b6033546001600160a01b03163314806109b05750603e546001600160a01b031633145b6109cd5760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600260048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610a33573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a5791906136ff565b15610a755760405163840a48d560e01b815260040160405180910390fd5b8584148015610a8357508382145b610aa0576040516343714afd60e01b815260040160405180910390fd5b603a546001600160401b03600160401b9091048116908a1611610ad6576040516337e07ffd60e01b815260040160405180910390fd5b610ae8610ae28a610ca7565b89611a46565b5f805b87811015610b8057610b6c8a358a8a84818110610b0a57610b0a6137a1565b9050602002016020810190610b1f91906137b5565b898985818110610b3157610b316137a1565b9050602002810190610b43919061375f565b898987818110610b5557610b556137a1565b9050602002810190610b67919061371a565b611d92565b610b7690836137ed565b9150600101610aeb565b5060335460405163a1ca780b60e01b81526001600160a01b0391821660048201525f6024820152604481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063a1ca780b906064015f604051808303815f87803b158015610bf3575f5ffd5b505af1158015610c05573d5f5f3e3d5ffd5b5050505050505050505050505050565b6060610c407f0000000000000000000000000000000000000000000000000000000000000000612247565b905090565b5f5f610c8584848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061228492505050565b5f90815260366020526040902054600160c01b900460ff169150505b92915050565b5f610cb5611fff600c613800565b610cc86001600160401b03841642613817565b10610ce657604051637944e66d60e11b815260040160405180910390fd5b604080516001600160401b03841660208201525f918291720f3df6d732807ef1319fb7b8bb8522d0beac02910160408051601f1981840301815290829052610d2d9161382a565b5f60405180830381855afa9150503d805f8114610d65576040519150601f19603f3d011682016040523d82523d5f602084013e610d6a565b606091505b5091509150818015610d7c57505f8151115b610d995760405163558ad0a360e01b815260040160405180910390fd5b80806020019051810190610dad9190613845565b949350505050565b610ddc604080516080810182525f8082526020820181905291810182905290606082015290565b5f82815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff166002811115610e4657610e4661334a565b6002811115610e5757610e5761334a565b90525092915050565b6033546001600160a01b0316331480610e835750603e546001600160a01b031633145b610ea05760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610f06573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f2a91906136ff565b15610f485760405163840a48d560e01b815260040160405180910390fd5b610f5182611c12565b5050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f9e57604051633213a66160e21b815260040160405180910390fd5b346801bc16d674ec80000014610fc75760405163049696b360e31b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663228951186801bc16d674ec800000878761100a612315565b8888886040518863ffffffff1660e01b815260040161102e96959493929190613884565b5f604051808303818588803b158015611045575f5ffd5b505af1158015611057573d5f5f3e3d5ffd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e23858560405161108d9291906138d2565b60405180910390a15050505050565b6110c3604080516080810182525f8082526020820181905291810182905290606082015290565b60365f61110485858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061228492505050565b815260208082019290925260409081015f20815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff1660028111156111705761117061334a565b60028111156111815761118161334a565b9052509392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111d457604051633213a66160e21b815260040160405180910390fd5b5f6111e3633b9aca00836138f9565b90506111fc633b9aca006001600160401b038316613800565b6034549092506001600160401b03908116908216111561122f576040516302c6f54760e21b815260040160405180910390fd5b603480548291905f9061124c9084906001600160401b031661390c565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e836040516112ab91815260200190565b60405180910390a26112bd8383612359565b505050565b5f54610100900460ff16158080156112e057505f54600160ff909116105b806112f95750303b1580156112f957505f5460ff166001145b6113615760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015611382575f805461ff0019166101001790555b6001600160a01b0382166113a9576040516339b190bb60e11b815260040160405180910390fd5b603380546001600160a01b0319166001600160a01b0384161790558015610f51575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6033546001600160a01b031633146114375760405163719f370360e11b815260040160405180910390fd5b603e54604080516001600160a01b03928316815291831660208301527ffb8129080a19d34dceac04ba253fc50304dc86c729bd63cdca4a969ad19a5eac910160405180910390a1603e80546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146114cb5760405163719f370360e11b815260040160405180910390fd5b604051635ac86ab760e01b8152600560048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611531573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061155591906136ff565b156115735760405163840a48d560e01b815260040160405180910390fd5b8251845114611595576040516343714afd60e01b815260040160405180910390fd5b5f5b84518110156115f8576115f0838583815181106115b6576115b66137a1565b60200260200101518784815181106115d0576115d06137a1565b60200260200101516001600160a01b031661246e9092919063ffffffff16565b600101611597565b5050505050565b604051635ac86ab760e01b8152600760048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611665573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061168991906136ff565b156116a75760405163840a48d560e01b815260040160405180910390fd5b603a54600160401b90046001600160401b03165f8190036116db57604051631a544f4960e01b815260040160405180910390fd5b6040805160a081018252603c54808252603d5462ffffff811660208401526001600160401b0363010000008204811694840194909452600160581b810460070b6060840152600160981b900490921660808201529061173a90876124c0565b5f805b858110156119a35736878783818110611758576117586137a1565b905060200281019061176a919061392b565b80355f908152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156117da576117da61334a565b60028111156117eb576117eb61334a565b90525090506001816060015160028111156118085761180861334a565b1461181457505061199b565b856001600160401b031681604001516001600160401b03161061183857505061199b565b5f8080611848848a8f3588612571565b60208b018051939650919450925061185f8261393f565b62ffffff1690525060808801805184919061187b90839061395c565b6001600160401b031690525060608801805183919061189b90839061397b565b60070b9052506118ab818861395c565b85355f908152603660209081526040918290208751815492890151938901516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060880151939a50879390929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b83600281111561194f5761194f61334a565b021790555050845160405164ffffffffff90911691506001600160401b038b16907fa91c59033c3423e18b54d0acecebb4972f9ea95aedf5f4cae3b677b02eaf3a3f905f90a350505050505b60010161173d565b506001600160401b038084165f908152603b60205260408120805484939192916119cf9185911661395c565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555061098482612694565b5f815f81518110611a0f57611a0f6137a1565b60200260200101519050919050565b5f81600381518110611a3257611a326137a1565b60200260200101515f5f1b14159050919050565b611a5260036020613800565b611a5f602083018361375f565b905014611a7f576040516313717da960e21b815260040160405180910390fd5b611ace611a8f602083018361375f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250869250508435905060036128c3565b610f51576040516309bde33960e01b815260040160405180910390fd5b60088414611b0c5760405163200591bd60e01b815260040160405180910390fd5b6005611b1a602860016137ed565b611b2491906137ed565b611b2f906020613800565b8214611b4e576040516313717da960e21b815260040160405180910390fd5b5f611b8a8686808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506128da92505050565b90505f64ffffffffff8316611ba1602860016137ed565b600b901b179050611beb85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508c92508691508590506128c3565b611c08576040516309bde33960e01b815260040160405180910390fd5b5050505050505050565b603a54600160401b90046001600160401b031615611c425760405162be9bc360e81b815260040160405180910390fd5b603a546001600160401b03428116911603611c70576040516367db5b8b60e01b815260040160405180910390fd5b6034545f906001600160401b0316611c8c633b9aca00476138f9565b611c96919061390c565b9050818015611cac57506001600160401b038116155b15611cca576040516332dea95960e21b815260040160405180910390fd5b5f6040518060a00160405280611cdf42610ca7565b815260395462ffffff1660208201526001600160401b0380851660408301525f60608301819052608090920191909152603a805442909216600160401b026fffffffffffffffff0000000000000000199092169190911790559050611d4381612694565b805160208083015160405162ffffff90911681526001600160401b034216917f575796133bbed337e5b39aa49a30dc2556a91e0c6c2af4b7b886ae77ebef1076910160405180910390a3505050565b5f5f611dcf8484808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506119fc92505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115611e3d57611e3d61334a565b6002811115611e4e57611e4e61334a565b90525090505f81606001516002811115611e6a57611e6a61334a565b14611e88576040516335e09e9d60e01b815260040160405180910390fd5b6001600160401b038016611ecd8686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612b6a92505050565b6001600160401b031603611ef457604051631958236d60e21b815260040160405180910390fd5b6001600160401b038016611f398686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612b8e92505050565b6001600160401b031614611f6057604051632eade63760e01b815260040160405180910390fd5b611f68612315565b611f71906139aa565b611fac8686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612ba592505050565b14611fca57604051633772dd5360e11b815260040160405180910390fd5b5f6120068686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612bb992505050565b90506120168a87878b8b8e611aeb565b60398054905f612025836139cd565b9091555050603a545f90600160401b90046001600160401b03161561205c57603a54600160401b90046001600160401b0316612069565b603a546001600160401b03165b6040805160808101825264ffffffffff8d1681526001600160401b03858116602083015283169181019190915290915060608101600190525f858152603660209081526040918290208351815492850151938501516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b031990951691909216179290921792831682178155606084015190929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b83600281111561213e5761213e61334a565b021790555050603d8054849250601390612169908490600160981b90046001600160401b031661395c565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c104414498a6040516121c9919064ffffffffff91909116815260200190565b60405180910390a16040805164ffffffffff8c1681526001600160401b03838116602083015284168183015290517f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df9181900360600190a1612238633b9aca006001600160401b038416613800565b9b9a5050505050505050505050565b60605f61225383612bd0565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f81516030146122a757604051634f88323960e11b815260040160405180910390fd5b6040516002906122bd9084905f906020016139e5565b60408051601f19818403018152908290526122d79161382a565b602060405180830381855afa1580156122f2573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610ca19190613845565b60408051600160f81b60208201525f602182015230606090811b6bffffffffffffffffffffffff1916602c8301529101604051602081830303815290604052905090565b804710156123a95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401611358565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f81146123f2576040519150601f19603f3d011682016040523d82523d5f602084013e6123f7565b606091505b50509050806112bd5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401611358565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112bd908490612bf7565b6124cc600560036137ed565b6124d7906020613800565b6124e4602083018361375f565b905014612504576040516313717da960e21b815260040160405180910390fd5b606c612554612516602084018461375f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508792505085359050846128c3565b6112bd576040516309bde33960e01b815260040160405180910390fd5b83516020850151905f90819081612589878388612cca565b9050846001600160401b0316816001600160401b031614612603576125ae8582613a13565b6040805164ffffffffff851681526001600160401b038b8116602083015284168183015290519195507f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df919081900360600190a15b6001600160401b0380821660208b0181905290891660408b01525f036126885760398054905f61263283613a42565b9091555050600260608a015261264784613a57565b92508164ffffffffff16886001600160401b03167f2a02361ffa66cf2c2da4682c2355a6adcaa9f6c227b6e6563e68480f9587626a60405160405180910390a35b50509450945094915050565b602081015162ffffff1615612734578051603c556020810151603d80546040840151606085015160809095015162ffffff9094166affffffffffffffffffffff199092169190911763010000006001600160401b0392831602176fffffffffffffffffffffffffffffffff60581b1916600160581b9482169490940267ffffffffffffffff60981b191693909317600160981b9390921692909202179055565b60808101516034545f91612750916001600160401b031661395c565b90505f82606001518360400151612767919061397b565b60408401516034805492935090915f9061278b9084906001600160401b031661395c565b82546101009290920a6001600160401b03818102199093169183160217909155603a8054600160401b810483166001600160801b03199091161790555f91506127db90633b9aca00908516613800565b90505f6127f0633b9aca00600785900b613a7c565b603a546040518281529192506001600160401b0316907f525408c201bc1576eb44116f6478f1c2a54775b19a043bcfdc708364f74f8e449060200160405180910390a260335460405163a1ca780b60e01b81526001600160a01b03918216600482015260248101849052604481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063a1ca780b906064015f604051808303815f87803b1580156128a6575f5ffd5b505af11580156128b8573d5f5f3e3d5ffd5b505050505050505050565b5f836128d0868585612da8565b1495945050505050565b5f5f600283516128ea91906138f9565b90505f816001600160401b03811115612905576129056134f6565b60405190808252806020026020018201604052801561292e578160200160208202803683370190505b5090505f5b82811015612a28576002856129488383613800565b81518110612958576129586137a1565b60200260200101518683600261296e9190613800565b6129799060016137ed565b81518110612989576129896137a1565b60200260200101516040516020016129ab929190918252602082015260400190565b60408051601f19818403018152908290526129c59161382a565b602060405180830381855afa1580156129e0573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190612a039190613845565b828281518110612a1557612a156137a1565b6020908102919091010152600101612933565b50612a346002836138f9565b91505b8115612b47575f5b82811015612b3457600282612a548383613800565b81518110612a6457612a646137a1565b602002602001015183836002612a7a9190613800565b612a859060016137ed565b81518110612a9557612a956137a1565b6020026020010151604051602001612ab7929190918252602082015260400190565b60408051601f1981840301815290829052612ad19161382a565b602060405180830381855afa158015612aec573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190612b0f9190613845565b828281518110612b2157612b216137a1565b6020908102919091010152600101612a3f565b50612b406002836138f9565b9150612a37565b805f81518110612b5957612b596137a1565b602002602001015192505050919050565b5f610ca182600581518110612b8157612b816137a1565b6020026020010151612e7c565b5f610ca182600681518110612b8157612b816137a1565b5f81600181518110611a0f57611a0f6137a1565b5f610ca182600281518110612b8157612b816137a1565b5f60ff8216601f811115610ca157604051632cd44ac360e21b815260040160405180910390fd5b5f612c4b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612ee39092919063ffffffff16565b905080515f1480612c6b575080806020019051810190612c6b91906136ff565b6112bd5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611358565b5f612cd7602660016137ed565b612ce2906020613800565b612cef604084018461375f565b905014612d0f576040516313717da960e21b815260040160405180910390fd5b5f612d1b600485613aab565b64ffffffffff169050612d74612d34604085018561375f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525089925050506020860135846128c3565b612d91576040516309bde33960e01b815260040160405180910390fd5b612d9f836020013585612ef1565b95945050505050565b5f83515f14158015612dc5575060208451612dc39190613ad4565b155b612de2576040516313717da960e21b815260040160405180910390fd5b604080516020808201909252848152905b85518111612e7257612e06600285613ad4565b5f03612e385781515f528086015160205260208260405f60026107d05a03fa612e2d575f5ffd5b600284049350612e60565b808601515f52815160205260208260405f60026107d05a03fa612e59575f5ffd5b6002840493505b612e6b6020826137ed565b9050612df3565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b6060610dad84845f85612f1d565b5f80612efe600484613ae7565b612f09906040613b10565b64ffffffffff169050610dad84821b612e7c565b606082471015612f7e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611358565b5f5f866001600160a01b03168587604051612f99919061382a565b5f6040518083038185875af1925050503d805f8114612fd3576040519150601f19603f3d011682016040523d82523d5f602084013e612fd8565b606091505b5091509150612fe987838387612ff4565b979650505050505050565b606083156130625782515f0361305b576001600160a01b0385163b61305b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611358565b5081610dad565b610dad83838151156130775781518083602001fd5b8060405162461bcd60e51b815260040161135891906132bd565b80356001600160401b03811681146130a7575f5ffd5b919050565b5f604082840312156130bc575f5ffd5b50919050565b5f5f5f606084860312156130d4575f5ffd5b6130dd84613091565b925060208401356001600160401b038111156130f7575f5ffd5b613103868287016130ac565b92505060408401356001600160401b0381111561311e575f5ffd5b61312a868287016130ac565b9150509250925092565b5f5f83601f840112613144575f5ffd5b5081356001600160401b0381111561315a575f5ffd5b6020830191508360208260051b8501011115613174575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60a0898b031215613192575f5ffd5b61319b89613091565b975060208901356001600160401b038111156131b5575f5ffd5b6131c18b828c016130ac565b97505060408901356001600160401b038111156131dc575f5ffd5b6131e88b828c01613134565b90975095505060608901356001600160401b03811115613206575f5ffd5b6132128b828c01613134565b90955093505060808901356001600160401b03811115613230575f5ffd5b61323c8b828c01613134565b999c989b5096995094979396929594505050565b5f60208284031215613260575f5ffd5b61326982613091565b9392505050565b5f5b8381101561328a578181015183820152602001613272565b50505f910152565b5f81518084526132a9816020860160208601613270565b601f01601f19169290920160200192915050565b602081525f6132696020830184613292565b5f5f83601f8401126132df575f5ffd5b5081356001600160401b038111156132f5575f5ffd5b602083019150836020828501011115613174575f5ffd5b5f5f6020838503121561331d575f5ffd5b82356001600160401b03811115613332575f5ffd5b61333e858286016132cf565b90969095509350505050565b634e487b7160e01b5f52602160045260245ffd5b6003811061337a57634e487b7160e01b5f52602160045260245ffd5b9052565b60208101610ca1828461335e565b5f6020828403121561339c575f5ffd5b5035919050565b5f6080820190506001600160401b0383511682526001600160401b0360208401511660208301526001600160401b03604084015116604083015260608301516133ef606084018261335e565b5092915050565b8015158114613403575f5ffd5b50565b5f60208284031215613416575f5ffd5b8135613269816133f6565b5f5f5f5f5f60608688031215613435575f5ffd5b85356001600160401b0381111561344a575f5ffd5b613456888289016132cf565b90965094505060208601356001600160401b03811115613474575f5ffd5b613480888289016132cf565b96999598509660400135949350505050565b6001600160a01b0381168114613403575f5ffd5b80356130a781613492565b5f5f604083850312156134c2575f5ffd5b82356134cd81613492565b946020939093013593505050565b5f602082840312156134eb575f5ffd5b813561326981613492565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b0381118282101715613532576135326134f6565b604052919050565b5f6001600160401b03821115613552576135526134f6565b5060051b60200190565b5f82601f83011261356b575f5ffd5b813561357e6135798261353a565b61350a565b8082825260208201915060208360051b86010192508583111561359f575f5ffd5b602085015b838110156135bc5780358352602092830192016135a4565b5095945050505050565b5f5f5f606084860312156135d8575f5ffd5b83356001600160401b038111156135ed575f5ffd5b8401601f810186136135fd575f5ffd5b803561360b6135798261353a565b8082825260208201915060208360051b85010192508883111561362c575f5ffd5b6020840193505b8284101561365757833561364681613492565b825260209384019390910190613633565b955050505060208401356001600160401b03811115613674575f5ffd5b6136808682870161355c565b92505061368f604085016134a6565b90509250925092565b5f5f5f604084860312156136aa575f5ffd5b83356001600160401b038111156136bf575f5ffd5b6136cb868287016130ac565b93505060208401356001600160401b038111156136e6575f5ffd5b6136f286828701613134565b9497909650939450505050565b5f6020828403121561370f575f5ffd5b8151613269816133f6565b5f5f8335601e1984360301811261372f575f5ffd5b8301803591506001600160401b03821115613748575f5ffd5b6020019150600581901b3603821315613174575f5ffd5b5f5f8335601e19843603018112613774575f5ffd5b8301803591506001600160401b0382111561378d575f5ffd5b602001915036819003821315613174575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156137c5575f5ffd5b813564ffffffffff81168114613269575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115610ca157610ca16137d9565b8082028115828204841417610ca157610ca16137d9565b81810381811115610ca157610ca16137d9565b5f825161383b818460208701613270565b9190910192915050565b5f60208284031215613855575f5ffd5b5051919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b608081525f61389760808301888a61385c565b82810360208401526138a98188613292565b905082810360408401526138be81868861385c565b915050826060830152979650505050505050565b602081525f610dad60208301848661385c565b634e487b7160e01b5f52601260045260245ffd5b5f82613907576139076138e5565b500490565b6001600160401b038281168282160390811115610ca157610ca16137d9565b5f8235605e1983360301811261383b575f5ffd5b5f62ffffff821680613953576139536137d9565b5f190192915050565b6001600160401b038181168382160190811115610ca157610ca16137d9565b600781810b9083900b01677fffffffffffffff8113677fffffffffffffff1982121715610ca157610ca16137d9565b805160208083015191908110156130bc575f1960209190910360031b1b16919050565b5f600182016139de576139de6137d9565b5060010190565b5f83516139f6818460208801613270565b6001600160801b0319939093169190920190815260100192915050565b600782810b9082900b03677fffffffffffffff198112677fffffffffffffff82131715610ca157610ca16137d9565b5f81613a5057613a506137d9565b505f190190565b5f8160070b677fffffffffffffff198103613a7457613a746137d9565b5f0392915050565b8082025f8212600160ff1b84141615613a9757613a976137d9565b8181058314821517610ca157610ca16137d9565b5f64ffffffffff831680613ac157613ac16138e5565b8064ffffffffff84160491505092915050565b5f82613ae257613ae26138e5565b500690565b5f64ffffffffff831680613afd57613afd6138e5565b8064ffffffffff84160691505092915050565b64ffffffffff81811683821602908116908181146133ef576133ef6137d956fea26469706673582212202fac89be433c923b9ca0410d2a58980a6d128535cebfe8191eb72f3a8be377fb64736f6c634300081b0033
3026    /// ```
3027    #[rustfmt::skip]
3028    #[allow(clippy::all)]
3029    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
3030        b"a\x01\0`@R4\x80\x15a\0\x10W__\xFD[P`@Qa>\xE98\x03\x80a>\xE9\x839\x81\x01`@\x81\x90Ra\0/\x91a\x01\xB9V[\x80a\09\x81a\0nV[`\x80RP`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\xA0R\x83\x16`\xC0R`\x01`\x01`@\x1B\x03\x82\x16`\xE0Ra\0ea\0\xB4V[PPPPa\x03\x03V[__\x82\x90P`\x1F\x81Q\x11\x15a\0\xA1W\x82`@Qc0Z'\xA9`\xE0\x1B\x81R`\x04\x01a\0\x98\x91\x90a\x02\xABV[`@Q\x80\x91\x03\x90\xFD[\x80Qa\0\xAC\x82a\x02\xDDV[\x17\x93\x92PPPV[_Ta\x01\0\x90\x04`\xFF\x16\x15a\x01\x1BW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`'`$\x82\x01R\x7FInitializable: contract is initi`D\x82\x01Rfalizing`\xC8\x1B`d\x82\x01R`\x84\x01a\0\x98V[_T`\xFF\x90\x81\x16\x14a\x01jW_\x80T`\xFF\x19\x16`\xFF\x90\x81\x17\x90\x91U`@Q\x90\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[V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01\x80W__\xFD[PV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[_[\x83\x81\x10\x15a\x01\xB1W\x81\x81\x01Q\x83\x82\x01R` \x01a\x01\x99V[PP_\x91\x01RV[____`\x80\x85\x87\x03\x12\x15a\x01\xCCW__\xFD[\x84Qa\x01\xD7\x81a\x01lV[` \x86\x01Q\x90\x94Pa\x01\xE8\x81a\x01lV[`@\x86\x01Q\x90\x93P`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\x02\x04W__\xFD[``\x86\x01Q\x90\x92P`\x01`\x01`@\x1B\x03\x81\x11\x15a\x02\x1FW__\xFD[\x85\x01`\x1F\x81\x01\x87\x13a\x02/W__\xFD[\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x02HWa\x02Ha\x01\x83V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x02vWa\x02va\x01\x83V[`@R\x81\x81R\x82\x82\x01` \x01\x89\x10\x15a\x02\x8DW__\xFD[a\x02\x9E\x82` \x83\x01` \x86\x01a\x01\x97V[\x95\x98\x94\x97P\x92\x95PPPPV[` \x81R_\x82Q\x80` \x84\x01Ra\x02\xC9\x81`@\x85\x01` \x87\x01a\x01\x97V[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[\x80Q` \x80\x83\x01Q\x91\x90\x81\x10\x15a\x02\xFDW_\x19\x81` \x03`\x03\x1B\x1B\x82\x16\x91P[P\x91\x90PV[`\x80Q`\xA0Q`\xC0Q`\xE0Qa;fa\x03\x83_9_a\x06?\x01R_\x81\x81a\x02\xC3\x01R\x81\x81a\x06z\x01R\x81\x81a\x07\"\x01R\x81\x81a\t\xE6\x01R\x81\x81a\x0B\xB0\x01R\x81\x81a\x0E\xB9\x01R\x81\x81a\x0F`\x01R\x81\x81a\x11\x96\x01R\x81\x81a\x14\xE4\x01R\x81\x81a\x16\x18\x01Ra(c\x01R_\x81\x81a\x05\x01\x01Ra\x0F\xC9\x01R_a\x0C\x1C\x01Ra;f_\xF3\xFE`\x80`@R`\x046\x10a\x01~W_5`\xE0\x1C\x80co\xCD\x0ES\x11a\0\xCDW\x80c\xC4\x90tB\x11a\0\x87W\x80c\xDD\xA34l\x11a\0bW\x80c\xDD\xA34l\x14a\x05\xD1W\x80c\xEE\x94\xD6|\x14a\x05\xF0W\x80c\xF0t\xBAb\x14a\x06\x0FW\x80c\xF2\x88$a\x14a\x06.W__\xFD[\x80c\xC4\x90tB\x14a\x05tW\x80c\xC4\xD6m\xE8\x14a\x05\x93W\x80c\xD0mU\x87\x14a\x05\xB2W__\xFD[\x80co\xCD\x0ES\x14a\x04\x8FW\x80ct9\x84\x1F\x14a\x04\xBBW\x80ct\xCD\xD7\x98\x14a\x04\xF0W\x80c\x88gl\xAD\x14a\x05#W\x80c\x9BNF4\x14a\x05BW\x80c\xB5\"S\x8A\x14a\x05UW__\xFD[\x80cFe\xBC\xDA\x11a\x018W\x80cT\xFDMP\x11a\x01\x13W\x80cT\xFDMP\x14a\x04\x04W\x80cXu3W\x14a\x04%W\x80cX\xEA\xEEy\x14a\x04DW\x80cl\r-Z\x14a\x04pW__\xFD[\x80cFe\xBC\xDA\x14a\x02\xB2W\x80cG\xD2\x83r\x14a\x02\xE5W\x80cR9jY\x14a\x03\xD0W__\xFD[\x80c\x03\x91W\xD2\x14a\x01\xBCW\x80c\x0B\x18\xFFf\x14a\x01\xDDW\x80c#@\xE8\xD3\x14a\x02\x19W\x80c4t\xAA\x16\x14a\x02<W\x80c?e\xCF\x19\x14a\x02mW\x80cB\xEC\xFF*\x14a\x02\x8CW__\xFD[6a\x01\xB8W`@Q4\x81R\x7Fo\xDD=\xBD\xB1s)\x96\x08\xC0\xAA\x9F6\x875\x85|\x88B\xB5\x81\xF88\x928\xBF\x05\xBD\x04\xB3\xBFI\x90` \x01`@Q\x80\x91\x03\x90\xA1\0[__\xFD[4\x80\x15a\x01\xC7W__\xFD[Pa\x01\xDBa\x01\xD66`\x04a0\xC2V[a\x06aV[\0[4\x80\x15a\x01\xE8W__\xFD[P`3Ta\x01\xFC\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x02$W__\xFD[Pa\x02.`9T\x81V[`@Q\x90\x81R` \x01a\x02\x10V[4\x80\x15a\x02GW__\xFD[P`4T`\x01`\x01`@\x1B\x03\x16[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x10V[4\x80\x15a\x02xW__\xFD[Pa\x01\xDBa\x02\x876`\x04a1{V[a\t\x8DV[4\x80\x15a\x02\x97W__\xFD[P`:Ta\x02U\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x02\xBDW__\xFD[Pa\x01\xFC\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[4\x80\x15a\x02\xF0W__\xFD[Pa\x03u`@\x80Q`\xA0\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R``\x81\x01\x82\x90R`\x80\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R`<T\x81R`=Tb\xFF\xFF\xFF\x81\x16` \x83\x01R`\x01`\x01`@\x1B\x03c\x01\0\0\0\x82\x04\x81\x16\x93\x83\x01\x93\x90\x93R`\x01`X\x1B\x81\x04`\x07\x0B``\x83\x01R`\x01`\x98\x1B\x90\x04\x90\x91\x16`\x80\x82\x01R\x90V[`@Qa\x02\x10\x91\x90_`\xA0\x82\x01\x90P\x82Q\x82Rb\xFF\xFF\xFF` \x84\x01Q\x16` \x83\x01R`\x01`\x01`@\x1B\x03`@\x84\x01Q\x16`@\x83\x01R``\x83\x01Q`\x07\x0B``\x83\x01R`\x01`\x01`@\x1B\x03`\x80\x84\x01Q\x16`\x80\x83\x01R\x92\x91PPV[4\x80\x15a\x03\xDBW__\xFD[Pa\x02Ua\x03\xEA6`\x04a2PV[`;` R_\x90\x81R`@\x90 T`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x04\x0FW__\xFD[Pa\x04\x18a\x0C\x15V[`@Qa\x02\x10\x91\x90a2\xBDV[4\x80\x15a\x040W__\xFD[P`>Ta\x01\xFC\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04OW__\xFD[Pa\x04ca\x04^6`\x04a3\x0CV[a\x0CEV[`@Qa\x02\x10\x91\x90a3~V[4\x80\x15a\x04{W__\xFD[Pa\x02.a\x04\x8A6`\x04a2PV[a\x0C\xA7V[4\x80\x15a\x04\x9AW__\xFD[Pa\x04\xAEa\x04\xA96`\x04a3\x8CV[a\r\xB5V[`@Qa\x02\x10\x91\x90a3\xA3V[4\x80\x15a\x04\xC6W__\xFD[Pa\x04ca\x04\xD56`\x04a3\x8CV[_\x90\x81R`6` R`@\x90 T`\x01`\xC0\x1B\x90\x04`\xFF\x16\x90V[4\x80\x15a\x04\xFBW__\xFD[Pa\x01\xFC\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[4\x80\x15a\x05.W__\xFD[Pa\x01\xDBa\x05=6`\x04a4\x06V[a\x0E`V[a\x01\xDBa\x05P6`\x04a4!V[a\x0FUV[4\x80\x15a\x05`W__\xFD[Pa\x04\xAEa\x05o6`\x04a3\x0CV[a\x10\x9CV[4\x80\x15a\x05\x7FW__\xFD[Pa\x01\xDBa\x05\x8E6`\x04a4\xB1V[a\x11\x8BV[4\x80\x15a\x05\x9EW__\xFD[Pa\x01\xDBa\x05\xAD6`\x04a4\xDBV[a\x12\xC2V[4\x80\x15a\x05\xBDW__\xFD[Pa\x01\xDBa\x05\xCC6`\x04a4\xDBV[a\x14\x0CV[4\x80\x15a\x05\xDCW__\xFD[Pa\x01\xDBa\x05\xEB6`\x04a5\xC6V[a\x14\xA0V[4\x80\x15a\x05\xFBW__\xFD[P`:Ta\x02U\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x06\x1AW__\xFD[Pa\x01\xDBa\x06)6`\x04a6\x98V[a\x15\xFFV[4\x80\x15a\x069W__\xFD[Pa\x02U\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[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x06`\x04\x82\x01\x81\x90R\x90\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\x16\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\xC7W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xEB\x91\x90a6\xFFV[\x15a\x07\tW`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x08`\x04\x82\x01\x81\x90R\x90\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\x16\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07oW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\x93\x91\x90a6\xFFV[\x15a\x07\xB1W`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x07\xF5a\x07\xBF\x85\x80a7\x1AV[\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847_\x92\x01\x91\x90\x91RPa\x19\xFC\x92PPPV[_\x81\x81R`6` \x90\x81R`@\x80\x83 \x81Q`\x80\x81\x01\x83R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x95\x83\x01\x95\x90\x95R`\x01`\x80\x1B\x81\x04\x90\x94\x16\x92\x81\x01\x92\x90\x92R\x93\x94P\x91\x92\x90``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x08cWa\x08ca3JV[`\x02\x81\x11\x15a\x08tWa\x08ta3JV[\x81RPP\x90P\x80`@\x01Q`\x01`\x01`@\x1B\x03\x16\x87`\x01`\x01`@\x1B\x03\x16\x11a\x08\xB0W`@Qc7\xE0\x7F\xFD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x81``\x01Q`\x02\x81\x11\x15a\x08\xC8Wa\x08\xC8a3JV[\x14a\x08\xE6W`@Qc\xD4\x9E\x19\xA7`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\t)a\x08\xF3\x86\x80a7\x1AV[\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847_\x92\x01\x91\x90\x91RPa\x1A\x1E\x92PPPV[a\tFW`@Qc\x16\x1C\xE5\xED`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\tXa\tR\x88a\x0C\xA7V[\x87a\x1AFV[a\t{\x865a\tg\x87\x80a7\x1AV[a\tt` \x8A\x01\x8Aa7_V[\x86Qa\x1A\xEBV[a\t\x84_a\x1C\x12V[PPPPPPPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14\x80a\t\xB0WP`>T`\x01`\x01`\xA0\x1B\x03\x163\x14[a\t\xCDW`@QcBzwy`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x02`\x04\x82\x01\x81\x90R\x90\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\x16\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\n3W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\nW\x91\x90a6\xFFV[\x15a\nuW`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85\x84\x14\x80\x15a\n\x83WP\x83\x82\x14[a\n\xA0W`@QcCqJ\xFD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`:T`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x91\x04\x81\x16\x90\x8A\x16\x11a\n\xD6W`@Qc7\xE0\x7F\xFD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\n\xE8a\n\xE2\x8Aa\x0C\xA7V[\x89a\x1AFV[_\x80[\x87\x81\x10\x15a\x0B\x80Wa\x0Bl\x8A5\x8A\x8A\x84\x81\x81\x10a\x0B\nWa\x0B\na7\xA1V[\x90P` \x02\x01` \x81\x01\x90a\x0B\x1F\x91\x90a7\xB5V[\x89\x89\x85\x81\x81\x10a\x0B1Wa\x0B1a7\xA1V[\x90P` \x02\x81\x01\x90a\x0BC\x91\x90a7_V[\x89\x89\x87\x81\x81\x10a\x0BUWa\x0BUa7\xA1V[\x90P` \x02\x81\x01\x90a\x0Bg\x91\x90a7\x1AV[a\x1D\x92V[a\x0Bv\x90\x83a7\xEDV[\x91P`\x01\x01a\n\xEBV[P`3T`@Qc\xA1\xCAx\x0B`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R_`$\x82\x01R`D\x81\x01\x83\x90R\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\x90\x91\x16\x90c\xA1\xCAx\x0B\x90`d\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x0B\xF3W__\xFD[PZ\xF1\x15\x80\x15a\x0C\x05W=__>=_\xFD[PPPPPPPPPPPPPPV[``a\x0C@\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\0a\"GV[\x90P\x90V[__a\x0C\x85\x84\x84\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\x91RPa\"\x84\x92PPPV[_\x90\x81R`6` R`@\x90 T`\x01`\xC0\x1B\x90\x04`\xFF\x16\x91PP[\x92\x91PPV[_a\x0C\xB5a\x1F\xFF`\x0Ca8\0V[a\x0C\xC8`\x01`\x01`@\x1B\x03\x84\x16Ba8\x17V[\x10a\x0C\xE6W`@QcyD\xE6m`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q`\x01`\x01`@\x1B\x03\x84\x16` \x82\x01R_\x91\x82\x91r\x0F=\xF6\xD72\x80~\xF11\x9F\xB7\xB8\xBB\x85\"\xD0\xBE\xAC\x02\x91\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\r-\x91a8*V[_`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80_\x81\x14a\reW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\rjV[``\x91P[P\x91P\x91P\x81\x80\x15a\r|WP_\x81Q\x11[a\r\x99W`@QcU\x8A\xD0\xA3`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80\x80` \x01\x90Q\x81\x01\x90a\r\xAD\x91\x90a8EV[\x94\x93PPPPV[a\r\xDC`@\x80Q`\x80\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R\x90``\x82\x01R\x90V[_\x82\x81R`6` \x90\x81R`@\x91\x82\x90 \x82Q`\x80\x81\x01\x84R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x94\x83\x01\x94\x90\x94R`\x01`\x80\x1B\x81\x04\x90\x93\x16\x93\x81\x01\x93\x90\x93R\x90``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x0EFWa\x0EFa3JV[`\x02\x81\x11\x15a\x0EWWa\x0EWa3JV[\x90RP\x92\x91PPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14\x80a\x0E\x83WP`>T`\x01`\x01`\xA0\x1B\x03\x163\x14[a\x0E\xA0W`@QcBzwy`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x06`\x04\x82\x01\x81\x90R\x90\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\x16\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0F\x06W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F*\x91\x90a6\xFFV[\x15a\x0FHW`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0FQ\x82a\x1C\x12V[PPV[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x0F\x9EW`@Qc2\x13\xA6a`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[4h\x01\xBC\x16\xD6t\xEC\x80\0\0\x14a\x0F\xC7W`@Qc\x04\x96\x96\xB3`\xE3\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\x16c\"\x89Q\x18h\x01\xBC\x16\xD6t\xEC\x80\0\0\x87\x87a\x10\na#\x15V[\x88\x88\x88`@Q\x88c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x10.\x96\x95\x94\x93\x92\x91\x90a8\x84V[_`@Q\x80\x83\x03\x81\x85\x88\x80;\x15\x80\x15a\x10EW__\xFD[PZ\xF1\x15\x80\x15a\x10WW=__>=_\xFD[PPPPP\x7F`he\xB7\x93J%\xD4\xAE\xD4?l\xDBBd\x035?\xA4\xB3\0\x9CM\"\x84\x07GE\x81\xB0\x1E#\x85\x85`@Qa\x10\x8D\x92\x91\x90a8\xD2V[`@Q\x80\x91\x03\x90\xA1PPPPPV[a\x10\xC3`@\x80Q`\x80\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R\x90``\x82\x01R\x90V[`6_a\x11\x04\x85\x85\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\x91RPa\"\x84\x92PPPV[\x81R` \x80\x82\x01\x92\x90\x92R`@\x90\x81\x01_ \x81Q`\x80\x81\x01\x83R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x95\x83\x01\x95\x90\x95R`\x01`\x80\x1B\x81\x04\x90\x94\x16\x92\x81\x01\x92\x90\x92R\x90\x91``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x11pWa\x11pa3JV[`\x02\x81\x11\x15a\x11\x81Wa\x11\x81a3JV[\x90RP\x93\x92PPPV[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x11\xD4W`@Qc2\x13\xA6a`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x11\xE3c;\x9A\xCA\0\x83a8\xF9V[\x90Pa\x11\xFCc;\x9A\xCA\0`\x01`\x01`@\x1B\x03\x83\x16a8\0V[`4T\x90\x92P`\x01`\x01`@\x1B\x03\x90\x81\x16\x90\x82\x16\x11\x15a\x12/W`@Qc\x02\xC6\xF5G`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`4\x80T\x82\x91\x90_\x90a\x12L\x90\x84\x90`\x01`\x01`@\x1B\x03\x16a9\x0CV[\x92Pa\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UP\x82`\x01`\x01`\xA0\x1B\x03\x16\x7F\x89G\xFD,\xE0~\xF9\xCC0,N\x8F\x04a\x01V\x15\xD9\x1C\xE8QVH9\xE9\x1C\xC8\x04\xC2\xF4\x9D\x8E\x83`@Qa\x12\xAB\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2a\x12\xBD\x83\x83a#YV[PPPV[_Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x12\xE0WP_T`\x01`\xFF\x90\x91\x16\x10[\x80a\x12\xF9WP0;\x15\x80\x15a\x12\xF9WP_T`\xFF\x16`\x01\x14[a\x13aW`@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\x01[`@Q\x80\x91\x03\x90\xFD[_\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x13\x82W_\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x13\xA9W`@Qc9\xB1\x90\xBB`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`3\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x84\x16\x17\x90U\x80\x15a\x0FQW_\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\xA1PPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x147W`@Qcq\x9F7\x03`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`>T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x83\x16` \x83\x01R\x7F\xFB\x81)\x08\n\x19\xD3M\xCE\xAC\x04\xBA%?\xC5\x03\x04\xDC\x86\xC7)\xBDc\xCD\xCAJ\x96\x9A\xD1\x9A^\xAC\x91\x01`@Q\x80\x91\x03\x90\xA1`>\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x14\xCBW`@Qcq\x9F7\x03`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x05`\x04\x82\x01\x81\x90R\x90\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\x16\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x151W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15U\x91\x90a6\xFFV[\x15a\x15sW`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82Q\x84Q\x14a\x15\x95W`@QcCqJ\xFD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_[\x84Q\x81\x10\x15a\x15\xF8Wa\x15\xF0\x83\x85\x83\x81Q\x81\x10a\x15\xB6Wa\x15\xB6a7\xA1V[` \x02` \x01\x01Q\x87\x84\x81Q\x81\x10a\x15\xD0Wa\x15\xD0a7\xA1V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16a$n\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[`\x01\x01a\x15\x97V[PPPPPV[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x07`\x04\x82\x01\x81\x90R\x90\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\x16\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x16eW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16\x89\x91\x90a6\xFFV[\x15a\x16\xA7W`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`:T`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16_\x81\x90\x03a\x16\xDBW`@Qc\x1ATOI`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q`\xA0\x81\x01\x82R`<T\x80\x82R`=Tb\xFF\xFF\xFF\x81\x16` \x84\x01R`\x01`\x01`@\x1B\x03c\x01\0\0\0\x82\x04\x81\x16\x94\x84\x01\x94\x90\x94R`\x01`X\x1B\x81\x04`\x07\x0B``\x84\x01R`\x01`\x98\x1B\x90\x04\x90\x92\x16`\x80\x82\x01R\x90a\x17:\x90\x87a$\xC0V[_\x80[\x85\x81\x10\x15a\x19\xA3W6\x87\x87\x83\x81\x81\x10a\x17XWa\x17Xa7\xA1V[\x90P` \x02\x81\x01\x90a\x17j\x91\x90a9+V[\x805_\x90\x81R`6` \x90\x81R`@\x80\x83 \x81Q`\x80\x81\x01\x83R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x95\x83\x01\x95\x90\x95R`\x01`\x80\x1B\x81\x04\x90\x94\x16\x92\x81\x01\x92\x90\x92R\x93\x94P\x91\x92\x90``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x17\xDAWa\x17\xDAa3JV[`\x02\x81\x11\x15a\x17\xEBWa\x17\xEBa3JV[\x90RP\x90P`\x01\x81``\x01Q`\x02\x81\x11\x15a\x18\x08Wa\x18\x08a3JV[\x14a\x18\x14WPPa\x19\x9BV[\x85`\x01`\x01`@\x1B\x03\x16\x81`@\x01Q`\x01`\x01`@\x1B\x03\x16\x10a\x188WPPa\x19\x9BV[_\x80\x80a\x18H\x84\x8A\x8F5\x88a%qV[` \x8B\x01\x80Q\x93\x96P\x91\x94P\x92Pa\x18_\x82a9?V[b\xFF\xFF\xFF\x16\x90RP`\x80\x88\x01\x80Q\x84\x91\x90a\x18{\x90\x83\x90a9\\V[`\x01`\x01`@\x1B\x03\x16\x90RP``\x88\x01\x80Q\x83\x91\x90a\x18\x9B\x90\x83\x90a9{V[`\x07\x0B\x90RPa\x18\xAB\x81\x88a9\\V[\x855_\x90\x81R`6` \x90\x81R`@\x91\x82\x90 \x87Q\x81T\x92\x89\x01Q\x93\x89\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x95\x82\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x95\x16\x91\x90\x92\x16\x17\x92\x90\x92\x17\x92\x83\x16\x82\x17\x81U``\x88\x01Q\x93\x9AP\x87\x93\x90\x92\x90\x91\x83\x91`\xFF`\xC0\x1B\x19\x90\x91\x16h\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x90\x91\x16\x17`\x01`\xC0\x1B\x83`\x02\x81\x11\x15a\x19OWa\x19Oa3JV[\x02\x17\x90UPP\x84Q`@Qd\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x91P`\x01`\x01`@\x1B\x03\x8B\x16\x90\x7F\xA9\x1CY\x03<4#\xE1\x8BT\xD0\xAC\xEC\xEB\xB4\x97/\x9E\xA9Z\xED\xF5\xF4\xCA\xE3\xB6w\xB0.\xAF:?\x90_\x90\xA3PPPPP[`\x01\x01a\x17=V[P`\x01`\x01`@\x1B\x03\x80\x84\x16_\x90\x81R`;` R`@\x81 \x80T\x84\x93\x91\x92\x91a\x19\xCF\x91\x85\x91\x16a9\\V[\x92Pa\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UPa\t\x84\x82a&\x94V[_\x81_\x81Q\x81\x10a\x1A\x0FWa\x1A\x0Fa7\xA1V[` \x02` \x01\x01Q\x90P\x91\x90PV[_\x81`\x03\x81Q\x81\x10a\x1A2Wa\x1A2a7\xA1V[` \x02` \x01\x01Q__\x1B\x14\x15\x90P\x91\x90PV[a\x1AR`\x03` a8\0V[a\x1A_` \x83\x01\x83a7_V[\x90P\x14a\x1A\x7FW`@Qc\x13q}\xA9`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1A\xCEa\x1A\x8F` \x83\x01\x83a7_V[\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\x91RP\x86\x92PP\x845\x90P`\x03a(\xC3V[a\x0FQW`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08\x84\x14a\x1B\x0CW`@Qc \x05\x91\xBD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x05a\x1B\x1A`(`\x01a7\xEDV[a\x1B$\x91\x90a7\xEDV[a\x1B/\x90` a8\0V[\x82\x14a\x1BNW`@Qc\x13q}\xA9`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1B\x8A\x86\x86\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847_\x92\x01\x91\x90\x91RPa(\xDA\x92PPPV[\x90P_d\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1B\xA1`(`\x01a7\xEDV[`\x0B\x90\x1B\x17\x90Pa\x1B\xEB\x85\x85\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\x91RP\x8C\x92P\x86\x91P\x85\x90Pa(\xC3V[a\x1C\x08W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPPV[`:T`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x15a\x1CBW`@Qb\xBE\x9B\xC3`\xE8\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`:T`\x01`\x01`@\x1B\x03B\x81\x16\x91\x16\x03a\x1CpW`@Qcg\xDB[\x8B`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`4T_\x90`\x01`\x01`@\x1B\x03\x16a\x1C\x8Cc;\x9A\xCA\0Ga8\xF9V[a\x1C\x96\x91\x90a9\x0CV[\x90P\x81\x80\x15a\x1C\xACWP`\x01`\x01`@\x1B\x03\x81\x16\x15[\x15a\x1C\xCAW`@Qc2\xDE\xA9Y`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`@Q\x80`\xA0\x01`@R\x80a\x1C\xDFBa\x0C\xA7V[\x81R`9Tb\xFF\xFF\xFF\x16` \x82\x01R`\x01`\x01`@\x1B\x03\x80\x85\x16`@\x83\x01R_``\x83\x01\x81\x90R`\x80\x90\x92\x01\x91\x90\x91R`:\x80TB\x90\x92\x16`\x01`@\x1B\x02o\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\x19\x90\x92\x16\x91\x90\x91\x17\x90U\x90Pa\x1DC\x81a&\x94V[\x80Q` \x80\x83\x01Q`@Qb\xFF\xFF\xFF\x90\x91\x16\x81R`\x01`\x01`@\x1B\x03B\x16\x91\x7FWW\x96\x13;\xBE\xD37\xE5\xB3\x9A\xA4\x9A0\xDC%V\xA9\x1E\x0Cl*\xF4\xB7\xB8\x86\xAEw\xEB\xEF\x10v\x91\x01`@Q\x80\x91\x03\x90\xA3PPPV[__a\x1D\xCF\x84\x84\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847_\x92\x01\x91\x90\x91RPa\x19\xFC\x92PPPV[_\x81\x81R`6` \x90\x81R`@\x80\x83 \x81Q`\x80\x81\x01\x83R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x95\x83\x01\x95\x90\x95R`\x01`\x80\x1B\x81\x04\x90\x94\x16\x92\x81\x01\x92\x90\x92R\x93\x94P\x91\x92\x90``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x1E=Wa\x1E=a3JV[`\x02\x81\x11\x15a\x1ENWa\x1ENa3JV[\x90RP\x90P_\x81``\x01Q`\x02\x81\x11\x15a\x1EjWa\x1Eja3JV[\x14a\x1E\x88W`@Qc5\xE0\x9E\x9D`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`@\x1B\x03\x80\x16a\x1E\xCD\x86\x86\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847_\x92\x01\x91\x90\x91RPa+j\x92PPPV[`\x01`\x01`@\x1B\x03\x16\x03a\x1E\xF4W`@Qc\x19X#m`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`@\x1B\x03\x80\x16a\x1F9\x86\x86\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847_\x92\x01\x91\x90\x91RPa+\x8E\x92PPPV[`\x01`\x01`@\x1B\x03\x16\x14a\x1F`W`@Qc.\xAD\xE67`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1Fha#\x15V[a\x1Fq\x90a9\xAAV[a\x1F\xAC\x86\x86\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847_\x92\x01\x91\x90\x91RPa+\xA5\x92PPPV[\x14a\x1F\xCAW`@Qc7r\xDDS`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a \x06\x86\x86\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847_\x92\x01\x91\x90\x91RPa+\xB9\x92PPPV[\x90Pa \x16\x8A\x87\x87\x8B\x8B\x8Ea\x1A\xEBV[`9\x80T\x90_a %\x83a9\xCDV[\x90\x91UPP`:T_\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x15a \\W`:T`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16a iV[`:T`\x01`\x01`@\x1B\x03\x16[`@\x80Q`\x80\x81\x01\x82Rd\xFF\xFF\xFF\xFF\xFF\x8D\x16\x81R`\x01`\x01`@\x1B\x03\x85\x81\x16` \x83\x01R\x83\x16\x91\x81\x01\x91\x90\x91R\x90\x91P``\x81\x01`\x01\x90R_\x85\x81R`6` \x90\x81R`@\x91\x82\x90 \x83Q\x81T\x92\x85\x01Q\x93\x85\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x95\x82\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x95\x16\x91\x90\x92\x16\x17\x92\x90\x92\x17\x92\x83\x16\x82\x17\x81U``\x84\x01Q\x90\x92\x90\x91\x83\x91`\xFF`\xC0\x1B\x19\x90\x91\x16h\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x90\x91\x16\x17`\x01`\xC0\x1B\x83`\x02\x81\x11\x15a!>Wa!>a3JV[\x02\x17\x90UPP`=\x80T\x84\x92P`\x13\x90a!i\x90\x84\x90`\x01`\x98\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16a9\\V[\x92Pa\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UP\x7F-\x08\0\xBB\xC3w\xEAT\xA0\x8C]\xB6\xA8z\xAF\xFF^>\x9C\x8F\xEA\xD0\xED\xA1\x10\xE4\x0E\x0C\x10D\x14I\x8A`@Qa!\xC9\x91\x90d\xFF\xFF\xFF\xFF\xFF\x91\x90\x91\x16\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA1`@\x80Qd\xFF\xFF\xFF\xFF\xFF\x8C\x16\x81R`\x01`\x01`@\x1B\x03\x83\x81\x16` \x83\x01R\x84\x16\x81\x83\x01R\x90Q\x7F\x0E_\xAC\x17[\x83\x17|\xC0G8\x1E\x03\r\x8F\xB3\xB4+7\xBD\x1C\x02^\"\xC2\x80\xFA\xCA\xD6,2\xDF\x91\x81\x90\x03``\x01\x90\xA1a\"8c;\x9A\xCA\0`\x01`\x01`@\x1B\x03\x84\x16a8\0V[\x9B\x9APPPPPPPPPPPV[``_a\"S\x83a+\xD0V[`@\x80Q` \x80\x82R\x81\x83\x01\x90\x92R\x91\x92P_\x91\x90` \x82\x01\x81\x806\x837PPP\x91\x82RP` \x81\x01\x92\x90\x92RP\x90V[_\x81Q`0\x14a\"\xA7W`@QcO\x8829`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q`\x02\x90a\"\xBD\x90\x84\x90_\x90` \x01a9\xE5V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\"\xD7\x91a8*V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a\"\xF2W=__>=_\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\xA1\x91\x90a8EV[`@\x80Q`\x01`\xF8\x1B` \x82\x01R_`!\x82\x01R0``\x90\x81\x1Bk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`,\x83\x01R\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x90V[\x80G\x10\x15a#\xA9W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: insufficient balance\0\0\0`D\x82\x01R`d\x01a\x13XV[_\x82`\x01`\x01`\xA0\x1B\x03\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a#\xF2W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a#\xF7V[``\x91P[PP\x90P\x80a\x12\xBDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FAddress: unable to send value, r`D\x82\x01R\x7Fecipient may have reverted\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x13XV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x84\x16`$\x82\x01R`D\x80\x82\x01\x84\x90R\x82Q\x80\x83\x03\x90\x91\x01\x81R`d\x90\x91\x01\x90\x91R` \x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\xA9\x05\x9C\xBB`\xE0\x1B\x17\x90Ra\x12\xBD\x90\x84\x90a+\xF7V[a$\xCC`\x05`\x03a7\xEDV[a$\xD7\x90` a8\0V[a$\xE4` \x83\x01\x83a7_V[\x90P\x14a%\x04W`@Qc\x13q}\xA9`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`la%Ta%\x16` \x84\x01\x84a7_V[\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\x91RP\x87\x92PP\x855\x90P\x84a(\xC3V[a\x12\xBDW`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x83Q` \x85\x01Q\x90_\x90\x81\x90\x81a%\x89\x87\x83\x88a,\xCAV[\x90P\x84`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14a&\x03Wa%\xAE\x85\x82a:\x13V[`@\x80Qd\xFF\xFF\xFF\xFF\xFF\x85\x16\x81R`\x01`\x01`@\x1B\x03\x8B\x81\x16` \x83\x01R\x84\x16\x81\x83\x01R\x90Q\x91\x95P\x7F\x0E_\xAC\x17[\x83\x17|\xC0G8\x1E\x03\r\x8F\xB3\xB4+7\xBD\x1C\x02^\"\xC2\x80\xFA\xCA\xD6,2\xDF\x91\x90\x81\x90\x03``\x01\x90\xA1[`\x01`\x01`@\x1B\x03\x80\x82\x16` \x8B\x01\x81\x90R\x90\x89\x16`@\x8B\x01R_\x03a&\x88W`9\x80T\x90_a&2\x83a:BV[\x90\x91UPP`\x02``\x8A\x01Ra&G\x84a:WV[\x92P\x81d\xFF\xFF\xFF\xFF\xFF\x16\x88`\x01`\x01`@\x1B\x03\x16\x7F*\x026\x1F\xFAf\xCF,-\xA4h,#U\xA6\xAD\xCA\xA9\xF6\xC2'\xB6\xE6V>hH\x0F\x95\x87bj`@Q`@Q\x80\x91\x03\x90\xA3[PP\x94P\x94P\x94\x91PPV[` \x81\x01Qb\xFF\xFF\xFF\x16\x15a'4W\x80Q`<U` \x81\x01Q`=\x80T`@\x84\x01Q``\x85\x01Q`\x80\x90\x95\x01Qb\xFF\xFF\xFF\x90\x94\x16j\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x92\x16\x91\x90\x91\x17c\x01\0\0\0`\x01`\x01`@\x1B\x03\x92\x83\x16\x02\x17o\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`X\x1B\x19\x16`\x01`X\x1B\x94\x82\x16\x94\x90\x94\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x98\x1B\x19\x16\x93\x90\x93\x17`\x01`\x98\x1B\x93\x90\x92\x16\x92\x90\x92\x02\x17\x90UV[`\x80\x81\x01Q`4T_\x91a'P\x91`\x01`\x01`@\x1B\x03\x16a9\\V[\x90P_\x82``\x01Q\x83`@\x01Qa'g\x91\x90a9{V[`@\x84\x01Q`4\x80T\x92\x93P\x90\x91_\x90a'\x8B\x90\x84\x90`\x01`\x01`@\x1B\x03\x16a9\\V[\x82Ta\x01\0\x92\x90\x92\n`\x01`\x01`@\x1B\x03\x81\x81\x02\x19\x90\x93\x16\x91\x83\x16\x02\x17\x90\x91U`:\x80T`\x01`@\x1B\x81\x04\x83\x16`\x01`\x01`\x80\x1B\x03\x19\x90\x91\x16\x17\x90U_\x91Pa'\xDB\x90c;\x9A\xCA\0\x90\x85\x16a8\0V[\x90P_a'\xF0c;\x9A\xCA\0`\x07\x85\x90\x0Ba:|V[`:T`@Q\x82\x81R\x91\x92P`\x01`\x01`@\x1B\x03\x16\x90\x7FRT\x08\xC2\x01\xBC\x15v\xEBD\x11odx\xF1\xC2\xA5Gu\xB1\x9A\x04;\xCF\xDCp\x83d\xF7O\x8ED\x90` \x01`@Q\x80\x91\x03\x90\xA2`3T`@Qc\xA1\xCAx\x0B`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R`$\x81\x01\x84\x90R`D\x81\x01\x83\x90R\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\x90\x91\x16\x90c\xA1\xCAx\x0B\x90`d\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a(\xA6W__\xFD[PZ\xF1\x15\x80\x15a(\xB8W=__>=_\xFD[PPPPPPPPPV[_\x83a(\xD0\x86\x85\x85a-\xA8V[\x14\x95\x94PPPPPV[__`\x02\x83Qa(\xEA\x91\x90a8\xF9V[\x90P_\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a)\x05Wa)\x05a4\xF6V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a).W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x82\x81\x10\x15a*(W`\x02\x85a)H\x83\x83a8\0V[\x81Q\x81\x10a)XWa)Xa7\xA1V[` \x02` \x01\x01Q\x86\x83`\x02a)n\x91\x90a8\0V[a)y\x90`\x01a7\xEDV[\x81Q\x81\x10a)\x89Wa)\x89a7\xA1V[` \x02` \x01\x01Q`@Q` \x01a)\xAB\x92\x91\x90\x91\x82R` \x82\x01R`@\x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra)\xC5\x91a8*V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a)\xE0W=__>=_\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a*\x03\x91\x90a8EV[\x82\x82\x81Q\x81\x10a*\x15Wa*\x15a7\xA1V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a)3V[Pa*4`\x02\x83a8\xF9V[\x91P[\x81\x15a+GW_[\x82\x81\x10\x15a+4W`\x02\x82a*T\x83\x83a8\0V[\x81Q\x81\x10a*dWa*da7\xA1V[` \x02` \x01\x01Q\x83\x83`\x02a*z\x91\x90a8\0V[a*\x85\x90`\x01a7\xEDV[\x81Q\x81\x10a*\x95Wa*\x95a7\xA1V[` \x02` \x01\x01Q`@Q` \x01a*\xB7\x92\x91\x90\x91\x82R` \x82\x01R`@\x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra*\xD1\x91a8*V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a*\xECW=__>=_\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a+\x0F\x91\x90a8EV[\x82\x82\x81Q\x81\x10a+!Wa+!a7\xA1V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a*?V[Pa+@`\x02\x83a8\xF9V[\x91Pa*7V[\x80_\x81Q\x81\x10a+YWa+Ya7\xA1V[` \x02` \x01\x01Q\x92PPP\x91\x90PV[_a\x0C\xA1\x82`\x05\x81Q\x81\x10a+\x81Wa+\x81a7\xA1V[` \x02` \x01\x01Qa.|V[_a\x0C\xA1\x82`\x06\x81Q\x81\x10a+\x81Wa+\x81a7\xA1V[_\x81`\x01\x81Q\x81\x10a\x1A\x0FWa\x1A\x0Fa7\xA1V[_a\x0C\xA1\x82`\x02\x81Q\x81\x10a+\x81Wa+\x81a7\xA1V[_`\xFF\x82\x16`\x1F\x81\x11\x15a\x0C\xA1W`@Qc,\xD4J\xC3`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a,K\x82`@Q\x80`@\x01`@R\x80` \x81R` \x01\x7FSafeERC20: low-level call failed\x81RP\x85`\x01`\x01`\xA0\x1B\x03\x16a.\xE3\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x90P\x80Q_\x14\x80a,kWP\x80\x80` \x01\x90Q\x81\x01\x90a,k\x91\x90a6\xFFV[a\x12\xBDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`*`$\x82\x01R\x7FSafeERC20: ERC20 operation did n`D\x82\x01Ri\x1B\xDD\x08\x1C\xDDX\xD8\xD9YY`\xB2\x1B`d\x82\x01R`\x84\x01a\x13XV[_a,\xD7`&`\x01a7\xEDV[a,\xE2\x90` a8\0V[a,\xEF`@\x84\x01\x84a7_V[\x90P\x14a-\x0FW`@Qc\x13q}\xA9`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a-\x1B`\x04\x85a:\xABV[d\xFF\xFF\xFF\xFF\xFF\x16\x90Pa-ta-4`@\x85\x01\x85a7_V[\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\x91RP\x89\x92PPP` \x86\x015\x84a(\xC3V[a-\x91W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a-\x9F\x83` \x015\x85a.\xF1V[\x95\x94PPPPPV[_\x83Q_\x14\x15\x80\x15a-\xC5WP` \x84Qa-\xC3\x91\x90a:\xD4V[\x15[a-\xE2W`@Qc\x13q}\xA9`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q` \x80\x82\x01\x90\x92R\x84\x81R\x90[\x85Q\x81\x11a.rWa.\x06`\x02\x85a:\xD4V[_\x03a.8W\x81Q_R\x80\x86\x01Q` R` \x82`@_`\x02a\x07\xD0Z\x03\xFAa.-W__\xFD[`\x02\x84\x04\x93Pa.`V[\x80\x86\x01Q_R\x81Q` R` \x82`@_`\x02a\x07\xD0Z\x03\xFAa.YW__\xFD[`\x02\x84\x04\x93P[a.k` \x82a7\xEDV[\x90Pa-\xF3V[PQ\x94\x93PPPPV[`\xF8\x81\x90\x1C`\xE8\x82\x90\x1Ca\xFF\0\x16\x17`\xD8\x82\x90\x1Cb\xFF\0\0\x16\x17`\xC8\x82\x90\x1Cc\xFF\0\0\0\x16\x17d\xFF\0\0\0\0`\xB8\x83\x90\x1C\x16\x17e\xFF\0\0\0\0\0`\xA8\x83\x90\x1C\x16\x17f\xFF\0\0\0\0\0\0`\x98\x83\x90\x1C\x16\x17g\xFF\0\0\0\0\0\0\0`\x88\x92\x90\x92\x1C\x91\x90\x91\x16\x17\x90V[``a\r\xAD\x84\x84_\x85a/\x1DV[_\x80a.\xFE`\x04\x84a:\xE7V[a/\t\x90`@a;\x10V[d\xFF\xFF\xFF\xFF\xFF\x16\x90Pa\r\xAD\x84\x82\x1Ba.|V[``\x82G\x10\x15a/~W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FAddress: insufficient balance fo`D\x82\x01Re\x1C\x88\x18\xD8[\x1B`\xD2\x1B`d\x82\x01R`\x84\x01a\x13XV[__\x86`\x01`\x01`\xA0\x1B\x03\x16\x85\x87`@Qa/\x99\x91\x90a8*V[_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a/\xD3W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a/\xD8V[``\x91P[P\x91P\x91Pa/\xE9\x87\x83\x83\x87a/\xF4V[\x97\x96PPPPPPPV[``\x83\x15a0bW\x82Q_\x03a0[W`\x01`\x01`\xA0\x1B\x03\x85\x16;a0[W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: call to non-contract\0\0\0`D\x82\x01R`d\x01a\x13XV[P\x81a\r\xADV[a\r\xAD\x83\x83\x81Q\x15a0wW\x81Q\x80\x83` \x01\xFD[\x80`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x13X\x91\x90a2\xBDV[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a0\xA7W__\xFD[\x91\x90PV[_`@\x82\x84\x03\x12\x15a0\xBCW__\xFD[P\x91\x90PV[___``\x84\x86\x03\x12\x15a0\xD4W__\xFD[a0\xDD\x84a0\x91V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\xF7W__\xFD[a1\x03\x86\x82\x87\x01a0\xACV[\x92PP`@\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\x1EW__\xFD[a1*\x86\x82\x87\x01a0\xACV[\x91PP\x92P\x92P\x92V[__\x83`\x1F\x84\x01\x12a1DW__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a1ZW__\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a1tW__\xFD[\x92P\x92\x90PV[________`\xA0\x89\x8B\x03\x12\x15a1\x92W__\xFD[a1\x9B\x89a0\x91V[\x97P` \x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xB5W__\xFD[a1\xC1\x8B\x82\x8C\x01a0\xACV[\x97PP`@\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xDCW__\xFD[a1\xE8\x8B\x82\x8C\x01a14V[\x90\x97P\x95PP``\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x06W__\xFD[a2\x12\x8B\x82\x8C\x01a14V[\x90\x95P\x93PP`\x80\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a20W__\xFD[a2<\x8B\x82\x8C\x01a14V[\x99\x9C\x98\x9BP\x96\x99P\x94\x97\x93\x96\x92\x95\x94PPPV[_` \x82\x84\x03\x12\x15a2`W__\xFD[a2i\x82a0\x91V[\x93\x92PPPV[_[\x83\x81\x10\x15a2\x8AW\x81\x81\x01Q\x83\x82\x01R` \x01a2rV[PP_\x91\x01RV[_\x81Q\x80\x84Ra2\xA9\x81` \x86\x01` \x86\x01a2pV[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x81R_a2i` \x83\x01\x84a2\x92V[__\x83`\x1F\x84\x01\x12a2\xDFW__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a2\xF5W__\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a1tW__\xFD[__` \x83\x85\x03\x12\x15a3\x1DW__\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a32W__\xFD[a3>\x85\x82\x86\x01a2\xCFV[\x90\x96\x90\x95P\x93PPPPV[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[`\x03\x81\x10a3zWcNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x90RV[` \x81\x01a\x0C\xA1\x82\x84a3^V[_` \x82\x84\x03\x12\x15a3\x9CW__\xFD[P5\x91\x90PV[_`\x80\x82\x01\x90P`\x01`\x01`@\x1B\x03\x83Q\x16\x82R`\x01`\x01`@\x1B\x03` \x84\x01Q\x16` \x83\x01R`\x01`\x01`@\x1B\x03`@\x84\x01Q\x16`@\x83\x01R``\x83\x01Qa3\xEF``\x84\x01\x82a3^V[P\x92\x91PPV[\x80\x15\x15\x81\x14a4\x03W__\xFD[PV[_` \x82\x84\x03\x12\x15a4\x16W__\xFD[\x815a2i\x81a3\xF6V[_____``\x86\x88\x03\x12\x15a45W__\xFD[\x855`\x01`\x01`@\x1B\x03\x81\x11\x15a4JW__\xFD[a4V\x88\x82\x89\x01a2\xCFV[\x90\x96P\x94PP` \x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a4tW__\xFD[a4\x80\x88\x82\x89\x01a2\xCFV[\x96\x99\x95\x98P\x96`@\x015\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a4\x03W__\xFD[\x805a0\xA7\x81a4\x92V[__`@\x83\x85\x03\x12\x15a4\xC2W__\xFD[\x825a4\xCD\x81a4\x92V[\x94` \x93\x90\x93\x015\x93PPPV[_` \x82\x84\x03\x12\x15a4\xEBW__\xFD[\x815a2i\x81a4\x92V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a52Wa52a4\xF6V[`@R\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x11\x15a5RWa5Ra4\xF6V[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a5kW__\xFD[\x815a5~a5y\x82a5:V[a5\nV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a5\x9FW__\xFD[` \x85\x01[\x83\x81\x10\x15a5\xBCW\x805\x83R` \x92\x83\x01\x92\x01a5\xA4V[P\x95\x94PPPPPV[___``\x84\x86\x03\x12\x15a5\xD8W__\xFD[\x835`\x01`\x01`@\x1B\x03\x81\x11\x15a5\xEDW__\xFD[\x84\x01`\x1F\x81\x01\x86\x13a5\xFDW__\xFD[\x805a6\x0Ba5y\x82a5:V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x88\x83\x11\x15a6,W__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a6WW\x835a6F\x81a4\x92V[\x82R` \x93\x84\x01\x93\x90\x91\x01\x90a63V[\x95PPPP` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a6tW__\xFD[a6\x80\x86\x82\x87\x01a5\\V[\x92PPa6\x8F`@\x85\x01a4\xA6V[\x90P\x92P\x92P\x92V[___`@\x84\x86\x03\x12\x15a6\xAAW__\xFD[\x835`\x01`\x01`@\x1B\x03\x81\x11\x15a6\xBFW__\xFD[a6\xCB\x86\x82\x87\x01a0\xACV[\x93PP` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a6\xE6W__\xFD[a6\xF2\x86\x82\x87\x01a14V[\x94\x97\x90\x96P\x93\x94PPPPV[_` \x82\x84\x03\x12\x15a7\x0FW__\xFD[\x81Qa2i\x81a3\xF6V[__\x835`\x1E\x19\x846\x03\x01\x81\x12a7/W__\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15a7HW__\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15a1tW__\xFD[__\x835`\x1E\x19\x846\x03\x01\x81\x12a7tW__\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15a7\x8DW__\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a1tW__\xFD[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_` \x82\x84\x03\x12\x15a7\xC5W__\xFD[\x815d\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a2iW__\xFD[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x0C\xA1Wa\x0C\xA1a7\xD9V[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x0C\xA1Wa\x0C\xA1a7\xD9V[\x81\x81\x03\x81\x81\x11\x15a\x0C\xA1Wa\x0C\xA1a7\xD9V[_\x82Qa8;\x81\x84` \x87\x01a2pV[\x91\x90\x91\x01\x92\x91PPV[_` \x82\x84\x03\x12\x15a8UW__\xFD[PQ\x91\x90PV[\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[`\x80\x81R_a8\x97`\x80\x83\x01\x88\x8Aa8\\V[\x82\x81\x03` \x84\x01Ra8\xA9\x81\x88a2\x92V[\x90P\x82\x81\x03`@\x84\x01Ra8\xBE\x81\x86\x88a8\\V[\x91PP\x82``\x83\x01R\x97\x96PPPPPPPV[` \x81R_a\r\xAD` \x83\x01\x84\x86a8\\V[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_\x82a9\x07Wa9\x07a8\xE5V[P\x04\x90V[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x0C\xA1Wa\x0C\xA1a7\xD9V[_\x825`^\x19\x836\x03\x01\x81\x12a8;W__\xFD[_b\xFF\xFF\xFF\x82\x16\x80a9SWa9Sa7\xD9V[_\x19\x01\x92\x91PPV[`\x01`\x01`@\x1B\x03\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\x0C\xA1Wa\x0C\xA1a7\xD9V[`\x07\x81\x81\x0B\x90\x83\x90\x0B\x01g\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x13g\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x82\x12\x17\x15a\x0C\xA1Wa\x0C\xA1a7\xD9V[\x80Q` \x80\x83\x01Q\x91\x90\x81\x10\x15a0\xBCW_\x19` \x91\x90\x91\x03`\x03\x1B\x1B\x16\x91\x90PV[_`\x01\x82\x01a9\xDEWa9\xDEa7\xD9V[P`\x01\x01\x90V[_\x83Qa9\xF6\x81\x84` \x88\x01a2pV[`\x01`\x01`\x80\x1B\x03\x19\x93\x90\x93\x16\x91\x90\x92\x01\x90\x81R`\x10\x01\x92\x91PPV[`\x07\x82\x81\x0B\x90\x82\x90\x0B\x03g\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x81\x12g\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x13\x17\x15a\x0C\xA1Wa\x0C\xA1a7\xD9V[_\x81a:PWa:Pa7\xD9V[P_\x19\x01\x90V[_\x81`\x07\x0Bg\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x81\x03a:tWa:ta7\xD9V[_\x03\x92\x91PPV[\x80\x82\x02_\x82\x12`\x01`\xFF\x1B\x84\x14\x16\x15a:\x97Wa:\x97a7\xD9V[\x81\x81\x05\x83\x14\x82\x15\x17a\x0C\xA1Wa\x0C\xA1a7\xD9V[_d\xFF\xFF\xFF\xFF\xFF\x83\x16\x80a:\xC1Wa:\xC1a8\xE5V[\x80d\xFF\xFF\xFF\xFF\xFF\x84\x16\x04\x91PP\x92\x91PPV[_\x82a:\xE2Wa:\xE2a8\xE5V[P\x06\x90V[_d\xFF\xFF\xFF\xFF\xFF\x83\x16\x80a:\xFDWa:\xFDa8\xE5V[\x80d\xFF\xFF\xFF\xFF\xFF\x84\x16\x06\x91PP\x92\x91PPV[d\xFF\xFF\xFF\xFF\xFF\x81\x81\x16\x83\x82\x16\x02\x90\x81\x16\x90\x81\x81\x14a3\xEFWa3\xEFa7\xD9V\xFE\xA2dipfsX\"\x12 /\xAC\x89\xBEC<\x92;\x9C\xA0A\r*X\x98\nm\x12\x855\xCE\xBF\xE8\x19\x1E\xB7/:\x8B\xE3w\xFBdsolcC\0\x08\x1B\x003",
3031    );
3032    /// The runtime bytecode of the contract, as deployed on the network.
3033    ///
3034    /// ```text
3035    ///0x60806040526004361061017e575f3560e01c80636fcd0e53116100cd578063c490744211610087578063dda3346c11610062578063dda3346c146105d1578063ee94d67c146105f0578063f074ba621461060f578063f28824611461062e575f5ffd5b8063c490744214610574578063c4d66de814610593578063d06d5587146105b2575f5ffd5b80636fcd0e531461048f5780637439841f146104bb57806374cdd798146104f057806388676cad146105235780639b4e463414610542578063b522538a14610555575f5ffd5b80634665bcda1161013857806354fd4d501161011357806354fd4d5014610404578063587533571461042557806358eaee79146104445780636c0d2d5a14610470575f5ffd5b80634665bcda146102b257806347d28372146102e557806352396a59146103d0575f5ffd5b8063039157d2146101bc5780630b18ff66146101dd5780632340e8d3146102195780633474aa161461023c5780633f65cf191461026d57806342ecff2a1461028c575f5ffd5b366101b8576040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b5f5ffd5b3480156101c7575f5ffd5b506101db6101d63660046130c2565b610661565b005b3480156101e8575f5ffd5b506033546101fc906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b348015610224575f5ffd5b5061022e60395481565b604051908152602001610210565b348015610247575f5ffd5b506034546001600160401b03165b6040516001600160401b039091168152602001610210565b348015610278575f5ffd5b506101db61028736600461317b565b61098d565b348015610297575f5ffd5b50603a5461025590600160401b90046001600160401b031681565b3480156102bd575f5ffd5b506101fc7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102f0575f5ffd5b506103756040805160a0810182525f80825260208201819052918101829052606081018290526080810191909152506040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b9004909116608082015290565b60405161021091905f60a0820190508251825262ffffff60208401511660208301526001600160401b036040840151166040830152606083015160070b60608301526001600160401b03608084015116608083015292915050565b3480156103db575f5ffd5b506102556103ea366004613250565b603b6020525f90815260409020546001600160401b031681565b34801561040f575f5ffd5b50610418610c15565b60405161021091906132bd565b348015610430575f5ffd5b50603e546101fc906001600160a01b031681565b34801561044f575f5ffd5b5061046361045e36600461330c565b610c45565b604051610210919061337e565b34801561047b575f5ffd5b5061022e61048a366004613250565b610ca7565b34801561049a575f5ffd5b506104ae6104a936600461338c565b610db5565b60405161021091906133a3565b3480156104c6575f5ffd5b506104636104d536600461338c565b5f90815260366020526040902054600160c01b900460ff1690565b3480156104fb575f5ffd5b506101fc7f000000000000000000000000000000000000000000000000000000000000000081565b34801561052e575f5ffd5b506101db61053d366004613406565b610e60565b6101db610550366004613421565b610f55565b348015610560575f5ffd5b506104ae61056f36600461330c565b61109c565b34801561057f575f5ffd5b506101db61058e3660046134b1565b61118b565b34801561059e575f5ffd5b506101db6105ad3660046134db565b6112c2565b3480156105bd575f5ffd5b506101db6105cc3660046134db565b61140c565b3480156105dc575f5ffd5b506101db6105eb3660046135c6565b6114a0565b3480156105fb575f5ffd5b50603a54610255906001600160401b031681565b34801561061a575f5ffd5b506101db610629366004613698565b6115ff565b348015610639575f5ffd5b506102557f000000000000000000000000000000000000000000000000000000000000000081565b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa1580156106c7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106eb91906136ff565b156107095760405163840a48d560e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600860048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561076f573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061079391906136ff565b156107b15760405163840a48d560e01b815260040160405180910390fd5b5f6107f56107bf858061371a565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506119fc92505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156108635761086361334a565b60028111156108745761087461334a565b81525050905080604001516001600160401b0316876001600160401b0316116108b0576040516337e07ffd60e01b815260040160405180910390fd5b6001816060015160028111156108c8576108c861334a565b146108e65760405163d49e19a760e01b815260040160405180910390fd5b6109296108f3868061371a565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a1e92505050565b6109465760405163161ce5ed60e31b815260040160405180910390fd5b61095861095288610ca7565b87611a46565b61097b8635610967878061371a565b61097460208a018a61375f565b8651611aeb565b6109845f611c12565b50505050505050565b6033546001600160a01b03163314806109b05750603e546001600160a01b031633145b6109cd5760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600260048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610a33573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a5791906136ff565b15610a755760405163840a48d560e01b815260040160405180910390fd5b8584148015610a8357508382145b610aa0576040516343714afd60e01b815260040160405180910390fd5b603a546001600160401b03600160401b9091048116908a1611610ad6576040516337e07ffd60e01b815260040160405180910390fd5b610ae8610ae28a610ca7565b89611a46565b5f805b87811015610b8057610b6c8a358a8a84818110610b0a57610b0a6137a1565b9050602002016020810190610b1f91906137b5565b898985818110610b3157610b316137a1565b9050602002810190610b43919061375f565b898987818110610b5557610b556137a1565b9050602002810190610b67919061371a565b611d92565b610b7690836137ed565b9150600101610aeb565b5060335460405163a1ca780b60e01b81526001600160a01b0391821660048201525f6024820152604481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063a1ca780b906064015f604051808303815f87803b158015610bf3575f5ffd5b505af1158015610c05573d5f5f3e3d5ffd5b5050505050505050505050505050565b6060610c407f0000000000000000000000000000000000000000000000000000000000000000612247565b905090565b5f5f610c8584848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061228492505050565b5f90815260366020526040902054600160c01b900460ff169150505b92915050565b5f610cb5611fff600c613800565b610cc86001600160401b03841642613817565b10610ce657604051637944e66d60e11b815260040160405180910390fd5b604080516001600160401b03841660208201525f918291720f3df6d732807ef1319fb7b8bb8522d0beac02910160408051601f1981840301815290829052610d2d9161382a565b5f60405180830381855afa9150503d805f8114610d65576040519150601f19603f3d011682016040523d82523d5f602084013e610d6a565b606091505b5091509150818015610d7c57505f8151115b610d995760405163558ad0a360e01b815260040160405180910390fd5b80806020019051810190610dad9190613845565b949350505050565b610ddc604080516080810182525f8082526020820181905291810182905290606082015290565b5f82815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff166002811115610e4657610e4661334a565b6002811115610e5757610e5761334a565b90525092915050565b6033546001600160a01b0316331480610e835750603e546001600160a01b031633145b610ea05760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610f06573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f2a91906136ff565b15610f485760405163840a48d560e01b815260040160405180910390fd5b610f5182611c12565b5050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f9e57604051633213a66160e21b815260040160405180910390fd5b346801bc16d674ec80000014610fc75760405163049696b360e31b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663228951186801bc16d674ec800000878761100a612315565b8888886040518863ffffffff1660e01b815260040161102e96959493929190613884565b5f604051808303818588803b158015611045575f5ffd5b505af1158015611057573d5f5f3e3d5ffd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e23858560405161108d9291906138d2565b60405180910390a15050505050565b6110c3604080516080810182525f8082526020820181905291810182905290606082015290565b60365f61110485858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061228492505050565b815260208082019290925260409081015f20815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff1660028111156111705761117061334a565b60028111156111815761118161334a565b9052509392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111d457604051633213a66160e21b815260040160405180910390fd5b5f6111e3633b9aca00836138f9565b90506111fc633b9aca006001600160401b038316613800565b6034549092506001600160401b03908116908216111561122f576040516302c6f54760e21b815260040160405180910390fd5b603480548291905f9061124c9084906001600160401b031661390c565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e836040516112ab91815260200190565b60405180910390a26112bd8383612359565b505050565b5f54610100900460ff16158080156112e057505f54600160ff909116105b806112f95750303b1580156112f957505f5460ff166001145b6113615760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015611382575f805461ff0019166101001790555b6001600160a01b0382166113a9576040516339b190bb60e11b815260040160405180910390fd5b603380546001600160a01b0319166001600160a01b0384161790558015610f51575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6033546001600160a01b031633146114375760405163719f370360e11b815260040160405180910390fd5b603e54604080516001600160a01b03928316815291831660208301527ffb8129080a19d34dceac04ba253fc50304dc86c729bd63cdca4a969ad19a5eac910160405180910390a1603e80546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146114cb5760405163719f370360e11b815260040160405180910390fd5b604051635ac86ab760e01b8152600560048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611531573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061155591906136ff565b156115735760405163840a48d560e01b815260040160405180910390fd5b8251845114611595576040516343714afd60e01b815260040160405180910390fd5b5f5b84518110156115f8576115f0838583815181106115b6576115b66137a1565b60200260200101518784815181106115d0576115d06137a1565b60200260200101516001600160a01b031661246e9092919063ffffffff16565b600101611597565b5050505050565b604051635ac86ab760e01b8152600760048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611665573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061168991906136ff565b156116a75760405163840a48d560e01b815260040160405180910390fd5b603a54600160401b90046001600160401b03165f8190036116db57604051631a544f4960e01b815260040160405180910390fd5b6040805160a081018252603c54808252603d5462ffffff811660208401526001600160401b0363010000008204811694840194909452600160581b810460070b6060840152600160981b900490921660808201529061173a90876124c0565b5f805b858110156119a35736878783818110611758576117586137a1565b905060200281019061176a919061392b565b80355f908152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156117da576117da61334a565b60028111156117eb576117eb61334a565b90525090506001816060015160028111156118085761180861334a565b1461181457505061199b565b856001600160401b031681604001516001600160401b03161061183857505061199b565b5f8080611848848a8f3588612571565b60208b018051939650919450925061185f8261393f565b62ffffff1690525060808801805184919061187b90839061395c565b6001600160401b031690525060608801805183919061189b90839061397b565b60070b9052506118ab818861395c565b85355f908152603660209081526040918290208751815492890151938901516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060880151939a50879390929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b83600281111561194f5761194f61334a565b021790555050845160405164ffffffffff90911691506001600160401b038b16907fa91c59033c3423e18b54d0acecebb4972f9ea95aedf5f4cae3b677b02eaf3a3f905f90a350505050505b60010161173d565b506001600160401b038084165f908152603b60205260408120805484939192916119cf9185911661395c565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555061098482612694565b5f815f81518110611a0f57611a0f6137a1565b60200260200101519050919050565b5f81600381518110611a3257611a326137a1565b60200260200101515f5f1b14159050919050565b611a5260036020613800565b611a5f602083018361375f565b905014611a7f576040516313717da960e21b815260040160405180910390fd5b611ace611a8f602083018361375f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250869250508435905060036128c3565b610f51576040516309bde33960e01b815260040160405180910390fd5b60088414611b0c5760405163200591bd60e01b815260040160405180910390fd5b6005611b1a602860016137ed565b611b2491906137ed565b611b2f906020613800565b8214611b4e576040516313717da960e21b815260040160405180910390fd5b5f611b8a8686808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506128da92505050565b90505f64ffffffffff8316611ba1602860016137ed565b600b901b179050611beb85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508c92508691508590506128c3565b611c08576040516309bde33960e01b815260040160405180910390fd5b5050505050505050565b603a54600160401b90046001600160401b031615611c425760405162be9bc360e81b815260040160405180910390fd5b603a546001600160401b03428116911603611c70576040516367db5b8b60e01b815260040160405180910390fd5b6034545f906001600160401b0316611c8c633b9aca00476138f9565b611c96919061390c565b9050818015611cac57506001600160401b038116155b15611cca576040516332dea95960e21b815260040160405180910390fd5b5f6040518060a00160405280611cdf42610ca7565b815260395462ffffff1660208201526001600160401b0380851660408301525f60608301819052608090920191909152603a805442909216600160401b026fffffffffffffffff0000000000000000199092169190911790559050611d4381612694565b805160208083015160405162ffffff90911681526001600160401b034216917f575796133bbed337e5b39aa49a30dc2556a91e0c6c2af4b7b886ae77ebef1076910160405180910390a3505050565b5f5f611dcf8484808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506119fc92505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115611e3d57611e3d61334a565b6002811115611e4e57611e4e61334a565b90525090505f81606001516002811115611e6a57611e6a61334a565b14611e88576040516335e09e9d60e01b815260040160405180910390fd5b6001600160401b038016611ecd8686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612b6a92505050565b6001600160401b031603611ef457604051631958236d60e21b815260040160405180910390fd5b6001600160401b038016611f398686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612b8e92505050565b6001600160401b031614611f6057604051632eade63760e01b815260040160405180910390fd5b611f68612315565b611f71906139aa565b611fac8686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612ba592505050565b14611fca57604051633772dd5360e11b815260040160405180910390fd5b5f6120068686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612bb992505050565b90506120168a87878b8b8e611aeb565b60398054905f612025836139cd565b9091555050603a545f90600160401b90046001600160401b03161561205c57603a54600160401b90046001600160401b0316612069565b603a546001600160401b03165b6040805160808101825264ffffffffff8d1681526001600160401b03858116602083015283169181019190915290915060608101600190525f858152603660209081526040918290208351815492850151938501516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b031990951691909216179290921792831682178155606084015190929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b83600281111561213e5761213e61334a565b021790555050603d8054849250601390612169908490600160981b90046001600160401b031661395c565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c104414498a6040516121c9919064ffffffffff91909116815260200190565b60405180910390a16040805164ffffffffff8c1681526001600160401b03838116602083015284168183015290517f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df9181900360600190a1612238633b9aca006001600160401b038416613800565b9b9a5050505050505050505050565b60605f61225383612bd0565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f81516030146122a757604051634f88323960e11b815260040160405180910390fd5b6040516002906122bd9084905f906020016139e5565b60408051601f19818403018152908290526122d79161382a565b602060405180830381855afa1580156122f2573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610ca19190613845565b60408051600160f81b60208201525f602182015230606090811b6bffffffffffffffffffffffff1916602c8301529101604051602081830303815290604052905090565b804710156123a95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401611358565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f81146123f2576040519150601f19603f3d011682016040523d82523d5f602084013e6123f7565b606091505b50509050806112bd5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401611358565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112bd908490612bf7565b6124cc600560036137ed565b6124d7906020613800565b6124e4602083018361375f565b905014612504576040516313717da960e21b815260040160405180910390fd5b606c612554612516602084018461375f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508792505085359050846128c3565b6112bd576040516309bde33960e01b815260040160405180910390fd5b83516020850151905f90819081612589878388612cca565b9050846001600160401b0316816001600160401b031614612603576125ae8582613a13565b6040805164ffffffffff851681526001600160401b038b8116602083015284168183015290519195507f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df919081900360600190a15b6001600160401b0380821660208b0181905290891660408b01525f036126885760398054905f61263283613a42565b9091555050600260608a015261264784613a57565b92508164ffffffffff16886001600160401b03167f2a02361ffa66cf2c2da4682c2355a6adcaa9f6c227b6e6563e68480f9587626a60405160405180910390a35b50509450945094915050565b602081015162ffffff1615612734578051603c556020810151603d80546040840151606085015160809095015162ffffff9094166affffffffffffffffffffff199092169190911763010000006001600160401b0392831602176fffffffffffffffffffffffffffffffff60581b1916600160581b9482169490940267ffffffffffffffff60981b191693909317600160981b9390921692909202179055565b60808101516034545f91612750916001600160401b031661395c565b90505f82606001518360400151612767919061397b565b60408401516034805492935090915f9061278b9084906001600160401b031661395c565b82546101009290920a6001600160401b03818102199093169183160217909155603a8054600160401b810483166001600160801b03199091161790555f91506127db90633b9aca00908516613800565b90505f6127f0633b9aca00600785900b613a7c565b603a546040518281529192506001600160401b0316907f525408c201bc1576eb44116f6478f1c2a54775b19a043bcfdc708364f74f8e449060200160405180910390a260335460405163a1ca780b60e01b81526001600160a01b03918216600482015260248101849052604481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063a1ca780b906064015f604051808303815f87803b1580156128a6575f5ffd5b505af11580156128b8573d5f5f3e3d5ffd5b505050505050505050565b5f836128d0868585612da8565b1495945050505050565b5f5f600283516128ea91906138f9565b90505f816001600160401b03811115612905576129056134f6565b60405190808252806020026020018201604052801561292e578160200160208202803683370190505b5090505f5b82811015612a28576002856129488383613800565b81518110612958576129586137a1565b60200260200101518683600261296e9190613800565b6129799060016137ed565b81518110612989576129896137a1565b60200260200101516040516020016129ab929190918252602082015260400190565b60408051601f19818403018152908290526129c59161382a565b602060405180830381855afa1580156129e0573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190612a039190613845565b828281518110612a1557612a156137a1565b6020908102919091010152600101612933565b50612a346002836138f9565b91505b8115612b47575f5b82811015612b3457600282612a548383613800565b81518110612a6457612a646137a1565b602002602001015183836002612a7a9190613800565b612a859060016137ed565b81518110612a9557612a956137a1565b6020026020010151604051602001612ab7929190918252602082015260400190565b60408051601f1981840301815290829052612ad19161382a565b602060405180830381855afa158015612aec573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190612b0f9190613845565b828281518110612b2157612b216137a1565b6020908102919091010152600101612a3f565b50612b406002836138f9565b9150612a37565b805f81518110612b5957612b596137a1565b602002602001015192505050919050565b5f610ca182600581518110612b8157612b816137a1565b6020026020010151612e7c565b5f610ca182600681518110612b8157612b816137a1565b5f81600181518110611a0f57611a0f6137a1565b5f610ca182600281518110612b8157612b816137a1565b5f60ff8216601f811115610ca157604051632cd44ac360e21b815260040160405180910390fd5b5f612c4b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612ee39092919063ffffffff16565b905080515f1480612c6b575080806020019051810190612c6b91906136ff565b6112bd5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611358565b5f612cd7602660016137ed565b612ce2906020613800565b612cef604084018461375f565b905014612d0f576040516313717da960e21b815260040160405180910390fd5b5f612d1b600485613aab565b64ffffffffff169050612d74612d34604085018561375f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525089925050506020860135846128c3565b612d91576040516309bde33960e01b815260040160405180910390fd5b612d9f836020013585612ef1565b95945050505050565b5f83515f14158015612dc5575060208451612dc39190613ad4565b155b612de2576040516313717da960e21b815260040160405180910390fd5b604080516020808201909252848152905b85518111612e7257612e06600285613ad4565b5f03612e385781515f528086015160205260208260405f60026107d05a03fa612e2d575f5ffd5b600284049350612e60565b808601515f52815160205260208260405f60026107d05a03fa612e59575f5ffd5b6002840493505b612e6b6020826137ed565b9050612df3565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b6060610dad84845f85612f1d565b5f80612efe600484613ae7565b612f09906040613b10565b64ffffffffff169050610dad84821b612e7c565b606082471015612f7e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611358565b5f5f866001600160a01b03168587604051612f99919061382a565b5f6040518083038185875af1925050503d805f8114612fd3576040519150601f19603f3d011682016040523d82523d5f602084013e612fd8565b606091505b5091509150612fe987838387612ff4565b979650505050505050565b606083156130625782515f0361305b576001600160a01b0385163b61305b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611358565b5081610dad565b610dad83838151156130775781518083602001fd5b8060405162461bcd60e51b815260040161135891906132bd565b80356001600160401b03811681146130a7575f5ffd5b919050565b5f604082840312156130bc575f5ffd5b50919050565b5f5f5f606084860312156130d4575f5ffd5b6130dd84613091565b925060208401356001600160401b038111156130f7575f5ffd5b613103868287016130ac565b92505060408401356001600160401b0381111561311e575f5ffd5b61312a868287016130ac565b9150509250925092565b5f5f83601f840112613144575f5ffd5b5081356001600160401b0381111561315a575f5ffd5b6020830191508360208260051b8501011115613174575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60a0898b031215613192575f5ffd5b61319b89613091565b975060208901356001600160401b038111156131b5575f5ffd5b6131c18b828c016130ac565b97505060408901356001600160401b038111156131dc575f5ffd5b6131e88b828c01613134565b90975095505060608901356001600160401b03811115613206575f5ffd5b6132128b828c01613134565b90955093505060808901356001600160401b03811115613230575f5ffd5b61323c8b828c01613134565b999c989b5096995094979396929594505050565b5f60208284031215613260575f5ffd5b61326982613091565b9392505050565b5f5b8381101561328a578181015183820152602001613272565b50505f910152565b5f81518084526132a9816020860160208601613270565b601f01601f19169290920160200192915050565b602081525f6132696020830184613292565b5f5f83601f8401126132df575f5ffd5b5081356001600160401b038111156132f5575f5ffd5b602083019150836020828501011115613174575f5ffd5b5f5f6020838503121561331d575f5ffd5b82356001600160401b03811115613332575f5ffd5b61333e858286016132cf565b90969095509350505050565b634e487b7160e01b5f52602160045260245ffd5b6003811061337a57634e487b7160e01b5f52602160045260245ffd5b9052565b60208101610ca1828461335e565b5f6020828403121561339c575f5ffd5b5035919050565b5f6080820190506001600160401b0383511682526001600160401b0360208401511660208301526001600160401b03604084015116604083015260608301516133ef606084018261335e565b5092915050565b8015158114613403575f5ffd5b50565b5f60208284031215613416575f5ffd5b8135613269816133f6565b5f5f5f5f5f60608688031215613435575f5ffd5b85356001600160401b0381111561344a575f5ffd5b613456888289016132cf565b90965094505060208601356001600160401b03811115613474575f5ffd5b613480888289016132cf565b96999598509660400135949350505050565b6001600160a01b0381168114613403575f5ffd5b80356130a781613492565b5f5f604083850312156134c2575f5ffd5b82356134cd81613492565b946020939093013593505050565b5f602082840312156134eb575f5ffd5b813561326981613492565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b0381118282101715613532576135326134f6565b604052919050565b5f6001600160401b03821115613552576135526134f6565b5060051b60200190565b5f82601f83011261356b575f5ffd5b813561357e6135798261353a565b61350a565b8082825260208201915060208360051b86010192508583111561359f575f5ffd5b602085015b838110156135bc5780358352602092830192016135a4565b5095945050505050565b5f5f5f606084860312156135d8575f5ffd5b83356001600160401b038111156135ed575f5ffd5b8401601f810186136135fd575f5ffd5b803561360b6135798261353a565b8082825260208201915060208360051b85010192508883111561362c575f5ffd5b6020840193505b8284101561365757833561364681613492565b825260209384019390910190613633565b955050505060208401356001600160401b03811115613674575f5ffd5b6136808682870161355c565b92505061368f604085016134a6565b90509250925092565b5f5f5f604084860312156136aa575f5ffd5b83356001600160401b038111156136bf575f5ffd5b6136cb868287016130ac565b93505060208401356001600160401b038111156136e6575f5ffd5b6136f286828701613134565b9497909650939450505050565b5f6020828403121561370f575f5ffd5b8151613269816133f6565b5f5f8335601e1984360301811261372f575f5ffd5b8301803591506001600160401b03821115613748575f5ffd5b6020019150600581901b3603821315613174575f5ffd5b5f5f8335601e19843603018112613774575f5ffd5b8301803591506001600160401b0382111561378d575f5ffd5b602001915036819003821315613174575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156137c5575f5ffd5b813564ffffffffff81168114613269575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115610ca157610ca16137d9565b8082028115828204841417610ca157610ca16137d9565b81810381811115610ca157610ca16137d9565b5f825161383b818460208701613270565b9190910192915050565b5f60208284031215613855575f5ffd5b5051919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b608081525f61389760808301888a61385c565b82810360208401526138a98188613292565b905082810360408401526138be81868861385c565b915050826060830152979650505050505050565b602081525f610dad60208301848661385c565b634e487b7160e01b5f52601260045260245ffd5b5f82613907576139076138e5565b500490565b6001600160401b038281168282160390811115610ca157610ca16137d9565b5f8235605e1983360301811261383b575f5ffd5b5f62ffffff821680613953576139536137d9565b5f190192915050565b6001600160401b038181168382160190811115610ca157610ca16137d9565b600781810b9083900b01677fffffffffffffff8113677fffffffffffffff1982121715610ca157610ca16137d9565b805160208083015191908110156130bc575f1960209190910360031b1b16919050565b5f600182016139de576139de6137d9565b5060010190565b5f83516139f6818460208801613270565b6001600160801b0319939093169190920190815260100192915050565b600782810b9082900b03677fffffffffffffff198112677fffffffffffffff82131715610ca157610ca16137d9565b5f81613a5057613a506137d9565b505f190190565b5f8160070b677fffffffffffffff198103613a7457613a746137d9565b5f0392915050565b8082025f8212600160ff1b84141615613a9757613a976137d9565b8181058314821517610ca157610ca16137d9565b5f64ffffffffff831680613ac157613ac16138e5565b8064ffffffffff84160491505092915050565b5f82613ae257613ae26138e5565b500690565b5f64ffffffffff831680613afd57613afd6138e5565b8064ffffffffff84160691505092915050565b64ffffffffff81811683821602908116908181146133ef576133ef6137d956fea26469706673582212202fac89be433c923b9ca0410d2a58980a6d128535cebfe8191eb72f3a8be377fb64736f6c634300081b0033
3036    /// ```
3037    #[rustfmt::skip]
3038    #[allow(clippy::all)]
3039    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
3040        b"`\x80`@R`\x046\x10a\x01~W_5`\xE0\x1C\x80co\xCD\x0ES\x11a\0\xCDW\x80c\xC4\x90tB\x11a\0\x87W\x80c\xDD\xA34l\x11a\0bW\x80c\xDD\xA34l\x14a\x05\xD1W\x80c\xEE\x94\xD6|\x14a\x05\xF0W\x80c\xF0t\xBAb\x14a\x06\x0FW\x80c\xF2\x88$a\x14a\x06.W__\xFD[\x80c\xC4\x90tB\x14a\x05tW\x80c\xC4\xD6m\xE8\x14a\x05\x93W\x80c\xD0mU\x87\x14a\x05\xB2W__\xFD[\x80co\xCD\x0ES\x14a\x04\x8FW\x80ct9\x84\x1F\x14a\x04\xBBW\x80ct\xCD\xD7\x98\x14a\x04\xF0W\x80c\x88gl\xAD\x14a\x05#W\x80c\x9BNF4\x14a\x05BW\x80c\xB5\"S\x8A\x14a\x05UW__\xFD[\x80cFe\xBC\xDA\x11a\x018W\x80cT\xFDMP\x11a\x01\x13W\x80cT\xFDMP\x14a\x04\x04W\x80cXu3W\x14a\x04%W\x80cX\xEA\xEEy\x14a\x04DW\x80cl\r-Z\x14a\x04pW__\xFD[\x80cFe\xBC\xDA\x14a\x02\xB2W\x80cG\xD2\x83r\x14a\x02\xE5W\x80cR9jY\x14a\x03\xD0W__\xFD[\x80c\x03\x91W\xD2\x14a\x01\xBCW\x80c\x0B\x18\xFFf\x14a\x01\xDDW\x80c#@\xE8\xD3\x14a\x02\x19W\x80c4t\xAA\x16\x14a\x02<W\x80c?e\xCF\x19\x14a\x02mW\x80cB\xEC\xFF*\x14a\x02\x8CW__\xFD[6a\x01\xB8W`@Q4\x81R\x7Fo\xDD=\xBD\xB1s)\x96\x08\xC0\xAA\x9F6\x875\x85|\x88B\xB5\x81\xF88\x928\xBF\x05\xBD\x04\xB3\xBFI\x90` \x01`@Q\x80\x91\x03\x90\xA1\0[__\xFD[4\x80\x15a\x01\xC7W__\xFD[Pa\x01\xDBa\x01\xD66`\x04a0\xC2V[a\x06aV[\0[4\x80\x15a\x01\xE8W__\xFD[P`3Ta\x01\xFC\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x02$W__\xFD[Pa\x02.`9T\x81V[`@Q\x90\x81R` \x01a\x02\x10V[4\x80\x15a\x02GW__\xFD[P`4T`\x01`\x01`@\x1B\x03\x16[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x10V[4\x80\x15a\x02xW__\xFD[Pa\x01\xDBa\x02\x876`\x04a1{V[a\t\x8DV[4\x80\x15a\x02\x97W__\xFD[P`:Ta\x02U\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x02\xBDW__\xFD[Pa\x01\xFC\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[4\x80\x15a\x02\xF0W__\xFD[Pa\x03u`@\x80Q`\xA0\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R``\x81\x01\x82\x90R`\x80\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R`<T\x81R`=Tb\xFF\xFF\xFF\x81\x16` \x83\x01R`\x01`\x01`@\x1B\x03c\x01\0\0\0\x82\x04\x81\x16\x93\x83\x01\x93\x90\x93R`\x01`X\x1B\x81\x04`\x07\x0B``\x83\x01R`\x01`\x98\x1B\x90\x04\x90\x91\x16`\x80\x82\x01R\x90V[`@Qa\x02\x10\x91\x90_`\xA0\x82\x01\x90P\x82Q\x82Rb\xFF\xFF\xFF` \x84\x01Q\x16` \x83\x01R`\x01`\x01`@\x1B\x03`@\x84\x01Q\x16`@\x83\x01R``\x83\x01Q`\x07\x0B``\x83\x01R`\x01`\x01`@\x1B\x03`\x80\x84\x01Q\x16`\x80\x83\x01R\x92\x91PPV[4\x80\x15a\x03\xDBW__\xFD[Pa\x02Ua\x03\xEA6`\x04a2PV[`;` R_\x90\x81R`@\x90 T`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x04\x0FW__\xFD[Pa\x04\x18a\x0C\x15V[`@Qa\x02\x10\x91\x90a2\xBDV[4\x80\x15a\x040W__\xFD[P`>Ta\x01\xFC\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04OW__\xFD[Pa\x04ca\x04^6`\x04a3\x0CV[a\x0CEV[`@Qa\x02\x10\x91\x90a3~V[4\x80\x15a\x04{W__\xFD[Pa\x02.a\x04\x8A6`\x04a2PV[a\x0C\xA7V[4\x80\x15a\x04\x9AW__\xFD[Pa\x04\xAEa\x04\xA96`\x04a3\x8CV[a\r\xB5V[`@Qa\x02\x10\x91\x90a3\xA3V[4\x80\x15a\x04\xC6W__\xFD[Pa\x04ca\x04\xD56`\x04a3\x8CV[_\x90\x81R`6` R`@\x90 T`\x01`\xC0\x1B\x90\x04`\xFF\x16\x90V[4\x80\x15a\x04\xFBW__\xFD[Pa\x01\xFC\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[4\x80\x15a\x05.W__\xFD[Pa\x01\xDBa\x05=6`\x04a4\x06V[a\x0E`V[a\x01\xDBa\x05P6`\x04a4!V[a\x0FUV[4\x80\x15a\x05`W__\xFD[Pa\x04\xAEa\x05o6`\x04a3\x0CV[a\x10\x9CV[4\x80\x15a\x05\x7FW__\xFD[Pa\x01\xDBa\x05\x8E6`\x04a4\xB1V[a\x11\x8BV[4\x80\x15a\x05\x9EW__\xFD[Pa\x01\xDBa\x05\xAD6`\x04a4\xDBV[a\x12\xC2V[4\x80\x15a\x05\xBDW__\xFD[Pa\x01\xDBa\x05\xCC6`\x04a4\xDBV[a\x14\x0CV[4\x80\x15a\x05\xDCW__\xFD[Pa\x01\xDBa\x05\xEB6`\x04a5\xC6V[a\x14\xA0V[4\x80\x15a\x05\xFBW__\xFD[P`:Ta\x02U\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x06\x1AW__\xFD[Pa\x01\xDBa\x06)6`\x04a6\x98V[a\x15\xFFV[4\x80\x15a\x069W__\xFD[Pa\x02U\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[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x06`\x04\x82\x01\x81\x90R\x90\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\x16\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\xC7W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xEB\x91\x90a6\xFFV[\x15a\x07\tW`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x08`\x04\x82\x01\x81\x90R\x90\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\x16\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07oW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\x93\x91\x90a6\xFFV[\x15a\x07\xB1W`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x07\xF5a\x07\xBF\x85\x80a7\x1AV[\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847_\x92\x01\x91\x90\x91RPa\x19\xFC\x92PPPV[_\x81\x81R`6` \x90\x81R`@\x80\x83 \x81Q`\x80\x81\x01\x83R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x95\x83\x01\x95\x90\x95R`\x01`\x80\x1B\x81\x04\x90\x94\x16\x92\x81\x01\x92\x90\x92R\x93\x94P\x91\x92\x90``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x08cWa\x08ca3JV[`\x02\x81\x11\x15a\x08tWa\x08ta3JV[\x81RPP\x90P\x80`@\x01Q`\x01`\x01`@\x1B\x03\x16\x87`\x01`\x01`@\x1B\x03\x16\x11a\x08\xB0W`@Qc7\xE0\x7F\xFD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x81``\x01Q`\x02\x81\x11\x15a\x08\xC8Wa\x08\xC8a3JV[\x14a\x08\xE6W`@Qc\xD4\x9E\x19\xA7`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\t)a\x08\xF3\x86\x80a7\x1AV[\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847_\x92\x01\x91\x90\x91RPa\x1A\x1E\x92PPPV[a\tFW`@Qc\x16\x1C\xE5\xED`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\tXa\tR\x88a\x0C\xA7V[\x87a\x1AFV[a\t{\x865a\tg\x87\x80a7\x1AV[a\tt` \x8A\x01\x8Aa7_V[\x86Qa\x1A\xEBV[a\t\x84_a\x1C\x12V[PPPPPPPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14\x80a\t\xB0WP`>T`\x01`\x01`\xA0\x1B\x03\x163\x14[a\t\xCDW`@QcBzwy`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x02`\x04\x82\x01\x81\x90R\x90\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\x16\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\n3W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\nW\x91\x90a6\xFFV[\x15a\nuW`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85\x84\x14\x80\x15a\n\x83WP\x83\x82\x14[a\n\xA0W`@QcCqJ\xFD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`:T`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x91\x04\x81\x16\x90\x8A\x16\x11a\n\xD6W`@Qc7\xE0\x7F\xFD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\n\xE8a\n\xE2\x8Aa\x0C\xA7V[\x89a\x1AFV[_\x80[\x87\x81\x10\x15a\x0B\x80Wa\x0Bl\x8A5\x8A\x8A\x84\x81\x81\x10a\x0B\nWa\x0B\na7\xA1V[\x90P` \x02\x01` \x81\x01\x90a\x0B\x1F\x91\x90a7\xB5V[\x89\x89\x85\x81\x81\x10a\x0B1Wa\x0B1a7\xA1V[\x90P` \x02\x81\x01\x90a\x0BC\x91\x90a7_V[\x89\x89\x87\x81\x81\x10a\x0BUWa\x0BUa7\xA1V[\x90P` \x02\x81\x01\x90a\x0Bg\x91\x90a7\x1AV[a\x1D\x92V[a\x0Bv\x90\x83a7\xEDV[\x91P`\x01\x01a\n\xEBV[P`3T`@Qc\xA1\xCAx\x0B`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R_`$\x82\x01R`D\x81\x01\x83\x90R\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\x90\x91\x16\x90c\xA1\xCAx\x0B\x90`d\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x0B\xF3W__\xFD[PZ\xF1\x15\x80\x15a\x0C\x05W=__>=_\xFD[PPPPPPPPPPPPPPV[``a\x0C@\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\0a\"GV[\x90P\x90V[__a\x0C\x85\x84\x84\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\x91RPa\"\x84\x92PPPV[_\x90\x81R`6` R`@\x90 T`\x01`\xC0\x1B\x90\x04`\xFF\x16\x91PP[\x92\x91PPV[_a\x0C\xB5a\x1F\xFF`\x0Ca8\0V[a\x0C\xC8`\x01`\x01`@\x1B\x03\x84\x16Ba8\x17V[\x10a\x0C\xE6W`@QcyD\xE6m`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q`\x01`\x01`@\x1B\x03\x84\x16` \x82\x01R_\x91\x82\x91r\x0F=\xF6\xD72\x80~\xF11\x9F\xB7\xB8\xBB\x85\"\xD0\xBE\xAC\x02\x91\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\r-\x91a8*V[_`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80_\x81\x14a\reW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\rjV[``\x91P[P\x91P\x91P\x81\x80\x15a\r|WP_\x81Q\x11[a\r\x99W`@QcU\x8A\xD0\xA3`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80\x80` \x01\x90Q\x81\x01\x90a\r\xAD\x91\x90a8EV[\x94\x93PPPPV[a\r\xDC`@\x80Q`\x80\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R\x90``\x82\x01R\x90V[_\x82\x81R`6` \x90\x81R`@\x91\x82\x90 \x82Q`\x80\x81\x01\x84R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x94\x83\x01\x94\x90\x94R`\x01`\x80\x1B\x81\x04\x90\x93\x16\x93\x81\x01\x93\x90\x93R\x90``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x0EFWa\x0EFa3JV[`\x02\x81\x11\x15a\x0EWWa\x0EWa3JV[\x90RP\x92\x91PPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14\x80a\x0E\x83WP`>T`\x01`\x01`\xA0\x1B\x03\x163\x14[a\x0E\xA0W`@QcBzwy`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x06`\x04\x82\x01\x81\x90R\x90\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\x16\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0F\x06W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F*\x91\x90a6\xFFV[\x15a\x0FHW`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0FQ\x82a\x1C\x12V[PPV[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x0F\x9EW`@Qc2\x13\xA6a`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[4h\x01\xBC\x16\xD6t\xEC\x80\0\0\x14a\x0F\xC7W`@Qc\x04\x96\x96\xB3`\xE3\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\x16c\"\x89Q\x18h\x01\xBC\x16\xD6t\xEC\x80\0\0\x87\x87a\x10\na#\x15V[\x88\x88\x88`@Q\x88c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x10.\x96\x95\x94\x93\x92\x91\x90a8\x84V[_`@Q\x80\x83\x03\x81\x85\x88\x80;\x15\x80\x15a\x10EW__\xFD[PZ\xF1\x15\x80\x15a\x10WW=__>=_\xFD[PPPPP\x7F`he\xB7\x93J%\xD4\xAE\xD4?l\xDBBd\x035?\xA4\xB3\0\x9CM\"\x84\x07GE\x81\xB0\x1E#\x85\x85`@Qa\x10\x8D\x92\x91\x90a8\xD2V[`@Q\x80\x91\x03\x90\xA1PPPPPV[a\x10\xC3`@\x80Q`\x80\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x82\x90R\x90``\x82\x01R\x90V[`6_a\x11\x04\x85\x85\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\x91RPa\"\x84\x92PPPV[\x81R` \x80\x82\x01\x92\x90\x92R`@\x90\x81\x01_ \x81Q`\x80\x81\x01\x83R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x95\x83\x01\x95\x90\x95R`\x01`\x80\x1B\x81\x04\x90\x94\x16\x92\x81\x01\x92\x90\x92R\x90\x91``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x11pWa\x11pa3JV[`\x02\x81\x11\x15a\x11\x81Wa\x11\x81a3JV[\x90RP\x93\x92PPPV[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x11\xD4W`@Qc2\x13\xA6a`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x11\xE3c;\x9A\xCA\0\x83a8\xF9V[\x90Pa\x11\xFCc;\x9A\xCA\0`\x01`\x01`@\x1B\x03\x83\x16a8\0V[`4T\x90\x92P`\x01`\x01`@\x1B\x03\x90\x81\x16\x90\x82\x16\x11\x15a\x12/W`@Qc\x02\xC6\xF5G`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`4\x80T\x82\x91\x90_\x90a\x12L\x90\x84\x90`\x01`\x01`@\x1B\x03\x16a9\x0CV[\x92Pa\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UP\x82`\x01`\x01`\xA0\x1B\x03\x16\x7F\x89G\xFD,\xE0~\xF9\xCC0,N\x8F\x04a\x01V\x15\xD9\x1C\xE8QVH9\xE9\x1C\xC8\x04\xC2\xF4\x9D\x8E\x83`@Qa\x12\xAB\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2a\x12\xBD\x83\x83a#YV[PPPV[_Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x12\xE0WP_T`\x01`\xFF\x90\x91\x16\x10[\x80a\x12\xF9WP0;\x15\x80\x15a\x12\xF9WP_T`\xFF\x16`\x01\x14[a\x13aW`@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\x01[`@Q\x80\x91\x03\x90\xFD[_\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x13\x82W_\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x13\xA9W`@Qc9\xB1\x90\xBB`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`3\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x84\x16\x17\x90U\x80\x15a\x0FQW_\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\xA1PPV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x147W`@Qcq\x9F7\x03`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`>T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x83\x16` \x83\x01R\x7F\xFB\x81)\x08\n\x19\xD3M\xCE\xAC\x04\xBA%?\xC5\x03\x04\xDC\x86\xC7)\xBDc\xCD\xCAJ\x96\x9A\xD1\x9A^\xAC\x91\x01`@Q\x80\x91\x03\x90\xA1`>\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x14\xCBW`@Qcq\x9F7\x03`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x05`\x04\x82\x01\x81\x90R\x90\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\x16\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x151W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15U\x91\x90a6\xFFV[\x15a\x15sW`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82Q\x84Q\x14a\x15\x95W`@QcCqJ\xFD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_[\x84Q\x81\x10\x15a\x15\xF8Wa\x15\xF0\x83\x85\x83\x81Q\x81\x10a\x15\xB6Wa\x15\xB6a7\xA1V[` \x02` \x01\x01Q\x87\x84\x81Q\x81\x10a\x15\xD0Wa\x15\xD0a7\xA1V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16a$n\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[`\x01\x01a\x15\x97V[PPPPPV[`@QcZ\xC8j\xB7`\xE0\x1B\x81R`\x07`\x04\x82\x01\x81\x90R\x90\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\x16\x90cZ\xC8j\xB7\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x16eW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16\x89\x91\x90a6\xFFV[\x15a\x16\xA7W`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`:T`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16_\x81\x90\x03a\x16\xDBW`@Qc\x1ATOI`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q`\xA0\x81\x01\x82R`<T\x80\x82R`=Tb\xFF\xFF\xFF\x81\x16` \x84\x01R`\x01`\x01`@\x1B\x03c\x01\0\0\0\x82\x04\x81\x16\x94\x84\x01\x94\x90\x94R`\x01`X\x1B\x81\x04`\x07\x0B``\x84\x01R`\x01`\x98\x1B\x90\x04\x90\x92\x16`\x80\x82\x01R\x90a\x17:\x90\x87a$\xC0V[_\x80[\x85\x81\x10\x15a\x19\xA3W6\x87\x87\x83\x81\x81\x10a\x17XWa\x17Xa7\xA1V[\x90P` \x02\x81\x01\x90a\x17j\x91\x90a9+V[\x805_\x90\x81R`6` \x90\x81R`@\x80\x83 \x81Q`\x80\x81\x01\x83R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x95\x83\x01\x95\x90\x95R`\x01`\x80\x1B\x81\x04\x90\x94\x16\x92\x81\x01\x92\x90\x92R\x93\x94P\x91\x92\x90``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x17\xDAWa\x17\xDAa3JV[`\x02\x81\x11\x15a\x17\xEBWa\x17\xEBa3JV[\x90RP\x90P`\x01\x81``\x01Q`\x02\x81\x11\x15a\x18\x08Wa\x18\x08a3JV[\x14a\x18\x14WPPa\x19\x9BV[\x85`\x01`\x01`@\x1B\x03\x16\x81`@\x01Q`\x01`\x01`@\x1B\x03\x16\x10a\x188WPPa\x19\x9BV[_\x80\x80a\x18H\x84\x8A\x8F5\x88a%qV[` \x8B\x01\x80Q\x93\x96P\x91\x94P\x92Pa\x18_\x82a9?V[b\xFF\xFF\xFF\x16\x90RP`\x80\x88\x01\x80Q\x84\x91\x90a\x18{\x90\x83\x90a9\\V[`\x01`\x01`@\x1B\x03\x16\x90RP``\x88\x01\x80Q\x83\x91\x90a\x18\x9B\x90\x83\x90a9{V[`\x07\x0B\x90RPa\x18\xAB\x81\x88a9\\V[\x855_\x90\x81R`6` \x90\x81R`@\x91\x82\x90 \x87Q\x81T\x92\x89\x01Q\x93\x89\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x95\x82\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x95\x16\x91\x90\x92\x16\x17\x92\x90\x92\x17\x92\x83\x16\x82\x17\x81U``\x88\x01Q\x93\x9AP\x87\x93\x90\x92\x90\x91\x83\x91`\xFF`\xC0\x1B\x19\x90\x91\x16h\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x90\x91\x16\x17`\x01`\xC0\x1B\x83`\x02\x81\x11\x15a\x19OWa\x19Oa3JV[\x02\x17\x90UPP\x84Q`@Qd\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x91P`\x01`\x01`@\x1B\x03\x8B\x16\x90\x7F\xA9\x1CY\x03<4#\xE1\x8BT\xD0\xAC\xEC\xEB\xB4\x97/\x9E\xA9Z\xED\xF5\xF4\xCA\xE3\xB6w\xB0.\xAF:?\x90_\x90\xA3PPPPP[`\x01\x01a\x17=V[P`\x01`\x01`@\x1B\x03\x80\x84\x16_\x90\x81R`;` R`@\x81 \x80T\x84\x93\x91\x92\x91a\x19\xCF\x91\x85\x91\x16a9\\V[\x92Pa\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UPa\t\x84\x82a&\x94V[_\x81_\x81Q\x81\x10a\x1A\x0FWa\x1A\x0Fa7\xA1V[` \x02` \x01\x01Q\x90P\x91\x90PV[_\x81`\x03\x81Q\x81\x10a\x1A2Wa\x1A2a7\xA1V[` \x02` \x01\x01Q__\x1B\x14\x15\x90P\x91\x90PV[a\x1AR`\x03` a8\0V[a\x1A_` \x83\x01\x83a7_V[\x90P\x14a\x1A\x7FW`@Qc\x13q}\xA9`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1A\xCEa\x1A\x8F` \x83\x01\x83a7_V[\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\x91RP\x86\x92PP\x845\x90P`\x03a(\xC3V[a\x0FQW`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08\x84\x14a\x1B\x0CW`@Qc \x05\x91\xBD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x05a\x1B\x1A`(`\x01a7\xEDV[a\x1B$\x91\x90a7\xEDV[a\x1B/\x90` a8\0V[\x82\x14a\x1BNW`@Qc\x13q}\xA9`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1B\x8A\x86\x86\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847_\x92\x01\x91\x90\x91RPa(\xDA\x92PPPV[\x90P_d\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1B\xA1`(`\x01a7\xEDV[`\x0B\x90\x1B\x17\x90Pa\x1B\xEB\x85\x85\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\x91RP\x8C\x92P\x86\x91P\x85\x90Pa(\xC3V[a\x1C\x08W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPPV[`:T`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x15a\x1CBW`@Qb\xBE\x9B\xC3`\xE8\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`:T`\x01`\x01`@\x1B\x03B\x81\x16\x91\x16\x03a\x1CpW`@Qcg\xDB[\x8B`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`4T_\x90`\x01`\x01`@\x1B\x03\x16a\x1C\x8Cc;\x9A\xCA\0Ga8\xF9V[a\x1C\x96\x91\x90a9\x0CV[\x90P\x81\x80\x15a\x1C\xACWP`\x01`\x01`@\x1B\x03\x81\x16\x15[\x15a\x1C\xCAW`@Qc2\xDE\xA9Y`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`@Q\x80`\xA0\x01`@R\x80a\x1C\xDFBa\x0C\xA7V[\x81R`9Tb\xFF\xFF\xFF\x16` \x82\x01R`\x01`\x01`@\x1B\x03\x80\x85\x16`@\x83\x01R_``\x83\x01\x81\x90R`\x80\x90\x92\x01\x91\x90\x91R`:\x80TB\x90\x92\x16`\x01`@\x1B\x02o\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\x19\x90\x92\x16\x91\x90\x91\x17\x90U\x90Pa\x1DC\x81a&\x94V[\x80Q` \x80\x83\x01Q`@Qb\xFF\xFF\xFF\x90\x91\x16\x81R`\x01`\x01`@\x1B\x03B\x16\x91\x7FWW\x96\x13;\xBE\xD37\xE5\xB3\x9A\xA4\x9A0\xDC%V\xA9\x1E\x0Cl*\xF4\xB7\xB8\x86\xAEw\xEB\xEF\x10v\x91\x01`@Q\x80\x91\x03\x90\xA3PPPV[__a\x1D\xCF\x84\x84\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847_\x92\x01\x91\x90\x91RPa\x19\xFC\x92PPPV[_\x81\x81R`6` \x90\x81R`@\x80\x83 \x81Q`\x80\x81\x01\x83R\x81T`\x01`\x01`@\x1B\x03\x80\x82\x16\x83R`\x01`@\x1B\x82\x04\x81\x16\x95\x83\x01\x95\x90\x95R`\x01`\x80\x1B\x81\x04\x90\x94\x16\x92\x81\x01\x92\x90\x92R\x93\x94P\x91\x92\x90``\x83\x01\x90`\x01`\xC0\x1B\x90\x04`\xFF\x16`\x02\x81\x11\x15a\x1E=Wa\x1E=a3JV[`\x02\x81\x11\x15a\x1ENWa\x1ENa3JV[\x90RP\x90P_\x81``\x01Q`\x02\x81\x11\x15a\x1EjWa\x1Eja3JV[\x14a\x1E\x88W`@Qc5\xE0\x9E\x9D`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`@\x1B\x03\x80\x16a\x1E\xCD\x86\x86\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847_\x92\x01\x91\x90\x91RPa+j\x92PPPV[`\x01`\x01`@\x1B\x03\x16\x03a\x1E\xF4W`@Qc\x19X#m`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`@\x1B\x03\x80\x16a\x1F9\x86\x86\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847_\x92\x01\x91\x90\x91RPa+\x8E\x92PPPV[`\x01`\x01`@\x1B\x03\x16\x14a\x1F`W`@Qc.\xAD\xE67`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1Fha#\x15V[a\x1Fq\x90a9\xAAV[a\x1F\xAC\x86\x86\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847_\x92\x01\x91\x90\x91RPa+\xA5\x92PPPV[\x14a\x1F\xCAW`@Qc7r\xDDS`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a \x06\x86\x86\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847_\x92\x01\x91\x90\x91RPa+\xB9\x92PPPV[\x90Pa \x16\x8A\x87\x87\x8B\x8B\x8Ea\x1A\xEBV[`9\x80T\x90_a %\x83a9\xCDV[\x90\x91UPP`:T_\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x15a \\W`:T`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16a iV[`:T`\x01`\x01`@\x1B\x03\x16[`@\x80Q`\x80\x81\x01\x82Rd\xFF\xFF\xFF\xFF\xFF\x8D\x16\x81R`\x01`\x01`@\x1B\x03\x85\x81\x16` \x83\x01R\x83\x16\x91\x81\x01\x91\x90\x91R\x90\x91P``\x81\x01`\x01\x90R_\x85\x81R`6` \x90\x81R`@\x91\x82\x90 \x83Q\x81T\x92\x85\x01Q\x93\x85\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x95\x82\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x95\x16\x91\x90\x92\x16\x17\x92\x90\x92\x17\x92\x83\x16\x82\x17\x81U``\x84\x01Q\x90\x92\x90\x91\x83\x91`\xFF`\xC0\x1B\x19\x90\x91\x16h\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x90\x91\x16\x17`\x01`\xC0\x1B\x83`\x02\x81\x11\x15a!>Wa!>a3JV[\x02\x17\x90UPP`=\x80T\x84\x92P`\x13\x90a!i\x90\x84\x90`\x01`\x98\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16a9\\V[\x92Pa\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UP\x7F-\x08\0\xBB\xC3w\xEAT\xA0\x8C]\xB6\xA8z\xAF\xFF^>\x9C\x8F\xEA\xD0\xED\xA1\x10\xE4\x0E\x0C\x10D\x14I\x8A`@Qa!\xC9\x91\x90d\xFF\xFF\xFF\xFF\xFF\x91\x90\x91\x16\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA1`@\x80Qd\xFF\xFF\xFF\xFF\xFF\x8C\x16\x81R`\x01`\x01`@\x1B\x03\x83\x81\x16` \x83\x01R\x84\x16\x81\x83\x01R\x90Q\x7F\x0E_\xAC\x17[\x83\x17|\xC0G8\x1E\x03\r\x8F\xB3\xB4+7\xBD\x1C\x02^\"\xC2\x80\xFA\xCA\xD6,2\xDF\x91\x81\x90\x03``\x01\x90\xA1a\"8c;\x9A\xCA\0`\x01`\x01`@\x1B\x03\x84\x16a8\0V[\x9B\x9APPPPPPPPPPPV[``_a\"S\x83a+\xD0V[`@\x80Q` \x80\x82R\x81\x83\x01\x90\x92R\x91\x92P_\x91\x90` \x82\x01\x81\x806\x837PPP\x91\x82RP` \x81\x01\x92\x90\x92RP\x90V[_\x81Q`0\x14a\"\xA7W`@QcO\x8829`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q`\x02\x90a\"\xBD\x90\x84\x90_\x90` \x01a9\xE5V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\"\xD7\x91a8*V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a\"\xF2W=__>=_\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\xA1\x91\x90a8EV[`@\x80Q`\x01`\xF8\x1B` \x82\x01R_`!\x82\x01R0``\x90\x81\x1Bk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`,\x83\x01R\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x90V[\x80G\x10\x15a#\xA9W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: insufficient balance\0\0\0`D\x82\x01R`d\x01a\x13XV[_\x82`\x01`\x01`\xA0\x1B\x03\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a#\xF2W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a#\xF7V[``\x91P[PP\x90P\x80a\x12\xBDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FAddress: unable to send value, r`D\x82\x01R\x7Fecipient may have reverted\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x13XV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x84\x16`$\x82\x01R`D\x80\x82\x01\x84\x90R\x82Q\x80\x83\x03\x90\x91\x01\x81R`d\x90\x91\x01\x90\x91R` \x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\xA9\x05\x9C\xBB`\xE0\x1B\x17\x90Ra\x12\xBD\x90\x84\x90a+\xF7V[a$\xCC`\x05`\x03a7\xEDV[a$\xD7\x90` a8\0V[a$\xE4` \x83\x01\x83a7_V[\x90P\x14a%\x04W`@Qc\x13q}\xA9`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`la%Ta%\x16` \x84\x01\x84a7_V[\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\x91RP\x87\x92PP\x855\x90P\x84a(\xC3V[a\x12\xBDW`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x83Q` \x85\x01Q\x90_\x90\x81\x90\x81a%\x89\x87\x83\x88a,\xCAV[\x90P\x84`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14a&\x03Wa%\xAE\x85\x82a:\x13V[`@\x80Qd\xFF\xFF\xFF\xFF\xFF\x85\x16\x81R`\x01`\x01`@\x1B\x03\x8B\x81\x16` \x83\x01R\x84\x16\x81\x83\x01R\x90Q\x91\x95P\x7F\x0E_\xAC\x17[\x83\x17|\xC0G8\x1E\x03\r\x8F\xB3\xB4+7\xBD\x1C\x02^\"\xC2\x80\xFA\xCA\xD6,2\xDF\x91\x90\x81\x90\x03``\x01\x90\xA1[`\x01`\x01`@\x1B\x03\x80\x82\x16` \x8B\x01\x81\x90R\x90\x89\x16`@\x8B\x01R_\x03a&\x88W`9\x80T\x90_a&2\x83a:BV[\x90\x91UPP`\x02``\x8A\x01Ra&G\x84a:WV[\x92P\x81d\xFF\xFF\xFF\xFF\xFF\x16\x88`\x01`\x01`@\x1B\x03\x16\x7F*\x026\x1F\xFAf\xCF,-\xA4h,#U\xA6\xAD\xCA\xA9\xF6\xC2'\xB6\xE6V>hH\x0F\x95\x87bj`@Q`@Q\x80\x91\x03\x90\xA3[PP\x94P\x94P\x94\x91PPV[` \x81\x01Qb\xFF\xFF\xFF\x16\x15a'4W\x80Q`<U` \x81\x01Q`=\x80T`@\x84\x01Q``\x85\x01Q`\x80\x90\x95\x01Qb\xFF\xFF\xFF\x90\x94\x16j\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x92\x16\x91\x90\x91\x17c\x01\0\0\0`\x01`\x01`@\x1B\x03\x92\x83\x16\x02\x17o\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`X\x1B\x19\x16`\x01`X\x1B\x94\x82\x16\x94\x90\x94\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x98\x1B\x19\x16\x93\x90\x93\x17`\x01`\x98\x1B\x93\x90\x92\x16\x92\x90\x92\x02\x17\x90UV[`\x80\x81\x01Q`4T_\x91a'P\x91`\x01`\x01`@\x1B\x03\x16a9\\V[\x90P_\x82``\x01Q\x83`@\x01Qa'g\x91\x90a9{V[`@\x84\x01Q`4\x80T\x92\x93P\x90\x91_\x90a'\x8B\x90\x84\x90`\x01`\x01`@\x1B\x03\x16a9\\V[\x82Ta\x01\0\x92\x90\x92\n`\x01`\x01`@\x1B\x03\x81\x81\x02\x19\x90\x93\x16\x91\x83\x16\x02\x17\x90\x91U`:\x80T`\x01`@\x1B\x81\x04\x83\x16`\x01`\x01`\x80\x1B\x03\x19\x90\x91\x16\x17\x90U_\x91Pa'\xDB\x90c;\x9A\xCA\0\x90\x85\x16a8\0V[\x90P_a'\xF0c;\x9A\xCA\0`\x07\x85\x90\x0Ba:|V[`:T`@Q\x82\x81R\x91\x92P`\x01`\x01`@\x1B\x03\x16\x90\x7FRT\x08\xC2\x01\xBC\x15v\xEBD\x11odx\xF1\xC2\xA5Gu\xB1\x9A\x04;\xCF\xDCp\x83d\xF7O\x8ED\x90` \x01`@Q\x80\x91\x03\x90\xA2`3T`@Qc\xA1\xCAx\x0B`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R`$\x81\x01\x84\x90R`D\x81\x01\x83\x90R\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\x90\x91\x16\x90c\xA1\xCAx\x0B\x90`d\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a(\xA6W__\xFD[PZ\xF1\x15\x80\x15a(\xB8W=__>=_\xFD[PPPPPPPPPV[_\x83a(\xD0\x86\x85\x85a-\xA8V[\x14\x95\x94PPPPPV[__`\x02\x83Qa(\xEA\x91\x90a8\xF9V[\x90P_\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a)\x05Wa)\x05a4\xF6V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a).W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x82\x81\x10\x15a*(W`\x02\x85a)H\x83\x83a8\0V[\x81Q\x81\x10a)XWa)Xa7\xA1V[` \x02` \x01\x01Q\x86\x83`\x02a)n\x91\x90a8\0V[a)y\x90`\x01a7\xEDV[\x81Q\x81\x10a)\x89Wa)\x89a7\xA1V[` \x02` \x01\x01Q`@Q` \x01a)\xAB\x92\x91\x90\x91\x82R` \x82\x01R`@\x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra)\xC5\x91a8*V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a)\xE0W=__>=_\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a*\x03\x91\x90a8EV[\x82\x82\x81Q\x81\x10a*\x15Wa*\x15a7\xA1V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a)3V[Pa*4`\x02\x83a8\xF9V[\x91P[\x81\x15a+GW_[\x82\x81\x10\x15a+4W`\x02\x82a*T\x83\x83a8\0V[\x81Q\x81\x10a*dWa*da7\xA1V[` \x02` \x01\x01Q\x83\x83`\x02a*z\x91\x90a8\0V[a*\x85\x90`\x01a7\xEDV[\x81Q\x81\x10a*\x95Wa*\x95a7\xA1V[` \x02` \x01\x01Q`@Q` \x01a*\xB7\x92\x91\x90\x91\x82R` \x82\x01R`@\x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra*\xD1\x91a8*V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a*\xECW=__>=_\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a+\x0F\x91\x90a8EV[\x82\x82\x81Q\x81\x10a+!Wa+!a7\xA1V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a*?V[Pa+@`\x02\x83a8\xF9V[\x91Pa*7V[\x80_\x81Q\x81\x10a+YWa+Ya7\xA1V[` \x02` \x01\x01Q\x92PPP\x91\x90PV[_a\x0C\xA1\x82`\x05\x81Q\x81\x10a+\x81Wa+\x81a7\xA1V[` \x02` \x01\x01Qa.|V[_a\x0C\xA1\x82`\x06\x81Q\x81\x10a+\x81Wa+\x81a7\xA1V[_\x81`\x01\x81Q\x81\x10a\x1A\x0FWa\x1A\x0Fa7\xA1V[_a\x0C\xA1\x82`\x02\x81Q\x81\x10a+\x81Wa+\x81a7\xA1V[_`\xFF\x82\x16`\x1F\x81\x11\x15a\x0C\xA1W`@Qc,\xD4J\xC3`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a,K\x82`@Q\x80`@\x01`@R\x80` \x81R` \x01\x7FSafeERC20: low-level call failed\x81RP\x85`\x01`\x01`\xA0\x1B\x03\x16a.\xE3\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x90P\x80Q_\x14\x80a,kWP\x80\x80` \x01\x90Q\x81\x01\x90a,k\x91\x90a6\xFFV[a\x12\xBDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`*`$\x82\x01R\x7FSafeERC20: ERC20 operation did n`D\x82\x01Ri\x1B\xDD\x08\x1C\xDDX\xD8\xD9YY`\xB2\x1B`d\x82\x01R`\x84\x01a\x13XV[_a,\xD7`&`\x01a7\xEDV[a,\xE2\x90` a8\0V[a,\xEF`@\x84\x01\x84a7_V[\x90P\x14a-\x0FW`@Qc\x13q}\xA9`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a-\x1B`\x04\x85a:\xABV[d\xFF\xFF\xFF\xFF\xFF\x16\x90Pa-ta-4`@\x85\x01\x85a7_V[\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\x91RP\x89\x92PPP` \x86\x015\x84a(\xC3V[a-\x91W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a-\x9F\x83` \x015\x85a.\xF1V[\x95\x94PPPPPV[_\x83Q_\x14\x15\x80\x15a-\xC5WP` \x84Qa-\xC3\x91\x90a:\xD4V[\x15[a-\xE2W`@Qc\x13q}\xA9`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q` \x80\x82\x01\x90\x92R\x84\x81R\x90[\x85Q\x81\x11a.rWa.\x06`\x02\x85a:\xD4V[_\x03a.8W\x81Q_R\x80\x86\x01Q` R` \x82`@_`\x02a\x07\xD0Z\x03\xFAa.-W__\xFD[`\x02\x84\x04\x93Pa.`V[\x80\x86\x01Q_R\x81Q` R` \x82`@_`\x02a\x07\xD0Z\x03\xFAa.YW__\xFD[`\x02\x84\x04\x93P[a.k` \x82a7\xEDV[\x90Pa-\xF3V[PQ\x94\x93PPPPV[`\xF8\x81\x90\x1C`\xE8\x82\x90\x1Ca\xFF\0\x16\x17`\xD8\x82\x90\x1Cb\xFF\0\0\x16\x17`\xC8\x82\x90\x1Cc\xFF\0\0\0\x16\x17d\xFF\0\0\0\0`\xB8\x83\x90\x1C\x16\x17e\xFF\0\0\0\0\0`\xA8\x83\x90\x1C\x16\x17f\xFF\0\0\0\0\0\0`\x98\x83\x90\x1C\x16\x17g\xFF\0\0\0\0\0\0\0`\x88\x92\x90\x92\x1C\x91\x90\x91\x16\x17\x90V[``a\r\xAD\x84\x84_\x85a/\x1DV[_\x80a.\xFE`\x04\x84a:\xE7V[a/\t\x90`@a;\x10V[d\xFF\xFF\xFF\xFF\xFF\x16\x90Pa\r\xAD\x84\x82\x1Ba.|V[``\x82G\x10\x15a/~W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FAddress: insufficient balance fo`D\x82\x01Re\x1C\x88\x18\xD8[\x1B`\xD2\x1B`d\x82\x01R`\x84\x01a\x13XV[__\x86`\x01`\x01`\xA0\x1B\x03\x16\x85\x87`@Qa/\x99\x91\x90a8*V[_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a/\xD3W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a/\xD8V[``\x91P[P\x91P\x91Pa/\xE9\x87\x83\x83\x87a/\xF4V[\x97\x96PPPPPPPV[``\x83\x15a0bW\x82Q_\x03a0[W`\x01`\x01`\xA0\x1B\x03\x85\x16;a0[W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: call to non-contract\0\0\0`D\x82\x01R`d\x01a\x13XV[P\x81a\r\xADV[a\r\xAD\x83\x83\x81Q\x15a0wW\x81Q\x80\x83` \x01\xFD[\x80`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x13X\x91\x90a2\xBDV[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a0\xA7W__\xFD[\x91\x90PV[_`@\x82\x84\x03\x12\x15a0\xBCW__\xFD[P\x91\x90PV[___``\x84\x86\x03\x12\x15a0\xD4W__\xFD[a0\xDD\x84a0\x91V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\xF7W__\xFD[a1\x03\x86\x82\x87\x01a0\xACV[\x92PP`@\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\x1EW__\xFD[a1*\x86\x82\x87\x01a0\xACV[\x91PP\x92P\x92P\x92V[__\x83`\x1F\x84\x01\x12a1DW__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a1ZW__\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a1tW__\xFD[\x92P\x92\x90PV[________`\xA0\x89\x8B\x03\x12\x15a1\x92W__\xFD[a1\x9B\x89a0\x91V[\x97P` \x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xB5W__\xFD[a1\xC1\x8B\x82\x8C\x01a0\xACV[\x97PP`@\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xDCW__\xFD[a1\xE8\x8B\x82\x8C\x01a14V[\x90\x97P\x95PP``\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x06W__\xFD[a2\x12\x8B\x82\x8C\x01a14V[\x90\x95P\x93PP`\x80\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a20W__\xFD[a2<\x8B\x82\x8C\x01a14V[\x99\x9C\x98\x9BP\x96\x99P\x94\x97\x93\x96\x92\x95\x94PPPV[_` \x82\x84\x03\x12\x15a2`W__\xFD[a2i\x82a0\x91V[\x93\x92PPPV[_[\x83\x81\x10\x15a2\x8AW\x81\x81\x01Q\x83\x82\x01R` \x01a2rV[PP_\x91\x01RV[_\x81Q\x80\x84Ra2\xA9\x81` \x86\x01` \x86\x01a2pV[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x81R_a2i` \x83\x01\x84a2\x92V[__\x83`\x1F\x84\x01\x12a2\xDFW__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a2\xF5W__\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a1tW__\xFD[__` \x83\x85\x03\x12\x15a3\x1DW__\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a32W__\xFD[a3>\x85\x82\x86\x01a2\xCFV[\x90\x96\x90\x95P\x93PPPPV[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[`\x03\x81\x10a3zWcNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x90RV[` \x81\x01a\x0C\xA1\x82\x84a3^V[_` \x82\x84\x03\x12\x15a3\x9CW__\xFD[P5\x91\x90PV[_`\x80\x82\x01\x90P`\x01`\x01`@\x1B\x03\x83Q\x16\x82R`\x01`\x01`@\x1B\x03` \x84\x01Q\x16` \x83\x01R`\x01`\x01`@\x1B\x03`@\x84\x01Q\x16`@\x83\x01R``\x83\x01Qa3\xEF``\x84\x01\x82a3^V[P\x92\x91PPV[\x80\x15\x15\x81\x14a4\x03W__\xFD[PV[_` \x82\x84\x03\x12\x15a4\x16W__\xFD[\x815a2i\x81a3\xF6V[_____``\x86\x88\x03\x12\x15a45W__\xFD[\x855`\x01`\x01`@\x1B\x03\x81\x11\x15a4JW__\xFD[a4V\x88\x82\x89\x01a2\xCFV[\x90\x96P\x94PP` \x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a4tW__\xFD[a4\x80\x88\x82\x89\x01a2\xCFV[\x96\x99\x95\x98P\x96`@\x015\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a4\x03W__\xFD[\x805a0\xA7\x81a4\x92V[__`@\x83\x85\x03\x12\x15a4\xC2W__\xFD[\x825a4\xCD\x81a4\x92V[\x94` \x93\x90\x93\x015\x93PPPV[_` \x82\x84\x03\x12\x15a4\xEBW__\xFD[\x815a2i\x81a4\x92V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a52Wa52a4\xF6V[`@R\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x11\x15a5RWa5Ra4\xF6V[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a5kW__\xFD[\x815a5~a5y\x82a5:V[a5\nV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a5\x9FW__\xFD[` \x85\x01[\x83\x81\x10\x15a5\xBCW\x805\x83R` \x92\x83\x01\x92\x01a5\xA4V[P\x95\x94PPPPPV[___``\x84\x86\x03\x12\x15a5\xD8W__\xFD[\x835`\x01`\x01`@\x1B\x03\x81\x11\x15a5\xEDW__\xFD[\x84\x01`\x1F\x81\x01\x86\x13a5\xFDW__\xFD[\x805a6\x0Ba5y\x82a5:V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x88\x83\x11\x15a6,W__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a6WW\x835a6F\x81a4\x92V[\x82R` \x93\x84\x01\x93\x90\x91\x01\x90a63V[\x95PPPP` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a6tW__\xFD[a6\x80\x86\x82\x87\x01a5\\V[\x92PPa6\x8F`@\x85\x01a4\xA6V[\x90P\x92P\x92P\x92V[___`@\x84\x86\x03\x12\x15a6\xAAW__\xFD[\x835`\x01`\x01`@\x1B\x03\x81\x11\x15a6\xBFW__\xFD[a6\xCB\x86\x82\x87\x01a0\xACV[\x93PP` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a6\xE6W__\xFD[a6\xF2\x86\x82\x87\x01a14V[\x94\x97\x90\x96P\x93\x94PPPPV[_` \x82\x84\x03\x12\x15a7\x0FW__\xFD[\x81Qa2i\x81a3\xF6V[__\x835`\x1E\x19\x846\x03\x01\x81\x12a7/W__\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15a7HW__\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15a1tW__\xFD[__\x835`\x1E\x19\x846\x03\x01\x81\x12a7tW__\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15a7\x8DW__\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a1tW__\xFD[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_` \x82\x84\x03\x12\x15a7\xC5W__\xFD[\x815d\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a2iW__\xFD[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x0C\xA1Wa\x0C\xA1a7\xD9V[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x0C\xA1Wa\x0C\xA1a7\xD9V[\x81\x81\x03\x81\x81\x11\x15a\x0C\xA1Wa\x0C\xA1a7\xD9V[_\x82Qa8;\x81\x84` \x87\x01a2pV[\x91\x90\x91\x01\x92\x91PPV[_` \x82\x84\x03\x12\x15a8UW__\xFD[PQ\x91\x90PV[\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[`\x80\x81R_a8\x97`\x80\x83\x01\x88\x8Aa8\\V[\x82\x81\x03` \x84\x01Ra8\xA9\x81\x88a2\x92V[\x90P\x82\x81\x03`@\x84\x01Ra8\xBE\x81\x86\x88a8\\V[\x91PP\x82``\x83\x01R\x97\x96PPPPPPPV[` \x81R_a\r\xAD` \x83\x01\x84\x86a8\\V[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_\x82a9\x07Wa9\x07a8\xE5V[P\x04\x90V[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x0C\xA1Wa\x0C\xA1a7\xD9V[_\x825`^\x19\x836\x03\x01\x81\x12a8;W__\xFD[_b\xFF\xFF\xFF\x82\x16\x80a9SWa9Sa7\xD9V[_\x19\x01\x92\x91PPV[`\x01`\x01`@\x1B\x03\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\x0C\xA1Wa\x0C\xA1a7\xD9V[`\x07\x81\x81\x0B\x90\x83\x90\x0B\x01g\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x13g\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x82\x12\x17\x15a\x0C\xA1Wa\x0C\xA1a7\xD9V[\x80Q` \x80\x83\x01Q\x91\x90\x81\x10\x15a0\xBCW_\x19` \x91\x90\x91\x03`\x03\x1B\x1B\x16\x91\x90PV[_`\x01\x82\x01a9\xDEWa9\xDEa7\xD9V[P`\x01\x01\x90V[_\x83Qa9\xF6\x81\x84` \x88\x01a2pV[`\x01`\x01`\x80\x1B\x03\x19\x93\x90\x93\x16\x91\x90\x92\x01\x90\x81R`\x10\x01\x92\x91PPV[`\x07\x82\x81\x0B\x90\x82\x90\x0B\x03g\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x81\x12g\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x13\x17\x15a\x0C\xA1Wa\x0C\xA1a7\xD9V[_\x81a:PWa:Pa7\xD9V[P_\x19\x01\x90V[_\x81`\x07\x0Bg\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x81\x03a:tWa:ta7\xD9V[_\x03\x92\x91PPV[\x80\x82\x02_\x82\x12`\x01`\xFF\x1B\x84\x14\x16\x15a:\x97Wa:\x97a7\xD9V[\x81\x81\x05\x83\x14\x82\x15\x17a\x0C\xA1Wa\x0C\xA1a7\xD9V[_d\xFF\xFF\xFF\xFF\xFF\x83\x16\x80a:\xC1Wa:\xC1a8\xE5V[\x80d\xFF\xFF\xFF\xFF\xFF\x84\x16\x04\x91PP\x92\x91PPV[_\x82a:\xE2Wa:\xE2a8\xE5V[P\x06\x90V[_d\xFF\xFF\xFF\xFF\xFF\x83\x16\x80a:\xFDWa:\xFDa8\xE5V[\x80d\xFF\xFF\xFF\xFF\xFF\x84\x16\x06\x91PP\x92\x91PPV[d\xFF\xFF\xFF\xFF\xFF\x81\x81\x16\x83\x82\x16\x02\x90\x81\x16\x90\x81\x81\x14a3\xEFWa3\xEFa7\xD9V\xFE\xA2dipfsX\"\x12 /\xAC\x89\xBEC<\x92;\x9C\xA0A\r*X\x98\nm\x12\x855\xCE\xBF\xE8\x19\x1E\xB7/:\x8B\xE3w\xFBdsolcC\0\x08\x1B\x003",
3041    );
3042    #[derive(serde::Serialize, serde::Deserialize)]
3043    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3044    /**Custom error with signature `BeaconTimestampTooFarInPast()` and selector `0x37e07ffd`.
3045```solidity
3046error BeaconTimestampTooFarInPast();
3047```*/
3048    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3049    #[derive(Clone)]
3050    pub struct BeaconTimestampTooFarInPast;
3051    #[allow(
3052        non_camel_case_types,
3053        non_snake_case,
3054        clippy::pub_underscore_fields,
3055        clippy::style
3056    )]
3057    const _: () = {
3058        use alloy::sol_types as alloy_sol_types;
3059        #[doc(hidden)]
3060        type UnderlyingSolTuple<'a> = ();
3061        #[doc(hidden)]
3062        type UnderlyingRustTuple<'a> = ();
3063        #[cfg(test)]
3064        #[allow(dead_code, unreachable_patterns)]
3065        fn _type_assertion(
3066            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3067        ) {
3068            match _t {
3069                alloy_sol_types::private::AssertTypeEq::<
3070                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3071                >(_) => {}
3072            }
3073        }
3074        #[automatically_derived]
3075        #[doc(hidden)]
3076        impl ::core::convert::From<BeaconTimestampTooFarInPast>
3077        for UnderlyingRustTuple<'_> {
3078            fn from(value: BeaconTimestampTooFarInPast) -> Self {
3079                ()
3080            }
3081        }
3082        #[automatically_derived]
3083        #[doc(hidden)]
3084        impl ::core::convert::From<UnderlyingRustTuple<'_>>
3085        for BeaconTimestampTooFarInPast {
3086            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3087                Self
3088            }
3089        }
3090        #[automatically_derived]
3091        impl alloy_sol_types::SolError for BeaconTimestampTooFarInPast {
3092            type Parameters<'a> = UnderlyingSolTuple<'a>;
3093            type Token<'a> = <Self::Parameters<
3094                'a,
3095            > as alloy_sol_types::SolType>::Token<'a>;
3096            const SIGNATURE: &'static str = "BeaconTimestampTooFarInPast()";
3097            const SELECTOR: [u8; 4] = [55u8, 224u8, 127u8, 253u8];
3098            #[inline]
3099            fn new<'a>(
3100                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3101            ) -> Self {
3102                tuple.into()
3103            }
3104            #[inline]
3105            fn tokenize(&self) -> Self::Token<'_> {
3106                ()
3107            }
3108            #[inline]
3109            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3110                <Self::Parameters<
3111                    '_,
3112                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3113                    .map(Self::new)
3114            }
3115        }
3116    };
3117    #[derive(serde::Serialize, serde::Deserialize)]
3118    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3119    /**Custom error with signature `CannotCheckpointTwiceInSingleBlock()` and selector `0x67db5b8b`.
3120```solidity
3121error CannotCheckpointTwiceInSingleBlock();
3122```*/
3123    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3124    #[derive(Clone)]
3125    pub struct CannotCheckpointTwiceInSingleBlock;
3126    #[allow(
3127        non_camel_case_types,
3128        non_snake_case,
3129        clippy::pub_underscore_fields,
3130        clippy::style
3131    )]
3132    const _: () = {
3133        use alloy::sol_types as alloy_sol_types;
3134        #[doc(hidden)]
3135        type UnderlyingSolTuple<'a> = ();
3136        #[doc(hidden)]
3137        type UnderlyingRustTuple<'a> = ();
3138        #[cfg(test)]
3139        #[allow(dead_code, unreachable_patterns)]
3140        fn _type_assertion(
3141            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3142        ) {
3143            match _t {
3144                alloy_sol_types::private::AssertTypeEq::<
3145                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3146                >(_) => {}
3147            }
3148        }
3149        #[automatically_derived]
3150        #[doc(hidden)]
3151        impl ::core::convert::From<CannotCheckpointTwiceInSingleBlock>
3152        for UnderlyingRustTuple<'_> {
3153            fn from(value: CannotCheckpointTwiceInSingleBlock) -> Self {
3154                ()
3155            }
3156        }
3157        #[automatically_derived]
3158        #[doc(hidden)]
3159        impl ::core::convert::From<UnderlyingRustTuple<'_>>
3160        for CannotCheckpointTwiceInSingleBlock {
3161            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3162                Self
3163            }
3164        }
3165        #[automatically_derived]
3166        impl alloy_sol_types::SolError for CannotCheckpointTwiceInSingleBlock {
3167            type Parameters<'a> = UnderlyingSolTuple<'a>;
3168            type Token<'a> = <Self::Parameters<
3169                'a,
3170            > as alloy_sol_types::SolType>::Token<'a>;
3171            const SIGNATURE: &'static str = "CannotCheckpointTwiceInSingleBlock()";
3172            const SELECTOR: [u8; 4] = [103u8, 219u8, 91u8, 139u8];
3173            #[inline]
3174            fn new<'a>(
3175                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3176            ) -> Self {
3177                tuple.into()
3178            }
3179            #[inline]
3180            fn tokenize(&self) -> Self::Token<'_> {
3181                ()
3182            }
3183            #[inline]
3184            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3185                <Self::Parameters<
3186                    '_,
3187                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3188                    .map(Self::new)
3189            }
3190        }
3191    };
3192    #[derive(serde::Serialize, serde::Deserialize)]
3193    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3194    /**Custom error with signature `CheckpointAlreadyActive()` and selector `0xbe9bc300`.
3195```solidity
3196error CheckpointAlreadyActive();
3197```*/
3198    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3199    #[derive(Clone)]
3200    pub struct CheckpointAlreadyActive;
3201    #[allow(
3202        non_camel_case_types,
3203        non_snake_case,
3204        clippy::pub_underscore_fields,
3205        clippy::style
3206    )]
3207    const _: () = {
3208        use alloy::sol_types as alloy_sol_types;
3209        #[doc(hidden)]
3210        type UnderlyingSolTuple<'a> = ();
3211        #[doc(hidden)]
3212        type UnderlyingRustTuple<'a> = ();
3213        #[cfg(test)]
3214        #[allow(dead_code, unreachable_patterns)]
3215        fn _type_assertion(
3216            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3217        ) {
3218            match _t {
3219                alloy_sol_types::private::AssertTypeEq::<
3220                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3221                >(_) => {}
3222            }
3223        }
3224        #[automatically_derived]
3225        #[doc(hidden)]
3226        impl ::core::convert::From<CheckpointAlreadyActive> for UnderlyingRustTuple<'_> {
3227            fn from(value: CheckpointAlreadyActive) -> Self {
3228                ()
3229            }
3230        }
3231        #[automatically_derived]
3232        #[doc(hidden)]
3233        impl ::core::convert::From<UnderlyingRustTuple<'_>> for CheckpointAlreadyActive {
3234            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3235                Self
3236            }
3237        }
3238        #[automatically_derived]
3239        impl alloy_sol_types::SolError for CheckpointAlreadyActive {
3240            type Parameters<'a> = UnderlyingSolTuple<'a>;
3241            type Token<'a> = <Self::Parameters<
3242                'a,
3243            > as alloy_sol_types::SolType>::Token<'a>;
3244            const SIGNATURE: &'static str = "CheckpointAlreadyActive()";
3245            const SELECTOR: [u8; 4] = [190u8, 155u8, 195u8, 0u8];
3246            #[inline]
3247            fn new<'a>(
3248                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3249            ) -> Self {
3250                tuple.into()
3251            }
3252            #[inline]
3253            fn tokenize(&self) -> Self::Token<'_> {
3254                ()
3255            }
3256            #[inline]
3257            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3258                <Self::Parameters<
3259                    '_,
3260                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3261                    .map(Self::new)
3262            }
3263        }
3264    };
3265    #[derive(serde::Serialize, serde::Deserialize)]
3266    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3267    /**Custom error with signature `CredentialsAlreadyVerified()` and selector `0x35e09e9d`.
3268```solidity
3269error CredentialsAlreadyVerified();
3270```*/
3271    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3272    #[derive(Clone)]
3273    pub struct CredentialsAlreadyVerified;
3274    #[allow(
3275        non_camel_case_types,
3276        non_snake_case,
3277        clippy::pub_underscore_fields,
3278        clippy::style
3279    )]
3280    const _: () = {
3281        use alloy::sol_types as alloy_sol_types;
3282        #[doc(hidden)]
3283        type UnderlyingSolTuple<'a> = ();
3284        #[doc(hidden)]
3285        type UnderlyingRustTuple<'a> = ();
3286        #[cfg(test)]
3287        #[allow(dead_code, unreachable_patterns)]
3288        fn _type_assertion(
3289            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3290        ) {
3291            match _t {
3292                alloy_sol_types::private::AssertTypeEq::<
3293                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3294                >(_) => {}
3295            }
3296        }
3297        #[automatically_derived]
3298        #[doc(hidden)]
3299        impl ::core::convert::From<CredentialsAlreadyVerified>
3300        for UnderlyingRustTuple<'_> {
3301            fn from(value: CredentialsAlreadyVerified) -> Self {
3302                ()
3303            }
3304        }
3305        #[automatically_derived]
3306        #[doc(hidden)]
3307        impl ::core::convert::From<UnderlyingRustTuple<'_>>
3308        for CredentialsAlreadyVerified {
3309            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3310                Self
3311            }
3312        }
3313        #[automatically_derived]
3314        impl alloy_sol_types::SolError for CredentialsAlreadyVerified {
3315            type Parameters<'a> = UnderlyingSolTuple<'a>;
3316            type Token<'a> = <Self::Parameters<
3317                'a,
3318            > as alloy_sol_types::SolType>::Token<'a>;
3319            const SIGNATURE: &'static str = "CredentialsAlreadyVerified()";
3320            const SELECTOR: [u8; 4] = [53u8, 224u8, 158u8, 157u8];
3321            #[inline]
3322            fn new<'a>(
3323                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3324            ) -> Self {
3325                tuple.into()
3326            }
3327            #[inline]
3328            fn tokenize(&self) -> Self::Token<'_> {
3329                ()
3330            }
3331            #[inline]
3332            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3333                <Self::Parameters<
3334                    '_,
3335                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3336                    .map(Self::new)
3337            }
3338        }
3339    };
3340    #[derive(serde::Serialize, serde::Deserialize)]
3341    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3342    /**Custom error with signature `CurrentlyPaused()` and selector `0x840a48d5`.
3343```solidity
3344error CurrentlyPaused();
3345```*/
3346    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3347    #[derive(Clone)]
3348    pub struct CurrentlyPaused;
3349    #[allow(
3350        non_camel_case_types,
3351        non_snake_case,
3352        clippy::pub_underscore_fields,
3353        clippy::style
3354    )]
3355    const _: () = {
3356        use alloy::sol_types as alloy_sol_types;
3357        #[doc(hidden)]
3358        type UnderlyingSolTuple<'a> = ();
3359        #[doc(hidden)]
3360        type UnderlyingRustTuple<'a> = ();
3361        #[cfg(test)]
3362        #[allow(dead_code, unreachable_patterns)]
3363        fn _type_assertion(
3364            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3365        ) {
3366            match _t {
3367                alloy_sol_types::private::AssertTypeEq::<
3368                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3369                >(_) => {}
3370            }
3371        }
3372        #[automatically_derived]
3373        #[doc(hidden)]
3374        impl ::core::convert::From<CurrentlyPaused> for UnderlyingRustTuple<'_> {
3375            fn from(value: CurrentlyPaused) -> Self {
3376                ()
3377            }
3378        }
3379        #[automatically_derived]
3380        #[doc(hidden)]
3381        impl ::core::convert::From<UnderlyingRustTuple<'_>> for CurrentlyPaused {
3382            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3383                Self
3384            }
3385        }
3386        #[automatically_derived]
3387        impl alloy_sol_types::SolError for CurrentlyPaused {
3388            type Parameters<'a> = UnderlyingSolTuple<'a>;
3389            type Token<'a> = <Self::Parameters<
3390                'a,
3391            > as alloy_sol_types::SolType>::Token<'a>;
3392            const SIGNATURE: &'static str = "CurrentlyPaused()";
3393            const SELECTOR: [u8; 4] = [132u8, 10u8, 72u8, 213u8];
3394            #[inline]
3395            fn new<'a>(
3396                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3397            ) -> Self {
3398                tuple.into()
3399            }
3400            #[inline]
3401            fn tokenize(&self) -> Self::Token<'_> {
3402                ()
3403            }
3404            #[inline]
3405            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3406                <Self::Parameters<
3407                    '_,
3408                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3409                    .map(Self::new)
3410            }
3411        }
3412    };
3413    #[derive(serde::Serialize, serde::Deserialize)]
3414    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3415    /**Custom error with signature `InputAddressZero()` and selector `0x73632176`.
3416```solidity
3417error InputAddressZero();
3418```*/
3419    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3420    #[derive(Clone)]
3421    pub struct InputAddressZero;
3422    #[allow(
3423        non_camel_case_types,
3424        non_snake_case,
3425        clippy::pub_underscore_fields,
3426        clippy::style
3427    )]
3428    const _: () = {
3429        use alloy::sol_types as alloy_sol_types;
3430        #[doc(hidden)]
3431        type UnderlyingSolTuple<'a> = ();
3432        #[doc(hidden)]
3433        type UnderlyingRustTuple<'a> = ();
3434        #[cfg(test)]
3435        #[allow(dead_code, unreachable_patterns)]
3436        fn _type_assertion(
3437            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3438        ) {
3439            match _t {
3440                alloy_sol_types::private::AssertTypeEq::<
3441                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3442                >(_) => {}
3443            }
3444        }
3445        #[automatically_derived]
3446        #[doc(hidden)]
3447        impl ::core::convert::From<InputAddressZero> for UnderlyingRustTuple<'_> {
3448            fn from(value: InputAddressZero) -> Self {
3449                ()
3450            }
3451        }
3452        #[automatically_derived]
3453        #[doc(hidden)]
3454        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InputAddressZero {
3455            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3456                Self
3457            }
3458        }
3459        #[automatically_derived]
3460        impl alloy_sol_types::SolError for InputAddressZero {
3461            type Parameters<'a> = UnderlyingSolTuple<'a>;
3462            type Token<'a> = <Self::Parameters<
3463                'a,
3464            > as alloy_sol_types::SolType>::Token<'a>;
3465            const SIGNATURE: &'static str = "InputAddressZero()";
3466            const SELECTOR: [u8; 4] = [115u8, 99u8, 33u8, 118u8];
3467            #[inline]
3468            fn new<'a>(
3469                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3470            ) -> Self {
3471                tuple.into()
3472            }
3473            #[inline]
3474            fn tokenize(&self) -> Self::Token<'_> {
3475                ()
3476            }
3477            #[inline]
3478            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3479                <Self::Parameters<
3480                    '_,
3481                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3482                    .map(Self::new)
3483            }
3484        }
3485    };
3486    #[derive(serde::Serialize, serde::Deserialize)]
3487    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3488    /**Custom error with signature `InputArrayLengthMismatch()` and selector `0x43714afd`.
3489```solidity
3490error InputArrayLengthMismatch();
3491```*/
3492    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3493    #[derive(Clone)]
3494    pub struct InputArrayLengthMismatch;
3495    #[allow(
3496        non_camel_case_types,
3497        non_snake_case,
3498        clippy::pub_underscore_fields,
3499        clippy::style
3500    )]
3501    const _: () = {
3502        use alloy::sol_types as alloy_sol_types;
3503        #[doc(hidden)]
3504        type UnderlyingSolTuple<'a> = ();
3505        #[doc(hidden)]
3506        type UnderlyingRustTuple<'a> = ();
3507        #[cfg(test)]
3508        #[allow(dead_code, unreachable_patterns)]
3509        fn _type_assertion(
3510            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3511        ) {
3512            match _t {
3513                alloy_sol_types::private::AssertTypeEq::<
3514                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3515                >(_) => {}
3516            }
3517        }
3518        #[automatically_derived]
3519        #[doc(hidden)]
3520        impl ::core::convert::From<InputArrayLengthMismatch>
3521        for UnderlyingRustTuple<'_> {
3522            fn from(value: InputArrayLengthMismatch) -> Self {
3523                ()
3524            }
3525        }
3526        #[automatically_derived]
3527        #[doc(hidden)]
3528        impl ::core::convert::From<UnderlyingRustTuple<'_>>
3529        for InputArrayLengthMismatch {
3530            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3531                Self
3532            }
3533        }
3534        #[automatically_derived]
3535        impl alloy_sol_types::SolError for InputArrayLengthMismatch {
3536            type Parameters<'a> = UnderlyingSolTuple<'a>;
3537            type Token<'a> = <Self::Parameters<
3538                'a,
3539            > as alloy_sol_types::SolType>::Token<'a>;
3540            const SIGNATURE: &'static str = "InputArrayLengthMismatch()";
3541            const SELECTOR: [u8; 4] = [67u8, 113u8, 74u8, 253u8];
3542            #[inline]
3543            fn new<'a>(
3544                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3545            ) -> Self {
3546                tuple.into()
3547            }
3548            #[inline]
3549            fn tokenize(&self) -> Self::Token<'_> {
3550                ()
3551            }
3552            #[inline]
3553            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3554                <Self::Parameters<
3555                    '_,
3556                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3557                    .map(Self::new)
3558            }
3559        }
3560    };
3561    #[derive(serde::Serialize, serde::Deserialize)]
3562    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3563    /**Custom error with signature `InsufficientWithdrawableBalance()` and selector `0x0b1bd51c`.
3564```solidity
3565error InsufficientWithdrawableBalance();
3566```*/
3567    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3568    #[derive(Clone)]
3569    pub struct InsufficientWithdrawableBalance;
3570    #[allow(
3571        non_camel_case_types,
3572        non_snake_case,
3573        clippy::pub_underscore_fields,
3574        clippy::style
3575    )]
3576    const _: () = {
3577        use alloy::sol_types as alloy_sol_types;
3578        #[doc(hidden)]
3579        type UnderlyingSolTuple<'a> = ();
3580        #[doc(hidden)]
3581        type UnderlyingRustTuple<'a> = ();
3582        #[cfg(test)]
3583        #[allow(dead_code, unreachable_patterns)]
3584        fn _type_assertion(
3585            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3586        ) {
3587            match _t {
3588                alloy_sol_types::private::AssertTypeEq::<
3589                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3590                >(_) => {}
3591            }
3592        }
3593        #[automatically_derived]
3594        #[doc(hidden)]
3595        impl ::core::convert::From<InsufficientWithdrawableBalance>
3596        for UnderlyingRustTuple<'_> {
3597            fn from(value: InsufficientWithdrawableBalance) -> Self {
3598                ()
3599            }
3600        }
3601        #[automatically_derived]
3602        #[doc(hidden)]
3603        impl ::core::convert::From<UnderlyingRustTuple<'_>>
3604        for InsufficientWithdrawableBalance {
3605            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3606                Self
3607            }
3608        }
3609        #[automatically_derived]
3610        impl alloy_sol_types::SolError for InsufficientWithdrawableBalance {
3611            type Parameters<'a> = UnderlyingSolTuple<'a>;
3612            type Token<'a> = <Self::Parameters<
3613                'a,
3614            > as alloy_sol_types::SolType>::Token<'a>;
3615            const SIGNATURE: &'static str = "InsufficientWithdrawableBalance()";
3616            const SELECTOR: [u8; 4] = [11u8, 27u8, 213u8, 28u8];
3617            #[inline]
3618            fn new<'a>(
3619                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3620            ) -> Self {
3621                tuple.into()
3622            }
3623            #[inline]
3624            fn tokenize(&self) -> Self::Token<'_> {
3625                ()
3626            }
3627            #[inline]
3628            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3629                <Self::Parameters<
3630                    '_,
3631                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3632                    .map(Self::new)
3633            }
3634        }
3635    };
3636    #[derive(serde::Serialize, serde::Deserialize)]
3637    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3638    /**Custom error with signature `InvalidEIP4788Response()` and selector `0x558ad0a3`.
3639```solidity
3640error InvalidEIP4788Response();
3641```*/
3642    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3643    #[derive(Clone)]
3644    pub struct InvalidEIP4788Response;
3645    #[allow(
3646        non_camel_case_types,
3647        non_snake_case,
3648        clippy::pub_underscore_fields,
3649        clippy::style
3650    )]
3651    const _: () = {
3652        use alloy::sol_types as alloy_sol_types;
3653        #[doc(hidden)]
3654        type UnderlyingSolTuple<'a> = ();
3655        #[doc(hidden)]
3656        type UnderlyingRustTuple<'a> = ();
3657        #[cfg(test)]
3658        #[allow(dead_code, unreachable_patterns)]
3659        fn _type_assertion(
3660            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3661        ) {
3662            match _t {
3663                alloy_sol_types::private::AssertTypeEq::<
3664                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3665                >(_) => {}
3666            }
3667        }
3668        #[automatically_derived]
3669        #[doc(hidden)]
3670        impl ::core::convert::From<InvalidEIP4788Response> for UnderlyingRustTuple<'_> {
3671            fn from(value: InvalidEIP4788Response) -> Self {
3672                ()
3673            }
3674        }
3675        #[automatically_derived]
3676        #[doc(hidden)]
3677        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidEIP4788Response {
3678            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3679                Self
3680            }
3681        }
3682        #[automatically_derived]
3683        impl alloy_sol_types::SolError for InvalidEIP4788Response {
3684            type Parameters<'a> = UnderlyingSolTuple<'a>;
3685            type Token<'a> = <Self::Parameters<
3686                'a,
3687            > as alloy_sol_types::SolType>::Token<'a>;
3688            const SIGNATURE: &'static str = "InvalidEIP4788Response()";
3689            const SELECTOR: [u8; 4] = [85u8, 138u8, 208u8, 163u8];
3690            #[inline]
3691            fn new<'a>(
3692                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3693            ) -> Self {
3694                tuple.into()
3695            }
3696            #[inline]
3697            fn tokenize(&self) -> Self::Token<'_> {
3698                ()
3699            }
3700            #[inline]
3701            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3702                <Self::Parameters<
3703                    '_,
3704                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3705                    .map(Self::new)
3706            }
3707        }
3708    };
3709    #[derive(serde::Serialize, serde::Deserialize)]
3710    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3711    /**Custom error with signature `InvalidProof()` and selector `0x09bde339`.
3712```solidity
3713error InvalidProof();
3714```*/
3715    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3716    #[derive(Clone)]
3717    pub struct InvalidProof;
3718    #[allow(
3719        non_camel_case_types,
3720        non_snake_case,
3721        clippy::pub_underscore_fields,
3722        clippy::style
3723    )]
3724    const _: () = {
3725        use alloy::sol_types as alloy_sol_types;
3726        #[doc(hidden)]
3727        type UnderlyingSolTuple<'a> = ();
3728        #[doc(hidden)]
3729        type UnderlyingRustTuple<'a> = ();
3730        #[cfg(test)]
3731        #[allow(dead_code, unreachable_patterns)]
3732        fn _type_assertion(
3733            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3734        ) {
3735            match _t {
3736                alloy_sol_types::private::AssertTypeEq::<
3737                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3738                >(_) => {}
3739            }
3740        }
3741        #[automatically_derived]
3742        #[doc(hidden)]
3743        impl ::core::convert::From<InvalidProof> for UnderlyingRustTuple<'_> {
3744            fn from(value: InvalidProof) -> Self {
3745                ()
3746            }
3747        }
3748        #[automatically_derived]
3749        #[doc(hidden)]
3750        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidProof {
3751            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3752                Self
3753            }
3754        }
3755        #[automatically_derived]
3756        impl alloy_sol_types::SolError for InvalidProof {
3757            type Parameters<'a> = UnderlyingSolTuple<'a>;
3758            type Token<'a> = <Self::Parameters<
3759                'a,
3760            > as alloy_sol_types::SolType>::Token<'a>;
3761            const SIGNATURE: &'static str = "InvalidProof()";
3762            const SELECTOR: [u8; 4] = [9u8, 189u8, 227u8, 57u8];
3763            #[inline]
3764            fn new<'a>(
3765                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3766            ) -> Self {
3767                tuple.into()
3768            }
3769            #[inline]
3770            fn tokenize(&self) -> Self::Token<'_> {
3771                ()
3772            }
3773            #[inline]
3774            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3775                <Self::Parameters<
3776                    '_,
3777                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3778                    .map(Self::new)
3779            }
3780        }
3781    };
3782    #[derive(serde::Serialize, serde::Deserialize)]
3783    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3784    /**Custom error with signature `InvalidProofLength()` and selector `0x4dc5f6a4`.
3785```solidity
3786error InvalidProofLength();
3787```*/
3788    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3789    #[derive(Clone)]
3790    pub struct InvalidProofLength;
3791    #[allow(
3792        non_camel_case_types,
3793        non_snake_case,
3794        clippy::pub_underscore_fields,
3795        clippy::style
3796    )]
3797    const _: () = {
3798        use alloy::sol_types as alloy_sol_types;
3799        #[doc(hidden)]
3800        type UnderlyingSolTuple<'a> = ();
3801        #[doc(hidden)]
3802        type UnderlyingRustTuple<'a> = ();
3803        #[cfg(test)]
3804        #[allow(dead_code, unreachable_patterns)]
3805        fn _type_assertion(
3806            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3807        ) {
3808            match _t {
3809                alloy_sol_types::private::AssertTypeEq::<
3810                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3811                >(_) => {}
3812            }
3813        }
3814        #[automatically_derived]
3815        #[doc(hidden)]
3816        impl ::core::convert::From<InvalidProofLength> for UnderlyingRustTuple<'_> {
3817            fn from(value: InvalidProofLength) -> Self {
3818                ()
3819            }
3820        }
3821        #[automatically_derived]
3822        #[doc(hidden)]
3823        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidProofLength {
3824            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3825                Self
3826            }
3827        }
3828        #[automatically_derived]
3829        impl alloy_sol_types::SolError for InvalidProofLength {
3830            type Parameters<'a> = UnderlyingSolTuple<'a>;
3831            type Token<'a> = <Self::Parameters<
3832                'a,
3833            > as alloy_sol_types::SolType>::Token<'a>;
3834            const SIGNATURE: &'static str = "InvalidProofLength()";
3835            const SELECTOR: [u8; 4] = [77u8, 197u8, 246u8, 164u8];
3836            #[inline]
3837            fn new<'a>(
3838                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3839            ) -> Self {
3840                tuple.into()
3841            }
3842            #[inline]
3843            fn tokenize(&self) -> Self::Token<'_> {
3844                ()
3845            }
3846            #[inline]
3847            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3848                <Self::Parameters<
3849                    '_,
3850                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3851                    .map(Self::new)
3852            }
3853        }
3854    };
3855    #[derive(serde::Serialize, serde::Deserialize)]
3856    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3857    /**Custom error with signature `InvalidPubKeyLength()` and selector `0x9f106472`.
3858```solidity
3859error InvalidPubKeyLength();
3860```*/
3861    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3862    #[derive(Clone)]
3863    pub struct InvalidPubKeyLength;
3864    #[allow(
3865        non_camel_case_types,
3866        non_snake_case,
3867        clippy::pub_underscore_fields,
3868        clippy::style
3869    )]
3870    const _: () = {
3871        use alloy::sol_types as alloy_sol_types;
3872        #[doc(hidden)]
3873        type UnderlyingSolTuple<'a> = ();
3874        #[doc(hidden)]
3875        type UnderlyingRustTuple<'a> = ();
3876        #[cfg(test)]
3877        #[allow(dead_code, unreachable_patterns)]
3878        fn _type_assertion(
3879            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3880        ) {
3881            match _t {
3882                alloy_sol_types::private::AssertTypeEq::<
3883                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3884                >(_) => {}
3885            }
3886        }
3887        #[automatically_derived]
3888        #[doc(hidden)]
3889        impl ::core::convert::From<InvalidPubKeyLength> for UnderlyingRustTuple<'_> {
3890            fn from(value: InvalidPubKeyLength) -> Self {
3891                ()
3892            }
3893        }
3894        #[automatically_derived]
3895        #[doc(hidden)]
3896        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidPubKeyLength {
3897            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3898                Self
3899            }
3900        }
3901        #[automatically_derived]
3902        impl alloy_sol_types::SolError for InvalidPubKeyLength {
3903            type Parameters<'a> = UnderlyingSolTuple<'a>;
3904            type Token<'a> = <Self::Parameters<
3905                'a,
3906            > as alloy_sol_types::SolType>::Token<'a>;
3907            const SIGNATURE: &'static str = "InvalidPubKeyLength()";
3908            const SELECTOR: [u8; 4] = [159u8, 16u8, 100u8, 114u8];
3909            #[inline]
3910            fn new<'a>(
3911                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3912            ) -> Self {
3913                tuple.into()
3914            }
3915            #[inline]
3916            fn tokenize(&self) -> Self::Token<'_> {
3917                ()
3918            }
3919            #[inline]
3920            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3921                <Self::Parameters<
3922                    '_,
3923                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3924                    .map(Self::new)
3925            }
3926        }
3927    };
3928    #[derive(serde::Serialize, serde::Deserialize)]
3929    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3930    /**Custom error with signature `InvalidShortString()` and selector `0xb3512b0c`.
3931```solidity
3932error InvalidShortString();
3933```*/
3934    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3935    #[derive(Clone)]
3936    pub struct InvalidShortString;
3937    #[allow(
3938        non_camel_case_types,
3939        non_snake_case,
3940        clippy::pub_underscore_fields,
3941        clippy::style
3942    )]
3943    const _: () = {
3944        use alloy::sol_types as alloy_sol_types;
3945        #[doc(hidden)]
3946        type UnderlyingSolTuple<'a> = ();
3947        #[doc(hidden)]
3948        type UnderlyingRustTuple<'a> = ();
3949        #[cfg(test)]
3950        #[allow(dead_code, unreachable_patterns)]
3951        fn _type_assertion(
3952            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3953        ) {
3954            match _t {
3955                alloy_sol_types::private::AssertTypeEq::<
3956                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3957                >(_) => {}
3958            }
3959        }
3960        #[automatically_derived]
3961        #[doc(hidden)]
3962        impl ::core::convert::From<InvalidShortString> for UnderlyingRustTuple<'_> {
3963            fn from(value: InvalidShortString) -> Self {
3964                ()
3965            }
3966        }
3967        #[automatically_derived]
3968        #[doc(hidden)]
3969        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidShortString {
3970            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3971                Self
3972            }
3973        }
3974        #[automatically_derived]
3975        impl alloy_sol_types::SolError for InvalidShortString {
3976            type Parameters<'a> = UnderlyingSolTuple<'a>;
3977            type Token<'a> = <Self::Parameters<
3978                'a,
3979            > as alloy_sol_types::SolType>::Token<'a>;
3980            const SIGNATURE: &'static str = "InvalidShortString()";
3981            const SELECTOR: [u8; 4] = [179u8, 81u8, 43u8, 12u8];
3982            #[inline]
3983            fn new<'a>(
3984                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3985            ) -> Self {
3986                tuple.into()
3987            }
3988            #[inline]
3989            fn tokenize(&self) -> Self::Token<'_> {
3990                ()
3991            }
3992            #[inline]
3993            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3994                <Self::Parameters<
3995                    '_,
3996                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3997                    .map(Self::new)
3998            }
3999        }
4000    };
4001    #[derive(serde::Serialize, serde::Deserialize)]
4002    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4003    /**Custom error with signature `InvalidValidatorFieldsLength()` and selector `0x200591bd`.
4004```solidity
4005error InvalidValidatorFieldsLength();
4006```*/
4007    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4008    #[derive(Clone)]
4009    pub struct InvalidValidatorFieldsLength;
4010    #[allow(
4011        non_camel_case_types,
4012        non_snake_case,
4013        clippy::pub_underscore_fields,
4014        clippy::style
4015    )]
4016    const _: () = {
4017        use alloy::sol_types as alloy_sol_types;
4018        #[doc(hidden)]
4019        type UnderlyingSolTuple<'a> = ();
4020        #[doc(hidden)]
4021        type UnderlyingRustTuple<'a> = ();
4022        #[cfg(test)]
4023        #[allow(dead_code, unreachable_patterns)]
4024        fn _type_assertion(
4025            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4026        ) {
4027            match _t {
4028                alloy_sol_types::private::AssertTypeEq::<
4029                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4030                >(_) => {}
4031            }
4032        }
4033        #[automatically_derived]
4034        #[doc(hidden)]
4035        impl ::core::convert::From<InvalidValidatorFieldsLength>
4036        for UnderlyingRustTuple<'_> {
4037            fn from(value: InvalidValidatorFieldsLength) -> Self {
4038                ()
4039            }
4040        }
4041        #[automatically_derived]
4042        #[doc(hidden)]
4043        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4044        for InvalidValidatorFieldsLength {
4045            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4046                Self
4047            }
4048        }
4049        #[automatically_derived]
4050        impl alloy_sol_types::SolError for InvalidValidatorFieldsLength {
4051            type Parameters<'a> = UnderlyingSolTuple<'a>;
4052            type Token<'a> = <Self::Parameters<
4053                'a,
4054            > as alloy_sol_types::SolType>::Token<'a>;
4055            const SIGNATURE: &'static str = "InvalidValidatorFieldsLength()";
4056            const SELECTOR: [u8; 4] = [32u8, 5u8, 145u8, 189u8];
4057            #[inline]
4058            fn new<'a>(
4059                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4060            ) -> Self {
4061                tuple.into()
4062            }
4063            #[inline]
4064            fn tokenize(&self) -> Self::Token<'_> {
4065                ()
4066            }
4067            #[inline]
4068            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4069                <Self::Parameters<
4070                    '_,
4071                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4072                    .map(Self::new)
4073            }
4074        }
4075    };
4076    #[derive(serde::Serialize, serde::Deserialize)]
4077    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4078    /**Custom error with signature `MsgValueNot32ETH()` and selector `0x24b4b598`.
4079```solidity
4080error MsgValueNot32ETH();
4081```*/
4082    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4083    #[derive(Clone)]
4084    pub struct MsgValueNot32ETH;
4085    #[allow(
4086        non_camel_case_types,
4087        non_snake_case,
4088        clippy::pub_underscore_fields,
4089        clippy::style
4090    )]
4091    const _: () = {
4092        use alloy::sol_types as alloy_sol_types;
4093        #[doc(hidden)]
4094        type UnderlyingSolTuple<'a> = ();
4095        #[doc(hidden)]
4096        type UnderlyingRustTuple<'a> = ();
4097        #[cfg(test)]
4098        #[allow(dead_code, unreachable_patterns)]
4099        fn _type_assertion(
4100            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4101        ) {
4102            match _t {
4103                alloy_sol_types::private::AssertTypeEq::<
4104                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4105                >(_) => {}
4106            }
4107        }
4108        #[automatically_derived]
4109        #[doc(hidden)]
4110        impl ::core::convert::From<MsgValueNot32ETH> for UnderlyingRustTuple<'_> {
4111            fn from(value: MsgValueNot32ETH) -> Self {
4112                ()
4113            }
4114        }
4115        #[automatically_derived]
4116        #[doc(hidden)]
4117        impl ::core::convert::From<UnderlyingRustTuple<'_>> for MsgValueNot32ETH {
4118            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4119                Self
4120            }
4121        }
4122        #[automatically_derived]
4123        impl alloy_sol_types::SolError for MsgValueNot32ETH {
4124            type Parameters<'a> = UnderlyingSolTuple<'a>;
4125            type Token<'a> = <Self::Parameters<
4126                'a,
4127            > as alloy_sol_types::SolType>::Token<'a>;
4128            const SIGNATURE: &'static str = "MsgValueNot32ETH()";
4129            const SELECTOR: [u8; 4] = [36u8, 180u8, 181u8, 152u8];
4130            #[inline]
4131            fn new<'a>(
4132                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4133            ) -> Self {
4134                tuple.into()
4135            }
4136            #[inline]
4137            fn tokenize(&self) -> Self::Token<'_> {
4138                ()
4139            }
4140            #[inline]
4141            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4142                <Self::Parameters<
4143                    '_,
4144                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4145                    .map(Self::new)
4146            }
4147        }
4148    };
4149    #[derive(serde::Serialize, serde::Deserialize)]
4150    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4151    /**Custom error with signature `NoActiveCheckpoint()` and selector `0x1a544f49`.
4152```solidity
4153error NoActiveCheckpoint();
4154```*/
4155    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4156    #[derive(Clone)]
4157    pub struct NoActiveCheckpoint;
4158    #[allow(
4159        non_camel_case_types,
4160        non_snake_case,
4161        clippy::pub_underscore_fields,
4162        clippy::style
4163    )]
4164    const _: () = {
4165        use alloy::sol_types as alloy_sol_types;
4166        #[doc(hidden)]
4167        type UnderlyingSolTuple<'a> = ();
4168        #[doc(hidden)]
4169        type UnderlyingRustTuple<'a> = ();
4170        #[cfg(test)]
4171        #[allow(dead_code, unreachable_patterns)]
4172        fn _type_assertion(
4173            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4174        ) {
4175            match _t {
4176                alloy_sol_types::private::AssertTypeEq::<
4177                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4178                >(_) => {}
4179            }
4180        }
4181        #[automatically_derived]
4182        #[doc(hidden)]
4183        impl ::core::convert::From<NoActiveCheckpoint> for UnderlyingRustTuple<'_> {
4184            fn from(value: NoActiveCheckpoint) -> Self {
4185                ()
4186            }
4187        }
4188        #[automatically_derived]
4189        #[doc(hidden)]
4190        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NoActiveCheckpoint {
4191            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4192                Self
4193            }
4194        }
4195        #[automatically_derived]
4196        impl alloy_sol_types::SolError for NoActiveCheckpoint {
4197            type Parameters<'a> = UnderlyingSolTuple<'a>;
4198            type Token<'a> = <Self::Parameters<
4199                'a,
4200            > as alloy_sol_types::SolType>::Token<'a>;
4201            const SIGNATURE: &'static str = "NoActiveCheckpoint()";
4202            const SELECTOR: [u8; 4] = [26u8, 84u8, 79u8, 73u8];
4203            #[inline]
4204            fn new<'a>(
4205                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4206            ) -> Self {
4207                tuple.into()
4208            }
4209            #[inline]
4210            fn tokenize(&self) -> Self::Token<'_> {
4211                ()
4212            }
4213            #[inline]
4214            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4215                <Self::Parameters<
4216                    '_,
4217                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4218                    .map(Self::new)
4219            }
4220        }
4221    };
4222    #[derive(serde::Serialize, serde::Deserialize)]
4223    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4224    /**Custom error with signature `NoBalanceToCheckpoint()` and selector `0xcb7aa564`.
4225```solidity
4226error NoBalanceToCheckpoint();
4227```*/
4228    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4229    #[derive(Clone)]
4230    pub struct NoBalanceToCheckpoint;
4231    #[allow(
4232        non_camel_case_types,
4233        non_snake_case,
4234        clippy::pub_underscore_fields,
4235        clippy::style
4236    )]
4237    const _: () = {
4238        use alloy::sol_types as alloy_sol_types;
4239        #[doc(hidden)]
4240        type UnderlyingSolTuple<'a> = ();
4241        #[doc(hidden)]
4242        type UnderlyingRustTuple<'a> = ();
4243        #[cfg(test)]
4244        #[allow(dead_code, unreachable_patterns)]
4245        fn _type_assertion(
4246            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4247        ) {
4248            match _t {
4249                alloy_sol_types::private::AssertTypeEq::<
4250                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4251                >(_) => {}
4252            }
4253        }
4254        #[automatically_derived]
4255        #[doc(hidden)]
4256        impl ::core::convert::From<NoBalanceToCheckpoint> for UnderlyingRustTuple<'_> {
4257            fn from(value: NoBalanceToCheckpoint) -> Self {
4258                ()
4259            }
4260        }
4261        #[automatically_derived]
4262        #[doc(hidden)]
4263        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NoBalanceToCheckpoint {
4264            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4265                Self
4266            }
4267        }
4268        #[automatically_derived]
4269        impl alloy_sol_types::SolError for NoBalanceToCheckpoint {
4270            type Parameters<'a> = UnderlyingSolTuple<'a>;
4271            type Token<'a> = <Self::Parameters<
4272                'a,
4273            > as alloy_sol_types::SolType>::Token<'a>;
4274            const SIGNATURE: &'static str = "NoBalanceToCheckpoint()";
4275            const SELECTOR: [u8; 4] = [203u8, 122u8, 165u8, 100u8];
4276            #[inline]
4277            fn new<'a>(
4278                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4279            ) -> Self {
4280                tuple.into()
4281            }
4282            #[inline]
4283            fn tokenize(&self) -> Self::Token<'_> {
4284                ()
4285            }
4286            #[inline]
4287            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4288                <Self::Parameters<
4289                    '_,
4290                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4291                    .map(Self::new)
4292            }
4293        }
4294    };
4295    #[derive(serde::Serialize, serde::Deserialize)]
4296    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4297    /**Custom error with signature `OnlyEigenPodManager()` and selector `0xc84e9984`.
4298```solidity
4299error OnlyEigenPodManager();
4300```*/
4301    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4302    #[derive(Clone)]
4303    pub struct OnlyEigenPodManager;
4304    #[allow(
4305        non_camel_case_types,
4306        non_snake_case,
4307        clippy::pub_underscore_fields,
4308        clippy::style
4309    )]
4310    const _: () = {
4311        use alloy::sol_types as alloy_sol_types;
4312        #[doc(hidden)]
4313        type UnderlyingSolTuple<'a> = ();
4314        #[doc(hidden)]
4315        type UnderlyingRustTuple<'a> = ();
4316        #[cfg(test)]
4317        #[allow(dead_code, unreachable_patterns)]
4318        fn _type_assertion(
4319            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4320        ) {
4321            match _t {
4322                alloy_sol_types::private::AssertTypeEq::<
4323                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4324                >(_) => {}
4325            }
4326        }
4327        #[automatically_derived]
4328        #[doc(hidden)]
4329        impl ::core::convert::From<OnlyEigenPodManager> for UnderlyingRustTuple<'_> {
4330            fn from(value: OnlyEigenPodManager) -> Self {
4331                ()
4332            }
4333        }
4334        #[automatically_derived]
4335        #[doc(hidden)]
4336        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OnlyEigenPodManager {
4337            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4338                Self
4339            }
4340        }
4341        #[automatically_derived]
4342        impl alloy_sol_types::SolError for OnlyEigenPodManager {
4343            type Parameters<'a> = UnderlyingSolTuple<'a>;
4344            type Token<'a> = <Self::Parameters<
4345                'a,
4346            > as alloy_sol_types::SolType>::Token<'a>;
4347            const SIGNATURE: &'static str = "OnlyEigenPodManager()";
4348            const SELECTOR: [u8; 4] = [200u8, 78u8, 153u8, 132u8];
4349            #[inline]
4350            fn new<'a>(
4351                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4352            ) -> Self {
4353                tuple.into()
4354            }
4355            #[inline]
4356            fn tokenize(&self) -> Self::Token<'_> {
4357                ()
4358            }
4359            #[inline]
4360            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4361                <Self::Parameters<
4362                    '_,
4363                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4364                    .map(Self::new)
4365            }
4366        }
4367    };
4368    #[derive(serde::Serialize, serde::Deserialize)]
4369    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4370    /**Custom error with signature `OnlyEigenPodOwner()` and selector `0xe33e6e06`.
4371```solidity
4372error OnlyEigenPodOwner();
4373```*/
4374    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4375    #[derive(Clone)]
4376    pub struct OnlyEigenPodOwner;
4377    #[allow(
4378        non_camel_case_types,
4379        non_snake_case,
4380        clippy::pub_underscore_fields,
4381        clippy::style
4382    )]
4383    const _: () = {
4384        use alloy::sol_types as alloy_sol_types;
4385        #[doc(hidden)]
4386        type UnderlyingSolTuple<'a> = ();
4387        #[doc(hidden)]
4388        type UnderlyingRustTuple<'a> = ();
4389        #[cfg(test)]
4390        #[allow(dead_code, unreachable_patterns)]
4391        fn _type_assertion(
4392            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4393        ) {
4394            match _t {
4395                alloy_sol_types::private::AssertTypeEq::<
4396                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4397                >(_) => {}
4398            }
4399        }
4400        #[automatically_derived]
4401        #[doc(hidden)]
4402        impl ::core::convert::From<OnlyEigenPodOwner> for UnderlyingRustTuple<'_> {
4403            fn from(value: OnlyEigenPodOwner) -> Self {
4404                ()
4405            }
4406        }
4407        #[automatically_derived]
4408        #[doc(hidden)]
4409        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OnlyEigenPodOwner {
4410            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4411                Self
4412            }
4413        }
4414        #[automatically_derived]
4415        impl alloy_sol_types::SolError for OnlyEigenPodOwner {
4416            type Parameters<'a> = UnderlyingSolTuple<'a>;
4417            type Token<'a> = <Self::Parameters<
4418                'a,
4419            > as alloy_sol_types::SolType>::Token<'a>;
4420            const SIGNATURE: &'static str = "OnlyEigenPodOwner()";
4421            const SELECTOR: [u8; 4] = [227u8, 62u8, 110u8, 6u8];
4422            #[inline]
4423            fn new<'a>(
4424                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4425            ) -> Self {
4426                tuple.into()
4427            }
4428            #[inline]
4429            fn tokenize(&self) -> Self::Token<'_> {
4430                ()
4431            }
4432            #[inline]
4433            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4434                <Self::Parameters<
4435                    '_,
4436                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4437                    .map(Self::new)
4438            }
4439        }
4440    };
4441    #[derive(serde::Serialize, serde::Deserialize)]
4442    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4443    /**Custom error with signature `OnlyEigenPodOwnerOrProofSubmitter()` and selector `0x427a7779`.
4444```solidity
4445error OnlyEigenPodOwnerOrProofSubmitter();
4446```*/
4447    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4448    #[derive(Clone)]
4449    pub struct OnlyEigenPodOwnerOrProofSubmitter;
4450    #[allow(
4451        non_camel_case_types,
4452        non_snake_case,
4453        clippy::pub_underscore_fields,
4454        clippy::style
4455    )]
4456    const _: () = {
4457        use alloy::sol_types as alloy_sol_types;
4458        #[doc(hidden)]
4459        type UnderlyingSolTuple<'a> = ();
4460        #[doc(hidden)]
4461        type UnderlyingRustTuple<'a> = ();
4462        #[cfg(test)]
4463        #[allow(dead_code, unreachable_patterns)]
4464        fn _type_assertion(
4465            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4466        ) {
4467            match _t {
4468                alloy_sol_types::private::AssertTypeEq::<
4469                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4470                >(_) => {}
4471            }
4472        }
4473        #[automatically_derived]
4474        #[doc(hidden)]
4475        impl ::core::convert::From<OnlyEigenPodOwnerOrProofSubmitter>
4476        for UnderlyingRustTuple<'_> {
4477            fn from(value: OnlyEigenPodOwnerOrProofSubmitter) -> Self {
4478                ()
4479            }
4480        }
4481        #[automatically_derived]
4482        #[doc(hidden)]
4483        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4484        for OnlyEigenPodOwnerOrProofSubmitter {
4485            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4486                Self
4487            }
4488        }
4489        #[automatically_derived]
4490        impl alloy_sol_types::SolError for OnlyEigenPodOwnerOrProofSubmitter {
4491            type Parameters<'a> = UnderlyingSolTuple<'a>;
4492            type Token<'a> = <Self::Parameters<
4493                'a,
4494            > as alloy_sol_types::SolType>::Token<'a>;
4495            const SIGNATURE: &'static str = "OnlyEigenPodOwnerOrProofSubmitter()";
4496            const SELECTOR: [u8; 4] = [66u8, 122u8, 119u8, 121u8];
4497            #[inline]
4498            fn new<'a>(
4499                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4500            ) -> Self {
4501                tuple.into()
4502            }
4503            #[inline]
4504            fn tokenize(&self) -> Self::Token<'_> {
4505                ()
4506            }
4507            #[inline]
4508            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4509                <Self::Parameters<
4510                    '_,
4511                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4512                    .map(Self::new)
4513            }
4514        }
4515    };
4516    #[derive(serde::Serialize, serde::Deserialize)]
4517    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4518    /**Custom error with signature `StringTooLong(string)` and selector `0x305a27a9`.
4519```solidity
4520error StringTooLong(string str);
4521```*/
4522    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4523    #[derive(Clone)]
4524    pub struct StringTooLong {
4525        #[allow(missing_docs)]
4526        pub str: alloy::sol_types::private::String,
4527    }
4528    #[allow(
4529        non_camel_case_types,
4530        non_snake_case,
4531        clippy::pub_underscore_fields,
4532        clippy::style
4533    )]
4534    const _: () = {
4535        use alloy::sol_types as alloy_sol_types;
4536        #[doc(hidden)]
4537        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
4538        #[doc(hidden)]
4539        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
4540        #[cfg(test)]
4541        #[allow(dead_code, unreachable_patterns)]
4542        fn _type_assertion(
4543            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4544        ) {
4545            match _t {
4546                alloy_sol_types::private::AssertTypeEq::<
4547                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4548                >(_) => {}
4549            }
4550        }
4551        #[automatically_derived]
4552        #[doc(hidden)]
4553        impl ::core::convert::From<StringTooLong> for UnderlyingRustTuple<'_> {
4554            fn from(value: StringTooLong) -> Self {
4555                (value.str,)
4556            }
4557        }
4558        #[automatically_derived]
4559        #[doc(hidden)]
4560        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StringTooLong {
4561            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4562                Self { str: tuple.0 }
4563            }
4564        }
4565        #[automatically_derived]
4566        impl alloy_sol_types::SolError for StringTooLong {
4567            type Parameters<'a> = UnderlyingSolTuple<'a>;
4568            type Token<'a> = <Self::Parameters<
4569                'a,
4570            > as alloy_sol_types::SolType>::Token<'a>;
4571            const SIGNATURE: &'static str = "StringTooLong(string)";
4572            const SELECTOR: [u8; 4] = [48u8, 90u8, 39u8, 169u8];
4573            #[inline]
4574            fn new<'a>(
4575                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4576            ) -> Self {
4577                tuple.into()
4578            }
4579            #[inline]
4580            fn tokenize(&self) -> Self::Token<'_> {
4581                (
4582                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
4583                        &self.str,
4584                    ),
4585                )
4586            }
4587            #[inline]
4588            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4589                <Self::Parameters<
4590                    '_,
4591                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4592                    .map(Self::new)
4593            }
4594        }
4595    };
4596    #[derive(serde::Serialize, serde::Deserialize)]
4597    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4598    /**Custom error with signature `TimestampOutOfRange()` and selector `0xf289ccda`.
4599```solidity
4600error TimestampOutOfRange();
4601```*/
4602    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4603    #[derive(Clone)]
4604    pub struct TimestampOutOfRange;
4605    #[allow(
4606        non_camel_case_types,
4607        non_snake_case,
4608        clippy::pub_underscore_fields,
4609        clippy::style
4610    )]
4611    const _: () = {
4612        use alloy::sol_types as alloy_sol_types;
4613        #[doc(hidden)]
4614        type UnderlyingSolTuple<'a> = ();
4615        #[doc(hidden)]
4616        type UnderlyingRustTuple<'a> = ();
4617        #[cfg(test)]
4618        #[allow(dead_code, unreachable_patterns)]
4619        fn _type_assertion(
4620            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4621        ) {
4622            match _t {
4623                alloy_sol_types::private::AssertTypeEq::<
4624                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4625                >(_) => {}
4626            }
4627        }
4628        #[automatically_derived]
4629        #[doc(hidden)]
4630        impl ::core::convert::From<TimestampOutOfRange> for UnderlyingRustTuple<'_> {
4631            fn from(value: TimestampOutOfRange) -> Self {
4632                ()
4633            }
4634        }
4635        #[automatically_derived]
4636        #[doc(hidden)]
4637        impl ::core::convert::From<UnderlyingRustTuple<'_>> for TimestampOutOfRange {
4638            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4639                Self
4640            }
4641        }
4642        #[automatically_derived]
4643        impl alloy_sol_types::SolError for TimestampOutOfRange {
4644            type Parameters<'a> = UnderlyingSolTuple<'a>;
4645            type Token<'a> = <Self::Parameters<
4646                'a,
4647            > as alloy_sol_types::SolType>::Token<'a>;
4648            const SIGNATURE: &'static str = "TimestampOutOfRange()";
4649            const SELECTOR: [u8; 4] = [242u8, 137u8, 204u8, 218u8];
4650            #[inline]
4651            fn new<'a>(
4652                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4653            ) -> Self {
4654                tuple.into()
4655            }
4656            #[inline]
4657            fn tokenize(&self) -> Self::Token<'_> {
4658                ()
4659            }
4660            #[inline]
4661            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4662                <Self::Parameters<
4663                    '_,
4664                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4665                    .map(Self::new)
4666            }
4667        }
4668    };
4669    #[derive(serde::Serialize, serde::Deserialize)]
4670    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4671    /**Custom error with signature `ValidatorInactiveOnBeaconChain()` and selector `0x65608db4`.
4672```solidity
4673error ValidatorInactiveOnBeaconChain();
4674```*/
4675    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4676    #[derive(Clone)]
4677    pub struct ValidatorInactiveOnBeaconChain;
4678    #[allow(
4679        non_camel_case_types,
4680        non_snake_case,
4681        clippy::pub_underscore_fields,
4682        clippy::style
4683    )]
4684    const _: () = {
4685        use alloy::sol_types as alloy_sol_types;
4686        #[doc(hidden)]
4687        type UnderlyingSolTuple<'a> = ();
4688        #[doc(hidden)]
4689        type UnderlyingRustTuple<'a> = ();
4690        #[cfg(test)]
4691        #[allow(dead_code, unreachable_patterns)]
4692        fn _type_assertion(
4693            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4694        ) {
4695            match _t {
4696                alloy_sol_types::private::AssertTypeEq::<
4697                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4698                >(_) => {}
4699            }
4700        }
4701        #[automatically_derived]
4702        #[doc(hidden)]
4703        impl ::core::convert::From<ValidatorInactiveOnBeaconChain>
4704        for UnderlyingRustTuple<'_> {
4705            fn from(value: ValidatorInactiveOnBeaconChain) -> Self {
4706                ()
4707            }
4708        }
4709        #[automatically_derived]
4710        #[doc(hidden)]
4711        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4712        for ValidatorInactiveOnBeaconChain {
4713            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4714                Self
4715            }
4716        }
4717        #[automatically_derived]
4718        impl alloy_sol_types::SolError for ValidatorInactiveOnBeaconChain {
4719            type Parameters<'a> = UnderlyingSolTuple<'a>;
4720            type Token<'a> = <Self::Parameters<
4721                'a,
4722            > as alloy_sol_types::SolType>::Token<'a>;
4723            const SIGNATURE: &'static str = "ValidatorInactiveOnBeaconChain()";
4724            const SELECTOR: [u8; 4] = [101u8, 96u8, 141u8, 180u8];
4725            #[inline]
4726            fn new<'a>(
4727                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4728            ) -> Self {
4729                tuple.into()
4730            }
4731            #[inline]
4732            fn tokenize(&self) -> Self::Token<'_> {
4733                ()
4734            }
4735            #[inline]
4736            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4737                <Self::Parameters<
4738                    '_,
4739                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4740                    .map(Self::new)
4741            }
4742        }
4743    };
4744    #[derive(serde::Serialize, serde::Deserialize)]
4745    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4746    /**Custom error with signature `ValidatorIsExitingBeaconChain()` and selector `0x2eade637`.
4747```solidity
4748error ValidatorIsExitingBeaconChain();
4749```*/
4750    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4751    #[derive(Clone)]
4752    pub struct ValidatorIsExitingBeaconChain;
4753    #[allow(
4754        non_camel_case_types,
4755        non_snake_case,
4756        clippy::pub_underscore_fields,
4757        clippy::style
4758    )]
4759    const _: () = {
4760        use alloy::sol_types as alloy_sol_types;
4761        #[doc(hidden)]
4762        type UnderlyingSolTuple<'a> = ();
4763        #[doc(hidden)]
4764        type UnderlyingRustTuple<'a> = ();
4765        #[cfg(test)]
4766        #[allow(dead_code, unreachable_patterns)]
4767        fn _type_assertion(
4768            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4769        ) {
4770            match _t {
4771                alloy_sol_types::private::AssertTypeEq::<
4772                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4773                >(_) => {}
4774            }
4775        }
4776        #[automatically_derived]
4777        #[doc(hidden)]
4778        impl ::core::convert::From<ValidatorIsExitingBeaconChain>
4779        for UnderlyingRustTuple<'_> {
4780            fn from(value: ValidatorIsExitingBeaconChain) -> Self {
4781                ()
4782            }
4783        }
4784        #[automatically_derived]
4785        #[doc(hidden)]
4786        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4787        for ValidatorIsExitingBeaconChain {
4788            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4789                Self
4790            }
4791        }
4792        #[automatically_derived]
4793        impl alloy_sol_types::SolError for ValidatorIsExitingBeaconChain {
4794            type Parameters<'a> = UnderlyingSolTuple<'a>;
4795            type Token<'a> = <Self::Parameters<
4796                'a,
4797            > as alloy_sol_types::SolType>::Token<'a>;
4798            const SIGNATURE: &'static str = "ValidatorIsExitingBeaconChain()";
4799            const SELECTOR: [u8; 4] = [46u8, 173u8, 230u8, 55u8];
4800            #[inline]
4801            fn new<'a>(
4802                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4803            ) -> Self {
4804                tuple.into()
4805            }
4806            #[inline]
4807            fn tokenize(&self) -> Self::Token<'_> {
4808                ()
4809            }
4810            #[inline]
4811            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4812                <Self::Parameters<
4813                    '_,
4814                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4815                    .map(Self::new)
4816            }
4817        }
4818    };
4819    #[derive(serde::Serialize, serde::Deserialize)]
4820    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4821    /**Custom error with signature `ValidatorNotActiveInPod()` and selector `0xd49e19a7`.
4822```solidity
4823error ValidatorNotActiveInPod();
4824```*/
4825    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4826    #[derive(Clone)]
4827    pub struct ValidatorNotActiveInPod;
4828    #[allow(
4829        non_camel_case_types,
4830        non_snake_case,
4831        clippy::pub_underscore_fields,
4832        clippy::style
4833    )]
4834    const _: () = {
4835        use alloy::sol_types as alloy_sol_types;
4836        #[doc(hidden)]
4837        type UnderlyingSolTuple<'a> = ();
4838        #[doc(hidden)]
4839        type UnderlyingRustTuple<'a> = ();
4840        #[cfg(test)]
4841        #[allow(dead_code, unreachable_patterns)]
4842        fn _type_assertion(
4843            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4844        ) {
4845            match _t {
4846                alloy_sol_types::private::AssertTypeEq::<
4847                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4848                >(_) => {}
4849            }
4850        }
4851        #[automatically_derived]
4852        #[doc(hidden)]
4853        impl ::core::convert::From<ValidatorNotActiveInPod> for UnderlyingRustTuple<'_> {
4854            fn from(value: ValidatorNotActiveInPod) -> Self {
4855                ()
4856            }
4857        }
4858        #[automatically_derived]
4859        #[doc(hidden)]
4860        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ValidatorNotActiveInPod {
4861            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4862                Self
4863            }
4864        }
4865        #[automatically_derived]
4866        impl alloy_sol_types::SolError for ValidatorNotActiveInPod {
4867            type Parameters<'a> = UnderlyingSolTuple<'a>;
4868            type Token<'a> = <Self::Parameters<
4869                'a,
4870            > as alloy_sol_types::SolType>::Token<'a>;
4871            const SIGNATURE: &'static str = "ValidatorNotActiveInPod()";
4872            const SELECTOR: [u8; 4] = [212u8, 158u8, 25u8, 167u8];
4873            #[inline]
4874            fn new<'a>(
4875                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4876            ) -> Self {
4877                tuple.into()
4878            }
4879            #[inline]
4880            fn tokenize(&self) -> Self::Token<'_> {
4881                ()
4882            }
4883            #[inline]
4884            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4885                <Self::Parameters<
4886                    '_,
4887                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4888                    .map(Self::new)
4889            }
4890        }
4891    };
4892    #[derive(serde::Serialize, serde::Deserialize)]
4893    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4894    /**Custom error with signature `ValidatorNotSlashedOnBeaconChain()` and selector `0xb0e72f68`.
4895```solidity
4896error ValidatorNotSlashedOnBeaconChain();
4897```*/
4898    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4899    #[derive(Clone)]
4900    pub struct ValidatorNotSlashedOnBeaconChain;
4901    #[allow(
4902        non_camel_case_types,
4903        non_snake_case,
4904        clippy::pub_underscore_fields,
4905        clippy::style
4906    )]
4907    const _: () = {
4908        use alloy::sol_types as alloy_sol_types;
4909        #[doc(hidden)]
4910        type UnderlyingSolTuple<'a> = ();
4911        #[doc(hidden)]
4912        type UnderlyingRustTuple<'a> = ();
4913        #[cfg(test)]
4914        #[allow(dead_code, unreachable_patterns)]
4915        fn _type_assertion(
4916            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4917        ) {
4918            match _t {
4919                alloy_sol_types::private::AssertTypeEq::<
4920                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4921                >(_) => {}
4922            }
4923        }
4924        #[automatically_derived]
4925        #[doc(hidden)]
4926        impl ::core::convert::From<ValidatorNotSlashedOnBeaconChain>
4927        for UnderlyingRustTuple<'_> {
4928            fn from(value: ValidatorNotSlashedOnBeaconChain) -> Self {
4929                ()
4930            }
4931        }
4932        #[automatically_derived]
4933        #[doc(hidden)]
4934        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4935        for ValidatorNotSlashedOnBeaconChain {
4936            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4937                Self
4938            }
4939        }
4940        #[automatically_derived]
4941        impl alloy_sol_types::SolError for ValidatorNotSlashedOnBeaconChain {
4942            type Parameters<'a> = UnderlyingSolTuple<'a>;
4943            type Token<'a> = <Self::Parameters<
4944                'a,
4945            > as alloy_sol_types::SolType>::Token<'a>;
4946            const SIGNATURE: &'static str = "ValidatorNotSlashedOnBeaconChain()";
4947            const SELECTOR: [u8; 4] = [176u8, 231u8, 47u8, 104u8];
4948            #[inline]
4949            fn new<'a>(
4950                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4951            ) -> Self {
4952                tuple.into()
4953            }
4954            #[inline]
4955            fn tokenize(&self) -> Self::Token<'_> {
4956                ()
4957            }
4958            #[inline]
4959            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4960                <Self::Parameters<
4961                    '_,
4962                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4963                    .map(Self::new)
4964            }
4965        }
4966    };
4967    #[derive(serde::Serialize, serde::Deserialize)]
4968    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4969    /**Custom error with signature `WithdrawalCredentialsNotForEigenPod()` and selector `0x6ee5baa6`.
4970```solidity
4971error WithdrawalCredentialsNotForEigenPod();
4972```*/
4973    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4974    #[derive(Clone)]
4975    pub struct WithdrawalCredentialsNotForEigenPod;
4976    #[allow(
4977        non_camel_case_types,
4978        non_snake_case,
4979        clippy::pub_underscore_fields,
4980        clippy::style
4981    )]
4982    const _: () = {
4983        use alloy::sol_types as alloy_sol_types;
4984        #[doc(hidden)]
4985        type UnderlyingSolTuple<'a> = ();
4986        #[doc(hidden)]
4987        type UnderlyingRustTuple<'a> = ();
4988        #[cfg(test)]
4989        #[allow(dead_code, unreachable_patterns)]
4990        fn _type_assertion(
4991            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4992        ) {
4993            match _t {
4994                alloy_sol_types::private::AssertTypeEq::<
4995                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4996                >(_) => {}
4997            }
4998        }
4999        #[automatically_derived]
5000        #[doc(hidden)]
5001        impl ::core::convert::From<WithdrawalCredentialsNotForEigenPod>
5002        for UnderlyingRustTuple<'_> {
5003            fn from(value: WithdrawalCredentialsNotForEigenPod) -> Self {
5004                ()
5005            }
5006        }
5007        #[automatically_derived]
5008        #[doc(hidden)]
5009        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5010        for WithdrawalCredentialsNotForEigenPod {
5011            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5012                Self
5013            }
5014        }
5015        #[automatically_derived]
5016        impl alloy_sol_types::SolError for WithdrawalCredentialsNotForEigenPod {
5017            type Parameters<'a> = UnderlyingSolTuple<'a>;
5018            type Token<'a> = <Self::Parameters<
5019                'a,
5020            > as alloy_sol_types::SolType>::Token<'a>;
5021            const SIGNATURE: &'static str = "WithdrawalCredentialsNotForEigenPod()";
5022            const SELECTOR: [u8; 4] = [110u8, 229u8, 186u8, 166u8];
5023            #[inline]
5024            fn new<'a>(
5025                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5026            ) -> Self {
5027                tuple.into()
5028            }
5029            #[inline]
5030            fn tokenize(&self) -> Self::Token<'_> {
5031                ()
5032            }
5033            #[inline]
5034            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5035                <Self::Parameters<
5036                    '_,
5037                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5038                    .map(Self::new)
5039            }
5040        }
5041    };
5042    #[derive(serde::Serialize, serde::Deserialize)]
5043    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5044    /**Event with signature `CheckpointCreated(uint64,bytes32,uint256)` and selector `0x575796133bbed337e5b39aa49a30dc2556a91e0c6c2af4b7b886ae77ebef1076`.
5045```solidity
5046event CheckpointCreated(uint64 indexed checkpointTimestamp, bytes32 indexed beaconBlockRoot, uint256 validatorCount);
5047```*/
5048    #[allow(
5049        non_camel_case_types,
5050        non_snake_case,
5051        clippy::pub_underscore_fields,
5052        clippy::style
5053    )]
5054    #[derive(Clone)]
5055    pub struct CheckpointCreated {
5056        #[allow(missing_docs)]
5057        pub checkpointTimestamp: u64,
5058        #[allow(missing_docs)]
5059        pub beaconBlockRoot: alloy::sol_types::private::FixedBytes<32>,
5060        #[allow(missing_docs)]
5061        pub validatorCount: alloy::sol_types::private::primitives::aliases::U256,
5062    }
5063    #[allow(
5064        non_camel_case_types,
5065        non_snake_case,
5066        clippy::pub_underscore_fields,
5067        clippy::style
5068    )]
5069    const _: () = {
5070        use alloy::sol_types as alloy_sol_types;
5071        #[automatically_derived]
5072        impl alloy_sol_types::SolEvent for CheckpointCreated {
5073            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
5074            type DataToken<'a> = <Self::DataTuple<
5075                'a,
5076            > as alloy_sol_types::SolType>::Token<'a>;
5077            type TopicList = (
5078                alloy_sol_types::sol_data::FixedBytes<32>,
5079                alloy::sol_types::sol_data::Uint<64>,
5080                alloy::sol_types::sol_data::FixedBytes<32>,
5081            );
5082            const SIGNATURE: &'static str = "CheckpointCreated(uint64,bytes32,uint256)";
5083            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5084                87u8, 87u8, 150u8, 19u8, 59u8, 190u8, 211u8, 55u8, 229u8, 179u8, 154u8,
5085                164u8, 154u8, 48u8, 220u8, 37u8, 86u8, 169u8, 30u8, 12u8, 108u8, 42u8,
5086                244u8, 183u8, 184u8, 134u8, 174u8, 119u8, 235u8, 239u8, 16u8, 118u8,
5087            ]);
5088            const ANONYMOUS: bool = false;
5089            #[allow(unused_variables)]
5090            #[inline]
5091            fn new(
5092                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5093                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5094            ) -> Self {
5095                Self {
5096                    checkpointTimestamp: topics.1,
5097                    beaconBlockRoot: topics.2,
5098                    validatorCount: data.0,
5099                }
5100            }
5101            #[inline]
5102            fn check_signature(
5103                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5104            ) -> alloy_sol_types::Result<()> {
5105                if topics.0 != Self::SIGNATURE_HASH {
5106                    return Err(
5107                        alloy_sol_types::Error::invalid_event_signature_hash(
5108                            Self::SIGNATURE,
5109                            topics.0,
5110                            Self::SIGNATURE_HASH,
5111                        ),
5112                    );
5113                }
5114                Ok(())
5115            }
5116            #[inline]
5117            fn tokenize_body(&self) -> Self::DataToken<'_> {
5118                (
5119                    <alloy::sol_types::sol_data::Uint<
5120                        256,
5121                    > as alloy_sol_types::SolType>::tokenize(&self.validatorCount),
5122                )
5123            }
5124            #[inline]
5125            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5126                (
5127                    Self::SIGNATURE_HASH.into(),
5128                    self.checkpointTimestamp.clone(),
5129                    self.beaconBlockRoot.clone(),
5130                )
5131            }
5132            #[inline]
5133            fn encode_topics_raw(
5134                &self,
5135                out: &mut [alloy_sol_types::abi::token::WordToken],
5136            ) -> alloy_sol_types::Result<()> {
5137                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5138                    return Err(alloy_sol_types::Error::Overrun);
5139                }
5140                out[0usize] = alloy_sol_types::abi::token::WordToken(
5141                    Self::SIGNATURE_HASH,
5142                );
5143                out[1usize] = <alloy::sol_types::sol_data::Uint<
5144                    64,
5145                > as alloy_sol_types::EventTopic>::encode_topic(
5146                    &self.checkpointTimestamp,
5147                );
5148                out[2usize] = <alloy::sol_types::sol_data::FixedBytes<
5149                    32,
5150                > as alloy_sol_types::EventTopic>::encode_topic(&self.beaconBlockRoot);
5151                Ok(())
5152            }
5153        }
5154        #[automatically_derived]
5155        impl alloy_sol_types::private::IntoLogData for CheckpointCreated {
5156            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5157                From::from(self)
5158            }
5159            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5160                From::from(&self)
5161            }
5162        }
5163        #[automatically_derived]
5164        impl From<&CheckpointCreated> for alloy_sol_types::private::LogData {
5165            #[inline]
5166            fn from(this: &CheckpointCreated) -> alloy_sol_types::private::LogData {
5167                alloy_sol_types::SolEvent::encode_log_data(this)
5168            }
5169        }
5170    };
5171    #[derive(serde::Serialize, serde::Deserialize)]
5172    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5173    /**Event with signature `CheckpointFinalized(uint64,int256)` and selector `0x525408c201bc1576eb44116f6478f1c2a54775b19a043bcfdc708364f74f8e44`.
5174```solidity
5175event CheckpointFinalized(uint64 indexed checkpointTimestamp, int256 totalShareDeltaWei);
5176```*/
5177    #[allow(
5178        non_camel_case_types,
5179        non_snake_case,
5180        clippy::pub_underscore_fields,
5181        clippy::style
5182    )]
5183    #[derive(Clone)]
5184    pub struct CheckpointFinalized {
5185        #[allow(missing_docs)]
5186        pub checkpointTimestamp: u64,
5187        #[allow(missing_docs)]
5188        pub totalShareDeltaWei: alloy::sol_types::private::primitives::aliases::I256,
5189    }
5190    #[allow(
5191        non_camel_case_types,
5192        non_snake_case,
5193        clippy::pub_underscore_fields,
5194        clippy::style
5195    )]
5196    const _: () = {
5197        use alloy::sol_types as alloy_sol_types;
5198        #[automatically_derived]
5199        impl alloy_sol_types::SolEvent for CheckpointFinalized {
5200            type DataTuple<'a> = (alloy::sol_types::sol_data::Int<256>,);
5201            type DataToken<'a> = <Self::DataTuple<
5202                'a,
5203            > as alloy_sol_types::SolType>::Token<'a>;
5204            type TopicList = (
5205                alloy_sol_types::sol_data::FixedBytes<32>,
5206                alloy::sol_types::sol_data::Uint<64>,
5207            );
5208            const SIGNATURE: &'static str = "CheckpointFinalized(uint64,int256)";
5209            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5210                82u8, 84u8, 8u8, 194u8, 1u8, 188u8, 21u8, 118u8, 235u8, 68u8, 17u8,
5211                111u8, 100u8, 120u8, 241u8, 194u8, 165u8, 71u8, 117u8, 177u8, 154u8, 4u8,
5212                59u8, 207u8, 220u8, 112u8, 131u8, 100u8, 247u8, 79u8, 142u8, 68u8,
5213            ]);
5214            const ANONYMOUS: bool = false;
5215            #[allow(unused_variables)]
5216            #[inline]
5217            fn new(
5218                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5219                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5220            ) -> Self {
5221                Self {
5222                    checkpointTimestamp: topics.1,
5223                    totalShareDeltaWei: data.0,
5224                }
5225            }
5226            #[inline]
5227            fn check_signature(
5228                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5229            ) -> alloy_sol_types::Result<()> {
5230                if topics.0 != Self::SIGNATURE_HASH {
5231                    return Err(
5232                        alloy_sol_types::Error::invalid_event_signature_hash(
5233                            Self::SIGNATURE,
5234                            topics.0,
5235                            Self::SIGNATURE_HASH,
5236                        ),
5237                    );
5238                }
5239                Ok(())
5240            }
5241            #[inline]
5242            fn tokenize_body(&self) -> Self::DataToken<'_> {
5243                (
5244                    <alloy::sol_types::sol_data::Int<
5245                        256,
5246                    > as alloy_sol_types::SolType>::tokenize(&self.totalShareDeltaWei),
5247                )
5248            }
5249            #[inline]
5250            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5251                (Self::SIGNATURE_HASH.into(), self.checkpointTimestamp.clone())
5252            }
5253            #[inline]
5254            fn encode_topics_raw(
5255                &self,
5256                out: &mut [alloy_sol_types::abi::token::WordToken],
5257            ) -> alloy_sol_types::Result<()> {
5258                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5259                    return Err(alloy_sol_types::Error::Overrun);
5260                }
5261                out[0usize] = alloy_sol_types::abi::token::WordToken(
5262                    Self::SIGNATURE_HASH,
5263                );
5264                out[1usize] = <alloy::sol_types::sol_data::Uint<
5265                    64,
5266                > as alloy_sol_types::EventTopic>::encode_topic(
5267                    &self.checkpointTimestamp,
5268                );
5269                Ok(())
5270            }
5271        }
5272        #[automatically_derived]
5273        impl alloy_sol_types::private::IntoLogData for CheckpointFinalized {
5274            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5275                From::from(self)
5276            }
5277            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5278                From::from(&self)
5279            }
5280        }
5281        #[automatically_derived]
5282        impl From<&CheckpointFinalized> for alloy_sol_types::private::LogData {
5283            #[inline]
5284            fn from(this: &CheckpointFinalized) -> alloy_sol_types::private::LogData {
5285                alloy_sol_types::SolEvent::encode_log_data(this)
5286            }
5287        }
5288    };
5289    #[derive(serde::Serialize, serde::Deserialize)]
5290    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5291    /**Event with signature `EigenPodStaked(bytes)` and selector `0x606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e23`.
5292```solidity
5293event EigenPodStaked(bytes pubkey);
5294```*/
5295    #[allow(
5296        non_camel_case_types,
5297        non_snake_case,
5298        clippy::pub_underscore_fields,
5299        clippy::style
5300    )]
5301    #[derive(Clone)]
5302    pub struct EigenPodStaked {
5303        #[allow(missing_docs)]
5304        pub pubkey: alloy::sol_types::private::Bytes,
5305    }
5306    #[allow(
5307        non_camel_case_types,
5308        non_snake_case,
5309        clippy::pub_underscore_fields,
5310        clippy::style
5311    )]
5312    const _: () = {
5313        use alloy::sol_types as alloy_sol_types;
5314        #[automatically_derived]
5315        impl alloy_sol_types::SolEvent for EigenPodStaked {
5316            type DataTuple<'a> = (alloy::sol_types::sol_data::Bytes,);
5317            type DataToken<'a> = <Self::DataTuple<
5318                'a,
5319            > as alloy_sol_types::SolType>::Token<'a>;
5320            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
5321            const SIGNATURE: &'static str = "EigenPodStaked(bytes)";
5322            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5323                96u8, 104u8, 101u8, 183u8, 147u8, 74u8, 37u8, 212u8, 174u8, 212u8, 63u8,
5324                108u8, 219u8, 66u8, 100u8, 3u8, 53u8, 63u8, 164u8, 179u8, 0u8, 156u8,
5325                77u8, 34u8, 132u8, 7u8, 71u8, 69u8, 129u8, 176u8, 30u8, 35u8,
5326            ]);
5327            const ANONYMOUS: bool = false;
5328            #[allow(unused_variables)]
5329            #[inline]
5330            fn new(
5331                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5332                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5333            ) -> Self {
5334                Self { pubkey: data.0 }
5335            }
5336            #[inline]
5337            fn check_signature(
5338                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5339            ) -> alloy_sol_types::Result<()> {
5340                if topics.0 != Self::SIGNATURE_HASH {
5341                    return Err(
5342                        alloy_sol_types::Error::invalid_event_signature_hash(
5343                            Self::SIGNATURE,
5344                            topics.0,
5345                            Self::SIGNATURE_HASH,
5346                        ),
5347                    );
5348                }
5349                Ok(())
5350            }
5351            #[inline]
5352            fn tokenize_body(&self) -> Self::DataToken<'_> {
5353                (
5354                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
5355                        &self.pubkey,
5356                    ),
5357                )
5358            }
5359            #[inline]
5360            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5361                (Self::SIGNATURE_HASH.into(),)
5362            }
5363            #[inline]
5364            fn encode_topics_raw(
5365                &self,
5366                out: &mut [alloy_sol_types::abi::token::WordToken],
5367            ) -> alloy_sol_types::Result<()> {
5368                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5369                    return Err(alloy_sol_types::Error::Overrun);
5370                }
5371                out[0usize] = alloy_sol_types::abi::token::WordToken(
5372                    Self::SIGNATURE_HASH,
5373                );
5374                Ok(())
5375            }
5376        }
5377        #[automatically_derived]
5378        impl alloy_sol_types::private::IntoLogData for EigenPodStaked {
5379            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5380                From::from(self)
5381            }
5382            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5383                From::from(&self)
5384            }
5385        }
5386        #[automatically_derived]
5387        impl From<&EigenPodStaked> for alloy_sol_types::private::LogData {
5388            #[inline]
5389            fn from(this: &EigenPodStaked) -> alloy_sol_types::private::LogData {
5390                alloy_sol_types::SolEvent::encode_log_data(this)
5391            }
5392        }
5393    };
5394    #[derive(serde::Serialize, serde::Deserialize)]
5395    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5396    /**Event with signature `Initialized(uint8)` and selector `0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498`.
5397```solidity
5398event Initialized(uint8 version);
5399```*/
5400    #[allow(
5401        non_camel_case_types,
5402        non_snake_case,
5403        clippy::pub_underscore_fields,
5404        clippy::style
5405    )]
5406    #[derive(Clone)]
5407    pub struct Initialized {
5408        #[allow(missing_docs)]
5409        pub version: u8,
5410    }
5411    #[allow(
5412        non_camel_case_types,
5413        non_snake_case,
5414        clippy::pub_underscore_fields,
5415        clippy::style
5416    )]
5417    const _: () = {
5418        use alloy::sol_types as alloy_sol_types;
5419        #[automatically_derived]
5420        impl alloy_sol_types::SolEvent for Initialized {
5421            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,);
5422            type DataToken<'a> = <Self::DataTuple<
5423                'a,
5424            > as alloy_sol_types::SolType>::Token<'a>;
5425            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
5426            const SIGNATURE: &'static str = "Initialized(uint8)";
5427            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5428                127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8,
5429                19u8, 56u8, 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8,
5430                146u8, 20u8, 96u8, 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8,
5431            ]);
5432            const ANONYMOUS: bool = false;
5433            #[allow(unused_variables)]
5434            #[inline]
5435            fn new(
5436                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5437                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5438            ) -> Self {
5439                Self { version: data.0 }
5440            }
5441            #[inline]
5442            fn check_signature(
5443                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5444            ) -> alloy_sol_types::Result<()> {
5445                if topics.0 != Self::SIGNATURE_HASH {
5446                    return Err(
5447                        alloy_sol_types::Error::invalid_event_signature_hash(
5448                            Self::SIGNATURE,
5449                            topics.0,
5450                            Self::SIGNATURE_HASH,
5451                        ),
5452                    );
5453                }
5454                Ok(())
5455            }
5456            #[inline]
5457            fn tokenize_body(&self) -> Self::DataToken<'_> {
5458                (
5459                    <alloy::sol_types::sol_data::Uint<
5460                        8,
5461                    > as alloy_sol_types::SolType>::tokenize(&self.version),
5462                )
5463            }
5464            #[inline]
5465            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5466                (Self::SIGNATURE_HASH.into(),)
5467            }
5468            #[inline]
5469            fn encode_topics_raw(
5470                &self,
5471                out: &mut [alloy_sol_types::abi::token::WordToken],
5472            ) -> alloy_sol_types::Result<()> {
5473                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5474                    return Err(alloy_sol_types::Error::Overrun);
5475                }
5476                out[0usize] = alloy_sol_types::abi::token::WordToken(
5477                    Self::SIGNATURE_HASH,
5478                );
5479                Ok(())
5480            }
5481        }
5482        #[automatically_derived]
5483        impl alloy_sol_types::private::IntoLogData for Initialized {
5484            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5485                From::from(self)
5486            }
5487            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5488                From::from(&self)
5489            }
5490        }
5491        #[automatically_derived]
5492        impl From<&Initialized> for alloy_sol_types::private::LogData {
5493            #[inline]
5494            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
5495                alloy_sol_types::SolEvent::encode_log_data(this)
5496            }
5497        }
5498    };
5499    #[derive(serde::Serialize, serde::Deserialize)]
5500    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5501    /**Event with signature `NonBeaconChainETHReceived(uint256)` and selector `0x6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf49`.
5502```solidity
5503event NonBeaconChainETHReceived(uint256 amountReceived);
5504```*/
5505    #[allow(
5506        non_camel_case_types,
5507        non_snake_case,
5508        clippy::pub_underscore_fields,
5509        clippy::style
5510    )]
5511    #[derive(Clone)]
5512    pub struct NonBeaconChainETHReceived {
5513        #[allow(missing_docs)]
5514        pub amountReceived: alloy::sol_types::private::primitives::aliases::U256,
5515    }
5516    #[allow(
5517        non_camel_case_types,
5518        non_snake_case,
5519        clippy::pub_underscore_fields,
5520        clippy::style
5521    )]
5522    const _: () = {
5523        use alloy::sol_types as alloy_sol_types;
5524        #[automatically_derived]
5525        impl alloy_sol_types::SolEvent for NonBeaconChainETHReceived {
5526            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
5527            type DataToken<'a> = <Self::DataTuple<
5528                'a,
5529            > as alloy_sol_types::SolType>::Token<'a>;
5530            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
5531            const SIGNATURE: &'static str = "NonBeaconChainETHReceived(uint256)";
5532            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5533                111u8, 221u8, 61u8, 189u8, 177u8, 115u8, 41u8, 150u8, 8u8, 192u8, 170u8,
5534                159u8, 54u8, 135u8, 53u8, 133u8, 124u8, 136u8, 66u8, 181u8, 129u8, 248u8,
5535                56u8, 146u8, 56u8, 191u8, 5u8, 189u8, 4u8, 179u8, 191u8, 73u8,
5536            ]);
5537            const ANONYMOUS: bool = false;
5538            #[allow(unused_variables)]
5539            #[inline]
5540            fn new(
5541                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5542                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5543            ) -> Self {
5544                Self { amountReceived: data.0 }
5545            }
5546            #[inline]
5547            fn check_signature(
5548                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5549            ) -> alloy_sol_types::Result<()> {
5550                if topics.0 != Self::SIGNATURE_HASH {
5551                    return Err(
5552                        alloy_sol_types::Error::invalid_event_signature_hash(
5553                            Self::SIGNATURE,
5554                            topics.0,
5555                            Self::SIGNATURE_HASH,
5556                        ),
5557                    );
5558                }
5559                Ok(())
5560            }
5561            #[inline]
5562            fn tokenize_body(&self) -> Self::DataToken<'_> {
5563                (
5564                    <alloy::sol_types::sol_data::Uint<
5565                        256,
5566                    > as alloy_sol_types::SolType>::tokenize(&self.amountReceived),
5567                )
5568            }
5569            #[inline]
5570            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5571                (Self::SIGNATURE_HASH.into(),)
5572            }
5573            #[inline]
5574            fn encode_topics_raw(
5575                &self,
5576                out: &mut [alloy_sol_types::abi::token::WordToken],
5577            ) -> alloy_sol_types::Result<()> {
5578                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5579                    return Err(alloy_sol_types::Error::Overrun);
5580                }
5581                out[0usize] = alloy_sol_types::abi::token::WordToken(
5582                    Self::SIGNATURE_HASH,
5583                );
5584                Ok(())
5585            }
5586        }
5587        #[automatically_derived]
5588        impl alloy_sol_types::private::IntoLogData for NonBeaconChainETHReceived {
5589            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5590                From::from(self)
5591            }
5592            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5593                From::from(&self)
5594            }
5595        }
5596        #[automatically_derived]
5597        impl From<&NonBeaconChainETHReceived> for alloy_sol_types::private::LogData {
5598            #[inline]
5599            fn from(
5600                this: &NonBeaconChainETHReceived,
5601            ) -> alloy_sol_types::private::LogData {
5602                alloy_sol_types::SolEvent::encode_log_data(this)
5603            }
5604        }
5605    };
5606    #[derive(serde::Serialize, serde::Deserialize)]
5607    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5608    /**Event with signature `ProofSubmitterUpdated(address,address)` and selector `0xfb8129080a19d34dceac04ba253fc50304dc86c729bd63cdca4a969ad19a5eac`.
5609```solidity
5610event ProofSubmitterUpdated(address prevProofSubmitter, address newProofSubmitter);
5611```*/
5612    #[allow(
5613        non_camel_case_types,
5614        non_snake_case,
5615        clippy::pub_underscore_fields,
5616        clippy::style
5617    )]
5618    #[derive(Clone)]
5619    pub struct ProofSubmitterUpdated {
5620        #[allow(missing_docs)]
5621        pub prevProofSubmitter: alloy::sol_types::private::Address,
5622        #[allow(missing_docs)]
5623        pub newProofSubmitter: alloy::sol_types::private::Address,
5624    }
5625    #[allow(
5626        non_camel_case_types,
5627        non_snake_case,
5628        clippy::pub_underscore_fields,
5629        clippy::style
5630    )]
5631    const _: () = {
5632        use alloy::sol_types as alloy_sol_types;
5633        #[automatically_derived]
5634        impl alloy_sol_types::SolEvent for ProofSubmitterUpdated {
5635            type DataTuple<'a> = (
5636                alloy::sol_types::sol_data::Address,
5637                alloy::sol_types::sol_data::Address,
5638            );
5639            type DataToken<'a> = <Self::DataTuple<
5640                'a,
5641            > as alloy_sol_types::SolType>::Token<'a>;
5642            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
5643            const SIGNATURE: &'static str = "ProofSubmitterUpdated(address,address)";
5644            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5645                251u8, 129u8, 41u8, 8u8, 10u8, 25u8, 211u8, 77u8, 206u8, 172u8, 4u8,
5646                186u8, 37u8, 63u8, 197u8, 3u8, 4u8, 220u8, 134u8, 199u8, 41u8, 189u8,
5647                99u8, 205u8, 202u8, 74u8, 150u8, 154u8, 209u8, 154u8, 94u8, 172u8,
5648            ]);
5649            const ANONYMOUS: bool = false;
5650            #[allow(unused_variables)]
5651            #[inline]
5652            fn new(
5653                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5654                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5655            ) -> Self {
5656                Self {
5657                    prevProofSubmitter: data.0,
5658                    newProofSubmitter: data.1,
5659                }
5660            }
5661            #[inline]
5662            fn check_signature(
5663                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5664            ) -> alloy_sol_types::Result<()> {
5665                if topics.0 != Self::SIGNATURE_HASH {
5666                    return Err(
5667                        alloy_sol_types::Error::invalid_event_signature_hash(
5668                            Self::SIGNATURE,
5669                            topics.0,
5670                            Self::SIGNATURE_HASH,
5671                        ),
5672                    );
5673                }
5674                Ok(())
5675            }
5676            #[inline]
5677            fn tokenize_body(&self) -> Self::DataToken<'_> {
5678                (
5679                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5680                        &self.prevProofSubmitter,
5681                    ),
5682                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5683                        &self.newProofSubmitter,
5684                    ),
5685                )
5686            }
5687            #[inline]
5688            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5689                (Self::SIGNATURE_HASH.into(),)
5690            }
5691            #[inline]
5692            fn encode_topics_raw(
5693                &self,
5694                out: &mut [alloy_sol_types::abi::token::WordToken],
5695            ) -> alloy_sol_types::Result<()> {
5696                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5697                    return Err(alloy_sol_types::Error::Overrun);
5698                }
5699                out[0usize] = alloy_sol_types::abi::token::WordToken(
5700                    Self::SIGNATURE_HASH,
5701                );
5702                Ok(())
5703            }
5704        }
5705        #[automatically_derived]
5706        impl alloy_sol_types::private::IntoLogData for ProofSubmitterUpdated {
5707            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5708                From::from(self)
5709            }
5710            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5711                From::from(&self)
5712            }
5713        }
5714        #[automatically_derived]
5715        impl From<&ProofSubmitterUpdated> for alloy_sol_types::private::LogData {
5716            #[inline]
5717            fn from(this: &ProofSubmitterUpdated) -> alloy_sol_types::private::LogData {
5718                alloy_sol_types::SolEvent::encode_log_data(this)
5719            }
5720        }
5721    };
5722    #[derive(serde::Serialize, serde::Deserialize)]
5723    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5724    /**Event with signature `RestakedBeaconChainETHWithdrawn(address,uint256)` and selector `0x8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e`.
5725```solidity
5726event RestakedBeaconChainETHWithdrawn(address indexed recipient, uint256 amount);
5727```*/
5728    #[allow(
5729        non_camel_case_types,
5730        non_snake_case,
5731        clippy::pub_underscore_fields,
5732        clippy::style
5733    )]
5734    #[derive(Clone)]
5735    pub struct RestakedBeaconChainETHWithdrawn {
5736        #[allow(missing_docs)]
5737        pub recipient: alloy::sol_types::private::Address,
5738        #[allow(missing_docs)]
5739        pub amount: alloy::sol_types::private::primitives::aliases::U256,
5740    }
5741    #[allow(
5742        non_camel_case_types,
5743        non_snake_case,
5744        clippy::pub_underscore_fields,
5745        clippy::style
5746    )]
5747    const _: () = {
5748        use alloy::sol_types as alloy_sol_types;
5749        #[automatically_derived]
5750        impl alloy_sol_types::SolEvent for RestakedBeaconChainETHWithdrawn {
5751            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
5752            type DataToken<'a> = <Self::DataTuple<
5753                'a,
5754            > as alloy_sol_types::SolType>::Token<'a>;
5755            type TopicList = (
5756                alloy_sol_types::sol_data::FixedBytes<32>,
5757                alloy::sol_types::sol_data::Address,
5758            );
5759            const SIGNATURE: &'static str = "RestakedBeaconChainETHWithdrawn(address,uint256)";
5760            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5761                137u8, 71u8, 253u8, 44u8, 224u8, 126u8, 249u8, 204u8, 48u8, 44u8, 78u8,
5762                143u8, 4u8, 97u8, 1u8, 86u8, 21u8, 217u8, 28u8, 232u8, 81u8, 86u8, 72u8,
5763                57u8, 233u8, 28u8, 200u8, 4u8, 194u8, 244u8, 157u8, 142u8,
5764            ]);
5765            const ANONYMOUS: bool = false;
5766            #[allow(unused_variables)]
5767            #[inline]
5768            fn new(
5769                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5770                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5771            ) -> Self {
5772                Self {
5773                    recipient: topics.1,
5774                    amount: data.0,
5775                }
5776            }
5777            #[inline]
5778            fn check_signature(
5779                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5780            ) -> alloy_sol_types::Result<()> {
5781                if topics.0 != Self::SIGNATURE_HASH {
5782                    return Err(
5783                        alloy_sol_types::Error::invalid_event_signature_hash(
5784                            Self::SIGNATURE,
5785                            topics.0,
5786                            Self::SIGNATURE_HASH,
5787                        ),
5788                    );
5789                }
5790                Ok(())
5791            }
5792            #[inline]
5793            fn tokenize_body(&self) -> Self::DataToken<'_> {
5794                (
5795                    <alloy::sol_types::sol_data::Uint<
5796                        256,
5797                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
5798                )
5799            }
5800            #[inline]
5801            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5802                (Self::SIGNATURE_HASH.into(), self.recipient.clone())
5803            }
5804            #[inline]
5805            fn encode_topics_raw(
5806                &self,
5807                out: &mut [alloy_sol_types::abi::token::WordToken],
5808            ) -> alloy_sol_types::Result<()> {
5809                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5810                    return Err(alloy_sol_types::Error::Overrun);
5811                }
5812                out[0usize] = alloy_sol_types::abi::token::WordToken(
5813                    Self::SIGNATURE_HASH,
5814                );
5815                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5816                    &self.recipient,
5817                );
5818                Ok(())
5819            }
5820        }
5821        #[automatically_derived]
5822        impl alloy_sol_types::private::IntoLogData for RestakedBeaconChainETHWithdrawn {
5823            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5824                From::from(self)
5825            }
5826            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5827                From::from(&self)
5828            }
5829        }
5830        #[automatically_derived]
5831        impl From<&RestakedBeaconChainETHWithdrawn>
5832        for alloy_sol_types::private::LogData {
5833            #[inline]
5834            fn from(
5835                this: &RestakedBeaconChainETHWithdrawn,
5836            ) -> alloy_sol_types::private::LogData {
5837                alloy_sol_types::SolEvent::encode_log_data(this)
5838            }
5839        }
5840    };
5841    #[derive(serde::Serialize, serde::Deserialize)]
5842    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5843    /**Event with signature `ValidatorBalanceUpdated(uint40,uint64,uint64)` and selector `0x0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df`.
5844```solidity
5845event ValidatorBalanceUpdated(uint40 validatorIndex, uint64 balanceTimestamp, uint64 newValidatorBalanceGwei);
5846```*/
5847    #[allow(
5848        non_camel_case_types,
5849        non_snake_case,
5850        clippy::pub_underscore_fields,
5851        clippy::style
5852    )]
5853    #[derive(Clone)]
5854    pub struct ValidatorBalanceUpdated {
5855        #[allow(missing_docs)]
5856        pub validatorIndex: alloy::sol_types::private::primitives::aliases::U40,
5857        #[allow(missing_docs)]
5858        pub balanceTimestamp: u64,
5859        #[allow(missing_docs)]
5860        pub newValidatorBalanceGwei: u64,
5861    }
5862    #[allow(
5863        non_camel_case_types,
5864        non_snake_case,
5865        clippy::pub_underscore_fields,
5866        clippy::style
5867    )]
5868    const _: () = {
5869        use alloy::sol_types as alloy_sol_types;
5870        #[automatically_derived]
5871        impl alloy_sol_types::SolEvent for ValidatorBalanceUpdated {
5872            type DataTuple<'a> = (
5873                alloy::sol_types::sol_data::Uint<40>,
5874                alloy::sol_types::sol_data::Uint<64>,
5875                alloy::sol_types::sol_data::Uint<64>,
5876            );
5877            type DataToken<'a> = <Self::DataTuple<
5878                'a,
5879            > as alloy_sol_types::SolType>::Token<'a>;
5880            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
5881            const SIGNATURE: &'static str = "ValidatorBalanceUpdated(uint40,uint64,uint64)";
5882            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5883                14u8, 95u8, 172u8, 23u8, 91u8, 131u8, 23u8, 124u8, 192u8, 71u8, 56u8,
5884                30u8, 3u8, 13u8, 143u8, 179u8, 180u8, 43u8, 55u8, 189u8, 28u8, 2u8, 94u8,
5885                34u8, 194u8, 128u8, 250u8, 202u8, 214u8, 44u8, 50u8, 223u8,
5886            ]);
5887            const ANONYMOUS: bool = false;
5888            #[allow(unused_variables)]
5889            #[inline]
5890            fn new(
5891                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5892                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5893            ) -> Self {
5894                Self {
5895                    validatorIndex: data.0,
5896                    balanceTimestamp: data.1,
5897                    newValidatorBalanceGwei: data.2,
5898                }
5899            }
5900            #[inline]
5901            fn check_signature(
5902                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5903            ) -> alloy_sol_types::Result<()> {
5904                if topics.0 != Self::SIGNATURE_HASH {
5905                    return Err(
5906                        alloy_sol_types::Error::invalid_event_signature_hash(
5907                            Self::SIGNATURE,
5908                            topics.0,
5909                            Self::SIGNATURE_HASH,
5910                        ),
5911                    );
5912                }
5913                Ok(())
5914            }
5915            #[inline]
5916            fn tokenize_body(&self) -> Self::DataToken<'_> {
5917                (
5918                    <alloy::sol_types::sol_data::Uint<
5919                        40,
5920                    > as alloy_sol_types::SolType>::tokenize(&self.validatorIndex),
5921                    <alloy::sol_types::sol_data::Uint<
5922                        64,
5923                    > as alloy_sol_types::SolType>::tokenize(&self.balanceTimestamp),
5924                    <alloy::sol_types::sol_data::Uint<
5925                        64,
5926                    > as alloy_sol_types::SolType>::tokenize(
5927                        &self.newValidatorBalanceGwei,
5928                    ),
5929                )
5930            }
5931            #[inline]
5932            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5933                (Self::SIGNATURE_HASH.into(),)
5934            }
5935            #[inline]
5936            fn encode_topics_raw(
5937                &self,
5938                out: &mut [alloy_sol_types::abi::token::WordToken],
5939            ) -> alloy_sol_types::Result<()> {
5940                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5941                    return Err(alloy_sol_types::Error::Overrun);
5942                }
5943                out[0usize] = alloy_sol_types::abi::token::WordToken(
5944                    Self::SIGNATURE_HASH,
5945                );
5946                Ok(())
5947            }
5948        }
5949        #[automatically_derived]
5950        impl alloy_sol_types::private::IntoLogData for ValidatorBalanceUpdated {
5951            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5952                From::from(self)
5953            }
5954            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5955                From::from(&self)
5956            }
5957        }
5958        #[automatically_derived]
5959        impl From<&ValidatorBalanceUpdated> for alloy_sol_types::private::LogData {
5960            #[inline]
5961            fn from(
5962                this: &ValidatorBalanceUpdated,
5963            ) -> alloy_sol_types::private::LogData {
5964                alloy_sol_types::SolEvent::encode_log_data(this)
5965            }
5966        }
5967    };
5968    #[derive(serde::Serialize, serde::Deserialize)]
5969    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5970    /**Event with signature `ValidatorCheckpointed(uint64,uint40)` and selector `0xa91c59033c3423e18b54d0acecebb4972f9ea95aedf5f4cae3b677b02eaf3a3f`.
5971```solidity
5972event ValidatorCheckpointed(uint64 indexed checkpointTimestamp, uint40 indexed validatorIndex);
5973```*/
5974    #[allow(
5975        non_camel_case_types,
5976        non_snake_case,
5977        clippy::pub_underscore_fields,
5978        clippy::style
5979    )]
5980    #[derive(Clone)]
5981    pub struct ValidatorCheckpointed {
5982        #[allow(missing_docs)]
5983        pub checkpointTimestamp: u64,
5984        #[allow(missing_docs)]
5985        pub validatorIndex: alloy::sol_types::private::primitives::aliases::U40,
5986    }
5987    #[allow(
5988        non_camel_case_types,
5989        non_snake_case,
5990        clippy::pub_underscore_fields,
5991        clippy::style
5992    )]
5993    const _: () = {
5994        use alloy::sol_types as alloy_sol_types;
5995        #[automatically_derived]
5996        impl alloy_sol_types::SolEvent for ValidatorCheckpointed {
5997            type DataTuple<'a> = ();
5998            type DataToken<'a> = <Self::DataTuple<
5999                'a,
6000            > as alloy_sol_types::SolType>::Token<'a>;
6001            type TopicList = (
6002                alloy_sol_types::sol_data::FixedBytes<32>,
6003                alloy::sol_types::sol_data::Uint<64>,
6004                alloy::sol_types::sol_data::Uint<40>,
6005            );
6006            const SIGNATURE: &'static str = "ValidatorCheckpointed(uint64,uint40)";
6007            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6008                169u8, 28u8, 89u8, 3u8, 60u8, 52u8, 35u8, 225u8, 139u8, 84u8, 208u8,
6009                172u8, 236u8, 235u8, 180u8, 151u8, 47u8, 158u8, 169u8, 90u8, 237u8,
6010                245u8, 244u8, 202u8, 227u8, 182u8, 119u8, 176u8, 46u8, 175u8, 58u8, 63u8,
6011            ]);
6012            const ANONYMOUS: bool = false;
6013            #[allow(unused_variables)]
6014            #[inline]
6015            fn new(
6016                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6017                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6018            ) -> Self {
6019                Self {
6020                    checkpointTimestamp: topics.1,
6021                    validatorIndex: topics.2,
6022                }
6023            }
6024            #[inline]
6025            fn check_signature(
6026                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6027            ) -> alloy_sol_types::Result<()> {
6028                if topics.0 != Self::SIGNATURE_HASH {
6029                    return Err(
6030                        alloy_sol_types::Error::invalid_event_signature_hash(
6031                            Self::SIGNATURE,
6032                            topics.0,
6033                            Self::SIGNATURE_HASH,
6034                        ),
6035                    );
6036                }
6037                Ok(())
6038            }
6039            #[inline]
6040            fn tokenize_body(&self) -> Self::DataToken<'_> {
6041                ()
6042            }
6043            #[inline]
6044            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6045                (
6046                    Self::SIGNATURE_HASH.into(),
6047                    self.checkpointTimestamp.clone(),
6048                    self.validatorIndex.clone(),
6049                )
6050            }
6051            #[inline]
6052            fn encode_topics_raw(
6053                &self,
6054                out: &mut [alloy_sol_types::abi::token::WordToken],
6055            ) -> alloy_sol_types::Result<()> {
6056                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6057                    return Err(alloy_sol_types::Error::Overrun);
6058                }
6059                out[0usize] = alloy_sol_types::abi::token::WordToken(
6060                    Self::SIGNATURE_HASH,
6061                );
6062                out[1usize] = <alloy::sol_types::sol_data::Uint<
6063                    64,
6064                > as alloy_sol_types::EventTopic>::encode_topic(
6065                    &self.checkpointTimestamp,
6066                );
6067                out[2usize] = <alloy::sol_types::sol_data::Uint<
6068                    40,
6069                > as alloy_sol_types::EventTopic>::encode_topic(&self.validatorIndex);
6070                Ok(())
6071            }
6072        }
6073        #[automatically_derived]
6074        impl alloy_sol_types::private::IntoLogData for ValidatorCheckpointed {
6075            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6076                From::from(self)
6077            }
6078            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6079                From::from(&self)
6080            }
6081        }
6082        #[automatically_derived]
6083        impl From<&ValidatorCheckpointed> for alloy_sol_types::private::LogData {
6084            #[inline]
6085            fn from(this: &ValidatorCheckpointed) -> alloy_sol_types::private::LogData {
6086                alloy_sol_types::SolEvent::encode_log_data(this)
6087            }
6088        }
6089    };
6090    #[derive(serde::Serialize, serde::Deserialize)]
6091    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6092    /**Event with signature `ValidatorRestaked(uint40)` and selector `0x2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c10441449`.
6093```solidity
6094event ValidatorRestaked(uint40 validatorIndex);
6095```*/
6096    #[allow(
6097        non_camel_case_types,
6098        non_snake_case,
6099        clippy::pub_underscore_fields,
6100        clippy::style
6101    )]
6102    #[derive(Clone)]
6103    pub struct ValidatorRestaked {
6104        #[allow(missing_docs)]
6105        pub validatorIndex: alloy::sol_types::private::primitives::aliases::U40,
6106    }
6107    #[allow(
6108        non_camel_case_types,
6109        non_snake_case,
6110        clippy::pub_underscore_fields,
6111        clippy::style
6112    )]
6113    const _: () = {
6114        use alloy::sol_types as alloy_sol_types;
6115        #[automatically_derived]
6116        impl alloy_sol_types::SolEvent for ValidatorRestaked {
6117            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<40>,);
6118            type DataToken<'a> = <Self::DataTuple<
6119                'a,
6120            > as alloy_sol_types::SolType>::Token<'a>;
6121            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6122            const SIGNATURE: &'static str = "ValidatorRestaked(uint40)";
6123            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6124                45u8, 8u8, 0u8, 187u8, 195u8, 119u8, 234u8, 84u8, 160u8, 140u8, 93u8,
6125                182u8, 168u8, 122u8, 175u8, 255u8, 94u8, 62u8, 156u8, 143u8, 234u8,
6126                208u8, 237u8, 161u8, 16u8, 228u8, 14u8, 12u8, 16u8, 68u8, 20u8, 73u8,
6127            ]);
6128            const ANONYMOUS: bool = false;
6129            #[allow(unused_variables)]
6130            #[inline]
6131            fn new(
6132                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6133                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6134            ) -> Self {
6135                Self { validatorIndex: data.0 }
6136            }
6137            #[inline]
6138            fn check_signature(
6139                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6140            ) -> alloy_sol_types::Result<()> {
6141                if topics.0 != Self::SIGNATURE_HASH {
6142                    return Err(
6143                        alloy_sol_types::Error::invalid_event_signature_hash(
6144                            Self::SIGNATURE,
6145                            topics.0,
6146                            Self::SIGNATURE_HASH,
6147                        ),
6148                    );
6149                }
6150                Ok(())
6151            }
6152            #[inline]
6153            fn tokenize_body(&self) -> Self::DataToken<'_> {
6154                (
6155                    <alloy::sol_types::sol_data::Uint<
6156                        40,
6157                    > as alloy_sol_types::SolType>::tokenize(&self.validatorIndex),
6158                )
6159            }
6160            #[inline]
6161            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6162                (Self::SIGNATURE_HASH.into(),)
6163            }
6164            #[inline]
6165            fn encode_topics_raw(
6166                &self,
6167                out: &mut [alloy_sol_types::abi::token::WordToken],
6168            ) -> alloy_sol_types::Result<()> {
6169                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6170                    return Err(alloy_sol_types::Error::Overrun);
6171                }
6172                out[0usize] = alloy_sol_types::abi::token::WordToken(
6173                    Self::SIGNATURE_HASH,
6174                );
6175                Ok(())
6176            }
6177        }
6178        #[automatically_derived]
6179        impl alloy_sol_types::private::IntoLogData for ValidatorRestaked {
6180            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6181                From::from(self)
6182            }
6183            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6184                From::from(&self)
6185            }
6186        }
6187        #[automatically_derived]
6188        impl From<&ValidatorRestaked> for alloy_sol_types::private::LogData {
6189            #[inline]
6190            fn from(this: &ValidatorRestaked) -> alloy_sol_types::private::LogData {
6191                alloy_sol_types::SolEvent::encode_log_data(this)
6192            }
6193        }
6194    };
6195    #[derive(serde::Serialize, serde::Deserialize)]
6196    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6197    /**Event with signature `ValidatorWithdrawn(uint64,uint40)` and selector `0x2a02361ffa66cf2c2da4682c2355a6adcaa9f6c227b6e6563e68480f9587626a`.
6198```solidity
6199event ValidatorWithdrawn(uint64 indexed checkpointTimestamp, uint40 indexed validatorIndex);
6200```*/
6201    #[allow(
6202        non_camel_case_types,
6203        non_snake_case,
6204        clippy::pub_underscore_fields,
6205        clippy::style
6206    )]
6207    #[derive(Clone)]
6208    pub struct ValidatorWithdrawn {
6209        #[allow(missing_docs)]
6210        pub checkpointTimestamp: u64,
6211        #[allow(missing_docs)]
6212        pub validatorIndex: alloy::sol_types::private::primitives::aliases::U40,
6213    }
6214    #[allow(
6215        non_camel_case_types,
6216        non_snake_case,
6217        clippy::pub_underscore_fields,
6218        clippy::style
6219    )]
6220    const _: () = {
6221        use alloy::sol_types as alloy_sol_types;
6222        #[automatically_derived]
6223        impl alloy_sol_types::SolEvent for ValidatorWithdrawn {
6224            type DataTuple<'a> = ();
6225            type DataToken<'a> = <Self::DataTuple<
6226                'a,
6227            > as alloy_sol_types::SolType>::Token<'a>;
6228            type TopicList = (
6229                alloy_sol_types::sol_data::FixedBytes<32>,
6230                alloy::sol_types::sol_data::Uint<64>,
6231                alloy::sol_types::sol_data::Uint<40>,
6232            );
6233            const SIGNATURE: &'static str = "ValidatorWithdrawn(uint64,uint40)";
6234            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6235                42u8, 2u8, 54u8, 31u8, 250u8, 102u8, 207u8, 44u8, 45u8, 164u8, 104u8,
6236                44u8, 35u8, 85u8, 166u8, 173u8, 202u8, 169u8, 246u8, 194u8, 39u8, 182u8,
6237                230u8, 86u8, 62u8, 104u8, 72u8, 15u8, 149u8, 135u8, 98u8, 106u8,
6238            ]);
6239            const ANONYMOUS: bool = false;
6240            #[allow(unused_variables)]
6241            #[inline]
6242            fn new(
6243                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6244                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6245            ) -> Self {
6246                Self {
6247                    checkpointTimestamp: topics.1,
6248                    validatorIndex: topics.2,
6249                }
6250            }
6251            #[inline]
6252            fn check_signature(
6253                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6254            ) -> alloy_sol_types::Result<()> {
6255                if topics.0 != Self::SIGNATURE_HASH {
6256                    return Err(
6257                        alloy_sol_types::Error::invalid_event_signature_hash(
6258                            Self::SIGNATURE,
6259                            topics.0,
6260                            Self::SIGNATURE_HASH,
6261                        ),
6262                    );
6263                }
6264                Ok(())
6265            }
6266            #[inline]
6267            fn tokenize_body(&self) -> Self::DataToken<'_> {
6268                ()
6269            }
6270            #[inline]
6271            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6272                (
6273                    Self::SIGNATURE_HASH.into(),
6274                    self.checkpointTimestamp.clone(),
6275                    self.validatorIndex.clone(),
6276                )
6277            }
6278            #[inline]
6279            fn encode_topics_raw(
6280                &self,
6281                out: &mut [alloy_sol_types::abi::token::WordToken],
6282            ) -> alloy_sol_types::Result<()> {
6283                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6284                    return Err(alloy_sol_types::Error::Overrun);
6285                }
6286                out[0usize] = alloy_sol_types::abi::token::WordToken(
6287                    Self::SIGNATURE_HASH,
6288                );
6289                out[1usize] = <alloy::sol_types::sol_data::Uint<
6290                    64,
6291                > as alloy_sol_types::EventTopic>::encode_topic(
6292                    &self.checkpointTimestamp,
6293                );
6294                out[2usize] = <alloy::sol_types::sol_data::Uint<
6295                    40,
6296                > as alloy_sol_types::EventTopic>::encode_topic(&self.validatorIndex);
6297                Ok(())
6298            }
6299        }
6300        #[automatically_derived]
6301        impl alloy_sol_types::private::IntoLogData for ValidatorWithdrawn {
6302            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6303                From::from(self)
6304            }
6305            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6306                From::from(&self)
6307            }
6308        }
6309        #[automatically_derived]
6310        impl From<&ValidatorWithdrawn> for alloy_sol_types::private::LogData {
6311            #[inline]
6312            fn from(this: &ValidatorWithdrawn) -> alloy_sol_types::private::LogData {
6313                alloy_sol_types::SolEvent::encode_log_data(this)
6314            }
6315        }
6316    };
6317    /**Constructor`.
6318```solidity
6319constructor(address _ethPOS, address _eigenPodManager, uint64 _GENESIS_TIME, string _version);
6320```*/
6321    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6322    #[derive(Clone)]
6323    pub struct constructorCall {
6324        #[allow(missing_docs)]
6325        pub _ethPOS: alloy::sol_types::private::Address,
6326        #[allow(missing_docs)]
6327        pub _eigenPodManager: alloy::sol_types::private::Address,
6328        #[allow(missing_docs)]
6329        pub _GENESIS_TIME: u64,
6330        #[allow(missing_docs)]
6331        pub _version: alloy::sol_types::private::String,
6332    }
6333    const _: () = {
6334        use alloy::sol_types as alloy_sol_types;
6335        {
6336            #[doc(hidden)]
6337            type UnderlyingSolTuple<'a> = (
6338                alloy::sol_types::sol_data::Address,
6339                alloy::sol_types::sol_data::Address,
6340                alloy::sol_types::sol_data::Uint<64>,
6341                alloy::sol_types::sol_data::String,
6342            );
6343            #[doc(hidden)]
6344            type UnderlyingRustTuple<'a> = (
6345                alloy::sol_types::private::Address,
6346                alloy::sol_types::private::Address,
6347                u64,
6348                alloy::sol_types::private::String,
6349            );
6350            #[cfg(test)]
6351            #[allow(dead_code, unreachable_patterns)]
6352            fn _type_assertion(
6353                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6354            ) {
6355                match _t {
6356                    alloy_sol_types::private::AssertTypeEq::<
6357                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6358                    >(_) => {}
6359                }
6360            }
6361            #[automatically_derived]
6362            #[doc(hidden)]
6363            impl ::core::convert::From<constructorCall> for UnderlyingRustTuple<'_> {
6364                fn from(value: constructorCall) -> Self {
6365                    (
6366                        value._ethPOS,
6367                        value._eigenPodManager,
6368                        value._GENESIS_TIME,
6369                        value._version,
6370                    )
6371                }
6372            }
6373            #[automatically_derived]
6374            #[doc(hidden)]
6375            impl ::core::convert::From<UnderlyingRustTuple<'_>> for constructorCall {
6376                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6377                    Self {
6378                        _ethPOS: tuple.0,
6379                        _eigenPodManager: tuple.1,
6380                        _GENESIS_TIME: tuple.2,
6381                        _version: tuple.3,
6382                    }
6383                }
6384            }
6385        }
6386        #[automatically_derived]
6387        impl alloy_sol_types::SolConstructor for constructorCall {
6388            type Parameters<'a> = (
6389                alloy::sol_types::sol_data::Address,
6390                alloy::sol_types::sol_data::Address,
6391                alloy::sol_types::sol_data::Uint<64>,
6392                alloy::sol_types::sol_data::String,
6393            );
6394            type Token<'a> = <Self::Parameters<
6395                'a,
6396            > as alloy_sol_types::SolType>::Token<'a>;
6397            #[inline]
6398            fn new<'a>(
6399                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6400            ) -> Self {
6401                tuple.into()
6402            }
6403            #[inline]
6404            fn tokenize(&self) -> Self::Token<'_> {
6405                (
6406                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6407                        &self._ethPOS,
6408                    ),
6409                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6410                        &self._eigenPodManager,
6411                    ),
6412                    <alloy::sol_types::sol_data::Uint<
6413                        64,
6414                    > as alloy_sol_types::SolType>::tokenize(&self._GENESIS_TIME),
6415                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
6416                        &self._version,
6417                    ),
6418                )
6419            }
6420        }
6421    };
6422    #[derive(serde::Serialize, serde::Deserialize)]
6423    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6424    /**Function with signature `GENESIS_TIME()` and selector `0xf2882461`.
6425```solidity
6426function GENESIS_TIME() external view returns (uint64);
6427```*/
6428    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6429    #[derive(Clone)]
6430    pub struct GENESIS_TIMECall;
6431    #[derive(serde::Serialize, serde::Deserialize)]
6432    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6433    ///Container type for the return parameters of the [`GENESIS_TIME()`](GENESIS_TIMECall) function.
6434    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6435    #[derive(Clone)]
6436    pub struct GENESIS_TIMEReturn {
6437        #[allow(missing_docs)]
6438        pub _0: u64,
6439    }
6440    #[allow(
6441        non_camel_case_types,
6442        non_snake_case,
6443        clippy::pub_underscore_fields,
6444        clippy::style
6445    )]
6446    const _: () = {
6447        use alloy::sol_types as alloy_sol_types;
6448        {
6449            #[doc(hidden)]
6450            type UnderlyingSolTuple<'a> = ();
6451            #[doc(hidden)]
6452            type UnderlyingRustTuple<'a> = ();
6453            #[cfg(test)]
6454            #[allow(dead_code, unreachable_patterns)]
6455            fn _type_assertion(
6456                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6457            ) {
6458                match _t {
6459                    alloy_sol_types::private::AssertTypeEq::<
6460                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6461                    >(_) => {}
6462                }
6463            }
6464            #[automatically_derived]
6465            #[doc(hidden)]
6466            impl ::core::convert::From<GENESIS_TIMECall> for UnderlyingRustTuple<'_> {
6467                fn from(value: GENESIS_TIMECall) -> Self {
6468                    ()
6469                }
6470            }
6471            #[automatically_derived]
6472            #[doc(hidden)]
6473            impl ::core::convert::From<UnderlyingRustTuple<'_>> for GENESIS_TIMECall {
6474                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6475                    Self
6476                }
6477            }
6478        }
6479        {
6480            #[doc(hidden)]
6481            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
6482            #[doc(hidden)]
6483            type UnderlyingRustTuple<'a> = (u64,);
6484            #[cfg(test)]
6485            #[allow(dead_code, unreachable_patterns)]
6486            fn _type_assertion(
6487                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6488            ) {
6489                match _t {
6490                    alloy_sol_types::private::AssertTypeEq::<
6491                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6492                    >(_) => {}
6493                }
6494            }
6495            #[automatically_derived]
6496            #[doc(hidden)]
6497            impl ::core::convert::From<GENESIS_TIMEReturn> for UnderlyingRustTuple<'_> {
6498                fn from(value: GENESIS_TIMEReturn) -> Self {
6499                    (value._0,)
6500                }
6501            }
6502            #[automatically_derived]
6503            #[doc(hidden)]
6504            impl ::core::convert::From<UnderlyingRustTuple<'_>> for GENESIS_TIMEReturn {
6505                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6506                    Self { _0: tuple.0 }
6507                }
6508            }
6509        }
6510        #[automatically_derived]
6511        impl alloy_sol_types::SolCall for GENESIS_TIMECall {
6512            type Parameters<'a> = ();
6513            type Token<'a> = <Self::Parameters<
6514                'a,
6515            > as alloy_sol_types::SolType>::Token<'a>;
6516            type Return = u64;
6517            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
6518            type ReturnToken<'a> = <Self::ReturnTuple<
6519                'a,
6520            > as alloy_sol_types::SolType>::Token<'a>;
6521            const SIGNATURE: &'static str = "GENESIS_TIME()";
6522            const SELECTOR: [u8; 4] = [242u8, 136u8, 36u8, 97u8];
6523            #[inline]
6524            fn new<'a>(
6525                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6526            ) -> Self {
6527                tuple.into()
6528            }
6529            #[inline]
6530            fn tokenize(&self) -> Self::Token<'_> {
6531                ()
6532            }
6533            #[inline]
6534            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6535                (
6536                    <alloy::sol_types::sol_data::Uint<
6537                        64,
6538                    > as alloy_sol_types::SolType>::tokenize(ret),
6539                )
6540            }
6541            #[inline]
6542            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6543                <Self::ReturnTuple<
6544                    '_,
6545                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6546                    .map(|r| {
6547                        let r: GENESIS_TIMEReturn = r.into();
6548                        r._0
6549                    })
6550            }
6551            #[inline]
6552            fn abi_decode_returns_validate(
6553                data: &[u8],
6554            ) -> alloy_sol_types::Result<Self::Return> {
6555                <Self::ReturnTuple<
6556                    '_,
6557                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6558                    .map(|r| {
6559                        let r: GENESIS_TIMEReturn = r.into();
6560                        r._0
6561                    })
6562            }
6563        }
6564    };
6565    #[derive(serde::Serialize, serde::Deserialize)]
6566    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6567    /**Function with signature `activeValidatorCount()` and selector `0x2340e8d3`.
6568```solidity
6569function activeValidatorCount() external view returns (uint256);
6570```*/
6571    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6572    #[derive(Clone)]
6573    pub struct activeValidatorCountCall;
6574    #[derive(serde::Serialize, serde::Deserialize)]
6575    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6576    ///Container type for the return parameters of the [`activeValidatorCount()`](activeValidatorCountCall) function.
6577    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6578    #[derive(Clone)]
6579    pub struct activeValidatorCountReturn {
6580        #[allow(missing_docs)]
6581        pub _0: alloy::sol_types::private::primitives::aliases::U256,
6582    }
6583    #[allow(
6584        non_camel_case_types,
6585        non_snake_case,
6586        clippy::pub_underscore_fields,
6587        clippy::style
6588    )]
6589    const _: () = {
6590        use alloy::sol_types as alloy_sol_types;
6591        {
6592            #[doc(hidden)]
6593            type UnderlyingSolTuple<'a> = ();
6594            #[doc(hidden)]
6595            type UnderlyingRustTuple<'a> = ();
6596            #[cfg(test)]
6597            #[allow(dead_code, unreachable_patterns)]
6598            fn _type_assertion(
6599                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6600            ) {
6601                match _t {
6602                    alloy_sol_types::private::AssertTypeEq::<
6603                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6604                    >(_) => {}
6605                }
6606            }
6607            #[automatically_derived]
6608            #[doc(hidden)]
6609            impl ::core::convert::From<activeValidatorCountCall>
6610            for UnderlyingRustTuple<'_> {
6611                fn from(value: activeValidatorCountCall) -> Self {
6612                    ()
6613                }
6614            }
6615            #[automatically_derived]
6616            #[doc(hidden)]
6617            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6618            for activeValidatorCountCall {
6619                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6620                    Self
6621                }
6622            }
6623        }
6624        {
6625            #[doc(hidden)]
6626            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6627            #[doc(hidden)]
6628            type UnderlyingRustTuple<'a> = (
6629                alloy::sol_types::private::primitives::aliases::U256,
6630            );
6631            #[cfg(test)]
6632            #[allow(dead_code, unreachable_patterns)]
6633            fn _type_assertion(
6634                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6635            ) {
6636                match _t {
6637                    alloy_sol_types::private::AssertTypeEq::<
6638                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6639                    >(_) => {}
6640                }
6641            }
6642            #[automatically_derived]
6643            #[doc(hidden)]
6644            impl ::core::convert::From<activeValidatorCountReturn>
6645            for UnderlyingRustTuple<'_> {
6646                fn from(value: activeValidatorCountReturn) -> Self {
6647                    (value._0,)
6648                }
6649            }
6650            #[automatically_derived]
6651            #[doc(hidden)]
6652            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6653            for activeValidatorCountReturn {
6654                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6655                    Self { _0: tuple.0 }
6656                }
6657            }
6658        }
6659        #[automatically_derived]
6660        impl alloy_sol_types::SolCall for activeValidatorCountCall {
6661            type Parameters<'a> = ();
6662            type Token<'a> = <Self::Parameters<
6663                'a,
6664            > as alloy_sol_types::SolType>::Token<'a>;
6665            type Return = alloy::sol_types::private::primitives::aliases::U256;
6666            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6667            type ReturnToken<'a> = <Self::ReturnTuple<
6668                'a,
6669            > as alloy_sol_types::SolType>::Token<'a>;
6670            const SIGNATURE: &'static str = "activeValidatorCount()";
6671            const SELECTOR: [u8; 4] = [35u8, 64u8, 232u8, 211u8];
6672            #[inline]
6673            fn new<'a>(
6674                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6675            ) -> Self {
6676                tuple.into()
6677            }
6678            #[inline]
6679            fn tokenize(&self) -> Self::Token<'_> {
6680                ()
6681            }
6682            #[inline]
6683            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6684                (
6685                    <alloy::sol_types::sol_data::Uint<
6686                        256,
6687                    > as alloy_sol_types::SolType>::tokenize(ret),
6688                )
6689            }
6690            #[inline]
6691            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6692                <Self::ReturnTuple<
6693                    '_,
6694                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6695                    .map(|r| {
6696                        let r: activeValidatorCountReturn = r.into();
6697                        r._0
6698                    })
6699            }
6700            #[inline]
6701            fn abi_decode_returns_validate(
6702                data: &[u8],
6703            ) -> alloy_sol_types::Result<Self::Return> {
6704                <Self::ReturnTuple<
6705                    '_,
6706                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6707                    .map(|r| {
6708                        let r: activeValidatorCountReturn = r.into();
6709                        r._0
6710                    })
6711            }
6712        }
6713    };
6714    #[derive(serde::Serialize, serde::Deserialize)]
6715    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6716    /**Function with signature `checkpointBalanceExitedGwei(uint64)` and selector `0x52396a59`.
6717```solidity
6718function checkpointBalanceExitedGwei(uint64) external view returns (uint64);
6719```*/
6720    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6721    #[derive(Clone)]
6722    pub struct checkpointBalanceExitedGweiCall(pub u64);
6723    #[derive(serde::Serialize, serde::Deserialize)]
6724    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6725    ///Container type for the return parameters of the [`checkpointBalanceExitedGwei(uint64)`](checkpointBalanceExitedGweiCall) function.
6726    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6727    #[derive(Clone)]
6728    pub struct checkpointBalanceExitedGweiReturn {
6729        #[allow(missing_docs)]
6730        pub _0: u64,
6731    }
6732    #[allow(
6733        non_camel_case_types,
6734        non_snake_case,
6735        clippy::pub_underscore_fields,
6736        clippy::style
6737    )]
6738    const _: () = {
6739        use alloy::sol_types as alloy_sol_types;
6740        {
6741            #[doc(hidden)]
6742            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
6743            #[doc(hidden)]
6744            type UnderlyingRustTuple<'a> = (u64,);
6745            #[cfg(test)]
6746            #[allow(dead_code, unreachable_patterns)]
6747            fn _type_assertion(
6748                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6749            ) {
6750                match _t {
6751                    alloy_sol_types::private::AssertTypeEq::<
6752                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6753                    >(_) => {}
6754                }
6755            }
6756            #[automatically_derived]
6757            #[doc(hidden)]
6758            impl ::core::convert::From<checkpointBalanceExitedGweiCall>
6759            for UnderlyingRustTuple<'_> {
6760                fn from(value: checkpointBalanceExitedGweiCall) -> Self {
6761                    (value.0,)
6762                }
6763            }
6764            #[automatically_derived]
6765            #[doc(hidden)]
6766            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6767            for checkpointBalanceExitedGweiCall {
6768                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6769                    Self(tuple.0)
6770                }
6771            }
6772        }
6773        {
6774            #[doc(hidden)]
6775            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
6776            #[doc(hidden)]
6777            type UnderlyingRustTuple<'a> = (u64,);
6778            #[cfg(test)]
6779            #[allow(dead_code, unreachable_patterns)]
6780            fn _type_assertion(
6781                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6782            ) {
6783                match _t {
6784                    alloy_sol_types::private::AssertTypeEq::<
6785                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6786                    >(_) => {}
6787                }
6788            }
6789            #[automatically_derived]
6790            #[doc(hidden)]
6791            impl ::core::convert::From<checkpointBalanceExitedGweiReturn>
6792            for UnderlyingRustTuple<'_> {
6793                fn from(value: checkpointBalanceExitedGweiReturn) -> Self {
6794                    (value._0,)
6795                }
6796            }
6797            #[automatically_derived]
6798            #[doc(hidden)]
6799            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6800            for checkpointBalanceExitedGweiReturn {
6801                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6802                    Self { _0: tuple.0 }
6803                }
6804            }
6805        }
6806        #[automatically_derived]
6807        impl alloy_sol_types::SolCall for checkpointBalanceExitedGweiCall {
6808            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
6809            type Token<'a> = <Self::Parameters<
6810                'a,
6811            > as alloy_sol_types::SolType>::Token<'a>;
6812            type Return = u64;
6813            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
6814            type ReturnToken<'a> = <Self::ReturnTuple<
6815                'a,
6816            > as alloy_sol_types::SolType>::Token<'a>;
6817            const SIGNATURE: &'static str = "checkpointBalanceExitedGwei(uint64)";
6818            const SELECTOR: [u8; 4] = [82u8, 57u8, 106u8, 89u8];
6819            #[inline]
6820            fn new<'a>(
6821                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6822            ) -> Self {
6823                tuple.into()
6824            }
6825            #[inline]
6826            fn tokenize(&self) -> Self::Token<'_> {
6827                (
6828                    <alloy::sol_types::sol_data::Uint<
6829                        64,
6830                    > as alloy_sol_types::SolType>::tokenize(&self.0),
6831                )
6832            }
6833            #[inline]
6834            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6835                (
6836                    <alloy::sol_types::sol_data::Uint<
6837                        64,
6838                    > as alloy_sol_types::SolType>::tokenize(ret),
6839                )
6840            }
6841            #[inline]
6842            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6843                <Self::ReturnTuple<
6844                    '_,
6845                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6846                    .map(|r| {
6847                        let r: checkpointBalanceExitedGweiReturn = r.into();
6848                        r._0
6849                    })
6850            }
6851            #[inline]
6852            fn abi_decode_returns_validate(
6853                data: &[u8],
6854            ) -> alloy_sol_types::Result<Self::Return> {
6855                <Self::ReturnTuple<
6856                    '_,
6857                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6858                    .map(|r| {
6859                        let r: checkpointBalanceExitedGweiReturn = r.into();
6860                        r._0
6861                    })
6862            }
6863        }
6864    };
6865    #[derive(serde::Serialize, serde::Deserialize)]
6866    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6867    /**Function with signature `currentCheckpoint()` and selector `0x47d28372`.
6868```solidity
6869function currentCheckpoint() external view returns (IEigenPodTypes.Checkpoint memory);
6870```*/
6871    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6872    #[derive(Clone)]
6873    pub struct currentCheckpointCall;
6874    #[derive(serde::Serialize, serde::Deserialize)]
6875    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6876    ///Container type for the return parameters of the [`currentCheckpoint()`](currentCheckpointCall) function.
6877    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6878    #[derive(Clone)]
6879    pub struct currentCheckpointReturn {
6880        #[allow(missing_docs)]
6881        pub _0: <IEigenPodTypes::Checkpoint as alloy::sol_types::SolType>::RustType,
6882    }
6883    #[allow(
6884        non_camel_case_types,
6885        non_snake_case,
6886        clippy::pub_underscore_fields,
6887        clippy::style
6888    )]
6889    const _: () = {
6890        use alloy::sol_types as alloy_sol_types;
6891        {
6892            #[doc(hidden)]
6893            type UnderlyingSolTuple<'a> = ();
6894            #[doc(hidden)]
6895            type UnderlyingRustTuple<'a> = ();
6896            #[cfg(test)]
6897            #[allow(dead_code, unreachable_patterns)]
6898            fn _type_assertion(
6899                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6900            ) {
6901                match _t {
6902                    alloy_sol_types::private::AssertTypeEq::<
6903                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6904                    >(_) => {}
6905                }
6906            }
6907            #[automatically_derived]
6908            #[doc(hidden)]
6909            impl ::core::convert::From<currentCheckpointCall>
6910            for UnderlyingRustTuple<'_> {
6911                fn from(value: currentCheckpointCall) -> Self {
6912                    ()
6913                }
6914            }
6915            #[automatically_derived]
6916            #[doc(hidden)]
6917            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6918            for currentCheckpointCall {
6919                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6920                    Self
6921                }
6922            }
6923        }
6924        {
6925            #[doc(hidden)]
6926            type UnderlyingSolTuple<'a> = (IEigenPodTypes::Checkpoint,);
6927            #[doc(hidden)]
6928            type UnderlyingRustTuple<'a> = (
6929                <IEigenPodTypes::Checkpoint as alloy::sol_types::SolType>::RustType,
6930            );
6931            #[cfg(test)]
6932            #[allow(dead_code, unreachable_patterns)]
6933            fn _type_assertion(
6934                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6935            ) {
6936                match _t {
6937                    alloy_sol_types::private::AssertTypeEq::<
6938                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6939                    >(_) => {}
6940                }
6941            }
6942            #[automatically_derived]
6943            #[doc(hidden)]
6944            impl ::core::convert::From<currentCheckpointReturn>
6945            for UnderlyingRustTuple<'_> {
6946                fn from(value: currentCheckpointReturn) -> Self {
6947                    (value._0,)
6948                }
6949            }
6950            #[automatically_derived]
6951            #[doc(hidden)]
6952            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6953            for currentCheckpointReturn {
6954                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6955                    Self { _0: tuple.0 }
6956                }
6957            }
6958        }
6959        #[automatically_derived]
6960        impl alloy_sol_types::SolCall for currentCheckpointCall {
6961            type Parameters<'a> = ();
6962            type Token<'a> = <Self::Parameters<
6963                'a,
6964            > as alloy_sol_types::SolType>::Token<'a>;
6965            type Return = <IEigenPodTypes::Checkpoint as alloy::sol_types::SolType>::RustType;
6966            type ReturnTuple<'a> = (IEigenPodTypes::Checkpoint,);
6967            type ReturnToken<'a> = <Self::ReturnTuple<
6968                'a,
6969            > as alloy_sol_types::SolType>::Token<'a>;
6970            const SIGNATURE: &'static str = "currentCheckpoint()";
6971            const SELECTOR: [u8; 4] = [71u8, 210u8, 131u8, 114u8];
6972            #[inline]
6973            fn new<'a>(
6974                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6975            ) -> Self {
6976                tuple.into()
6977            }
6978            #[inline]
6979            fn tokenize(&self) -> Self::Token<'_> {
6980                ()
6981            }
6982            #[inline]
6983            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6984                (
6985                    <IEigenPodTypes::Checkpoint as alloy_sol_types::SolType>::tokenize(
6986                        ret,
6987                    ),
6988                )
6989            }
6990            #[inline]
6991            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6992                <Self::ReturnTuple<
6993                    '_,
6994                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6995                    .map(|r| {
6996                        let r: currentCheckpointReturn = r.into();
6997                        r._0
6998                    })
6999            }
7000            #[inline]
7001            fn abi_decode_returns_validate(
7002                data: &[u8],
7003            ) -> alloy_sol_types::Result<Self::Return> {
7004                <Self::ReturnTuple<
7005                    '_,
7006                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7007                    .map(|r| {
7008                        let r: currentCheckpointReturn = r.into();
7009                        r._0
7010                    })
7011            }
7012        }
7013    };
7014    #[derive(serde::Serialize, serde::Deserialize)]
7015    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7016    /**Function with signature `currentCheckpointTimestamp()` and selector `0x42ecff2a`.
7017```solidity
7018function currentCheckpointTimestamp() external view returns (uint64);
7019```*/
7020    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7021    #[derive(Clone)]
7022    pub struct currentCheckpointTimestampCall;
7023    #[derive(serde::Serialize, serde::Deserialize)]
7024    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7025    ///Container type for the return parameters of the [`currentCheckpointTimestamp()`](currentCheckpointTimestampCall) function.
7026    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7027    #[derive(Clone)]
7028    pub struct currentCheckpointTimestampReturn {
7029        #[allow(missing_docs)]
7030        pub _0: u64,
7031    }
7032    #[allow(
7033        non_camel_case_types,
7034        non_snake_case,
7035        clippy::pub_underscore_fields,
7036        clippy::style
7037    )]
7038    const _: () = {
7039        use alloy::sol_types as alloy_sol_types;
7040        {
7041            #[doc(hidden)]
7042            type UnderlyingSolTuple<'a> = ();
7043            #[doc(hidden)]
7044            type UnderlyingRustTuple<'a> = ();
7045            #[cfg(test)]
7046            #[allow(dead_code, unreachable_patterns)]
7047            fn _type_assertion(
7048                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7049            ) {
7050                match _t {
7051                    alloy_sol_types::private::AssertTypeEq::<
7052                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7053                    >(_) => {}
7054                }
7055            }
7056            #[automatically_derived]
7057            #[doc(hidden)]
7058            impl ::core::convert::From<currentCheckpointTimestampCall>
7059            for UnderlyingRustTuple<'_> {
7060                fn from(value: currentCheckpointTimestampCall) -> Self {
7061                    ()
7062                }
7063            }
7064            #[automatically_derived]
7065            #[doc(hidden)]
7066            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7067            for currentCheckpointTimestampCall {
7068                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7069                    Self
7070                }
7071            }
7072        }
7073        {
7074            #[doc(hidden)]
7075            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7076            #[doc(hidden)]
7077            type UnderlyingRustTuple<'a> = (u64,);
7078            #[cfg(test)]
7079            #[allow(dead_code, unreachable_patterns)]
7080            fn _type_assertion(
7081                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7082            ) {
7083                match _t {
7084                    alloy_sol_types::private::AssertTypeEq::<
7085                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7086                    >(_) => {}
7087                }
7088            }
7089            #[automatically_derived]
7090            #[doc(hidden)]
7091            impl ::core::convert::From<currentCheckpointTimestampReturn>
7092            for UnderlyingRustTuple<'_> {
7093                fn from(value: currentCheckpointTimestampReturn) -> Self {
7094                    (value._0,)
7095                }
7096            }
7097            #[automatically_derived]
7098            #[doc(hidden)]
7099            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7100            for currentCheckpointTimestampReturn {
7101                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7102                    Self { _0: tuple.0 }
7103                }
7104            }
7105        }
7106        #[automatically_derived]
7107        impl alloy_sol_types::SolCall for currentCheckpointTimestampCall {
7108            type Parameters<'a> = ();
7109            type Token<'a> = <Self::Parameters<
7110                'a,
7111            > as alloy_sol_types::SolType>::Token<'a>;
7112            type Return = u64;
7113            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7114            type ReturnToken<'a> = <Self::ReturnTuple<
7115                'a,
7116            > as alloy_sol_types::SolType>::Token<'a>;
7117            const SIGNATURE: &'static str = "currentCheckpointTimestamp()";
7118            const SELECTOR: [u8; 4] = [66u8, 236u8, 255u8, 42u8];
7119            #[inline]
7120            fn new<'a>(
7121                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7122            ) -> Self {
7123                tuple.into()
7124            }
7125            #[inline]
7126            fn tokenize(&self) -> Self::Token<'_> {
7127                ()
7128            }
7129            #[inline]
7130            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7131                (
7132                    <alloy::sol_types::sol_data::Uint<
7133                        64,
7134                    > as alloy_sol_types::SolType>::tokenize(ret),
7135                )
7136            }
7137            #[inline]
7138            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7139                <Self::ReturnTuple<
7140                    '_,
7141                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7142                    .map(|r| {
7143                        let r: currentCheckpointTimestampReturn = r.into();
7144                        r._0
7145                    })
7146            }
7147            #[inline]
7148            fn abi_decode_returns_validate(
7149                data: &[u8],
7150            ) -> alloy_sol_types::Result<Self::Return> {
7151                <Self::ReturnTuple<
7152                    '_,
7153                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7154                    .map(|r| {
7155                        let r: currentCheckpointTimestampReturn = r.into();
7156                        r._0
7157                    })
7158            }
7159        }
7160    };
7161    #[derive(serde::Serialize, serde::Deserialize)]
7162    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7163    /**Function with signature `eigenPodManager()` and selector `0x4665bcda`.
7164```solidity
7165function eigenPodManager() external view returns (address);
7166```*/
7167    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7168    #[derive(Clone)]
7169    pub struct eigenPodManagerCall;
7170    #[derive(serde::Serialize, serde::Deserialize)]
7171    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7172    ///Container type for the return parameters of the [`eigenPodManager()`](eigenPodManagerCall) function.
7173    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7174    #[derive(Clone)]
7175    pub struct eigenPodManagerReturn {
7176        #[allow(missing_docs)]
7177        pub _0: alloy::sol_types::private::Address,
7178    }
7179    #[allow(
7180        non_camel_case_types,
7181        non_snake_case,
7182        clippy::pub_underscore_fields,
7183        clippy::style
7184    )]
7185    const _: () = {
7186        use alloy::sol_types as alloy_sol_types;
7187        {
7188            #[doc(hidden)]
7189            type UnderlyingSolTuple<'a> = ();
7190            #[doc(hidden)]
7191            type UnderlyingRustTuple<'a> = ();
7192            #[cfg(test)]
7193            #[allow(dead_code, unreachable_patterns)]
7194            fn _type_assertion(
7195                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7196            ) {
7197                match _t {
7198                    alloy_sol_types::private::AssertTypeEq::<
7199                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7200                    >(_) => {}
7201                }
7202            }
7203            #[automatically_derived]
7204            #[doc(hidden)]
7205            impl ::core::convert::From<eigenPodManagerCall> for UnderlyingRustTuple<'_> {
7206                fn from(value: eigenPodManagerCall) -> Self {
7207                    ()
7208                }
7209            }
7210            #[automatically_derived]
7211            #[doc(hidden)]
7212            impl ::core::convert::From<UnderlyingRustTuple<'_>> for eigenPodManagerCall {
7213                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7214                    Self
7215                }
7216            }
7217        }
7218        {
7219            #[doc(hidden)]
7220            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7221            #[doc(hidden)]
7222            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7223            #[cfg(test)]
7224            #[allow(dead_code, unreachable_patterns)]
7225            fn _type_assertion(
7226                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7227            ) {
7228                match _t {
7229                    alloy_sol_types::private::AssertTypeEq::<
7230                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7231                    >(_) => {}
7232                }
7233            }
7234            #[automatically_derived]
7235            #[doc(hidden)]
7236            impl ::core::convert::From<eigenPodManagerReturn>
7237            for UnderlyingRustTuple<'_> {
7238                fn from(value: eigenPodManagerReturn) -> Self {
7239                    (value._0,)
7240                }
7241            }
7242            #[automatically_derived]
7243            #[doc(hidden)]
7244            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7245            for eigenPodManagerReturn {
7246                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7247                    Self { _0: tuple.0 }
7248                }
7249            }
7250        }
7251        #[automatically_derived]
7252        impl alloy_sol_types::SolCall for eigenPodManagerCall {
7253            type Parameters<'a> = ();
7254            type Token<'a> = <Self::Parameters<
7255                'a,
7256            > as alloy_sol_types::SolType>::Token<'a>;
7257            type Return = alloy::sol_types::private::Address;
7258            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
7259            type ReturnToken<'a> = <Self::ReturnTuple<
7260                'a,
7261            > as alloy_sol_types::SolType>::Token<'a>;
7262            const SIGNATURE: &'static str = "eigenPodManager()";
7263            const SELECTOR: [u8; 4] = [70u8, 101u8, 188u8, 218u8];
7264            #[inline]
7265            fn new<'a>(
7266                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7267            ) -> Self {
7268                tuple.into()
7269            }
7270            #[inline]
7271            fn tokenize(&self) -> Self::Token<'_> {
7272                ()
7273            }
7274            #[inline]
7275            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7276                (
7277                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7278                        ret,
7279                    ),
7280                )
7281            }
7282            #[inline]
7283            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7284                <Self::ReturnTuple<
7285                    '_,
7286                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7287                    .map(|r| {
7288                        let r: eigenPodManagerReturn = r.into();
7289                        r._0
7290                    })
7291            }
7292            #[inline]
7293            fn abi_decode_returns_validate(
7294                data: &[u8],
7295            ) -> alloy_sol_types::Result<Self::Return> {
7296                <Self::ReturnTuple<
7297                    '_,
7298                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7299                    .map(|r| {
7300                        let r: eigenPodManagerReturn = r.into();
7301                        r._0
7302                    })
7303            }
7304        }
7305    };
7306    #[derive(serde::Serialize, serde::Deserialize)]
7307    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7308    /**Function with signature `ethPOS()` and selector `0x74cdd798`.
7309```solidity
7310function ethPOS() external view returns (address);
7311```*/
7312    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7313    #[derive(Clone)]
7314    pub struct ethPOSCall;
7315    #[derive(serde::Serialize, serde::Deserialize)]
7316    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7317    ///Container type for the return parameters of the [`ethPOS()`](ethPOSCall) function.
7318    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7319    #[derive(Clone)]
7320    pub struct ethPOSReturn {
7321        #[allow(missing_docs)]
7322        pub _0: alloy::sol_types::private::Address,
7323    }
7324    #[allow(
7325        non_camel_case_types,
7326        non_snake_case,
7327        clippy::pub_underscore_fields,
7328        clippy::style
7329    )]
7330    const _: () = {
7331        use alloy::sol_types as alloy_sol_types;
7332        {
7333            #[doc(hidden)]
7334            type UnderlyingSolTuple<'a> = ();
7335            #[doc(hidden)]
7336            type UnderlyingRustTuple<'a> = ();
7337            #[cfg(test)]
7338            #[allow(dead_code, unreachable_patterns)]
7339            fn _type_assertion(
7340                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7341            ) {
7342                match _t {
7343                    alloy_sol_types::private::AssertTypeEq::<
7344                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7345                    >(_) => {}
7346                }
7347            }
7348            #[automatically_derived]
7349            #[doc(hidden)]
7350            impl ::core::convert::From<ethPOSCall> for UnderlyingRustTuple<'_> {
7351                fn from(value: ethPOSCall) -> Self {
7352                    ()
7353                }
7354            }
7355            #[automatically_derived]
7356            #[doc(hidden)]
7357            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ethPOSCall {
7358                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7359                    Self
7360                }
7361            }
7362        }
7363        {
7364            #[doc(hidden)]
7365            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7366            #[doc(hidden)]
7367            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7368            #[cfg(test)]
7369            #[allow(dead_code, unreachable_patterns)]
7370            fn _type_assertion(
7371                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7372            ) {
7373                match _t {
7374                    alloy_sol_types::private::AssertTypeEq::<
7375                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7376                    >(_) => {}
7377                }
7378            }
7379            #[automatically_derived]
7380            #[doc(hidden)]
7381            impl ::core::convert::From<ethPOSReturn> for UnderlyingRustTuple<'_> {
7382                fn from(value: ethPOSReturn) -> Self {
7383                    (value._0,)
7384                }
7385            }
7386            #[automatically_derived]
7387            #[doc(hidden)]
7388            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ethPOSReturn {
7389                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7390                    Self { _0: tuple.0 }
7391                }
7392            }
7393        }
7394        #[automatically_derived]
7395        impl alloy_sol_types::SolCall for ethPOSCall {
7396            type Parameters<'a> = ();
7397            type Token<'a> = <Self::Parameters<
7398                'a,
7399            > as alloy_sol_types::SolType>::Token<'a>;
7400            type Return = alloy::sol_types::private::Address;
7401            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
7402            type ReturnToken<'a> = <Self::ReturnTuple<
7403                'a,
7404            > as alloy_sol_types::SolType>::Token<'a>;
7405            const SIGNATURE: &'static str = "ethPOS()";
7406            const SELECTOR: [u8; 4] = [116u8, 205u8, 215u8, 152u8];
7407            #[inline]
7408            fn new<'a>(
7409                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7410            ) -> Self {
7411                tuple.into()
7412            }
7413            #[inline]
7414            fn tokenize(&self) -> Self::Token<'_> {
7415                ()
7416            }
7417            #[inline]
7418            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7419                (
7420                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7421                        ret,
7422                    ),
7423                )
7424            }
7425            #[inline]
7426            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7427                <Self::ReturnTuple<
7428                    '_,
7429                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7430                    .map(|r| {
7431                        let r: ethPOSReturn = r.into();
7432                        r._0
7433                    })
7434            }
7435            #[inline]
7436            fn abi_decode_returns_validate(
7437                data: &[u8],
7438            ) -> alloy_sol_types::Result<Self::Return> {
7439                <Self::ReturnTuple<
7440                    '_,
7441                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7442                    .map(|r| {
7443                        let r: ethPOSReturn = r.into();
7444                        r._0
7445                    })
7446            }
7447        }
7448    };
7449    #[derive(serde::Serialize, serde::Deserialize)]
7450    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7451    /**Function with signature `getParentBlockRoot(uint64)` and selector `0x6c0d2d5a`.
7452```solidity
7453function getParentBlockRoot(uint64 timestamp) external view returns (bytes32);
7454```*/
7455    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7456    #[derive(Clone)]
7457    pub struct getParentBlockRootCall {
7458        #[allow(missing_docs)]
7459        pub timestamp: u64,
7460    }
7461    #[derive(serde::Serialize, serde::Deserialize)]
7462    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7463    ///Container type for the return parameters of the [`getParentBlockRoot(uint64)`](getParentBlockRootCall) function.
7464    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7465    #[derive(Clone)]
7466    pub struct getParentBlockRootReturn {
7467        #[allow(missing_docs)]
7468        pub _0: alloy::sol_types::private::FixedBytes<32>,
7469    }
7470    #[allow(
7471        non_camel_case_types,
7472        non_snake_case,
7473        clippy::pub_underscore_fields,
7474        clippy::style
7475    )]
7476    const _: () = {
7477        use alloy::sol_types as alloy_sol_types;
7478        {
7479            #[doc(hidden)]
7480            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7481            #[doc(hidden)]
7482            type UnderlyingRustTuple<'a> = (u64,);
7483            #[cfg(test)]
7484            #[allow(dead_code, unreachable_patterns)]
7485            fn _type_assertion(
7486                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7487            ) {
7488                match _t {
7489                    alloy_sol_types::private::AssertTypeEq::<
7490                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7491                    >(_) => {}
7492                }
7493            }
7494            #[automatically_derived]
7495            #[doc(hidden)]
7496            impl ::core::convert::From<getParentBlockRootCall>
7497            for UnderlyingRustTuple<'_> {
7498                fn from(value: getParentBlockRootCall) -> Self {
7499                    (value.timestamp,)
7500                }
7501            }
7502            #[automatically_derived]
7503            #[doc(hidden)]
7504            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7505            for getParentBlockRootCall {
7506                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7507                    Self { timestamp: tuple.0 }
7508                }
7509            }
7510        }
7511        {
7512            #[doc(hidden)]
7513            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
7514            #[doc(hidden)]
7515            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
7516            #[cfg(test)]
7517            #[allow(dead_code, unreachable_patterns)]
7518            fn _type_assertion(
7519                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7520            ) {
7521                match _t {
7522                    alloy_sol_types::private::AssertTypeEq::<
7523                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7524                    >(_) => {}
7525                }
7526            }
7527            #[automatically_derived]
7528            #[doc(hidden)]
7529            impl ::core::convert::From<getParentBlockRootReturn>
7530            for UnderlyingRustTuple<'_> {
7531                fn from(value: getParentBlockRootReturn) -> Self {
7532                    (value._0,)
7533                }
7534            }
7535            #[automatically_derived]
7536            #[doc(hidden)]
7537            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7538            for getParentBlockRootReturn {
7539                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7540                    Self { _0: tuple.0 }
7541                }
7542            }
7543        }
7544        #[automatically_derived]
7545        impl alloy_sol_types::SolCall for getParentBlockRootCall {
7546            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7547            type Token<'a> = <Self::Parameters<
7548                'a,
7549            > as alloy_sol_types::SolType>::Token<'a>;
7550            type Return = alloy::sol_types::private::FixedBytes<32>;
7551            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
7552            type ReturnToken<'a> = <Self::ReturnTuple<
7553                'a,
7554            > as alloy_sol_types::SolType>::Token<'a>;
7555            const SIGNATURE: &'static str = "getParentBlockRoot(uint64)";
7556            const SELECTOR: [u8; 4] = [108u8, 13u8, 45u8, 90u8];
7557            #[inline]
7558            fn new<'a>(
7559                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7560            ) -> Self {
7561                tuple.into()
7562            }
7563            #[inline]
7564            fn tokenize(&self) -> Self::Token<'_> {
7565                (
7566                    <alloy::sol_types::sol_data::Uint<
7567                        64,
7568                    > as alloy_sol_types::SolType>::tokenize(&self.timestamp),
7569                )
7570            }
7571            #[inline]
7572            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7573                (
7574                    <alloy::sol_types::sol_data::FixedBytes<
7575                        32,
7576                    > as alloy_sol_types::SolType>::tokenize(ret),
7577                )
7578            }
7579            #[inline]
7580            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7581                <Self::ReturnTuple<
7582                    '_,
7583                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7584                    .map(|r| {
7585                        let r: getParentBlockRootReturn = r.into();
7586                        r._0
7587                    })
7588            }
7589            #[inline]
7590            fn abi_decode_returns_validate(
7591                data: &[u8],
7592            ) -> alloy_sol_types::Result<Self::Return> {
7593                <Self::ReturnTuple<
7594                    '_,
7595                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7596                    .map(|r| {
7597                        let r: getParentBlockRootReturn = r.into();
7598                        r._0
7599                    })
7600            }
7601        }
7602    };
7603    #[derive(serde::Serialize, serde::Deserialize)]
7604    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7605    /**Function with signature `initialize(address)` and selector `0xc4d66de8`.
7606```solidity
7607function initialize(address _podOwner) external;
7608```*/
7609    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7610    #[derive(Clone)]
7611    pub struct initializeCall {
7612        #[allow(missing_docs)]
7613        pub _podOwner: alloy::sol_types::private::Address,
7614    }
7615    ///Container type for the return parameters of the [`initialize(address)`](initializeCall) function.
7616    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7617    #[derive(Clone)]
7618    pub struct initializeReturn {}
7619    #[allow(
7620        non_camel_case_types,
7621        non_snake_case,
7622        clippy::pub_underscore_fields,
7623        clippy::style
7624    )]
7625    const _: () = {
7626        use alloy::sol_types as alloy_sol_types;
7627        {
7628            #[doc(hidden)]
7629            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7630            #[doc(hidden)]
7631            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7632            #[cfg(test)]
7633            #[allow(dead_code, unreachable_patterns)]
7634            fn _type_assertion(
7635                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7636            ) {
7637                match _t {
7638                    alloy_sol_types::private::AssertTypeEq::<
7639                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7640                    >(_) => {}
7641                }
7642            }
7643            #[automatically_derived]
7644            #[doc(hidden)]
7645            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
7646                fn from(value: initializeCall) -> Self {
7647                    (value._podOwner,)
7648                }
7649            }
7650            #[automatically_derived]
7651            #[doc(hidden)]
7652            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
7653                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7654                    Self { _podOwner: tuple.0 }
7655                }
7656            }
7657        }
7658        {
7659            #[doc(hidden)]
7660            type UnderlyingSolTuple<'a> = ();
7661            #[doc(hidden)]
7662            type UnderlyingRustTuple<'a> = ();
7663            #[cfg(test)]
7664            #[allow(dead_code, unreachable_patterns)]
7665            fn _type_assertion(
7666                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7667            ) {
7668                match _t {
7669                    alloy_sol_types::private::AssertTypeEq::<
7670                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7671                    >(_) => {}
7672                }
7673            }
7674            #[automatically_derived]
7675            #[doc(hidden)]
7676            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
7677                fn from(value: initializeReturn) -> Self {
7678                    ()
7679                }
7680            }
7681            #[automatically_derived]
7682            #[doc(hidden)]
7683            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
7684                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7685                    Self {}
7686                }
7687            }
7688        }
7689        impl initializeReturn {
7690            fn _tokenize(
7691                &self,
7692            ) -> <initializeCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
7693                ()
7694            }
7695        }
7696        #[automatically_derived]
7697        impl alloy_sol_types::SolCall for initializeCall {
7698            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
7699            type Token<'a> = <Self::Parameters<
7700                'a,
7701            > as alloy_sol_types::SolType>::Token<'a>;
7702            type Return = initializeReturn;
7703            type ReturnTuple<'a> = ();
7704            type ReturnToken<'a> = <Self::ReturnTuple<
7705                'a,
7706            > as alloy_sol_types::SolType>::Token<'a>;
7707            const SIGNATURE: &'static str = "initialize(address)";
7708            const SELECTOR: [u8; 4] = [196u8, 214u8, 109u8, 232u8];
7709            #[inline]
7710            fn new<'a>(
7711                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7712            ) -> Self {
7713                tuple.into()
7714            }
7715            #[inline]
7716            fn tokenize(&self) -> Self::Token<'_> {
7717                (
7718                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7719                        &self._podOwner,
7720                    ),
7721                )
7722            }
7723            #[inline]
7724            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7725                initializeReturn::_tokenize(ret)
7726            }
7727            #[inline]
7728            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7729                <Self::ReturnTuple<
7730                    '_,
7731                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7732                    .map(Into::into)
7733            }
7734            #[inline]
7735            fn abi_decode_returns_validate(
7736                data: &[u8],
7737            ) -> alloy_sol_types::Result<Self::Return> {
7738                <Self::ReturnTuple<
7739                    '_,
7740                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7741                    .map(Into::into)
7742            }
7743        }
7744    };
7745    #[derive(serde::Serialize, serde::Deserialize)]
7746    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7747    /**Function with signature `lastCheckpointTimestamp()` and selector `0xee94d67c`.
7748```solidity
7749function lastCheckpointTimestamp() external view returns (uint64);
7750```*/
7751    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7752    #[derive(Clone)]
7753    pub struct lastCheckpointTimestampCall;
7754    #[derive(serde::Serialize, serde::Deserialize)]
7755    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7756    ///Container type for the return parameters of the [`lastCheckpointTimestamp()`](lastCheckpointTimestampCall) function.
7757    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7758    #[derive(Clone)]
7759    pub struct lastCheckpointTimestampReturn {
7760        #[allow(missing_docs)]
7761        pub _0: u64,
7762    }
7763    #[allow(
7764        non_camel_case_types,
7765        non_snake_case,
7766        clippy::pub_underscore_fields,
7767        clippy::style
7768    )]
7769    const _: () = {
7770        use alloy::sol_types as alloy_sol_types;
7771        {
7772            #[doc(hidden)]
7773            type UnderlyingSolTuple<'a> = ();
7774            #[doc(hidden)]
7775            type UnderlyingRustTuple<'a> = ();
7776            #[cfg(test)]
7777            #[allow(dead_code, unreachable_patterns)]
7778            fn _type_assertion(
7779                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7780            ) {
7781                match _t {
7782                    alloy_sol_types::private::AssertTypeEq::<
7783                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7784                    >(_) => {}
7785                }
7786            }
7787            #[automatically_derived]
7788            #[doc(hidden)]
7789            impl ::core::convert::From<lastCheckpointTimestampCall>
7790            for UnderlyingRustTuple<'_> {
7791                fn from(value: lastCheckpointTimestampCall) -> Self {
7792                    ()
7793                }
7794            }
7795            #[automatically_derived]
7796            #[doc(hidden)]
7797            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7798            for lastCheckpointTimestampCall {
7799                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7800                    Self
7801                }
7802            }
7803        }
7804        {
7805            #[doc(hidden)]
7806            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7807            #[doc(hidden)]
7808            type UnderlyingRustTuple<'a> = (u64,);
7809            #[cfg(test)]
7810            #[allow(dead_code, unreachable_patterns)]
7811            fn _type_assertion(
7812                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7813            ) {
7814                match _t {
7815                    alloy_sol_types::private::AssertTypeEq::<
7816                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7817                    >(_) => {}
7818                }
7819            }
7820            #[automatically_derived]
7821            #[doc(hidden)]
7822            impl ::core::convert::From<lastCheckpointTimestampReturn>
7823            for UnderlyingRustTuple<'_> {
7824                fn from(value: lastCheckpointTimestampReturn) -> Self {
7825                    (value._0,)
7826                }
7827            }
7828            #[automatically_derived]
7829            #[doc(hidden)]
7830            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7831            for lastCheckpointTimestampReturn {
7832                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7833                    Self { _0: tuple.0 }
7834                }
7835            }
7836        }
7837        #[automatically_derived]
7838        impl alloy_sol_types::SolCall for lastCheckpointTimestampCall {
7839            type Parameters<'a> = ();
7840            type Token<'a> = <Self::Parameters<
7841                'a,
7842            > as alloy_sol_types::SolType>::Token<'a>;
7843            type Return = u64;
7844            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7845            type ReturnToken<'a> = <Self::ReturnTuple<
7846                'a,
7847            > as alloy_sol_types::SolType>::Token<'a>;
7848            const SIGNATURE: &'static str = "lastCheckpointTimestamp()";
7849            const SELECTOR: [u8; 4] = [238u8, 148u8, 214u8, 124u8];
7850            #[inline]
7851            fn new<'a>(
7852                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7853            ) -> Self {
7854                tuple.into()
7855            }
7856            #[inline]
7857            fn tokenize(&self) -> Self::Token<'_> {
7858                ()
7859            }
7860            #[inline]
7861            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7862                (
7863                    <alloy::sol_types::sol_data::Uint<
7864                        64,
7865                    > as alloy_sol_types::SolType>::tokenize(ret),
7866                )
7867            }
7868            #[inline]
7869            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7870                <Self::ReturnTuple<
7871                    '_,
7872                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7873                    .map(|r| {
7874                        let r: lastCheckpointTimestampReturn = r.into();
7875                        r._0
7876                    })
7877            }
7878            #[inline]
7879            fn abi_decode_returns_validate(
7880                data: &[u8],
7881            ) -> alloy_sol_types::Result<Self::Return> {
7882                <Self::ReturnTuple<
7883                    '_,
7884                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7885                    .map(|r| {
7886                        let r: lastCheckpointTimestampReturn = r.into();
7887                        r._0
7888                    })
7889            }
7890        }
7891    };
7892    #[derive(serde::Serialize, serde::Deserialize)]
7893    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7894    /**Function with signature `podOwner()` and selector `0x0b18ff66`.
7895```solidity
7896function podOwner() external view returns (address);
7897```*/
7898    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7899    #[derive(Clone)]
7900    pub struct podOwnerCall;
7901    #[derive(serde::Serialize, serde::Deserialize)]
7902    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7903    ///Container type for the return parameters of the [`podOwner()`](podOwnerCall) function.
7904    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7905    #[derive(Clone)]
7906    pub struct podOwnerReturn {
7907        #[allow(missing_docs)]
7908        pub _0: alloy::sol_types::private::Address,
7909    }
7910    #[allow(
7911        non_camel_case_types,
7912        non_snake_case,
7913        clippy::pub_underscore_fields,
7914        clippy::style
7915    )]
7916    const _: () = {
7917        use alloy::sol_types as alloy_sol_types;
7918        {
7919            #[doc(hidden)]
7920            type UnderlyingSolTuple<'a> = ();
7921            #[doc(hidden)]
7922            type UnderlyingRustTuple<'a> = ();
7923            #[cfg(test)]
7924            #[allow(dead_code, unreachable_patterns)]
7925            fn _type_assertion(
7926                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7927            ) {
7928                match _t {
7929                    alloy_sol_types::private::AssertTypeEq::<
7930                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7931                    >(_) => {}
7932                }
7933            }
7934            #[automatically_derived]
7935            #[doc(hidden)]
7936            impl ::core::convert::From<podOwnerCall> for UnderlyingRustTuple<'_> {
7937                fn from(value: podOwnerCall) -> Self {
7938                    ()
7939                }
7940            }
7941            #[automatically_derived]
7942            #[doc(hidden)]
7943            impl ::core::convert::From<UnderlyingRustTuple<'_>> for podOwnerCall {
7944                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7945                    Self
7946                }
7947            }
7948        }
7949        {
7950            #[doc(hidden)]
7951            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7952            #[doc(hidden)]
7953            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7954            #[cfg(test)]
7955            #[allow(dead_code, unreachable_patterns)]
7956            fn _type_assertion(
7957                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7958            ) {
7959                match _t {
7960                    alloy_sol_types::private::AssertTypeEq::<
7961                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7962                    >(_) => {}
7963                }
7964            }
7965            #[automatically_derived]
7966            #[doc(hidden)]
7967            impl ::core::convert::From<podOwnerReturn> for UnderlyingRustTuple<'_> {
7968                fn from(value: podOwnerReturn) -> Self {
7969                    (value._0,)
7970                }
7971            }
7972            #[automatically_derived]
7973            #[doc(hidden)]
7974            impl ::core::convert::From<UnderlyingRustTuple<'_>> for podOwnerReturn {
7975                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7976                    Self { _0: tuple.0 }
7977                }
7978            }
7979        }
7980        #[automatically_derived]
7981        impl alloy_sol_types::SolCall for podOwnerCall {
7982            type Parameters<'a> = ();
7983            type Token<'a> = <Self::Parameters<
7984                'a,
7985            > as alloy_sol_types::SolType>::Token<'a>;
7986            type Return = alloy::sol_types::private::Address;
7987            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
7988            type ReturnToken<'a> = <Self::ReturnTuple<
7989                'a,
7990            > as alloy_sol_types::SolType>::Token<'a>;
7991            const SIGNATURE: &'static str = "podOwner()";
7992            const SELECTOR: [u8; 4] = [11u8, 24u8, 255u8, 102u8];
7993            #[inline]
7994            fn new<'a>(
7995                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7996            ) -> Self {
7997                tuple.into()
7998            }
7999            #[inline]
8000            fn tokenize(&self) -> Self::Token<'_> {
8001                ()
8002            }
8003            #[inline]
8004            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8005                (
8006                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8007                        ret,
8008                    ),
8009                )
8010            }
8011            #[inline]
8012            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8013                <Self::ReturnTuple<
8014                    '_,
8015                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8016                    .map(|r| {
8017                        let r: podOwnerReturn = r.into();
8018                        r._0
8019                    })
8020            }
8021            #[inline]
8022            fn abi_decode_returns_validate(
8023                data: &[u8],
8024            ) -> alloy_sol_types::Result<Self::Return> {
8025                <Self::ReturnTuple<
8026                    '_,
8027                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8028                    .map(|r| {
8029                        let r: podOwnerReturn = r.into();
8030                        r._0
8031                    })
8032            }
8033        }
8034    };
8035    #[derive(serde::Serialize, serde::Deserialize)]
8036    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8037    /**Function with signature `proofSubmitter()` and selector `0x58753357`.
8038```solidity
8039function proofSubmitter() external view returns (address);
8040```*/
8041    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8042    #[derive(Clone)]
8043    pub struct proofSubmitterCall;
8044    #[derive(serde::Serialize, serde::Deserialize)]
8045    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8046    ///Container type for the return parameters of the [`proofSubmitter()`](proofSubmitterCall) function.
8047    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8048    #[derive(Clone)]
8049    pub struct proofSubmitterReturn {
8050        #[allow(missing_docs)]
8051        pub _0: alloy::sol_types::private::Address,
8052    }
8053    #[allow(
8054        non_camel_case_types,
8055        non_snake_case,
8056        clippy::pub_underscore_fields,
8057        clippy::style
8058    )]
8059    const _: () = {
8060        use alloy::sol_types as alloy_sol_types;
8061        {
8062            #[doc(hidden)]
8063            type UnderlyingSolTuple<'a> = ();
8064            #[doc(hidden)]
8065            type UnderlyingRustTuple<'a> = ();
8066            #[cfg(test)]
8067            #[allow(dead_code, unreachable_patterns)]
8068            fn _type_assertion(
8069                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8070            ) {
8071                match _t {
8072                    alloy_sol_types::private::AssertTypeEq::<
8073                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8074                    >(_) => {}
8075                }
8076            }
8077            #[automatically_derived]
8078            #[doc(hidden)]
8079            impl ::core::convert::From<proofSubmitterCall> for UnderlyingRustTuple<'_> {
8080                fn from(value: proofSubmitterCall) -> Self {
8081                    ()
8082                }
8083            }
8084            #[automatically_derived]
8085            #[doc(hidden)]
8086            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proofSubmitterCall {
8087                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8088                    Self
8089                }
8090            }
8091        }
8092        {
8093            #[doc(hidden)]
8094            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
8095            #[doc(hidden)]
8096            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
8097            #[cfg(test)]
8098            #[allow(dead_code, unreachable_patterns)]
8099            fn _type_assertion(
8100                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8101            ) {
8102                match _t {
8103                    alloy_sol_types::private::AssertTypeEq::<
8104                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8105                    >(_) => {}
8106                }
8107            }
8108            #[automatically_derived]
8109            #[doc(hidden)]
8110            impl ::core::convert::From<proofSubmitterReturn>
8111            for UnderlyingRustTuple<'_> {
8112                fn from(value: proofSubmitterReturn) -> Self {
8113                    (value._0,)
8114                }
8115            }
8116            #[automatically_derived]
8117            #[doc(hidden)]
8118            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8119            for proofSubmitterReturn {
8120                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8121                    Self { _0: tuple.0 }
8122                }
8123            }
8124        }
8125        #[automatically_derived]
8126        impl alloy_sol_types::SolCall for proofSubmitterCall {
8127            type Parameters<'a> = ();
8128            type Token<'a> = <Self::Parameters<
8129                'a,
8130            > as alloy_sol_types::SolType>::Token<'a>;
8131            type Return = alloy::sol_types::private::Address;
8132            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
8133            type ReturnToken<'a> = <Self::ReturnTuple<
8134                'a,
8135            > as alloy_sol_types::SolType>::Token<'a>;
8136            const SIGNATURE: &'static str = "proofSubmitter()";
8137            const SELECTOR: [u8; 4] = [88u8, 117u8, 51u8, 87u8];
8138            #[inline]
8139            fn new<'a>(
8140                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8141            ) -> Self {
8142                tuple.into()
8143            }
8144            #[inline]
8145            fn tokenize(&self) -> Self::Token<'_> {
8146                ()
8147            }
8148            #[inline]
8149            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8150                (
8151                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8152                        ret,
8153                    ),
8154                )
8155            }
8156            #[inline]
8157            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8158                <Self::ReturnTuple<
8159                    '_,
8160                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8161                    .map(|r| {
8162                        let r: proofSubmitterReturn = r.into();
8163                        r._0
8164                    })
8165            }
8166            #[inline]
8167            fn abi_decode_returns_validate(
8168                data: &[u8],
8169            ) -> alloy_sol_types::Result<Self::Return> {
8170                <Self::ReturnTuple<
8171                    '_,
8172                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8173                    .map(|r| {
8174                        let r: proofSubmitterReturn = r.into();
8175                        r._0
8176                    })
8177            }
8178        }
8179    };
8180    #[derive(serde::Serialize, serde::Deserialize)]
8181    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8182    /**Function with signature `recoverTokens(address[],uint256[],address)` and selector `0xdda3346c`.
8183```solidity
8184function recoverTokens(address[] memory tokenList, uint256[] memory amountsToWithdraw, address recipient) external;
8185```*/
8186    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8187    #[derive(Clone)]
8188    pub struct recoverTokensCall {
8189        #[allow(missing_docs)]
8190        pub tokenList: alloy::sol_types::private::Vec<
8191            alloy::sol_types::private::Address,
8192        >,
8193        #[allow(missing_docs)]
8194        pub amountsToWithdraw: alloy::sol_types::private::Vec<
8195            alloy::sol_types::private::primitives::aliases::U256,
8196        >,
8197        #[allow(missing_docs)]
8198        pub recipient: alloy::sol_types::private::Address,
8199    }
8200    ///Container type for the return parameters of the [`recoverTokens(address[],uint256[],address)`](recoverTokensCall) function.
8201    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8202    #[derive(Clone)]
8203    pub struct recoverTokensReturn {}
8204    #[allow(
8205        non_camel_case_types,
8206        non_snake_case,
8207        clippy::pub_underscore_fields,
8208        clippy::style
8209    )]
8210    const _: () = {
8211        use alloy::sol_types as alloy_sol_types;
8212        {
8213            #[doc(hidden)]
8214            type UnderlyingSolTuple<'a> = (
8215                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
8216                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
8217                alloy::sol_types::sol_data::Address,
8218            );
8219            #[doc(hidden)]
8220            type UnderlyingRustTuple<'a> = (
8221                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
8222                alloy::sol_types::private::Vec<
8223                    alloy::sol_types::private::primitives::aliases::U256,
8224                >,
8225                alloy::sol_types::private::Address,
8226            );
8227            #[cfg(test)]
8228            #[allow(dead_code, unreachable_patterns)]
8229            fn _type_assertion(
8230                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8231            ) {
8232                match _t {
8233                    alloy_sol_types::private::AssertTypeEq::<
8234                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8235                    >(_) => {}
8236                }
8237            }
8238            #[automatically_derived]
8239            #[doc(hidden)]
8240            impl ::core::convert::From<recoverTokensCall> for UnderlyingRustTuple<'_> {
8241                fn from(value: recoverTokensCall) -> Self {
8242                    (value.tokenList, value.amountsToWithdraw, value.recipient)
8243                }
8244            }
8245            #[automatically_derived]
8246            #[doc(hidden)]
8247            impl ::core::convert::From<UnderlyingRustTuple<'_>> for recoverTokensCall {
8248                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8249                    Self {
8250                        tokenList: tuple.0,
8251                        amountsToWithdraw: tuple.1,
8252                        recipient: tuple.2,
8253                    }
8254                }
8255            }
8256        }
8257        {
8258            #[doc(hidden)]
8259            type UnderlyingSolTuple<'a> = ();
8260            #[doc(hidden)]
8261            type UnderlyingRustTuple<'a> = ();
8262            #[cfg(test)]
8263            #[allow(dead_code, unreachable_patterns)]
8264            fn _type_assertion(
8265                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8266            ) {
8267                match _t {
8268                    alloy_sol_types::private::AssertTypeEq::<
8269                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8270                    >(_) => {}
8271                }
8272            }
8273            #[automatically_derived]
8274            #[doc(hidden)]
8275            impl ::core::convert::From<recoverTokensReturn> for UnderlyingRustTuple<'_> {
8276                fn from(value: recoverTokensReturn) -> Self {
8277                    ()
8278                }
8279            }
8280            #[automatically_derived]
8281            #[doc(hidden)]
8282            impl ::core::convert::From<UnderlyingRustTuple<'_>> for recoverTokensReturn {
8283                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8284                    Self {}
8285                }
8286            }
8287        }
8288        impl recoverTokensReturn {
8289            fn _tokenize(
8290                &self,
8291            ) -> <recoverTokensCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8292                ()
8293            }
8294        }
8295        #[automatically_derived]
8296        impl alloy_sol_types::SolCall for recoverTokensCall {
8297            type Parameters<'a> = (
8298                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
8299                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
8300                alloy::sol_types::sol_data::Address,
8301            );
8302            type Token<'a> = <Self::Parameters<
8303                'a,
8304            > as alloy_sol_types::SolType>::Token<'a>;
8305            type Return = recoverTokensReturn;
8306            type ReturnTuple<'a> = ();
8307            type ReturnToken<'a> = <Self::ReturnTuple<
8308                'a,
8309            > as alloy_sol_types::SolType>::Token<'a>;
8310            const SIGNATURE: &'static str = "recoverTokens(address[],uint256[],address)";
8311            const SELECTOR: [u8; 4] = [221u8, 163u8, 52u8, 108u8];
8312            #[inline]
8313            fn new<'a>(
8314                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8315            ) -> Self {
8316                tuple.into()
8317            }
8318            #[inline]
8319            fn tokenize(&self) -> Self::Token<'_> {
8320                (
8321                    <alloy::sol_types::sol_data::Array<
8322                        alloy::sol_types::sol_data::Address,
8323                    > as alloy_sol_types::SolType>::tokenize(&self.tokenList),
8324                    <alloy::sol_types::sol_data::Array<
8325                        alloy::sol_types::sol_data::Uint<256>,
8326                    > as alloy_sol_types::SolType>::tokenize(&self.amountsToWithdraw),
8327                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8328                        &self.recipient,
8329                    ),
8330                )
8331            }
8332            #[inline]
8333            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8334                recoverTokensReturn::_tokenize(ret)
8335            }
8336            #[inline]
8337            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8338                <Self::ReturnTuple<
8339                    '_,
8340                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8341                    .map(Into::into)
8342            }
8343            #[inline]
8344            fn abi_decode_returns_validate(
8345                data: &[u8],
8346            ) -> alloy_sol_types::Result<Self::Return> {
8347                <Self::ReturnTuple<
8348                    '_,
8349                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8350                    .map(Into::into)
8351            }
8352        }
8353    };
8354    #[derive(serde::Serialize, serde::Deserialize)]
8355    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8356    /**Function with signature `setProofSubmitter(address)` and selector `0xd06d5587`.
8357```solidity
8358function setProofSubmitter(address newProofSubmitter) external;
8359```*/
8360    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8361    #[derive(Clone)]
8362    pub struct setProofSubmitterCall {
8363        #[allow(missing_docs)]
8364        pub newProofSubmitter: alloy::sol_types::private::Address,
8365    }
8366    ///Container type for the return parameters of the [`setProofSubmitter(address)`](setProofSubmitterCall) function.
8367    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8368    #[derive(Clone)]
8369    pub struct setProofSubmitterReturn {}
8370    #[allow(
8371        non_camel_case_types,
8372        non_snake_case,
8373        clippy::pub_underscore_fields,
8374        clippy::style
8375    )]
8376    const _: () = {
8377        use alloy::sol_types as alloy_sol_types;
8378        {
8379            #[doc(hidden)]
8380            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
8381            #[doc(hidden)]
8382            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
8383            #[cfg(test)]
8384            #[allow(dead_code, unreachable_patterns)]
8385            fn _type_assertion(
8386                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8387            ) {
8388                match _t {
8389                    alloy_sol_types::private::AssertTypeEq::<
8390                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8391                    >(_) => {}
8392                }
8393            }
8394            #[automatically_derived]
8395            #[doc(hidden)]
8396            impl ::core::convert::From<setProofSubmitterCall>
8397            for UnderlyingRustTuple<'_> {
8398                fn from(value: setProofSubmitterCall) -> Self {
8399                    (value.newProofSubmitter,)
8400                }
8401            }
8402            #[automatically_derived]
8403            #[doc(hidden)]
8404            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8405            for setProofSubmitterCall {
8406                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8407                    Self { newProofSubmitter: tuple.0 }
8408                }
8409            }
8410        }
8411        {
8412            #[doc(hidden)]
8413            type UnderlyingSolTuple<'a> = ();
8414            #[doc(hidden)]
8415            type UnderlyingRustTuple<'a> = ();
8416            #[cfg(test)]
8417            #[allow(dead_code, unreachable_patterns)]
8418            fn _type_assertion(
8419                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8420            ) {
8421                match _t {
8422                    alloy_sol_types::private::AssertTypeEq::<
8423                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8424                    >(_) => {}
8425                }
8426            }
8427            #[automatically_derived]
8428            #[doc(hidden)]
8429            impl ::core::convert::From<setProofSubmitterReturn>
8430            for UnderlyingRustTuple<'_> {
8431                fn from(value: setProofSubmitterReturn) -> Self {
8432                    ()
8433                }
8434            }
8435            #[automatically_derived]
8436            #[doc(hidden)]
8437            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8438            for setProofSubmitterReturn {
8439                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8440                    Self {}
8441                }
8442            }
8443        }
8444        impl setProofSubmitterReturn {
8445            fn _tokenize(
8446                &self,
8447            ) -> <setProofSubmitterCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8448                ()
8449            }
8450        }
8451        #[automatically_derived]
8452        impl alloy_sol_types::SolCall for setProofSubmitterCall {
8453            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
8454            type Token<'a> = <Self::Parameters<
8455                'a,
8456            > as alloy_sol_types::SolType>::Token<'a>;
8457            type Return = setProofSubmitterReturn;
8458            type ReturnTuple<'a> = ();
8459            type ReturnToken<'a> = <Self::ReturnTuple<
8460                'a,
8461            > as alloy_sol_types::SolType>::Token<'a>;
8462            const SIGNATURE: &'static str = "setProofSubmitter(address)";
8463            const SELECTOR: [u8; 4] = [208u8, 109u8, 85u8, 135u8];
8464            #[inline]
8465            fn new<'a>(
8466                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8467            ) -> Self {
8468                tuple.into()
8469            }
8470            #[inline]
8471            fn tokenize(&self) -> Self::Token<'_> {
8472                (
8473                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8474                        &self.newProofSubmitter,
8475                    ),
8476                )
8477            }
8478            #[inline]
8479            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8480                setProofSubmitterReturn::_tokenize(ret)
8481            }
8482            #[inline]
8483            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8484                <Self::ReturnTuple<
8485                    '_,
8486                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8487                    .map(Into::into)
8488            }
8489            #[inline]
8490            fn abi_decode_returns_validate(
8491                data: &[u8],
8492            ) -> alloy_sol_types::Result<Self::Return> {
8493                <Self::ReturnTuple<
8494                    '_,
8495                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8496                    .map(Into::into)
8497            }
8498        }
8499    };
8500    #[derive(serde::Serialize, serde::Deserialize)]
8501    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8502    /**Function with signature `stake(bytes,bytes,bytes32)` and selector `0x9b4e4634`.
8503```solidity
8504function stake(bytes memory pubkey, bytes memory signature, bytes32 depositDataRoot) external payable;
8505```*/
8506    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8507    #[derive(Clone)]
8508    pub struct stakeCall {
8509        #[allow(missing_docs)]
8510        pub pubkey: alloy::sol_types::private::Bytes,
8511        #[allow(missing_docs)]
8512        pub signature: alloy::sol_types::private::Bytes,
8513        #[allow(missing_docs)]
8514        pub depositDataRoot: alloy::sol_types::private::FixedBytes<32>,
8515    }
8516    ///Container type for the return parameters of the [`stake(bytes,bytes,bytes32)`](stakeCall) function.
8517    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8518    #[derive(Clone)]
8519    pub struct stakeReturn {}
8520    #[allow(
8521        non_camel_case_types,
8522        non_snake_case,
8523        clippy::pub_underscore_fields,
8524        clippy::style
8525    )]
8526    const _: () = {
8527        use alloy::sol_types as alloy_sol_types;
8528        {
8529            #[doc(hidden)]
8530            type UnderlyingSolTuple<'a> = (
8531                alloy::sol_types::sol_data::Bytes,
8532                alloy::sol_types::sol_data::Bytes,
8533                alloy::sol_types::sol_data::FixedBytes<32>,
8534            );
8535            #[doc(hidden)]
8536            type UnderlyingRustTuple<'a> = (
8537                alloy::sol_types::private::Bytes,
8538                alloy::sol_types::private::Bytes,
8539                alloy::sol_types::private::FixedBytes<32>,
8540            );
8541            #[cfg(test)]
8542            #[allow(dead_code, unreachable_patterns)]
8543            fn _type_assertion(
8544                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8545            ) {
8546                match _t {
8547                    alloy_sol_types::private::AssertTypeEq::<
8548                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8549                    >(_) => {}
8550                }
8551            }
8552            #[automatically_derived]
8553            #[doc(hidden)]
8554            impl ::core::convert::From<stakeCall> for UnderlyingRustTuple<'_> {
8555                fn from(value: stakeCall) -> Self {
8556                    (value.pubkey, value.signature, value.depositDataRoot)
8557                }
8558            }
8559            #[automatically_derived]
8560            #[doc(hidden)]
8561            impl ::core::convert::From<UnderlyingRustTuple<'_>> for stakeCall {
8562                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8563                    Self {
8564                        pubkey: tuple.0,
8565                        signature: tuple.1,
8566                        depositDataRoot: tuple.2,
8567                    }
8568                }
8569            }
8570        }
8571        {
8572            #[doc(hidden)]
8573            type UnderlyingSolTuple<'a> = ();
8574            #[doc(hidden)]
8575            type UnderlyingRustTuple<'a> = ();
8576            #[cfg(test)]
8577            #[allow(dead_code, unreachable_patterns)]
8578            fn _type_assertion(
8579                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8580            ) {
8581                match _t {
8582                    alloy_sol_types::private::AssertTypeEq::<
8583                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8584                    >(_) => {}
8585                }
8586            }
8587            #[automatically_derived]
8588            #[doc(hidden)]
8589            impl ::core::convert::From<stakeReturn> for UnderlyingRustTuple<'_> {
8590                fn from(value: stakeReturn) -> Self {
8591                    ()
8592                }
8593            }
8594            #[automatically_derived]
8595            #[doc(hidden)]
8596            impl ::core::convert::From<UnderlyingRustTuple<'_>> for stakeReturn {
8597                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8598                    Self {}
8599                }
8600            }
8601        }
8602        impl stakeReturn {
8603            fn _tokenize(
8604                &self,
8605            ) -> <stakeCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8606                ()
8607            }
8608        }
8609        #[automatically_derived]
8610        impl alloy_sol_types::SolCall for stakeCall {
8611            type Parameters<'a> = (
8612                alloy::sol_types::sol_data::Bytes,
8613                alloy::sol_types::sol_data::Bytes,
8614                alloy::sol_types::sol_data::FixedBytes<32>,
8615            );
8616            type Token<'a> = <Self::Parameters<
8617                'a,
8618            > as alloy_sol_types::SolType>::Token<'a>;
8619            type Return = stakeReturn;
8620            type ReturnTuple<'a> = ();
8621            type ReturnToken<'a> = <Self::ReturnTuple<
8622                'a,
8623            > as alloy_sol_types::SolType>::Token<'a>;
8624            const SIGNATURE: &'static str = "stake(bytes,bytes,bytes32)";
8625            const SELECTOR: [u8; 4] = [155u8, 78u8, 70u8, 52u8];
8626            #[inline]
8627            fn new<'a>(
8628                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8629            ) -> Self {
8630                tuple.into()
8631            }
8632            #[inline]
8633            fn tokenize(&self) -> Self::Token<'_> {
8634                (
8635                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
8636                        &self.pubkey,
8637                    ),
8638                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
8639                        &self.signature,
8640                    ),
8641                    <alloy::sol_types::sol_data::FixedBytes<
8642                        32,
8643                    > as alloy_sol_types::SolType>::tokenize(&self.depositDataRoot),
8644                )
8645            }
8646            #[inline]
8647            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8648                stakeReturn::_tokenize(ret)
8649            }
8650            #[inline]
8651            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8652                <Self::ReturnTuple<
8653                    '_,
8654                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8655                    .map(Into::into)
8656            }
8657            #[inline]
8658            fn abi_decode_returns_validate(
8659                data: &[u8],
8660            ) -> alloy_sol_types::Result<Self::Return> {
8661                <Self::ReturnTuple<
8662                    '_,
8663                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8664                    .map(Into::into)
8665            }
8666        }
8667    };
8668    #[derive(serde::Serialize, serde::Deserialize)]
8669    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8670    /**Function with signature `startCheckpoint(bool)` and selector `0x88676cad`.
8671```solidity
8672function startCheckpoint(bool revertIfNoBalance) external;
8673```*/
8674    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8675    #[derive(Clone)]
8676    pub struct startCheckpointCall {
8677        #[allow(missing_docs)]
8678        pub revertIfNoBalance: bool,
8679    }
8680    ///Container type for the return parameters of the [`startCheckpoint(bool)`](startCheckpointCall) function.
8681    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8682    #[derive(Clone)]
8683    pub struct startCheckpointReturn {}
8684    #[allow(
8685        non_camel_case_types,
8686        non_snake_case,
8687        clippy::pub_underscore_fields,
8688        clippy::style
8689    )]
8690    const _: () = {
8691        use alloy::sol_types as alloy_sol_types;
8692        {
8693            #[doc(hidden)]
8694            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
8695            #[doc(hidden)]
8696            type UnderlyingRustTuple<'a> = (bool,);
8697            #[cfg(test)]
8698            #[allow(dead_code, unreachable_patterns)]
8699            fn _type_assertion(
8700                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8701            ) {
8702                match _t {
8703                    alloy_sol_types::private::AssertTypeEq::<
8704                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8705                    >(_) => {}
8706                }
8707            }
8708            #[automatically_derived]
8709            #[doc(hidden)]
8710            impl ::core::convert::From<startCheckpointCall> for UnderlyingRustTuple<'_> {
8711                fn from(value: startCheckpointCall) -> Self {
8712                    (value.revertIfNoBalance,)
8713                }
8714            }
8715            #[automatically_derived]
8716            #[doc(hidden)]
8717            impl ::core::convert::From<UnderlyingRustTuple<'_>> for startCheckpointCall {
8718                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8719                    Self { revertIfNoBalance: tuple.0 }
8720                }
8721            }
8722        }
8723        {
8724            #[doc(hidden)]
8725            type UnderlyingSolTuple<'a> = ();
8726            #[doc(hidden)]
8727            type UnderlyingRustTuple<'a> = ();
8728            #[cfg(test)]
8729            #[allow(dead_code, unreachable_patterns)]
8730            fn _type_assertion(
8731                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8732            ) {
8733                match _t {
8734                    alloy_sol_types::private::AssertTypeEq::<
8735                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8736                    >(_) => {}
8737                }
8738            }
8739            #[automatically_derived]
8740            #[doc(hidden)]
8741            impl ::core::convert::From<startCheckpointReturn>
8742            for UnderlyingRustTuple<'_> {
8743                fn from(value: startCheckpointReturn) -> Self {
8744                    ()
8745                }
8746            }
8747            #[automatically_derived]
8748            #[doc(hidden)]
8749            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8750            for startCheckpointReturn {
8751                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8752                    Self {}
8753                }
8754            }
8755        }
8756        impl startCheckpointReturn {
8757            fn _tokenize(
8758                &self,
8759            ) -> <startCheckpointCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8760                ()
8761            }
8762        }
8763        #[automatically_derived]
8764        impl alloy_sol_types::SolCall for startCheckpointCall {
8765            type Parameters<'a> = (alloy::sol_types::sol_data::Bool,);
8766            type Token<'a> = <Self::Parameters<
8767                'a,
8768            > as alloy_sol_types::SolType>::Token<'a>;
8769            type Return = startCheckpointReturn;
8770            type ReturnTuple<'a> = ();
8771            type ReturnToken<'a> = <Self::ReturnTuple<
8772                'a,
8773            > as alloy_sol_types::SolType>::Token<'a>;
8774            const SIGNATURE: &'static str = "startCheckpoint(bool)";
8775            const SELECTOR: [u8; 4] = [136u8, 103u8, 108u8, 173u8];
8776            #[inline]
8777            fn new<'a>(
8778                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8779            ) -> Self {
8780                tuple.into()
8781            }
8782            #[inline]
8783            fn tokenize(&self) -> Self::Token<'_> {
8784                (
8785                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
8786                        &self.revertIfNoBalance,
8787                    ),
8788                )
8789            }
8790            #[inline]
8791            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8792                startCheckpointReturn::_tokenize(ret)
8793            }
8794            #[inline]
8795            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8796                <Self::ReturnTuple<
8797                    '_,
8798                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8799                    .map(Into::into)
8800            }
8801            #[inline]
8802            fn abi_decode_returns_validate(
8803                data: &[u8],
8804            ) -> alloy_sol_types::Result<Self::Return> {
8805                <Self::ReturnTuple<
8806                    '_,
8807                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8808                    .map(Into::into)
8809            }
8810        }
8811    };
8812    #[derive(serde::Serialize, serde::Deserialize)]
8813    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8814    /**Function with signature `validatorPubkeyHashToInfo(bytes32)` and selector `0x6fcd0e53`.
8815```solidity
8816function validatorPubkeyHashToInfo(bytes32 validatorPubkeyHash) external view returns (IEigenPodTypes.ValidatorInfo memory);
8817```*/
8818    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8819    #[derive(Clone)]
8820    pub struct validatorPubkeyHashToInfoCall {
8821        #[allow(missing_docs)]
8822        pub validatorPubkeyHash: alloy::sol_types::private::FixedBytes<32>,
8823    }
8824    #[derive(serde::Serialize, serde::Deserialize)]
8825    #[derive()]
8826    ///Container type for the return parameters of the [`validatorPubkeyHashToInfo(bytes32)`](validatorPubkeyHashToInfoCall) function.
8827    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8828    #[derive(Clone)]
8829    pub struct validatorPubkeyHashToInfoReturn {
8830        #[allow(missing_docs)]
8831        pub _0: <IEigenPodTypes::ValidatorInfo as alloy::sol_types::SolType>::RustType,
8832    }
8833    #[allow(
8834        non_camel_case_types,
8835        non_snake_case,
8836        clippy::pub_underscore_fields,
8837        clippy::style
8838    )]
8839    const _: () = {
8840        use alloy::sol_types as alloy_sol_types;
8841        {
8842            #[doc(hidden)]
8843            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
8844            #[doc(hidden)]
8845            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
8846            #[cfg(test)]
8847            #[allow(dead_code, unreachable_patterns)]
8848            fn _type_assertion(
8849                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8850            ) {
8851                match _t {
8852                    alloy_sol_types::private::AssertTypeEq::<
8853                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8854                    >(_) => {}
8855                }
8856            }
8857            #[automatically_derived]
8858            #[doc(hidden)]
8859            impl ::core::convert::From<validatorPubkeyHashToInfoCall>
8860            for UnderlyingRustTuple<'_> {
8861                fn from(value: validatorPubkeyHashToInfoCall) -> Self {
8862                    (value.validatorPubkeyHash,)
8863                }
8864            }
8865            #[automatically_derived]
8866            #[doc(hidden)]
8867            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8868            for validatorPubkeyHashToInfoCall {
8869                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8870                    Self {
8871                        validatorPubkeyHash: tuple.0,
8872                    }
8873                }
8874            }
8875        }
8876        {
8877            #[doc(hidden)]
8878            type UnderlyingSolTuple<'a> = (IEigenPodTypes::ValidatorInfo,);
8879            #[doc(hidden)]
8880            type UnderlyingRustTuple<'a> = (
8881                <IEigenPodTypes::ValidatorInfo as alloy::sol_types::SolType>::RustType,
8882            );
8883            #[cfg(test)]
8884            #[allow(dead_code, unreachable_patterns)]
8885            fn _type_assertion(
8886                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8887            ) {
8888                match _t {
8889                    alloy_sol_types::private::AssertTypeEq::<
8890                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8891                    >(_) => {}
8892                }
8893            }
8894            #[automatically_derived]
8895            #[doc(hidden)]
8896            impl ::core::convert::From<validatorPubkeyHashToInfoReturn>
8897            for UnderlyingRustTuple<'_> {
8898                fn from(value: validatorPubkeyHashToInfoReturn) -> Self {
8899                    (value._0,)
8900                }
8901            }
8902            #[automatically_derived]
8903            #[doc(hidden)]
8904            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8905            for validatorPubkeyHashToInfoReturn {
8906                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8907                    Self { _0: tuple.0 }
8908                }
8909            }
8910        }
8911        #[automatically_derived]
8912        impl alloy_sol_types::SolCall for validatorPubkeyHashToInfoCall {
8913            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
8914            type Token<'a> = <Self::Parameters<
8915                'a,
8916            > as alloy_sol_types::SolType>::Token<'a>;
8917            type Return = <IEigenPodTypes::ValidatorInfo as alloy::sol_types::SolType>::RustType;
8918            type ReturnTuple<'a> = (IEigenPodTypes::ValidatorInfo,);
8919            type ReturnToken<'a> = <Self::ReturnTuple<
8920                'a,
8921            > as alloy_sol_types::SolType>::Token<'a>;
8922            const SIGNATURE: &'static str = "validatorPubkeyHashToInfo(bytes32)";
8923            const SELECTOR: [u8; 4] = [111u8, 205u8, 14u8, 83u8];
8924            #[inline]
8925            fn new<'a>(
8926                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8927            ) -> Self {
8928                tuple.into()
8929            }
8930            #[inline]
8931            fn tokenize(&self) -> Self::Token<'_> {
8932                (
8933                    <alloy::sol_types::sol_data::FixedBytes<
8934                        32,
8935                    > as alloy_sol_types::SolType>::tokenize(&self.validatorPubkeyHash),
8936                )
8937            }
8938            #[inline]
8939            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8940                (
8941                    <IEigenPodTypes::ValidatorInfo as alloy_sol_types::SolType>::tokenize(
8942                        ret,
8943                    ),
8944                )
8945            }
8946            #[inline]
8947            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8948                <Self::ReturnTuple<
8949                    '_,
8950                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8951                    .map(|r| {
8952                        let r: validatorPubkeyHashToInfoReturn = r.into();
8953                        r._0
8954                    })
8955            }
8956            #[inline]
8957            fn abi_decode_returns_validate(
8958                data: &[u8],
8959            ) -> alloy_sol_types::Result<Self::Return> {
8960                <Self::ReturnTuple<
8961                    '_,
8962                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8963                    .map(|r| {
8964                        let r: validatorPubkeyHashToInfoReturn = r.into();
8965                        r._0
8966                    })
8967            }
8968        }
8969    };
8970    #[derive(serde::Serialize, serde::Deserialize)]
8971    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8972    /**Function with signature `validatorPubkeyToInfo(bytes)` and selector `0xb522538a`.
8973```solidity
8974function validatorPubkeyToInfo(bytes memory validatorPubkey) external view returns (IEigenPodTypes.ValidatorInfo memory);
8975```*/
8976    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8977    #[derive(Clone)]
8978    pub struct validatorPubkeyToInfoCall {
8979        #[allow(missing_docs)]
8980        pub validatorPubkey: alloy::sol_types::private::Bytes,
8981    }
8982    #[derive(serde::Serialize, serde::Deserialize)]
8983    #[derive()]
8984    ///Container type for the return parameters of the [`validatorPubkeyToInfo(bytes)`](validatorPubkeyToInfoCall) function.
8985    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8986    #[derive(Clone)]
8987    pub struct validatorPubkeyToInfoReturn {
8988        #[allow(missing_docs)]
8989        pub _0: <IEigenPodTypes::ValidatorInfo as alloy::sol_types::SolType>::RustType,
8990    }
8991    #[allow(
8992        non_camel_case_types,
8993        non_snake_case,
8994        clippy::pub_underscore_fields,
8995        clippy::style
8996    )]
8997    const _: () = {
8998        use alloy::sol_types as alloy_sol_types;
8999        {
9000            #[doc(hidden)]
9001            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bytes,);
9002            #[doc(hidden)]
9003            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Bytes,);
9004            #[cfg(test)]
9005            #[allow(dead_code, unreachable_patterns)]
9006            fn _type_assertion(
9007                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9008            ) {
9009                match _t {
9010                    alloy_sol_types::private::AssertTypeEq::<
9011                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9012                    >(_) => {}
9013                }
9014            }
9015            #[automatically_derived]
9016            #[doc(hidden)]
9017            impl ::core::convert::From<validatorPubkeyToInfoCall>
9018            for UnderlyingRustTuple<'_> {
9019                fn from(value: validatorPubkeyToInfoCall) -> Self {
9020                    (value.validatorPubkey,)
9021                }
9022            }
9023            #[automatically_derived]
9024            #[doc(hidden)]
9025            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9026            for validatorPubkeyToInfoCall {
9027                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9028                    Self { validatorPubkey: tuple.0 }
9029                }
9030            }
9031        }
9032        {
9033            #[doc(hidden)]
9034            type UnderlyingSolTuple<'a> = (IEigenPodTypes::ValidatorInfo,);
9035            #[doc(hidden)]
9036            type UnderlyingRustTuple<'a> = (
9037                <IEigenPodTypes::ValidatorInfo as alloy::sol_types::SolType>::RustType,
9038            );
9039            #[cfg(test)]
9040            #[allow(dead_code, unreachable_patterns)]
9041            fn _type_assertion(
9042                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9043            ) {
9044                match _t {
9045                    alloy_sol_types::private::AssertTypeEq::<
9046                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9047                    >(_) => {}
9048                }
9049            }
9050            #[automatically_derived]
9051            #[doc(hidden)]
9052            impl ::core::convert::From<validatorPubkeyToInfoReturn>
9053            for UnderlyingRustTuple<'_> {
9054                fn from(value: validatorPubkeyToInfoReturn) -> Self {
9055                    (value._0,)
9056                }
9057            }
9058            #[automatically_derived]
9059            #[doc(hidden)]
9060            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9061            for validatorPubkeyToInfoReturn {
9062                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9063                    Self { _0: tuple.0 }
9064                }
9065            }
9066        }
9067        #[automatically_derived]
9068        impl alloy_sol_types::SolCall for validatorPubkeyToInfoCall {
9069            type Parameters<'a> = (alloy::sol_types::sol_data::Bytes,);
9070            type Token<'a> = <Self::Parameters<
9071                'a,
9072            > as alloy_sol_types::SolType>::Token<'a>;
9073            type Return = <IEigenPodTypes::ValidatorInfo as alloy::sol_types::SolType>::RustType;
9074            type ReturnTuple<'a> = (IEigenPodTypes::ValidatorInfo,);
9075            type ReturnToken<'a> = <Self::ReturnTuple<
9076                'a,
9077            > as alloy_sol_types::SolType>::Token<'a>;
9078            const SIGNATURE: &'static str = "validatorPubkeyToInfo(bytes)";
9079            const SELECTOR: [u8; 4] = [181u8, 34u8, 83u8, 138u8];
9080            #[inline]
9081            fn new<'a>(
9082                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9083            ) -> Self {
9084                tuple.into()
9085            }
9086            #[inline]
9087            fn tokenize(&self) -> Self::Token<'_> {
9088                (
9089                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
9090                        &self.validatorPubkey,
9091                    ),
9092                )
9093            }
9094            #[inline]
9095            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9096                (
9097                    <IEigenPodTypes::ValidatorInfo as alloy_sol_types::SolType>::tokenize(
9098                        ret,
9099                    ),
9100                )
9101            }
9102            #[inline]
9103            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9104                <Self::ReturnTuple<
9105                    '_,
9106                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9107                    .map(|r| {
9108                        let r: validatorPubkeyToInfoReturn = r.into();
9109                        r._0
9110                    })
9111            }
9112            #[inline]
9113            fn abi_decode_returns_validate(
9114                data: &[u8],
9115            ) -> alloy_sol_types::Result<Self::Return> {
9116                <Self::ReturnTuple<
9117                    '_,
9118                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9119                    .map(|r| {
9120                        let r: validatorPubkeyToInfoReturn = r.into();
9121                        r._0
9122                    })
9123            }
9124        }
9125    };
9126    #[derive(serde::Serialize, serde::Deserialize)]
9127    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9128    /**Function with signature `validatorStatus(bytes)` and selector `0x58eaee79`.
9129```solidity
9130function validatorStatus(bytes memory validatorPubkey) external view returns (IEigenPodTypes.VALIDATOR_STATUS);
9131```*/
9132    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9133    #[derive(Clone)]
9134    pub struct validatorStatus_0Call {
9135        #[allow(missing_docs)]
9136        pub validatorPubkey: alloy::sol_types::private::Bytes,
9137    }
9138    #[derive(serde::Serialize, serde::Deserialize)]
9139    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9140    ///Container type for the return parameters of the [`validatorStatus(bytes)`](validatorStatus_0Call) function.
9141    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9142    #[derive(Clone)]
9143    pub struct validatorStatus_0Return {
9144        #[allow(missing_docs)]
9145        pub _0: <IEigenPodTypes::VALIDATOR_STATUS as alloy::sol_types::SolType>::RustType,
9146    }
9147    #[allow(
9148        non_camel_case_types,
9149        non_snake_case,
9150        clippy::pub_underscore_fields,
9151        clippy::style
9152    )]
9153    const _: () = {
9154        use alloy::sol_types as alloy_sol_types;
9155        {
9156            #[doc(hidden)]
9157            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bytes,);
9158            #[doc(hidden)]
9159            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Bytes,);
9160            #[cfg(test)]
9161            #[allow(dead_code, unreachable_patterns)]
9162            fn _type_assertion(
9163                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9164            ) {
9165                match _t {
9166                    alloy_sol_types::private::AssertTypeEq::<
9167                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9168                    >(_) => {}
9169                }
9170            }
9171            #[automatically_derived]
9172            #[doc(hidden)]
9173            impl ::core::convert::From<validatorStatus_0Call>
9174            for UnderlyingRustTuple<'_> {
9175                fn from(value: validatorStatus_0Call) -> Self {
9176                    (value.validatorPubkey,)
9177                }
9178            }
9179            #[automatically_derived]
9180            #[doc(hidden)]
9181            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9182            for validatorStatus_0Call {
9183                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9184                    Self { validatorPubkey: tuple.0 }
9185                }
9186            }
9187        }
9188        {
9189            #[doc(hidden)]
9190            type UnderlyingSolTuple<'a> = (IEigenPodTypes::VALIDATOR_STATUS,);
9191            #[doc(hidden)]
9192            type UnderlyingRustTuple<'a> = (
9193                <IEigenPodTypes::VALIDATOR_STATUS as alloy::sol_types::SolType>::RustType,
9194            );
9195            #[cfg(test)]
9196            #[allow(dead_code, unreachable_patterns)]
9197            fn _type_assertion(
9198                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9199            ) {
9200                match _t {
9201                    alloy_sol_types::private::AssertTypeEq::<
9202                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9203                    >(_) => {}
9204                }
9205            }
9206            #[automatically_derived]
9207            #[doc(hidden)]
9208            impl ::core::convert::From<validatorStatus_0Return>
9209            for UnderlyingRustTuple<'_> {
9210                fn from(value: validatorStatus_0Return) -> Self {
9211                    (value._0,)
9212                }
9213            }
9214            #[automatically_derived]
9215            #[doc(hidden)]
9216            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9217            for validatorStatus_0Return {
9218                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9219                    Self { _0: tuple.0 }
9220                }
9221            }
9222        }
9223        #[automatically_derived]
9224        impl alloy_sol_types::SolCall for validatorStatus_0Call {
9225            type Parameters<'a> = (alloy::sol_types::sol_data::Bytes,);
9226            type Token<'a> = <Self::Parameters<
9227                'a,
9228            > as alloy_sol_types::SolType>::Token<'a>;
9229            type Return = <IEigenPodTypes::VALIDATOR_STATUS as alloy::sol_types::SolType>::RustType;
9230            type ReturnTuple<'a> = (IEigenPodTypes::VALIDATOR_STATUS,);
9231            type ReturnToken<'a> = <Self::ReturnTuple<
9232                'a,
9233            > as alloy_sol_types::SolType>::Token<'a>;
9234            const SIGNATURE: &'static str = "validatorStatus(bytes)";
9235            const SELECTOR: [u8; 4] = [88u8, 234u8, 238u8, 121u8];
9236            #[inline]
9237            fn new<'a>(
9238                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9239            ) -> Self {
9240                tuple.into()
9241            }
9242            #[inline]
9243            fn tokenize(&self) -> Self::Token<'_> {
9244                (
9245                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
9246                        &self.validatorPubkey,
9247                    ),
9248                )
9249            }
9250            #[inline]
9251            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9252                (
9253                    <IEigenPodTypes::VALIDATOR_STATUS as alloy_sol_types::SolType>::tokenize(
9254                        ret,
9255                    ),
9256                )
9257            }
9258            #[inline]
9259            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9260                <Self::ReturnTuple<
9261                    '_,
9262                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9263                    .map(|r| {
9264                        let r: validatorStatus_0Return = r.into();
9265                        r._0
9266                    })
9267            }
9268            #[inline]
9269            fn abi_decode_returns_validate(
9270                data: &[u8],
9271            ) -> alloy_sol_types::Result<Self::Return> {
9272                <Self::ReturnTuple<
9273                    '_,
9274                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9275                    .map(|r| {
9276                        let r: validatorStatus_0Return = r.into();
9277                        r._0
9278                    })
9279            }
9280        }
9281    };
9282    #[derive(serde::Serialize, serde::Deserialize)]
9283    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9284    /**Function with signature `validatorStatus(bytes32)` and selector `0x7439841f`.
9285```solidity
9286function validatorStatus(bytes32 pubkeyHash) external view returns (IEigenPodTypes.VALIDATOR_STATUS);
9287```*/
9288    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9289    #[derive(Clone)]
9290    pub struct validatorStatus_1Call {
9291        #[allow(missing_docs)]
9292        pub pubkeyHash: alloy::sol_types::private::FixedBytes<32>,
9293    }
9294    #[derive(serde::Serialize, serde::Deserialize)]
9295    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9296    ///Container type for the return parameters of the [`validatorStatus(bytes32)`](validatorStatus_1Call) function.
9297    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9298    #[derive(Clone)]
9299    pub struct validatorStatus_1Return {
9300        #[allow(missing_docs)]
9301        pub _0: <IEigenPodTypes::VALIDATOR_STATUS as alloy::sol_types::SolType>::RustType,
9302    }
9303    #[allow(
9304        non_camel_case_types,
9305        non_snake_case,
9306        clippy::pub_underscore_fields,
9307        clippy::style
9308    )]
9309    const _: () = {
9310        use alloy::sol_types as alloy_sol_types;
9311        {
9312            #[doc(hidden)]
9313            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
9314            #[doc(hidden)]
9315            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
9316            #[cfg(test)]
9317            #[allow(dead_code, unreachable_patterns)]
9318            fn _type_assertion(
9319                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9320            ) {
9321                match _t {
9322                    alloy_sol_types::private::AssertTypeEq::<
9323                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9324                    >(_) => {}
9325                }
9326            }
9327            #[automatically_derived]
9328            #[doc(hidden)]
9329            impl ::core::convert::From<validatorStatus_1Call>
9330            for UnderlyingRustTuple<'_> {
9331                fn from(value: validatorStatus_1Call) -> Self {
9332                    (value.pubkeyHash,)
9333                }
9334            }
9335            #[automatically_derived]
9336            #[doc(hidden)]
9337            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9338            for validatorStatus_1Call {
9339                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9340                    Self { pubkeyHash: tuple.0 }
9341                }
9342            }
9343        }
9344        {
9345            #[doc(hidden)]
9346            type UnderlyingSolTuple<'a> = (IEigenPodTypes::VALIDATOR_STATUS,);
9347            #[doc(hidden)]
9348            type UnderlyingRustTuple<'a> = (
9349                <IEigenPodTypes::VALIDATOR_STATUS as alloy::sol_types::SolType>::RustType,
9350            );
9351            #[cfg(test)]
9352            #[allow(dead_code, unreachable_patterns)]
9353            fn _type_assertion(
9354                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9355            ) {
9356                match _t {
9357                    alloy_sol_types::private::AssertTypeEq::<
9358                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9359                    >(_) => {}
9360                }
9361            }
9362            #[automatically_derived]
9363            #[doc(hidden)]
9364            impl ::core::convert::From<validatorStatus_1Return>
9365            for UnderlyingRustTuple<'_> {
9366                fn from(value: validatorStatus_1Return) -> Self {
9367                    (value._0,)
9368                }
9369            }
9370            #[automatically_derived]
9371            #[doc(hidden)]
9372            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9373            for validatorStatus_1Return {
9374                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9375                    Self { _0: tuple.0 }
9376                }
9377            }
9378        }
9379        #[automatically_derived]
9380        impl alloy_sol_types::SolCall for validatorStatus_1Call {
9381            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
9382            type Token<'a> = <Self::Parameters<
9383                'a,
9384            > as alloy_sol_types::SolType>::Token<'a>;
9385            type Return = <IEigenPodTypes::VALIDATOR_STATUS as alloy::sol_types::SolType>::RustType;
9386            type ReturnTuple<'a> = (IEigenPodTypes::VALIDATOR_STATUS,);
9387            type ReturnToken<'a> = <Self::ReturnTuple<
9388                'a,
9389            > as alloy_sol_types::SolType>::Token<'a>;
9390            const SIGNATURE: &'static str = "validatorStatus(bytes32)";
9391            const SELECTOR: [u8; 4] = [116u8, 57u8, 132u8, 31u8];
9392            #[inline]
9393            fn new<'a>(
9394                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9395            ) -> Self {
9396                tuple.into()
9397            }
9398            #[inline]
9399            fn tokenize(&self) -> Self::Token<'_> {
9400                (
9401                    <alloy::sol_types::sol_data::FixedBytes<
9402                        32,
9403                    > as alloy_sol_types::SolType>::tokenize(&self.pubkeyHash),
9404                )
9405            }
9406            #[inline]
9407            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9408                (
9409                    <IEigenPodTypes::VALIDATOR_STATUS as alloy_sol_types::SolType>::tokenize(
9410                        ret,
9411                    ),
9412                )
9413            }
9414            #[inline]
9415            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9416                <Self::ReturnTuple<
9417                    '_,
9418                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9419                    .map(|r| {
9420                        let r: validatorStatus_1Return = r.into();
9421                        r._0
9422                    })
9423            }
9424            #[inline]
9425            fn abi_decode_returns_validate(
9426                data: &[u8],
9427            ) -> alloy_sol_types::Result<Self::Return> {
9428                <Self::ReturnTuple<
9429                    '_,
9430                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9431                    .map(|r| {
9432                        let r: validatorStatus_1Return = r.into();
9433                        r._0
9434                    })
9435            }
9436        }
9437    };
9438    #[derive(serde::Serialize, serde::Deserialize)]
9439    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9440    /**Function with signature `verifyCheckpointProofs((bytes32,bytes),(bytes32,bytes32,bytes)[])` and selector `0xf074ba62`.
9441```solidity
9442function verifyCheckpointProofs(BeaconChainProofs.BalanceContainerProof memory balanceContainerProof, BeaconChainProofs.BalanceProof[] memory proofs) external;
9443```*/
9444    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9445    #[derive(Clone)]
9446    pub struct verifyCheckpointProofsCall {
9447        #[allow(missing_docs)]
9448        pub balanceContainerProof: <BeaconChainProofs::BalanceContainerProof as alloy::sol_types::SolType>::RustType,
9449        #[allow(missing_docs)]
9450        pub proofs: alloy::sol_types::private::Vec<
9451            <BeaconChainProofs::BalanceProof as alloy::sol_types::SolType>::RustType,
9452        >,
9453    }
9454    ///Container type for the return parameters of the [`verifyCheckpointProofs((bytes32,bytes),(bytes32,bytes32,bytes)[])`](verifyCheckpointProofsCall) function.
9455    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9456    #[derive(Clone)]
9457    pub struct verifyCheckpointProofsReturn {}
9458    #[allow(
9459        non_camel_case_types,
9460        non_snake_case,
9461        clippy::pub_underscore_fields,
9462        clippy::style
9463    )]
9464    const _: () = {
9465        use alloy::sol_types as alloy_sol_types;
9466        {
9467            #[doc(hidden)]
9468            type UnderlyingSolTuple<'a> = (
9469                BeaconChainProofs::BalanceContainerProof,
9470                alloy::sol_types::sol_data::Array<BeaconChainProofs::BalanceProof>,
9471            );
9472            #[doc(hidden)]
9473            type UnderlyingRustTuple<'a> = (
9474                <BeaconChainProofs::BalanceContainerProof as alloy::sol_types::SolType>::RustType,
9475                alloy::sol_types::private::Vec<
9476                    <BeaconChainProofs::BalanceProof as alloy::sol_types::SolType>::RustType,
9477                >,
9478            );
9479            #[cfg(test)]
9480            #[allow(dead_code, unreachable_patterns)]
9481            fn _type_assertion(
9482                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9483            ) {
9484                match _t {
9485                    alloy_sol_types::private::AssertTypeEq::<
9486                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9487                    >(_) => {}
9488                }
9489            }
9490            #[automatically_derived]
9491            #[doc(hidden)]
9492            impl ::core::convert::From<verifyCheckpointProofsCall>
9493            for UnderlyingRustTuple<'_> {
9494                fn from(value: verifyCheckpointProofsCall) -> Self {
9495                    (value.balanceContainerProof, value.proofs)
9496                }
9497            }
9498            #[automatically_derived]
9499            #[doc(hidden)]
9500            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9501            for verifyCheckpointProofsCall {
9502                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9503                    Self {
9504                        balanceContainerProof: tuple.0,
9505                        proofs: tuple.1,
9506                    }
9507                }
9508            }
9509        }
9510        {
9511            #[doc(hidden)]
9512            type UnderlyingSolTuple<'a> = ();
9513            #[doc(hidden)]
9514            type UnderlyingRustTuple<'a> = ();
9515            #[cfg(test)]
9516            #[allow(dead_code, unreachable_patterns)]
9517            fn _type_assertion(
9518                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9519            ) {
9520                match _t {
9521                    alloy_sol_types::private::AssertTypeEq::<
9522                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9523                    >(_) => {}
9524                }
9525            }
9526            #[automatically_derived]
9527            #[doc(hidden)]
9528            impl ::core::convert::From<verifyCheckpointProofsReturn>
9529            for UnderlyingRustTuple<'_> {
9530                fn from(value: verifyCheckpointProofsReturn) -> Self {
9531                    ()
9532                }
9533            }
9534            #[automatically_derived]
9535            #[doc(hidden)]
9536            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9537            for verifyCheckpointProofsReturn {
9538                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9539                    Self {}
9540                }
9541            }
9542        }
9543        impl verifyCheckpointProofsReturn {
9544            fn _tokenize(
9545                &self,
9546            ) -> <verifyCheckpointProofsCall as alloy_sol_types::SolCall>::ReturnToken<
9547                '_,
9548            > {
9549                ()
9550            }
9551        }
9552        #[automatically_derived]
9553        impl alloy_sol_types::SolCall for verifyCheckpointProofsCall {
9554            type Parameters<'a> = (
9555                BeaconChainProofs::BalanceContainerProof,
9556                alloy::sol_types::sol_data::Array<BeaconChainProofs::BalanceProof>,
9557            );
9558            type Token<'a> = <Self::Parameters<
9559                'a,
9560            > as alloy_sol_types::SolType>::Token<'a>;
9561            type Return = verifyCheckpointProofsReturn;
9562            type ReturnTuple<'a> = ();
9563            type ReturnToken<'a> = <Self::ReturnTuple<
9564                'a,
9565            > as alloy_sol_types::SolType>::Token<'a>;
9566            const SIGNATURE: &'static str = "verifyCheckpointProofs((bytes32,bytes),(bytes32,bytes32,bytes)[])";
9567            const SELECTOR: [u8; 4] = [240u8, 116u8, 186u8, 98u8];
9568            #[inline]
9569            fn new<'a>(
9570                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9571            ) -> Self {
9572                tuple.into()
9573            }
9574            #[inline]
9575            fn tokenize(&self) -> Self::Token<'_> {
9576                (
9577                    <BeaconChainProofs::BalanceContainerProof as alloy_sol_types::SolType>::tokenize(
9578                        &self.balanceContainerProof,
9579                    ),
9580                    <alloy::sol_types::sol_data::Array<
9581                        BeaconChainProofs::BalanceProof,
9582                    > as alloy_sol_types::SolType>::tokenize(&self.proofs),
9583                )
9584            }
9585            #[inline]
9586            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9587                verifyCheckpointProofsReturn::_tokenize(ret)
9588            }
9589            #[inline]
9590            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9591                <Self::ReturnTuple<
9592                    '_,
9593                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9594                    .map(Into::into)
9595            }
9596            #[inline]
9597            fn abi_decode_returns_validate(
9598                data: &[u8],
9599            ) -> alloy_sol_types::Result<Self::Return> {
9600                <Self::ReturnTuple<
9601                    '_,
9602                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9603                    .map(Into::into)
9604            }
9605        }
9606    };
9607    #[derive(serde::Serialize, serde::Deserialize)]
9608    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9609    /**Function with signature `verifyStaleBalance(uint64,(bytes32,bytes),(bytes32[],bytes))` and selector `0x039157d2`.
9610```solidity
9611function verifyStaleBalance(uint64 beaconTimestamp, BeaconChainProofs.StateRootProof memory stateRootProof, BeaconChainProofs.ValidatorProof memory proof) external;
9612```*/
9613    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9614    #[derive(Clone)]
9615    pub struct verifyStaleBalanceCall {
9616        #[allow(missing_docs)]
9617        pub beaconTimestamp: u64,
9618        #[allow(missing_docs)]
9619        pub stateRootProof: <BeaconChainProofs::StateRootProof as alloy::sol_types::SolType>::RustType,
9620        #[allow(missing_docs)]
9621        pub proof: <BeaconChainProofs::ValidatorProof as alloy::sol_types::SolType>::RustType,
9622    }
9623    ///Container type for the return parameters of the [`verifyStaleBalance(uint64,(bytes32,bytes),(bytes32[],bytes))`](verifyStaleBalanceCall) function.
9624    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9625    #[derive(Clone)]
9626    pub struct verifyStaleBalanceReturn {}
9627    #[allow(
9628        non_camel_case_types,
9629        non_snake_case,
9630        clippy::pub_underscore_fields,
9631        clippy::style
9632    )]
9633    const _: () = {
9634        use alloy::sol_types as alloy_sol_types;
9635        {
9636            #[doc(hidden)]
9637            type UnderlyingSolTuple<'a> = (
9638                alloy::sol_types::sol_data::Uint<64>,
9639                BeaconChainProofs::StateRootProof,
9640                BeaconChainProofs::ValidatorProof,
9641            );
9642            #[doc(hidden)]
9643            type UnderlyingRustTuple<'a> = (
9644                u64,
9645                <BeaconChainProofs::StateRootProof as alloy::sol_types::SolType>::RustType,
9646                <BeaconChainProofs::ValidatorProof as alloy::sol_types::SolType>::RustType,
9647            );
9648            #[cfg(test)]
9649            #[allow(dead_code, unreachable_patterns)]
9650            fn _type_assertion(
9651                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9652            ) {
9653                match _t {
9654                    alloy_sol_types::private::AssertTypeEq::<
9655                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9656                    >(_) => {}
9657                }
9658            }
9659            #[automatically_derived]
9660            #[doc(hidden)]
9661            impl ::core::convert::From<verifyStaleBalanceCall>
9662            for UnderlyingRustTuple<'_> {
9663                fn from(value: verifyStaleBalanceCall) -> Self {
9664                    (value.beaconTimestamp, value.stateRootProof, value.proof)
9665                }
9666            }
9667            #[automatically_derived]
9668            #[doc(hidden)]
9669            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9670            for verifyStaleBalanceCall {
9671                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9672                    Self {
9673                        beaconTimestamp: tuple.0,
9674                        stateRootProof: tuple.1,
9675                        proof: tuple.2,
9676                    }
9677                }
9678            }
9679        }
9680        {
9681            #[doc(hidden)]
9682            type UnderlyingSolTuple<'a> = ();
9683            #[doc(hidden)]
9684            type UnderlyingRustTuple<'a> = ();
9685            #[cfg(test)]
9686            #[allow(dead_code, unreachable_patterns)]
9687            fn _type_assertion(
9688                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9689            ) {
9690                match _t {
9691                    alloy_sol_types::private::AssertTypeEq::<
9692                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9693                    >(_) => {}
9694                }
9695            }
9696            #[automatically_derived]
9697            #[doc(hidden)]
9698            impl ::core::convert::From<verifyStaleBalanceReturn>
9699            for UnderlyingRustTuple<'_> {
9700                fn from(value: verifyStaleBalanceReturn) -> Self {
9701                    ()
9702                }
9703            }
9704            #[automatically_derived]
9705            #[doc(hidden)]
9706            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9707            for verifyStaleBalanceReturn {
9708                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9709                    Self {}
9710                }
9711            }
9712        }
9713        impl verifyStaleBalanceReturn {
9714            fn _tokenize(
9715                &self,
9716            ) -> <verifyStaleBalanceCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9717                ()
9718            }
9719        }
9720        #[automatically_derived]
9721        impl alloy_sol_types::SolCall for verifyStaleBalanceCall {
9722            type Parameters<'a> = (
9723                alloy::sol_types::sol_data::Uint<64>,
9724                BeaconChainProofs::StateRootProof,
9725                BeaconChainProofs::ValidatorProof,
9726            );
9727            type Token<'a> = <Self::Parameters<
9728                'a,
9729            > as alloy_sol_types::SolType>::Token<'a>;
9730            type Return = verifyStaleBalanceReturn;
9731            type ReturnTuple<'a> = ();
9732            type ReturnToken<'a> = <Self::ReturnTuple<
9733                'a,
9734            > as alloy_sol_types::SolType>::Token<'a>;
9735            const SIGNATURE: &'static str = "verifyStaleBalance(uint64,(bytes32,bytes),(bytes32[],bytes))";
9736            const SELECTOR: [u8; 4] = [3u8, 145u8, 87u8, 210u8];
9737            #[inline]
9738            fn new<'a>(
9739                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9740            ) -> Self {
9741                tuple.into()
9742            }
9743            #[inline]
9744            fn tokenize(&self) -> Self::Token<'_> {
9745                (
9746                    <alloy::sol_types::sol_data::Uint<
9747                        64,
9748                    > as alloy_sol_types::SolType>::tokenize(&self.beaconTimestamp),
9749                    <BeaconChainProofs::StateRootProof as alloy_sol_types::SolType>::tokenize(
9750                        &self.stateRootProof,
9751                    ),
9752                    <BeaconChainProofs::ValidatorProof as alloy_sol_types::SolType>::tokenize(
9753                        &self.proof,
9754                    ),
9755                )
9756            }
9757            #[inline]
9758            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9759                verifyStaleBalanceReturn::_tokenize(ret)
9760            }
9761            #[inline]
9762            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9763                <Self::ReturnTuple<
9764                    '_,
9765                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9766                    .map(Into::into)
9767            }
9768            #[inline]
9769            fn abi_decode_returns_validate(
9770                data: &[u8],
9771            ) -> alloy_sol_types::Result<Self::Return> {
9772                <Self::ReturnTuple<
9773                    '_,
9774                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9775                    .map(Into::into)
9776            }
9777        }
9778    };
9779    #[derive(serde::Serialize, serde::Deserialize)]
9780    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9781    /**Function with signature `verifyWithdrawalCredentials(uint64,(bytes32,bytes),uint40[],bytes[],bytes32[][])` and selector `0x3f65cf19`.
9782```solidity
9783function verifyWithdrawalCredentials(uint64 beaconTimestamp, BeaconChainProofs.StateRootProof memory stateRootProof, uint40[] memory validatorIndices, bytes[] memory validatorFieldsProofs, bytes32[][] memory validatorFields) external;
9784```*/
9785    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9786    #[derive(Clone)]
9787    pub struct verifyWithdrawalCredentialsCall {
9788        #[allow(missing_docs)]
9789        pub beaconTimestamp: u64,
9790        #[allow(missing_docs)]
9791        pub stateRootProof: <BeaconChainProofs::StateRootProof as alloy::sol_types::SolType>::RustType,
9792        #[allow(missing_docs)]
9793        pub validatorIndices: alloy::sol_types::private::Vec<
9794            alloy::sol_types::private::primitives::aliases::U40,
9795        >,
9796        #[allow(missing_docs)]
9797        pub validatorFieldsProofs: alloy::sol_types::private::Vec<
9798            alloy::sol_types::private::Bytes,
9799        >,
9800        #[allow(missing_docs)]
9801        pub validatorFields: alloy::sol_types::private::Vec<
9802            alloy::sol_types::private::Vec<alloy::sol_types::private::FixedBytes<32>>,
9803        >,
9804    }
9805    ///Container type for the return parameters of the [`verifyWithdrawalCredentials(uint64,(bytes32,bytes),uint40[],bytes[],bytes32[][])`](verifyWithdrawalCredentialsCall) function.
9806    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9807    #[derive(Clone)]
9808    pub struct verifyWithdrawalCredentialsReturn {}
9809    #[allow(
9810        non_camel_case_types,
9811        non_snake_case,
9812        clippy::pub_underscore_fields,
9813        clippy::style
9814    )]
9815    const _: () = {
9816        use alloy::sol_types as alloy_sol_types;
9817        {
9818            #[doc(hidden)]
9819            type UnderlyingSolTuple<'a> = (
9820                alloy::sol_types::sol_data::Uint<64>,
9821                BeaconChainProofs::StateRootProof,
9822                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<40>>,
9823                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Bytes>,
9824                alloy::sol_types::sol_data::Array<
9825                    alloy::sol_types::sol_data::Array<
9826                        alloy::sol_types::sol_data::FixedBytes<32>,
9827                    >,
9828                >,
9829            );
9830            #[doc(hidden)]
9831            type UnderlyingRustTuple<'a> = (
9832                u64,
9833                <BeaconChainProofs::StateRootProof as alloy::sol_types::SolType>::RustType,
9834                alloy::sol_types::private::Vec<
9835                    alloy::sol_types::private::primitives::aliases::U40,
9836                >,
9837                alloy::sol_types::private::Vec<alloy::sol_types::private::Bytes>,
9838                alloy::sol_types::private::Vec<
9839                    alloy::sol_types::private::Vec<
9840                        alloy::sol_types::private::FixedBytes<32>,
9841                    >,
9842                >,
9843            );
9844            #[cfg(test)]
9845            #[allow(dead_code, unreachable_patterns)]
9846            fn _type_assertion(
9847                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9848            ) {
9849                match _t {
9850                    alloy_sol_types::private::AssertTypeEq::<
9851                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9852                    >(_) => {}
9853                }
9854            }
9855            #[automatically_derived]
9856            #[doc(hidden)]
9857            impl ::core::convert::From<verifyWithdrawalCredentialsCall>
9858            for UnderlyingRustTuple<'_> {
9859                fn from(value: verifyWithdrawalCredentialsCall) -> Self {
9860                    (
9861                        value.beaconTimestamp,
9862                        value.stateRootProof,
9863                        value.validatorIndices,
9864                        value.validatorFieldsProofs,
9865                        value.validatorFields,
9866                    )
9867                }
9868            }
9869            #[automatically_derived]
9870            #[doc(hidden)]
9871            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9872            for verifyWithdrawalCredentialsCall {
9873                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9874                    Self {
9875                        beaconTimestamp: tuple.0,
9876                        stateRootProof: tuple.1,
9877                        validatorIndices: tuple.2,
9878                        validatorFieldsProofs: tuple.3,
9879                        validatorFields: tuple.4,
9880                    }
9881                }
9882            }
9883        }
9884        {
9885            #[doc(hidden)]
9886            type UnderlyingSolTuple<'a> = ();
9887            #[doc(hidden)]
9888            type UnderlyingRustTuple<'a> = ();
9889            #[cfg(test)]
9890            #[allow(dead_code, unreachable_patterns)]
9891            fn _type_assertion(
9892                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9893            ) {
9894                match _t {
9895                    alloy_sol_types::private::AssertTypeEq::<
9896                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9897                    >(_) => {}
9898                }
9899            }
9900            #[automatically_derived]
9901            #[doc(hidden)]
9902            impl ::core::convert::From<verifyWithdrawalCredentialsReturn>
9903            for UnderlyingRustTuple<'_> {
9904                fn from(value: verifyWithdrawalCredentialsReturn) -> Self {
9905                    ()
9906                }
9907            }
9908            #[automatically_derived]
9909            #[doc(hidden)]
9910            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9911            for verifyWithdrawalCredentialsReturn {
9912                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9913                    Self {}
9914                }
9915            }
9916        }
9917        impl verifyWithdrawalCredentialsReturn {
9918            fn _tokenize(
9919                &self,
9920            ) -> <verifyWithdrawalCredentialsCall as alloy_sol_types::SolCall>::ReturnToken<
9921                '_,
9922            > {
9923                ()
9924            }
9925        }
9926        #[automatically_derived]
9927        impl alloy_sol_types::SolCall for verifyWithdrawalCredentialsCall {
9928            type Parameters<'a> = (
9929                alloy::sol_types::sol_data::Uint<64>,
9930                BeaconChainProofs::StateRootProof,
9931                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<40>>,
9932                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Bytes>,
9933                alloy::sol_types::sol_data::Array<
9934                    alloy::sol_types::sol_data::Array<
9935                        alloy::sol_types::sol_data::FixedBytes<32>,
9936                    >,
9937                >,
9938            );
9939            type Token<'a> = <Self::Parameters<
9940                'a,
9941            > as alloy_sol_types::SolType>::Token<'a>;
9942            type Return = verifyWithdrawalCredentialsReturn;
9943            type ReturnTuple<'a> = ();
9944            type ReturnToken<'a> = <Self::ReturnTuple<
9945                'a,
9946            > as alloy_sol_types::SolType>::Token<'a>;
9947            const SIGNATURE: &'static str = "verifyWithdrawalCredentials(uint64,(bytes32,bytes),uint40[],bytes[],bytes32[][])";
9948            const SELECTOR: [u8; 4] = [63u8, 101u8, 207u8, 25u8];
9949            #[inline]
9950            fn new<'a>(
9951                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9952            ) -> Self {
9953                tuple.into()
9954            }
9955            #[inline]
9956            fn tokenize(&self) -> Self::Token<'_> {
9957                (
9958                    <alloy::sol_types::sol_data::Uint<
9959                        64,
9960                    > as alloy_sol_types::SolType>::tokenize(&self.beaconTimestamp),
9961                    <BeaconChainProofs::StateRootProof as alloy_sol_types::SolType>::tokenize(
9962                        &self.stateRootProof,
9963                    ),
9964                    <alloy::sol_types::sol_data::Array<
9965                        alloy::sol_types::sol_data::Uint<40>,
9966                    > as alloy_sol_types::SolType>::tokenize(&self.validatorIndices),
9967                    <alloy::sol_types::sol_data::Array<
9968                        alloy::sol_types::sol_data::Bytes,
9969                    > as alloy_sol_types::SolType>::tokenize(
9970                        &self.validatorFieldsProofs,
9971                    ),
9972                    <alloy::sol_types::sol_data::Array<
9973                        alloy::sol_types::sol_data::Array<
9974                            alloy::sol_types::sol_data::FixedBytes<32>,
9975                        >,
9976                    > as alloy_sol_types::SolType>::tokenize(&self.validatorFields),
9977                )
9978            }
9979            #[inline]
9980            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9981                verifyWithdrawalCredentialsReturn::_tokenize(ret)
9982            }
9983            #[inline]
9984            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9985                <Self::ReturnTuple<
9986                    '_,
9987                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9988                    .map(Into::into)
9989            }
9990            #[inline]
9991            fn abi_decode_returns_validate(
9992                data: &[u8],
9993            ) -> alloy_sol_types::Result<Self::Return> {
9994                <Self::ReturnTuple<
9995                    '_,
9996                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9997                    .map(Into::into)
9998            }
9999        }
10000    };
10001    #[derive(serde::Serialize, serde::Deserialize)]
10002    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10003    /**Function with signature `version()` and selector `0x54fd4d50`.
10004```solidity
10005function version() external view returns (string memory);
10006```*/
10007    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10008    #[derive(Clone)]
10009    pub struct versionCall;
10010    #[derive(serde::Serialize, serde::Deserialize)]
10011    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10012    ///Container type for the return parameters of the [`version()`](versionCall) function.
10013    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10014    #[derive(Clone)]
10015    pub struct versionReturn {
10016        #[allow(missing_docs)]
10017        pub _0: alloy::sol_types::private::String,
10018    }
10019    #[allow(
10020        non_camel_case_types,
10021        non_snake_case,
10022        clippy::pub_underscore_fields,
10023        clippy::style
10024    )]
10025    const _: () = {
10026        use alloy::sol_types as alloy_sol_types;
10027        {
10028            #[doc(hidden)]
10029            type UnderlyingSolTuple<'a> = ();
10030            #[doc(hidden)]
10031            type UnderlyingRustTuple<'a> = ();
10032            #[cfg(test)]
10033            #[allow(dead_code, unreachable_patterns)]
10034            fn _type_assertion(
10035                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10036            ) {
10037                match _t {
10038                    alloy_sol_types::private::AssertTypeEq::<
10039                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10040                    >(_) => {}
10041                }
10042            }
10043            #[automatically_derived]
10044            #[doc(hidden)]
10045            impl ::core::convert::From<versionCall> for UnderlyingRustTuple<'_> {
10046                fn from(value: versionCall) -> Self {
10047                    ()
10048                }
10049            }
10050            #[automatically_derived]
10051            #[doc(hidden)]
10052            impl ::core::convert::From<UnderlyingRustTuple<'_>> for versionCall {
10053                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10054                    Self
10055                }
10056            }
10057        }
10058        {
10059            #[doc(hidden)]
10060            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
10061            #[doc(hidden)]
10062            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
10063            #[cfg(test)]
10064            #[allow(dead_code, unreachable_patterns)]
10065            fn _type_assertion(
10066                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10067            ) {
10068                match _t {
10069                    alloy_sol_types::private::AssertTypeEq::<
10070                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10071                    >(_) => {}
10072                }
10073            }
10074            #[automatically_derived]
10075            #[doc(hidden)]
10076            impl ::core::convert::From<versionReturn> for UnderlyingRustTuple<'_> {
10077                fn from(value: versionReturn) -> Self {
10078                    (value._0,)
10079                }
10080            }
10081            #[automatically_derived]
10082            #[doc(hidden)]
10083            impl ::core::convert::From<UnderlyingRustTuple<'_>> for versionReturn {
10084                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10085                    Self { _0: tuple.0 }
10086                }
10087            }
10088        }
10089        #[automatically_derived]
10090        impl alloy_sol_types::SolCall for versionCall {
10091            type Parameters<'a> = ();
10092            type Token<'a> = <Self::Parameters<
10093                'a,
10094            > as alloy_sol_types::SolType>::Token<'a>;
10095            type Return = alloy::sol_types::private::String;
10096            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
10097            type ReturnToken<'a> = <Self::ReturnTuple<
10098                'a,
10099            > as alloy_sol_types::SolType>::Token<'a>;
10100            const SIGNATURE: &'static str = "version()";
10101            const SELECTOR: [u8; 4] = [84u8, 253u8, 77u8, 80u8];
10102            #[inline]
10103            fn new<'a>(
10104                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10105            ) -> Self {
10106                tuple.into()
10107            }
10108            #[inline]
10109            fn tokenize(&self) -> Self::Token<'_> {
10110                ()
10111            }
10112            #[inline]
10113            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10114                (
10115                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
10116                        ret,
10117                    ),
10118                )
10119            }
10120            #[inline]
10121            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10122                <Self::ReturnTuple<
10123                    '_,
10124                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10125                    .map(|r| {
10126                        let r: versionReturn = r.into();
10127                        r._0
10128                    })
10129            }
10130            #[inline]
10131            fn abi_decode_returns_validate(
10132                data: &[u8],
10133            ) -> alloy_sol_types::Result<Self::Return> {
10134                <Self::ReturnTuple<
10135                    '_,
10136                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10137                    .map(|r| {
10138                        let r: versionReturn = r.into();
10139                        r._0
10140                    })
10141            }
10142        }
10143    };
10144    #[derive(serde::Serialize, serde::Deserialize)]
10145    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10146    /**Function with signature `withdrawRestakedBeaconChainETH(address,uint256)` and selector `0xc4907442`.
10147```solidity
10148function withdrawRestakedBeaconChainETH(address recipient, uint256 amountWei) external;
10149```*/
10150    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10151    #[derive(Clone)]
10152    pub struct withdrawRestakedBeaconChainETHCall {
10153        #[allow(missing_docs)]
10154        pub recipient: alloy::sol_types::private::Address,
10155        #[allow(missing_docs)]
10156        pub amountWei: alloy::sol_types::private::primitives::aliases::U256,
10157    }
10158    ///Container type for the return parameters of the [`withdrawRestakedBeaconChainETH(address,uint256)`](withdrawRestakedBeaconChainETHCall) function.
10159    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10160    #[derive(Clone)]
10161    pub struct withdrawRestakedBeaconChainETHReturn {}
10162    #[allow(
10163        non_camel_case_types,
10164        non_snake_case,
10165        clippy::pub_underscore_fields,
10166        clippy::style
10167    )]
10168    const _: () = {
10169        use alloy::sol_types as alloy_sol_types;
10170        {
10171            #[doc(hidden)]
10172            type UnderlyingSolTuple<'a> = (
10173                alloy::sol_types::sol_data::Address,
10174                alloy::sol_types::sol_data::Uint<256>,
10175            );
10176            #[doc(hidden)]
10177            type UnderlyingRustTuple<'a> = (
10178                alloy::sol_types::private::Address,
10179                alloy::sol_types::private::primitives::aliases::U256,
10180            );
10181            #[cfg(test)]
10182            #[allow(dead_code, unreachable_patterns)]
10183            fn _type_assertion(
10184                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10185            ) {
10186                match _t {
10187                    alloy_sol_types::private::AssertTypeEq::<
10188                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10189                    >(_) => {}
10190                }
10191            }
10192            #[automatically_derived]
10193            #[doc(hidden)]
10194            impl ::core::convert::From<withdrawRestakedBeaconChainETHCall>
10195            for UnderlyingRustTuple<'_> {
10196                fn from(value: withdrawRestakedBeaconChainETHCall) -> Self {
10197                    (value.recipient, value.amountWei)
10198                }
10199            }
10200            #[automatically_derived]
10201            #[doc(hidden)]
10202            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10203            for withdrawRestakedBeaconChainETHCall {
10204                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10205                    Self {
10206                        recipient: tuple.0,
10207                        amountWei: tuple.1,
10208                    }
10209                }
10210            }
10211        }
10212        {
10213            #[doc(hidden)]
10214            type UnderlyingSolTuple<'a> = ();
10215            #[doc(hidden)]
10216            type UnderlyingRustTuple<'a> = ();
10217            #[cfg(test)]
10218            #[allow(dead_code, unreachable_patterns)]
10219            fn _type_assertion(
10220                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10221            ) {
10222                match _t {
10223                    alloy_sol_types::private::AssertTypeEq::<
10224                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10225                    >(_) => {}
10226                }
10227            }
10228            #[automatically_derived]
10229            #[doc(hidden)]
10230            impl ::core::convert::From<withdrawRestakedBeaconChainETHReturn>
10231            for UnderlyingRustTuple<'_> {
10232                fn from(value: withdrawRestakedBeaconChainETHReturn) -> Self {
10233                    ()
10234                }
10235            }
10236            #[automatically_derived]
10237            #[doc(hidden)]
10238            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10239            for withdrawRestakedBeaconChainETHReturn {
10240                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10241                    Self {}
10242                }
10243            }
10244        }
10245        impl withdrawRestakedBeaconChainETHReturn {
10246            fn _tokenize(
10247                &self,
10248            ) -> <withdrawRestakedBeaconChainETHCall as alloy_sol_types::SolCall>::ReturnToken<
10249                '_,
10250            > {
10251                ()
10252            }
10253        }
10254        #[automatically_derived]
10255        impl alloy_sol_types::SolCall for withdrawRestakedBeaconChainETHCall {
10256            type Parameters<'a> = (
10257                alloy::sol_types::sol_data::Address,
10258                alloy::sol_types::sol_data::Uint<256>,
10259            );
10260            type Token<'a> = <Self::Parameters<
10261                'a,
10262            > as alloy_sol_types::SolType>::Token<'a>;
10263            type Return = withdrawRestakedBeaconChainETHReturn;
10264            type ReturnTuple<'a> = ();
10265            type ReturnToken<'a> = <Self::ReturnTuple<
10266                'a,
10267            > as alloy_sol_types::SolType>::Token<'a>;
10268            const SIGNATURE: &'static str = "withdrawRestakedBeaconChainETH(address,uint256)";
10269            const SELECTOR: [u8; 4] = [196u8, 144u8, 116u8, 66u8];
10270            #[inline]
10271            fn new<'a>(
10272                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10273            ) -> Self {
10274                tuple.into()
10275            }
10276            #[inline]
10277            fn tokenize(&self) -> Self::Token<'_> {
10278                (
10279                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10280                        &self.recipient,
10281                    ),
10282                    <alloy::sol_types::sol_data::Uint<
10283                        256,
10284                    > as alloy_sol_types::SolType>::tokenize(&self.amountWei),
10285                )
10286            }
10287            #[inline]
10288            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10289                withdrawRestakedBeaconChainETHReturn::_tokenize(ret)
10290            }
10291            #[inline]
10292            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10293                <Self::ReturnTuple<
10294                    '_,
10295                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10296                    .map(Into::into)
10297            }
10298            #[inline]
10299            fn abi_decode_returns_validate(
10300                data: &[u8],
10301            ) -> alloy_sol_types::Result<Self::Return> {
10302                <Self::ReturnTuple<
10303                    '_,
10304                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10305                    .map(Into::into)
10306            }
10307        }
10308    };
10309    #[derive(serde::Serialize, serde::Deserialize)]
10310    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10311    /**Function with signature `withdrawableRestakedExecutionLayerGwei()` and selector `0x3474aa16`.
10312```solidity
10313function withdrawableRestakedExecutionLayerGwei() external view returns (uint64);
10314```*/
10315    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10316    #[derive(Clone)]
10317    pub struct withdrawableRestakedExecutionLayerGweiCall;
10318    #[derive(serde::Serialize, serde::Deserialize)]
10319    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10320    ///Container type for the return parameters of the [`withdrawableRestakedExecutionLayerGwei()`](withdrawableRestakedExecutionLayerGweiCall) function.
10321    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10322    #[derive(Clone)]
10323    pub struct withdrawableRestakedExecutionLayerGweiReturn {
10324        #[allow(missing_docs)]
10325        pub _0: u64,
10326    }
10327    #[allow(
10328        non_camel_case_types,
10329        non_snake_case,
10330        clippy::pub_underscore_fields,
10331        clippy::style
10332    )]
10333    const _: () = {
10334        use alloy::sol_types as alloy_sol_types;
10335        {
10336            #[doc(hidden)]
10337            type UnderlyingSolTuple<'a> = ();
10338            #[doc(hidden)]
10339            type UnderlyingRustTuple<'a> = ();
10340            #[cfg(test)]
10341            #[allow(dead_code, unreachable_patterns)]
10342            fn _type_assertion(
10343                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10344            ) {
10345                match _t {
10346                    alloy_sol_types::private::AssertTypeEq::<
10347                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10348                    >(_) => {}
10349                }
10350            }
10351            #[automatically_derived]
10352            #[doc(hidden)]
10353            impl ::core::convert::From<withdrawableRestakedExecutionLayerGweiCall>
10354            for UnderlyingRustTuple<'_> {
10355                fn from(value: withdrawableRestakedExecutionLayerGweiCall) -> Self {
10356                    ()
10357                }
10358            }
10359            #[automatically_derived]
10360            #[doc(hidden)]
10361            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10362            for withdrawableRestakedExecutionLayerGweiCall {
10363                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10364                    Self
10365                }
10366            }
10367        }
10368        {
10369            #[doc(hidden)]
10370            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10371            #[doc(hidden)]
10372            type UnderlyingRustTuple<'a> = (u64,);
10373            #[cfg(test)]
10374            #[allow(dead_code, unreachable_patterns)]
10375            fn _type_assertion(
10376                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10377            ) {
10378                match _t {
10379                    alloy_sol_types::private::AssertTypeEq::<
10380                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10381                    >(_) => {}
10382                }
10383            }
10384            #[automatically_derived]
10385            #[doc(hidden)]
10386            impl ::core::convert::From<withdrawableRestakedExecutionLayerGweiReturn>
10387            for UnderlyingRustTuple<'_> {
10388                fn from(value: withdrawableRestakedExecutionLayerGweiReturn) -> Self {
10389                    (value._0,)
10390                }
10391            }
10392            #[automatically_derived]
10393            #[doc(hidden)]
10394            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10395            for withdrawableRestakedExecutionLayerGweiReturn {
10396                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10397                    Self { _0: tuple.0 }
10398                }
10399            }
10400        }
10401        #[automatically_derived]
10402        impl alloy_sol_types::SolCall for withdrawableRestakedExecutionLayerGweiCall {
10403            type Parameters<'a> = ();
10404            type Token<'a> = <Self::Parameters<
10405                'a,
10406            > as alloy_sol_types::SolType>::Token<'a>;
10407            type Return = u64;
10408            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10409            type ReturnToken<'a> = <Self::ReturnTuple<
10410                'a,
10411            > as alloy_sol_types::SolType>::Token<'a>;
10412            const SIGNATURE: &'static str = "withdrawableRestakedExecutionLayerGwei()";
10413            const SELECTOR: [u8; 4] = [52u8, 116u8, 170u8, 22u8];
10414            #[inline]
10415            fn new<'a>(
10416                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10417            ) -> Self {
10418                tuple.into()
10419            }
10420            #[inline]
10421            fn tokenize(&self) -> Self::Token<'_> {
10422                ()
10423            }
10424            #[inline]
10425            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10426                (
10427                    <alloy::sol_types::sol_data::Uint<
10428                        64,
10429                    > as alloy_sol_types::SolType>::tokenize(ret),
10430                )
10431            }
10432            #[inline]
10433            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10434                <Self::ReturnTuple<
10435                    '_,
10436                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10437                    .map(|r| {
10438                        let r: withdrawableRestakedExecutionLayerGweiReturn = r.into();
10439                        r._0
10440                    })
10441            }
10442            #[inline]
10443            fn abi_decode_returns_validate(
10444                data: &[u8],
10445            ) -> alloy_sol_types::Result<Self::Return> {
10446                <Self::ReturnTuple<
10447                    '_,
10448                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10449                    .map(|r| {
10450                        let r: withdrawableRestakedExecutionLayerGweiReturn = r.into();
10451                        r._0
10452                    })
10453            }
10454        }
10455    };
10456    ///Container for all the [`EigenPod`](self) function calls.
10457    #[derive(serde::Serialize, serde::Deserialize)]
10458    #[derive()]
10459    pub enum EigenPodCalls {
10460        #[allow(missing_docs)]
10461        GENESIS_TIME(GENESIS_TIMECall),
10462        #[allow(missing_docs)]
10463        activeValidatorCount(activeValidatorCountCall),
10464        #[allow(missing_docs)]
10465        checkpointBalanceExitedGwei(checkpointBalanceExitedGweiCall),
10466        #[allow(missing_docs)]
10467        currentCheckpoint(currentCheckpointCall),
10468        #[allow(missing_docs)]
10469        currentCheckpointTimestamp(currentCheckpointTimestampCall),
10470        #[allow(missing_docs)]
10471        eigenPodManager(eigenPodManagerCall),
10472        #[allow(missing_docs)]
10473        ethPOS(ethPOSCall),
10474        #[allow(missing_docs)]
10475        getParentBlockRoot(getParentBlockRootCall),
10476        #[allow(missing_docs)]
10477        initialize(initializeCall),
10478        #[allow(missing_docs)]
10479        lastCheckpointTimestamp(lastCheckpointTimestampCall),
10480        #[allow(missing_docs)]
10481        podOwner(podOwnerCall),
10482        #[allow(missing_docs)]
10483        proofSubmitter(proofSubmitterCall),
10484        #[allow(missing_docs)]
10485        recoverTokens(recoverTokensCall),
10486        #[allow(missing_docs)]
10487        setProofSubmitter(setProofSubmitterCall),
10488        #[allow(missing_docs)]
10489        stake(stakeCall),
10490        #[allow(missing_docs)]
10491        startCheckpoint(startCheckpointCall),
10492        #[allow(missing_docs)]
10493        validatorPubkeyHashToInfo(validatorPubkeyHashToInfoCall),
10494        #[allow(missing_docs)]
10495        validatorPubkeyToInfo(validatorPubkeyToInfoCall),
10496        #[allow(missing_docs)]
10497        validatorStatus_0(validatorStatus_0Call),
10498        #[allow(missing_docs)]
10499        validatorStatus_1(validatorStatus_1Call),
10500        #[allow(missing_docs)]
10501        verifyCheckpointProofs(verifyCheckpointProofsCall),
10502        #[allow(missing_docs)]
10503        verifyStaleBalance(verifyStaleBalanceCall),
10504        #[allow(missing_docs)]
10505        verifyWithdrawalCredentials(verifyWithdrawalCredentialsCall),
10506        #[allow(missing_docs)]
10507        version(versionCall),
10508        #[allow(missing_docs)]
10509        withdrawRestakedBeaconChainETH(withdrawRestakedBeaconChainETHCall),
10510        #[allow(missing_docs)]
10511        withdrawableRestakedExecutionLayerGwei(
10512            withdrawableRestakedExecutionLayerGweiCall,
10513        ),
10514    }
10515    #[automatically_derived]
10516    impl EigenPodCalls {
10517        /// All the selectors of this enum.
10518        ///
10519        /// Note that the selectors might not be in the same order as the variants.
10520        /// No guarantees are made about the order of the selectors.
10521        ///
10522        /// Prefer using `SolInterface` methods instead.
10523        pub const SELECTORS: &'static [[u8; 4usize]] = &[
10524            [3u8, 145u8, 87u8, 210u8],
10525            [11u8, 24u8, 255u8, 102u8],
10526            [35u8, 64u8, 232u8, 211u8],
10527            [52u8, 116u8, 170u8, 22u8],
10528            [63u8, 101u8, 207u8, 25u8],
10529            [66u8, 236u8, 255u8, 42u8],
10530            [70u8, 101u8, 188u8, 218u8],
10531            [71u8, 210u8, 131u8, 114u8],
10532            [82u8, 57u8, 106u8, 89u8],
10533            [84u8, 253u8, 77u8, 80u8],
10534            [88u8, 117u8, 51u8, 87u8],
10535            [88u8, 234u8, 238u8, 121u8],
10536            [108u8, 13u8, 45u8, 90u8],
10537            [111u8, 205u8, 14u8, 83u8],
10538            [116u8, 57u8, 132u8, 31u8],
10539            [116u8, 205u8, 215u8, 152u8],
10540            [136u8, 103u8, 108u8, 173u8],
10541            [155u8, 78u8, 70u8, 52u8],
10542            [181u8, 34u8, 83u8, 138u8],
10543            [196u8, 144u8, 116u8, 66u8],
10544            [196u8, 214u8, 109u8, 232u8],
10545            [208u8, 109u8, 85u8, 135u8],
10546            [221u8, 163u8, 52u8, 108u8],
10547            [238u8, 148u8, 214u8, 124u8],
10548            [240u8, 116u8, 186u8, 98u8],
10549            [242u8, 136u8, 36u8, 97u8],
10550        ];
10551    }
10552    #[automatically_derived]
10553    impl alloy_sol_types::SolInterface for EigenPodCalls {
10554        const NAME: &'static str = "EigenPodCalls";
10555        const MIN_DATA_LENGTH: usize = 0usize;
10556        const COUNT: usize = 26usize;
10557        #[inline]
10558        fn selector(&self) -> [u8; 4] {
10559            match self {
10560                Self::GENESIS_TIME(_) => {
10561                    <GENESIS_TIMECall as alloy_sol_types::SolCall>::SELECTOR
10562                }
10563                Self::activeValidatorCount(_) => {
10564                    <activeValidatorCountCall as alloy_sol_types::SolCall>::SELECTOR
10565                }
10566                Self::checkpointBalanceExitedGwei(_) => {
10567                    <checkpointBalanceExitedGweiCall as alloy_sol_types::SolCall>::SELECTOR
10568                }
10569                Self::currentCheckpoint(_) => {
10570                    <currentCheckpointCall as alloy_sol_types::SolCall>::SELECTOR
10571                }
10572                Self::currentCheckpointTimestamp(_) => {
10573                    <currentCheckpointTimestampCall as alloy_sol_types::SolCall>::SELECTOR
10574                }
10575                Self::eigenPodManager(_) => {
10576                    <eigenPodManagerCall as alloy_sol_types::SolCall>::SELECTOR
10577                }
10578                Self::ethPOS(_) => <ethPOSCall as alloy_sol_types::SolCall>::SELECTOR,
10579                Self::getParentBlockRoot(_) => {
10580                    <getParentBlockRootCall as alloy_sol_types::SolCall>::SELECTOR
10581                }
10582                Self::initialize(_) => {
10583                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
10584                }
10585                Self::lastCheckpointTimestamp(_) => {
10586                    <lastCheckpointTimestampCall as alloy_sol_types::SolCall>::SELECTOR
10587                }
10588                Self::podOwner(_) => <podOwnerCall as alloy_sol_types::SolCall>::SELECTOR,
10589                Self::proofSubmitter(_) => {
10590                    <proofSubmitterCall as alloy_sol_types::SolCall>::SELECTOR
10591                }
10592                Self::recoverTokens(_) => {
10593                    <recoverTokensCall as alloy_sol_types::SolCall>::SELECTOR
10594                }
10595                Self::setProofSubmitter(_) => {
10596                    <setProofSubmitterCall as alloy_sol_types::SolCall>::SELECTOR
10597                }
10598                Self::stake(_) => <stakeCall as alloy_sol_types::SolCall>::SELECTOR,
10599                Self::startCheckpoint(_) => {
10600                    <startCheckpointCall as alloy_sol_types::SolCall>::SELECTOR
10601                }
10602                Self::validatorPubkeyHashToInfo(_) => {
10603                    <validatorPubkeyHashToInfoCall as alloy_sol_types::SolCall>::SELECTOR
10604                }
10605                Self::validatorPubkeyToInfo(_) => {
10606                    <validatorPubkeyToInfoCall as alloy_sol_types::SolCall>::SELECTOR
10607                }
10608                Self::validatorStatus_0(_) => {
10609                    <validatorStatus_0Call as alloy_sol_types::SolCall>::SELECTOR
10610                }
10611                Self::validatorStatus_1(_) => {
10612                    <validatorStatus_1Call as alloy_sol_types::SolCall>::SELECTOR
10613                }
10614                Self::verifyCheckpointProofs(_) => {
10615                    <verifyCheckpointProofsCall as alloy_sol_types::SolCall>::SELECTOR
10616                }
10617                Self::verifyStaleBalance(_) => {
10618                    <verifyStaleBalanceCall as alloy_sol_types::SolCall>::SELECTOR
10619                }
10620                Self::verifyWithdrawalCredentials(_) => {
10621                    <verifyWithdrawalCredentialsCall as alloy_sol_types::SolCall>::SELECTOR
10622                }
10623                Self::version(_) => <versionCall as alloy_sol_types::SolCall>::SELECTOR,
10624                Self::withdrawRestakedBeaconChainETH(_) => {
10625                    <withdrawRestakedBeaconChainETHCall as alloy_sol_types::SolCall>::SELECTOR
10626                }
10627                Self::withdrawableRestakedExecutionLayerGwei(_) => {
10628                    <withdrawableRestakedExecutionLayerGweiCall as alloy_sol_types::SolCall>::SELECTOR
10629                }
10630            }
10631        }
10632        #[inline]
10633        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
10634            Self::SELECTORS.get(i).copied()
10635        }
10636        #[inline]
10637        fn valid_selector(selector: [u8; 4]) -> bool {
10638            Self::SELECTORS.binary_search(&selector).is_ok()
10639        }
10640        #[inline]
10641        #[allow(non_snake_case)]
10642        fn abi_decode_raw(
10643            selector: [u8; 4],
10644            data: &[u8],
10645        ) -> alloy_sol_types::Result<Self> {
10646            static DECODE_SHIMS: &[fn(
10647                &[u8],
10648            ) -> alloy_sol_types::Result<EigenPodCalls>] = &[
10649                {
10650                    fn verifyStaleBalance(
10651                        data: &[u8],
10652                    ) -> alloy_sol_types::Result<EigenPodCalls> {
10653                        <verifyStaleBalanceCall as alloy_sol_types::SolCall>::abi_decode_raw(
10654                                data,
10655                            )
10656                            .map(EigenPodCalls::verifyStaleBalance)
10657                    }
10658                    verifyStaleBalance
10659                },
10660                {
10661                    fn podOwner(data: &[u8]) -> alloy_sol_types::Result<EigenPodCalls> {
10662                        <podOwnerCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
10663                            .map(EigenPodCalls::podOwner)
10664                    }
10665                    podOwner
10666                },
10667                {
10668                    fn activeValidatorCount(
10669                        data: &[u8],
10670                    ) -> alloy_sol_types::Result<EigenPodCalls> {
10671                        <activeValidatorCountCall as alloy_sol_types::SolCall>::abi_decode_raw(
10672                                data,
10673                            )
10674                            .map(EigenPodCalls::activeValidatorCount)
10675                    }
10676                    activeValidatorCount
10677                },
10678                {
10679                    fn withdrawableRestakedExecutionLayerGwei(
10680                        data: &[u8],
10681                    ) -> alloy_sol_types::Result<EigenPodCalls> {
10682                        <withdrawableRestakedExecutionLayerGweiCall as alloy_sol_types::SolCall>::abi_decode_raw(
10683                                data,
10684                            )
10685                            .map(EigenPodCalls::withdrawableRestakedExecutionLayerGwei)
10686                    }
10687                    withdrawableRestakedExecutionLayerGwei
10688                },
10689                {
10690                    fn verifyWithdrawalCredentials(
10691                        data: &[u8],
10692                    ) -> alloy_sol_types::Result<EigenPodCalls> {
10693                        <verifyWithdrawalCredentialsCall as alloy_sol_types::SolCall>::abi_decode_raw(
10694                                data,
10695                            )
10696                            .map(EigenPodCalls::verifyWithdrawalCredentials)
10697                    }
10698                    verifyWithdrawalCredentials
10699                },
10700                {
10701                    fn currentCheckpointTimestamp(
10702                        data: &[u8],
10703                    ) -> alloy_sol_types::Result<EigenPodCalls> {
10704                        <currentCheckpointTimestampCall as alloy_sol_types::SolCall>::abi_decode_raw(
10705                                data,
10706                            )
10707                            .map(EigenPodCalls::currentCheckpointTimestamp)
10708                    }
10709                    currentCheckpointTimestamp
10710                },
10711                {
10712                    fn eigenPodManager(
10713                        data: &[u8],
10714                    ) -> alloy_sol_types::Result<EigenPodCalls> {
10715                        <eigenPodManagerCall as alloy_sol_types::SolCall>::abi_decode_raw(
10716                                data,
10717                            )
10718                            .map(EigenPodCalls::eigenPodManager)
10719                    }
10720                    eigenPodManager
10721                },
10722                {
10723                    fn currentCheckpoint(
10724                        data: &[u8],
10725                    ) -> alloy_sol_types::Result<EigenPodCalls> {
10726                        <currentCheckpointCall as alloy_sol_types::SolCall>::abi_decode_raw(
10727                                data,
10728                            )
10729                            .map(EigenPodCalls::currentCheckpoint)
10730                    }
10731                    currentCheckpoint
10732                },
10733                {
10734                    fn checkpointBalanceExitedGwei(
10735                        data: &[u8],
10736                    ) -> alloy_sol_types::Result<EigenPodCalls> {
10737                        <checkpointBalanceExitedGweiCall as alloy_sol_types::SolCall>::abi_decode_raw(
10738                                data,
10739                            )
10740                            .map(EigenPodCalls::checkpointBalanceExitedGwei)
10741                    }
10742                    checkpointBalanceExitedGwei
10743                },
10744                {
10745                    fn version(data: &[u8]) -> alloy_sol_types::Result<EigenPodCalls> {
10746                        <versionCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
10747                            .map(EigenPodCalls::version)
10748                    }
10749                    version
10750                },
10751                {
10752                    fn proofSubmitter(
10753                        data: &[u8],
10754                    ) -> alloy_sol_types::Result<EigenPodCalls> {
10755                        <proofSubmitterCall as alloy_sol_types::SolCall>::abi_decode_raw(
10756                                data,
10757                            )
10758                            .map(EigenPodCalls::proofSubmitter)
10759                    }
10760                    proofSubmitter
10761                },
10762                {
10763                    fn validatorStatus_0(
10764                        data: &[u8],
10765                    ) -> alloy_sol_types::Result<EigenPodCalls> {
10766                        <validatorStatus_0Call as alloy_sol_types::SolCall>::abi_decode_raw(
10767                                data,
10768                            )
10769                            .map(EigenPodCalls::validatorStatus_0)
10770                    }
10771                    validatorStatus_0
10772                },
10773                {
10774                    fn getParentBlockRoot(
10775                        data: &[u8],
10776                    ) -> alloy_sol_types::Result<EigenPodCalls> {
10777                        <getParentBlockRootCall as alloy_sol_types::SolCall>::abi_decode_raw(
10778                                data,
10779                            )
10780                            .map(EigenPodCalls::getParentBlockRoot)
10781                    }
10782                    getParentBlockRoot
10783                },
10784                {
10785                    fn validatorPubkeyHashToInfo(
10786                        data: &[u8],
10787                    ) -> alloy_sol_types::Result<EigenPodCalls> {
10788                        <validatorPubkeyHashToInfoCall as alloy_sol_types::SolCall>::abi_decode_raw(
10789                                data,
10790                            )
10791                            .map(EigenPodCalls::validatorPubkeyHashToInfo)
10792                    }
10793                    validatorPubkeyHashToInfo
10794                },
10795                {
10796                    fn validatorStatus_1(
10797                        data: &[u8],
10798                    ) -> alloy_sol_types::Result<EigenPodCalls> {
10799                        <validatorStatus_1Call as alloy_sol_types::SolCall>::abi_decode_raw(
10800                                data,
10801                            )
10802                            .map(EigenPodCalls::validatorStatus_1)
10803                    }
10804                    validatorStatus_1
10805                },
10806                {
10807                    fn ethPOS(data: &[u8]) -> alloy_sol_types::Result<EigenPodCalls> {
10808                        <ethPOSCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
10809                            .map(EigenPodCalls::ethPOS)
10810                    }
10811                    ethPOS
10812                },
10813                {
10814                    fn startCheckpoint(
10815                        data: &[u8],
10816                    ) -> alloy_sol_types::Result<EigenPodCalls> {
10817                        <startCheckpointCall as alloy_sol_types::SolCall>::abi_decode_raw(
10818                                data,
10819                            )
10820                            .map(EigenPodCalls::startCheckpoint)
10821                    }
10822                    startCheckpoint
10823                },
10824                {
10825                    fn stake(data: &[u8]) -> alloy_sol_types::Result<EigenPodCalls> {
10826                        <stakeCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
10827                            .map(EigenPodCalls::stake)
10828                    }
10829                    stake
10830                },
10831                {
10832                    fn validatorPubkeyToInfo(
10833                        data: &[u8],
10834                    ) -> alloy_sol_types::Result<EigenPodCalls> {
10835                        <validatorPubkeyToInfoCall as alloy_sol_types::SolCall>::abi_decode_raw(
10836                                data,
10837                            )
10838                            .map(EigenPodCalls::validatorPubkeyToInfo)
10839                    }
10840                    validatorPubkeyToInfo
10841                },
10842                {
10843                    fn withdrawRestakedBeaconChainETH(
10844                        data: &[u8],
10845                    ) -> alloy_sol_types::Result<EigenPodCalls> {
10846                        <withdrawRestakedBeaconChainETHCall as alloy_sol_types::SolCall>::abi_decode_raw(
10847                                data,
10848                            )
10849                            .map(EigenPodCalls::withdrawRestakedBeaconChainETH)
10850                    }
10851                    withdrawRestakedBeaconChainETH
10852                },
10853                {
10854                    fn initialize(
10855                        data: &[u8],
10856                    ) -> alloy_sol_types::Result<EigenPodCalls> {
10857                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(
10858                                data,
10859                            )
10860                            .map(EigenPodCalls::initialize)
10861                    }
10862                    initialize
10863                },
10864                {
10865                    fn setProofSubmitter(
10866                        data: &[u8],
10867                    ) -> alloy_sol_types::Result<EigenPodCalls> {
10868                        <setProofSubmitterCall as alloy_sol_types::SolCall>::abi_decode_raw(
10869                                data,
10870                            )
10871                            .map(EigenPodCalls::setProofSubmitter)
10872                    }
10873                    setProofSubmitter
10874                },
10875                {
10876                    fn recoverTokens(
10877                        data: &[u8],
10878                    ) -> alloy_sol_types::Result<EigenPodCalls> {
10879                        <recoverTokensCall as alloy_sol_types::SolCall>::abi_decode_raw(
10880                                data,
10881                            )
10882                            .map(EigenPodCalls::recoverTokens)
10883                    }
10884                    recoverTokens
10885                },
10886                {
10887                    fn lastCheckpointTimestamp(
10888                        data: &[u8],
10889                    ) -> alloy_sol_types::Result<EigenPodCalls> {
10890                        <lastCheckpointTimestampCall as alloy_sol_types::SolCall>::abi_decode_raw(
10891                                data,
10892                            )
10893                            .map(EigenPodCalls::lastCheckpointTimestamp)
10894                    }
10895                    lastCheckpointTimestamp
10896                },
10897                {
10898                    fn verifyCheckpointProofs(
10899                        data: &[u8],
10900                    ) -> alloy_sol_types::Result<EigenPodCalls> {
10901                        <verifyCheckpointProofsCall as alloy_sol_types::SolCall>::abi_decode_raw(
10902                                data,
10903                            )
10904                            .map(EigenPodCalls::verifyCheckpointProofs)
10905                    }
10906                    verifyCheckpointProofs
10907                },
10908                {
10909                    fn GENESIS_TIME(
10910                        data: &[u8],
10911                    ) -> alloy_sol_types::Result<EigenPodCalls> {
10912                        <GENESIS_TIMECall as alloy_sol_types::SolCall>::abi_decode_raw(
10913                                data,
10914                            )
10915                            .map(EigenPodCalls::GENESIS_TIME)
10916                    }
10917                    GENESIS_TIME
10918                },
10919            ];
10920            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
10921                return Err(
10922                    alloy_sol_types::Error::unknown_selector(
10923                        <Self as alloy_sol_types::SolInterface>::NAME,
10924                        selector,
10925                    ),
10926                );
10927            };
10928            DECODE_SHIMS[idx](data)
10929        }
10930        #[inline]
10931        #[allow(non_snake_case)]
10932        fn abi_decode_raw_validate(
10933            selector: [u8; 4],
10934            data: &[u8],
10935        ) -> alloy_sol_types::Result<Self> {
10936            static DECODE_VALIDATE_SHIMS: &[fn(
10937                &[u8],
10938            ) -> alloy_sol_types::Result<EigenPodCalls>] = &[
10939                {
10940                    fn verifyStaleBalance(
10941                        data: &[u8],
10942                    ) -> alloy_sol_types::Result<EigenPodCalls> {
10943                        <verifyStaleBalanceCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10944                                data,
10945                            )
10946                            .map(EigenPodCalls::verifyStaleBalance)
10947                    }
10948                    verifyStaleBalance
10949                },
10950                {
10951                    fn podOwner(data: &[u8]) -> alloy_sol_types::Result<EigenPodCalls> {
10952                        <podOwnerCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10953                                data,
10954                            )
10955                            .map(EigenPodCalls::podOwner)
10956                    }
10957                    podOwner
10958                },
10959                {
10960                    fn activeValidatorCount(
10961                        data: &[u8],
10962                    ) -> alloy_sol_types::Result<EigenPodCalls> {
10963                        <activeValidatorCountCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10964                                data,
10965                            )
10966                            .map(EigenPodCalls::activeValidatorCount)
10967                    }
10968                    activeValidatorCount
10969                },
10970                {
10971                    fn withdrawableRestakedExecutionLayerGwei(
10972                        data: &[u8],
10973                    ) -> alloy_sol_types::Result<EigenPodCalls> {
10974                        <withdrawableRestakedExecutionLayerGweiCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10975                                data,
10976                            )
10977                            .map(EigenPodCalls::withdrawableRestakedExecutionLayerGwei)
10978                    }
10979                    withdrawableRestakedExecutionLayerGwei
10980                },
10981                {
10982                    fn verifyWithdrawalCredentials(
10983                        data: &[u8],
10984                    ) -> alloy_sol_types::Result<EigenPodCalls> {
10985                        <verifyWithdrawalCredentialsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10986                                data,
10987                            )
10988                            .map(EigenPodCalls::verifyWithdrawalCredentials)
10989                    }
10990                    verifyWithdrawalCredentials
10991                },
10992                {
10993                    fn currentCheckpointTimestamp(
10994                        data: &[u8],
10995                    ) -> alloy_sol_types::Result<EigenPodCalls> {
10996                        <currentCheckpointTimestampCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10997                                data,
10998                            )
10999                            .map(EigenPodCalls::currentCheckpointTimestamp)
11000                    }
11001                    currentCheckpointTimestamp
11002                },
11003                {
11004                    fn eigenPodManager(
11005                        data: &[u8],
11006                    ) -> alloy_sol_types::Result<EigenPodCalls> {
11007                        <eigenPodManagerCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11008                                data,
11009                            )
11010                            .map(EigenPodCalls::eigenPodManager)
11011                    }
11012                    eigenPodManager
11013                },
11014                {
11015                    fn currentCheckpoint(
11016                        data: &[u8],
11017                    ) -> alloy_sol_types::Result<EigenPodCalls> {
11018                        <currentCheckpointCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11019                                data,
11020                            )
11021                            .map(EigenPodCalls::currentCheckpoint)
11022                    }
11023                    currentCheckpoint
11024                },
11025                {
11026                    fn checkpointBalanceExitedGwei(
11027                        data: &[u8],
11028                    ) -> alloy_sol_types::Result<EigenPodCalls> {
11029                        <checkpointBalanceExitedGweiCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11030                                data,
11031                            )
11032                            .map(EigenPodCalls::checkpointBalanceExitedGwei)
11033                    }
11034                    checkpointBalanceExitedGwei
11035                },
11036                {
11037                    fn version(data: &[u8]) -> alloy_sol_types::Result<EigenPodCalls> {
11038                        <versionCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11039                                data,
11040                            )
11041                            .map(EigenPodCalls::version)
11042                    }
11043                    version
11044                },
11045                {
11046                    fn proofSubmitter(
11047                        data: &[u8],
11048                    ) -> alloy_sol_types::Result<EigenPodCalls> {
11049                        <proofSubmitterCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11050                                data,
11051                            )
11052                            .map(EigenPodCalls::proofSubmitter)
11053                    }
11054                    proofSubmitter
11055                },
11056                {
11057                    fn validatorStatus_0(
11058                        data: &[u8],
11059                    ) -> alloy_sol_types::Result<EigenPodCalls> {
11060                        <validatorStatus_0Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11061                                data,
11062                            )
11063                            .map(EigenPodCalls::validatorStatus_0)
11064                    }
11065                    validatorStatus_0
11066                },
11067                {
11068                    fn getParentBlockRoot(
11069                        data: &[u8],
11070                    ) -> alloy_sol_types::Result<EigenPodCalls> {
11071                        <getParentBlockRootCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11072                                data,
11073                            )
11074                            .map(EigenPodCalls::getParentBlockRoot)
11075                    }
11076                    getParentBlockRoot
11077                },
11078                {
11079                    fn validatorPubkeyHashToInfo(
11080                        data: &[u8],
11081                    ) -> alloy_sol_types::Result<EigenPodCalls> {
11082                        <validatorPubkeyHashToInfoCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11083                                data,
11084                            )
11085                            .map(EigenPodCalls::validatorPubkeyHashToInfo)
11086                    }
11087                    validatorPubkeyHashToInfo
11088                },
11089                {
11090                    fn validatorStatus_1(
11091                        data: &[u8],
11092                    ) -> alloy_sol_types::Result<EigenPodCalls> {
11093                        <validatorStatus_1Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11094                                data,
11095                            )
11096                            .map(EigenPodCalls::validatorStatus_1)
11097                    }
11098                    validatorStatus_1
11099                },
11100                {
11101                    fn ethPOS(data: &[u8]) -> alloy_sol_types::Result<EigenPodCalls> {
11102                        <ethPOSCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11103                                data,
11104                            )
11105                            .map(EigenPodCalls::ethPOS)
11106                    }
11107                    ethPOS
11108                },
11109                {
11110                    fn startCheckpoint(
11111                        data: &[u8],
11112                    ) -> alloy_sol_types::Result<EigenPodCalls> {
11113                        <startCheckpointCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11114                                data,
11115                            )
11116                            .map(EigenPodCalls::startCheckpoint)
11117                    }
11118                    startCheckpoint
11119                },
11120                {
11121                    fn stake(data: &[u8]) -> alloy_sol_types::Result<EigenPodCalls> {
11122                        <stakeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11123                                data,
11124                            )
11125                            .map(EigenPodCalls::stake)
11126                    }
11127                    stake
11128                },
11129                {
11130                    fn validatorPubkeyToInfo(
11131                        data: &[u8],
11132                    ) -> alloy_sol_types::Result<EigenPodCalls> {
11133                        <validatorPubkeyToInfoCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11134                                data,
11135                            )
11136                            .map(EigenPodCalls::validatorPubkeyToInfo)
11137                    }
11138                    validatorPubkeyToInfo
11139                },
11140                {
11141                    fn withdrawRestakedBeaconChainETH(
11142                        data: &[u8],
11143                    ) -> alloy_sol_types::Result<EigenPodCalls> {
11144                        <withdrawRestakedBeaconChainETHCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11145                                data,
11146                            )
11147                            .map(EigenPodCalls::withdrawRestakedBeaconChainETH)
11148                    }
11149                    withdrawRestakedBeaconChainETH
11150                },
11151                {
11152                    fn initialize(
11153                        data: &[u8],
11154                    ) -> alloy_sol_types::Result<EigenPodCalls> {
11155                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11156                                data,
11157                            )
11158                            .map(EigenPodCalls::initialize)
11159                    }
11160                    initialize
11161                },
11162                {
11163                    fn setProofSubmitter(
11164                        data: &[u8],
11165                    ) -> alloy_sol_types::Result<EigenPodCalls> {
11166                        <setProofSubmitterCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11167                                data,
11168                            )
11169                            .map(EigenPodCalls::setProofSubmitter)
11170                    }
11171                    setProofSubmitter
11172                },
11173                {
11174                    fn recoverTokens(
11175                        data: &[u8],
11176                    ) -> alloy_sol_types::Result<EigenPodCalls> {
11177                        <recoverTokensCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11178                                data,
11179                            )
11180                            .map(EigenPodCalls::recoverTokens)
11181                    }
11182                    recoverTokens
11183                },
11184                {
11185                    fn lastCheckpointTimestamp(
11186                        data: &[u8],
11187                    ) -> alloy_sol_types::Result<EigenPodCalls> {
11188                        <lastCheckpointTimestampCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11189                                data,
11190                            )
11191                            .map(EigenPodCalls::lastCheckpointTimestamp)
11192                    }
11193                    lastCheckpointTimestamp
11194                },
11195                {
11196                    fn verifyCheckpointProofs(
11197                        data: &[u8],
11198                    ) -> alloy_sol_types::Result<EigenPodCalls> {
11199                        <verifyCheckpointProofsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11200                                data,
11201                            )
11202                            .map(EigenPodCalls::verifyCheckpointProofs)
11203                    }
11204                    verifyCheckpointProofs
11205                },
11206                {
11207                    fn GENESIS_TIME(
11208                        data: &[u8],
11209                    ) -> alloy_sol_types::Result<EigenPodCalls> {
11210                        <GENESIS_TIMECall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11211                                data,
11212                            )
11213                            .map(EigenPodCalls::GENESIS_TIME)
11214                    }
11215                    GENESIS_TIME
11216                },
11217            ];
11218            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
11219                return Err(
11220                    alloy_sol_types::Error::unknown_selector(
11221                        <Self as alloy_sol_types::SolInterface>::NAME,
11222                        selector,
11223                    ),
11224                );
11225            };
11226            DECODE_VALIDATE_SHIMS[idx](data)
11227        }
11228        #[inline]
11229        fn abi_encoded_size(&self) -> usize {
11230            match self {
11231                Self::GENESIS_TIME(inner) => {
11232                    <GENESIS_TIMECall as alloy_sol_types::SolCall>::abi_encoded_size(
11233                        inner,
11234                    )
11235                }
11236                Self::activeValidatorCount(inner) => {
11237                    <activeValidatorCountCall as alloy_sol_types::SolCall>::abi_encoded_size(
11238                        inner,
11239                    )
11240                }
11241                Self::checkpointBalanceExitedGwei(inner) => {
11242                    <checkpointBalanceExitedGweiCall as alloy_sol_types::SolCall>::abi_encoded_size(
11243                        inner,
11244                    )
11245                }
11246                Self::currentCheckpoint(inner) => {
11247                    <currentCheckpointCall as alloy_sol_types::SolCall>::abi_encoded_size(
11248                        inner,
11249                    )
11250                }
11251                Self::currentCheckpointTimestamp(inner) => {
11252                    <currentCheckpointTimestampCall as alloy_sol_types::SolCall>::abi_encoded_size(
11253                        inner,
11254                    )
11255                }
11256                Self::eigenPodManager(inner) => {
11257                    <eigenPodManagerCall as alloy_sol_types::SolCall>::abi_encoded_size(
11258                        inner,
11259                    )
11260                }
11261                Self::ethPOS(inner) => {
11262                    <ethPOSCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
11263                }
11264                Self::getParentBlockRoot(inner) => {
11265                    <getParentBlockRootCall as alloy_sol_types::SolCall>::abi_encoded_size(
11266                        inner,
11267                    )
11268                }
11269                Self::initialize(inner) => {
11270                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
11271                }
11272                Self::lastCheckpointTimestamp(inner) => {
11273                    <lastCheckpointTimestampCall as alloy_sol_types::SolCall>::abi_encoded_size(
11274                        inner,
11275                    )
11276                }
11277                Self::podOwner(inner) => {
11278                    <podOwnerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
11279                }
11280                Self::proofSubmitter(inner) => {
11281                    <proofSubmitterCall as alloy_sol_types::SolCall>::abi_encoded_size(
11282                        inner,
11283                    )
11284                }
11285                Self::recoverTokens(inner) => {
11286                    <recoverTokensCall as alloy_sol_types::SolCall>::abi_encoded_size(
11287                        inner,
11288                    )
11289                }
11290                Self::setProofSubmitter(inner) => {
11291                    <setProofSubmitterCall as alloy_sol_types::SolCall>::abi_encoded_size(
11292                        inner,
11293                    )
11294                }
11295                Self::stake(inner) => {
11296                    <stakeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
11297                }
11298                Self::startCheckpoint(inner) => {
11299                    <startCheckpointCall as alloy_sol_types::SolCall>::abi_encoded_size(
11300                        inner,
11301                    )
11302                }
11303                Self::validatorPubkeyHashToInfo(inner) => {
11304                    <validatorPubkeyHashToInfoCall as alloy_sol_types::SolCall>::abi_encoded_size(
11305                        inner,
11306                    )
11307                }
11308                Self::validatorPubkeyToInfo(inner) => {
11309                    <validatorPubkeyToInfoCall as alloy_sol_types::SolCall>::abi_encoded_size(
11310                        inner,
11311                    )
11312                }
11313                Self::validatorStatus_0(inner) => {
11314                    <validatorStatus_0Call as alloy_sol_types::SolCall>::abi_encoded_size(
11315                        inner,
11316                    )
11317                }
11318                Self::validatorStatus_1(inner) => {
11319                    <validatorStatus_1Call as alloy_sol_types::SolCall>::abi_encoded_size(
11320                        inner,
11321                    )
11322                }
11323                Self::verifyCheckpointProofs(inner) => {
11324                    <verifyCheckpointProofsCall as alloy_sol_types::SolCall>::abi_encoded_size(
11325                        inner,
11326                    )
11327                }
11328                Self::verifyStaleBalance(inner) => {
11329                    <verifyStaleBalanceCall as alloy_sol_types::SolCall>::abi_encoded_size(
11330                        inner,
11331                    )
11332                }
11333                Self::verifyWithdrawalCredentials(inner) => {
11334                    <verifyWithdrawalCredentialsCall as alloy_sol_types::SolCall>::abi_encoded_size(
11335                        inner,
11336                    )
11337                }
11338                Self::version(inner) => {
11339                    <versionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
11340                }
11341                Self::withdrawRestakedBeaconChainETH(inner) => {
11342                    <withdrawRestakedBeaconChainETHCall as alloy_sol_types::SolCall>::abi_encoded_size(
11343                        inner,
11344                    )
11345                }
11346                Self::withdrawableRestakedExecutionLayerGwei(inner) => {
11347                    <withdrawableRestakedExecutionLayerGweiCall as alloy_sol_types::SolCall>::abi_encoded_size(
11348                        inner,
11349                    )
11350                }
11351            }
11352        }
11353        #[inline]
11354        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
11355            match self {
11356                Self::GENESIS_TIME(inner) => {
11357                    <GENESIS_TIMECall as alloy_sol_types::SolCall>::abi_encode_raw(
11358                        inner,
11359                        out,
11360                    )
11361                }
11362                Self::activeValidatorCount(inner) => {
11363                    <activeValidatorCountCall as alloy_sol_types::SolCall>::abi_encode_raw(
11364                        inner,
11365                        out,
11366                    )
11367                }
11368                Self::checkpointBalanceExitedGwei(inner) => {
11369                    <checkpointBalanceExitedGweiCall as alloy_sol_types::SolCall>::abi_encode_raw(
11370                        inner,
11371                        out,
11372                    )
11373                }
11374                Self::currentCheckpoint(inner) => {
11375                    <currentCheckpointCall as alloy_sol_types::SolCall>::abi_encode_raw(
11376                        inner,
11377                        out,
11378                    )
11379                }
11380                Self::currentCheckpointTimestamp(inner) => {
11381                    <currentCheckpointTimestampCall as alloy_sol_types::SolCall>::abi_encode_raw(
11382                        inner,
11383                        out,
11384                    )
11385                }
11386                Self::eigenPodManager(inner) => {
11387                    <eigenPodManagerCall as alloy_sol_types::SolCall>::abi_encode_raw(
11388                        inner,
11389                        out,
11390                    )
11391                }
11392                Self::ethPOS(inner) => {
11393                    <ethPOSCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
11394                }
11395                Self::getParentBlockRoot(inner) => {
11396                    <getParentBlockRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
11397                        inner,
11398                        out,
11399                    )
11400                }
11401                Self::initialize(inner) => {
11402                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
11403                        inner,
11404                        out,
11405                    )
11406                }
11407                Self::lastCheckpointTimestamp(inner) => {
11408                    <lastCheckpointTimestampCall as alloy_sol_types::SolCall>::abi_encode_raw(
11409                        inner,
11410                        out,
11411                    )
11412                }
11413                Self::podOwner(inner) => {
11414                    <podOwnerCall as alloy_sol_types::SolCall>::abi_encode_raw(
11415                        inner,
11416                        out,
11417                    )
11418                }
11419                Self::proofSubmitter(inner) => {
11420                    <proofSubmitterCall as alloy_sol_types::SolCall>::abi_encode_raw(
11421                        inner,
11422                        out,
11423                    )
11424                }
11425                Self::recoverTokens(inner) => {
11426                    <recoverTokensCall as alloy_sol_types::SolCall>::abi_encode_raw(
11427                        inner,
11428                        out,
11429                    )
11430                }
11431                Self::setProofSubmitter(inner) => {
11432                    <setProofSubmitterCall as alloy_sol_types::SolCall>::abi_encode_raw(
11433                        inner,
11434                        out,
11435                    )
11436                }
11437                Self::stake(inner) => {
11438                    <stakeCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
11439                }
11440                Self::startCheckpoint(inner) => {
11441                    <startCheckpointCall as alloy_sol_types::SolCall>::abi_encode_raw(
11442                        inner,
11443                        out,
11444                    )
11445                }
11446                Self::validatorPubkeyHashToInfo(inner) => {
11447                    <validatorPubkeyHashToInfoCall as alloy_sol_types::SolCall>::abi_encode_raw(
11448                        inner,
11449                        out,
11450                    )
11451                }
11452                Self::validatorPubkeyToInfo(inner) => {
11453                    <validatorPubkeyToInfoCall as alloy_sol_types::SolCall>::abi_encode_raw(
11454                        inner,
11455                        out,
11456                    )
11457                }
11458                Self::validatorStatus_0(inner) => {
11459                    <validatorStatus_0Call as alloy_sol_types::SolCall>::abi_encode_raw(
11460                        inner,
11461                        out,
11462                    )
11463                }
11464                Self::validatorStatus_1(inner) => {
11465                    <validatorStatus_1Call as alloy_sol_types::SolCall>::abi_encode_raw(
11466                        inner,
11467                        out,
11468                    )
11469                }
11470                Self::verifyCheckpointProofs(inner) => {
11471                    <verifyCheckpointProofsCall as alloy_sol_types::SolCall>::abi_encode_raw(
11472                        inner,
11473                        out,
11474                    )
11475                }
11476                Self::verifyStaleBalance(inner) => {
11477                    <verifyStaleBalanceCall as alloy_sol_types::SolCall>::abi_encode_raw(
11478                        inner,
11479                        out,
11480                    )
11481                }
11482                Self::verifyWithdrawalCredentials(inner) => {
11483                    <verifyWithdrawalCredentialsCall as alloy_sol_types::SolCall>::abi_encode_raw(
11484                        inner,
11485                        out,
11486                    )
11487                }
11488                Self::version(inner) => {
11489                    <versionCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
11490                }
11491                Self::withdrawRestakedBeaconChainETH(inner) => {
11492                    <withdrawRestakedBeaconChainETHCall as alloy_sol_types::SolCall>::abi_encode_raw(
11493                        inner,
11494                        out,
11495                    )
11496                }
11497                Self::withdrawableRestakedExecutionLayerGwei(inner) => {
11498                    <withdrawableRestakedExecutionLayerGweiCall as alloy_sol_types::SolCall>::abi_encode_raw(
11499                        inner,
11500                        out,
11501                    )
11502                }
11503            }
11504        }
11505    }
11506    ///Container for all the [`EigenPod`](self) custom errors.
11507    #[derive(serde::Serialize, serde::Deserialize)]
11508    #[derive(Debug, PartialEq, Eq, Hash)]
11509    pub enum EigenPodErrors {
11510        #[allow(missing_docs)]
11511        BeaconTimestampTooFarInPast(BeaconTimestampTooFarInPast),
11512        #[allow(missing_docs)]
11513        CannotCheckpointTwiceInSingleBlock(CannotCheckpointTwiceInSingleBlock),
11514        #[allow(missing_docs)]
11515        CheckpointAlreadyActive(CheckpointAlreadyActive),
11516        #[allow(missing_docs)]
11517        CredentialsAlreadyVerified(CredentialsAlreadyVerified),
11518        #[allow(missing_docs)]
11519        CurrentlyPaused(CurrentlyPaused),
11520        #[allow(missing_docs)]
11521        InputAddressZero(InputAddressZero),
11522        #[allow(missing_docs)]
11523        InputArrayLengthMismatch(InputArrayLengthMismatch),
11524        #[allow(missing_docs)]
11525        InsufficientWithdrawableBalance(InsufficientWithdrawableBalance),
11526        #[allow(missing_docs)]
11527        InvalidEIP4788Response(InvalidEIP4788Response),
11528        #[allow(missing_docs)]
11529        InvalidProof(InvalidProof),
11530        #[allow(missing_docs)]
11531        InvalidProofLength(InvalidProofLength),
11532        #[allow(missing_docs)]
11533        InvalidPubKeyLength(InvalidPubKeyLength),
11534        #[allow(missing_docs)]
11535        InvalidShortString(InvalidShortString),
11536        #[allow(missing_docs)]
11537        InvalidValidatorFieldsLength(InvalidValidatorFieldsLength),
11538        #[allow(missing_docs)]
11539        MsgValueNot32ETH(MsgValueNot32ETH),
11540        #[allow(missing_docs)]
11541        NoActiveCheckpoint(NoActiveCheckpoint),
11542        #[allow(missing_docs)]
11543        NoBalanceToCheckpoint(NoBalanceToCheckpoint),
11544        #[allow(missing_docs)]
11545        OnlyEigenPodManager(OnlyEigenPodManager),
11546        #[allow(missing_docs)]
11547        OnlyEigenPodOwner(OnlyEigenPodOwner),
11548        #[allow(missing_docs)]
11549        OnlyEigenPodOwnerOrProofSubmitter(OnlyEigenPodOwnerOrProofSubmitter),
11550        #[allow(missing_docs)]
11551        StringTooLong(StringTooLong),
11552        #[allow(missing_docs)]
11553        TimestampOutOfRange(TimestampOutOfRange),
11554        #[allow(missing_docs)]
11555        ValidatorInactiveOnBeaconChain(ValidatorInactiveOnBeaconChain),
11556        #[allow(missing_docs)]
11557        ValidatorIsExitingBeaconChain(ValidatorIsExitingBeaconChain),
11558        #[allow(missing_docs)]
11559        ValidatorNotActiveInPod(ValidatorNotActiveInPod),
11560        #[allow(missing_docs)]
11561        ValidatorNotSlashedOnBeaconChain(ValidatorNotSlashedOnBeaconChain),
11562        #[allow(missing_docs)]
11563        WithdrawalCredentialsNotForEigenPod(WithdrawalCredentialsNotForEigenPod),
11564    }
11565    #[automatically_derived]
11566    impl EigenPodErrors {
11567        /// All the selectors of this enum.
11568        ///
11569        /// Note that the selectors might not be in the same order as the variants.
11570        /// No guarantees are made about the order of the selectors.
11571        ///
11572        /// Prefer using `SolInterface` methods instead.
11573        pub const SELECTORS: &'static [[u8; 4usize]] = &[
11574            [9u8, 189u8, 227u8, 57u8],
11575            [11u8, 27u8, 213u8, 28u8],
11576            [26u8, 84u8, 79u8, 73u8],
11577            [32u8, 5u8, 145u8, 189u8],
11578            [36u8, 180u8, 181u8, 152u8],
11579            [46u8, 173u8, 230u8, 55u8],
11580            [48u8, 90u8, 39u8, 169u8],
11581            [53u8, 224u8, 158u8, 157u8],
11582            [55u8, 224u8, 127u8, 253u8],
11583            [66u8, 122u8, 119u8, 121u8],
11584            [67u8, 113u8, 74u8, 253u8],
11585            [77u8, 197u8, 246u8, 164u8],
11586            [85u8, 138u8, 208u8, 163u8],
11587            [101u8, 96u8, 141u8, 180u8],
11588            [103u8, 219u8, 91u8, 139u8],
11589            [110u8, 229u8, 186u8, 166u8],
11590            [115u8, 99u8, 33u8, 118u8],
11591            [132u8, 10u8, 72u8, 213u8],
11592            [159u8, 16u8, 100u8, 114u8],
11593            [176u8, 231u8, 47u8, 104u8],
11594            [179u8, 81u8, 43u8, 12u8],
11595            [190u8, 155u8, 195u8, 0u8],
11596            [200u8, 78u8, 153u8, 132u8],
11597            [203u8, 122u8, 165u8, 100u8],
11598            [212u8, 158u8, 25u8, 167u8],
11599            [227u8, 62u8, 110u8, 6u8],
11600            [242u8, 137u8, 204u8, 218u8],
11601        ];
11602    }
11603    #[automatically_derived]
11604    impl alloy_sol_types::SolInterface for EigenPodErrors {
11605        const NAME: &'static str = "EigenPodErrors";
11606        const MIN_DATA_LENGTH: usize = 0usize;
11607        const COUNT: usize = 27usize;
11608        #[inline]
11609        fn selector(&self) -> [u8; 4] {
11610            match self {
11611                Self::BeaconTimestampTooFarInPast(_) => {
11612                    <BeaconTimestampTooFarInPast as alloy_sol_types::SolError>::SELECTOR
11613                }
11614                Self::CannotCheckpointTwiceInSingleBlock(_) => {
11615                    <CannotCheckpointTwiceInSingleBlock as alloy_sol_types::SolError>::SELECTOR
11616                }
11617                Self::CheckpointAlreadyActive(_) => {
11618                    <CheckpointAlreadyActive as alloy_sol_types::SolError>::SELECTOR
11619                }
11620                Self::CredentialsAlreadyVerified(_) => {
11621                    <CredentialsAlreadyVerified as alloy_sol_types::SolError>::SELECTOR
11622                }
11623                Self::CurrentlyPaused(_) => {
11624                    <CurrentlyPaused as alloy_sol_types::SolError>::SELECTOR
11625                }
11626                Self::InputAddressZero(_) => {
11627                    <InputAddressZero as alloy_sol_types::SolError>::SELECTOR
11628                }
11629                Self::InputArrayLengthMismatch(_) => {
11630                    <InputArrayLengthMismatch as alloy_sol_types::SolError>::SELECTOR
11631                }
11632                Self::InsufficientWithdrawableBalance(_) => {
11633                    <InsufficientWithdrawableBalance as alloy_sol_types::SolError>::SELECTOR
11634                }
11635                Self::InvalidEIP4788Response(_) => {
11636                    <InvalidEIP4788Response as alloy_sol_types::SolError>::SELECTOR
11637                }
11638                Self::InvalidProof(_) => {
11639                    <InvalidProof as alloy_sol_types::SolError>::SELECTOR
11640                }
11641                Self::InvalidProofLength(_) => {
11642                    <InvalidProofLength as alloy_sol_types::SolError>::SELECTOR
11643                }
11644                Self::InvalidPubKeyLength(_) => {
11645                    <InvalidPubKeyLength as alloy_sol_types::SolError>::SELECTOR
11646                }
11647                Self::InvalidShortString(_) => {
11648                    <InvalidShortString as alloy_sol_types::SolError>::SELECTOR
11649                }
11650                Self::InvalidValidatorFieldsLength(_) => {
11651                    <InvalidValidatorFieldsLength as alloy_sol_types::SolError>::SELECTOR
11652                }
11653                Self::MsgValueNot32ETH(_) => {
11654                    <MsgValueNot32ETH as alloy_sol_types::SolError>::SELECTOR
11655                }
11656                Self::NoActiveCheckpoint(_) => {
11657                    <NoActiveCheckpoint as alloy_sol_types::SolError>::SELECTOR
11658                }
11659                Self::NoBalanceToCheckpoint(_) => {
11660                    <NoBalanceToCheckpoint as alloy_sol_types::SolError>::SELECTOR
11661                }
11662                Self::OnlyEigenPodManager(_) => {
11663                    <OnlyEigenPodManager as alloy_sol_types::SolError>::SELECTOR
11664                }
11665                Self::OnlyEigenPodOwner(_) => {
11666                    <OnlyEigenPodOwner as alloy_sol_types::SolError>::SELECTOR
11667                }
11668                Self::OnlyEigenPodOwnerOrProofSubmitter(_) => {
11669                    <OnlyEigenPodOwnerOrProofSubmitter as alloy_sol_types::SolError>::SELECTOR
11670                }
11671                Self::StringTooLong(_) => {
11672                    <StringTooLong as alloy_sol_types::SolError>::SELECTOR
11673                }
11674                Self::TimestampOutOfRange(_) => {
11675                    <TimestampOutOfRange as alloy_sol_types::SolError>::SELECTOR
11676                }
11677                Self::ValidatorInactiveOnBeaconChain(_) => {
11678                    <ValidatorInactiveOnBeaconChain as alloy_sol_types::SolError>::SELECTOR
11679                }
11680                Self::ValidatorIsExitingBeaconChain(_) => {
11681                    <ValidatorIsExitingBeaconChain as alloy_sol_types::SolError>::SELECTOR
11682                }
11683                Self::ValidatorNotActiveInPod(_) => {
11684                    <ValidatorNotActiveInPod as alloy_sol_types::SolError>::SELECTOR
11685                }
11686                Self::ValidatorNotSlashedOnBeaconChain(_) => {
11687                    <ValidatorNotSlashedOnBeaconChain as alloy_sol_types::SolError>::SELECTOR
11688                }
11689                Self::WithdrawalCredentialsNotForEigenPod(_) => {
11690                    <WithdrawalCredentialsNotForEigenPod as alloy_sol_types::SolError>::SELECTOR
11691                }
11692            }
11693        }
11694        #[inline]
11695        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
11696            Self::SELECTORS.get(i).copied()
11697        }
11698        #[inline]
11699        fn valid_selector(selector: [u8; 4]) -> bool {
11700            Self::SELECTORS.binary_search(&selector).is_ok()
11701        }
11702        #[inline]
11703        #[allow(non_snake_case)]
11704        fn abi_decode_raw(
11705            selector: [u8; 4],
11706            data: &[u8],
11707        ) -> alloy_sol_types::Result<Self> {
11708            static DECODE_SHIMS: &[fn(
11709                &[u8],
11710            ) -> alloy_sol_types::Result<EigenPodErrors>] = &[
11711                {
11712                    fn InvalidProof(
11713                        data: &[u8],
11714                    ) -> alloy_sol_types::Result<EigenPodErrors> {
11715                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw(data)
11716                            .map(EigenPodErrors::InvalidProof)
11717                    }
11718                    InvalidProof
11719                },
11720                {
11721                    fn InsufficientWithdrawableBalance(
11722                        data: &[u8],
11723                    ) -> alloy_sol_types::Result<EigenPodErrors> {
11724                        <InsufficientWithdrawableBalance as alloy_sol_types::SolError>::abi_decode_raw(
11725                                data,
11726                            )
11727                            .map(EigenPodErrors::InsufficientWithdrawableBalance)
11728                    }
11729                    InsufficientWithdrawableBalance
11730                },
11731                {
11732                    fn NoActiveCheckpoint(
11733                        data: &[u8],
11734                    ) -> alloy_sol_types::Result<EigenPodErrors> {
11735                        <NoActiveCheckpoint as alloy_sol_types::SolError>::abi_decode_raw(
11736                                data,
11737                            )
11738                            .map(EigenPodErrors::NoActiveCheckpoint)
11739                    }
11740                    NoActiveCheckpoint
11741                },
11742                {
11743                    fn InvalidValidatorFieldsLength(
11744                        data: &[u8],
11745                    ) -> alloy_sol_types::Result<EigenPodErrors> {
11746                        <InvalidValidatorFieldsLength as alloy_sol_types::SolError>::abi_decode_raw(
11747                                data,
11748                            )
11749                            .map(EigenPodErrors::InvalidValidatorFieldsLength)
11750                    }
11751                    InvalidValidatorFieldsLength
11752                },
11753                {
11754                    fn MsgValueNot32ETH(
11755                        data: &[u8],
11756                    ) -> alloy_sol_types::Result<EigenPodErrors> {
11757                        <MsgValueNot32ETH as alloy_sol_types::SolError>::abi_decode_raw(
11758                                data,
11759                            )
11760                            .map(EigenPodErrors::MsgValueNot32ETH)
11761                    }
11762                    MsgValueNot32ETH
11763                },
11764                {
11765                    fn ValidatorIsExitingBeaconChain(
11766                        data: &[u8],
11767                    ) -> alloy_sol_types::Result<EigenPodErrors> {
11768                        <ValidatorIsExitingBeaconChain as alloy_sol_types::SolError>::abi_decode_raw(
11769                                data,
11770                            )
11771                            .map(EigenPodErrors::ValidatorIsExitingBeaconChain)
11772                    }
11773                    ValidatorIsExitingBeaconChain
11774                },
11775                {
11776                    fn StringTooLong(
11777                        data: &[u8],
11778                    ) -> alloy_sol_types::Result<EigenPodErrors> {
11779                        <StringTooLong as alloy_sol_types::SolError>::abi_decode_raw(
11780                                data,
11781                            )
11782                            .map(EigenPodErrors::StringTooLong)
11783                    }
11784                    StringTooLong
11785                },
11786                {
11787                    fn CredentialsAlreadyVerified(
11788                        data: &[u8],
11789                    ) -> alloy_sol_types::Result<EigenPodErrors> {
11790                        <CredentialsAlreadyVerified as alloy_sol_types::SolError>::abi_decode_raw(
11791                                data,
11792                            )
11793                            .map(EigenPodErrors::CredentialsAlreadyVerified)
11794                    }
11795                    CredentialsAlreadyVerified
11796                },
11797                {
11798                    fn BeaconTimestampTooFarInPast(
11799                        data: &[u8],
11800                    ) -> alloy_sol_types::Result<EigenPodErrors> {
11801                        <BeaconTimestampTooFarInPast as alloy_sol_types::SolError>::abi_decode_raw(
11802                                data,
11803                            )
11804                            .map(EigenPodErrors::BeaconTimestampTooFarInPast)
11805                    }
11806                    BeaconTimestampTooFarInPast
11807                },
11808                {
11809                    fn OnlyEigenPodOwnerOrProofSubmitter(
11810                        data: &[u8],
11811                    ) -> alloy_sol_types::Result<EigenPodErrors> {
11812                        <OnlyEigenPodOwnerOrProofSubmitter as alloy_sol_types::SolError>::abi_decode_raw(
11813                                data,
11814                            )
11815                            .map(EigenPodErrors::OnlyEigenPodOwnerOrProofSubmitter)
11816                    }
11817                    OnlyEigenPodOwnerOrProofSubmitter
11818                },
11819                {
11820                    fn InputArrayLengthMismatch(
11821                        data: &[u8],
11822                    ) -> alloy_sol_types::Result<EigenPodErrors> {
11823                        <InputArrayLengthMismatch as alloy_sol_types::SolError>::abi_decode_raw(
11824                                data,
11825                            )
11826                            .map(EigenPodErrors::InputArrayLengthMismatch)
11827                    }
11828                    InputArrayLengthMismatch
11829                },
11830                {
11831                    fn InvalidProofLength(
11832                        data: &[u8],
11833                    ) -> alloy_sol_types::Result<EigenPodErrors> {
11834                        <InvalidProofLength as alloy_sol_types::SolError>::abi_decode_raw(
11835                                data,
11836                            )
11837                            .map(EigenPodErrors::InvalidProofLength)
11838                    }
11839                    InvalidProofLength
11840                },
11841                {
11842                    fn InvalidEIP4788Response(
11843                        data: &[u8],
11844                    ) -> alloy_sol_types::Result<EigenPodErrors> {
11845                        <InvalidEIP4788Response as alloy_sol_types::SolError>::abi_decode_raw(
11846                                data,
11847                            )
11848                            .map(EigenPodErrors::InvalidEIP4788Response)
11849                    }
11850                    InvalidEIP4788Response
11851                },
11852                {
11853                    fn ValidatorInactiveOnBeaconChain(
11854                        data: &[u8],
11855                    ) -> alloy_sol_types::Result<EigenPodErrors> {
11856                        <ValidatorInactiveOnBeaconChain as alloy_sol_types::SolError>::abi_decode_raw(
11857                                data,
11858                            )
11859                            .map(EigenPodErrors::ValidatorInactiveOnBeaconChain)
11860                    }
11861                    ValidatorInactiveOnBeaconChain
11862                },
11863                {
11864                    fn CannotCheckpointTwiceInSingleBlock(
11865                        data: &[u8],
11866                    ) -> alloy_sol_types::Result<EigenPodErrors> {
11867                        <CannotCheckpointTwiceInSingleBlock as alloy_sol_types::SolError>::abi_decode_raw(
11868                                data,
11869                            )
11870                            .map(EigenPodErrors::CannotCheckpointTwiceInSingleBlock)
11871                    }
11872                    CannotCheckpointTwiceInSingleBlock
11873                },
11874                {
11875                    fn WithdrawalCredentialsNotForEigenPod(
11876                        data: &[u8],
11877                    ) -> alloy_sol_types::Result<EigenPodErrors> {
11878                        <WithdrawalCredentialsNotForEigenPod as alloy_sol_types::SolError>::abi_decode_raw(
11879                                data,
11880                            )
11881                            .map(EigenPodErrors::WithdrawalCredentialsNotForEigenPod)
11882                    }
11883                    WithdrawalCredentialsNotForEigenPod
11884                },
11885                {
11886                    fn InputAddressZero(
11887                        data: &[u8],
11888                    ) -> alloy_sol_types::Result<EigenPodErrors> {
11889                        <InputAddressZero as alloy_sol_types::SolError>::abi_decode_raw(
11890                                data,
11891                            )
11892                            .map(EigenPodErrors::InputAddressZero)
11893                    }
11894                    InputAddressZero
11895                },
11896                {
11897                    fn CurrentlyPaused(
11898                        data: &[u8],
11899                    ) -> alloy_sol_types::Result<EigenPodErrors> {
11900                        <CurrentlyPaused as alloy_sol_types::SolError>::abi_decode_raw(
11901                                data,
11902                            )
11903                            .map(EigenPodErrors::CurrentlyPaused)
11904                    }
11905                    CurrentlyPaused
11906                },
11907                {
11908                    fn InvalidPubKeyLength(
11909                        data: &[u8],
11910                    ) -> alloy_sol_types::Result<EigenPodErrors> {
11911                        <InvalidPubKeyLength as alloy_sol_types::SolError>::abi_decode_raw(
11912                                data,
11913                            )
11914                            .map(EigenPodErrors::InvalidPubKeyLength)
11915                    }
11916                    InvalidPubKeyLength
11917                },
11918                {
11919                    fn ValidatorNotSlashedOnBeaconChain(
11920                        data: &[u8],
11921                    ) -> alloy_sol_types::Result<EigenPodErrors> {
11922                        <ValidatorNotSlashedOnBeaconChain as alloy_sol_types::SolError>::abi_decode_raw(
11923                                data,
11924                            )
11925                            .map(EigenPodErrors::ValidatorNotSlashedOnBeaconChain)
11926                    }
11927                    ValidatorNotSlashedOnBeaconChain
11928                },
11929                {
11930                    fn InvalidShortString(
11931                        data: &[u8],
11932                    ) -> alloy_sol_types::Result<EigenPodErrors> {
11933                        <InvalidShortString as alloy_sol_types::SolError>::abi_decode_raw(
11934                                data,
11935                            )
11936                            .map(EigenPodErrors::InvalidShortString)
11937                    }
11938                    InvalidShortString
11939                },
11940                {
11941                    fn CheckpointAlreadyActive(
11942                        data: &[u8],
11943                    ) -> alloy_sol_types::Result<EigenPodErrors> {
11944                        <CheckpointAlreadyActive as alloy_sol_types::SolError>::abi_decode_raw(
11945                                data,
11946                            )
11947                            .map(EigenPodErrors::CheckpointAlreadyActive)
11948                    }
11949                    CheckpointAlreadyActive
11950                },
11951                {
11952                    fn OnlyEigenPodManager(
11953                        data: &[u8],
11954                    ) -> alloy_sol_types::Result<EigenPodErrors> {
11955                        <OnlyEigenPodManager as alloy_sol_types::SolError>::abi_decode_raw(
11956                                data,
11957                            )
11958                            .map(EigenPodErrors::OnlyEigenPodManager)
11959                    }
11960                    OnlyEigenPodManager
11961                },
11962                {
11963                    fn NoBalanceToCheckpoint(
11964                        data: &[u8],
11965                    ) -> alloy_sol_types::Result<EigenPodErrors> {
11966                        <NoBalanceToCheckpoint as alloy_sol_types::SolError>::abi_decode_raw(
11967                                data,
11968                            )
11969                            .map(EigenPodErrors::NoBalanceToCheckpoint)
11970                    }
11971                    NoBalanceToCheckpoint
11972                },
11973                {
11974                    fn ValidatorNotActiveInPod(
11975                        data: &[u8],
11976                    ) -> alloy_sol_types::Result<EigenPodErrors> {
11977                        <ValidatorNotActiveInPod as alloy_sol_types::SolError>::abi_decode_raw(
11978                                data,
11979                            )
11980                            .map(EigenPodErrors::ValidatorNotActiveInPod)
11981                    }
11982                    ValidatorNotActiveInPod
11983                },
11984                {
11985                    fn OnlyEigenPodOwner(
11986                        data: &[u8],
11987                    ) -> alloy_sol_types::Result<EigenPodErrors> {
11988                        <OnlyEigenPodOwner as alloy_sol_types::SolError>::abi_decode_raw(
11989                                data,
11990                            )
11991                            .map(EigenPodErrors::OnlyEigenPodOwner)
11992                    }
11993                    OnlyEigenPodOwner
11994                },
11995                {
11996                    fn TimestampOutOfRange(
11997                        data: &[u8],
11998                    ) -> alloy_sol_types::Result<EigenPodErrors> {
11999                        <TimestampOutOfRange as alloy_sol_types::SolError>::abi_decode_raw(
12000                                data,
12001                            )
12002                            .map(EigenPodErrors::TimestampOutOfRange)
12003                    }
12004                    TimestampOutOfRange
12005                },
12006            ];
12007            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
12008                return Err(
12009                    alloy_sol_types::Error::unknown_selector(
12010                        <Self as alloy_sol_types::SolInterface>::NAME,
12011                        selector,
12012                    ),
12013                );
12014            };
12015            DECODE_SHIMS[idx](data)
12016        }
12017        #[inline]
12018        #[allow(non_snake_case)]
12019        fn abi_decode_raw_validate(
12020            selector: [u8; 4],
12021            data: &[u8],
12022        ) -> alloy_sol_types::Result<Self> {
12023            static DECODE_VALIDATE_SHIMS: &[fn(
12024                &[u8],
12025            ) -> alloy_sol_types::Result<EigenPodErrors>] = &[
12026                {
12027                    fn InvalidProof(
12028                        data: &[u8],
12029                    ) -> alloy_sol_types::Result<EigenPodErrors> {
12030                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw_validate(
12031                                data,
12032                            )
12033                            .map(EigenPodErrors::InvalidProof)
12034                    }
12035                    InvalidProof
12036                },
12037                {
12038                    fn InsufficientWithdrawableBalance(
12039                        data: &[u8],
12040                    ) -> alloy_sol_types::Result<EigenPodErrors> {
12041                        <InsufficientWithdrawableBalance as alloy_sol_types::SolError>::abi_decode_raw_validate(
12042                                data,
12043                            )
12044                            .map(EigenPodErrors::InsufficientWithdrawableBalance)
12045                    }
12046                    InsufficientWithdrawableBalance
12047                },
12048                {
12049                    fn NoActiveCheckpoint(
12050                        data: &[u8],
12051                    ) -> alloy_sol_types::Result<EigenPodErrors> {
12052                        <NoActiveCheckpoint as alloy_sol_types::SolError>::abi_decode_raw_validate(
12053                                data,
12054                            )
12055                            .map(EigenPodErrors::NoActiveCheckpoint)
12056                    }
12057                    NoActiveCheckpoint
12058                },
12059                {
12060                    fn InvalidValidatorFieldsLength(
12061                        data: &[u8],
12062                    ) -> alloy_sol_types::Result<EigenPodErrors> {
12063                        <InvalidValidatorFieldsLength as alloy_sol_types::SolError>::abi_decode_raw_validate(
12064                                data,
12065                            )
12066                            .map(EigenPodErrors::InvalidValidatorFieldsLength)
12067                    }
12068                    InvalidValidatorFieldsLength
12069                },
12070                {
12071                    fn MsgValueNot32ETH(
12072                        data: &[u8],
12073                    ) -> alloy_sol_types::Result<EigenPodErrors> {
12074                        <MsgValueNot32ETH as alloy_sol_types::SolError>::abi_decode_raw_validate(
12075                                data,
12076                            )
12077                            .map(EigenPodErrors::MsgValueNot32ETH)
12078                    }
12079                    MsgValueNot32ETH
12080                },
12081                {
12082                    fn ValidatorIsExitingBeaconChain(
12083                        data: &[u8],
12084                    ) -> alloy_sol_types::Result<EigenPodErrors> {
12085                        <ValidatorIsExitingBeaconChain as alloy_sol_types::SolError>::abi_decode_raw_validate(
12086                                data,
12087                            )
12088                            .map(EigenPodErrors::ValidatorIsExitingBeaconChain)
12089                    }
12090                    ValidatorIsExitingBeaconChain
12091                },
12092                {
12093                    fn StringTooLong(
12094                        data: &[u8],
12095                    ) -> alloy_sol_types::Result<EigenPodErrors> {
12096                        <StringTooLong as alloy_sol_types::SolError>::abi_decode_raw_validate(
12097                                data,
12098                            )
12099                            .map(EigenPodErrors::StringTooLong)
12100                    }
12101                    StringTooLong
12102                },
12103                {
12104                    fn CredentialsAlreadyVerified(
12105                        data: &[u8],
12106                    ) -> alloy_sol_types::Result<EigenPodErrors> {
12107                        <CredentialsAlreadyVerified as alloy_sol_types::SolError>::abi_decode_raw_validate(
12108                                data,
12109                            )
12110                            .map(EigenPodErrors::CredentialsAlreadyVerified)
12111                    }
12112                    CredentialsAlreadyVerified
12113                },
12114                {
12115                    fn BeaconTimestampTooFarInPast(
12116                        data: &[u8],
12117                    ) -> alloy_sol_types::Result<EigenPodErrors> {
12118                        <BeaconTimestampTooFarInPast as alloy_sol_types::SolError>::abi_decode_raw_validate(
12119                                data,
12120                            )
12121                            .map(EigenPodErrors::BeaconTimestampTooFarInPast)
12122                    }
12123                    BeaconTimestampTooFarInPast
12124                },
12125                {
12126                    fn OnlyEigenPodOwnerOrProofSubmitter(
12127                        data: &[u8],
12128                    ) -> alloy_sol_types::Result<EigenPodErrors> {
12129                        <OnlyEigenPodOwnerOrProofSubmitter as alloy_sol_types::SolError>::abi_decode_raw_validate(
12130                                data,
12131                            )
12132                            .map(EigenPodErrors::OnlyEigenPodOwnerOrProofSubmitter)
12133                    }
12134                    OnlyEigenPodOwnerOrProofSubmitter
12135                },
12136                {
12137                    fn InputArrayLengthMismatch(
12138                        data: &[u8],
12139                    ) -> alloy_sol_types::Result<EigenPodErrors> {
12140                        <InputArrayLengthMismatch as alloy_sol_types::SolError>::abi_decode_raw_validate(
12141                                data,
12142                            )
12143                            .map(EigenPodErrors::InputArrayLengthMismatch)
12144                    }
12145                    InputArrayLengthMismatch
12146                },
12147                {
12148                    fn InvalidProofLength(
12149                        data: &[u8],
12150                    ) -> alloy_sol_types::Result<EigenPodErrors> {
12151                        <InvalidProofLength as alloy_sol_types::SolError>::abi_decode_raw_validate(
12152                                data,
12153                            )
12154                            .map(EigenPodErrors::InvalidProofLength)
12155                    }
12156                    InvalidProofLength
12157                },
12158                {
12159                    fn InvalidEIP4788Response(
12160                        data: &[u8],
12161                    ) -> alloy_sol_types::Result<EigenPodErrors> {
12162                        <InvalidEIP4788Response as alloy_sol_types::SolError>::abi_decode_raw_validate(
12163                                data,
12164                            )
12165                            .map(EigenPodErrors::InvalidEIP4788Response)
12166                    }
12167                    InvalidEIP4788Response
12168                },
12169                {
12170                    fn ValidatorInactiveOnBeaconChain(
12171                        data: &[u8],
12172                    ) -> alloy_sol_types::Result<EigenPodErrors> {
12173                        <ValidatorInactiveOnBeaconChain as alloy_sol_types::SolError>::abi_decode_raw_validate(
12174                                data,
12175                            )
12176                            .map(EigenPodErrors::ValidatorInactiveOnBeaconChain)
12177                    }
12178                    ValidatorInactiveOnBeaconChain
12179                },
12180                {
12181                    fn CannotCheckpointTwiceInSingleBlock(
12182                        data: &[u8],
12183                    ) -> alloy_sol_types::Result<EigenPodErrors> {
12184                        <CannotCheckpointTwiceInSingleBlock as alloy_sol_types::SolError>::abi_decode_raw_validate(
12185                                data,
12186                            )
12187                            .map(EigenPodErrors::CannotCheckpointTwiceInSingleBlock)
12188                    }
12189                    CannotCheckpointTwiceInSingleBlock
12190                },
12191                {
12192                    fn WithdrawalCredentialsNotForEigenPod(
12193                        data: &[u8],
12194                    ) -> alloy_sol_types::Result<EigenPodErrors> {
12195                        <WithdrawalCredentialsNotForEigenPod as alloy_sol_types::SolError>::abi_decode_raw_validate(
12196                                data,
12197                            )
12198                            .map(EigenPodErrors::WithdrawalCredentialsNotForEigenPod)
12199                    }
12200                    WithdrawalCredentialsNotForEigenPod
12201                },
12202                {
12203                    fn InputAddressZero(
12204                        data: &[u8],
12205                    ) -> alloy_sol_types::Result<EigenPodErrors> {
12206                        <InputAddressZero as alloy_sol_types::SolError>::abi_decode_raw_validate(
12207                                data,
12208                            )
12209                            .map(EigenPodErrors::InputAddressZero)
12210                    }
12211                    InputAddressZero
12212                },
12213                {
12214                    fn CurrentlyPaused(
12215                        data: &[u8],
12216                    ) -> alloy_sol_types::Result<EigenPodErrors> {
12217                        <CurrentlyPaused as alloy_sol_types::SolError>::abi_decode_raw_validate(
12218                                data,
12219                            )
12220                            .map(EigenPodErrors::CurrentlyPaused)
12221                    }
12222                    CurrentlyPaused
12223                },
12224                {
12225                    fn InvalidPubKeyLength(
12226                        data: &[u8],
12227                    ) -> alloy_sol_types::Result<EigenPodErrors> {
12228                        <InvalidPubKeyLength as alloy_sol_types::SolError>::abi_decode_raw_validate(
12229                                data,
12230                            )
12231                            .map(EigenPodErrors::InvalidPubKeyLength)
12232                    }
12233                    InvalidPubKeyLength
12234                },
12235                {
12236                    fn ValidatorNotSlashedOnBeaconChain(
12237                        data: &[u8],
12238                    ) -> alloy_sol_types::Result<EigenPodErrors> {
12239                        <ValidatorNotSlashedOnBeaconChain as alloy_sol_types::SolError>::abi_decode_raw_validate(
12240                                data,
12241                            )
12242                            .map(EigenPodErrors::ValidatorNotSlashedOnBeaconChain)
12243                    }
12244                    ValidatorNotSlashedOnBeaconChain
12245                },
12246                {
12247                    fn InvalidShortString(
12248                        data: &[u8],
12249                    ) -> alloy_sol_types::Result<EigenPodErrors> {
12250                        <InvalidShortString as alloy_sol_types::SolError>::abi_decode_raw_validate(
12251                                data,
12252                            )
12253                            .map(EigenPodErrors::InvalidShortString)
12254                    }
12255                    InvalidShortString
12256                },
12257                {
12258                    fn CheckpointAlreadyActive(
12259                        data: &[u8],
12260                    ) -> alloy_sol_types::Result<EigenPodErrors> {
12261                        <CheckpointAlreadyActive as alloy_sol_types::SolError>::abi_decode_raw_validate(
12262                                data,
12263                            )
12264                            .map(EigenPodErrors::CheckpointAlreadyActive)
12265                    }
12266                    CheckpointAlreadyActive
12267                },
12268                {
12269                    fn OnlyEigenPodManager(
12270                        data: &[u8],
12271                    ) -> alloy_sol_types::Result<EigenPodErrors> {
12272                        <OnlyEigenPodManager as alloy_sol_types::SolError>::abi_decode_raw_validate(
12273                                data,
12274                            )
12275                            .map(EigenPodErrors::OnlyEigenPodManager)
12276                    }
12277                    OnlyEigenPodManager
12278                },
12279                {
12280                    fn NoBalanceToCheckpoint(
12281                        data: &[u8],
12282                    ) -> alloy_sol_types::Result<EigenPodErrors> {
12283                        <NoBalanceToCheckpoint as alloy_sol_types::SolError>::abi_decode_raw_validate(
12284                                data,
12285                            )
12286                            .map(EigenPodErrors::NoBalanceToCheckpoint)
12287                    }
12288                    NoBalanceToCheckpoint
12289                },
12290                {
12291                    fn ValidatorNotActiveInPod(
12292                        data: &[u8],
12293                    ) -> alloy_sol_types::Result<EigenPodErrors> {
12294                        <ValidatorNotActiveInPod as alloy_sol_types::SolError>::abi_decode_raw_validate(
12295                                data,
12296                            )
12297                            .map(EigenPodErrors::ValidatorNotActiveInPod)
12298                    }
12299                    ValidatorNotActiveInPod
12300                },
12301                {
12302                    fn OnlyEigenPodOwner(
12303                        data: &[u8],
12304                    ) -> alloy_sol_types::Result<EigenPodErrors> {
12305                        <OnlyEigenPodOwner as alloy_sol_types::SolError>::abi_decode_raw_validate(
12306                                data,
12307                            )
12308                            .map(EigenPodErrors::OnlyEigenPodOwner)
12309                    }
12310                    OnlyEigenPodOwner
12311                },
12312                {
12313                    fn TimestampOutOfRange(
12314                        data: &[u8],
12315                    ) -> alloy_sol_types::Result<EigenPodErrors> {
12316                        <TimestampOutOfRange as alloy_sol_types::SolError>::abi_decode_raw_validate(
12317                                data,
12318                            )
12319                            .map(EigenPodErrors::TimestampOutOfRange)
12320                    }
12321                    TimestampOutOfRange
12322                },
12323            ];
12324            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
12325                return Err(
12326                    alloy_sol_types::Error::unknown_selector(
12327                        <Self as alloy_sol_types::SolInterface>::NAME,
12328                        selector,
12329                    ),
12330                );
12331            };
12332            DECODE_VALIDATE_SHIMS[idx](data)
12333        }
12334        #[inline]
12335        fn abi_encoded_size(&self) -> usize {
12336            match self {
12337                Self::BeaconTimestampTooFarInPast(inner) => {
12338                    <BeaconTimestampTooFarInPast as alloy_sol_types::SolError>::abi_encoded_size(
12339                        inner,
12340                    )
12341                }
12342                Self::CannotCheckpointTwiceInSingleBlock(inner) => {
12343                    <CannotCheckpointTwiceInSingleBlock as alloy_sol_types::SolError>::abi_encoded_size(
12344                        inner,
12345                    )
12346                }
12347                Self::CheckpointAlreadyActive(inner) => {
12348                    <CheckpointAlreadyActive as alloy_sol_types::SolError>::abi_encoded_size(
12349                        inner,
12350                    )
12351                }
12352                Self::CredentialsAlreadyVerified(inner) => {
12353                    <CredentialsAlreadyVerified as alloy_sol_types::SolError>::abi_encoded_size(
12354                        inner,
12355                    )
12356                }
12357                Self::CurrentlyPaused(inner) => {
12358                    <CurrentlyPaused as alloy_sol_types::SolError>::abi_encoded_size(
12359                        inner,
12360                    )
12361                }
12362                Self::InputAddressZero(inner) => {
12363                    <InputAddressZero as alloy_sol_types::SolError>::abi_encoded_size(
12364                        inner,
12365                    )
12366                }
12367                Self::InputArrayLengthMismatch(inner) => {
12368                    <InputArrayLengthMismatch as alloy_sol_types::SolError>::abi_encoded_size(
12369                        inner,
12370                    )
12371                }
12372                Self::InsufficientWithdrawableBalance(inner) => {
12373                    <InsufficientWithdrawableBalance as alloy_sol_types::SolError>::abi_encoded_size(
12374                        inner,
12375                    )
12376                }
12377                Self::InvalidEIP4788Response(inner) => {
12378                    <InvalidEIP4788Response as alloy_sol_types::SolError>::abi_encoded_size(
12379                        inner,
12380                    )
12381                }
12382                Self::InvalidProof(inner) => {
12383                    <InvalidProof as alloy_sol_types::SolError>::abi_encoded_size(inner)
12384                }
12385                Self::InvalidProofLength(inner) => {
12386                    <InvalidProofLength as alloy_sol_types::SolError>::abi_encoded_size(
12387                        inner,
12388                    )
12389                }
12390                Self::InvalidPubKeyLength(inner) => {
12391                    <InvalidPubKeyLength as alloy_sol_types::SolError>::abi_encoded_size(
12392                        inner,
12393                    )
12394                }
12395                Self::InvalidShortString(inner) => {
12396                    <InvalidShortString as alloy_sol_types::SolError>::abi_encoded_size(
12397                        inner,
12398                    )
12399                }
12400                Self::InvalidValidatorFieldsLength(inner) => {
12401                    <InvalidValidatorFieldsLength as alloy_sol_types::SolError>::abi_encoded_size(
12402                        inner,
12403                    )
12404                }
12405                Self::MsgValueNot32ETH(inner) => {
12406                    <MsgValueNot32ETH as alloy_sol_types::SolError>::abi_encoded_size(
12407                        inner,
12408                    )
12409                }
12410                Self::NoActiveCheckpoint(inner) => {
12411                    <NoActiveCheckpoint as alloy_sol_types::SolError>::abi_encoded_size(
12412                        inner,
12413                    )
12414                }
12415                Self::NoBalanceToCheckpoint(inner) => {
12416                    <NoBalanceToCheckpoint as alloy_sol_types::SolError>::abi_encoded_size(
12417                        inner,
12418                    )
12419                }
12420                Self::OnlyEigenPodManager(inner) => {
12421                    <OnlyEigenPodManager as alloy_sol_types::SolError>::abi_encoded_size(
12422                        inner,
12423                    )
12424                }
12425                Self::OnlyEigenPodOwner(inner) => {
12426                    <OnlyEigenPodOwner as alloy_sol_types::SolError>::abi_encoded_size(
12427                        inner,
12428                    )
12429                }
12430                Self::OnlyEigenPodOwnerOrProofSubmitter(inner) => {
12431                    <OnlyEigenPodOwnerOrProofSubmitter as alloy_sol_types::SolError>::abi_encoded_size(
12432                        inner,
12433                    )
12434                }
12435                Self::StringTooLong(inner) => {
12436                    <StringTooLong as alloy_sol_types::SolError>::abi_encoded_size(inner)
12437                }
12438                Self::TimestampOutOfRange(inner) => {
12439                    <TimestampOutOfRange as alloy_sol_types::SolError>::abi_encoded_size(
12440                        inner,
12441                    )
12442                }
12443                Self::ValidatorInactiveOnBeaconChain(inner) => {
12444                    <ValidatorInactiveOnBeaconChain as alloy_sol_types::SolError>::abi_encoded_size(
12445                        inner,
12446                    )
12447                }
12448                Self::ValidatorIsExitingBeaconChain(inner) => {
12449                    <ValidatorIsExitingBeaconChain as alloy_sol_types::SolError>::abi_encoded_size(
12450                        inner,
12451                    )
12452                }
12453                Self::ValidatorNotActiveInPod(inner) => {
12454                    <ValidatorNotActiveInPod as alloy_sol_types::SolError>::abi_encoded_size(
12455                        inner,
12456                    )
12457                }
12458                Self::ValidatorNotSlashedOnBeaconChain(inner) => {
12459                    <ValidatorNotSlashedOnBeaconChain as alloy_sol_types::SolError>::abi_encoded_size(
12460                        inner,
12461                    )
12462                }
12463                Self::WithdrawalCredentialsNotForEigenPod(inner) => {
12464                    <WithdrawalCredentialsNotForEigenPod as alloy_sol_types::SolError>::abi_encoded_size(
12465                        inner,
12466                    )
12467                }
12468            }
12469        }
12470        #[inline]
12471        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
12472            match self {
12473                Self::BeaconTimestampTooFarInPast(inner) => {
12474                    <BeaconTimestampTooFarInPast as alloy_sol_types::SolError>::abi_encode_raw(
12475                        inner,
12476                        out,
12477                    )
12478                }
12479                Self::CannotCheckpointTwiceInSingleBlock(inner) => {
12480                    <CannotCheckpointTwiceInSingleBlock as alloy_sol_types::SolError>::abi_encode_raw(
12481                        inner,
12482                        out,
12483                    )
12484                }
12485                Self::CheckpointAlreadyActive(inner) => {
12486                    <CheckpointAlreadyActive as alloy_sol_types::SolError>::abi_encode_raw(
12487                        inner,
12488                        out,
12489                    )
12490                }
12491                Self::CredentialsAlreadyVerified(inner) => {
12492                    <CredentialsAlreadyVerified as alloy_sol_types::SolError>::abi_encode_raw(
12493                        inner,
12494                        out,
12495                    )
12496                }
12497                Self::CurrentlyPaused(inner) => {
12498                    <CurrentlyPaused as alloy_sol_types::SolError>::abi_encode_raw(
12499                        inner,
12500                        out,
12501                    )
12502                }
12503                Self::InputAddressZero(inner) => {
12504                    <InputAddressZero as alloy_sol_types::SolError>::abi_encode_raw(
12505                        inner,
12506                        out,
12507                    )
12508                }
12509                Self::InputArrayLengthMismatch(inner) => {
12510                    <InputArrayLengthMismatch as alloy_sol_types::SolError>::abi_encode_raw(
12511                        inner,
12512                        out,
12513                    )
12514                }
12515                Self::InsufficientWithdrawableBalance(inner) => {
12516                    <InsufficientWithdrawableBalance as alloy_sol_types::SolError>::abi_encode_raw(
12517                        inner,
12518                        out,
12519                    )
12520                }
12521                Self::InvalidEIP4788Response(inner) => {
12522                    <InvalidEIP4788Response as alloy_sol_types::SolError>::abi_encode_raw(
12523                        inner,
12524                        out,
12525                    )
12526                }
12527                Self::InvalidProof(inner) => {
12528                    <InvalidProof as alloy_sol_types::SolError>::abi_encode_raw(
12529                        inner,
12530                        out,
12531                    )
12532                }
12533                Self::InvalidProofLength(inner) => {
12534                    <InvalidProofLength as alloy_sol_types::SolError>::abi_encode_raw(
12535                        inner,
12536                        out,
12537                    )
12538                }
12539                Self::InvalidPubKeyLength(inner) => {
12540                    <InvalidPubKeyLength as alloy_sol_types::SolError>::abi_encode_raw(
12541                        inner,
12542                        out,
12543                    )
12544                }
12545                Self::InvalidShortString(inner) => {
12546                    <InvalidShortString as alloy_sol_types::SolError>::abi_encode_raw(
12547                        inner,
12548                        out,
12549                    )
12550                }
12551                Self::InvalidValidatorFieldsLength(inner) => {
12552                    <InvalidValidatorFieldsLength as alloy_sol_types::SolError>::abi_encode_raw(
12553                        inner,
12554                        out,
12555                    )
12556                }
12557                Self::MsgValueNot32ETH(inner) => {
12558                    <MsgValueNot32ETH as alloy_sol_types::SolError>::abi_encode_raw(
12559                        inner,
12560                        out,
12561                    )
12562                }
12563                Self::NoActiveCheckpoint(inner) => {
12564                    <NoActiveCheckpoint as alloy_sol_types::SolError>::abi_encode_raw(
12565                        inner,
12566                        out,
12567                    )
12568                }
12569                Self::NoBalanceToCheckpoint(inner) => {
12570                    <NoBalanceToCheckpoint as alloy_sol_types::SolError>::abi_encode_raw(
12571                        inner,
12572                        out,
12573                    )
12574                }
12575                Self::OnlyEigenPodManager(inner) => {
12576                    <OnlyEigenPodManager as alloy_sol_types::SolError>::abi_encode_raw(
12577                        inner,
12578                        out,
12579                    )
12580                }
12581                Self::OnlyEigenPodOwner(inner) => {
12582                    <OnlyEigenPodOwner as alloy_sol_types::SolError>::abi_encode_raw(
12583                        inner,
12584                        out,
12585                    )
12586                }
12587                Self::OnlyEigenPodOwnerOrProofSubmitter(inner) => {
12588                    <OnlyEigenPodOwnerOrProofSubmitter as alloy_sol_types::SolError>::abi_encode_raw(
12589                        inner,
12590                        out,
12591                    )
12592                }
12593                Self::StringTooLong(inner) => {
12594                    <StringTooLong as alloy_sol_types::SolError>::abi_encode_raw(
12595                        inner,
12596                        out,
12597                    )
12598                }
12599                Self::TimestampOutOfRange(inner) => {
12600                    <TimestampOutOfRange as alloy_sol_types::SolError>::abi_encode_raw(
12601                        inner,
12602                        out,
12603                    )
12604                }
12605                Self::ValidatorInactiveOnBeaconChain(inner) => {
12606                    <ValidatorInactiveOnBeaconChain as alloy_sol_types::SolError>::abi_encode_raw(
12607                        inner,
12608                        out,
12609                    )
12610                }
12611                Self::ValidatorIsExitingBeaconChain(inner) => {
12612                    <ValidatorIsExitingBeaconChain as alloy_sol_types::SolError>::abi_encode_raw(
12613                        inner,
12614                        out,
12615                    )
12616                }
12617                Self::ValidatorNotActiveInPod(inner) => {
12618                    <ValidatorNotActiveInPod as alloy_sol_types::SolError>::abi_encode_raw(
12619                        inner,
12620                        out,
12621                    )
12622                }
12623                Self::ValidatorNotSlashedOnBeaconChain(inner) => {
12624                    <ValidatorNotSlashedOnBeaconChain as alloy_sol_types::SolError>::abi_encode_raw(
12625                        inner,
12626                        out,
12627                    )
12628                }
12629                Self::WithdrawalCredentialsNotForEigenPod(inner) => {
12630                    <WithdrawalCredentialsNotForEigenPod as alloy_sol_types::SolError>::abi_encode_raw(
12631                        inner,
12632                        out,
12633                    )
12634                }
12635            }
12636        }
12637    }
12638    ///Container for all the [`EigenPod`](self) events.
12639    #[derive(serde::Serialize, serde::Deserialize)]
12640    #[derive(Debug, PartialEq, Eq, Hash)]
12641    pub enum EigenPodEvents {
12642        #[allow(missing_docs)]
12643        CheckpointCreated(CheckpointCreated),
12644        #[allow(missing_docs)]
12645        CheckpointFinalized(CheckpointFinalized),
12646        #[allow(missing_docs)]
12647        EigenPodStaked(EigenPodStaked),
12648        #[allow(missing_docs)]
12649        Initialized(Initialized),
12650        #[allow(missing_docs)]
12651        NonBeaconChainETHReceived(NonBeaconChainETHReceived),
12652        #[allow(missing_docs)]
12653        ProofSubmitterUpdated(ProofSubmitterUpdated),
12654        #[allow(missing_docs)]
12655        RestakedBeaconChainETHWithdrawn(RestakedBeaconChainETHWithdrawn),
12656        #[allow(missing_docs)]
12657        ValidatorBalanceUpdated(ValidatorBalanceUpdated),
12658        #[allow(missing_docs)]
12659        ValidatorCheckpointed(ValidatorCheckpointed),
12660        #[allow(missing_docs)]
12661        ValidatorRestaked(ValidatorRestaked),
12662        #[allow(missing_docs)]
12663        ValidatorWithdrawn(ValidatorWithdrawn),
12664    }
12665    #[automatically_derived]
12666    impl EigenPodEvents {
12667        /// All the selectors of this enum.
12668        ///
12669        /// Note that the selectors might not be in the same order as the variants.
12670        /// No guarantees are made about the order of the selectors.
12671        ///
12672        /// Prefer using `SolInterface` methods instead.
12673        pub const SELECTORS: &'static [[u8; 32usize]] = &[
12674            [
12675                14u8, 95u8, 172u8, 23u8, 91u8, 131u8, 23u8, 124u8, 192u8, 71u8, 56u8,
12676                30u8, 3u8, 13u8, 143u8, 179u8, 180u8, 43u8, 55u8, 189u8, 28u8, 2u8, 94u8,
12677                34u8, 194u8, 128u8, 250u8, 202u8, 214u8, 44u8, 50u8, 223u8,
12678            ],
12679            [
12680                42u8, 2u8, 54u8, 31u8, 250u8, 102u8, 207u8, 44u8, 45u8, 164u8, 104u8,
12681                44u8, 35u8, 85u8, 166u8, 173u8, 202u8, 169u8, 246u8, 194u8, 39u8, 182u8,
12682                230u8, 86u8, 62u8, 104u8, 72u8, 15u8, 149u8, 135u8, 98u8, 106u8,
12683            ],
12684            [
12685                45u8, 8u8, 0u8, 187u8, 195u8, 119u8, 234u8, 84u8, 160u8, 140u8, 93u8,
12686                182u8, 168u8, 122u8, 175u8, 255u8, 94u8, 62u8, 156u8, 143u8, 234u8,
12687                208u8, 237u8, 161u8, 16u8, 228u8, 14u8, 12u8, 16u8, 68u8, 20u8, 73u8,
12688            ],
12689            [
12690                82u8, 84u8, 8u8, 194u8, 1u8, 188u8, 21u8, 118u8, 235u8, 68u8, 17u8,
12691                111u8, 100u8, 120u8, 241u8, 194u8, 165u8, 71u8, 117u8, 177u8, 154u8, 4u8,
12692                59u8, 207u8, 220u8, 112u8, 131u8, 100u8, 247u8, 79u8, 142u8, 68u8,
12693            ],
12694            [
12695                87u8, 87u8, 150u8, 19u8, 59u8, 190u8, 211u8, 55u8, 229u8, 179u8, 154u8,
12696                164u8, 154u8, 48u8, 220u8, 37u8, 86u8, 169u8, 30u8, 12u8, 108u8, 42u8,
12697                244u8, 183u8, 184u8, 134u8, 174u8, 119u8, 235u8, 239u8, 16u8, 118u8,
12698            ],
12699            [
12700                96u8, 104u8, 101u8, 183u8, 147u8, 74u8, 37u8, 212u8, 174u8, 212u8, 63u8,
12701                108u8, 219u8, 66u8, 100u8, 3u8, 53u8, 63u8, 164u8, 179u8, 0u8, 156u8,
12702                77u8, 34u8, 132u8, 7u8, 71u8, 69u8, 129u8, 176u8, 30u8, 35u8,
12703            ],
12704            [
12705                111u8, 221u8, 61u8, 189u8, 177u8, 115u8, 41u8, 150u8, 8u8, 192u8, 170u8,
12706                159u8, 54u8, 135u8, 53u8, 133u8, 124u8, 136u8, 66u8, 181u8, 129u8, 248u8,
12707                56u8, 146u8, 56u8, 191u8, 5u8, 189u8, 4u8, 179u8, 191u8, 73u8,
12708            ],
12709            [
12710                127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8,
12711                19u8, 56u8, 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8,
12712                146u8, 20u8, 96u8, 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8,
12713            ],
12714            [
12715                137u8, 71u8, 253u8, 44u8, 224u8, 126u8, 249u8, 204u8, 48u8, 44u8, 78u8,
12716                143u8, 4u8, 97u8, 1u8, 86u8, 21u8, 217u8, 28u8, 232u8, 81u8, 86u8, 72u8,
12717                57u8, 233u8, 28u8, 200u8, 4u8, 194u8, 244u8, 157u8, 142u8,
12718            ],
12719            [
12720                169u8, 28u8, 89u8, 3u8, 60u8, 52u8, 35u8, 225u8, 139u8, 84u8, 208u8,
12721                172u8, 236u8, 235u8, 180u8, 151u8, 47u8, 158u8, 169u8, 90u8, 237u8,
12722                245u8, 244u8, 202u8, 227u8, 182u8, 119u8, 176u8, 46u8, 175u8, 58u8, 63u8,
12723            ],
12724            [
12725                251u8, 129u8, 41u8, 8u8, 10u8, 25u8, 211u8, 77u8, 206u8, 172u8, 4u8,
12726                186u8, 37u8, 63u8, 197u8, 3u8, 4u8, 220u8, 134u8, 199u8, 41u8, 189u8,
12727                99u8, 205u8, 202u8, 74u8, 150u8, 154u8, 209u8, 154u8, 94u8, 172u8,
12728            ],
12729        ];
12730    }
12731    #[automatically_derived]
12732    impl alloy_sol_types::SolEventInterface for EigenPodEvents {
12733        const NAME: &'static str = "EigenPodEvents";
12734        const COUNT: usize = 11usize;
12735        fn decode_raw_log(
12736            topics: &[alloy_sol_types::Word],
12737            data: &[u8],
12738        ) -> alloy_sol_types::Result<Self> {
12739            match topics.first().copied() {
12740                Some(
12741                    <CheckpointCreated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
12742                ) => {
12743                    <CheckpointCreated as alloy_sol_types::SolEvent>::decode_raw_log(
12744                            topics,
12745                            data,
12746                        )
12747                        .map(Self::CheckpointCreated)
12748                }
12749                Some(
12750                    <CheckpointFinalized as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
12751                ) => {
12752                    <CheckpointFinalized as alloy_sol_types::SolEvent>::decode_raw_log(
12753                            topics,
12754                            data,
12755                        )
12756                        .map(Self::CheckpointFinalized)
12757                }
12758                Some(<EigenPodStaked as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
12759                    <EigenPodStaked as alloy_sol_types::SolEvent>::decode_raw_log(
12760                            topics,
12761                            data,
12762                        )
12763                        .map(Self::EigenPodStaked)
12764                }
12765                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
12766                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(
12767                            topics,
12768                            data,
12769                        )
12770                        .map(Self::Initialized)
12771                }
12772                Some(
12773                    <NonBeaconChainETHReceived as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
12774                ) => {
12775                    <NonBeaconChainETHReceived as alloy_sol_types::SolEvent>::decode_raw_log(
12776                            topics,
12777                            data,
12778                        )
12779                        .map(Self::NonBeaconChainETHReceived)
12780                }
12781                Some(
12782                    <ProofSubmitterUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
12783                ) => {
12784                    <ProofSubmitterUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
12785                            topics,
12786                            data,
12787                        )
12788                        .map(Self::ProofSubmitterUpdated)
12789                }
12790                Some(
12791                    <RestakedBeaconChainETHWithdrawn as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
12792                ) => {
12793                    <RestakedBeaconChainETHWithdrawn as alloy_sol_types::SolEvent>::decode_raw_log(
12794                            topics,
12795                            data,
12796                        )
12797                        .map(Self::RestakedBeaconChainETHWithdrawn)
12798                }
12799                Some(
12800                    <ValidatorBalanceUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
12801                ) => {
12802                    <ValidatorBalanceUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
12803                            topics,
12804                            data,
12805                        )
12806                        .map(Self::ValidatorBalanceUpdated)
12807                }
12808                Some(
12809                    <ValidatorCheckpointed as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
12810                ) => {
12811                    <ValidatorCheckpointed as alloy_sol_types::SolEvent>::decode_raw_log(
12812                            topics,
12813                            data,
12814                        )
12815                        .map(Self::ValidatorCheckpointed)
12816                }
12817                Some(
12818                    <ValidatorRestaked as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
12819                ) => {
12820                    <ValidatorRestaked as alloy_sol_types::SolEvent>::decode_raw_log(
12821                            topics,
12822                            data,
12823                        )
12824                        .map(Self::ValidatorRestaked)
12825                }
12826                Some(
12827                    <ValidatorWithdrawn as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
12828                ) => {
12829                    <ValidatorWithdrawn as alloy_sol_types::SolEvent>::decode_raw_log(
12830                            topics,
12831                            data,
12832                        )
12833                        .map(Self::ValidatorWithdrawn)
12834                }
12835                _ => {
12836                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
12837                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
12838                        log: alloy_sol_types::private::Box::new(
12839                            alloy_sol_types::private::LogData::new_unchecked(
12840                                topics.to_vec(),
12841                                data.to_vec().into(),
12842                            ),
12843                        ),
12844                    })
12845                }
12846            }
12847        }
12848    }
12849    #[automatically_derived]
12850    impl alloy_sol_types::private::IntoLogData for EigenPodEvents {
12851        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
12852            match self {
12853                Self::CheckpointCreated(inner) => {
12854                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12855                }
12856                Self::CheckpointFinalized(inner) => {
12857                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12858                }
12859                Self::EigenPodStaked(inner) => {
12860                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12861                }
12862                Self::Initialized(inner) => {
12863                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12864                }
12865                Self::NonBeaconChainETHReceived(inner) => {
12866                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12867                }
12868                Self::ProofSubmitterUpdated(inner) => {
12869                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12870                }
12871                Self::RestakedBeaconChainETHWithdrawn(inner) => {
12872                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12873                }
12874                Self::ValidatorBalanceUpdated(inner) => {
12875                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12876                }
12877                Self::ValidatorCheckpointed(inner) => {
12878                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12879                }
12880                Self::ValidatorRestaked(inner) => {
12881                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12882                }
12883                Self::ValidatorWithdrawn(inner) => {
12884                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12885                }
12886            }
12887        }
12888        fn into_log_data(self) -> alloy_sol_types::private::LogData {
12889            match self {
12890                Self::CheckpointCreated(inner) => {
12891                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12892                }
12893                Self::CheckpointFinalized(inner) => {
12894                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12895                }
12896                Self::EigenPodStaked(inner) => {
12897                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12898                }
12899                Self::Initialized(inner) => {
12900                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12901                }
12902                Self::NonBeaconChainETHReceived(inner) => {
12903                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12904                }
12905                Self::ProofSubmitterUpdated(inner) => {
12906                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12907                }
12908                Self::RestakedBeaconChainETHWithdrawn(inner) => {
12909                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12910                }
12911                Self::ValidatorBalanceUpdated(inner) => {
12912                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12913                }
12914                Self::ValidatorCheckpointed(inner) => {
12915                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12916                }
12917                Self::ValidatorRestaked(inner) => {
12918                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12919                }
12920                Self::ValidatorWithdrawn(inner) => {
12921                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12922                }
12923            }
12924        }
12925    }
12926    use alloy::contract as alloy_contract;
12927    /**Creates a new wrapper around an on-chain [`EigenPod`](self) contract instance.
12928
12929See the [wrapper's documentation](`EigenPodInstance`) for more details.*/
12930    #[inline]
12931    pub const fn new<
12932        P: alloy_contract::private::Provider<N>,
12933        N: alloy_contract::private::Network,
12934    >(
12935        address: alloy_sol_types::private::Address,
12936        provider: P,
12937    ) -> EigenPodInstance<P, N> {
12938        EigenPodInstance::<P, N>::new(address, provider)
12939    }
12940    /**Deploys this contract using the given `provider` and constructor arguments, if any.
12941
12942Returns a new instance of the contract, if the deployment was successful.
12943
12944For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
12945    #[inline]
12946    pub fn deploy<
12947        P: alloy_contract::private::Provider<N>,
12948        N: alloy_contract::private::Network,
12949    >(
12950        provider: P,
12951        _ethPOS: alloy::sol_types::private::Address,
12952        _eigenPodManager: alloy::sol_types::private::Address,
12953        _GENESIS_TIME: u64,
12954        _version: alloy::sol_types::private::String,
12955    ) -> impl ::core::future::Future<
12956        Output = alloy_contract::Result<EigenPodInstance<P, N>>,
12957    > {
12958        EigenPodInstance::<
12959            P,
12960            N,
12961        >::deploy(provider, _ethPOS, _eigenPodManager, _GENESIS_TIME, _version)
12962    }
12963    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
12964and constructor arguments, if any.
12965
12966This is a simple wrapper around creating a `RawCallBuilder` with the data set to
12967the bytecode concatenated with the constructor's ABI-encoded arguments.*/
12968    #[inline]
12969    pub fn deploy_builder<
12970        P: alloy_contract::private::Provider<N>,
12971        N: alloy_contract::private::Network,
12972    >(
12973        provider: P,
12974        _ethPOS: alloy::sol_types::private::Address,
12975        _eigenPodManager: alloy::sol_types::private::Address,
12976        _GENESIS_TIME: u64,
12977        _version: alloy::sol_types::private::String,
12978    ) -> alloy_contract::RawCallBuilder<P, N> {
12979        EigenPodInstance::<
12980            P,
12981            N,
12982        >::deploy_builder(provider, _ethPOS, _eigenPodManager, _GENESIS_TIME, _version)
12983    }
12984    /**A [`EigenPod`](self) instance.
12985
12986Contains type-safe methods for interacting with an on-chain instance of the
12987[`EigenPod`](self) contract located at a given `address`, using a given
12988provider `P`.
12989
12990If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
12991documentation on how to provide it), the `deploy` and `deploy_builder` methods can
12992be used to deploy a new instance of the contract.
12993
12994See the [module-level documentation](self) for all the available methods.*/
12995    #[derive(Clone)]
12996    pub struct EigenPodInstance<P, N = alloy_contract::private::Ethereum> {
12997        address: alloy_sol_types::private::Address,
12998        provider: P,
12999        _network: ::core::marker::PhantomData<N>,
13000    }
13001    #[automatically_derived]
13002    impl<P, N> ::core::fmt::Debug for EigenPodInstance<P, N> {
13003        #[inline]
13004        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
13005            f.debug_tuple("EigenPodInstance").field(&self.address).finish()
13006        }
13007    }
13008    /// Instantiation and getters/setters.
13009    #[automatically_derived]
13010    impl<
13011        P: alloy_contract::private::Provider<N>,
13012        N: alloy_contract::private::Network,
13013    > EigenPodInstance<P, N> {
13014        /**Creates a new wrapper around an on-chain [`EigenPod`](self) contract instance.
13015
13016See the [wrapper's documentation](`EigenPodInstance`) for more details.*/
13017        #[inline]
13018        pub const fn new(
13019            address: alloy_sol_types::private::Address,
13020            provider: P,
13021        ) -> Self {
13022            Self {
13023                address,
13024                provider,
13025                _network: ::core::marker::PhantomData,
13026            }
13027        }
13028        /**Deploys this contract using the given `provider` and constructor arguments, if any.
13029
13030Returns a new instance of the contract, if the deployment was successful.
13031
13032For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
13033        #[inline]
13034        pub async fn deploy(
13035            provider: P,
13036            _ethPOS: alloy::sol_types::private::Address,
13037            _eigenPodManager: alloy::sol_types::private::Address,
13038            _GENESIS_TIME: u64,
13039            _version: alloy::sol_types::private::String,
13040        ) -> alloy_contract::Result<EigenPodInstance<P, N>> {
13041            let call_builder = Self::deploy_builder(
13042                provider,
13043                _ethPOS,
13044                _eigenPodManager,
13045                _GENESIS_TIME,
13046                _version,
13047            );
13048            let contract_address = call_builder.deploy().await?;
13049            Ok(Self::new(contract_address, call_builder.provider))
13050        }
13051        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
13052and constructor arguments, if any.
13053
13054This is a simple wrapper around creating a `RawCallBuilder` with the data set to
13055the bytecode concatenated with the constructor's ABI-encoded arguments.*/
13056        #[inline]
13057        pub fn deploy_builder(
13058            provider: P,
13059            _ethPOS: alloy::sol_types::private::Address,
13060            _eigenPodManager: alloy::sol_types::private::Address,
13061            _GENESIS_TIME: u64,
13062            _version: alloy::sol_types::private::String,
13063        ) -> alloy_contract::RawCallBuilder<P, N> {
13064            alloy_contract::RawCallBuilder::new_raw_deploy(
13065                provider,
13066                [
13067                    &BYTECODE[..],
13068                    &alloy_sol_types::SolConstructor::abi_encode(
13069                        &constructorCall {
13070                            _ethPOS,
13071                            _eigenPodManager,
13072                            _GENESIS_TIME,
13073                            _version,
13074                        },
13075                    )[..],
13076                ]
13077                    .concat()
13078                    .into(),
13079            )
13080        }
13081        /// Returns a reference to the address.
13082        #[inline]
13083        pub const fn address(&self) -> &alloy_sol_types::private::Address {
13084            &self.address
13085        }
13086        /// Sets the address.
13087        #[inline]
13088        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
13089            self.address = address;
13090        }
13091        /// Sets the address and returns `self`.
13092        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
13093            self.set_address(address);
13094            self
13095        }
13096        /// Returns a reference to the provider.
13097        #[inline]
13098        pub const fn provider(&self) -> &P {
13099            &self.provider
13100        }
13101    }
13102    impl<P: ::core::clone::Clone, N> EigenPodInstance<&P, N> {
13103        /// Clones the provider and returns a new instance with the cloned provider.
13104        #[inline]
13105        pub fn with_cloned_provider(self) -> EigenPodInstance<P, N> {
13106            EigenPodInstance {
13107                address: self.address,
13108                provider: ::core::clone::Clone::clone(&self.provider),
13109                _network: ::core::marker::PhantomData,
13110            }
13111        }
13112    }
13113    /// Function calls.
13114    #[automatically_derived]
13115    impl<
13116        P: alloy_contract::private::Provider<N>,
13117        N: alloy_contract::private::Network,
13118    > EigenPodInstance<P, N> {
13119        /// Creates a new call builder using this contract instance's provider and address.
13120        ///
13121        /// Note that the call can be any function call, not just those defined in this
13122        /// contract. Prefer using the other methods for building type-safe contract calls.
13123        pub fn call_builder<C: alloy_sol_types::SolCall>(
13124            &self,
13125            call: &C,
13126        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
13127            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
13128        }
13129        ///Creates a new call builder for the [`GENESIS_TIME`] function.
13130        pub fn GENESIS_TIME(
13131            &self,
13132        ) -> alloy_contract::SolCallBuilder<&P, GENESIS_TIMECall, N> {
13133            self.call_builder(&GENESIS_TIMECall)
13134        }
13135        ///Creates a new call builder for the [`activeValidatorCount`] function.
13136        pub fn activeValidatorCount(
13137            &self,
13138        ) -> alloy_contract::SolCallBuilder<&P, activeValidatorCountCall, N> {
13139            self.call_builder(&activeValidatorCountCall)
13140        }
13141        ///Creates a new call builder for the [`checkpointBalanceExitedGwei`] function.
13142        pub fn checkpointBalanceExitedGwei(
13143            &self,
13144            _0: u64,
13145        ) -> alloy_contract::SolCallBuilder<&P, checkpointBalanceExitedGweiCall, N> {
13146            self.call_builder(&checkpointBalanceExitedGweiCall(_0))
13147        }
13148        ///Creates a new call builder for the [`currentCheckpoint`] function.
13149        pub fn currentCheckpoint(
13150            &self,
13151        ) -> alloy_contract::SolCallBuilder<&P, currentCheckpointCall, N> {
13152            self.call_builder(&currentCheckpointCall)
13153        }
13154        ///Creates a new call builder for the [`currentCheckpointTimestamp`] function.
13155        pub fn currentCheckpointTimestamp(
13156            &self,
13157        ) -> alloy_contract::SolCallBuilder<&P, currentCheckpointTimestampCall, N> {
13158            self.call_builder(&currentCheckpointTimestampCall)
13159        }
13160        ///Creates a new call builder for the [`eigenPodManager`] function.
13161        pub fn eigenPodManager(
13162            &self,
13163        ) -> alloy_contract::SolCallBuilder<&P, eigenPodManagerCall, N> {
13164            self.call_builder(&eigenPodManagerCall)
13165        }
13166        ///Creates a new call builder for the [`ethPOS`] function.
13167        pub fn ethPOS(&self) -> alloy_contract::SolCallBuilder<&P, ethPOSCall, N> {
13168            self.call_builder(&ethPOSCall)
13169        }
13170        ///Creates a new call builder for the [`getParentBlockRoot`] function.
13171        pub fn getParentBlockRoot(
13172            &self,
13173            timestamp: u64,
13174        ) -> alloy_contract::SolCallBuilder<&P, getParentBlockRootCall, N> {
13175            self.call_builder(
13176                &getParentBlockRootCall {
13177                    timestamp,
13178                },
13179            )
13180        }
13181        ///Creates a new call builder for the [`initialize`] function.
13182        pub fn initialize(
13183            &self,
13184            _podOwner: alloy::sol_types::private::Address,
13185        ) -> alloy_contract::SolCallBuilder<&P, initializeCall, N> {
13186            self.call_builder(&initializeCall { _podOwner })
13187        }
13188        ///Creates a new call builder for the [`lastCheckpointTimestamp`] function.
13189        pub fn lastCheckpointTimestamp(
13190            &self,
13191        ) -> alloy_contract::SolCallBuilder<&P, lastCheckpointTimestampCall, N> {
13192            self.call_builder(&lastCheckpointTimestampCall)
13193        }
13194        ///Creates a new call builder for the [`podOwner`] function.
13195        pub fn podOwner(&self) -> alloy_contract::SolCallBuilder<&P, podOwnerCall, N> {
13196            self.call_builder(&podOwnerCall)
13197        }
13198        ///Creates a new call builder for the [`proofSubmitter`] function.
13199        pub fn proofSubmitter(
13200            &self,
13201        ) -> alloy_contract::SolCallBuilder<&P, proofSubmitterCall, N> {
13202            self.call_builder(&proofSubmitterCall)
13203        }
13204        ///Creates a new call builder for the [`recoverTokens`] function.
13205        pub fn recoverTokens(
13206            &self,
13207            tokenList: alloy::sol_types::private::Vec<
13208                alloy::sol_types::private::Address,
13209            >,
13210            amountsToWithdraw: alloy::sol_types::private::Vec<
13211                alloy::sol_types::private::primitives::aliases::U256,
13212            >,
13213            recipient: alloy::sol_types::private::Address,
13214        ) -> alloy_contract::SolCallBuilder<&P, recoverTokensCall, N> {
13215            self.call_builder(
13216                &recoverTokensCall {
13217                    tokenList,
13218                    amountsToWithdraw,
13219                    recipient,
13220                },
13221            )
13222        }
13223        ///Creates a new call builder for the [`setProofSubmitter`] function.
13224        pub fn setProofSubmitter(
13225            &self,
13226            newProofSubmitter: alloy::sol_types::private::Address,
13227        ) -> alloy_contract::SolCallBuilder<&P, setProofSubmitterCall, N> {
13228            self.call_builder(
13229                &setProofSubmitterCall {
13230                    newProofSubmitter,
13231                },
13232            )
13233        }
13234        ///Creates a new call builder for the [`stake`] function.
13235        pub fn stake(
13236            &self,
13237            pubkey: alloy::sol_types::private::Bytes,
13238            signature: alloy::sol_types::private::Bytes,
13239            depositDataRoot: alloy::sol_types::private::FixedBytes<32>,
13240        ) -> alloy_contract::SolCallBuilder<&P, stakeCall, N> {
13241            self.call_builder(
13242                &stakeCall {
13243                    pubkey,
13244                    signature,
13245                    depositDataRoot,
13246                },
13247            )
13248        }
13249        ///Creates a new call builder for the [`startCheckpoint`] function.
13250        pub fn startCheckpoint(
13251            &self,
13252            revertIfNoBalance: bool,
13253        ) -> alloy_contract::SolCallBuilder<&P, startCheckpointCall, N> {
13254            self.call_builder(
13255                &startCheckpointCall {
13256                    revertIfNoBalance,
13257                },
13258            )
13259        }
13260        ///Creates a new call builder for the [`validatorPubkeyHashToInfo`] function.
13261        pub fn validatorPubkeyHashToInfo(
13262            &self,
13263            validatorPubkeyHash: alloy::sol_types::private::FixedBytes<32>,
13264        ) -> alloy_contract::SolCallBuilder<&P, validatorPubkeyHashToInfoCall, N> {
13265            self.call_builder(
13266                &validatorPubkeyHashToInfoCall {
13267                    validatorPubkeyHash,
13268                },
13269            )
13270        }
13271        ///Creates a new call builder for the [`validatorPubkeyToInfo`] function.
13272        pub fn validatorPubkeyToInfo(
13273            &self,
13274            validatorPubkey: alloy::sol_types::private::Bytes,
13275        ) -> alloy_contract::SolCallBuilder<&P, validatorPubkeyToInfoCall, N> {
13276            self.call_builder(
13277                &validatorPubkeyToInfoCall {
13278                    validatorPubkey,
13279                },
13280            )
13281        }
13282        ///Creates a new call builder for the [`validatorStatus_0`] function.
13283        pub fn validatorStatus_0(
13284            &self,
13285            validatorPubkey: alloy::sol_types::private::Bytes,
13286        ) -> alloy_contract::SolCallBuilder<&P, validatorStatus_0Call, N> {
13287            self.call_builder(
13288                &validatorStatus_0Call {
13289                    validatorPubkey,
13290                },
13291            )
13292        }
13293        ///Creates a new call builder for the [`validatorStatus_1`] function.
13294        pub fn validatorStatus_1(
13295            &self,
13296            pubkeyHash: alloy::sol_types::private::FixedBytes<32>,
13297        ) -> alloy_contract::SolCallBuilder<&P, validatorStatus_1Call, N> {
13298            self.call_builder(
13299                &validatorStatus_1Call {
13300                    pubkeyHash,
13301                },
13302            )
13303        }
13304        ///Creates a new call builder for the [`verifyCheckpointProofs`] function.
13305        pub fn verifyCheckpointProofs(
13306            &self,
13307            balanceContainerProof: <BeaconChainProofs::BalanceContainerProof as alloy::sol_types::SolType>::RustType,
13308            proofs: alloy::sol_types::private::Vec<
13309                <BeaconChainProofs::BalanceProof as alloy::sol_types::SolType>::RustType,
13310            >,
13311        ) -> alloy_contract::SolCallBuilder<&P, verifyCheckpointProofsCall, N> {
13312            self.call_builder(
13313                &verifyCheckpointProofsCall {
13314                    balanceContainerProof,
13315                    proofs,
13316                },
13317            )
13318        }
13319        ///Creates a new call builder for the [`verifyStaleBalance`] function.
13320        pub fn verifyStaleBalance(
13321            &self,
13322            beaconTimestamp: u64,
13323            stateRootProof: <BeaconChainProofs::StateRootProof as alloy::sol_types::SolType>::RustType,
13324            proof: <BeaconChainProofs::ValidatorProof as alloy::sol_types::SolType>::RustType,
13325        ) -> alloy_contract::SolCallBuilder<&P, verifyStaleBalanceCall, N> {
13326            self.call_builder(
13327                &verifyStaleBalanceCall {
13328                    beaconTimestamp,
13329                    stateRootProof,
13330                    proof,
13331                },
13332            )
13333        }
13334        ///Creates a new call builder for the [`verifyWithdrawalCredentials`] function.
13335        pub fn verifyWithdrawalCredentials(
13336            &self,
13337            beaconTimestamp: u64,
13338            stateRootProof: <BeaconChainProofs::StateRootProof as alloy::sol_types::SolType>::RustType,
13339            validatorIndices: alloy::sol_types::private::Vec<
13340                alloy::sol_types::private::primitives::aliases::U40,
13341            >,
13342            validatorFieldsProofs: alloy::sol_types::private::Vec<
13343                alloy::sol_types::private::Bytes,
13344            >,
13345            validatorFields: alloy::sol_types::private::Vec<
13346                alloy::sol_types::private::Vec<alloy::sol_types::private::FixedBytes<32>>,
13347            >,
13348        ) -> alloy_contract::SolCallBuilder<&P, verifyWithdrawalCredentialsCall, N> {
13349            self.call_builder(
13350                &verifyWithdrawalCredentialsCall {
13351                    beaconTimestamp,
13352                    stateRootProof,
13353                    validatorIndices,
13354                    validatorFieldsProofs,
13355                    validatorFields,
13356                },
13357            )
13358        }
13359        ///Creates a new call builder for the [`version`] function.
13360        pub fn version(&self) -> alloy_contract::SolCallBuilder<&P, versionCall, N> {
13361            self.call_builder(&versionCall)
13362        }
13363        ///Creates a new call builder for the [`withdrawRestakedBeaconChainETH`] function.
13364        pub fn withdrawRestakedBeaconChainETH(
13365            &self,
13366            recipient: alloy::sol_types::private::Address,
13367            amountWei: alloy::sol_types::private::primitives::aliases::U256,
13368        ) -> alloy_contract::SolCallBuilder<&P, withdrawRestakedBeaconChainETHCall, N> {
13369            self.call_builder(
13370                &withdrawRestakedBeaconChainETHCall {
13371                    recipient,
13372                    amountWei,
13373                },
13374            )
13375        }
13376        ///Creates a new call builder for the [`withdrawableRestakedExecutionLayerGwei`] function.
13377        pub fn withdrawableRestakedExecutionLayerGwei(
13378            &self,
13379        ) -> alloy_contract::SolCallBuilder<
13380            &P,
13381            withdrawableRestakedExecutionLayerGweiCall,
13382            N,
13383        > {
13384            self.call_builder(&withdrawableRestakedExecutionLayerGweiCall)
13385        }
13386    }
13387    /// Event filters.
13388    #[automatically_derived]
13389    impl<
13390        P: alloy_contract::private::Provider<N>,
13391        N: alloy_contract::private::Network,
13392    > EigenPodInstance<P, N> {
13393        /// Creates a new event filter using this contract instance's provider and address.
13394        ///
13395        /// Note that the type can be any event, not just those defined in this contract.
13396        /// Prefer using the other methods for building type-safe event filters.
13397        pub fn event_filter<E: alloy_sol_types::SolEvent>(
13398            &self,
13399        ) -> alloy_contract::Event<&P, E, N> {
13400            alloy_contract::Event::new_sol(&self.provider, &self.address)
13401        }
13402        ///Creates a new event filter for the [`CheckpointCreated`] event.
13403        pub fn CheckpointCreated_filter(
13404            &self,
13405        ) -> alloy_contract::Event<&P, CheckpointCreated, N> {
13406            self.event_filter::<CheckpointCreated>()
13407        }
13408        ///Creates a new event filter for the [`CheckpointFinalized`] event.
13409        pub fn CheckpointFinalized_filter(
13410            &self,
13411        ) -> alloy_contract::Event<&P, CheckpointFinalized, N> {
13412            self.event_filter::<CheckpointFinalized>()
13413        }
13414        ///Creates a new event filter for the [`EigenPodStaked`] event.
13415        pub fn EigenPodStaked_filter(
13416            &self,
13417        ) -> alloy_contract::Event<&P, EigenPodStaked, N> {
13418            self.event_filter::<EigenPodStaked>()
13419        }
13420        ///Creates a new event filter for the [`Initialized`] event.
13421        pub fn Initialized_filter(&self) -> alloy_contract::Event<&P, Initialized, N> {
13422            self.event_filter::<Initialized>()
13423        }
13424        ///Creates a new event filter for the [`NonBeaconChainETHReceived`] event.
13425        pub fn NonBeaconChainETHReceived_filter(
13426            &self,
13427        ) -> alloy_contract::Event<&P, NonBeaconChainETHReceived, N> {
13428            self.event_filter::<NonBeaconChainETHReceived>()
13429        }
13430        ///Creates a new event filter for the [`ProofSubmitterUpdated`] event.
13431        pub fn ProofSubmitterUpdated_filter(
13432            &self,
13433        ) -> alloy_contract::Event<&P, ProofSubmitterUpdated, N> {
13434            self.event_filter::<ProofSubmitterUpdated>()
13435        }
13436        ///Creates a new event filter for the [`RestakedBeaconChainETHWithdrawn`] event.
13437        pub fn RestakedBeaconChainETHWithdrawn_filter(
13438            &self,
13439        ) -> alloy_contract::Event<&P, RestakedBeaconChainETHWithdrawn, N> {
13440            self.event_filter::<RestakedBeaconChainETHWithdrawn>()
13441        }
13442        ///Creates a new event filter for the [`ValidatorBalanceUpdated`] event.
13443        pub fn ValidatorBalanceUpdated_filter(
13444            &self,
13445        ) -> alloy_contract::Event<&P, ValidatorBalanceUpdated, N> {
13446            self.event_filter::<ValidatorBalanceUpdated>()
13447        }
13448        ///Creates a new event filter for the [`ValidatorCheckpointed`] event.
13449        pub fn ValidatorCheckpointed_filter(
13450            &self,
13451        ) -> alloy_contract::Event<&P, ValidatorCheckpointed, N> {
13452            self.event_filter::<ValidatorCheckpointed>()
13453        }
13454        ///Creates a new event filter for the [`ValidatorRestaked`] event.
13455        pub fn ValidatorRestaked_filter(
13456            &self,
13457        ) -> alloy_contract::Event<&P, ValidatorRestaked, N> {
13458            self.event_filter::<ValidatorRestaked>()
13459        }
13460        ///Creates a new event filter for the [`ValidatorWithdrawn`] event.
13461        pub fn ValidatorWithdrawn_filter(
13462            &self,
13463        ) -> alloy_contract::Event<&P, ValidatorWithdrawn, N> {
13464            self.event_filter::<ValidatorWithdrawn>()
13465        }
13466    }
13467}