Skip to main content

eigen_utils/rewardsv2/core/
delegation_manager.rs

1///Module containing a contract's types and functions.
2/**
3
4```solidity
5library IDelegationManager {
6    struct OperatorDetails { address __deprecated_earningsReceiver; address delegationApprover; uint32 stakerOptOutWindowBlocks; }
7    struct QueuedWithdrawalParams { address[] strategies; uint256[] shares; address withdrawer; }
8    struct Withdrawal { address staker; address delegatedTo; address withdrawer; uint256 nonce; uint32 startBlock; address[] strategies; uint256[] shares; }
9}
10```*/
11#[allow(
12    non_camel_case_types,
13    non_snake_case,
14    clippy::pub_underscore_fields,
15    clippy::style,
16    clippy::empty_structs_with_brackets
17)]
18pub mod IDelegationManager {
19    use super::*;
20    use alloy::sol_types as alloy_sol_types;
21    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
22    /**```solidity
23    struct OperatorDetails { address __deprecated_earningsReceiver; address delegationApprover; uint32 stakerOptOutWindowBlocks; }
24    ```*/
25    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
26    #[derive(Clone)]
27    pub struct OperatorDetails {
28        #[allow(missing_docs)]
29        pub __deprecated_earningsReceiver: alloy::sol_types::private::Address,
30        #[allow(missing_docs)]
31        pub delegationApprover: alloy::sol_types::private::Address,
32        #[allow(missing_docs)]
33        pub stakerOptOutWindowBlocks: u32,
34    }
35    #[allow(
36        non_camel_case_types,
37        non_snake_case,
38        clippy::pub_underscore_fields,
39        clippy::style
40    )]
41    const _: () = {
42        use alloy::sol_types as alloy_sol_types;
43        #[doc(hidden)]
44        type UnderlyingSolTuple<'a> = (
45            alloy::sol_types::sol_data::Address,
46            alloy::sol_types::sol_data::Address,
47            alloy::sol_types::sol_data::Uint<32>,
48        );
49        #[doc(hidden)]
50        type UnderlyingRustTuple<'a> = (
51            alloy::sol_types::private::Address,
52            alloy::sol_types::private::Address,
53            u32,
54        );
55        #[cfg(test)]
56        #[allow(dead_code, unreachable_patterns)]
57        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
58            match _t {
59                alloy_sol_types::private::AssertTypeEq::<
60                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
61                >(_) => {}
62            }
63        }
64        #[automatically_derived]
65        #[doc(hidden)]
66        impl ::core::convert::From<OperatorDetails> for UnderlyingRustTuple<'_> {
67            fn from(value: OperatorDetails) -> Self {
68                (
69                    value.__deprecated_earningsReceiver,
70                    value.delegationApprover,
71                    value.stakerOptOutWindowBlocks,
72                )
73            }
74        }
75        #[automatically_derived]
76        #[doc(hidden)]
77        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OperatorDetails {
78            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
79                Self {
80                    __deprecated_earningsReceiver: tuple.0,
81                    delegationApprover: tuple.1,
82                    stakerOptOutWindowBlocks: tuple.2,
83                }
84            }
85        }
86        #[automatically_derived]
87        impl alloy_sol_types::SolValue for OperatorDetails {
88            type SolType = Self;
89        }
90        #[automatically_derived]
91        impl alloy_sol_types::private::SolTypeValue<Self> for OperatorDetails {
92            #[inline]
93            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
94                (
95                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
96                        &self.__deprecated_earningsReceiver,
97                    ),
98                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
99                        &self.delegationApprover,
100                    ),
101                    <alloy::sol_types::sol_data::Uint<32> as alloy_sol_types::SolType>::tokenize(
102                        &self.stakerOptOutWindowBlocks,
103                    ),
104                )
105            }
106            #[inline]
107            fn stv_abi_encoded_size(&self) -> usize {
108                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
109                    return size;
110                }
111                let tuple =
112                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
113                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
114            }
115            #[inline]
116            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
117                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
118            }
119            #[inline]
120            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
121                let tuple =
122                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
123                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
124                    &tuple, out,
125                )
126            }
127            #[inline]
128            fn stv_abi_packed_encoded_size(&self) -> usize {
129                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
130                    return size;
131                }
132                let tuple =
133                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
134                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
135                    &tuple,
136                )
137            }
138        }
139        #[automatically_derived]
140        impl alloy_sol_types::SolType for OperatorDetails {
141            type RustType = Self;
142            type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
143            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
144            const ENCODED_SIZE: Option<usize> =
145                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
146            const PACKED_ENCODED_SIZE: Option<usize> =
147                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
148            #[inline]
149            fn valid_token(token: &Self::Token<'_>) -> bool {
150                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
151            }
152            #[inline]
153            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
154                let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
155                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
156            }
157        }
158        #[automatically_derived]
159        impl alloy_sol_types::SolStruct for OperatorDetails {
160            const NAME: &'static str = "OperatorDetails";
161            #[inline]
162            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
163                alloy_sol_types::private::Cow::Borrowed(
164                    "OperatorDetails(address __deprecated_earningsReceiver,address delegationApprover,uint32 stakerOptOutWindowBlocks)",
165                )
166            }
167            #[inline]
168            fn eip712_components(
169            ) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
170            {
171                alloy_sol_types::private::Vec::new()
172            }
173            #[inline]
174            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
175                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
176            }
177            #[inline]
178            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
179                [
180                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::eip712_data_word(
181                            &self.__deprecated_earningsReceiver,
182                        )
183                        .0,
184                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::eip712_data_word(
185                            &self.delegationApprover,
186                        )
187                        .0,
188                    <alloy::sol_types::sol_data::Uint<
189                        32,
190                    > as alloy_sol_types::SolType>::eip712_data_word(
191                            &self.stakerOptOutWindowBlocks,
192                        )
193                        .0,
194                ]
195                    .concat()
196            }
197        }
198        #[automatically_derived]
199        impl alloy_sol_types::EventTopic for OperatorDetails {
200            #[inline]
201            fn topic_preimage_length(rust: &Self::RustType) -> usize {
202                0usize
203                    + <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::topic_preimage_length(
204                        &rust.__deprecated_earningsReceiver,
205                    )
206                    + <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::topic_preimage_length(
207                        &rust.delegationApprover,
208                    )
209                    + <alloy::sol_types::sol_data::Uint<
210                        32,
211                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
212                        &rust.stakerOptOutWindowBlocks,
213                    )
214            }
215            #[inline]
216            fn encode_topic_preimage(
217                rust: &Self::RustType,
218                out: &mut alloy_sol_types::private::Vec<u8>,
219            ) {
220                out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
221                <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic_preimage(
222                    &rust.__deprecated_earningsReceiver,
223                    out,
224                );
225                <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic_preimage(
226                    &rust.delegationApprover,
227                    out,
228                );
229                <alloy::sol_types::sol_data::Uint<
230                    32,
231                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
232                    &rust.stakerOptOutWindowBlocks,
233                    out,
234                );
235            }
236            #[inline]
237            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
238                let mut out = alloy_sol_types::private::Vec::new();
239                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
240                alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
241            }
242        }
243    };
244    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
245    /**```solidity
246    struct QueuedWithdrawalParams { address[] strategies; uint256[] shares; address withdrawer; }
247    ```*/
248    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
249    #[derive(Clone)]
250    pub struct QueuedWithdrawalParams {
251        #[allow(missing_docs)]
252        pub strategies: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
253        #[allow(missing_docs)]
254        pub shares:
255            alloy::sol_types::private::Vec<alloy::sol_types::private::primitives::aliases::U256>,
256        #[allow(missing_docs)]
257        pub withdrawer: alloy::sol_types::private::Address,
258    }
259    #[allow(
260        non_camel_case_types,
261        non_snake_case,
262        clippy::pub_underscore_fields,
263        clippy::style
264    )]
265    const _: () = {
266        use alloy::sol_types as alloy_sol_types;
267        #[doc(hidden)]
268        type UnderlyingSolTuple<'a> = (
269            alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
270            alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
271            alloy::sol_types::sol_data::Address,
272        );
273        #[doc(hidden)]
274        type UnderlyingRustTuple<'a> = (
275            alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
276            alloy::sol_types::private::Vec<alloy::sol_types::private::primitives::aliases::U256>,
277            alloy::sol_types::private::Address,
278        );
279        #[cfg(test)]
280        #[allow(dead_code, unreachable_patterns)]
281        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
282            match _t {
283                alloy_sol_types::private::AssertTypeEq::<
284                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
285                >(_) => {}
286            }
287        }
288        #[automatically_derived]
289        #[doc(hidden)]
290        impl ::core::convert::From<QueuedWithdrawalParams> for UnderlyingRustTuple<'_> {
291            fn from(value: QueuedWithdrawalParams) -> Self {
292                (value.strategies, value.shares, value.withdrawer)
293            }
294        }
295        #[automatically_derived]
296        #[doc(hidden)]
297        impl ::core::convert::From<UnderlyingRustTuple<'_>> for QueuedWithdrawalParams {
298            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
299                Self {
300                    strategies: tuple.0,
301                    shares: tuple.1,
302                    withdrawer: tuple.2,
303                }
304            }
305        }
306        #[automatically_derived]
307        impl alloy_sol_types::SolValue for QueuedWithdrawalParams {
308            type SolType = Self;
309        }
310        #[automatically_derived]
311        impl alloy_sol_types::private::SolTypeValue<Self> for QueuedWithdrawalParams {
312            #[inline]
313            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
314                (
315                    <alloy::sol_types::sol_data::Array<
316                        alloy::sol_types::sol_data::Address,
317                    > as alloy_sol_types::SolType>::tokenize(&self.strategies),
318                    <alloy::sol_types::sol_data::Array<
319                        alloy::sol_types::sol_data::Uint<256>,
320                    > as alloy_sol_types::SolType>::tokenize(&self.shares),
321                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
322                        &self.withdrawer,
323                    ),
324                )
325            }
326            #[inline]
327            fn stv_abi_encoded_size(&self) -> usize {
328                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
329                    return size;
330                }
331                let tuple =
332                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
333                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
334            }
335            #[inline]
336            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
337                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
338            }
339            #[inline]
340            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
341                let tuple =
342                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
343                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
344                    &tuple, out,
345                )
346            }
347            #[inline]
348            fn stv_abi_packed_encoded_size(&self) -> usize {
349                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
350                    return size;
351                }
352                let tuple =
353                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
354                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
355                    &tuple,
356                )
357            }
358        }
359        #[automatically_derived]
360        impl alloy_sol_types::SolType for QueuedWithdrawalParams {
361            type RustType = Self;
362            type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
363            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
364            const ENCODED_SIZE: Option<usize> =
365                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
366            const PACKED_ENCODED_SIZE: Option<usize> =
367                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
368            #[inline]
369            fn valid_token(token: &Self::Token<'_>) -> bool {
370                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
371            }
372            #[inline]
373            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
374                let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
375                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
376            }
377        }
378        #[automatically_derived]
379        impl alloy_sol_types::SolStruct for QueuedWithdrawalParams {
380            const NAME: &'static str = "QueuedWithdrawalParams";
381            #[inline]
382            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
383                alloy_sol_types::private::Cow::Borrowed(
384                    "QueuedWithdrawalParams(address[] strategies,uint256[] shares,address withdrawer)",
385                )
386            }
387            #[inline]
388            fn eip712_components(
389            ) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
390            {
391                alloy_sol_types::private::Vec::new()
392            }
393            #[inline]
394            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
395                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
396            }
397            #[inline]
398            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
399                [
400                    <alloy::sol_types::sol_data::Array<
401                        alloy::sol_types::sol_data::Address,
402                    > as alloy_sol_types::SolType>::eip712_data_word(&self.strategies)
403                        .0,
404                    <alloy::sol_types::sol_data::Array<
405                        alloy::sol_types::sol_data::Uint<256>,
406                    > as alloy_sol_types::SolType>::eip712_data_word(&self.shares)
407                        .0,
408                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::eip712_data_word(
409                            &self.withdrawer,
410                        )
411                        .0,
412                ]
413                    .concat()
414            }
415        }
416        #[automatically_derived]
417        impl alloy_sol_types::EventTopic for QueuedWithdrawalParams {
418            #[inline]
419            fn topic_preimage_length(rust: &Self::RustType) -> usize {
420                0usize
421                    + <alloy::sol_types::sol_data::Array<
422                        alloy::sol_types::sol_data::Address,
423                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
424                        &rust.strategies,
425                    )
426                    + <alloy::sol_types::sol_data::Array<
427                        alloy::sol_types::sol_data::Uint<256>,
428                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
429                        &rust.shares,
430                    )
431                    + <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::topic_preimage_length(
432                        &rust.withdrawer,
433                    )
434            }
435            #[inline]
436            fn encode_topic_preimage(
437                rust: &Self::RustType,
438                out: &mut alloy_sol_types::private::Vec<u8>,
439            ) {
440                out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
441                <alloy::sol_types::sol_data::Array<
442                    alloy::sol_types::sol_data::Address,
443                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
444                    &rust.strategies,
445                    out,
446                );
447                <alloy::sol_types::sol_data::Array<
448                    alloy::sol_types::sol_data::Uint<256>,
449                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
450                    &rust.shares,
451                    out,
452                );
453                <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic_preimage(
454                    &rust.withdrawer,
455                    out,
456                );
457            }
458            #[inline]
459            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
460                let mut out = alloy_sol_types::private::Vec::new();
461                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
462                alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
463            }
464        }
465    };
466    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
467    /**```solidity
468    struct Withdrawal { address staker; address delegatedTo; address withdrawer; uint256 nonce; uint32 startBlock; address[] strategies; uint256[] shares; }
469    ```*/
470    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
471    #[derive(Clone)]
472    pub struct Withdrawal {
473        #[allow(missing_docs)]
474        pub staker: alloy::sol_types::private::Address,
475        #[allow(missing_docs)]
476        pub delegatedTo: alloy::sol_types::private::Address,
477        #[allow(missing_docs)]
478        pub withdrawer: alloy::sol_types::private::Address,
479        #[allow(missing_docs)]
480        pub nonce: alloy::sol_types::private::primitives::aliases::U256,
481        #[allow(missing_docs)]
482        pub startBlock: u32,
483        #[allow(missing_docs)]
484        pub strategies: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
485        #[allow(missing_docs)]
486        pub shares:
487            alloy::sol_types::private::Vec<alloy::sol_types::private::primitives::aliases::U256>,
488    }
489    #[allow(
490        non_camel_case_types,
491        non_snake_case,
492        clippy::pub_underscore_fields,
493        clippy::style
494    )]
495    const _: () = {
496        use alloy::sol_types as alloy_sol_types;
497        #[doc(hidden)]
498        type UnderlyingSolTuple<'a> = (
499            alloy::sol_types::sol_data::Address,
500            alloy::sol_types::sol_data::Address,
501            alloy::sol_types::sol_data::Address,
502            alloy::sol_types::sol_data::Uint<256>,
503            alloy::sol_types::sol_data::Uint<32>,
504            alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
505            alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
506        );
507        #[doc(hidden)]
508        type UnderlyingRustTuple<'a> = (
509            alloy::sol_types::private::Address,
510            alloy::sol_types::private::Address,
511            alloy::sol_types::private::Address,
512            alloy::sol_types::private::primitives::aliases::U256,
513            u32,
514            alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
515            alloy::sol_types::private::Vec<alloy::sol_types::private::primitives::aliases::U256>,
516        );
517        #[cfg(test)]
518        #[allow(dead_code, unreachable_patterns)]
519        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
520            match _t {
521                alloy_sol_types::private::AssertTypeEq::<
522                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
523                >(_) => {}
524            }
525        }
526        #[automatically_derived]
527        #[doc(hidden)]
528        impl ::core::convert::From<Withdrawal> for UnderlyingRustTuple<'_> {
529            fn from(value: Withdrawal) -> Self {
530                (
531                    value.staker,
532                    value.delegatedTo,
533                    value.withdrawer,
534                    value.nonce,
535                    value.startBlock,
536                    value.strategies,
537                    value.shares,
538                )
539            }
540        }
541        #[automatically_derived]
542        #[doc(hidden)]
543        impl ::core::convert::From<UnderlyingRustTuple<'_>> for Withdrawal {
544            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
545                Self {
546                    staker: tuple.0,
547                    delegatedTo: tuple.1,
548                    withdrawer: tuple.2,
549                    nonce: tuple.3,
550                    startBlock: tuple.4,
551                    strategies: tuple.5,
552                    shares: tuple.6,
553                }
554            }
555        }
556        #[automatically_derived]
557        impl alloy_sol_types::SolValue for Withdrawal {
558            type SolType = Self;
559        }
560        #[automatically_derived]
561        impl alloy_sol_types::private::SolTypeValue<Self> for Withdrawal {
562            #[inline]
563            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
564                (
565                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
566                        &self.staker,
567                    ),
568                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
569                        &self.delegatedTo,
570                    ),
571                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
572                        &self.withdrawer,
573                    ),
574                    <alloy::sol_types::sol_data::Uint<
575                        256,
576                    > as alloy_sol_types::SolType>::tokenize(&self.nonce),
577                    <alloy::sol_types::sol_data::Uint<
578                        32,
579                    > as alloy_sol_types::SolType>::tokenize(&self.startBlock),
580                    <alloy::sol_types::sol_data::Array<
581                        alloy::sol_types::sol_data::Address,
582                    > as alloy_sol_types::SolType>::tokenize(&self.strategies),
583                    <alloy::sol_types::sol_data::Array<
584                        alloy::sol_types::sol_data::Uint<256>,
585                    > as alloy_sol_types::SolType>::tokenize(&self.shares),
586                )
587            }
588            #[inline]
589            fn stv_abi_encoded_size(&self) -> usize {
590                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
591                    return size;
592                }
593                let tuple =
594                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
595                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
596            }
597            #[inline]
598            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
599                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
600            }
601            #[inline]
602            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
603                let tuple =
604                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
605                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
606                    &tuple, out,
607                )
608            }
609            #[inline]
610            fn stv_abi_packed_encoded_size(&self) -> usize {
611                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
612                    return size;
613                }
614                let tuple =
615                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
616                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
617                    &tuple,
618                )
619            }
620        }
621        #[automatically_derived]
622        impl alloy_sol_types::SolType for Withdrawal {
623            type RustType = Self;
624            type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
625            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
626            const ENCODED_SIZE: Option<usize> =
627                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
628            const PACKED_ENCODED_SIZE: Option<usize> =
629                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
630            #[inline]
631            fn valid_token(token: &Self::Token<'_>) -> bool {
632                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
633            }
634            #[inline]
635            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
636                let tuple = <UnderlyingSolTuple<'_> 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 Withdrawal {
642            const NAME: &'static str = "Withdrawal";
643            #[inline]
644            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
645                alloy_sol_types::private::Cow::Borrowed(
646                    "Withdrawal(address staker,address delegatedTo,address withdrawer,uint256 nonce,uint32 startBlock,address[] strategies,uint256[] shares)",
647                )
648            }
649            #[inline]
650            fn eip712_components(
651            ) -> alloy_sol_types::private::Vec<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::Address as alloy_sol_types::SolType>::eip712_data_word(
663                            &self.staker,
664                        )
665                        .0,
666                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::eip712_data_word(
667                            &self.delegatedTo,
668                        )
669                        .0,
670                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::eip712_data_word(
671                            &self.withdrawer,
672                        )
673                        .0,
674                    <alloy::sol_types::sol_data::Uint<
675                        256,
676                    > as alloy_sol_types::SolType>::eip712_data_word(&self.nonce)
677                        .0,
678                    <alloy::sol_types::sol_data::Uint<
679                        32,
680                    > as alloy_sol_types::SolType>::eip712_data_word(&self.startBlock)
681                        .0,
682                    <alloy::sol_types::sol_data::Array<
683                        alloy::sol_types::sol_data::Address,
684                    > as alloy_sol_types::SolType>::eip712_data_word(&self.strategies)
685                        .0,
686                    <alloy::sol_types::sol_data::Array<
687                        alloy::sol_types::sol_data::Uint<256>,
688                    > as alloy_sol_types::SolType>::eip712_data_word(&self.shares)
689                        .0,
690                ]
691                    .concat()
692            }
693        }
694        #[automatically_derived]
695        impl alloy_sol_types::EventTopic for Withdrawal {
696            #[inline]
697            fn topic_preimage_length(rust: &Self::RustType) -> usize {
698                0usize
699                    + <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::topic_preimage_length(
700                        &rust.staker,
701                    )
702                    + <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::topic_preimage_length(
703                        &rust.delegatedTo,
704                    )
705                    + <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::topic_preimage_length(
706                        &rust.withdrawer,
707                    )
708                    + <alloy::sol_types::sol_data::Uint<
709                        256,
710                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.nonce)
711                    + <alloy::sol_types::sol_data::Uint<
712                        32,
713                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
714                        &rust.startBlock,
715                    )
716                    + <alloy::sol_types::sol_data::Array<
717                        alloy::sol_types::sol_data::Address,
718                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
719                        &rust.strategies,
720                    )
721                    + <alloy::sol_types::sol_data::Array<
722                        alloy::sol_types::sol_data::Uint<256>,
723                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
724                        &rust.shares,
725                    )
726            }
727            #[inline]
728            fn encode_topic_preimage(
729                rust: &Self::RustType,
730                out: &mut alloy_sol_types::private::Vec<u8>,
731            ) {
732                out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
733                <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic_preimage(
734                    &rust.staker,
735                    out,
736                );
737                <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic_preimage(
738                    &rust.delegatedTo,
739                    out,
740                );
741                <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic_preimage(
742                    &rust.withdrawer,
743                    out,
744                );
745                <alloy::sol_types::sol_data::Uint<
746                    256,
747                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
748                    &rust.nonce,
749                    out,
750                );
751                <alloy::sol_types::sol_data::Uint<
752                    32,
753                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
754                    &rust.startBlock,
755                    out,
756                );
757                <alloy::sol_types::sol_data::Array<
758                    alloy::sol_types::sol_data::Address,
759                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
760                    &rust.strategies,
761                    out,
762                );
763                <alloy::sol_types::sol_data::Array<
764                    alloy::sol_types::sol_data::Uint<256>,
765                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
766                    &rust.shares,
767                    out,
768                );
769            }
770            #[inline]
771            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
772                let mut out = alloy_sol_types::private::Vec::new();
773                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
774                alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
775            }
776        }
777    };
778    use alloy::contract as alloy_contract;
779    /**Creates a new wrapper around an on-chain [`IDelegationManager`](self) contract instance.
780
781    See the [wrapper's documentation](`IDelegationManagerInstance`) for more details.*/
782    #[inline]
783    pub const fn new<
784        P: alloy_contract::private::Provider<N>,
785        N: alloy_contract::private::Network,
786    >(
787        address: alloy_sol_types::private::Address,
788        provider: P,
789    ) -> IDelegationManagerInstance<P, N> {
790        IDelegationManagerInstance::<P, N>::new(address, provider)
791    }
792    /**A [`IDelegationManager`](self) instance.
793
794    Contains type-safe methods for interacting with an on-chain instance of the
795    [`IDelegationManager`](self) contract located at a given `address`, using a given
796    provider `P`.
797
798    If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
799    documentation on how to provide it), the `deploy` and `deploy_builder` methods can
800    be used to deploy a new instance of the contract.
801
802    See the [module-level documentation](self) for all the available methods.*/
803    #[derive(Clone)]
804    pub struct IDelegationManagerInstance<P, N = alloy_contract::private::Ethereum> {
805        address: alloy_sol_types::private::Address,
806        provider: P,
807        _network: ::core::marker::PhantomData<N>,
808    }
809    #[automatically_derived]
810    impl<P, N> ::core::fmt::Debug for IDelegationManagerInstance<P, N> {
811        #[inline]
812        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
813            f.debug_tuple("IDelegationManagerInstance")
814                .field(&self.address)
815                .finish()
816        }
817    }
818    /// Instantiation and getters/setters.
819    #[automatically_derived]
820    impl<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>
821        IDelegationManagerInstance<P, N>
822    {
823        /**Creates a new wrapper around an on-chain [`IDelegationManager`](self) contract instance.
824
825        See the [wrapper's documentation](`IDelegationManagerInstance`) for more details.*/
826        #[inline]
827        pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self {
828            Self {
829                address,
830                provider,
831                _network: ::core::marker::PhantomData,
832            }
833        }
834        /// Returns a reference to the address.
835        #[inline]
836        pub const fn address(&self) -> &alloy_sol_types::private::Address {
837            &self.address
838        }
839        /// Sets the address.
840        #[inline]
841        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
842            self.address = address;
843        }
844        /// Sets the address and returns `self`.
845        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
846            self.set_address(address);
847            self
848        }
849        /// Returns a reference to the provider.
850        #[inline]
851        pub const fn provider(&self) -> &P {
852            &self.provider
853        }
854    }
855    impl<P: ::core::clone::Clone, N> IDelegationManagerInstance<&P, N> {
856        /// Clones the provider and returns a new instance with the cloned provider.
857        #[inline]
858        pub fn with_cloned_provider(self) -> IDelegationManagerInstance<P, N> {
859            IDelegationManagerInstance {
860                address: self.address,
861                provider: ::core::clone::Clone::clone(&self.provider),
862                _network: ::core::marker::PhantomData,
863            }
864        }
865    }
866    /// Function calls.
867    #[automatically_derived]
868    impl<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>
869        IDelegationManagerInstance<P, N>
870    {
871        /// Creates a new call builder using this contract instance's provider and address.
872        ///
873        /// Note that the call can be any function call, not just those defined in this
874        /// contract. Prefer using the other methods for building type-safe contract calls.
875        pub fn call_builder<C: alloy_sol_types::SolCall>(
876            &self,
877            call: &C,
878        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
879            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
880        }
881    }
882    /// Event filters.
883    #[automatically_derived]
884    impl<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>
885        IDelegationManagerInstance<P, N>
886    {
887        /// Creates a new event filter using this contract instance's provider and address.
888        ///
889        /// Note that the type can be any event, not just those defined in this contract.
890        /// Prefer using the other methods for building type-safe event filters.
891        pub fn event_filter<E: alloy_sol_types::SolEvent>(
892            &self,
893        ) -> alloy_contract::Event<&P, E, N> {
894            alloy_contract::Event::new_sol(&self.provider, &self.address)
895        }
896    }
897}
898///Module containing a contract's types and functions.
899/**
900
901```solidity
902library ISignatureUtils {
903    struct SignatureWithExpiry { bytes signature; uint256 expiry; }
904}
905```*/
906#[allow(
907    non_camel_case_types,
908    non_snake_case,
909    clippy::pub_underscore_fields,
910    clippy::style,
911    clippy::empty_structs_with_brackets
912)]
913pub mod ISignatureUtils {
914    use super::*;
915    use alloy::sol_types as alloy_sol_types;
916    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
917    /**```solidity
918    struct SignatureWithExpiry { bytes signature; uint256 expiry; }
919    ```*/
920    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
921    #[derive(Clone)]
922    pub struct SignatureWithExpiry {
923        #[allow(missing_docs)]
924        pub signature: alloy::sol_types::private::Bytes,
925        #[allow(missing_docs)]
926        pub expiry: alloy::sol_types::private::primitives::aliases::U256,
927    }
928    #[allow(
929        non_camel_case_types,
930        non_snake_case,
931        clippy::pub_underscore_fields,
932        clippy::style
933    )]
934    const _: () = {
935        use alloy::sol_types as alloy_sol_types;
936        #[doc(hidden)]
937        type UnderlyingSolTuple<'a> = (
938            alloy::sol_types::sol_data::Bytes,
939            alloy::sol_types::sol_data::Uint<256>,
940        );
941        #[doc(hidden)]
942        type UnderlyingRustTuple<'a> = (
943            alloy::sol_types::private::Bytes,
944            alloy::sol_types::private::primitives::aliases::U256,
945        );
946        #[cfg(test)]
947        #[allow(dead_code, unreachable_patterns)]
948        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
949            match _t {
950                alloy_sol_types::private::AssertTypeEq::<
951                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
952                >(_) => {}
953            }
954        }
955        #[automatically_derived]
956        #[doc(hidden)]
957        impl ::core::convert::From<SignatureWithExpiry> for UnderlyingRustTuple<'_> {
958            fn from(value: SignatureWithExpiry) -> Self {
959                (value.signature, value.expiry)
960            }
961        }
962        #[automatically_derived]
963        #[doc(hidden)]
964        impl ::core::convert::From<UnderlyingRustTuple<'_>> for SignatureWithExpiry {
965            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
966                Self {
967                    signature: tuple.0,
968                    expiry: tuple.1,
969                }
970            }
971        }
972        #[automatically_derived]
973        impl alloy_sol_types::SolValue for SignatureWithExpiry {
974            type SolType = Self;
975        }
976        #[automatically_derived]
977        impl alloy_sol_types::private::SolTypeValue<Self> for SignatureWithExpiry {
978            #[inline]
979            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
980                (
981                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
982                        &self.signature,
983                    ),
984                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
985                        &self.expiry,
986                    ),
987                )
988            }
989            #[inline]
990            fn stv_abi_encoded_size(&self) -> usize {
991                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
992                    return size;
993                }
994                let tuple =
995                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
996                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
997            }
998            #[inline]
999            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1000                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
1001            }
1002            #[inline]
1003            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
1004                let tuple =
1005                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
1006                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
1007                    &tuple, out,
1008                )
1009            }
1010            #[inline]
1011            fn stv_abi_packed_encoded_size(&self) -> usize {
1012                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
1013                    return size;
1014                }
1015                let tuple =
1016                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
1017                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
1018                    &tuple,
1019                )
1020            }
1021        }
1022        #[automatically_derived]
1023        impl alloy_sol_types::SolType for SignatureWithExpiry {
1024            type RustType = Self;
1025            type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
1026            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
1027            const ENCODED_SIZE: Option<usize> =
1028                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
1029            const PACKED_ENCODED_SIZE: Option<usize> =
1030                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1031            #[inline]
1032            fn valid_token(token: &Self::Token<'_>) -> bool {
1033                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
1034            }
1035            #[inline]
1036            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1037                let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
1038                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
1039            }
1040        }
1041        #[automatically_derived]
1042        impl alloy_sol_types::SolStruct for SignatureWithExpiry {
1043            const NAME: &'static str = "SignatureWithExpiry";
1044            #[inline]
1045            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
1046                alloy_sol_types::private::Cow::Borrowed(
1047                    "SignatureWithExpiry(bytes signature,uint256 expiry)",
1048                )
1049            }
1050            #[inline]
1051            fn eip712_components(
1052            ) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
1053            {
1054                alloy_sol_types::private::Vec::new()
1055            }
1056            #[inline]
1057            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
1058                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
1059            }
1060            #[inline]
1061            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1062                [
1063                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::eip712_data_word(
1064                            &self.signature,
1065                        )
1066                        .0,
1067                    <alloy::sol_types::sol_data::Uint<
1068                        256,
1069                    > as alloy_sol_types::SolType>::eip712_data_word(&self.expiry)
1070                        .0,
1071                ]
1072                    .concat()
1073            }
1074        }
1075        #[automatically_derived]
1076        impl alloy_sol_types::EventTopic for SignatureWithExpiry {
1077            #[inline]
1078            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1079                0usize
1080                    + <alloy::sol_types::sol_data::Bytes as alloy_sol_types::EventTopic>::topic_preimage_length(
1081                        &rust.signature,
1082                    )
1083                    + <alloy::sol_types::sol_data::Uint<
1084                        256,
1085                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1086                        &rust.expiry,
1087                    )
1088            }
1089            #[inline]
1090            fn encode_topic_preimage(
1091                rust: &Self::RustType,
1092                out: &mut alloy_sol_types::private::Vec<u8>,
1093            ) {
1094                out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
1095                <alloy::sol_types::sol_data::Bytes as alloy_sol_types::EventTopic>::encode_topic_preimage(
1096                    &rust.signature,
1097                    out,
1098                );
1099                <alloy::sol_types::sol_data::Uint<
1100                    256,
1101                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1102                    &rust.expiry,
1103                    out,
1104                );
1105            }
1106            #[inline]
1107            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
1108                let mut out = alloy_sol_types::private::Vec::new();
1109                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
1110                alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
1111            }
1112        }
1113    };
1114    use alloy::contract as alloy_contract;
1115    /**Creates a new wrapper around an on-chain [`ISignatureUtils`](self) contract instance.
1116
1117    See the [wrapper's documentation](`ISignatureUtilsInstance`) for more details.*/
1118    #[inline]
1119    pub const fn new<
1120        P: alloy_contract::private::Provider<N>,
1121        N: alloy_contract::private::Network,
1122    >(
1123        address: alloy_sol_types::private::Address,
1124        provider: P,
1125    ) -> ISignatureUtilsInstance<P, N> {
1126        ISignatureUtilsInstance::<P, N>::new(address, provider)
1127    }
1128    /**A [`ISignatureUtils`](self) instance.
1129
1130    Contains type-safe methods for interacting with an on-chain instance of the
1131    [`ISignatureUtils`](self) contract located at a given `address`, using a given
1132    provider `P`.
1133
1134    If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
1135    documentation on how to provide it), the `deploy` and `deploy_builder` methods can
1136    be used to deploy a new instance of the contract.
1137
1138    See the [module-level documentation](self) for all the available methods.*/
1139    #[derive(Clone)]
1140    pub struct ISignatureUtilsInstance<P, N = alloy_contract::private::Ethereum> {
1141        address: alloy_sol_types::private::Address,
1142        provider: P,
1143        _network: ::core::marker::PhantomData<N>,
1144    }
1145    #[automatically_derived]
1146    impl<P, N> ::core::fmt::Debug for ISignatureUtilsInstance<P, N> {
1147        #[inline]
1148        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
1149            f.debug_tuple("ISignatureUtilsInstance")
1150                .field(&self.address)
1151                .finish()
1152        }
1153    }
1154    /// Instantiation and getters/setters.
1155    #[automatically_derived]
1156    impl<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>
1157        ISignatureUtilsInstance<P, N>
1158    {
1159        /**Creates a new wrapper around an on-chain [`ISignatureUtils`](self) contract instance.
1160
1161        See the [wrapper's documentation](`ISignatureUtilsInstance`) for more details.*/
1162        #[inline]
1163        pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self {
1164            Self {
1165                address,
1166                provider,
1167                _network: ::core::marker::PhantomData,
1168            }
1169        }
1170        /// Returns a reference to the address.
1171        #[inline]
1172        pub const fn address(&self) -> &alloy_sol_types::private::Address {
1173            &self.address
1174        }
1175        /// Sets the address.
1176        #[inline]
1177        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
1178            self.address = address;
1179        }
1180        /// Sets the address and returns `self`.
1181        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
1182            self.set_address(address);
1183            self
1184        }
1185        /// Returns a reference to the provider.
1186        #[inline]
1187        pub const fn provider(&self) -> &P {
1188            &self.provider
1189        }
1190    }
1191    impl<P: ::core::clone::Clone, N> ISignatureUtilsInstance<&P, N> {
1192        /// Clones the provider and returns a new instance with the cloned provider.
1193        #[inline]
1194        pub fn with_cloned_provider(self) -> ISignatureUtilsInstance<P, N> {
1195            ISignatureUtilsInstance {
1196                address: self.address,
1197                provider: ::core::clone::Clone::clone(&self.provider),
1198                _network: ::core::marker::PhantomData,
1199            }
1200        }
1201    }
1202    /// Function calls.
1203    #[automatically_derived]
1204    impl<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>
1205        ISignatureUtilsInstance<P, N>
1206    {
1207        /// Creates a new call builder using this contract instance's provider and address.
1208        ///
1209        /// Note that the call can be any function call, not just those defined in this
1210        /// contract. Prefer using the other methods for building type-safe contract calls.
1211        pub fn call_builder<C: alloy_sol_types::SolCall>(
1212            &self,
1213            call: &C,
1214        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
1215            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
1216        }
1217    }
1218    /// Event filters.
1219    #[automatically_derived]
1220    impl<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>
1221        ISignatureUtilsInstance<P, N>
1222    {
1223        /// Creates a new event filter using this contract instance's provider and address.
1224        ///
1225        /// Note that the type can be any event, not just those defined in this contract.
1226        /// Prefer using the other methods for building type-safe event filters.
1227        pub fn event_filter<E: alloy_sol_types::SolEvent>(
1228            &self,
1229        ) -> alloy_contract::Event<&P, E, N> {
1230            alloy_contract::Event::new_sol(&self.provider, &self.address)
1231        }
1232    }
1233}
1234/**
1235
1236Generated by the following Solidity interface...
1237```solidity
1238library IDelegationManager {
1239    struct OperatorDetails {
1240        address __deprecated_earningsReceiver;
1241        address delegationApprover;
1242        uint32 stakerOptOutWindowBlocks;
1243    }
1244    struct QueuedWithdrawalParams {
1245        address[] strategies;
1246        uint256[] shares;
1247        address withdrawer;
1248    }
1249    struct Withdrawal {
1250        address staker;
1251        address delegatedTo;
1252        address withdrawer;
1253        uint256 nonce;
1254        uint32 startBlock;
1255        address[] strategies;
1256        uint256[] shares;
1257    }
1258}
1259
1260library ISignatureUtils {
1261    struct SignatureWithExpiry {
1262        bytes signature;
1263        uint256 expiry;
1264    }
1265}
1266
1267interface DelegationManager {
1268    event Initialized(uint8 version);
1269    event MinWithdrawalDelayBlocksSet(uint256 previousValue, uint256 newValue);
1270    event OperatorDetailsModified(address indexed operator, IDelegationManager.OperatorDetails newOperatorDetails);
1271    event OperatorMetadataURIUpdated(address indexed operator, string metadataURI);
1272    event OperatorRegistered(address indexed operator, IDelegationManager.OperatorDetails operatorDetails);
1273    event OperatorSharesDecreased(address indexed operator, address staker, address strategy, uint256 shares);
1274    event OperatorSharesIncreased(address indexed operator, address staker, address strategy, uint256 shares);
1275    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
1276    event Paused(address indexed account, uint256 newPausedStatus);
1277    event PauserRegistrySet(address pauserRegistry, address newPauserRegistry);
1278    event StakerDelegated(address indexed staker, address indexed operator);
1279    event StakerForceUndelegated(address indexed staker, address indexed operator);
1280    event StakerUndelegated(address indexed staker, address indexed operator);
1281    event StrategyWithdrawalDelayBlocksSet(address strategy, uint256 previousValue, uint256 newValue);
1282    event Unpaused(address indexed account, uint256 newPausedStatus);
1283    event WithdrawalCompleted(bytes32 withdrawalRoot);
1284    event WithdrawalQueued(bytes32 withdrawalRoot, IDelegationManager.Withdrawal withdrawal);
1285
1286    constructor(address _strategyManager, address _slasher, address _eigenPodManager);
1287
1288    function DELEGATION_APPROVAL_TYPEHASH() external view returns (bytes32);
1289    function DOMAIN_TYPEHASH() external view returns (bytes32);
1290    function MAX_STAKER_OPT_OUT_WINDOW_BLOCKS() external view returns (uint256);
1291    function MAX_WITHDRAWAL_DELAY_BLOCKS() external view returns (uint256);
1292    function STAKER_DELEGATION_TYPEHASH() external view returns (bytes32);
1293    function beaconChainETHStrategy() external view returns (address);
1294    function calculateCurrentStakerDelegationDigestHash(address staker, address operator, uint256 expiry) external view returns (bytes32);
1295    function calculateDelegationApprovalDigestHash(address staker, address operator, address _delegationApprover, bytes32 approverSalt, uint256 expiry) external view returns (bytes32);
1296    function calculateStakerDelegationDigestHash(address staker, uint256 _stakerNonce, address operator, uint256 expiry) external view returns (bytes32);
1297    function calculateWithdrawalRoot(IDelegationManager.Withdrawal memory withdrawal) external pure returns (bytes32);
1298    function completeQueuedWithdrawal(IDelegationManager.Withdrawal memory withdrawal, address[] memory tokens, uint256 middlewareTimesIndex, bool receiveAsTokens) external;
1299    function completeQueuedWithdrawals(IDelegationManager.Withdrawal[] memory withdrawals, address[][] memory tokens, uint256[] memory middlewareTimesIndexes, bool[] memory receiveAsTokens) external;
1300    function cumulativeWithdrawalsQueued(address) external view returns (uint256);
1301    function decreaseDelegatedShares(address staker, address strategy, uint256 shares) external;
1302    function delegateTo(address operator, ISignatureUtils.SignatureWithExpiry memory approverSignatureAndExpiry, bytes32 approverSalt) external;
1303    function delegateToBySignature(address staker, address operator, ISignatureUtils.SignatureWithExpiry memory stakerSignatureAndExpiry, ISignatureUtils.SignatureWithExpiry memory approverSignatureAndExpiry, bytes32 approverSalt) external;
1304    function delegatedTo(address) external view returns (address);
1305    function delegationApprover(address operator) external view returns (address);
1306    function delegationApproverSaltIsSpent(address, bytes32) external view returns (bool);
1307    function domainSeparator() external view returns (bytes32);
1308    function eigenPodManager() external view returns (address);
1309    function getDelegatableShares(address staker) external view returns (address[] memory, uint256[] memory);
1310    function getOperatorShares(address operator, address[] memory strategies) external view returns (uint256[] memory);
1311    function getWithdrawalDelay(address[] memory strategies) external view returns (uint256);
1312    function increaseDelegatedShares(address staker, address strategy, uint256 shares) external;
1313    function initialize(address initialOwner, address _pauserRegistry, uint256 initialPausedStatus, uint256 _minWithdrawalDelayBlocks, address[] memory _strategies, uint256[] memory _withdrawalDelayBlocks) external;
1314    function isDelegated(address staker) external view returns (bool);
1315    function isOperator(address operator) external view returns (bool);
1316    function minWithdrawalDelayBlocks() external view returns (uint256);
1317    function modifyOperatorDetails(IDelegationManager.OperatorDetails memory newOperatorDetails) external;
1318    function operatorDetails(address operator) external view returns (IDelegationManager.OperatorDetails memory);
1319    function operatorShares(address, address) external view returns (uint256);
1320    function owner() external view returns (address);
1321    function pause(uint256 newPausedStatus) external;
1322    function pauseAll() external;
1323    function paused(uint8 index) external view returns (bool);
1324    function paused() external view returns (uint256);
1325    function pauserRegistry() external view returns (address);
1326    function pendingWithdrawals(bytes32) external view returns (bool);
1327    function queueWithdrawals(IDelegationManager.QueuedWithdrawalParams[] memory queuedWithdrawalParams) external returns (bytes32[] memory);
1328    function registerAsOperator(IDelegationManager.OperatorDetails memory registeringOperatorDetails, string memory metadataURI) external;
1329    function renounceOwnership() external;
1330    function setMinWithdrawalDelayBlocks(uint256 newMinWithdrawalDelayBlocks) external;
1331    function setPauserRegistry(address newPauserRegistry) external;
1332    function setStrategyWithdrawalDelayBlocks(address[] memory strategies, uint256[] memory withdrawalDelayBlocks) external;
1333    function slasher() external view returns (address);
1334    function stakerNonce(address) external view returns (uint256);
1335    function stakerOptOutWindowBlocks(address operator) external view returns (uint256);
1336    function strategyManager() external view returns (address);
1337    function strategyWithdrawalDelayBlocks(address) external view returns (uint256);
1338    function transferOwnership(address newOwner) external;
1339    function undelegate(address staker) external returns (bytes32[] memory withdrawalRoots);
1340    function unpause(uint256 newPausedStatus) external;
1341    function updateOperatorMetadataURI(string memory metadataURI) external;
1342}
1343```
1344
1345...which was generated by the following JSON ABI:
1346```json
1347[
1348  {
1349    "type": "constructor",
1350    "inputs": [
1351      {
1352        "name": "_strategyManager",
1353        "type": "address",
1354        "internalType": "contract IStrategyManager"
1355      },
1356      {
1357        "name": "_slasher",
1358        "type": "address",
1359        "internalType": "contract ISlasher"
1360      },
1361      {
1362        "name": "_eigenPodManager",
1363        "type": "address",
1364        "internalType": "contract IEigenPodManager"
1365      }
1366    ],
1367    "stateMutability": "nonpayable"
1368  },
1369  {
1370    "type": "function",
1371    "name": "DELEGATION_APPROVAL_TYPEHASH",
1372    "inputs": [],
1373    "outputs": [
1374      {
1375        "name": "",
1376        "type": "bytes32",
1377        "internalType": "bytes32"
1378      }
1379    ],
1380    "stateMutability": "view"
1381  },
1382  {
1383    "type": "function",
1384    "name": "DOMAIN_TYPEHASH",
1385    "inputs": [],
1386    "outputs": [
1387      {
1388        "name": "",
1389        "type": "bytes32",
1390        "internalType": "bytes32"
1391      }
1392    ],
1393    "stateMutability": "view"
1394  },
1395  {
1396    "type": "function",
1397    "name": "MAX_STAKER_OPT_OUT_WINDOW_BLOCKS",
1398    "inputs": [],
1399    "outputs": [
1400      {
1401        "name": "",
1402        "type": "uint256",
1403        "internalType": "uint256"
1404      }
1405    ],
1406    "stateMutability": "view"
1407  },
1408  {
1409    "type": "function",
1410    "name": "MAX_WITHDRAWAL_DELAY_BLOCKS",
1411    "inputs": [],
1412    "outputs": [
1413      {
1414        "name": "",
1415        "type": "uint256",
1416        "internalType": "uint256"
1417      }
1418    ],
1419    "stateMutability": "view"
1420  },
1421  {
1422    "type": "function",
1423    "name": "STAKER_DELEGATION_TYPEHASH",
1424    "inputs": [],
1425    "outputs": [
1426      {
1427        "name": "",
1428        "type": "bytes32",
1429        "internalType": "bytes32"
1430      }
1431    ],
1432    "stateMutability": "view"
1433  },
1434  {
1435    "type": "function",
1436    "name": "beaconChainETHStrategy",
1437    "inputs": [],
1438    "outputs": [
1439      {
1440        "name": "",
1441        "type": "address",
1442        "internalType": "contract IStrategy"
1443      }
1444    ],
1445    "stateMutability": "view"
1446  },
1447  {
1448    "type": "function",
1449    "name": "calculateCurrentStakerDelegationDigestHash",
1450    "inputs": [
1451      {
1452        "name": "staker",
1453        "type": "address",
1454        "internalType": "address"
1455      },
1456      {
1457        "name": "operator",
1458        "type": "address",
1459        "internalType": "address"
1460      },
1461      {
1462        "name": "expiry",
1463        "type": "uint256",
1464        "internalType": "uint256"
1465      }
1466    ],
1467    "outputs": [
1468      {
1469        "name": "",
1470        "type": "bytes32",
1471        "internalType": "bytes32"
1472      }
1473    ],
1474    "stateMutability": "view"
1475  },
1476  {
1477    "type": "function",
1478    "name": "calculateDelegationApprovalDigestHash",
1479    "inputs": [
1480      {
1481        "name": "staker",
1482        "type": "address",
1483        "internalType": "address"
1484      },
1485      {
1486        "name": "operator",
1487        "type": "address",
1488        "internalType": "address"
1489      },
1490      {
1491        "name": "_delegationApprover",
1492        "type": "address",
1493        "internalType": "address"
1494      },
1495      {
1496        "name": "approverSalt",
1497        "type": "bytes32",
1498        "internalType": "bytes32"
1499      },
1500      {
1501        "name": "expiry",
1502        "type": "uint256",
1503        "internalType": "uint256"
1504      }
1505    ],
1506    "outputs": [
1507      {
1508        "name": "",
1509        "type": "bytes32",
1510        "internalType": "bytes32"
1511      }
1512    ],
1513    "stateMutability": "view"
1514  },
1515  {
1516    "type": "function",
1517    "name": "calculateStakerDelegationDigestHash",
1518    "inputs": [
1519      {
1520        "name": "staker",
1521        "type": "address",
1522        "internalType": "address"
1523      },
1524      {
1525        "name": "_stakerNonce",
1526        "type": "uint256",
1527        "internalType": "uint256"
1528      },
1529      {
1530        "name": "operator",
1531        "type": "address",
1532        "internalType": "address"
1533      },
1534      {
1535        "name": "expiry",
1536        "type": "uint256",
1537        "internalType": "uint256"
1538      }
1539    ],
1540    "outputs": [
1541      {
1542        "name": "",
1543        "type": "bytes32",
1544        "internalType": "bytes32"
1545      }
1546    ],
1547    "stateMutability": "view"
1548  },
1549  {
1550    "type": "function",
1551    "name": "calculateWithdrawalRoot",
1552    "inputs": [
1553      {
1554        "name": "withdrawal",
1555        "type": "tuple",
1556        "internalType": "struct IDelegationManager.Withdrawal",
1557        "components": [
1558          {
1559            "name": "staker",
1560            "type": "address",
1561            "internalType": "address"
1562          },
1563          {
1564            "name": "delegatedTo",
1565            "type": "address",
1566            "internalType": "address"
1567          },
1568          {
1569            "name": "withdrawer",
1570            "type": "address",
1571            "internalType": "address"
1572          },
1573          {
1574            "name": "nonce",
1575            "type": "uint256",
1576            "internalType": "uint256"
1577          },
1578          {
1579            "name": "startBlock",
1580            "type": "uint32",
1581            "internalType": "uint32"
1582          },
1583          {
1584            "name": "strategies",
1585            "type": "address[]",
1586            "internalType": "contract IStrategy[]"
1587          },
1588          {
1589            "name": "shares",
1590            "type": "uint256[]",
1591            "internalType": "uint256[]"
1592          }
1593        ]
1594      }
1595    ],
1596    "outputs": [
1597      {
1598        "name": "",
1599        "type": "bytes32",
1600        "internalType": "bytes32"
1601      }
1602    ],
1603    "stateMutability": "pure"
1604  },
1605  {
1606    "type": "function",
1607    "name": "completeQueuedWithdrawal",
1608    "inputs": [
1609      {
1610        "name": "withdrawal",
1611        "type": "tuple",
1612        "internalType": "struct IDelegationManager.Withdrawal",
1613        "components": [
1614          {
1615            "name": "staker",
1616            "type": "address",
1617            "internalType": "address"
1618          },
1619          {
1620            "name": "delegatedTo",
1621            "type": "address",
1622            "internalType": "address"
1623          },
1624          {
1625            "name": "withdrawer",
1626            "type": "address",
1627            "internalType": "address"
1628          },
1629          {
1630            "name": "nonce",
1631            "type": "uint256",
1632            "internalType": "uint256"
1633          },
1634          {
1635            "name": "startBlock",
1636            "type": "uint32",
1637            "internalType": "uint32"
1638          },
1639          {
1640            "name": "strategies",
1641            "type": "address[]",
1642            "internalType": "contract IStrategy[]"
1643          },
1644          {
1645            "name": "shares",
1646            "type": "uint256[]",
1647            "internalType": "uint256[]"
1648          }
1649        ]
1650      },
1651      {
1652        "name": "tokens",
1653        "type": "address[]",
1654        "internalType": "contract IERC20[]"
1655      },
1656      {
1657        "name": "middlewareTimesIndex",
1658        "type": "uint256",
1659        "internalType": "uint256"
1660      },
1661      {
1662        "name": "receiveAsTokens",
1663        "type": "bool",
1664        "internalType": "bool"
1665      }
1666    ],
1667    "outputs": [],
1668    "stateMutability": "nonpayable"
1669  },
1670  {
1671    "type": "function",
1672    "name": "completeQueuedWithdrawals",
1673    "inputs": [
1674      {
1675        "name": "withdrawals",
1676        "type": "tuple[]",
1677        "internalType": "struct IDelegationManager.Withdrawal[]",
1678        "components": [
1679          {
1680            "name": "staker",
1681            "type": "address",
1682            "internalType": "address"
1683          },
1684          {
1685            "name": "delegatedTo",
1686            "type": "address",
1687            "internalType": "address"
1688          },
1689          {
1690            "name": "withdrawer",
1691            "type": "address",
1692            "internalType": "address"
1693          },
1694          {
1695            "name": "nonce",
1696            "type": "uint256",
1697            "internalType": "uint256"
1698          },
1699          {
1700            "name": "startBlock",
1701            "type": "uint32",
1702            "internalType": "uint32"
1703          },
1704          {
1705            "name": "strategies",
1706            "type": "address[]",
1707            "internalType": "contract IStrategy[]"
1708          },
1709          {
1710            "name": "shares",
1711            "type": "uint256[]",
1712            "internalType": "uint256[]"
1713          }
1714        ]
1715      },
1716      {
1717        "name": "tokens",
1718        "type": "address[][]",
1719        "internalType": "contract IERC20[][]"
1720      },
1721      {
1722        "name": "middlewareTimesIndexes",
1723        "type": "uint256[]",
1724        "internalType": "uint256[]"
1725      },
1726      {
1727        "name": "receiveAsTokens",
1728        "type": "bool[]",
1729        "internalType": "bool[]"
1730      }
1731    ],
1732    "outputs": [],
1733    "stateMutability": "nonpayable"
1734  },
1735  {
1736    "type": "function",
1737    "name": "cumulativeWithdrawalsQueued",
1738    "inputs": [
1739      {
1740        "name": "",
1741        "type": "address",
1742        "internalType": "address"
1743      }
1744    ],
1745    "outputs": [
1746      {
1747        "name": "",
1748        "type": "uint256",
1749        "internalType": "uint256"
1750      }
1751    ],
1752    "stateMutability": "view"
1753  },
1754  {
1755    "type": "function",
1756    "name": "decreaseDelegatedShares",
1757    "inputs": [
1758      {
1759        "name": "staker",
1760        "type": "address",
1761        "internalType": "address"
1762      },
1763      {
1764        "name": "strategy",
1765        "type": "address",
1766        "internalType": "contract IStrategy"
1767      },
1768      {
1769        "name": "shares",
1770        "type": "uint256",
1771        "internalType": "uint256"
1772      }
1773    ],
1774    "outputs": [],
1775    "stateMutability": "nonpayable"
1776  },
1777  {
1778    "type": "function",
1779    "name": "delegateTo",
1780    "inputs": [
1781      {
1782        "name": "operator",
1783        "type": "address",
1784        "internalType": "address"
1785      },
1786      {
1787        "name": "approverSignatureAndExpiry",
1788        "type": "tuple",
1789        "internalType": "struct ISignatureUtils.SignatureWithExpiry",
1790        "components": [
1791          {
1792            "name": "signature",
1793            "type": "bytes",
1794            "internalType": "bytes"
1795          },
1796          {
1797            "name": "expiry",
1798            "type": "uint256",
1799            "internalType": "uint256"
1800          }
1801        ]
1802      },
1803      {
1804        "name": "approverSalt",
1805        "type": "bytes32",
1806        "internalType": "bytes32"
1807      }
1808    ],
1809    "outputs": [],
1810    "stateMutability": "nonpayable"
1811  },
1812  {
1813    "type": "function",
1814    "name": "delegateToBySignature",
1815    "inputs": [
1816      {
1817        "name": "staker",
1818        "type": "address",
1819        "internalType": "address"
1820      },
1821      {
1822        "name": "operator",
1823        "type": "address",
1824        "internalType": "address"
1825      },
1826      {
1827        "name": "stakerSignatureAndExpiry",
1828        "type": "tuple",
1829        "internalType": "struct ISignatureUtils.SignatureWithExpiry",
1830        "components": [
1831          {
1832            "name": "signature",
1833            "type": "bytes",
1834            "internalType": "bytes"
1835          },
1836          {
1837            "name": "expiry",
1838            "type": "uint256",
1839            "internalType": "uint256"
1840          }
1841        ]
1842      },
1843      {
1844        "name": "approverSignatureAndExpiry",
1845        "type": "tuple",
1846        "internalType": "struct ISignatureUtils.SignatureWithExpiry",
1847        "components": [
1848          {
1849            "name": "signature",
1850            "type": "bytes",
1851            "internalType": "bytes"
1852          },
1853          {
1854            "name": "expiry",
1855            "type": "uint256",
1856            "internalType": "uint256"
1857          }
1858        ]
1859      },
1860      {
1861        "name": "approverSalt",
1862        "type": "bytes32",
1863        "internalType": "bytes32"
1864      }
1865    ],
1866    "outputs": [],
1867    "stateMutability": "nonpayable"
1868  },
1869  {
1870    "type": "function",
1871    "name": "delegatedTo",
1872    "inputs": [
1873      {
1874        "name": "",
1875        "type": "address",
1876        "internalType": "address"
1877      }
1878    ],
1879    "outputs": [
1880      {
1881        "name": "",
1882        "type": "address",
1883        "internalType": "address"
1884      }
1885    ],
1886    "stateMutability": "view"
1887  },
1888  {
1889    "type": "function",
1890    "name": "delegationApprover",
1891    "inputs": [
1892      {
1893        "name": "operator",
1894        "type": "address",
1895        "internalType": "address"
1896      }
1897    ],
1898    "outputs": [
1899      {
1900        "name": "",
1901        "type": "address",
1902        "internalType": "address"
1903      }
1904    ],
1905    "stateMutability": "view"
1906  },
1907  {
1908    "type": "function",
1909    "name": "delegationApproverSaltIsSpent",
1910    "inputs": [
1911      {
1912        "name": "",
1913        "type": "address",
1914        "internalType": "address"
1915      },
1916      {
1917        "name": "",
1918        "type": "bytes32",
1919        "internalType": "bytes32"
1920      }
1921    ],
1922    "outputs": [
1923      {
1924        "name": "",
1925        "type": "bool",
1926        "internalType": "bool"
1927      }
1928    ],
1929    "stateMutability": "view"
1930  },
1931  {
1932    "type": "function",
1933    "name": "domainSeparator",
1934    "inputs": [],
1935    "outputs": [
1936      {
1937        "name": "",
1938        "type": "bytes32",
1939        "internalType": "bytes32"
1940      }
1941    ],
1942    "stateMutability": "view"
1943  },
1944  {
1945    "type": "function",
1946    "name": "eigenPodManager",
1947    "inputs": [],
1948    "outputs": [
1949      {
1950        "name": "",
1951        "type": "address",
1952        "internalType": "contract IEigenPodManager"
1953      }
1954    ],
1955    "stateMutability": "view"
1956  },
1957  {
1958    "type": "function",
1959    "name": "getDelegatableShares",
1960    "inputs": [
1961      {
1962        "name": "staker",
1963        "type": "address",
1964        "internalType": "address"
1965      }
1966    ],
1967    "outputs": [
1968      {
1969        "name": "",
1970        "type": "address[]",
1971        "internalType": "contract IStrategy[]"
1972      },
1973      {
1974        "name": "",
1975        "type": "uint256[]",
1976        "internalType": "uint256[]"
1977      }
1978    ],
1979    "stateMutability": "view"
1980  },
1981  {
1982    "type": "function",
1983    "name": "getOperatorShares",
1984    "inputs": [
1985      {
1986        "name": "operator",
1987        "type": "address",
1988        "internalType": "address"
1989      },
1990      {
1991        "name": "strategies",
1992        "type": "address[]",
1993        "internalType": "contract IStrategy[]"
1994      }
1995    ],
1996    "outputs": [
1997      {
1998        "name": "",
1999        "type": "uint256[]",
2000        "internalType": "uint256[]"
2001      }
2002    ],
2003    "stateMutability": "view"
2004  },
2005  {
2006    "type": "function",
2007    "name": "getWithdrawalDelay",
2008    "inputs": [
2009      {
2010        "name": "strategies",
2011        "type": "address[]",
2012        "internalType": "contract IStrategy[]"
2013      }
2014    ],
2015    "outputs": [
2016      {
2017        "name": "",
2018        "type": "uint256",
2019        "internalType": "uint256"
2020      }
2021    ],
2022    "stateMutability": "view"
2023  },
2024  {
2025    "type": "function",
2026    "name": "increaseDelegatedShares",
2027    "inputs": [
2028      {
2029        "name": "staker",
2030        "type": "address",
2031        "internalType": "address"
2032      },
2033      {
2034        "name": "strategy",
2035        "type": "address",
2036        "internalType": "contract IStrategy"
2037      },
2038      {
2039        "name": "shares",
2040        "type": "uint256",
2041        "internalType": "uint256"
2042      }
2043    ],
2044    "outputs": [],
2045    "stateMutability": "nonpayable"
2046  },
2047  {
2048    "type": "function",
2049    "name": "initialize",
2050    "inputs": [
2051      {
2052        "name": "initialOwner",
2053        "type": "address",
2054        "internalType": "address"
2055      },
2056      {
2057        "name": "_pauserRegistry",
2058        "type": "address",
2059        "internalType": "contract IPauserRegistry"
2060      },
2061      {
2062        "name": "initialPausedStatus",
2063        "type": "uint256",
2064        "internalType": "uint256"
2065      },
2066      {
2067        "name": "_minWithdrawalDelayBlocks",
2068        "type": "uint256",
2069        "internalType": "uint256"
2070      },
2071      {
2072        "name": "_strategies",
2073        "type": "address[]",
2074        "internalType": "contract IStrategy[]"
2075      },
2076      {
2077        "name": "_withdrawalDelayBlocks",
2078        "type": "uint256[]",
2079        "internalType": "uint256[]"
2080      }
2081    ],
2082    "outputs": [],
2083    "stateMutability": "nonpayable"
2084  },
2085  {
2086    "type": "function",
2087    "name": "isDelegated",
2088    "inputs": [
2089      {
2090        "name": "staker",
2091        "type": "address",
2092        "internalType": "address"
2093      }
2094    ],
2095    "outputs": [
2096      {
2097        "name": "",
2098        "type": "bool",
2099        "internalType": "bool"
2100      }
2101    ],
2102    "stateMutability": "view"
2103  },
2104  {
2105    "type": "function",
2106    "name": "isOperator",
2107    "inputs": [
2108      {
2109        "name": "operator",
2110        "type": "address",
2111        "internalType": "address"
2112      }
2113    ],
2114    "outputs": [
2115      {
2116        "name": "",
2117        "type": "bool",
2118        "internalType": "bool"
2119      }
2120    ],
2121    "stateMutability": "view"
2122  },
2123  {
2124    "type": "function",
2125    "name": "minWithdrawalDelayBlocks",
2126    "inputs": [],
2127    "outputs": [
2128      {
2129        "name": "",
2130        "type": "uint256",
2131        "internalType": "uint256"
2132      }
2133    ],
2134    "stateMutability": "view"
2135  },
2136  {
2137    "type": "function",
2138    "name": "modifyOperatorDetails",
2139    "inputs": [
2140      {
2141        "name": "newOperatorDetails",
2142        "type": "tuple",
2143        "internalType": "struct IDelegationManager.OperatorDetails",
2144        "components": [
2145          {
2146            "name": "__deprecated_earningsReceiver",
2147            "type": "address",
2148            "internalType": "address"
2149          },
2150          {
2151            "name": "delegationApprover",
2152            "type": "address",
2153            "internalType": "address"
2154          },
2155          {
2156            "name": "stakerOptOutWindowBlocks",
2157            "type": "uint32",
2158            "internalType": "uint32"
2159          }
2160        ]
2161      }
2162    ],
2163    "outputs": [],
2164    "stateMutability": "nonpayable"
2165  },
2166  {
2167    "type": "function",
2168    "name": "operatorDetails",
2169    "inputs": [
2170      {
2171        "name": "operator",
2172        "type": "address",
2173        "internalType": "address"
2174      }
2175    ],
2176    "outputs": [
2177      {
2178        "name": "",
2179        "type": "tuple",
2180        "internalType": "struct IDelegationManager.OperatorDetails",
2181        "components": [
2182          {
2183            "name": "__deprecated_earningsReceiver",
2184            "type": "address",
2185            "internalType": "address"
2186          },
2187          {
2188            "name": "delegationApprover",
2189            "type": "address",
2190            "internalType": "address"
2191          },
2192          {
2193            "name": "stakerOptOutWindowBlocks",
2194            "type": "uint32",
2195            "internalType": "uint32"
2196          }
2197        ]
2198      }
2199    ],
2200    "stateMutability": "view"
2201  },
2202  {
2203    "type": "function",
2204    "name": "operatorShares",
2205    "inputs": [
2206      {
2207        "name": "",
2208        "type": "address",
2209        "internalType": "address"
2210      },
2211      {
2212        "name": "",
2213        "type": "address",
2214        "internalType": "contract IStrategy"
2215      }
2216    ],
2217    "outputs": [
2218      {
2219        "name": "",
2220        "type": "uint256",
2221        "internalType": "uint256"
2222      }
2223    ],
2224    "stateMutability": "view"
2225  },
2226  {
2227    "type": "function",
2228    "name": "owner",
2229    "inputs": [],
2230    "outputs": [
2231      {
2232        "name": "",
2233        "type": "address",
2234        "internalType": "address"
2235      }
2236    ],
2237    "stateMutability": "view"
2238  },
2239  {
2240    "type": "function",
2241    "name": "pause",
2242    "inputs": [
2243      {
2244        "name": "newPausedStatus",
2245        "type": "uint256",
2246        "internalType": "uint256"
2247      }
2248    ],
2249    "outputs": [],
2250    "stateMutability": "nonpayable"
2251  },
2252  {
2253    "type": "function",
2254    "name": "pauseAll",
2255    "inputs": [],
2256    "outputs": [],
2257    "stateMutability": "nonpayable"
2258  },
2259  {
2260    "type": "function",
2261    "name": "paused",
2262    "inputs": [
2263      {
2264        "name": "index",
2265        "type": "uint8",
2266        "internalType": "uint8"
2267      }
2268    ],
2269    "outputs": [
2270      {
2271        "name": "",
2272        "type": "bool",
2273        "internalType": "bool"
2274      }
2275    ],
2276    "stateMutability": "view"
2277  },
2278  {
2279    "type": "function",
2280    "name": "paused",
2281    "inputs": [],
2282    "outputs": [
2283      {
2284        "name": "",
2285        "type": "uint256",
2286        "internalType": "uint256"
2287      }
2288    ],
2289    "stateMutability": "view"
2290  },
2291  {
2292    "type": "function",
2293    "name": "pauserRegistry",
2294    "inputs": [],
2295    "outputs": [
2296      {
2297        "name": "",
2298        "type": "address",
2299        "internalType": "contract IPauserRegistry"
2300      }
2301    ],
2302    "stateMutability": "view"
2303  },
2304  {
2305    "type": "function",
2306    "name": "pendingWithdrawals",
2307    "inputs": [
2308      {
2309        "name": "",
2310        "type": "bytes32",
2311        "internalType": "bytes32"
2312      }
2313    ],
2314    "outputs": [
2315      {
2316        "name": "",
2317        "type": "bool",
2318        "internalType": "bool"
2319      }
2320    ],
2321    "stateMutability": "view"
2322  },
2323  {
2324    "type": "function",
2325    "name": "queueWithdrawals",
2326    "inputs": [
2327      {
2328        "name": "queuedWithdrawalParams",
2329        "type": "tuple[]",
2330        "internalType": "struct IDelegationManager.QueuedWithdrawalParams[]",
2331        "components": [
2332          {
2333            "name": "strategies",
2334            "type": "address[]",
2335            "internalType": "contract IStrategy[]"
2336          },
2337          {
2338            "name": "shares",
2339            "type": "uint256[]",
2340            "internalType": "uint256[]"
2341          },
2342          {
2343            "name": "withdrawer",
2344            "type": "address",
2345            "internalType": "address"
2346          }
2347        ]
2348      }
2349    ],
2350    "outputs": [
2351      {
2352        "name": "",
2353        "type": "bytes32[]",
2354        "internalType": "bytes32[]"
2355      }
2356    ],
2357    "stateMutability": "nonpayable"
2358  },
2359  {
2360    "type": "function",
2361    "name": "registerAsOperator",
2362    "inputs": [
2363      {
2364        "name": "registeringOperatorDetails",
2365        "type": "tuple",
2366        "internalType": "struct IDelegationManager.OperatorDetails",
2367        "components": [
2368          {
2369            "name": "__deprecated_earningsReceiver",
2370            "type": "address",
2371            "internalType": "address"
2372          },
2373          {
2374            "name": "delegationApprover",
2375            "type": "address",
2376            "internalType": "address"
2377          },
2378          {
2379            "name": "stakerOptOutWindowBlocks",
2380            "type": "uint32",
2381            "internalType": "uint32"
2382          }
2383        ]
2384      },
2385      {
2386        "name": "metadataURI",
2387        "type": "string",
2388        "internalType": "string"
2389      }
2390    ],
2391    "outputs": [],
2392    "stateMutability": "nonpayable"
2393  },
2394  {
2395    "type": "function",
2396    "name": "renounceOwnership",
2397    "inputs": [],
2398    "outputs": [],
2399    "stateMutability": "nonpayable"
2400  },
2401  {
2402    "type": "function",
2403    "name": "setMinWithdrawalDelayBlocks",
2404    "inputs": [
2405      {
2406        "name": "newMinWithdrawalDelayBlocks",
2407        "type": "uint256",
2408        "internalType": "uint256"
2409      }
2410    ],
2411    "outputs": [],
2412    "stateMutability": "nonpayable"
2413  },
2414  {
2415    "type": "function",
2416    "name": "setPauserRegistry",
2417    "inputs": [
2418      {
2419        "name": "newPauserRegistry",
2420        "type": "address",
2421        "internalType": "contract IPauserRegistry"
2422      }
2423    ],
2424    "outputs": [],
2425    "stateMutability": "nonpayable"
2426  },
2427  {
2428    "type": "function",
2429    "name": "setStrategyWithdrawalDelayBlocks",
2430    "inputs": [
2431      {
2432        "name": "strategies",
2433        "type": "address[]",
2434        "internalType": "contract IStrategy[]"
2435      },
2436      {
2437        "name": "withdrawalDelayBlocks",
2438        "type": "uint256[]",
2439        "internalType": "uint256[]"
2440      }
2441    ],
2442    "outputs": [],
2443    "stateMutability": "nonpayable"
2444  },
2445  {
2446    "type": "function",
2447    "name": "slasher",
2448    "inputs": [],
2449    "outputs": [
2450      {
2451        "name": "",
2452        "type": "address",
2453        "internalType": "contract ISlasher"
2454      }
2455    ],
2456    "stateMutability": "view"
2457  },
2458  {
2459    "type": "function",
2460    "name": "stakerNonce",
2461    "inputs": [
2462      {
2463        "name": "",
2464        "type": "address",
2465        "internalType": "address"
2466      }
2467    ],
2468    "outputs": [
2469      {
2470        "name": "",
2471        "type": "uint256",
2472        "internalType": "uint256"
2473      }
2474    ],
2475    "stateMutability": "view"
2476  },
2477  {
2478    "type": "function",
2479    "name": "stakerOptOutWindowBlocks",
2480    "inputs": [
2481      {
2482        "name": "operator",
2483        "type": "address",
2484        "internalType": "address"
2485      }
2486    ],
2487    "outputs": [
2488      {
2489        "name": "",
2490        "type": "uint256",
2491        "internalType": "uint256"
2492      }
2493    ],
2494    "stateMutability": "view"
2495  },
2496  {
2497    "type": "function",
2498    "name": "strategyManager",
2499    "inputs": [],
2500    "outputs": [
2501      {
2502        "name": "",
2503        "type": "address",
2504        "internalType": "contract IStrategyManager"
2505      }
2506    ],
2507    "stateMutability": "view"
2508  },
2509  {
2510    "type": "function",
2511    "name": "strategyWithdrawalDelayBlocks",
2512    "inputs": [
2513      {
2514        "name": "",
2515        "type": "address",
2516        "internalType": "contract IStrategy"
2517      }
2518    ],
2519    "outputs": [
2520      {
2521        "name": "",
2522        "type": "uint256",
2523        "internalType": "uint256"
2524      }
2525    ],
2526    "stateMutability": "view"
2527  },
2528  {
2529    "type": "function",
2530    "name": "transferOwnership",
2531    "inputs": [
2532      {
2533        "name": "newOwner",
2534        "type": "address",
2535        "internalType": "address"
2536      }
2537    ],
2538    "outputs": [],
2539    "stateMutability": "nonpayable"
2540  },
2541  {
2542    "type": "function",
2543    "name": "undelegate",
2544    "inputs": [
2545      {
2546        "name": "staker",
2547        "type": "address",
2548        "internalType": "address"
2549      }
2550    ],
2551    "outputs": [
2552      {
2553        "name": "withdrawalRoots",
2554        "type": "bytes32[]",
2555        "internalType": "bytes32[]"
2556      }
2557    ],
2558    "stateMutability": "nonpayable"
2559  },
2560  {
2561    "type": "function",
2562    "name": "unpause",
2563    "inputs": [
2564      {
2565        "name": "newPausedStatus",
2566        "type": "uint256",
2567        "internalType": "uint256"
2568      }
2569    ],
2570    "outputs": [],
2571    "stateMutability": "nonpayable"
2572  },
2573  {
2574    "type": "function",
2575    "name": "updateOperatorMetadataURI",
2576    "inputs": [
2577      {
2578        "name": "metadataURI",
2579        "type": "string",
2580        "internalType": "string"
2581      }
2582    ],
2583    "outputs": [],
2584    "stateMutability": "nonpayable"
2585  },
2586  {
2587    "type": "event",
2588    "name": "Initialized",
2589    "inputs": [
2590      {
2591        "name": "version",
2592        "type": "uint8",
2593        "indexed": false,
2594        "internalType": "uint8"
2595      }
2596    ],
2597    "anonymous": false
2598  },
2599  {
2600    "type": "event",
2601    "name": "MinWithdrawalDelayBlocksSet",
2602    "inputs": [
2603      {
2604        "name": "previousValue",
2605        "type": "uint256",
2606        "indexed": false,
2607        "internalType": "uint256"
2608      },
2609      {
2610        "name": "newValue",
2611        "type": "uint256",
2612        "indexed": false,
2613        "internalType": "uint256"
2614      }
2615    ],
2616    "anonymous": false
2617  },
2618  {
2619    "type": "event",
2620    "name": "OperatorDetailsModified",
2621    "inputs": [
2622      {
2623        "name": "operator",
2624        "type": "address",
2625        "indexed": true,
2626        "internalType": "address"
2627      },
2628      {
2629        "name": "newOperatorDetails",
2630        "type": "tuple",
2631        "indexed": false,
2632        "internalType": "struct IDelegationManager.OperatorDetails",
2633        "components": [
2634          {
2635            "name": "__deprecated_earningsReceiver",
2636            "type": "address",
2637            "internalType": "address"
2638          },
2639          {
2640            "name": "delegationApprover",
2641            "type": "address",
2642            "internalType": "address"
2643          },
2644          {
2645            "name": "stakerOptOutWindowBlocks",
2646            "type": "uint32",
2647            "internalType": "uint32"
2648          }
2649        ]
2650      }
2651    ],
2652    "anonymous": false
2653  },
2654  {
2655    "type": "event",
2656    "name": "OperatorMetadataURIUpdated",
2657    "inputs": [
2658      {
2659        "name": "operator",
2660        "type": "address",
2661        "indexed": true,
2662        "internalType": "address"
2663      },
2664      {
2665        "name": "metadataURI",
2666        "type": "string",
2667        "indexed": false,
2668        "internalType": "string"
2669      }
2670    ],
2671    "anonymous": false
2672  },
2673  {
2674    "type": "event",
2675    "name": "OperatorRegistered",
2676    "inputs": [
2677      {
2678        "name": "operator",
2679        "type": "address",
2680        "indexed": true,
2681        "internalType": "address"
2682      },
2683      {
2684        "name": "operatorDetails",
2685        "type": "tuple",
2686        "indexed": false,
2687        "internalType": "struct IDelegationManager.OperatorDetails",
2688        "components": [
2689          {
2690            "name": "__deprecated_earningsReceiver",
2691            "type": "address",
2692            "internalType": "address"
2693          },
2694          {
2695            "name": "delegationApprover",
2696            "type": "address",
2697            "internalType": "address"
2698          },
2699          {
2700            "name": "stakerOptOutWindowBlocks",
2701            "type": "uint32",
2702            "internalType": "uint32"
2703          }
2704        ]
2705      }
2706    ],
2707    "anonymous": false
2708  },
2709  {
2710    "type": "event",
2711    "name": "OperatorSharesDecreased",
2712    "inputs": [
2713      {
2714        "name": "operator",
2715        "type": "address",
2716        "indexed": true,
2717        "internalType": "address"
2718      },
2719      {
2720        "name": "staker",
2721        "type": "address",
2722        "indexed": false,
2723        "internalType": "address"
2724      },
2725      {
2726        "name": "strategy",
2727        "type": "address",
2728        "indexed": false,
2729        "internalType": "contract IStrategy"
2730      },
2731      {
2732        "name": "shares",
2733        "type": "uint256",
2734        "indexed": false,
2735        "internalType": "uint256"
2736      }
2737    ],
2738    "anonymous": false
2739  },
2740  {
2741    "type": "event",
2742    "name": "OperatorSharesIncreased",
2743    "inputs": [
2744      {
2745        "name": "operator",
2746        "type": "address",
2747        "indexed": true,
2748        "internalType": "address"
2749      },
2750      {
2751        "name": "staker",
2752        "type": "address",
2753        "indexed": false,
2754        "internalType": "address"
2755      },
2756      {
2757        "name": "strategy",
2758        "type": "address",
2759        "indexed": false,
2760        "internalType": "contract IStrategy"
2761      },
2762      {
2763        "name": "shares",
2764        "type": "uint256",
2765        "indexed": false,
2766        "internalType": "uint256"
2767      }
2768    ],
2769    "anonymous": false
2770  },
2771  {
2772    "type": "event",
2773    "name": "OwnershipTransferred",
2774    "inputs": [
2775      {
2776        "name": "previousOwner",
2777        "type": "address",
2778        "indexed": true,
2779        "internalType": "address"
2780      },
2781      {
2782        "name": "newOwner",
2783        "type": "address",
2784        "indexed": true,
2785        "internalType": "address"
2786      }
2787    ],
2788    "anonymous": false
2789  },
2790  {
2791    "type": "event",
2792    "name": "Paused",
2793    "inputs": [
2794      {
2795        "name": "account",
2796        "type": "address",
2797        "indexed": true,
2798        "internalType": "address"
2799      },
2800      {
2801        "name": "newPausedStatus",
2802        "type": "uint256",
2803        "indexed": false,
2804        "internalType": "uint256"
2805      }
2806    ],
2807    "anonymous": false
2808  },
2809  {
2810    "type": "event",
2811    "name": "PauserRegistrySet",
2812    "inputs": [
2813      {
2814        "name": "pauserRegistry",
2815        "type": "address",
2816        "indexed": false,
2817        "internalType": "contract IPauserRegistry"
2818      },
2819      {
2820        "name": "newPauserRegistry",
2821        "type": "address",
2822        "indexed": false,
2823        "internalType": "contract IPauserRegistry"
2824      }
2825    ],
2826    "anonymous": false
2827  },
2828  {
2829    "type": "event",
2830    "name": "StakerDelegated",
2831    "inputs": [
2832      {
2833        "name": "staker",
2834        "type": "address",
2835        "indexed": true,
2836        "internalType": "address"
2837      },
2838      {
2839        "name": "operator",
2840        "type": "address",
2841        "indexed": true,
2842        "internalType": "address"
2843      }
2844    ],
2845    "anonymous": false
2846  },
2847  {
2848    "type": "event",
2849    "name": "StakerForceUndelegated",
2850    "inputs": [
2851      {
2852        "name": "staker",
2853        "type": "address",
2854        "indexed": true,
2855        "internalType": "address"
2856      },
2857      {
2858        "name": "operator",
2859        "type": "address",
2860        "indexed": true,
2861        "internalType": "address"
2862      }
2863    ],
2864    "anonymous": false
2865  },
2866  {
2867    "type": "event",
2868    "name": "StakerUndelegated",
2869    "inputs": [
2870      {
2871        "name": "staker",
2872        "type": "address",
2873        "indexed": true,
2874        "internalType": "address"
2875      },
2876      {
2877        "name": "operator",
2878        "type": "address",
2879        "indexed": true,
2880        "internalType": "address"
2881      }
2882    ],
2883    "anonymous": false
2884  },
2885  {
2886    "type": "event",
2887    "name": "StrategyWithdrawalDelayBlocksSet",
2888    "inputs": [
2889      {
2890        "name": "strategy",
2891        "type": "address",
2892        "indexed": false,
2893        "internalType": "contract IStrategy"
2894      },
2895      {
2896        "name": "previousValue",
2897        "type": "uint256",
2898        "indexed": false,
2899        "internalType": "uint256"
2900      },
2901      {
2902        "name": "newValue",
2903        "type": "uint256",
2904        "indexed": false,
2905        "internalType": "uint256"
2906      }
2907    ],
2908    "anonymous": false
2909  },
2910  {
2911    "type": "event",
2912    "name": "Unpaused",
2913    "inputs": [
2914      {
2915        "name": "account",
2916        "type": "address",
2917        "indexed": true,
2918        "internalType": "address"
2919      },
2920      {
2921        "name": "newPausedStatus",
2922        "type": "uint256",
2923        "indexed": false,
2924        "internalType": "uint256"
2925      }
2926    ],
2927    "anonymous": false
2928  },
2929  {
2930    "type": "event",
2931    "name": "WithdrawalCompleted",
2932    "inputs": [
2933      {
2934        "name": "withdrawalRoot",
2935        "type": "bytes32",
2936        "indexed": false,
2937        "internalType": "bytes32"
2938      }
2939    ],
2940    "anonymous": false
2941  },
2942  {
2943    "type": "event",
2944    "name": "WithdrawalQueued",
2945    "inputs": [
2946      {
2947        "name": "withdrawalRoot",
2948        "type": "bytes32",
2949        "indexed": false,
2950        "internalType": "bytes32"
2951      },
2952      {
2953        "name": "withdrawal",
2954        "type": "tuple",
2955        "indexed": false,
2956        "internalType": "struct IDelegationManager.Withdrawal",
2957        "components": [
2958          {
2959            "name": "staker",
2960            "type": "address",
2961            "internalType": "address"
2962          },
2963          {
2964            "name": "delegatedTo",
2965            "type": "address",
2966            "internalType": "address"
2967          },
2968          {
2969            "name": "withdrawer",
2970            "type": "address",
2971            "internalType": "address"
2972          },
2973          {
2974            "name": "nonce",
2975            "type": "uint256",
2976            "internalType": "uint256"
2977          },
2978          {
2979            "name": "startBlock",
2980            "type": "uint32",
2981            "internalType": "uint32"
2982          },
2983          {
2984            "name": "strategies",
2985            "type": "address[]",
2986            "internalType": "contract IStrategy[]"
2987          },
2988          {
2989            "name": "shares",
2990            "type": "uint256[]",
2991            "internalType": "uint256[]"
2992          }
2993        ]
2994      }
2995    ],
2996    "anonymous": false
2997  }
2998]
2999```*/
3000#[allow(
3001    non_camel_case_types,
3002    non_snake_case,
3003    clippy::pub_underscore_fields,
3004    clippy::style,
3005    clippy::empty_structs_with_brackets
3006)]
3007pub mod DelegationManager {
3008    use super::*;
3009    use alloy::sol_types as alloy_sol_types;
3010    /// The creation / init bytecode of the contract.
3011    ///
3012    /// ```text
3013    ///0x6101006040523480156200001257600080fd5b5060405162005c4638038062005c46833981016040819052620000359162000140565b6001600160a01b0380841660805280821660c052821660a0526200005862000065565b50504660e0525062000194565b600054610100900460ff1615620000d25760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000125576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013d57600080fd5b50565b6000806000606084860312156200015657600080fd5b8351620001638162000127565b6020850151909350620001768162000127565b6040850151909250620001898162000127565b809150509250925092565b60805160a05160c05160e051615a1d6200022960003960006126a00152600081816105b10152818161102e015281816113aa01528181611c23015281816129f901528181613eac0152614398015260006107620152600081816104f901528181610ffc0152818161137801528181611cb701528181612ac601528181612c4901528181613fd2015261443e0152615a1d6000f3fe608060405234801561001057600080fd5b50600436106103425760003560e01c8063635bbd10116101b8578063b7f06ebe11610104578063cf80873e116100a2578063f16172b01161007c578063f16172b014610908578063f2fde38b1461091b578063f698da251461092e578063fabc1cbc1461093657600080fd5b8063cf80873e146108c1578063da8be864146108e2578063eea9064b146108f557600080fd5b8063c488375a116100de578063c488375a146107de578063c5e480db146107fe578063c94b5111146108a4578063ca661c04146108b757600080fd5b8063b7f06ebe14610784578063bb45fef2146107a7578063c448feb8146107d557600080fd5b8063886f1195116101715780639104c3191161014b5780639104c3191461070f57806399be81c81461072a578063a17884841461073d578063b13442711461075d57600080fd5b8063886f1195146106cb5780638da5cb5b146106de57806390041347146106ef57600080fd5b8063635bbd101461063657806365da1264146106495780636d70f7ae14610672578063715018a614610685578063778e55f31461068d5780637f548071146106b857600080fd5b806328a573ae116102925780634665bcda11610230578063597b36da1161020a578063597b36da146105e55780635ac86ab7146105f85780635c975abb1461061b57806360d7faed1461062357600080fd5b80634665bcda146105ac5780634fc40b61146105d3578063595c6a67146105dd57600080fd5b806339b70e381161026c57806339b70e38146104f45780633cdeb5e0146105335780633e28391d14610562578063433773821461058557600080fd5b806328a573ae146104ae57806329c77d4f146104c157806333404396146104e157600080fd5b8063132d4967116102ff57806316928365116102d957806316928365146104285780631bbce0911461046157806320606b701461047457806322bf40e41461049b57600080fd5b8063132d4967146103ef578063136439dd146104025780631522bf021461041557600080fd5b80630449ca391461034757806304a4f9791461036d5780630b9f487a146103945780630dd8dd02146103a75780630f589e59146103c757806310d67a2f146103dc575b600080fd5b61035a61035536600461484e565b610949565b6040519081526020015b60405180910390f35b61035a7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b61035a6103a23660046148b4565b6109ce565b6103ba6103b536600461484e565b610a90565b604051610364919061490f565b6103da6103d53660046149ac565b610df9565b005b6103da6103ea3660046149ff565b610f3e565b6103da6103fd366004614a23565b610ff1565b6103da610410366004614a64565b6110a8565b6103da610423366004614a7d565b6111e7565b61035a6104363660046149ff565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b61035a61046f366004614a23565b6111fb565b61035a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6103da6104a9366004614ae8565b611229565b6103da6104bc366004614a23565b61136d565b61035a6104cf3660046149ff565b609b6020526000908152604090205481565b6103da6104ef366004614b8f565b61141d565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610364565b61051b6105413660046149ff565b6001600160a01b039081166000908152609960205260409020600101541690565b6105756105703660046149ff565b61155a565b6040519015158152602001610364565b61035a7f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b61035a6213c68081565b6103da61157a565b61035a6105f3366004614e8c565b611641565b610575610606366004614ec8565b606654600160ff9092169190911b9081161490565b60665461035a565b6103da610631366004614ef9565b611671565b6103da610644366004614a64565b61170c565b61051b6106573660046149ff565b609a602052600090815260409020546001600160a01b031681565b6105756106803660046149ff565b61171d565b6103da611757565b61035a61069b366004614f88565b609860209081526000928352604080842090915290825290205481565b6103da6106c6366004615069565b61176b565b60655461051b906001600160a01b031681565b6033546001600160a01b031661051b565b6107026106fd3660046150f9565b611997565b6040516103649190615183565b61051b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6103da610738366004615196565b611a71565b61035a61074b3660046149ff565b609f6020526000908152604090205481565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b610575610792366004614a64565b609e6020526000908152604090205460ff1681565b6105756107b53660046151cb565b609c60209081526000928352604080842090915290825290205460ff1681565b61035a609d5481565b61035a6107ec3660046149ff565b60a16020526000908152604090205481565b61086e61080c3660046149ff565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff1690820152606001610364565b61035a6108b23660046151f7565b611b43565b61035a62034bc081565b6108d46108cf3660046149ff565b611bfc565b604051610364929190615278565b6103ba6108f03660046149ff565b611fb4565b6103da61090336600461529d565b612478565b6103da6109163660046152f5565b612595565b6103da6109293660046149ff565b612626565b61035a61269c565b6103da610944366004614a64565b6126da565b609d54600090815b838110156109c657600060a1600087878581811061097157610971615311565b905060200201602081019061098691906149ff565b6001600160a01b03166001600160a01b03168152602001908152602001600020549050828111156109b5578092505b506109bf8161533d565b9050610951565b509392505050565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610a4c61269c565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b60665460609060019060029081161415610ac55760405162461bcd60e51b8152600401610abc90615358565b60405180910390fd5b6000836001600160401b03811115610adf57610adf614c31565b604051908082528060200260200182016040528015610b08578160200160208202803683370190505b50336000908152609a60205260408120549192506001600160a01b03909116905b85811015610dee57868682818110610b4357610b43615311565b9050602002810190610b55919061538f565b610b639060208101906153af565b9050878783818110610b7757610b77615311565b9050602002810190610b89919061538f565b610b9390806153af565b905014610c085760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610abc565b33878783818110610c1b57610c1b615311565b9050602002810190610c2d919061538f565b610c3e9060608101906040016149ff565b6001600160a01b031614610cba5760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a2077697468647261776572206d757374206265207374616b6572000000006064820152608401610abc565b610dbf3383898985818110610cd157610cd1615311565b9050602002810190610ce3919061538f565b610cf49060608101906040016149ff565b8a8a86818110610d0657610d06615311565b9050602002810190610d18919061538f565b610d2290806153af565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150889050818110610d6857610d68615311565b9050602002810190610d7a919061538f565b610d889060208101906153af565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061283692505050565b838281518110610dd157610dd1615311565b602090810291909101015280610de68161533d565b915050610b29565b509095945050505050565b610e023361155a565b15610e885760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a2063616c6c657220697320616c7265616479206163746976656c796064820152690819195b1959d85d195960b21b608482015260a401610abc565b610e923384612df6565b604080518082019091526060815260006020820152610eb43380836000612fe9565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610eed91906153f8565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610f3092919061544a565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb59190615479565b6001600160a01b0316336001600160a01b031614610fe55760405162461bcd60e51b8152600401610abc90615496565b610fee8161327f565b50565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806110505750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b61106c5760405162461bcd60e51b8152600401610abc906154e0565b6110758361155a565b156110a3576001600160a01b038084166000908152609a6020526040902054166110a181858585613376565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156110f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611114919061553d565b6111305760405162461bcd60e51b8152600401610abc9061555a565b606654818116146111a95760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610abc565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6111ef6133f1565b6110a18484848461344b565b6001600160a01b0383166000908152609b602052604081205461122085828686611b43565b95945050505050565b600054610100900460ff16158080156112495750600054600160ff909116105b806112635750303b158015611263575060005460ff166001145b6112c65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610abc565b6000805460ff1916600117905580156112e9576000805461ff0019166101001790555b6112f38888613671565b6112fb61375b565b609755611307896137f2565b61131086613844565b61131c8585858561344b565b8015611362576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806113cc5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6113e85760405162461bcd60e51b8152600401610abc906154e0565b6113f18361155a565b156110a3576001600160a01b038084166000908152609a6020526040902054166110a18185858561393e565b606654600290600490811614156114465760405162461bcd60e51b8152600401610abc90615358565b600260c95414156114995760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610abc565b600260c95560005b88811015611549576115398a8a838181106114be576114be615311565b90506020028101906114d091906155a2565b8989848181106114e2576114e2615311565b90506020028101906114f491906153af565b89898681811061150657611506615311565b9050602002013588888781811061151f5761151f615311565b905060200201602081019061153491906155b8565b6139b9565b6115428161533d565b90506114a1565b5050600160c9555050505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156115c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e6919061553d565b6116025760405162461bcd60e51b8152600401610abc9061555a565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000816040516020016116549190615649565b604051602081830303815290604052805190602001209050919050565b6066546002906004908116141561169a5760405162461bcd60e51b8152600401610abc90615358565b600260c95414156116ed5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610abc565b600260c9556116ff86868686866139b9565b5050600160c95550505050565b6117146133f1565b610fee81613844565b60006001600160a01b0382161580159061175157506001600160a01b038083166000818152609a6020526040902054909116145b92915050565b61175f6133f1565b61176960006137f2565b565b42836020015110156117ef5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610abc565b6117f88561155a565b156118815760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b657220697320616c726561647920616374697660648201526c195b1e4819195b1959d85d1959609a1b608482015260a401610abc565b61188a8461171d565b6119165760405162461bcd60e51b815260206004820152605160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a206f70657261746f72206973206e6f7420726567697374656064820152703932b21034b71022b4b3b2b72630bcb2b960791b608482015260a401610abc565b6000609b6000876001600160a01b03166001600160a01b0316815260200190815260200160002054905060006119528783888860200151611b43565b6001600160a01b0388166000908152609b60205260409020600184019055855190915061198290889083906141a3565b61198e87878686612fe9565b50505050505050565b6060600082516001600160401b038111156119b4576119b4614c31565b6040519080825280602002602001820160405280156119dd578160200160208202803683370190505b50905060005b83518110156109c6576001600160a01b03851660009081526098602052604081208551909190869084908110611a1b57611a1b615311565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054828281518110611a5657611a56615311565b6020908102919091010152611a6a8161533d565b90506119e3565b611a7a3361171d565b611afc5760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610abc565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611b3792919061544a565b60405180910390a25050565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b6020808301919091526001600160a01b0387811683850152851660608301526080820186905260a08083018590528351808403909101815260c0909201909252805191012060009081611bb961269c565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f0000000000000000000000000000000000000000000000000000000000000000909116906360f4062b90602401602060405180830381865afa158015611c6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c90919061565c565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f0000000000000000000000000000000000000000000000000000000000000000909116906394f649dd90602401600060405180830381865afa158015611d00573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2891908101906156d0565b9150915060008313611d3f57909590945092505050565b606080835160001415611df9576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082600081518110611db457611db4615311565b60200260200101906001600160a01b031690816001600160a01b0316815250508481600081518110611de857611de8615311565b602002602001018181525050611fa7565b8351611e0690600161578a565b6001600160401b03811115611e1d57611e1d614c31565b604051908082528060200260200182016040528015611e46578160200160208202803683370190505b50915081516001600160401b03811115611e6257611e62614c31565b604051908082528060200260200182016040528015611e8b578160200160208202803683370190505b50905060005b8451811015611f2557848181518110611eac57611eac615311565b6020026020010151838281518110611ec657611ec6615311565b60200260200101906001600160a01b031690816001600160a01b031681525050838181518110611ef857611ef8615311565b6020026020010151828281518110611f1257611f12615311565b6020908102919091010152600101611e91565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08260018451611f4a91906157a2565b81518110611f5a57611f5a615311565b60200260200101906001600160a01b031690816001600160a01b031681525050848160018451611f8a91906157a2565b81518110611f9a57611f9a615311565b6020026020010181815250505b9097909650945050505050565b60665460609060019060029081161415611fe05760405162461bcd60e51b8152600401610abc90615358565b611fe98361155a565b6120695760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610abc565b6120728361171d565b156120e55760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610abc565b6001600160a01b0383166121615760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610abc565b6001600160a01b038084166000818152609a6020526040902054909116903314806121945750336001600160a01b038216145b806121bb57506001600160a01b038181166000908152609960205260409020600101541633145b61222d5760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610abc565b60008061223986611bfc565b9092509050336001600160a01b0387161461228f57826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040902080546001600160a01b0319169055815161231157604080516000815260208101909152945061246f565b81516001600160401b0381111561232a5761232a614c31565b604051908082528060200260200182016040528015612353578160200160208202803683370190505b50945060005b825181101561246d576040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090508483815181106123b9576123b9615311565b6020026020010151826000815181106123d4576123d4615311565b60200260200101906001600160a01b031690816001600160a01b03168152505083838151811061240657612406615311565b60200260200101518160008151811061242157612421615311565b60200260200101818152505061243a89878b8585612836565b88848151811061244c5761244c615311565b602002602001018181525050505080806124659061533d565b915050612359565b505b50505050919050565b6124813361155a565b156124ff5760405162461bcd60e51b815260206004820152604260248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a20737460448201527f616b657220697320616c7265616479206163746976656c792064656c65676174606482015261195960f21b608482015260a401610abc565b6125088361171d565b6125895760405162461bcd60e51b815260206004820152604660248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a206f7060448201527f657261746f72206973206e6f74207265676973746572656420696e2045696765606482015265372630bcb2b960d11b608482015260a401610abc565b6110a333848484612fe9565b61259e3361171d565b61261c5760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610abc565b610fee3382612df6565b61262e6133f1565b6001600160a01b0381166126935760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610abc565b610fee816137f2565b60007f00000000000000000000000000000000000000000000000000000000000000004614156126cd575060975490565b6126d561375b565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561272d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127519190615479565b6001600160a01b0316336001600160a01b0316146127815760405162461bcd60e51b8152600401610abc90615496565b6066541981196066541916146127ff5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610abc565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016111dc565b60006001600160a01b0386166128cd5760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610abc565b82516129575760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610abc565b60005b8351811015612d04576001600160a01b038616156129b0576129b0868886848151811061298957612989615311565b60200260200101518685815181106129a3576129a3615311565b6020026020010151613376565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b03168482815181106129e0576129e0615311565b60200260200101516001600160a01b03161415612aa9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663beffbb8988858481518110612a3957612a39615311565b60200260200101516040518363ffffffff1660e01b8152600401612a729291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612a8c57600080fd5b505af1158015612aa0573d6000803e3d6000fd5b50505050612cfc565b846001600160a01b0316876001600160a01b03161480612b7b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639b4da03d858381518110612b0557612b05615311565b60200260200101516040518263ffffffff1660e01b8152600401612b3891906001600160a01b0391909116815260200190565b602060405180830381865afa158015612b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b79919061553d565b155b612c475760405162461bcd60e51b8152602060048201526084602482018190527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448301527f6e6451756575655769746864726177616c3a2077697468647261776572206d7560648301527f73742062652073616d652061646472657373206173207374616b657220696620908201527f746869726450617274795472616e7366657273466f7262696464656e2061726560a482015263081cd95d60e21b60c482015260e401610abc565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638c80d4e588868481518110612c8957612c89615311565b6020026020010151868581518110612ca357612ca3615311565b60200260200101516040518463ffffffff1660e01b8152600401612cc9939291906157b9565b600060405180830381600087803b158015612ce357600080fd5b505af1158015612cf7573d6000803e3d6000fd5b505050505b60010161295a565b506001600160a01b0386166000908152609f60205260408120805491829190612d2c8361533d565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff1681526020018681526020018581525090506000612d9482611641565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f990612de290839085906157dd565b60405180910390a198975050505050505050565b6213c680612e0a60608301604084016157f6565b63ffffffff161115612ebf5760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610abc565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff1690612efb90606084019084016157f6565b63ffffffff161015612f915760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610abc565b6001600160a01b03821660009081526099602052604090208190612fb58282615833565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611b379084906153f8565b606654600090600190811614156130125760405162461bcd60e51b8152600401610abc90615358565b6001600160a01b038085166000908152609960205260409020600101541680158015906130485750336001600160a01b03821614155b801561305d5750336001600160a01b03861614155b156131ca5742846020015110156130dc5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610abc565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff16156131765760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610abc565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff191660011790558501516131b79088908890859088906109ce565b90506131c8828287600001516141a3565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a360008061322988611bfc565b9150915060005b825181101561136257613277888a85848151811061325057613250615311565b602002602001015185858151811061326a5761326a615311565b602002602001015161393e565b600101613230565b6001600160a01b03811661330d5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610abc565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038085166000908152609860209081526040808320938616835292905290812080548392906133ad9084906157a2565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610f30939291906157b9565b6033546001600160a01b031633146117695760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610abc565b8281146134d35760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a20696e707574206c656e67746064820152690d040dad2e6dac2e8c6d60b31b608482015260a401610abc565b8260005b818110156136695760008686838181106134f3576134f3615311565b905060200201602081019061350891906149ff565b6001600160a01b038116600090815260a1602052604081205491925086868581811061353657613536615311565b90506020020135905062034bc08111156135fa5760405162461bcd60e51b815260206004820152607360248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a205f7769746864726177616c60648201527f44656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544860848201527244524157414c5f44454c41595f424c4f434b5360681b60a482015260c401610abc565b6001600160a01b038316600081815260a160209081526040918290208490558151928352820184905281018290527f0e7efa738e8b0ce6376a0c1af471655540d2e9a81647d7b09ed823018426576d9060600160405180910390a1505050806136629061533d565b90506134d7565b505050505050565b6065546001600160a01b031615801561369257506001600160a01b03821615155b6137145760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610abc565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26137578261327f565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b62034bc08111156138fd5760405162461bcd60e51b815260206004820152607160248201527f44656c65676174696f6e4d616e616765722e5f7365744d696e5769746864726160448201527f77616c44656c6179426c6f636b733a205f6d696e5769746864726177616c446560648201527f6c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844526084820152704157414c5f44454c41595f424c4f434b5360781b60a482015260c401610abc565b609d5460408051918252602082018390527fafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69910160405180910390a1609d55565b6001600160a01b0380851660009081526098602090815260408083209386168352929052908120805483929061397590849061578a565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610f30939291906157b9565b60006139c76105f387615896565b6000818152609e602052604090205490915060ff16613a485760405162461bcd60e51b815260206004820152604360248201526000805160206159c883398151915260448201527f645769746864726177616c3a20616374696f6e206973206e6f7420696e20717560648201526265756560e81b608482015260a401610abc565b609d544390613a5d60a0890160808a016157f6565b63ffffffff16613a6d919061578a565b1115613af55760405162461bcd60e51b815260206004820152605f60248201526000805160206159c883398151915260448201527f645769746864726177616c3a206d696e5769746864726177616c44656c61794260648201527f6c6f636b7320706572696f6420686173206e6f74207965742070617373656400608482015260a401610abc565b613b0560608701604088016149ff565b6001600160a01b0316336001600160a01b031614613b925760405162461bcd60e51b815260206004820152605060248201526000805160206159c883398151915260448201527f645769746864726177616c3a206f6e6c7920776974686472617765722063616e60648201526f1031b7b6b83632ba329030b1ba34b7b760811b608482015260a401610abc565b8115613c1457613ba560a08701876153af565b85149050613c145760405162461bcd60e51b815260206004820152604260248201526000805160206159c883398151915260448201527f645769746864726177616c3a20696e707574206c656e677468206d69736d61746064820152610c6d60f31b608482015260a401610abc565b6000818152609e60205260409020805460ff191690558115613d795760005b613c4060a08801886153af565b9050811015613d73574360a16000613c5b60a08b018b6153af565b85818110613c6b57613c6b615311565b9050602002016020810190613c8091906149ff565b6001600160a01b03168152602081019190915260400160002054613caa60a08a0160808b016157f6565b63ffffffff16613cba919061578a565b1115613cd85760405162461bcd60e51b8152600401610abc906158a2565b613d6b613ce860208901896149ff565b33613cf660a08b018b6153af565b85818110613d0657613d06615311565b9050602002016020810190613d1b91906149ff565b613d2860c08c018c6153af565b86818110613d3857613d38615311565b905060200201358a8a87818110613d5157613d51615311565b9050602002016020810190613d6691906149ff565b61435d565b600101613c33565b50614168565b336000908152609a60205260408120546001600160a01b0316905b613da160a08901896153af565b9050811015614165574360a16000613dbc60a08c018c6153af565b85818110613dcc57613dcc615311565b9050602002016020810190613de191906149ff565b6001600160a01b03168152602081019190915260400160002054613e0b60a08b0160808c016157f6565b63ffffffff16613e1b919061578a565b1115613e395760405162461bcd60e51b8152600401610abc906158a2565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0613e5b60a08a018a6153af565b83818110613e6b57613e6b615311565b9050602002016020810190613e8091906149ff565b6001600160a01b03161415613fd0576000613e9e60208a018a6149ff565b905060006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630e81073c83613edf60c08e018e6153af565b87818110613eef57613eef615311565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015613f43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f67919061565c565b6001600160a01b038084166000908152609a6020526040902054919250168015613fc857613fc88184613f9d60a08f018f6153af565b88818110613fad57613fad615311565b9050602002016020810190613fc291906149ff565b8561393e565b50505061415d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c4623ea13389898581811061401257614012615311565b905060200201602081019061402791906149ff565b61403460a08d018d6153af565b8681811061404457614044615311565b905060200201602081019061405991906149ff565b61406660c08e018e6153af565b8781811061407657614076615311565b60405160e088901b6001600160e01b03191681526001600160a01b03968716600482015294861660248601529290941660448401526020909102013560648201526084019050600060405180830381600087803b1580156140d657600080fd5b505af11580156140ea573d6000803e3d6000fd5b505050506001600160a01b0382161561415d5761415d823361410f60a08c018c6153af565b8581811061411f5761411f615311565b905060200201602081019061413491906149ff565b61414160c08d018d6153af565b8681811061415157614151615311565b9050602002013561393e565b600101613d94565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6001600160a01b0383163b156142bd57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906141e3908690869060040161592a565b602060405180830381865afa158015614200573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142249190615987565b6001600160e01b031916146110a35760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610abc565b826001600160a01b03166142d1838361449d565b6001600160a01b0316146110a35760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610abc565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014156144085760405162387b1360e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063387b1300906143d1908890889087906004016157b9565b600060405180830381600087803b1580156143eb57600080fd5b505af11580156143ff573d6000803e3d6000fd5b50505050614496565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c608c7f390608401600060405180830381600087803b15801561448257600080fd5b505af1158015611362573d6000803e3d6000fd5b5050505050565b60008060006144ac85856144b9565b915091506109c681614529565b6000808251604114156144f05760208301516040840151606085015160001a6144e4878285856146e4565b94509450505050614522565b82516040141561451a576020830151604084015161450f8683836147d1565b935093505050614522565b506000905060025b9250929050565b600081600481111561453d5761453d6159b1565b14156145465750565b600181600481111561455a5761455a6159b1565b14156145a85760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610abc565b60028160048111156145bc576145bc6159b1565b141561460a5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610abc565b600381600481111561461e5761461e6159b1565b14156146775760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610abc565b600481600481111561468b5761468b6159b1565b1415610fee5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610abc565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561471b57506000905060036147c8565b8460ff16601b1415801561473357508460ff16601c14155b1561474457506000905060046147c8565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614798573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166147c1576000600192509250506147c8565b9150600090505b94509492505050565b6000806001600160ff1b038316816147ee60ff86901c601b61578a565b90506147fc878288856146e4565b935093505050935093915050565b60008083601f84011261481c57600080fd5b5081356001600160401b0381111561483357600080fd5b6020830191508360208260051b850101111561452257600080fd5b6000806020838503121561486157600080fd5b82356001600160401b0381111561487757600080fd5b6148838582860161480a565b90969095509350505050565b6001600160a01b0381168114610fee57600080fd5b80356148af8161488f565b919050565b600080600080600060a086880312156148cc57600080fd5b85356148d78161488f565b945060208601356148e78161488f565b935060408601356148f78161488f565b94979396509394606081013594506080013592915050565b6020808252825182820181905260009190848201906040850190845b818110156149475783518352928401929184019160010161492b565b50909695505050505050565b60006060828403121561496557600080fd5b50919050565b60008083601f84011261497d57600080fd5b5081356001600160401b0381111561499457600080fd5b60208301915083602082850101111561452257600080fd5b6000806000608084860312156149c157600080fd5b6149cb8585614953565b925060608401356001600160401b038111156149e657600080fd5b6149f28682870161496b565b9497909650939450505050565b600060208284031215614a1157600080fd5b8135614a1c8161488f565b9392505050565b600080600060608486031215614a3857600080fd5b8335614a438161488f565b92506020840135614a538161488f565b929592945050506040919091013590565b600060208284031215614a7657600080fd5b5035919050565b60008060008060408587031215614a9357600080fd5b84356001600160401b0380821115614aaa57600080fd5b614ab68883890161480a565b90965094506020870135915080821115614acf57600080fd5b50614adc8782880161480a565b95989497509550505050565b60008060008060008060008060c0898b031215614b0457600080fd5b8835614b0f8161488f565b97506020890135614b1f8161488f565b9650604089013595506060890135945060808901356001600160401b0380821115614b4957600080fd5b614b558c838d0161480a565b909650945060a08b0135915080821115614b6e57600080fd5b50614b7b8b828c0161480a565b999c989b5096995094979396929594505050565b6000806000806000806000806080898b031215614bab57600080fd5b88356001600160401b0380821115614bc257600080fd5b614bce8c838d0161480a565b909a50985060208b0135915080821115614be757600080fd5b614bf38c838d0161480a565b909850965060408b0135915080821115614c0c57600080fd5b614c188c838d0161480a565b909650945060608b0135915080821115614b6e57600080fd5b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614c6957614c69614c31565b60405290565b604080519081016001600160401b0381118282101715614c6957614c69614c31565b604051601f8201601f191681016001600160401b0381118282101715614cb957614cb9614c31565b604052919050565b63ffffffff81168114610fee57600080fd5b80356148af81614cc1565b60006001600160401b03821115614cf757614cf7614c31565b5060051b60200190565b600082601f830112614d1257600080fd5b81356020614d27614d2283614cde565b614c91565b82815260059290921b84018101918181019086841115614d4657600080fd5b8286015b84811015614d6a578035614d5d8161488f565b8352918301918301614d4a565b509695505050505050565b600082601f830112614d8657600080fd5b81356020614d96614d2283614cde565b82815260059290921b84018101918181019086841115614db557600080fd5b8286015b84811015614d6a5780358352918301918301614db9565b600060e08284031215614de257600080fd5b614dea614c47565b9050614df5826148a4565b8152614e03602083016148a4565b6020820152614e14604083016148a4565b604082015260608201356060820152614e2f60808301614cd3565b608082015260a08201356001600160401b0380821115614e4e57600080fd5b614e5a85838601614d01565b60a084015260c0840135915080821115614e7357600080fd5b50614e8084828501614d75565b60c08301525092915050565b600060208284031215614e9e57600080fd5b81356001600160401b03811115614eb457600080fd5b614ec084828501614dd0565b949350505050565b600060208284031215614eda57600080fd5b813560ff81168114614a1c57600080fd5b8015158114610fee57600080fd5b600080600080600060808688031215614f1157600080fd5b85356001600160401b0380821115614f2857600080fd5b9087019060e0828a031215614f3c57600080fd5b90955060208701359080821115614f5257600080fd5b50614f5f8882890161480a565b909550935050604086013591506060860135614f7a81614eeb565b809150509295509295909350565b60008060408385031215614f9b57600080fd5b8235614fa68161488f565b91506020830135614fb68161488f565b809150509250929050565b600060408284031215614fd357600080fd5b614fdb614c6f565b905081356001600160401b0380821115614ff457600080fd5b818401915084601f83011261500857600080fd5b813560208282111561501c5761501c614c31565b61502e601f8301601f19168201614c91565b9250818352868183860101111561504457600080fd5b8181850182850137600081838501015282855280860135818601525050505092915050565b600080600080600060a0868803121561508157600080fd5b853561508c8161488f565b9450602086013561509c8161488f565b935060408601356001600160401b03808211156150b857600080fd5b6150c489838a01614fc1565b945060608801359150808211156150da57600080fd5b506150e788828901614fc1565b95989497509295608001359392505050565b6000806040838503121561510c57600080fd5b82356151178161488f565b915060208301356001600160401b0381111561513257600080fd5b61513e85828601614d01565b9150509250929050565b600081518084526020808501945080840160005b838110156151785781518752958201959082019060010161515c565b509495945050505050565b602081526000614a1c6020830184615148565b600080602083850312156151a957600080fd5b82356001600160401b038111156151bf57600080fd5b6148838582860161496b565b600080604083850312156151de57600080fd5b82356151e98161488f565b946020939093013593505050565b6000806000806080858703121561520d57600080fd5b84356152188161488f565b935060208501359250604085013561522f8161488f565b9396929550929360600135925050565b600081518084526020808501945080840160005b838110156151785781516001600160a01b031687529582019590820190600101615253565b60408152600061528b604083018561523f565b82810360208401526112208185615148565b6000806000606084860312156152b257600080fd5b83356152bd8161488f565b925060208401356001600160401b038111156152d857600080fd5b6152e486828701614fc1565b925050604084013590509250925092565b60006060828403121561530757600080fd5b614a1c8383614953565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561535157615351615327565b5060010190565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b60008235605e198336030181126153a557600080fd5b9190910192915050565b6000808335601e198436030181126153c657600080fd5b8301803591506001600160401b038211156153e057600080fd5b6020019150600581901b360382131561452257600080fd5b6060810182356154078161488f565b6001600160a01b0390811683526020840135906154238261488f565b166020830152604083013561543781614cc1565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60006020828403121561548b57600080fd5b8151614a1c8161488f565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b60006020828403121561554f57600080fd5b8151614a1c81614eeb565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de198336030181126153a557600080fd5b6000602082840312156155ca57600080fd5b8135614a1c81614eeb565b600060018060a01b03808351168452806020840151166020850152806040840151166040850152506060820151606084015263ffffffff608083015116608084015260a082015160e060a085015261563060e085018261523f565b905060c083015184820360c08601526112208282615148565b602081526000614a1c60208301846155d5565b60006020828403121561566e57600080fd5b5051919050565b600082601f83011261568657600080fd5b81516020615696614d2283614cde565b82815260059290921b840181019181810190868411156156b557600080fd5b8286015b84811015614d6a57805183529183019183016156b9565b600080604083850312156156e357600080fd5b82516001600160401b03808211156156fa57600080fd5b818501915085601f83011261570e57600080fd5b8151602061571e614d2283614cde565b82815260059290921b8401810191818101908984111561573d57600080fd5b948201945b838610156157645785516157558161488f565b82529482019490820190615742565b9188015191965090935050508082111561577d57600080fd5b5061513e85828601615675565b6000821982111561579d5761579d615327565b500190565b6000828210156157b4576157b4615327565b500390565b6001600160a01b039384168152919092166020820152604081019190915260600190565b828152604060208201526000614ec060408301846155d5565b60006020828403121561580857600080fd5b8135614a1c81614cc1565b80546001600160a01b0319166001600160a01b0392909216919091179055565b813561583e8161488f565b6158488183615813565b5060018101602083013561585b8161488f565b6158658183615813565b50604083013561587481614cc1565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b60006117513683614dd0565b6020808252606e908201526000805160206159c883398151915260408201527f645769746864726177616c3a207769746864726177616c44656c6179426c6f6360608201527f6b7320706572696f6420686173206e6f74207965742070617373656420666f7260808201526d207468697320737472617465677960901b60a082015260c00190565b82815260006020604081840152835180604085015260005b8181101561595e57858101830151858201606001528201615942565b81811115615970576000606083870101525b50601f01601f191692909201606001949350505050565b60006020828403121561599957600080fd5b81516001600160e01b031981168114614a1c57600080fd5b634e487b7160e01b600052602160045260246000fdfe44656c65676174696f6e4d616e616765722e5f636f6d706c6574655175657565a264697066735822122026b1fed484881843a1d9811e493fabdf693f068a2dfa3af9289c2a7fba74873e64736f6c634300080c0033
3014    /// ```
3015    #[rustfmt::skip]
3016    #[allow(clippy::all)]
3017    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
3018        b"a\x01\0`@R4\x80\x15b\0\0\x12W`\0\x80\xFD[P`@Qb\0\\F8\x03\x80b\0\\F\x839\x81\x01`@\x81\x90Rb\0\x005\x91b\0\x01@V[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\x80R\x80\x82\x16`\xC0R\x82\x16`\xA0Rb\0\0Xb\0\0eV[PPF`\xE0RPb\0\x01\x94V[`\0Ta\x01\0\x90\x04`\xFF\x16\x15b\0\0\xD2W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`'`$\x82\x01R\x7FInitializable: contract is initi`D\x82\x01Rfalizing`\xC8\x1B`d\x82\x01R`\x84\x01`@Q\x80\x91\x03\x90\xFD[`\0T`\xFF\x90\x81\x16\x10\x15b\0\x01%W`\0\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\x14b\0\x01=W`\0\x80\xFD[PV[`\0\x80`\0``\x84\x86\x03\x12\x15b\0\x01VW`\0\x80\xFD[\x83Qb\0\x01c\x81b\0\x01'V[` \x85\x01Q\x90\x93Pb\0\x01v\x81b\0\x01'V[`@\x85\x01Q\x90\x92Pb\0\x01\x89\x81b\0\x01'V[\x80\x91PP\x92P\x92P\x92V[`\x80Q`\xA0Q`\xC0Q`\xE0QaZ\x1Db\0\x02)`\09`\0a&\xA0\x01R`\0\x81\x81a\x05\xB1\x01R\x81\x81a\x10.\x01R\x81\x81a\x13\xAA\x01R\x81\x81a\x1C#\x01R\x81\x81a)\xF9\x01R\x81\x81a>\xAC\x01RaC\x98\x01R`\0a\x07b\x01R`\0\x81\x81a\x04\xF9\x01R\x81\x81a\x0F\xFC\x01R\x81\x81a\x13x\x01R\x81\x81a\x1C\xB7\x01R\x81\x81a*\xC6\x01R\x81\x81a,I\x01R\x81\x81a?\xD2\x01RaD>\x01RaZ\x1D`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x03BW`\x005`\xE0\x1C\x80cc[\xBD\x10\x11a\x01\xB8W\x80c\xB7\xF0n\xBE\x11a\x01\x04W\x80c\xCF\x80\x87>\x11a\0\xA2W\x80c\xF1ar\xB0\x11a\0|W\x80c\xF1ar\xB0\x14a\t\x08W\x80c\xF2\xFD\xE3\x8B\x14a\t\x1BW\x80c\xF6\x98\xDA%\x14a\t.W\x80c\xFA\xBC\x1C\xBC\x14a\t6W`\0\x80\xFD[\x80c\xCF\x80\x87>\x14a\x08\xC1W\x80c\xDA\x8B\xE8d\x14a\x08\xE2W\x80c\xEE\xA9\x06K\x14a\x08\xF5W`\0\x80\xFD[\x80c\xC4\x887Z\x11a\0\xDEW\x80c\xC4\x887Z\x14a\x07\xDEW\x80c\xC5\xE4\x80\xDB\x14a\x07\xFEW\x80c\xC9KQ\x11\x14a\x08\xA4W\x80c\xCAf\x1C\x04\x14a\x08\xB7W`\0\x80\xFD[\x80c\xB7\xF0n\xBE\x14a\x07\x84W\x80c\xBBE\xFE\xF2\x14a\x07\xA7W\x80c\xC4H\xFE\xB8\x14a\x07\xD5W`\0\x80\xFD[\x80c\x88o\x11\x95\x11a\x01qW\x80c\x91\x04\xC3\x19\x11a\x01KW\x80c\x91\x04\xC3\x19\x14a\x07\x0FW\x80c\x99\xBE\x81\xC8\x14a\x07*W\x80c\xA1x\x84\x84\x14a\x07=W\x80c\xB14Bq\x14a\x07]W`\0\x80\xFD[\x80c\x88o\x11\x95\x14a\x06\xCBW\x80c\x8D\xA5\xCB[\x14a\x06\xDEW\x80c\x90\x04\x13G\x14a\x06\xEFW`\0\x80\xFD[\x80cc[\xBD\x10\x14a\x066W\x80ce\xDA\x12d\x14a\x06IW\x80cmp\xF7\xAE\x14a\x06rW\x80cqP\x18\xA6\x14a\x06\x85W\x80cw\x8EU\xF3\x14a\x06\x8DW\x80c\x7FT\x80q\x14a\x06\xB8W`\0\x80\xFD[\x80c(\xA5s\xAE\x11a\x02\x92W\x80cFe\xBC\xDA\x11a\x020W\x80cY{6\xDA\x11a\x02\nW\x80cY{6\xDA\x14a\x05\xE5W\x80cZ\xC8j\xB7\x14a\x05\xF8W\x80c\\\x97Z\xBB\x14a\x06\x1BW\x80c`\xD7\xFA\xED\x14a\x06#W`\0\x80\xFD[\x80cFe\xBC\xDA\x14a\x05\xACW\x80cO\xC4\x0Ba\x14a\x05\xD3W\x80cY\\jg\x14a\x05\xDDW`\0\x80\xFD[\x80c9\xB7\x0E8\x11a\x02lW\x80c9\xB7\x0E8\x14a\x04\xF4W\x80c<\xDE\xB5\xE0\x14a\x053W\x80c>(9\x1D\x14a\x05bW\x80cC7s\x82\x14a\x05\x85W`\0\x80\xFD[\x80c(\xA5s\xAE\x14a\x04\xAEW\x80c)\xC7}O\x14a\x04\xC1W\x80c3@C\x96\x14a\x04\xE1W`\0\x80\xFD[\x80c\x13-Ig\x11a\x02\xFFW\x80c\x16\x92\x83e\x11a\x02\xD9W\x80c\x16\x92\x83e\x14a\x04(W\x80c\x1B\xBC\xE0\x91\x14a\x04aW\x80c `kp\x14a\x04tW\x80c\"\xBF@\xE4\x14a\x04\x9BW`\0\x80\xFD[\x80c\x13-Ig\x14a\x03\xEFW\x80c\x13d9\xDD\x14a\x04\x02W\x80c\x15\"\xBF\x02\x14a\x04\x15W`\0\x80\xFD[\x80c\x04I\xCA9\x14a\x03GW\x80c\x04\xA4\xF9y\x14a\x03mW\x80c\x0B\x9FHz\x14a\x03\x94W\x80c\r\xD8\xDD\x02\x14a\x03\xA7W\x80c\x0FX\x9EY\x14a\x03\xC7W\x80c\x10\xD6z/\x14a\x03\xDCW[`\0\x80\xFD[a\x03Za\x03U6`\x04aHNV[a\tIV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x03Z\x7F\x14\xBD\xE6t\xC9\xF6K*\xD0\x0E\xAA\xEEJ\x8B\xED\x1F\xAB\xEF5\xC7P~<[\x9C\xFC\x946\x90\x9A-\xAD\x81V[a\x03Za\x03\xA26`\x04aH\xB4V[a\t\xCEV[a\x03\xBAa\x03\xB56`\x04aHNV[a\n\x90V[`@Qa\x03d\x91\x90aI\x0FV[a\x03\xDAa\x03\xD56`\x04aI\xACV[a\r\xF9V[\0[a\x03\xDAa\x03\xEA6`\x04aI\xFFV[a\x0F>V[a\x03\xDAa\x03\xFD6`\x04aJ#V[a\x0F\xF1V[a\x03\xDAa\x04\x106`\x04aJdV[a\x10\xA8V[a\x03\xDAa\x04#6`\x04aJ}V[a\x11\xE7V[a\x03Za\x0466`\x04aI\xFFV[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x90V[a\x03Za\x04o6`\x04aJ#V[a\x11\xFBV[a\x03Z\x7F\x8C\xAD\x95h{\xA8,,\xE5\x0Et\xF7\xB7Td^Q\x17\xC3\xA5\xBE\xC8\x15\x1C\x07&\xD5\x85y\x80\xA8f\x81V[a\x03\xDAa\x04\xA96`\x04aJ\xE8V[a\x12)V[a\x03\xDAa\x04\xBC6`\x04aJ#V[a\x13mV[a\x03Za\x04\xCF6`\x04aI\xFFV[`\x9B` R`\0\x90\x81R`@\x90 T\x81V[a\x03\xDAa\x04\xEF6`\x04aK\x8FV[a\x14\x1DV[a\x05\x1B\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[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x03dV[a\x05\x1Ba\x05A6`\x04aI\xFFV[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T\x16\x90V[a\x05ua\x05p6`\x04aI\xFFV[a\x15ZV[`@Q\x90\x15\x15\x81R` \x01a\x03dV[a\x03Z\x7F9\x11\x1B\xC4\xA4\xD6\x88\xE1\xF6\x85\x12=t\x97\xD4aSp\x15*\x8E\xE4\xA0Y>d{\xD0j\xD8\xBB\x0B\x81V[a\x05\x1B\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[a\x03Zb\x13\xC6\x80\x81V[a\x03\xDAa\x15zV[a\x03Za\x05\xF36`\x04aN\x8CV[a\x16AV[a\x05ua\x06\x066`\x04aN\xC8V[`fT`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`fTa\x03ZV[a\x03\xDAa\x0616`\x04aN\xF9V[a\x16qV[a\x03\xDAa\x06D6`\x04aJdV[a\x17\x0CV[a\x05\x1Ba\x06W6`\x04aI\xFFV[`\x9A` R`\0\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x05ua\x06\x806`\x04aI\xFFV[a\x17\x1DV[a\x03\xDAa\x17WV[a\x03Za\x06\x9B6`\x04aO\x88V[`\x98` \x90\x81R`\0\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[a\x03\xDAa\x06\xC66`\x04aPiV[a\x17kV[`eTa\x05\x1B\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`3T`\x01`\x01`\xA0\x1B\x03\x16a\x05\x1BV[a\x07\x02a\x06\xFD6`\x04aP\xF9V[a\x19\x97V[`@Qa\x03d\x91\x90aQ\x83V[a\x05\x1Bs\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0\x81V[a\x03\xDAa\x0786`\x04aQ\x96V[a\x1AqV[a\x03Za\x07K6`\x04aI\xFFV[`\x9F` R`\0\x90\x81R`@\x90 T\x81V[a\x05\x1B\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[a\x05ua\x07\x926`\x04aJdV[`\x9E` R`\0\x90\x81R`@\x90 T`\xFF\x16\x81V[a\x05ua\x07\xB56`\x04aQ\xCBV[`\x9C` \x90\x81R`\0\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T`\xFF\x16\x81V[a\x03Z`\x9DT\x81V[a\x03Za\x07\xEC6`\x04aI\xFFV[`\xA1` R`\0\x90\x81R`@\x90 T\x81V[a\x08na\x08\x0C6`\x04aI\xFFV[`@\x80Q``\x80\x82\x01\x83R`\0\x80\x83R` \x80\x84\x01\x82\x90R\x92\x84\x01\x81\x90R`\x01`\x01`\xA0\x1B\x03\x94\x85\x16\x81R`\x99\x83R\x83\x90 \x83Q\x91\x82\x01\x84R\x80T\x85\x16\x82R`\x01\x01T\x93\x84\x16\x91\x81\x01\x91\x90\x91R`\x01`\xA0\x1B\x90\x92\x04c\xFF\xFF\xFF\xFF\x16\x90\x82\x01R\x90V[`@\x80Q\x82Q`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x82R` \x80\x85\x01Q\x90\x91\x16\x90\x82\x01R\x91\x81\x01Qc\xFF\xFF\xFF\xFF\x16\x90\x82\x01R``\x01a\x03dV[a\x03Za\x08\xB26`\x04aQ\xF7V[a\x1BCV[a\x03Zb\x03K\xC0\x81V[a\x08\xD4a\x08\xCF6`\x04aI\xFFV[a\x1B\xFCV[`@Qa\x03d\x92\x91\x90aRxV[a\x03\xBAa\x08\xF06`\x04aI\xFFV[a\x1F\xB4V[a\x03\xDAa\t\x036`\x04aR\x9DV[a$xV[a\x03\xDAa\t\x166`\x04aR\xF5V[a%\x95V[a\x03\xDAa\t)6`\x04aI\xFFV[a&&V[a\x03Za&\x9CV[a\x03\xDAa\tD6`\x04aJdV[a&\xDAV[`\x9DT`\0\x90\x81[\x83\x81\x10\x15a\t\xC6W`\0`\xA1`\0\x87\x87\x85\x81\x81\x10a\tqWa\tqaS\x11V[\x90P` \x02\x01` \x81\x01\x90a\t\x86\x91\x90aI\xFFV[`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01`\0 T\x90P\x82\x81\x11\x15a\t\xB5W\x80\x92P[Pa\t\xBF\x81aS=V[\x90Pa\tQV[P\x93\x92PPPV[`@\x80Q\x7F\x14\xBD\xE6t\xC9\xF6K*\xD0\x0E\xAA\xEEJ\x8B\xED\x1F\xAB\xEF5\xC7P~<[\x9C\xFC\x946\x90\x9A-\xAD` \x80\x83\x01\x91\x90\x91R`\x01`\x01`\xA0\x1B\x03\x86\x81\x16\x83\x85\x01R\x88\x81\x16``\x84\x01R\x87\x16`\x80\x83\x01R`\xA0\x82\x01\x85\x90R`\xC0\x80\x83\x01\x85\x90R\x83Q\x80\x84\x03\x90\x91\x01\x81R`\xE0\x90\x92\x01\x90\x92R\x80Q\x91\x01 `\0\x90\x81a\nLa&\x9CV[`@Qa\x19\x01`\xF0\x1B` \x82\x01R`\"\x81\x01\x91\x90\x91R`B\x81\x01\x83\x90R`b\x01`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x91\x90R\x80Q` \x90\x91\x01 \x98\x97PPPPPPPPV[`fT``\x90`\x01\x90`\x02\x90\x81\x16\x14\x15a\n\xC5W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aSXV[`@Q\x80\x91\x03\x90\xFD[`\0\x83`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\xDFWa\n\xDFaL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0B\x08W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P3`\0\x90\x81R`\x9A` R`@\x81 T\x91\x92P`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90[\x85\x81\x10\x15a\r\xEEW\x86\x86\x82\x81\x81\x10a\x0BCWa\x0BCaS\x11V[\x90P` \x02\x81\x01\x90a\x0BU\x91\x90aS\x8FV[a\x0Bc\x90` \x81\x01\x90aS\xAFV[\x90P\x87\x87\x83\x81\x81\x10a\x0BwWa\x0BwaS\x11V[\x90P` \x02\x81\x01\x90a\x0B\x89\x91\x90aS\x8FV[a\x0B\x93\x90\x80aS\xAFV[\x90P\x14a\x0C\x08W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FDelegationManager.queueWithdrawa`D\x82\x01R\x7Fl: input length mismatch\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\n\xBCV[3\x87\x87\x83\x81\x81\x10a\x0C\x1BWa\x0C\x1BaS\x11V[\x90P` \x02\x81\x01\x90a\x0C-\x91\x90aS\x8FV[a\x0C>\x90``\x81\x01\x90`@\x01aI\xFFV[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x0C\xBAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R\x7FDelegationManager.queueWithdrawa`D\x82\x01R\x7Fl: withdrawer must be staker\0\0\0\0`d\x82\x01R`\x84\x01a\n\xBCV[a\r\xBF3\x83\x89\x89\x85\x81\x81\x10a\x0C\xD1Wa\x0C\xD1aS\x11V[\x90P` \x02\x81\x01\x90a\x0C\xE3\x91\x90aS\x8FV[a\x0C\xF4\x90``\x81\x01\x90`@\x01aI\xFFV[\x8A\x8A\x86\x81\x81\x10a\r\x06Wa\r\x06aS\x11V[\x90P` \x02\x81\x01\x90a\r\x18\x91\x90aS\x8FV[a\r\"\x90\x80aS\xAFV[\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847`\0\x92\x01\x91\x90\x91RP\x8E\x92P\x8D\x91P\x88\x90P\x81\x81\x10a\rhWa\rhaS\x11V[\x90P` \x02\x81\x01\x90a\rz\x91\x90aS\x8FV[a\r\x88\x90` \x81\x01\x90aS\xAFV[\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa(6\x92PPPV[\x83\x82\x81Q\x81\x10a\r\xD1Wa\r\xD1aS\x11V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80a\r\xE6\x81aS=V[\x91PPa\x0B)V[P\x90\x95\x94PPPPPV[a\x0E\x023a\x15ZV[\x15a\x0E\x88W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`J`$\x82\x01R\x7FDelegationManager.registerAsOper`D\x82\x01R\x7Fator: caller is already actively`d\x82\x01Ri\x08\x19\x19[\x19Y\xD8]\x19Y`\xB2\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[a\x0E\x923\x84a-\xF6V[`@\x80Q\x80\x82\x01\x90\x91R``\x81R`\0` \x82\x01Ra\x0E\xB43\x80\x83`\0a/\xE9V[3`\x01`\x01`\xA0\x1B\x03\x16\x7F\x8E\x84\x85X:#\x10\xD4\x1F|\x82\xB9B}\x0B\xD4\x9B\xADt\xBB\x9C\xFF\x9D4\x02\xA2\x9D\x8F\x9B(\xA0\xE2\x85`@Qa\x0E\xED\x91\x90aS\xF8V[`@Q\x80\x91\x03\x90\xA23`\x01`\x01`\xA0\x1B\x03\x16\x7F\x02\xA9\x19\xED\x0E*\xCA\xD1\xDD\x90\xF1~\xF2\xFAJ\xE5F.\xE13\x91p\x03J\x851\xCC\xA4\xB6p\x80\x90\x84\x84`@Qa\x0F0\x92\x91\x90aTJV[`@Q\x80\x91\x03\x90\xA2PPPPV[`e`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xEA\xB6mz`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0F\x91W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xB5\x91\x90aTyV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x0F\xE5W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aT\x96V[a\x0F\xEE\x81a2\x7FV[PV[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\x14\x80a\x10PWP3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14[a\x10lW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aT\xE0V[a\x10u\x83a\x15ZV[\x15a\x10\xA3W`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\0\x90\x81R`\x9A` R`@\x90 T\x16a\x10\xA1\x81\x85\x85\x85a3vV[P[PPPV[`eT`@Qc#}\xFBG`\xE1\x1B\x81R3`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cF\xFB\xF6\x8E\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x10\xF0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11\x14\x91\x90aU=V[a\x110W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aUZV[`fT\x81\x81\x16\x14a\x11\xA9W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FPausable.pause: invalid attempt `D\x82\x01R\x7Fto unpause functionality\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\n\xBCV[`f\x81\x90U`@Q\x81\x81R3\x90\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=\x90` \x01[`@Q\x80\x91\x03\x90\xA2PV[a\x11\xEFa3\xF1V[a\x10\xA1\x84\x84\x84\x84a4KV[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9B` R`@\x81 Ta\x12 \x85\x82\x86\x86a\x1BCV[\x95\x94PPPPPV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x12IWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x12cWP0;\x15\x80\x15a\x12cWP`\0T`\xFF\x16`\x01\x14[a\x12\xC6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`.`$\x82\x01R\x7FInitializable: contract is alrea`D\x82\x01Rm\x19\x1EH\x1A[\x9A]\x1AX[\x1A^\x99Y`\x92\x1B`d\x82\x01R`\x84\x01a\n\xBCV[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x12\xE9W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x12\xF3\x88\x88a6qV[a\x12\xFBa7[V[`\x97Ua\x13\x07\x89a7\xF2V[a\x13\x10\x86a8DV[a\x13\x1C\x85\x85\x85\x85a4KV[\x80\x15a\x13bW`\0\x80Ta\xFF\0\x19\x16\x90U`@Q`\x01\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[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\x14\x80a\x13\xCCWP3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14[a\x13\xE8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aT\xE0V[a\x13\xF1\x83a\x15ZV[\x15a\x10\xA3W`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\0\x90\x81R`\x9A` R`@\x90 T\x16a\x10\xA1\x81\x85\x85\x85a9>V[`fT`\x02\x90`\x04\x90\x81\x16\x14\x15a\x14FW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aSXV[`\x02`\xC9T\x14\x15a\x14\x99W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\n\xBCV[`\x02`\xC9U`\0[\x88\x81\x10\x15a\x15IWa\x159\x8A\x8A\x83\x81\x81\x10a\x14\xBEWa\x14\xBEaS\x11V[\x90P` \x02\x81\x01\x90a\x14\xD0\x91\x90aU\xA2V[\x89\x89\x84\x81\x81\x10a\x14\xE2Wa\x14\xE2aS\x11V[\x90P` \x02\x81\x01\x90a\x14\xF4\x91\x90aS\xAFV[\x89\x89\x86\x81\x81\x10a\x15\x06Wa\x15\x06aS\x11V[\x90P` \x02\x015\x88\x88\x87\x81\x81\x10a\x15\x1FWa\x15\x1FaS\x11V[\x90P` \x02\x01` \x81\x01\x90a\x154\x91\x90aU\xB8V[a9\xB9V[a\x15B\x81aS=V[\x90Pa\x14\xA1V[PP`\x01`\xC9UPPPPPPPPV[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16`\0\x90\x81R`\x9A` R`@\x90 T\x16\x15\x15\x90V[`eT`@Qc#}\xFBG`\xE1\x1B\x81R3`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cF\xFB\xF6\x8E\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x15\xC2W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15\xE6\x91\x90aU=V[a\x16\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aUZV[`\0\x19`f\x81\x90U`@Q\x90\x81R3\x90\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=\x90` \x01`@Q\x80\x91\x03\x90\xA2V[`\0\x81`@Q` \x01a\x16T\x91\x90aVIV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[`fT`\x02\x90`\x04\x90\x81\x16\x14\x15a\x16\x9AW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aSXV[`\x02`\xC9T\x14\x15a\x16\xEDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\n\xBCV[`\x02`\xC9Ua\x16\xFF\x86\x86\x86\x86\x86a9\xB9V[PP`\x01`\xC9UPPPPV[a\x17\x14a3\xF1V[a\x0F\xEE\x81a8DV[`\0`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x80\x15\x90a\x17QWP`\x01`\x01`\xA0\x1B\x03\x80\x83\x16`\0\x81\x81R`\x9A` R`@\x90 T\x90\x91\x16\x14[\x92\x91PPV[a\x17_a3\xF1V[a\x17i`\0a7\xF2V[V[B\x83` \x01Q\x10\x15a\x17\xEFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`A`$\x82\x01R\x7FDelegationManager.delegateToBySi`D\x82\x01R\x7Fgnature: staker signature expire`d\x82\x01R`\x19`\xFA\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[a\x17\xF8\x85a\x15ZV[\x15a\x18\x81W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`M`$\x82\x01R\x7FDelegationManager.delegateToBySi`D\x82\x01R\x7Fgnature: staker is already activ`d\x82\x01Rl\x19[\x1EH\x19\x19[\x19Y\xD8]\x19Y`\x9A\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[a\x18\x8A\x84a\x17\x1DV[a\x19\x16W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`Q`$\x82\x01R\x7FDelegationManager.delegateToBySi`D\x82\x01R\x7Fgnature: operator is not registe`d\x82\x01Rp92\xB2\x104\xB7\x10\"\xB4\xB3\xB2\xB7&0\xBC\xB2\xB9`y\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[`\0`\x9B`\0\x87`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01`\0 T\x90P`\0a\x19R\x87\x83\x88\x88` \x01Qa\x1BCV[`\x01`\x01`\xA0\x1B\x03\x88\x16`\0\x90\x81R`\x9B` R`@\x90 `\x01\x84\x01\x90U\x85Q\x90\x91Pa\x19\x82\x90\x88\x90\x83\x90aA\xA3V[a\x19\x8E\x87\x87\x86\x86a/\xE9V[PPPPPPPV[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x19\xB4Wa\x19\xB4aL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x19\xDDW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\t\xC6W`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x98` R`@\x81 \x85Q\x90\x91\x90\x86\x90\x84\x90\x81\x10a\x1A\x1BWa\x1A\x1BaS\x11V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01`\0 T\x82\x82\x81Q\x81\x10a\x1AVWa\x1AVaS\x11V[` \x90\x81\x02\x91\x90\x91\x01\x01Ra\x1Aj\x81aS=V[\x90Pa\x19\xE3V[a\x1Az3a\x17\x1DV[a\x1A\xFCW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R\x7FDelegationManager.updateOperator`D\x82\x01R\x7FMetadataURI: caller must be an o`d\x82\x01Rf82\xB90\xBA7\xB9`\xC9\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[3`\x01`\x01`\xA0\x1B\x03\x16\x7F\x02\xA9\x19\xED\x0E*\xCA\xD1\xDD\x90\xF1~\xF2\xFAJ\xE5F.\xE13\x91p\x03J\x851\xCC\xA4\xB6p\x80\x90\x83\x83`@Qa\x1B7\x92\x91\x90aTJV[`@Q\x80\x91\x03\x90\xA2PPV[`@\x80Q\x7F9\x11\x1B\xC4\xA4\xD6\x88\xE1\xF6\x85\x12=t\x97\xD4aSp\x15*\x8E\xE4\xA0Y>d{\xD0j\xD8\xBB\x0B` \x80\x83\x01\x91\x90\x91R`\x01`\x01`\xA0\x1B\x03\x87\x81\x16\x83\x85\x01R\x85\x16``\x83\x01R`\x80\x82\x01\x86\x90R`\xA0\x80\x83\x01\x85\x90R\x83Q\x80\x84\x03\x90\x91\x01\x81R`\xC0\x90\x92\x01\x90\x92R\x80Q\x91\x01 `\0\x90\x81a\x1B\xB9a&\x9CV[`@Qa\x19\x01`\xF0\x1B` \x82\x01R`\"\x81\x01\x91\x90\x91R`B\x81\x01\x83\x90R`b\x01`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x91\x90R\x80Q` \x90\x91\x01 \x97\x96PPPPPPPV[`@Qc`\xF4\x06+`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x81\x16`\x04\x83\x01R``\x91\x82\x91`\0\x91\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`\xF4\x06+\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1ClW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1C\x90\x91\x90aV\\V[`@Qc\x94\xF6I\xDD`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x86\x81\x16`\x04\x83\x01R\x91\x92P`\0\x91\x82\x91\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\x94\xF6I\xDD\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1D\0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1D(\x91\x90\x81\x01\x90aV\xD0V[\x91P\x91P`\0\x83\x13a\x1D?W\x90\x95\x90\x94P\x92PPPV[``\x80\x83Q`\0\x14\x15a\x1D\xF9W`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x90` \x80\x83\x01\x90\x806\x837PP`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x92\x94P\x90P` \x80\x83\x01\x90\x806\x837\x01\x90PP\x90Ps\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0\x82`\0\x81Q\x81\x10a\x1D\xB4Wa\x1D\xB4aS\x11V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x84\x81`\0\x81Q\x81\x10a\x1D\xE8Wa\x1D\xE8aS\x11V[` \x02` \x01\x01\x81\x81RPPa\x1F\xA7V[\x83Qa\x1E\x06\x90`\x01aW\x8AV[`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1E\x1DWa\x1E\x1DaL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1EFW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x91P\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1EbWa\x1EbaL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1E\x8BW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x84Q\x81\x10\x15a\x1F%W\x84\x81\x81Q\x81\x10a\x1E\xACWa\x1E\xACaS\x11V[` \x02` \x01\x01Q\x83\x82\x81Q\x81\x10a\x1E\xC6Wa\x1E\xC6aS\x11V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x83\x81\x81Q\x81\x10a\x1E\xF8Wa\x1E\xF8aS\x11V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x1F\x12Wa\x1F\x12aS\x11V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x1E\x91V[Ps\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0\x82`\x01\x84Qa\x1FJ\x91\x90aW\xA2V[\x81Q\x81\x10a\x1FZWa\x1FZaS\x11V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x84\x81`\x01\x84Qa\x1F\x8A\x91\x90aW\xA2V[\x81Q\x81\x10a\x1F\x9AWa\x1F\x9AaS\x11V[` \x02` \x01\x01\x81\x81RPP[\x90\x97\x90\x96P\x94PPPPPV[`fT``\x90`\x01\x90`\x02\x90\x81\x16\x14\x15a\x1F\xE0W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aSXV[a\x1F\xE9\x83a\x15ZV[a iW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R\x7FDelegationManager.undelegate: st\x90\x82\x01R\x7Faker must be delegated to undele`d\x82\x01Rcgate`\xE0\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[a r\x83a\x17\x1DV[\x15a \xE5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R\x7FDelegationManager.undelegate: op`D\x82\x01R\x7Ferators cannot be undelegated\0\0\0`d\x82\x01R`\x84\x01a\n\xBCV[`\x01`\x01`\xA0\x1B\x03\x83\x16a!aW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R\x7FDelegationManager.undelegate: ca`D\x82\x01R\x7Fnnot undelegate zero address\0\0\0\0`d\x82\x01R`\x84\x01a\n\xBCV[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\0\x81\x81R`\x9A` R`@\x90 T\x90\x91\x16\x903\x14\x80a!\x94WP3`\x01`\x01`\xA0\x1B\x03\x82\x16\x14[\x80a!\xBBWP`\x01`\x01`\xA0\x1B\x03\x81\x81\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T\x163\x14[a\"-W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R\x7FDelegationManager.undelegate: ca`D\x82\x01R\x7Fller cannot undelegate staker\0\0\0`d\x82\x01R`\x84\x01a\n\xBCV[`\0\x80a\"9\x86a\x1B\xFCV[\x90\x92P\x90P3`\x01`\x01`\xA0\x1B\x03\x87\x16\x14a\"\x8FW\x82`\x01`\x01`\xA0\x1B\x03\x16\x86`\x01`\x01`\xA0\x1B\x03\x16\x7F\xF0\xED\xDF\x07\xE6\xEA\x14\xF3\x88\xB4~\x1E\x94\xA0\xF4d\xEC\xBD\x9E\xEDAq\x13\x0E\x0F\xC0\xE9\x9F\xB4\x03\n\x8A`@Q`@Q\x80\x91\x03\x90\xA3[\x82`\x01`\x01`\xA0\x1B\x03\x16\x86`\x01`\x01`\xA0\x1B\x03\x16\x7F\xFE\xE3\tf\xA2V\xB7\x1E\x14\xBC\x0E\xBF\xC9C\x15\xE2\x8E\xF4\xA9zq1\xA9\xE2\xB7\xA3\x10\xA7:\xF4Fv`@Q`@Q\x80\x91\x03\x90\xA3`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x90\x81R`\x9A` R`@\x90 \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U\x81Qa#\x11W`@\x80Q`\0\x81R` \x81\x01\x90\x91R\x94Pa$oV[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a#*Wa#*aL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a#SW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x94P`\0[\x82Q\x81\x10\x15a$mW`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91` \x80\x83\x01\x90\x806\x837PP`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x92\x93P`\0\x92\x91P` \x80\x83\x01\x90\x806\x837\x01\x90PP\x90P\x84\x83\x81Q\x81\x10a#\xB9Wa#\xB9aS\x11V[` \x02` \x01\x01Q\x82`\0\x81Q\x81\x10a#\xD4Wa#\xD4aS\x11V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x83\x83\x81Q\x81\x10a$\x06Wa$\x06aS\x11V[` \x02` \x01\x01Q\x81`\0\x81Q\x81\x10a$!Wa$!aS\x11V[` \x02` \x01\x01\x81\x81RPPa$:\x89\x87\x8B\x85\x85a(6V[\x88\x84\x81Q\x81\x10a$LWa$LaS\x11V[` \x02` \x01\x01\x81\x81RPPPP\x80\x80a$e\x90aS=V[\x91PPa#YV[P[PPPP\x91\x90PV[a$\x813a\x15ZV[\x15a$\xFFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`B`$\x82\x01R\x7FDelegationManager.delegateTo: st`D\x82\x01R\x7Faker is already actively delegat`d\x82\x01Ra\x19Y`\xF2\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[a%\x08\x83a\x17\x1DV[a%\x89W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`F`$\x82\x01R\x7FDelegationManager.delegateTo: op`D\x82\x01R\x7Ferator is not registered in Eige`d\x82\x01Re7&0\xBC\xB2\xB9`\xD1\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[a\x10\xA33\x84\x84\x84a/\xE9V[a%\x9E3a\x17\x1DV[a&\x1CW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R\x7FDelegationManager.modifyOperator`D\x82\x01R\x7FDetails: caller must be an opera`d\x82\x01Rb:7\xB9`\xE9\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[a\x0F\xEE3\x82a-\xF6V[a&.a3\xF1V[`\x01`\x01`\xA0\x1B\x03\x81\x16a&\x93W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\n\xBCV[a\x0F\xEE\x81a7\xF2V[`\0\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\0F\x14\x15a&\xCDWP`\x97T\x90V[a&\xD5a7[V[\x90P\x90V[`e`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xEA\xB6mz`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a'-W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a'Q\x91\x90aTyV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a'\x81W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aT\x96V[`fT\x19\x81\x19`fT\x19\x16\x14a'\xFFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FPausable.unpause: invalid attemp`D\x82\x01R\x7Ft to pause functionality\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\n\xBCV[`f\x81\x90U`@Q\x81\x81R3\x90\x7F5\x82\xD1\x82\x8E&\xBFV\xBD\x80\x15\x02\xBC\x02\x1A\xC0\xBC\x8A\xFBW\xC8&\xE4\x98kEY<\x8F\xAD8\x9C\x90` \x01a\x11\xDCV[`\0`\x01`\x01`\xA0\x1B\x03\x86\x16a(\xCDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`P`$\x82\x01R\x7FDelegationManager._removeSharesA`D\x82\x01R\x7FndQueueWithdrawal: staker cannot`d\x82\x01Ro be zero address`\x80\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[\x82Qa)WW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`M`$\x82\x01R\x7FDelegationManager._removeSharesA`D\x82\x01R\x7FndQueueWithdrawal: strategies ca`d\x82\x01Rlnnot be empty`\x98\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[`\0[\x83Q\x81\x10\x15a-\x04W`\x01`\x01`\xA0\x1B\x03\x86\x16\x15a)\xB0Wa)\xB0\x86\x88\x86\x84\x81Q\x81\x10a)\x89Wa)\x89aS\x11V[` \x02` \x01\x01Q\x86\x85\x81Q\x81\x10a)\xA3Wa)\xA3aS\x11V[` \x02` \x01\x01Qa3vV[s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0`\x01`\x01`\xA0\x1B\x03\x16\x84\x82\x81Q\x81\x10a)\xE0Wa)\xE0aS\x11V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a*\xA9W\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\xBE\xFF\xBB\x89\x88\x85\x84\x81Q\x81\x10a*9Wa*9aS\x11V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a*r\x92\x91\x90`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x82R` \x82\x01R`@\x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a*\x8CW`\0\x80\xFD[PZ\xF1\x15\x80\x15a*\xA0W=`\0\x80>=`\0\xFD[PPPPa,\xFCV[\x84`\x01`\x01`\xA0\x1B\x03\x16\x87`\x01`\x01`\xA0\x1B\x03\x16\x14\x80a+{WP\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\x9BM\xA0=\x85\x83\x81Q\x81\x10a+\x05Wa+\x05aS\x11V[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a+8\x91\x90`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a+UW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a+y\x91\x90aU=V[\x15[a,GW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x84`$\x82\x01\x81\x90R\x7FDelegationManager._removeSharesA`D\x83\x01R\x7FndQueueWithdrawal: withdrawer mu`d\x83\x01R\x7Fst be same address as staker if \x90\x82\x01R\x7FthirdPartyTransfersForbidden are`\xA4\x82\x01Rc\x08\x1C\xD9]`\xE2\x1B`\xC4\x82\x01R`\xE4\x01a\n\xBCV[\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\x8C\x80\xD4\xE5\x88\x86\x84\x81Q\x81\x10a,\x89Wa,\x89aS\x11V[` \x02` \x01\x01Q\x86\x85\x81Q\x81\x10a,\xA3Wa,\xA3aS\x11V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a,\xC9\x93\x92\x91\x90aW\xB9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a,\xE3W`\0\x80\xFD[PZ\xF1\x15\x80\x15a,\xF7W=`\0\x80>=`\0\xFD[PPPP[`\x01\x01a)ZV[P`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x90\x81R`\x9F` R`@\x81 \x80T\x91\x82\x91\x90a-,\x83aS=V[\x91\x90PUP`\0`@Q\x80`\xE0\x01`@R\x80\x89`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x88`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x87`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x83\x81R` \x01Cc\xFF\xFF\xFF\xFF\x16\x81R` \x01\x86\x81R` \x01\x85\x81RP\x90P`\0a-\x94\x82a\x16AV[`\0\x81\x81R`\x9E` R`@\x90\x81\x90 \x80T`\xFF\x19\x16`\x01\x17\x90UQ\x90\x91P\x7F\x90\t\xAB\x15>\x80\x14\xFB\xFB\x02\xF2!\x7F\\\xDEz\xA7\xF9\xADsJ\xE8\\\xA3\xEE?L\xA2\xFD\xD4\x99\xF9\x90a-\xE2\x90\x83\x90\x85\x90aW\xDDV[`@Q\x80\x91\x03\x90\xA1\x98\x97PPPPPPPPV[b\x13\xC6\x80a.\n``\x83\x01`@\x84\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16\x11\x15a.\xBFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`l`$\x82\x01R\x7FDelegationManager._setOperatorDe`D\x82\x01R\x7Ftails: stakerOptOutWindowBlocks `d\x82\x01R\x7Fcannot be > MAX_STAKER_OPT_OUT_W`\x84\x82\x01RkINDOW_BLOCKS`\xA0\x1B`\xA4\x82\x01R`\xC4\x01a\n\xBCV[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`\x99` R`@\x90\x81\x90 `\x01\x01T`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x90a.\xFB\x90``\x84\x01\x90\x84\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16\x10\x15a/\x91W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`S`$\x82\x01R\x7FDelegationManager._setOperatorDe`D\x82\x01R\x7Ftails: stakerOptOutWindowBlocks `d\x82\x01Rr\x18\xD8[\x9B\x9B\xDD\x08\x18\x99H\x19\x19X\xDC\x99X\\\xD9Y`j\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`\x99` R`@\x90 \x81\x90a/\xB5\x82\x82aX3V[PP`@Q3\x90\x7F\xFE\xBE\\\xD2K,\xBC{\x06[\x9D\x0F\xDE\xB9\x04F\x1EJ\xFC\xFFW\xDDW\xAC\xDA\x1Ex2\x03\x1B\xA7\xAC\x90a\x1B7\x90\x84\x90aS\xF8V[`fT`\0\x90`\x01\x90\x81\x16\x14\x15a0\x12W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aSXV[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T\x16\x80\x15\x80\x15\x90a0HWP3`\x01`\x01`\xA0\x1B\x03\x82\x16\x14\x15[\x80\x15a0]WP3`\x01`\x01`\xA0\x1B\x03\x86\x16\x14\x15[\x15a1\xCAWB\x84` \x01Q\x10\x15a0\xDCW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R\x7FDelegationManager._delegate: app`D\x82\x01R\x7Frover signature expired\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\n\xBCV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`\x9C` \x90\x81R`@\x80\x83 \x86\x84R\x90\x91R\x90 T`\xFF\x16\x15a1vW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R\x7FDelegationManager._delegate: app`D\x82\x01R\x7FroverSalt already spent\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\n\xBCV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`\x9C` \x90\x81R`@\x80\x83 \x86\x84R\x82R\x82 \x80T`\xFF\x19\x16`\x01\x17\x90U\x85\x01Qa1\xB7\x90\x88\x90\x88\x90\x85\x90\x88\x90a\t\xCEV[\x90Pa1\xC8\x82\x82\x87`\0\x01QaA\xA3V[P[`\x01`\x01`\xA0\x1B\x03\x86\x81\x16`\0\x81\x81R`\x9A` R`@\x80\x82 \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x94\x8A\x16\x94\x85\x17\x90UQ\x7F\xC3\xEE\x9F._\xDA\x98\xE8\x06j\x1Ft[-\xF9(_Ao\xE9\x8C\xF2U\x9C\xD2\x14\x84\xB3\xD8t3\x04\x91\x90\xA3`\0\x80a2)\x88a\x1B\xFCV[\x91P\x91P`\0[\x82Q\x81\x10\x15a\x13bWa2w\x88\x8A\x85\x84\x81Q\x81\x10a2PWa2PaS\x11V[` \x02` \x01\x01Q\x85\x85\x81Q\x81\x10a2jWa2jaS\x11V[` \x02` \x01\x01Qa9>V[`\x01\x01a20V[`\x01`\x01`\xA0\x1B\x03\x81\x16a3\rW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`I`$\x82\x01R\x7FPausable._setPauserRegistry: new`D\x82\x01R\x7FPauserRegistry cannot be the zer`d\x82\x01Rho address`\xB8\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[`eT`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x83\x16` \x83\x01R\x7Fn\x9F\xCDS\x98\x96\xFC\xA6\x0E\x8B\x0F\x01\xDDX\x023\xE4\x8Ak\x0F}\xF0\x13\xB8\x9B\xA7\xF5e\x86\x9A\xCD\xB6\x91\x01`@Q\x80\x91\x03\x90\xA1`e\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\0\x90\x81R`\x98` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R\x90\x81 \x80T\x83\x92\x90a3\xAD\x90\x84\x90aW\xA2V[\x92PP\x81\x90UP\x83`\x01`\x01`\xA0\x1B\x03\x16\x7Fi\t`\x007\xB7]{G3\xAE\xDD\x81TB\xB5\xEC\x01\x8A\x82wQ\xC82\xAA\xFFd\xEB\xA5\xD6\xD2\xDD\x84\x84\x84`@Qa\x0F0\x93\x92\x91\x90aW\xB9V[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x17iW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\n\xBCV[\x82\x81\x14a4\xD3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`J`$\x82\x01R\x7FDelegationManager._setStrategyWi`D\x82\x01R\x7FthdrawalDelayBlocks: input lengt`d\x82\x01Ri\r\x04\r\xAD.m\xAC.\x8Cm`\xB3\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[\x82`\0[\x81\x81\x10\x15a6iW`\0\x86\x86\x83\x81\x81\x10a4\xF3Wa4\xF3aS\x11V[\x90P` \x02\x01` \x81\x01\x90a5\x08\x91\x90aI\xFFV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`\xA1` R`@\x81 T\x91\x92P\x86\x86\x85\x81\x81\x10a56Wa56aS\x11V[\x90P` \x02\x015\x90Pb\x03K\xC0\x81\x11\x15a5\xFAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`s`$\x82\x01R\x7FDelegationManager._setStrategyWi`D\x82\x01R\x7FthdrawalDelayBlocks: _withdrawal`d\x82\x01R\x7FDelayBlocks cannot be > MAX_WITH`\x84\x82\x01RrDRAWAL_DELAY_BLOCKS`h\x1B`\xA4\x82\x01R`\xC4\x01a\n\xBCV[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x81\x81R`\xA1` \x90\x81R`@\x91\x82\x90 \x84\x90U\x81Q\x92\x83R\x82\x01\x84\x90R\x81\x01\x82\x90R\x7F\x0E~\xFAs\x8E\x8B\x0C\xE67j\x0C\x1A\xF4qeU@\xD2\xE9\xA8\x16G\xD7\xB0\x9E\xD8#\x01\x84&Wm\x90``\x01`@Q\x80\x91\x03\x90\xA1PPP\x80a6b\x90aS=V[\x90Pa4\xD7V[PPPPPPV[`eT`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a6\x92WP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a7\x14W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R\x7FPausable._initializePauser: _ini`D\x82\x01R\x7FtializePauser() can only be call`d\x82\x01Rfed once`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[`f\x81\x90U`@Q\x81\x81R3\x90\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=\x90` \x01`@Q\x80\x91\x03\x90\xA2a7W\x82a2\x7FV[PPV[`@\x80Q\x80\x82\x01\x82R`\n\x81Ri\"\xB4\xB3\xB2\xB7&0\xBC\xB2\xB9`\xB1\x1B` \x91\x82\x01R\x81Q\x7F\x8C\xAD\x95h{\xA8,,\xE5\x0Et\xF7\xB7Td^Q\x17\xC3\xA5\xBE\xC8\x15\x1C\x07&\xD5\x85y\x80\xA8f\x81\x83\x01R\x7Fq\xB6%\xCF\xADD\xBA\xC6;\x13\xDB\xA0\x7F.\x1D`\x84\xEE\x04\xB6\xF8u!\x01\xEC\xE6\x12mXN\xE6\xEA\x81\x84\x01RF``\x82\x01R0`\x80\x80\x83\x01\x91\x90\x91R\x83Q\x80\x83\x03\x90\x91\x01\x81R`\xA0\x90\x91\x01\x90\x92R\x81Q\x91\x01 \x90V[`3\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x90\x93U`@Q\x91\x16\x91\x90\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90`\0\x90\xA3PPV[b\x03K\xC0\x81\x11\x15a8\xFDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`q`$\x82\x01R\x7FDelegationManager._setMinWithdra`D\x82\x01R\x7FwalDelayBlocks: _minWithdrawalDe`d\x82\x01R\x7FlayBlocks cannot be > MAX_WITHDR`\x84\x82\x01RpAWAL_DELAY_BLOCKS`x\x1B`\xA4\x82\x01R`\xC4\x01a\n\xBCV[`\x9DT`@\x80Q\x91\x82R` \x82\x01\x83\x90R\x7F\xAF\xA0\x03\xCDv\xF8\x7F\xF9\xD6+5\xBE\xEA\x88\x99 \xF3<\x0CB\xB8\xD4[t\x95Ma\xD5\x0FKki\x91\x01`@Q\x80\x91\x03\x90\xA1`\x9DUV[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\0\x90\x81R`\x98` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R\x90\x81 \x80T\x83\x92\x90a9u\x90\x84\x90aW\x8AV[\x92PP\x81\x90UP\x83`\x01`\x01`\xA0\x1B\x03\x16\x7F\x1E\xC0B\xC9e\xE2\xED\xD7\x10{Q\x18\x8E\xE0\xF3\x83\xE2.v\x17\x90A\xAB:\x9D\x18\xFF\x15\x14\x05\x16l\x84\x84\x84`@Qa\x0F0\x93\x92\x91\x90aW\xB9V[`\0a9\xC7a\x05\xF3\x87aX\x96V[`\0\x81\x81R`\x9E` R`@\x90 T\x90\x91P`\xFF\x16a:HW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R`\0\x80Q` aY\xC8\x839\x81Q\x91R`D\x82\x01R\x7FdWithdrawal: action is not in qu`d\x82\x01Rbeue`\xE8\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[`\x9DTC\x90a:]`\xA0\x89\x01`\x80\x8A\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16a:m\x91\x90aW\x8AV[\x11\x15a:\xF5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`_`$\x82\x01R`\0\x80Q` aY\xC8\x839\x81Q\x91R`D\x82\x01R\x7FdWithdrawal: minWithdrawalDelayB`d\x82\x01R\x7Flocks period has not yet passed\0`\x84\x82\x01R`\xA4\x01a\n\xBCV[a;\x05``\x87\x01`@\x88\x01aI\xFFV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a;\x92W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`P`$\x82\x01R`\0\x80Q` aY\xC8\x839\x81Q\x91R`D\x82\x01R\x7FdWithdrawal: only withdrawer can`d\x82\x01Ro\x101\xB7\xB6\xB862\xBA2\x900\xB1\xBA4\xB7\xB7`\x81\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[\x81\x15a<\x14Wa;\xA5`\xA0\x87\x01\x87aS\xAFV[\x85\x14\x90Pa<\x14W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`B`$\x82\x01R`\0\x80Q` aY\xC8\x839\x81Q\x91R`D\x82\x01R\x7FdWithdrawal: input length mismat`d\x82\x01Ra\x0Cm`\xF3\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[`\0\x81\x81R`\x9E` R`@\x90 \x80T`\xFF\x19\x16\x90U\x81\x15a=yW`\0[a<@`\xA0\x88\x01\x88aS\xAFV[\x90P\x81\x10\x15a=sWC`\xA1`\0a<[`\xA0\x8B\x01\x8BaS\xAFV[\x85\x81\x81\x10a<kWa<kaS\x11V[\x90P` \x02\x01` \x81\x01\x90a<\x80\x91\x90aI\xFFV[`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x81\x01\x91\x90\x91R`@\x01`\0 Ta<\xAA`\xA0\x8A\x01`\x80\x8B\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16a<\xBA\x91\x90aW\x8AV[\x11\x15a<\xD8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aX\xA2V[a=ka<\xE8` \x89\x01\x89aI\xFFV[3a<\xF6`\xA0\x8B\x01\x8BaS\xAFV[\x85\x81\x81\x10a=\x06Wa=\x06aS\x11V[\x90P` \x02\x01` \x81\x01\x90a=\x1B\x91\x90aI\xFFV[a=(`\xC0\x8C\x01\x8CaS\xAFV[\x86\x81\x81\x10a=8Wa=8aS\x11V[\x90P` \x02\x015\x8A\x8A\x87\x81\x81\x10a=QWa=QaS\x11V[\x90P` \x02\x01` \x81\x01\x90a=f\x91\x90aI\xFFV[aC]V[`\x01\x01a<3V[PaAhV[3`\0\x90\x81R`\x9A` R`@\x81 T`\x01`\x01`\xA0\x1B\x03\x16\x90[a=\xA1`\xA0\x89\x01\x89aS\xAFV[\x90P\x81\x10\x15aAeWC`\xA1`\0a=\xBC`\xA0\x8C\x01\x8CaS\xAFV[\x85\x81\x81\x10a=\xCCWa=\xCCaS\x11V[\x90P` \x02\x01` \x81\x01\x90a=\xE1\x91\x90aI\xFFV[`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x81\x01\x91\x90\x91R`@\x01`\0 Ta>\x0B`\xA0\x8B\x01`\x80\x8C\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16a>\x1B\x91\x90aW\x8AV[\x11\x15a>9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aX\xA2V[s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0a>[`\xA0\x8A\x01\x8AaS\xAFV[\x83\x81\x81\x10a>kWa>kaS\x11V[\x90P` \x02\x01` \x81\x01\x90a>\x80\x91\x90aI\xFFV[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a?\xD0W`\0a>\x9E` \x8A\x01\x8AaI\xFFV[\x90P`\0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16c\x0E\x81\x07<\x83a>\xDF`\xC0\x8E\x01\x8EaS\xAFV[\x87\x81\x81\x10a>\xEFWa>\xEFaS\x11V[`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x87\x90\x1B\x16\x81R`\x01`\x01`\xA0\x1B\x03\x90\x94\x16`\x04\x85\x01R` \x02\x91\x90\x91\x015`$\x83\x01RP`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a?CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a?g\x91\x90aV\\V[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\0\x90\x81R`\x9A` R`@\x90 T\x91\x92P\x16\x80\x15a?\xC8Wa?\xC8\x81\x84a?\x9D`\xA0\x8F\x01\x8FaS\xAFV[\x88\x81\x81\x10a?\xADWa?\xADaS\x11V[\x90P` \x02\x01` \x81\x01\x90a?\xC2\x91\x90aI\xFFV[\x85a9>V[PPPaA]V[\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\xC4b>\xA13\x89\x89\x85\x81\x81\x10a@\x12Wa@\x12aS\x11V[\x90P` \x02\x01` \x81\x01\x90a@'\x91\x90aI\xFFV[a@4`\xA0\x8D\x01\x8DaS\xAFV[\x86\x81\x81\x10a@DWa@DaS\x11V[\x90P` \x02\x01` \x81\x01\x90a@Y\x91\x90aI\xFFV[a@f`\xC0\x8E\x01\x8EaS\xAFV[\x87\x81\x81\x10a@vWa@vaS\x11V[`@Q`\xE0\x88\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R`\x01`\x01`\xA0\x1B\x03\x96\x87\x16`\x04\x82\x01R\x94\x86\x16`$\x86\x01R\x92\x90\x94\x16`D\x84\x01R` \x90\x91\x02\x015`d\x82\x01R`\x84\x01\x90P`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a@\xD6W`\0\x80\xFD[PZ\xF1\x15\x80\x15a@\xEAW=`\0\x80>=`\0\xFD[PPPP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15aA]WaA]\x823aA\x0F`\xA0\x8C\x01\x8CaS\xAFV[\x85\x81\x81\x10aA\x1FWaA\x1FaS\x11V[\x90P` \x02\x01` \x81\x01\x90aA4\x91\x90aI\xFFV[aAA`\xC0\x8D\x01\x8DaS\xAFV[\x86\x81\x81\x10aAQWaAQaS\x11V[\x90P` \x02\x015a9>V[`\x01\x01a=\x94V[PP[`@Q\x81\x81R\x7F\xC9p\x98\xC2\xF6X\x80\x0BM\xF2\x90\x01R\x7Fs$\xBC\xDF\xFC\xF6\xE8u\x1Ai\x9A\xB9 \xA1\xEC\xED[\x1D\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16;\x15aB\xBDW`@Qc\x0B\x13]?`\xE1\x1B\x80\x82R\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\x16&\xBA~\x90aA\xE3\x90\x86\x90\x86\x90`\x04\x01aY*V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15aB\0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90aB$\x91\x90aY\x87V[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14a\x10\xA3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`S`$\x82\x01R\x7FEIP1271SignatureUtils.checkSigna`D\x82\x01R\x7Fture_EIP1271: ERC1271 signature `d\x82\x01Rr\x1D\x99\\\x9AY\x9AX\xD8]\x1A[\xDB\x88\x19\x98Z[\x19Y`j\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[\x82`\x01`\x01`\xA0\x1B\x03\x16aB\xD1\x83\x83aD\x9DV[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x10\xA3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R\x7FEIP1271SignatureUtils.checkSigna`D\x82\x01R\x7Fture_EIP1271: signature not from`d\x82\x01Rf\x109\xB4\xB3\xB72\xB9`\xC9\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[`\x01`\x01`\xA0\x1B\x03\x83\x16s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0\x14\x15aD\x08W`@Qb8{\x13`\xE8\x1B\x81R`\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\x90c8{\x13\0\x90aC\xD1\x90\x88\x90\x88\x90\x87\x90`\x04\x01aW\xB9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15aC\xEBW`\0\x80\xFD[PZ\xF1\x15\x80\x15aC\xFFW=`\0\x80>=`\0\xFD[PPPPaD\x96V[`@Qc\xC6\x08\xC7\xF3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x81\x16`\x04\x83\x01R\x84\x81\x16`$\x83\x01R`D\x82\x01\x84\x90R\x82\x81\x16`d\x83\x01R\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\x90c\xC6\x08\xC7\xF3\x90`\x84\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15aD\x82W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x13bW=`\0\x80>=`\0\xFD[PPPPPV[`\0\x80`\0aD\xAC\x85\x85aD\xB9V[\x91P\x91Pa\t\xC6\x81aE)V[`\0\x80\x82Q`A\x14\x15aD\xF0W` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1AaD\xE4\x87\x82\x85\x85aF\xE4V[\x94P\x94PPPPaE\"V[\x82Q`@\x14\x15aE\x1AW` \x83\x01Q`@\x84\x01QaE\x0F\x86\x83\x83aG\xD1V[\x93P\x93PPPaE\"V[P`\0\x90P`\x02[\x92P\x92\x90PV[`\0\x81`\x04\x81\x11\x15aE=WaE=aY\xB1V[\x14\x15aEFWPV[`\x01\x81`\x04\x81\x11\x15aEZWaEZaY\xB1V[\x14\x15aE\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x18`$\x82\x01R\x7FECDSA: invalid signature\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\n\xBCV[`\x02\x81`\x04\x81\x11\x15aE\xBCWaE\xBCaY\xB1V[\x14\x15aF\nW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FECDSA: invalid signature length\0`D\x82\x01R`d\x01a\n\xBCV[`\x03\x81`\x04\x81\x11\x15aF\x1EWaF\x1EaY\xB1V[\x14\x15aFwW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FECDSA: invalid signature 's' val`D\x82\x01Raue`\xF0\x1B`d\x82\x01R`\x84\x01a\n\xBCV[`\x04\x81`\x04\x81\x11\x15aF\x8BWaF\x8BaY\xB1V[\x14\x15a\x0F\xEEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FECDSA: invalid signature 'v' val`D\x82\x01Raue`\xF0\x1B`d\x82\x01R`\x84\x01a\n\xBCV[`\0\x80\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF]WnsW\xA4P\x1D\xDF\xE9/Fh\x1B \xA0\x83\x11\x15aG\x1BWP`\0\x90P`\x03aG\xC8V[\x84`\xFF\x16`\x1B\x14\x15\x80\x15aG3WP\x84`\xFF\x16`\x1C\x14\x15[\x15aGDWP`\0\x90P`\x04aG\xC8V[`@\x80Q`\0\x80\x82R` \x82\x01\x80\x84R\x89\x90R`\xFF\x88\x16\x92\x82\x01\x92\x90\x92R``\x81\x01\x86\x90R`\x80\x81\x01\x85\x90R`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15aG\x98W=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16aG\xC1W`\0`\x01\x92P\x92PPaG\xC8V[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81aG\xEE`\xFF\x86\x90\x1C`\x1BaW\x8AV[\x90PaG\xFC\x87\x82\x88\x85aF\xE4V[\x93P\x93PPP\x93P\x93\x91PPV[`\0\x80\x83`\x1F\x84\x01\x12aH\x1CW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aH3W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15aE\"W`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15aHaW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aHwW`\0\x80\xFD[aH\x83\x85\x82\x86\x01aH\nV[\x90\x96\x90\x95P\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x0F\xEEW`\0\x80\xFD[\x805aH\xAF\x81aH\x8FV[\x91\x90PV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15aH\xCCW`\0\x80\xFD[\x855aH\xD7\x81aH\x8FV[\x94P` \x86\x015aH\xE7\x81aH\x8FV[\x93P`@\x86\x015aH\xF7\x81aH\x8FV[\x94\x97\x93\x96P\x93\x94``\x81\x015\x94P`\x80\x015\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15aIGW\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01aI+V[P\x90\x96\x95PPPPPPV[`\0``\x82\x84\x03\x12\x15aIeW`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12aI}W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aI\x94W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15aE\"W`\0\x80\xFD[`\0\x80`\0`\x80\x84\x86\x03\x12\x15aI\xC1W`\0\x80\xFD[aI\xCB\x85\x85aISV[\x92P``\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aI\xE6W`\0\x80\xFD[aI\xF2\x86\x82\x87\x01aIkV[\x94\x97\x90\x96P\x93\x94PPPPV[`\0` \x82\x84\x03\x12\x15aJ\x11W`\0\x80\xFD[\x815aJ\x1C\x81aH\x8FV[\x93\x92PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15aJ8W`\0\x80\xFD[\x835aJC\x81aH\x8FV[\x92P` \x84\x015aJS\x81aH\x8FV[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15aJvW`\0\x80\xFD[P5\x91\x90PV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15aJ\x93W`\0\x80\xFD[\x845`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aJ\xAAW`\0\x80\xFD[aJ\xB6\x88\x83\x89\x01aH\nV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15aJ\xCFW`\0\x80\xFD[PaJ\xDC\x87\x82\x88\x01aH\nV[\x95\x98\x94\x97P\x95PPPPV[`\0\x80`\0\x80`\0\x80`\0\x80`\xC0\x89\x8B\x03\x12\x15aK\x04W`\0\x80\xFD[\x885aK\x0F\x81aH\x8FV[\x97P` \x89\x015aK\x1F\x81aH\x8FV[\x96P`@\x89\x015\x95P``\x89\x015\x94P`\x80\x89\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aKIW`\0\x80\xFD[aKU\x8C\x83\x8D\x01aH\nV[\x90\x96P\x94P`\xA0\x8B\x015\x91P\x80\x82\x11\x15aKnW`\0\x80\xFD[PaK{\x8B\x82\x8C\x01aH\nV[\x99\x9C\x98\x9BP\x96\x99P\x94\x97\x93\x96\x92\x95\x94PPPV[`\0\x80`\0\x80`\0\x80`\0\x80`\x80\x89\x8B\x03\x12\x15aK\xABW`\0\x80\xFD[\x885`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aK\xC2W`\0\x80\xFD[aK\xCE\x8C\x83\x8D\x01aH\nV[\x90\x9AP\x98P` \x8B\x015\x91P\x80\x82\x11\x15aK\xE7W`\0\x80\xFD[aK\xF3\x8C\x83\x8D\x01aH\nV[\x90\x98P\x96P`@\x8B\x015\x91P\x80\x82\x11\x15aL\x0CW`\0\x80\xFD[aL\x18\x8C\x83\x8D\x01aH\nV[\x90\x96P\x94P``\x8B\x015\x91P\x80\x82\x11\x15aKnW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q`\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aLiWaLiaL1V[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aLiWaLiaL1V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aL\xB9WaL\xB9aL1V[`@R\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0F\xEEW`\0\x80\xFD[\x805aH\xAF\x81aL\xC1V[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15aL\xF7WaL\xF7aL1V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12aM\x12W`\0\x80\xFD[\x815` aM'aM\"\x83aL\xDEV[aL\x91V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aMFW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aMjW\x805aM]\x81aH\x8FV[\x83R\x91\x83\x01\x91\x83\x01aMJV[P\x96\x95PPPPPPV[`\0\x82`\x1F\x83\x01\x12aM\x86W`\0\x80\xFD[\x815` aM\x96aM\"\x83aL\xDEV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aM\xB5W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aMjW\x805\x83R\x91\x83\x01\x91\x83\x01aM\xB9V[`\0`\xE0\x82\x84\x03\x12\x15aM\xE2W`\0\x80\xFD[aM\xEAaLGV[\x90PaM\xF5\x82aH\xA4V[\x81RaN\x03` \x83\x01aH\xA4V[` \x82\x01RaN\x14`@\x83\x01aH\xA4V[`@\x82\x01R``\x82\x015``\x82\x01RaN/`\x80\x83\x01aL\xD3V[`\x80\x82\x01R`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aNNW`\0\x80\xFD[aNZ\x85\x83\x86\x01aM\x01V[`\xA0\x84\x01R`\xC0\x84\x015\x91P\x80\x82\x11\x15aNsW`\0\x80\xFD[PaN\x80\x84\x82\x85\x01aMuV[`\xC0\x83\x01RP\x92\x91PPV[`\0` \x82\x84\x03\x12\x15aN\x9EW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aN\xB4W`\0\x80\xFD[aN\xC0\x84\x82\x85\x01aM\xD0V[\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15aN\xDAW`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14aJ\x1CW`\0\x80\xFD[\x80\x15\x15\x81\x14a\x0F\xEEW`\0\x80\xFD[`\0\x80`\0\x80`\0`\x80\x86\x88\x03\x12\x15aO\x11W`\0\x80\xFD[\x855`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aO(W`\0\x80\xFD[\x90\x87\x01\x90`\xE0\x82\x8A\x03\x12\x15aO<W`\0\x80\xFD[\x90\x95P` \x87\x015\x90\x80\x82\x11\x15aORW`\0\x80\xFD[PaO_\x88\x82\x89\x01aH\nV[\x90\x95P\x93PP`@\x86\x015\x91P``\x86\x015aOz\x81aN\xEBV[\x80\x91PP\x92\x95P\x92\x95\x90\x93PV[`\0\x80`@\x83\x85\x03\x12\x15aO\x9BW`\0\x80\xFD[\x825aO\xA6\x81aH\x8FV[\x91P` \x83\x015aO\xB6\x81aH\x8FV[\x80\x91PP\x92P\x92\x90PV[`\0`@\x82\x84\x03\x12\x15aO\xD3W`\0\x80\xFD[aO\xDBaLoV[\x90P\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aO\xF4W`\0\x80\xFD[\x81\x84\x01\x91P\x84`\x1F\x83\x01\x12aP\x08W`\0\x80\xFD[\x815` \x82\x82\x11\x15aP\x1CWaP\x1CaL1V[aP.`\x1F\x83\x01`\x1F\x19\x16\x82\x01aL\x91V[\x92P\x81\x83R\x86\x81\x83\x86\x01\x01\x11\x15aPDW`\0\x80\xFD[\x81\x81\x85\x01\x82\x85\x017`\0\x81\x83\x85\x01\x01R\x82\x85R\x80\x86\x015\x81\x86\x01RPPPP\x92\x91PPV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15aP\x81W`\0\x80\xFD[\x855aP\x8C\x81aH\x8FV[\x94P` \x86\x015aP\x9C\x81aH\x8FV[\x93P`@\x86\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aP\xB8W`\0\x80\xFD[aP\xC4\x89\x83\x8A\x01aO\xC1V[\x94P``\x88\x015\x91P\x80\x82\x11\x15aP\xDAW`\0\x80\xFD[PaP\xE7\x88\x82\x89\x01aO\xC1V[\x95\x98\x94\x97P\x92\x95`\x80\x015\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15aQ\x0CW`\0\x80\xFD[\x825aQ\x17\x81aH\x8FV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aQ2W`\0\x80\xFD[aQ>\x85\x82\x86\x01aM\x01V[\x91PP\x92P\x92\x90PV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15aQxW\x81Q\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01aQ\\V[P\x94\x95\x94PPPPPV[` \x81R`\0aJ\x1C` \x83\x01\x84aQHV[`\0\x80` \x83\x85\x03\x12\x15aQ\xA9W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aQ\xBFW`\0\x80\xFD[aH\x83\x85\x82\x86\x01aIkV[`\0\x80`@\x83\x85\x03\x12\x15aQ\xDEW`\0\x80\xFD[\x825aQ\xE9\x81aH\x8FV[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15aR\rW`\0\x80\xFD[\x845aR\x18\x81aH\x8FV[\x93P` \x85\x015\x92P`@\x85\x015aR/\x81aH\x8FV[\x93\x96\x92\x95P\x92\x93``\x015\x92PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15aQxW\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01aRSV[`@\x81R`\0aR\x8B`@\x83\x01\x85aR?V[\x82\x81\x03` \x84\x01Ra\x12 \x81\x85aQHV[`\0\x80`\0``\x84\x86\x03\x12\x15aR\xB2W`\0\x80\xFD[\x835aR\xBD\x81aH\x8FV[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aR\xD8W`\0\x80\xFD[aR\xE4\x86\x82\x87\x01aO\xC1V[\x92PP`@\x84\x015\x90P\x92P\x92P\x92V[`\0``\x82\x84\x03\x12\x15aS\x07W`\0\x80\xFD[aJ\x1C\x83\x83aISV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15aSQWaSQaS'V[P`\x01\x01\x90V[` \x80\x82R`\x19\x90\x82\x01R\x7FPausable: index is paused\0\0\0\0\0\0\0`@\x82\x01R``\x01\x90V[`\0\x825`^\x19\x836\x03\x01\x81\x12aS\xA5W`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12aS\xC6W`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aS\xE0W`\0\x80\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15aE\"W`\0\x80\xFD[``\x81\x01\x825aT\x07\x81aH\x8FV[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x83R` \x84\x015\x90aT#\x82aH\x8FV[\x16` \x83\x01R`@\x83\x015aT7\x81aL\xC1V[c\xFF\xFF\xFF\xFF\x81\x16`@\x84\x01RP\x92\x91PPV[` \x81R\x81` \x82\x01R\x81\x83`@\x83\x017`\0\x81\x83\x01`@\x90\x81\x01\x91\x90\x91R`\x1F\x90\x92\x01`\x1F\x19\x16\x01\x01\x91\x90PV[`\0` \x82\x84\x03\x12\x15aT\x8BW`\0\x80\xFD[\x81QaJ\x1C\x81aH\x8FV[` \x80\x82R`*\x90\x82\x01R\x7Fmsg.sender is not permissioned a`@\x82\x01Ri9\x90:\xB780\xBA\xB9\xB2\xB9`\xB1\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`7\x90\x82\x01R\x7FDelegationManager: onlyStrategyM`@\x82\x01R\x7FanagerOrEigenPodManager\0\0\0\0\0\0\0\0\0``\x82\x01R`\x80\x01\x90V[`\0` \x82\x84\x03\x12\x15aUOW`\0\x80\xFD[\x81QaJ\x1C\x81aN\xEBV[` \x80\x82R`(\x90\x82\x01R\x7Fmsg.sender is not permissioned a`@\x82\x01Rg9\x9080\xBA\xB9\xB2\xB9`\xC1\x1B``\x82\x01R`\x80\x01\x90V[`\0\x825`\xDE\x19\x836\x03\x01\x81\x12aS\xA5W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15aU\xCAW`\0\x80\xFD[\x815aJ\x1C\x81aN\xEBV[`\0`\x01\x80`\xA0\x1B\x03\x80\x83Q\x16\x84R\x80` \x84\x01Q\x16` \x85\x01R\x80`@\x84\x01Q\x16`@\x85\x01RP``\x82\x01Q``\x84\x01Rc\xFF\xFF\xFF\xFF`\x80\x83\x01Q\x16`\x80\x84\x01R`\xA0\x82\x01Q`\xE0`\xA0\x85\x01RaV0`\xE0\x85\x01\x82aR?V[\x90P`\xC0\x83\x01Q\x84\x82\x03`\xC0\x86\x01Ra\x12 \x82\x82aQHV[` \x81R`\0aJ\x1C` \x83\x01\x84aU\xD5V[`\0` \x82\x84\x03\x12\x15aVnW`\0\x80\xFD[PQ\x91\x90PV[`\0\x82`\x1F\x83\x01\x12aV\x86W`\0\x80\xFD[\x81Q` aV\x96aM\"\x83aL\xDEV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aV\xB5W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aMjW\x80Q\x83R\x91\x83\x01\x91\x83\x01aV\xB9V[`\0\x80`@\x83\x85\x03\x12\x15aV\xE3W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aV\xFAW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12aW\x0EW`\0\x80\xFD[\x81Q` aW\x1EaM\"\x83aL\xDEV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15aW=W`\0\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15aWdW\x85QaWU\x81aH\x8FV[\x82R\x94\x82\x01\x94\x90\x82\x01\x90aWBV[\x91\x88\x01Q\x91\x96P\x90\x93PPP\x80\x82\x11\x15aW}W`\0\x80\xFD[PaQ>\x85\x82\x86\x01aVuV[`\0\x82\x19\x82\x11\x15aW\x9DWaW\x9DaS'V[P\x01\x90V[`\0\x82\x82\x10\x15aW\xB4WaW\xB4aS'V[P\x03\x90V[`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x91\x90\x92\x16` \x82\x01R`@\x81\x01\x91\x90\x91R``\x01\x90V[\x82\x81R`@` \x82\x01R`\0aN\xC0`@\x83\x01\x84aU\xD5V[`\0` \x82\x84\x03\x12\x15aX\x08W`\0\x80\xFD[\x815aJ\x1C\x81aL\xC1V[\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[\x815aX>\x81aH\x8FV[aXH\x81\x83aX\x13V[P`\x01\x81\x01` \x83\x015aX[\x81aH\x8FV[aXe\x81\x83aX\x13V[P`@\x83\x015aXt\x81aL\xC1V[\x81Tc\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x16`\xA0\x91\x90\x91\x1Bc\xFF\xFF\xFF\xFF`\xA0\x1B\x16\x17\x90UPPV[`\0a\x17Q6\x83aM\xD0V[` \x80\x82R`n\x90\x82\x01R`\0\x80Q` aY\xC8\x839\x81Q\x91R`@\x82\x01R\x7FdWithdrawal: withdrawalDelayBloc``\x82\x01R\x7Fks period has not yet passed for`\x80\x82\x01Rm this strategy`\x90\x1B`\xA0\x82\x01R`\xC0\x01\x90V[\x82\x81R`\0` `@\x81\x84\x01R\x83Q\x80`@\x85\x01R`\0[\x81\x81\x10\x15aY^W\x85\x81\x01\x83\x01Q\x85\x82\x01``\x01R\x82\x01aYBV[\x81\x81\x11\x15aYpW`\0``\x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01``\x01\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15aY\x99W`\0\x80\xFD[\x81Q`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14aJ\x1CW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD\xFEDelegationManager._completeQueue\xA2dipfsX\"\x12 &\xB1\xFE\xD4\x84\x88\x18C\xA1\xD9\x81\x1EI?\xAB\xDFi?\x06\x8A-\xFA:\xF9(\x9C*\x7F\xBAt\x87>dsolcC\0\x08\x0C\x003",
3019    );
3020    /// The runtime bytecode of the contract, as deployed on the network.
3021    ///
3022    /// ```text
3023    ///0x608060405234801561001057600080fd5b50600436106103425760003560e01c8063635bbd10116101b8578063b7f06ebe11610104578063cf80873e116100a2578063f16172b01161007c578063f16172b014610908578063f2fde38b1461091b578063f698da251461092e578063fabc1cbc1461093657600080fd5b8063cf80873e146108c1578063da8be864146108e2578063eea9064b146108f557600080fd5b8063c488375a116100de578063c488375a146107de578063c5e480db146107fe578063c94b5111146108a4578063ca661c04146108b757600080fd5b8063b7f06ebe14610784578063bb45fef2146107a7578063c448feb8146107d557600080fd5b8063886f1195116101715780639104c3191161014b5780639104c3191461070f57806399be81c81461072a578063a17884841461073d578063b13442711461075d57600080fd5b8063886f1195146106cb5780638da5cb5b146106de57806390041347146106ef57600080fd5b8063635bbd101461063657806365da1264146106495780636d70f7ae14610672578063715018a614610685578063778e55f31461068d5780637f548071146106b857600080fd5b806328a573ae116102925780634665bcda11610230578063597b36da1161020a578063597b36da146105e55780635ac86ab7146105f85780635c975abb1461061b57806360d7faed1461062357600080fd5b80634665bcda146105ac5780634fc40b61146105d3578063595c6a67146105dd57600080fd5b806339b70e381161026c57806339b70e38146104f45780633cdeb5e0146105335780633e28391d14610562578063433773821461058557600080fd5b806328a573ae146104ae57806329c77d4f146104c157806333404396146104e157600080fd5b8063132d4967116102ff57806316928365116102d957806316928365146104285780631bbce0911461046157806320606b701461047457806322bf40e41461049b57600080fd5b8063132d4967146103ef578063136439dd146104025780631522bf021461041557600080fd5b80630449ca391461034757806304a4f9791461036d5780630b9f487a146103945780630dd8dd02146103a75780630f589e59146103c757806310d67a2f146103dc575b600080fd5b61035a61035536600461484e565b610949565b6040519081526020015b60405180910390f35b61035a7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b61035a6103a23660046148b4565b6109ce565b6103ba6103b536600461484e565b610a90565b604051610364919061490f565b6103da6103d53660046149ac565b610df9565b005b6103da6103ea3660046149ff565b610f3e565b6103da6103fd366004614a23565b610ff1565b6103da610410366004614a64565b6110a8565b6103da610423366004614a7d565b6111e7565b61035a6104363660046149ff565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b61035a61046f366004614a23565b6111fb565b61035a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6103da6104a9366004614ae8565b611229565b6103da6104bc366004614a23565b61136d565b61035a6104cf3660046149ff565b609b6020526000908152604090205481565b6103da6104ef366004614b8f565b61141d565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610364565b61051b6105413660046149ff565b6001600160a01b039081166000908152609960205260409020600101541690565b6105756105703660046149ff565b61155a565b6040519015158152602001610364565b61035a7f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b61035a6213c68081565b6103da61157a565b61035a6105f3366004614e8c565b611641565b610575610606366004614ec8565b606654600160ff9092169190911b9081161490565b60665461035a565b6103da610631366004614ef9565b611671565b6103da610644366004614a64565b61170c565b61051b6106573660046149ff565b609a602052600090815260409020546001600160a01b031681565b6105756106803660046149ff565b61171d565b6103da611757565b61035a61069b366004614f88565b609860209081526000928352604080842090915290825290205481565b6103da6106c6366004615069565b61176b565b60655461051b906001600160a01b031681565b6033546001600160a01b031661051b565b6107026106fd3660046150f9565b611997565b6040516103649190615183565b61051b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6103da610738366004615196565b611a71565b61035a61074b3660046149ff565b609f6020526000908152604090205481565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b610575610792366004614a64565b609e6020526000908152604090205460ff1681565b6105756107b53660046151cb565b609c60209081526000928352604080842090915290825290205460ff1681565b61035a609d5481565b61035a6107ec3660046149ff565b60a16020526000908152604090205481565b61086e61080c3660046149ff565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff1690820152606001610364565b61035a6108b23660046151f7565b611b43565b61035a62034bc081565b6108d46108cf3660046149ff565b611bfc565b604051610364929190615278565b6103ba6108f03660046149ff565b611fb4565b6103da61090336600461529d565b612478565b6103da6109163660046152f5565b612595565b6103da6109293660046149ff565b612626565b61035a61269c565b6103da610944366004614a64565b6126da565b609d54600090815b838110156109c657600060a1600087878581811061097157610971615311565b905060200201602081019061098691906149ff565b6001600160a01b03166001600160a01b03168152602001908152602001600020549050828111156109b5578092505b506109bf8161533d565b9050610951565b509392505050565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610a4c61269c565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b60665460609060019060029081161415610ac55760405162461bcd60e51b8152600401610abc90615358565b60405180910390fd5b6000836001600160401b03811115610adf57610adf614c31565b604051908082528060200260200182016040528015610b08578160200160208202803683370190505b50336000908152609a60205260408120549192506001600160a01b03909116905b85811015610dee57868682818110610b4357610b43615311565b9050602002810190610b55919061538f565b610b639060208101906153af565b9050878783818110610b7757610b77615311565b9050602002810190610b89919061538f565b610b9390806153af565b905014610c085760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610abc565b33878783818110610c1b57610c1b615311565b9050602002810190610c2d919061538f565b610c3e9060608101906040016149ff565b6001600160a01b031614610cba5760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a2077697468647261776572206d757374206265207374616b6572000000006064820152608401610abc565b610dbf3383898985818110610cd157610cd1615311565b9050602002810190610ce3919061538f565b610cf49060608101906040016149ff565b8a8a86818110610d0657610d06615311565b9050602002810190610d18919061538f565b610d2290806153af565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150889050818110610d6857610d68615311565b9050602002810190610d7a919061538f565b610d889060208101906153af565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061283692505050565b838281518110610dd157610dd1615311565b602090810291909101015280610de68161533d565b915050610b29565b509095945050505050565b610e023361155a565b15610e885760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a2063616c6c657220697320616c7265616479206163746976656c796064820152690819195b1959d85d195960b21b608482015260a401610abc565b610e923384612df6565b604080518082019091526060815260006020820152610eb43380836000612fe9565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610eed91906153f8565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610f3092919061544a565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb59190615479565b6001600160a01b0316336001600160a01b031614610fe55760405162461bcd60e51b8152600401610abc90615496565b610fee8161327f565b50565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806110505750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b61106c5760405162461bcd60e51b8152600401610abc906154e0565b6110758361155a565b156110a3576001600160a01b038084166000908152609a6020526040902054166110a181858585613376565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156110f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611114919061553d565b6111305760405162461bcd60e51b8152600401610abc9061555a565b606654818116146111a95760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610abc565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6111ef6133f1565b6110a18484848461344b565b6001600160a01b0383166000908152609b602052604081205461122085828686611b43565b95945050505050565b600054610100900460ff16158080156112495750600054600160ff909116105b806112635750303b158015611263575060005460ff166001145b6112c65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610abc565b6000805460ff1916600117905580156112e9576000805461ff0019166101001790555b6112f38888613671565b6112fb61375b565b609755611307896137f2565b61131086613844565b61131c8585858561344b565b8015611362576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806113cc5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6113e85760405162461bcd60e51b8152600401610abc906154e0565b6113f18361155a565b156110a3576001600160a01b038084166000908152609a6020526040902054166110a18185858561393e565b606654600290600490811614156114465760405162461bcd60e51b8152600401610abc90615358565b600260c95414156114995760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610abc565b600260c95560005b88811015611549576115398a8a838181106114be576114be615311565b90506020028101906114d091906155a2565b8989848181106114e2576114e2615311565b90506020028101906114f491906153af565b89898681811061150657611506615311565b9050602002013588888781811061151f5761151f615311565b905060200201602081019061153491906155b8565b6139b9565b6115428161533d565b90506114a1565b5050600160c9555050505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156115c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e6919061553d565b6116025760405162461bcd60e51b8152600401610abc9061555a565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000816040516020016116549190615649565b604051602081830303815290604052805190602001209050919050565b6066546002906004908116141561169a5760405162461bcd60e51b8152600401610abc90615358565b600260c95414156116ed5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610abc565b600260c9556116ff86868686866139b9565b5050600160c95550505050565b6117146133f1565b610fee81613844565b60006001600160a01b0382161580159061175157506001600160a01b038083166000818152609a6020526040902054909116145b92915050565b61175f6133f1565b61176960006137f2565b565b42836020015110156117ef5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610abc565b6117f88561155a565b156118815760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b657220697320616c726561647920616374697660648201526c195b1e4819195b1959d85d1959609a1b608482015260a401610abc565b61188a8461171d565b6119165760405162461bcd60e51b815260206004820152605160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a206f70657261746f72206973206e6f7420726567697374656064820152703932b21034b71022b4b3b2b72630bcb2b960791b608482015260a401610abc565b6000609b6000876001600160a01b03166001600160a01b0316815260200190815260200160002054905060006119528783888860200151611b43565b6001600160a01b0388166000908152609b60205260409020600184019055855190915061198290889083906141a3565b61198e87878686612fe9565b50505050505050565b6060600082516001600160401b038111156119b4576119b4614c31565b6040519080825280602002602001820160405280156119dd578160200160208202803683370190505b50905060005b83518110156109c6576001600160a01b03851660009081526098602052604081208551909190869084908110611a1b57611a1b615311565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054828281518110611a5657611a56615311565b6020908102919091010152611a6a8161533d565b90506119e3565b611a7a3361171d565b611afc5760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610abc565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611b3792919061544a565b60405180910390a25050565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b6020808301919091526001600160a01b0387811683850152851660608301526080820186905260a08083018590528351808403909101815260c0909201909252805191012060009081611bb961269c565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f0000000000000000000000000000000000000000000000000000000000000000909116906360f4062b90602401602060405180830381865afa158015611c6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c90919061565c565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f0000000000000000000000000000000000000000000000000000000000000000909116906394f649dd90602401600060405180830381865afa158015611d00573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2891908101906156d0565b9150915060008313611d3f57909590945092505050565b606080835160001415611df9576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082600081518110611db457611db4615311565b60200260200101906001600160a01b031690816001600160a01b0316815250508481600081518110611de857611de8615311565b602002602001018181525050611fa7565b8351611e0690600161578a565b6001600160401b03811115611e1d57611e1d614c31565b604051908082528060200260200182016040528015611e46578160200160208202803683370190505b50915081516001600160401b03811115611e6257611e62614c31565b604051908082528060200260200182016040528015611e8b578160200160208202803683370190505b50905060005b8451811015611f2557848181518110611eac57611eac615311565b6020026020010151838281518110611ec657611ec6615311565b60200260200101906001600160a01b031690816001600160a01b031681525050838181518110611ef857611ef8615311565b6020026020010151828281518110611f1257611f12615311565b6020908102919091010152600101611e91565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08260018451611f4a91906157a2565b81518110611f5a57611f5a615311565b60200260200101906001600160a01b031690816001600160a01b031681525050848160018451611f8a91906157a2565b81518110611f9a57611f9a615311565b6020026020010181815250505b9097909650945050505050565b60665460609060019060029081161415611fe05760405162461bcd60e51b8152600401610abc90615358565b611fe98361155a565b6120695760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610abc565b6120728361171d565b156120e55760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610abc565b6001600160a01b0383166121615760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610abc565b6001600160a01b038084166000818152609a6020526040902054909116903314806121945750336001600160a01b038216145b806121bb57506001600160a01b038181166000908152609960205260409020600101541633145b61222d5760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610abc565b60008061223986611bfc565b9092509050336001600160a01b0387161461228f57826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040902080546001600160a01b0319169055815161231157604080516000815260208101909152945061246f565b81516001600160401b0381111561232a5761232a614c31565b604051908082528060200260200182016040528015612353578160200160208202803683370190505b50945060005b825181101561246d576040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090508483815181106123b9576123b9615311565b6020026020010151826000815181106123d4576123d4615311565b60200260200101906001600160a01b031690816001600160a01b03168152505083838151811061240657612406615311565b60200260200101518160008151811061242157612421615311565b60200260200101818152505061243a89878b8585612836565b88848151811061244c5761244c615311565b602002602001018181525050505080806124659061533d565b915050612359565b505b50505050919050565b6124813361155a565b156124ff5760405162461bcd60e51b815260206004820152604260248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a20737460448201527f616b657220697320616c7265616479206163746976656c792064656c65676174606482015261195960f21b608482015260a401610abc565b6125088361171d565b6125895760405162461bcd60e51b815260206004820152604660248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a206f7060448201527f657261746f72206973206e6f74207265676973746572656420696e2045696765606482015265372630bcb2b960d11b608482015260a401610abc565b6110a333848484612fe9565b61259e3361171d565b61261c5760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610abc565b610fee3382612df6565b61262e6133f1565b6001600160a01b0381166126935760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610abc565b610fee816137f2565b60007f00000000000000000000000000000000000000000000000000000000000000004614156126cd575060975490565b6126d561375b565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561272d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127519190615479565b6001600160a01b0316336001600160a01b0316146127815760405162461bcd60e51b8152600401610abc90615496565b6066541981196066541916146127ff5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610abc565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016111dc565b60006001600160a01b0386166128cd5760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610abc565b82516129575760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610abc565b60005b8351811015612d04576001600160a01b038616156129b0576129b0868886848151811061298957612989615311565b60200260200101518685815181106129a3576129a3615311565b6020026020010151613376565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b03168482815181106129e0576129e0615311565b60200260200101516001600160a01b03161415612aa9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663beffbb8988858481518110612a3957612a39615311565b60200260200101516040518363ffffffff1660e01b8152600401612a729291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612a8c57600080fd5b505af1158015612aa0573d6000803e3d6000fd5b50505050612cfc565b846001600160a01b0316876001600160a01b03161480612b7b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639b4da03d858381518110612b0557612b05615311565b60200260200101516040518263ffffffff1660e01b8152600401612b3891906001600160a01b0391909116815260200190565b602060405180830381865afa158015612b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b79919061553d565b155b612c475760405162461bcd60e51b8152602060048201526084602482018190527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448301527f6e6451756575655769746864726177616c3a2077697468647261776572206d7560648301527f73742062652073616d652061646472657373206173207374616b657220696620908201527f746869726450617274795472616e7366657273466f7262696464656e2061726560a482015263081cd95d60e21b60c482015260e401610abc565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638c80d4e588868481518110612c8957612c89615311565b6020026020010151868581518110612ca357612ca3615311565b60200260200101516040518463ffffffff1660e01b8152600401612cc9939291906157b9565b600060405180830381600087803b158015612ce357600080fd5b505af1158015612cf7573d6000803e3d6000fd5b505050505b60010161295a565b506001600160a01b0386166000908152609f60205260408120805491829190612d2c8361533d565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff1681526020018681526020018581525090506000612d9482611641565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f990612de290839085906157dd565b60405180910390a198975050505050505050565b6213c680612e0a60608301604084016157f6565b63ffffffff161115612ebf5760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610abc565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff1690612efb90606084019084016157f6565b63ffffffff161015612f915760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610abc565b6001600160a01b03821660009081526099602052604090208190612fb58282615833565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611b379084906153f8565b606654600090600190811614156130125760405162461bcd60e51b8152600401610abc90615358565b6001600160a01b038085166000908152609960205260409020600101541680158015906130485750336001600160a01b03821614155b801561305d5750336001600160a01b03861614155b156131ca5742846020015110156130dc5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610abc565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff16156131765760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610abc565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff191660011790558501516131b79088908890859088906109ce565b90506131c8828287600001516141a3565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a360008061322988611bfc565b9150915060005b825181101561136257613277888a85848151811061325057613250615311565b602002602001015185858151811061326a5761326a615311565b602002602001015161393e565b600101613230565b6001600160a01b03811661330d5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610abc565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038085166000908152609860209081526040808320938616835292905290812080548392906133ad9084906157a2565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610f30939291906157b9565b6033546001600160a01b031633146117695760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610abc565b8281146134d35760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a20696e707574206c656e67746064820152690d040dad2e6dac2e8c6d60b31b608482015260a401610abc565b8260005b818110156136695760008686838181106134f3576134f3615311565b905060200201602081019061350891906149ff565b6001600160a01b038116600090815260a1602052604081205491925086868581811061353657613536615311565b90506020020135905062034bc08111156135fa5760405162461bcd60e51b815260206004820152607360248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a205f7769746864726177616c60648201527f44656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544860848201527244524157414c5f44454c41595f424c4f434b5360681b60a482015260c401610abc565b6001600160a01b038316600081815260a160209081526040918290208490558151928352820184905281018290527f0e7efa738e8b0ce6376a0c1af471655540d2e9a81647d7b09ed823018426576d9060600160405180910390a1505050806136629061533d565b90506134d7565b505050505050565b6065546001600160a01b031615801561369257506001600160a01b03821615155b6137145760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610abc565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26137578261327f565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b62034bc08111156138fd5760405162461bcd60e51b815260206004820152607160248201527f44656c65676174696f6e4d616e616765722e5f7365744d696e5769746864726160448201527f77616c44656c6179426c6f636b733a205f6d696e5769746864726177616c446560648201527f6c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844526084820152704157414c5f44454c41595f424c4f434b5360781b60a482015260c401610abc565b609d5460408051918252602082018390527fafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69910160405180910390a1609d55565b6001600160a01b0380851660009081526098602090815260408083209386168352929052908120805483929061397590849061578a565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610f30939291906157b9565b60006139c76105f387615896565b6000818152609e602052604090205490915060ff16613a485760405162461bcd60e51b815260206004820152604360248201526000805160206159c883398151915260448201527f645769746864726177616c3a20616374696f6e206973206e6f7420696e20717560648201526265756560e81b608482015260a401610abc565b609d544390613a5d60a0890160808a016157f6565b63ffffffff16613a6d919061578a565b1115613af55760405162461bcd60e51b815260206004820152605f60248201526000805160206159c883398151915260448201527f645769746864726177616c3a206d696e5769746864726177616c44656c61794260648201527f6c6f636b7320706572696f6420686173206e6f74207965742070617373656400608482015260a401610abc565b613b0560608701604088016149ff565b6001600160a01b0316336001600160a01b031614613b925760405162461bcd60e51b815260206004820152605060248201526000805160206159c883398151915260448201527f645769746864726177616c3a206f6e6c7920776974686472617765722063616e60648201526f1031b7b6b83632ba329030b1ba34b7b760811b608482015260a401610abc565b8115613c1457613ba560a08701876153af565b85149050613c145760405162461bcd60e51b815260206004820152604260248201526000805160206159c883398151915260448201527f645769746864726177616c3a20696e707574206c656e677468206d69736d61746064820152610c6d60f31b608482015260a401610abc565b6000818152609e60205260409020805460ff191690558115613d795760005b613c4060a08801886153af565b9050811015613d73574360a16000613c5b60a08b018b6153af565b85818110613c6b57613c6b615311565b9050602002016020810190613c8091906149ff565b6001600160a01b03168152602081019190915260400160002054613caa60a08a0160808b016157f6565b63ffffffff16613cba919061578a565b1115613cd85760405162461bcd60e51b8152600401610abc906158a2565b613d6b613ce860208901896149ff565b33613cf660a08b018b6153af565b85818110613d0657613d06615311565b9050602002016020810190613d1b91906149ff565b613d2860c08c018c6153af565b86818110613d3857613d38615311565b905060200201358a8a87818110613d5157613d51615311565b9050602002016020810190613d6691906149ff565b61435d565b600101613c33565b50614168565b336000908152609a60205260408120546001600160a01b0316905b613da160a08901896153af565b9050811015614165574360a16000613dbc60a08c018c6153af565b85818110613dcc57613dcc615311565b9050602002016020810190613de191906149ff565b6001600160a01b03168152602081019190915260400160002054613e0b60a08b0160808c016157f6565b63ffffffff16613e1b919061578a565b1115613e395760405162461bcd60e51b8152600401610abc906158a2565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0613e5b60a08a018a6153af565b83818110613e6b57613e6b615311565b9050602002016020810190613e8091906149ff565b6001600160a01b03161415613fd0576000613e9e60208a018a6149ff565b905060006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630e81073c83613edf60c08e018e6153af565b87818110613eef57613eef615311565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015613f43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f67919061565c565b6001600160a01b038084166000908152609a6020526040902054919250168015613fc857613fc88184613f9d60a08f018f6153af565b88818110613fad57613fad615311565b9050602002016020810190613fc291906149ff565b8561393e565b50505061415d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c4623ea13389898581811061401257614012615311565b905060200201602081019061402791906149ff565b61403460a08d018d6153af565b8681811061404457614044615311565b905060200201602081019061405991906149ff565b61406660c08e018e6153af565b8781811061407657614076615311565b60405160e088901b6001600160e01b03191681526001600160a01b03968716600482015294861660248601529290941660448401526020909102013560648201526084019050600060405180830381600087803b1580156140d657600080fd5b505af11580156140ea573d6000803e3d6000fd5b505050506001600160a01b0382161561415d5761415d823361410f60a08c018c6153af565b8581811061411f5761411f615311565b905060200201602081019061413491906149ff565b61414160c08d018d6153af565b8681811061415157614151615311565b9050602002013561393e565b600101613d94565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6001600160a01b0383163b156142bd57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906141e3908690869060040161592a565b602060405180830381865afa158015614200573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142249190615987565b6001600160e01b031916146110a35760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610abc565b826001600160a01b03166142d1838361449d565b6001600160a01b0316146110a35760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610abc565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014156144085760405162387b1360e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063387b1300906143d1908890889087906004016157b9565b600060405180830381600087803b1580156143eb57600080fd5b505af11580156143ff573d6000803e3d6000fd5b50505050614496565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c608c7f390608401600060405180830381600087803b15801561448257600080fd5b505af1158015611362573d6000803e3d6000fd5b5050505050565b60008060006144ac85856144b9565b915091506109c681614529565b6000808251604114156144f05760208301516040840151606085015160001a6144e4878285856146e4565b94509450505050614522565b82516040141561451a576020830151604084015161450f8683836147d1565b935093505050614522565b506000905060025b9250929050565b600081600481111561453d5761453d6159b1565b14156145465750565b600181600481111561455a5761455a6159b1565b14156145a85760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610abc565b60028160048111156145bc576145bc6159b1565b141561460a5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610abc565b600381600481111561461e5761461e6159b1565b14156146775760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610abc565b600481600481111561468b5761468b6159b1565b1415610fee5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610abc565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561471b57506000905060036147c8565b8460ff16601b1415801561473357508460ff16601c14155b1561474457506000905060046147c8565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614798573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166147c1576000600192509250506147c8565b9150600090505b94509492505050565b6000806001600160ff1b038316816147ee60ff86901c601b61578a565b90506147fc878288856146e4565b935093505050935093915050565b60008083601f84011261481c57600080fd5b5081356001600160401b0381111561483357600080fd5b6020830191508360208260051b850101111561452257600080fd5b6000806020838503121561486157600080fd5b82356001600160401b0381111561487757600080fd5b6148838582860161480a565b90969095509350505050565b6001600160a01b0381168114610fee57600080fd5b80356148af8161488f565b919050565b600080600080600060a086880312156148cc57600080fd5b85356148d78161488f565b945060208601356148e78161488f565b935060408601356148f78161488f565b94979396509394606081013594506080013592915050565b6020808252825182820181905260009190848201906040850190845b818110156149475783518352928401929184019160010161492b565b50909695505050505050565b60006060828403121561496557600080fd5b50919050565b60008083601f84011261497d57600080fd5b5081356001600160401b0381111561499457600080fd5b60208301915083602082850101111561452257600080fd5b6000806000608084860312156149c157600080fd5b6149cb8585614953565b925060608401356001600160401b038111156149e657600080fd5b6149f28682870161496b565b9497909650939450505050565b600060208284031215614a1157600080fd5b8135614a1c8161488f565b9392505050565b600080600060608486031215614a3857600080fd5b8335614a438161488f565b92506020840135614a538161488f565b929592945050506040919091013590565b600060208284031215614a7657600080fd5b5035919050565b60008060008060408587031215614a9357600080fd5b84356001600160401b0380821115614aaa57600080fd5b614ab68883890161480a565b90965094506020870135915080821115614acf57600080fd5b50614adc8782880161480a565b95989497509550505050565b60008060008060008060008060c0898b031215614b0457600080fd5b8835614b0f8161488f565b97506020890135614b1f8161488f565b9650604089013595506060890135945060808901356001600160401b0380821115614b4957600080fd5b614b558c838d0161480a565b909650945060a08b0135915080821115614b6e57600080fd5b50614b7b8b828c0161480a565b999c989b5096995094979396929594505050565b6000806000806000806000806080898b031215614bab57600080fd5b88356001600160401b0380821115614bc257600080fd5b614bce8c838d0161480a565b909a50985060208b0135915080821115614be757600080fd5b614bf38c838d0161480a565b909850965060408b0135915080821115614c0c57600080fd5b614c188c838d0161480a565b909650945060608b0135915080821115614b6e57600080fd5b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614c6957614c69614c31565b60405290565b604080519081016001600160401b0381118282101715614c6957614c69614c31565b604051601f8201601f191681016001600160401b0381118282101715614cb957614cb9614c31565b604052919050565b63ffffffff81168114610fee57600080fd5b80356148af81614cc1565b60006001600160401b03821115614cf757614cf7614c31565b5060051b60200190565b600082601f830112614d1257600080fd5b81356020614d27614d2283614cde565b614c91565b82815260059290921b84018101918181019086841115614d4657600080fd5b8286015b84811015614d6a578035614d5d8161488f565b8352918301918301614d4a565b509695505050505050565b600082601f830112614d8657600080fd5b81356020614d96614d2283614cde565b82815260059290921b84018101918181019086841115614db557600080fd5b8286015b84811015614d6a5780358352918301918301614db9565b600060e08284031215614de257600080fd5b614dea614c47565b9050614df5826148a4565b8152614e03602083016148a4565b6020820152614e14604083016148a4565b604082015260608201356060820152614e2f60808301614cd3565b608082015260a08201356001600160401b0380821115614e4e57600080fd5b614e5a85838601614d01565b60a084015260c0840135915080821115614e7357600080fd5b50614e8084828501614d75565b60c08301525092915050565b600060208284031215614e9e57600080fd5b81356001600160401b03811115614eb457600080fd5b614ec084828501614dd0565b949350505050565b600060208284031215614eda57600080fd5b813560ff81168114614a1c57600080fd5b8015158114610fee57600080fd5b600080600080600060808688031215614f1157600080fd5b85356001600160401b0380821115614f2857600080fd5b9087019060e0828a031215614f3c57600080fd5b90955060208701359080821115614f5257600080fd5b50614f5f8882890161480a565b909550935050604086013591506060860135614f7a81614eeb565b809150509295509295909350565b60008060408385031215614f9b57600080fd5b8235614fa68161488f565b91506020830135614fb68161488f565b809150509250929050565b600060408284031215614fd357600080fd5b614fdb614c6f565b905081356001600160401b0380821115614ff457600080fd5b818401915084601f83011261500857600080fd5b813560208282111561501c5761501c614c31565b61502e601f8301601f19168201614c91565b9250818352868183860101111561504457600080fd5b8181850182850137600081838501015282855280860135818601525050505092915050565b600080600080600060a0868803121561508157600080fd5b853561508c8161488f565b9450602086013561509c8161488f565b935060408601356001600160401b03808211156150b857600080fd5b6150c489838a01614fc1565b945060608801359150808211156150da57600080fd5b506150e788828901614fc1565b95989497509295608001359392505050565b6000806040838503121561510c57600080fd5b82356151178161488f565b915060208301356001600160401b0381111561513257600080fd5b61513e85828601614d01565b9150509250929050565b600081518084526020808501945080840160005b838110156151785781518752958201959082019060010161515c565b509495945050505050565b602081526000614a1c6020830184615148565b600080602083850312156151a957600080fd5b82356001600160401b038111156151bf57600080fd5b6148838582860161496b565b600080604083850312156151de57600080fd5b82356151e98161488f565b946020939093013593505050565b6000806000806080858703121561520d57600080fd5b84356152188161488f565b935060208501359250604085013561522f8161488f565b9396929550929360600135925050565b600081518084526020808501945080840160005b838110156151785781516001600160a01b031687529582019590820190600101615253565b60408152600061528b604083018561523f565b82810360208401526112208185615148565b6000806000606084860312156152b257600080fd5b83356152bd8161488f565b925060208401356001600160401b038111156152d857600080fd5b6152e486828701614fc1565b925050604084013590509250925092565b60006060828403121561530757600080fd5b614a1c8383614953565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561535157615351615327565b5060010190565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b60008235605e198336030181126153a557600080fd5b9190910192915050565b6000808335601e198436030181126153c657600080fd5b8301803591506001600160401b038211156153e057600080fd5b6020019150600581901b360382131561452257600080fd5b6060810182356154078161488f565b6001600160a01b0390811683526020840135906154238261488f565b166020830152604083013561543781614cc1565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60006020828403121561548b57600080fd5b8151614a1c8161488f565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b60006020828403121561554f57600080fd5b8151614a1c81614eeb565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de198336030181126153a557600080fd5b6000602082840312156155ca57600080fd5b8135614a1c81614eeb565b600060018060a01b03808351168452806020840151166020850152806040840151166040850152506060820151606084015263ffffffff608083015116608084015260a082015160e060a085015261563060e085018261523f565b905060c083015184820360c08601526112208282615148565b602081526000614a1c60208301846155d5565b60006020828403121561566e57600080fd5b5051919050565b600082601f83011261568657600080fd5b81516020615696614d2283614cde565b82815260059290921b840181019181810190868411156156b557600080fd5b8286015b84811015614d6a57805183529183019183016156b9565b600080604083850312156156e357600080fd5b82516001600160401b03808211156156fa57600080fd5b818501915085601f83011261570e57600080fd5b8151602061571e614d2283614cde565b82815260059290921b8401810191818101908984111561573d57600080fd5b948201945b838610156157645785516157558161488f565b82529482019490820190615742565b9188015191965090935050508082111561577d57600080fd5b5061513e85828601615675565b6000821982111561579d5761579d615327565b500190565b6000828210156157b4576157b4615327565b500390565b6001600160a01b039384168152919092166020820152604081019190915260600190565b828152604060208201526000614ec060408301846155d5565b60006020828403121561580857600080fd5b8135614a1c81614cc1565b80546001600160a01b0319166001600160a01b0392909216919091179055565b813561583e8161488f565b6158488183615813565b5060018101602083013561585b8161488f565b6158658183615813565b50604083013561587481614cc1565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b60006117513683614dd0565b6020808252606e908201526000805160206159c883398151915260408201527f645769746864726177616c3a207769746864726177616c44656c6179426c6f6360608201527f6b7320706572696f6420686173206e6f74207965742070617373656420666f7260808201526d207468697320737472617465677960901b60a082015260c00190565b82815260006020604081840152835180604085015260005b8181101561595e57858101830151858201606001528201615942565b81811115615970576000606083870101525b50601f01601f191692909201606001949350505050565b60006020828403121561599957600080fd5b81516001600160e01b031981168114614a1c57600080fd5b634e487b7160e01b600052602160045260246000fdfe44656c65676174696f6e4d616e616765722e5f636f6d706c6574655175657565a264697066735822122026b1fed484881843a1d9811e493fabdf693f068a2dfa3af9289c2a7fba74873e64736f6c634300080c0033
3024    /// ```
3025    #[rustfmt::skip]
3026    #[allow(clippy::all)]
3027    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
3028        b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x03BW`\x005`\xE0\x1C\x80cc[\xBD\x10\x11a\x01\xB8W\x80c\xB7\xF0n\xBE\x11a\x01\x04W\x80c\xCF\x80\x87>\x11a\0\xA2W\x80c\xF1ar\xB0\x11a\0|W\x80c\xF1ar\xB0\x14a\t\x08W\x80c\xF2\xFD\xE3\x8B\x14a\t\x1BW\x80c\xF6\x98\xDA%\x14a\t.W\x80c\xFA\xBC\x1C\xBC\x14a\t6W`\0\x80\xFD[\x80c\xCF\x80\x87>\x14a\x08\xC1W\x80c\xDA\x8B\xE8d\x14a\x08\xE2W\x80c\xEE\xA9\x06K\x14a\x08\xF5W`\0\x80\xFD[\x80c\xC4\x887Z\x11a\0\xDEW\x80c\xC4\x887Z\x14a\x07\xDEW\x80c\xC5\xE4\x80\xDB\x14a\x07\xFEW\x80c\xC9KQ\x11\x14a\x08\xA4W\x80c\xCAf\x1C\x04\x14a\x08\xB7W`\0\x80\xFD[\x80c\xB7\xF0n\xBE\x14a\x07\x84W\x80c\xBBE\xFE\xF2\x14a\x07\xA7W\x80c\xC4H\xFE\xB8\x14a\x07\xD5W`\0\x80\xFD[\x80c\x88o\x11\x95\x11a\x01qW\x80c\x91\x04\xC3\x19\x11a\x01KW\x80c\x91\x04\xC3\x19\x14a\x07\x0FW\x80c\x99\xBE\x81\xC8\x14a\x07*W\x80c\xA1x\x84\x84\x14a\x07=W\x80c\xB14Bq\x14a\x07]W`\0\x80\xFD[\x80c\x88o\x11\x95\x14a\x06\xCBW\x80c\x8D\xA5\xCB[\x14a\x06\xDEW\x80c\x90\x04\x13G\x14a\x06\xEFW`\0\x80\xFD[\x80cc[\xBD\x10\x14a\x066W\x80ce\xDA\x12d\x14a\x06IW\x80cmp\xF7\xAE\x14a\x06rW\x80cqP\x18\xA6\x14a\x06\x85W\x80cw\x8EU\xF3\x14a\x06\x8DW\x80c\x7FT\x80q\x14a\x06\xB8W`\0\x80\xFD[\x80c(\xA5s\xAE\x11a\x02\x92W\x80cFe\xBC\xDA\x11a\x020W\x80cY{6\xDA\x11a\x02\nW\x80cY{6\xDA\x14a\x05\xE5W\x80cZ\xC8j\xB7\x14a\x05\xF8W\x80c\\\x97Z\xBB\x14a\x06\x1BW\x80c`\xD7\xFA\xED\x14a\x06#W`\0\x80\xFD[\x80cFe\xBC\xDA\x14a\x05\xACW\x80cO\xC4\x0Ba\x14a\x05\xD3W\x80cY\\jg\x14a\x05\xDDW`\0\x80\xFD[\x80c9\xB7\x0E8\x11a\x02lW\x80c9\xB7\x0E8\x14a\x04\xF4W\x80c<\xDE\xB5\xE0\x14a\x053W\x80c>(9\x1D\x14a\x05bW\x80cC7s\x82\x14a\x05\x85W`\0\x80\xFD[\x80c(\xA5s\xAE\x14a\x04\xAEW\x80c)\xC7}O\x14a\x04\xC1W\x80c3@C\x96\x14a\x04\xE1W`\0\x80\xFD[\x80c\x13-Ig\x11a\x02\xFFW\x80c\x16\x92\x83e\x11a\x02\xD9W\x80c\x16\x92\x83e\x14a\x04(W\x80c\x1B\xBC\xE0\x91\x14a\x04aW\x80c `kp\x14a\x04tW\x80c\"\xBF@\xE4\x14a\x04\x9BW`\0\x80\xFD[\x80c\x13-Ig\x14a\x03\xEFW\x80c\x13d9\xDD\x14a\x04\x02W\x80c\x15\"\xBF\x02\x14a\x04\x15W`\0\x80\xFD[\x80c\x04I\xCA9\x14a\x03GW\x80c\x04\xA4\xF9y\x14a\x03mW\x80c\x0B\x9FHz\x14a\x03\x94W\x80c\r\xD8\xDD\x02\x14a\x03\xA7W\x80c\x0FX\x9EY\x14a\x03\xC7W\x80c\x10\xD6z/\x14a\x03\xDCW[`\0\x80\xFD[a\x03Za\x03U6`\x04aHNV[a\tIV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x03Z\x7F\x14\xBD\xE6t\xC9\xF6K*\xD0\x0E\xAA\xEEJ\x8B\xED\x1F\xAB\xEF5\xC7P~<[\x9C\xFC\x946\x90\x9A-\xAD\x81V[a\x03Za\x03\xA26`\x04aH\xB4V[a\t\xCEV[a\x03\xBAa\x03\xB56`\x04aHNV[a\n\x90V[`@Qa\x03d\x91\x90aI\x0FV[a\x03\xDAa\x03\xD56`\x04aI\xACV[a\r\xF9V[\0[a\x03\xDAa\x03\xEA6`\x04aI\xFFV[a\x0F>V[a\x03\xDAa\x03\xFD6`\x04aJ#V[a\x0F\xF1V[a\x03\xDAa\x04\x106`\x04aJdV[a\x10\xA8V[a\x03\xDAa\x04#6`\x04aJ}V[a\x11\xE7V[a\x03Za\x0466`\x04aI\xFFV[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x90V[a\x03Za\x04o6`\x04aJ#V[a\x11\xFBV[a\x03Z\x7F\x8C\xAD\x95h{\xA8,,\xE5\x0Et\xF7\xB7Td^Q\x17\xC3\xA5\xBE\xC8\x15\x1C\x07&\xD5\x85y\x80\xA8f\x81V[a\x03\xDAa\x04\xA96`\x04aJ\xE8V[a\x12)V[a\x03\xDAa\x04\xBC6`\x04aJ#V[a\x13mV[a\x03Za\x04\xCF6`\x04aI\xFFV[`\x9B` R`\0\x90\x81R`@\x90 T\x81V[a\x03\xDAa\x04\xEF6`\x04aK\x8FV[a\x14\x1DV[a\x05\x1B\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[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x03dV[a\x05\x1Ba\x05A6`\x04aI\xFFV[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T\x16\x90V[a\x05ua\x05p6`\x04aI\xFFV[a\x15ZV[`@Q\x90\x15\x15\x81R` \x01a\x03dV[a\x03Z\x7F9\x11\x1B\xC4\xA4\xD6\x88\xE1\xF6\x85\x12=t\x97\xD4aSp\x15*\x8E\xE4\xA0Y>d{\xD0j\xD8\xBB\x0B\x81V[a\x05\x1B\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[a\x03Zb\x13\xC6\x80\x81V[a\x03\xDAa\x15zV[a\x03Za\x05\xF36`\x04aN\x8CV[a\x16AV[a\x05ua\x06\x066`\x04aN\xC8V[`fT`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`fTa\x03ZV[a\x03\xDAa\x0616`\x04aN\xF9V[a\x16qV[a\x03\xDAa\x06D6`\x04aJdV[a\x17\x0CV[a\x05\x1Ba\x06W6`\x04aI\xFFV[`\x9A` R`\0\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x05ua\x06\x806`\x04aI\xFFV[a\x17\x1DV[a\x03\xDAa\x17WV[a\x03Za\x06\x9B6`\x04aO\x88V[`\x98` \x90\x81R`\0\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[a\x03\xDAa\x06\xC66`\x04aPiV[a\x17kV[`eTa\x05\x1B\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`3T`\x01`\x01`\xA0\x1B\x03\x16a\x05\x1BV[a\x07\x02a\x06\xFD6`\x04aP\xF9V[a\x19\x97V[`@Qa\x03d\x91\x90aQ\x83V[a\x05\x1Bs\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0\x81V[a\x03\xDAa\x0786`\x04aQ\x96V[a\x1AqV[a\x03Za\x07K6`\x04aI\xFFV[`\x9F` R`\0\x90\x81R`@\x90 T\x81V[a\x05\x1B\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[a\x05ua\x07\x926`\x04aJdV[`\x9E` R`\0\x90\x81R`@\x90 T`\xFF\x16\x81V[a\x05ua\x07\xB56`\x04aQ\xCBV[`\x9C` \x90\x81R`\0\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T`\xFF\x16\x81V[a\x03Z`\x9DT\x81V[a\x03Za\x07\xEC6`\x04aI\xFFV[`\xA1` R`\0\x90\x81R`@\x90 T\x81V[a\x08na\x08\x0C6`\x04aI\xFFV[`@\x80Q``\x80\x82\x01\x83R`\0\x80\x83R` \x80\x84\x01\x82\x90R\x92\x84\x01\x81\x90R`\x01`\x01`\xA0\x1B\x03\x94\x85\x16\x81R`\x99\x83R\x83\x90 \x83Q\x91\x82\x01\x84R\x80T\x85\x16\x82R`\x01\x01T\x93\x84\x16\x91\x81\x01\x91\x90\x91R`\x01`\xA0\x1B\x90\x92\x04c\xFF\xFF\xFF\xFF\x16\x90\x82\x01R\x90V[`@\x80Q\x82Q`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x82R` \x80\x85\x01Q\x90\x91\x16\x90\x82\x01R\x91\x81\x01Qc\xFF\xFF\xFF\xFF\x16\x90\x82\x01R``\x01a\x03dV[a\x03Za\x08\xB26`\x04aQ\xF7V[a\x1BCV[a\x03Zb\x03K\xC0\x81V[a\x08\xD4a\x08\xCF6`\x04aI\xFFV[a\x1B\xFCV[`@Qa\x03d\x92\x91\x90aRxV[a\x03\xBAa\x08\xF06`\x04aI\xFFV[a\x1F\xB4V[a\x03\xDAa\t\x036`\x04aR\x9DV[a$xV[a\x03\xDAa\t\x166`\x04aR\xF5V[a%\x95V[a\x03\xDAa\t)6`\x04aI\xFFV[a&&V[a\x03Za&\x9CV[a\x03\xDAa\tD6`\x04aJdV[a&\xDAV[`\x9DT`\0\x90\x81[\x83\x81\x10\x15a\t\xC6W`\0`\xA1`\0\x87\x87\x85\x81\x81\x10a\tqWa\tqaS\x11V[\x90P` \x02\x01` \x81\x01\x90a\t\x86\x91\x90aI\xFFV[`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01`\0 T\x90P\x82\x81\x11\x15a\t\xB5W\x80\x92P[Pa\t\xBF\x81aS=V[\x90Pa\tQV[P\x93\x92PPPV[`@\x80Q\x7F\x14\xBD\xE6t\xC9\xF6K*\xD0\x0E\xAA\xEEJ\x8B\xED\x1F\xAB\xEF5\xC7P~<[\x9C\xFC\x946\x90\x9A-\xAD` \x80\x83\x01\x91\x90\x91R`\x01`\x01`\xA0\x1B\x03\x86\x81\x16\x83\x85\x01R\x88\x81\x16``\x84\x01R\x87\x16`\x80\x83\x01R`\xA0\x82\x01\x85\x90R`\xC0\x80\x83\x01\x85\x90R\x83Q\x80\x84\x03\x90\x91\x01\x81R`\xE0\x90\x92\x01\x90\x92R\x80Q\x91\x01 `\0\x90\x81a\nLa&\x9CV[`@Qa\x19\x01`\xF0\x1B` \x82\x01R`\"\x81\x01\x91\x90\x91R`B\x81\x01\x83\x90R`b\x01`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x91\x90R\x80Q` \x90\x91\x01 \x98\x97PPPPPPPPV[`fT``\x90`\x01\x90`\x02\x90\x81\x16\x14\x15a\n\xC5W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aSXV[`@Q\x80\x91\x03\x90\xFD[`\0\x83`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\xDFWa\n\xDFaL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0B\x08W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P3`\0\x90\x81R`\x9A` R`@\x81 T\x91\x92P`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90[\x85\x81\x10\x15a\r\xEEW\x86\x86\x82\x81\x81\x10a\x0BCWa\x0BCaS\x11V[\x90P` \x02\x81\x01\x90a\x0BU\x91\x90aS\x8FV[a\x0Bc\x90` \x81\x01\x90aS\xAFV[\x90P\x87\x87\x83\x81\x81\x10a\x0BwWa\x0BwaS\x11V[\x90P` \x02\x81\x01\x90a\x0B\x89\x91\x90aS\x8FV[a\x0B\x93\x90\x80aS\xAFV[\x90P\x14a\x0C\x08W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FDelegationManager.queueWithdrawa`D\x82\x01R\x7Fl: input length mismatch\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\n\xBCV[3\x87\x87\x83\x81\x81\x10a\x0C\x1BWa\x0C\x1BaS\x11V[\x90P` \x02\x81\x01\x90a\x0C-\x91\x90aS\x8FV[a\x0C>\x90``\x81\x01\x90`@\x01aI\xFFV[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x0C\xBAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R\x7FDelegationManager.queueWithdrawa`D\x82\x01R\x7Fl: withdrawer must be staker\0\0\0\0`d\x82\x01R`\x84\x01a\n\xBCV[a\r\xBF3\x83\x89\x89\x85\x81\x81\x10a\x0C\xD1Wa\x0C\xD1aS\x11V[\x90P` \x02\x81\x01\x90a\x0C\xE3\x91\x90aS\x8FV[a\x0C\xF4\x90``\x81\x01\x90`@\x01aI\xFFV[\x8A\x8A\x86\x81\x81\x10a\r\x06Wa\r\x06aS\x11V[\x90P` \x02\x81\x01\x90a\r\x18\x91\x90aS\x8FV[a\r\"\x90\x80aS\xAFV[\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847`\0\x92\x01\x91\x90\x91RP\x8E\x92P\x8D\x91P\x88\x90P\x81\x81\x10a\rhWa\rhaS\x11V[\x90P` \x02\x81\x01\x90a\rz\x91\x90aS\x8FV[a\r\x88\x90` \x81\x01\x90aS\xAFV[\x80\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83` \x02\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa(6\x92PPPV[\x83\x82\x81Q\x81\x10a\r\xD1Wa\r\xD1aS\x11V[` \x90\x81\x02\x91\x90\x91\x01\x01R\x80a\r\xE6\x81aS=V[\x91PPa\x0B)V[P\x90\x95\x94PPPPPV[a\x0E\x023a\x15ZV[\x15a\x0E\x88W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`J`$\x82\x01R\x7FDelegationManager.registerAsOper`D\x82\x01R\x7Fator: caller is already actively`d\x82\x01Ri\x08\x19\x19[\x19Y\xD8]\x19Y`\xB2\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[a\x0E\x923\x84a-\xF6V[`@\x80Q\x80\x82\x01\x90\x91R``\x81R`\0` \x82\x01Ra\x0E\xB43\x80\x83`\0a/\xE9V[3`\x01`\x01`\xA0\x1B\x03\x16\x7F\x8E\x84\x85X:#\x10\xD4\x1F|\x82\xB9B}\x0B\xD4\x9B\xADt\xBB\x9C\xFF\x9D4\x02\xA2\x9D\x8F\x9B(\xA0\xE2\x85`@Qa\x0E\xED\x91\x90aS\xF8V[`@Q\x80\x91\x03\x90\xA23`\x01`\x01`\xA0\x1B\x03\x16\x7F\x02\xA9\x19\xED\x0E*\xCA\xD1\xDD\x90\xF1~\xF2\xFAJ\xE5F.\xE13\x91p\x03J\x851\xCC\xA4\xB6p\x80\x90\x84\x84`@Qa\x0F0\x92\x91\x90aTJV[`@Q\x80\x91\x03\x90\xA2PPPPV[`e`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xEA\xB6mz`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0F\x91W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xB5\x91\x90aTyV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x0F\xE5W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aT\x96V[a\x0F\xEE\x81a2\x7FV[PV[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\x14\x80a\x10PWP3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14[a\x10lW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aT\xE0V[a\x10u\x83a\x15ZV[\x15a\x10\xA3W`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\0\x90\x81R`\x9A` R`@\x90 T\x16a\x10\xA1\x81\x85\x85\x85a3vV[P[PPPV[`eT`@Qc#}\xFBG`\xE1\x1B\x81R3`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cF\xFB\xF6\x8E\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x10\xF0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11\x14\x91\x90aU=V[a\x110W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aUZV[`fT\x81\x81\x16\x14a\x11\xA9W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FPausable.pause: invalid attempt `D\x82\x01R\x7Fto unpause functionality\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\n\xBCV[`f\x81\x90U`@Q\x81\x81R3\x90\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=\x90` \x01[`@Q\x80\x91\x03\x90\xA2PV[a\x11\xEFa3\xF1V[a\x10\xA1\x84\x84\x84\x84a4KV[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x9B` R`@\x81 Ta\x12 \x85\x82\x86\x86a\x1BCV[\x95\x94PPPPPV[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x12IWP`\0T`\x01`\xFF\x90\x91\x16\x10[\x80a\x12cWP0;\x15\x80\x15a\x12cWP`\0T`\xFF\x16`\x01\x14[a\x12\xC6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`.`$\x82\x01R\x7FInitializable: contract is alrea`D\x82\x01Rm\x19\x1EH\x1A[\x9A]\x1AX[\x1A^\x99Y`\x92\x1B`d\x82\x01R`\x84\x01a\n\xBCV[`\0\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x12\xE9W`\0\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x12\xF3\x88\x88a6qV[a\x12\xFBa7[V[`\x97Ua\x13\x07\x89a7\xF2V[a\x13\x10\x86a8DV[a\x13\x1C\x85\x85\x85\x85a4KV[\x80\x15a\x13bW`\0\x80Ta\xFF\0\x19\x16\x90U`@Q`\x01\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[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\x14\x80a\x13\xCCWP3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14[a\x13\xE8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aT\xE0V[a\x13\xF1\x83a\x15ZV[\x15a\x10\xA3W`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\0\x90\x81R`\x9A` R`@\x90 T\x16a\x10\xA1\x81\x85\x85\x85a9>V[`fT`\x02\x90`\x04\x90\x81\x16\x14\x15a\x14FW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aSXV[`\x02`\xC9T\x14\x15a\x14\x99W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\n\xBCV[`\x02`\xC9U`\0[\x88\x81\x10\x15a\x15IWa\x159\x8A\x8A\x83\x81\x81\x10a\x14\xBEWa\x14\xBEaS\x11V[\x90P` \x02\x81\x01\x90a\x14\xD0\x91\x90aU\xA2V[\x89\x89\x84\x81\x81\x10a\x14\xE2Wa\x14\xE2aS\x11V[\x90P` \x02\x81\x01\x90a\x14\xF4\x91\x90aS\xAFV[\x89\x89\x86\x81\x81\x10a\x15\x06Wa\x15\x06aS\x11V[\x90P` \x02\x015\x88\x88\x87\x81\x81\x10a\x15\x1FWa\x15\x1FaS\x11V[\x90P` \x02\x01` \x81\x01\x90a\x154\x91\x90aU\xB8V[a9\xB9V[a\x15B\x81aS=V[\x90Pa\x14\xA1V[PP`\x01`\xC9UPPPPPPPPV[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16`\0\x90\x81R`\x9A` R`@\x90 T\x16\x15\x15\x90V[`eT`@Qc#}\xFBG`\xE1\x1B\x81R3`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cF\xFB\xF6\x8E\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x15\xC2W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15\xE6\x91\x90aU=V[a\x16\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aUZV[`\0\x19`f\x81\x90U`@Q\x90\x81R3\x90\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=\x90` \x01`@Q\x80\x91\x03\x90\xA2V[`\0\x81`@Q` \x01a\x16T\x91\x90aVIV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[`fT`\x02\x90`\x04\x90\x81\x16\x14\x15a\x16\x9AW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aSXV[`\x02`\xC9T\x14\x15a\x16\xEDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\n\xBCV[`\x02`\xC9Ua\x16\xFF\x86\x86\x86\x86\x86a9\xB9V[PP`\x01`\xC9UPPPPV[a\x17\x14a3\xF1V[a\x0F\xEE\x81a8DV[`\0`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x80\x15\x90a\x17QWP`\x01`\x01`\xA0\x1B\x03\x80\x83\x16`\0\x81\x81R`\x9A` R`@\x90 T\x90\x91\x16\x14[\x92\x91PPV[a\x17_a3\xF1V[a\x17i`\0a7\xF2V[V[B\x83` \x01Q\x10\x15a\x17\xEFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`A`$\x82\x01R\x7FDelegationManager.delegateToBySi`D\x82\x01R\x7Fgnature: staker signature expire`d\x82\x01R`\x19`\xFA\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[a\x17\xF8\x85a\x15ZV[\x15a\x18\x81W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`M`$\x82\x01R\x7FDelegationManager.delegateToBySi`D\x82\x01R\x7Fgnature: staker is already activ`d\x82\x01Rl\x19[\x1EH\x19\x19[\x19Y\xD8]\x19Y`\x9A\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[a\x18\x8A\x84a\x17\x1DV[a\x19\x16W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`Q`$\x82\x01R\x7FDelegationManager.delegateToBySi`D\x82\x01R\x7Fgnature: operator is not registe`d\x82\x01Rp92\xB2\x104\xB7\x10\"\xB4\xB3\xB2\xB7&0\xBC\xB2\xB9`y\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[`\0`\x9B`\0\x87`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01`\0 T\x90P`\0a\x19R\x87\x83\x88\x88` \x01Qa\x1BCV[`\x01`\x01`\xA0\x1B\x03\x88\x16`\0\x90\x81R`\x9B` R`@\x90 `\x01\x84\x01\x90U\x85Q\x90\x91Pa\x19\x82\x90\x88\x90\x83\x90aA\xA3V[a\x19\x8E\x87\x87\x86\x86a/\xE9V[PPPPPPPV[```\0\x82Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x19\xB4Wa\x19\xB4aL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x19\xDDW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\t\xC6W`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x98` R`@\x81 \x85Q\x90\x91\x90\x86\x90\x84\x90\x81\x10a\x1A\x1BWa\x1A\x1BaS\x11V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01`\0 T\x82\x82\x81Q\x81\x10a\x1AVWa\x1AVaS\x11V[` \x90\x81\x02\x91\x90\x91\x01\x01Ra\x1Aj\x81aS=V[\x90Pa\x19\xE3V[a\x1Az3a\x17\x1DV[a\x1A\xFCW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R\x7FDelegationManager.updateOperator`D\x82\x01R\x7FMetadataURI: caller must be an o`d\x82\x01Rf82\xB90\xBA7\xB9`\xC9\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[3`\x01`\x01`\xA0\x1B\x03\x16\x7F\x02\xA9\x19\xED\x0E*\xCA\xD1\xDD\x90\xF1~\xF2\xFAJ\xE5F.\xE13\x91p\x03J\x851\xCC\xA4\xB6p\x80\x90\x83\x83`@Qa\x1B7\x92\x91\x90aTJV[`@Q\x80\x91\x03\x90\xA2PPV[`@\x80Q\x7F9\x11\x1B\xC4\xA4\xD6\x88\xE1\xF6\x85\x12=t\x97\xD4aSp\x15*\x8E\xE4\xA0Y>d{\xD0j\xD8\xBB\x0B` \x80\x83\x01\x91\x90\x91R`\x01`\x01`\xA0\x1B\x03\x87\x81\x16\x83\x85\x01R\x85\x16``\x83\x01R`\x80\x82\x01\x86\x90R`\xA0\x80\x83\x01\x85\x90R\x83Q\x80\x84\x03\x90\x91\x01\x81R`\xC0\x90\x92\x01\x90\x92R\x80Q\x91\x01 `\0\x90\x81a\x1B\xB9a&\x9CV[`@Qa\x19\x01`\xF0\x1B` \x82\x01R`\"\x81\x01\x91\x90\x91R`B\x81\x01\x83\x90R`b\x01`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x91\x90R\x80Q` \x90\x91\x01 \x97\x96PPPPPPPV[`@Qc`\xF4\x06+`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x81\x16`\x04\x83\x01R``\x91\x82\x91`\0\x91\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`\xF4\x06+\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1ClW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1C\x90\x91\x90aV\\V[`@Qc\x94\xF6I\xDD`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x86\x81\x16`\x04\x83\x01R\x91\x92P`\0\x91\x82\x91\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\x94\xF6I\xDD\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1D\0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x1D(\x91\x90\x81\x01\x90aV\xD0V[\x91P\x91P`\0\x83\x13a\x1D?W\x90\x95\x90\x94P\x92PPPV[``\x80\x83Q`\0\x14\x15a\x1D\xF9W`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x90` \x80\x83\x01\x90\x806\x837PP`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x92\x94P\x90P` \x80\x83\x01\x90\x806\x837\x01\x90PP\x90Ps\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0\x82`\0\x81Q\x81\x10a\x1D\xB4Wa\x1D\xB4aS\x11V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x84\x81`\0\x81Q\x81\x10a\x1D\xE8Wa\x1D\xE8aS\x11V[` \x02` \x01\x01\x81\x81RPPa\x1F\xA7V[\x83Qa\x1E\x06\x90`\x01aW\x8AV[`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1E\x1DWa\x1E\x1DaL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1EFW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x91P\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1EbWa\x1EbaL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1E\x8BW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P`\0[\x84Q\x81\x10\x15a\x1F%W\x84\x81\x81Q\x81\x10a\x1E\xACWa\x1E\xACaS\x11V[` \x02` \x01\x01Q\x83\x82\x81Q\x81\x10a\x1E\xC6Wa\x1E\xC6aS\x11V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x83\x81\x81Q\x81\x10a\x1E\xF8Wa\x1E\xF8aS\x11V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x1F\x12Wa\x1F\x12aS\x11V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x1E\x91V[Ps\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0\x82`\x01\x84Qa\x1FJ\x91\x90aW\xA2V[\x81Q\x81\x10a\x1FZWa\x1FZaS\x11V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x84\x81`\x01\x84Qa\x1F\x8A\x91\x90aW\xA2V[\x81Q\x81\x10a\x1F\x9AWa\x1F\x9AaS\x11V[` \x02` \x01\x01\x81\x81RPP[\x90\x97\x90\x96P\x94PPPPPV[`fT``\x90`\x01\x90`\x02\x90\x81\x16\x14\x15a\x1F\xE0W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aSXV[a\x1F\xE9\x83a\x15ZV[a iW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01\x81\x90R\x7FDelegationManager.undelegate: st\x90\x82\x01R\x7Faker must be delegated to undele`d\x82\x01Rcgate`\xE0\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[a r\x83a\x17\x1DV[\x15a \xE5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R\x7FDelegationManager.undelegate: op`D\x82\x01R\x7Ferators cannot be undelegated\0\0\0`d\x82\x01R`\x84\x01a\n\xBCV[`\x01`\x01`\xA0\x1B\x03\x83\x16a!aW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R\x7FDelegationManager.undelegate: ca`D\x82\x01R\x7Fnnot undelegate zero address\0\0\0\0`d\x82\x01R`\x84\x01a\n\xBCV[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\0\x81\x81R`\x9A` R`@\x90 T\x90\x91\x16\x903\x14\x80a!\x94WP3`\x01`\x01`\xA0\x1B\x03\x82\x16\x14[\x80a!\xBBWP`\x01`\x01`\xA0\x1B\x03\x81\x81\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T\x163\x14[a\"-W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R\x7FDelegationManager.undelegate: ca`D\x82\x01R\x7Fller cannot undelegate staker\0\0\0`d\x82\x01R`\x84\x01a\n\xBCV[`\0\x80a\"9\x86a\x1B\xFCV[\x90\x92P\x90P3`\x01`\x01`\xA0\x1B\x03\x87\x16\x14a\"\x8FW\x82`\x01`\x01`\xA0\x1B\x03\x16\x86`\x01`\x01`\xA0\x1B\x03\x16\x7F\xF0\xED\xDF\x07\xE6\xEA\x14\xF3\x88\xB4~\x1E\x94\xA0\xF4d\xEC\xBD\x9E\xEDAq\x13\x0E\x0F\xC0\xE9\x9F\xB4\x03\n\x8A`@Q`@Q\x80\x91\x03\x90\xA3[\x82`\x01`\x01`\xA0\x1B\x03\x16\x86`\x01`\x01`\xA0\x1B\x03\x16\x7F\xFE\xE3\tf\xA2V\xB7\x1E\x14\xBC\x0E\xBF\xC9C\x15\xE2\x8E\xF4\xA9zq1\xA9\xE2\xB7\xA3\x10\xA7:\xF4Fv`@Q`@Q\x80\x91\x03\x90\xA3`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x90\x81R`\x9A` R`@\x90 \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U\x81Qa#\x11W`@\x80Q`\0\x81R` \x81\x01\x90\x91R\x94Pa$oV[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a#*Wa#*aL1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a#SW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x94P`\0[\x82Q\x81\x10\x15a$mW`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91` \x80\x83\x01\x90\x806\x837PP`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R\x92\x93P`\0\x92\x91P` \x80\x83\x01\x90\x806\x837\x01\x90PP\x90P\x84\x83\x81Q\x81\x10a#\xB9Wa#\xB9aS\x11V[` \x02` \x01\x01Q\x82`\0\x81Q\x81\x10a#\xD4Wa#\xD4aS\x11V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x83\x83\x81Q\x81\x10a$\x06Wa$\x06aS\x11V[` \x02` \x01\x01Q\x81`\0\x81Q\x81\x10a$!Wa$!aS\x11V[` \x02` \x01\x01\x81\x81RPPa$:\x89\x87\x8B\x85\x85a(6V[\x88\x84\x81Q\x81\x10a$LWa$LaS\x11V[` \x02` \x01\x01\x81\x81RPPPP\x80\x80a$e\x90aS=V[\x91PPa#YV[P[PPPP\x91\x90PV[a$\x813a\x15ZV[\x15a$\xFFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`B`$\x82\x01R\x7FDelegationManager.delegateTo: st`D\x82\x01R\x7Faker is already actively delegat`d\x82\x01Ra\x19Y`\xF2\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[a%\x08\x83a\x17\x1DV[a%\x89W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`F`$\x82\x01R\x7FDelegationManager.delegateTo: op`D\x82\x01R\x7Ferator is not registered in Eige`d\x82\x01Re7&0\xBC\xB2\xB9`\xD1\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[a\x10\xA33\x84\x84\x84a/\xE9V[a%\x9E3a\x17\x1DV[a&\x1CW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R\x7FDelegationManager.modifyOperator`D\x82\x01R\x7FDetails: caller must be an opera`d\x82\x01Rb:7\xB9`\xE9\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[a\x0F\xEE3\x82a-\xF6V[a&.a3\xF1V[`\x01`\x01`\xA0\x1B\x03\x81\x16a&\x93W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\n\xBCV[a\x0F\xEE\x81a7\xF2V[`\0\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\0F\x14\x15a&\xCDWP`\x97T\x90V[a&\xD5a7[V[\x90P\x90V[`e`\0\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\xEA\xB6mz`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a'-W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a'Q\x91\x90aTyV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a'\x81W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aT\x96V[`fT\x19\x81\x19`fT\x19\x16\x14a'\xFFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`8`$\x82\x01R\x7FPausable.unpause: invalid attemp`D\x82\x01R\x7Ft to pause functionality\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\n\xBCV[`f\x81\x90U`@Q\x81\x81R3\x90\x7F5\x82\xD1\x82\x8E&\xBFV\xBD\x80\x15\x02\xBC\x02\x1A\xC0\xBC\x8A\xFBW\xC8&\xE4\x98kEY<\x8F\xAD8\x9C\x90` \x01a\x11\xDCV[`\0`\x01`\x01`\xA0\x1B\x03\x86\x16a(\xCDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`P`$\x82\x01R\x7FDelegationManager._removeSharesA`D\x82\x01R\x7FndQueueWithdrawal: staker cannot`d\x82\x01Ro be zero address`\x80\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[\x82Qa)WW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`M`$\x82\x01R\x7FDelegationManager._removeSharesA`D\x82\x01R\x7FndQueueWithdrawal: strategies ca`d\x82\x01Rlnnot be empty`\x98\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[`\0[\x83Q\x81\x10\x15a-\x04W`\x01`\x01`\xA0\x1B\x03\x86\x16\x15a)\xB0Wa)\xB0\x86\x88\x86\x84\x81Q\x81\x10a)\x89Wa)\x89aS\x11V[` \x02` \x01\x01Q\x86\x85\x81Q\x81\x10a)\xA3Wa)\xA3aS\x11V[` \x02` \x01\x01Qa3vV[s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0`\x01`\x01`\xA0\x1B\x03\x16\x84\x82\x81Q\x81\x10a)\xE0Wa)\xE0aS\x11V[` \x02` \x01\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a*\xA9W\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\xBE\xFF\xBB\x89\x88\x85\x84\x81Q\x81\x10a*9Wa*9aS\x11V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a*r\x92\x91\x90`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x82R` \x82\x01R`@\x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a*\x8CW`\0\x80\xFD[PZ\xF1\x15\x80\x15a*\xA0W=`\0\x80>=`\0\xFD[PPPPa,\xFCV[\x84`\x01`\x01`\xA0\x1B\x03\x16\x87`\x01`\x01`\xA0\x1B\x03\x16\x14\x80a+{WP\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\x9BM\xA0=\x85\x83\x81Q\x81\x10a+\x05Wa+\x05aS\x11V[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a+8\x91\x90`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a+UW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a+y\x91\x90aU=V[\x15[a,GW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x84`$\x82\x01\x81\x90R\x7FDelegationManager._removeSharesA`D\x83\x01R\x7FndQueueWithdrawal: withdrawer mu`d\x83\x01R\x7Fst be same address as staker if \x90\x82\x01R\x7FthirdPartyTransfersForbidden are`\xA4\x82\x01Rc\x08\x1C\xD9]`\xE2\x1B`\xC4\x82\x01R`\xE4\x01a\n\xBCV[\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\x8C\x80\xD4\xE5\x88\x86\x84\x81Q\x81\x10a,\x89Wa,\x89aS\x11V[` \x02` \x01\x01Q\x86\x85\x81Q\x81\x10a,\xA3Wa,\xA3aS\x11V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a,\xC9\x93\x92\x91\x90aW\xB9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a,\xE3W`\0\x80\xFD[PZ\xF1\x15\x80\x15a,\xF7W=`\0\x80>=`\0\xFD[PPPP[`\x01\x01a)ZV[P`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x90\x81R`\x9F` R`@\x81 \x80T\x91\x82\x91\x90a-,\x83aS=V[\x91\x90PUP`\0`@Q\x80`\xE0\x01`@R\x80\x89`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x88`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x87`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x83\x81R` \x01Cc\xFF\xFF\xFF\xFF\x16\x81R` \x01\x86\x81R` \x01\x85\x81RP\x90P`\0a-\x94\x82a\x16AV[`\0\x81\x81R`\x9E` R`@\x90\x81\x90 \x80T`\xFF\x19\x16`\x01\x17\x90UQ\x90\x91P\x7F\x90\t\xAB\x15>\x80\x14\xFB\xFB\x02\xF2!\x7F\\\xDEz\xA7\xF9\xADsJ\xE8\\\xA3\xEE?L\xA2\xFD\xD4\x99\xF9\x90a-\xE2\x90\x83\x90\x85\x90aW\xDDV[`@Q\x80\x91\x03\x90\xA1\x98\x97PPPPPPPPV[b\x13\xC6\x80a.\n``\x83\x01`@\x84\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16\x11\x15a.\xBFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`l`$\x82\x01R\x7FDelegationManager._setOperatorDe`D\x82\x01R\x7Ftails: stakerOptOutWindowBlocks `d\x82\x01R\x7Fcannot be > MAX_STAKER_OPT_OUT_W`\x84\x82\x01RkINDOW_BLOCKS`\xA0\x1B`\xA4\x82\x01R`\xC4\x01a\n\xBCV[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`\x99` R`@\x90\x81\x90 `\x01\x01T`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x90a.\xFB\x90``\x84\x01\x90\x84\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16\x10\x15a/\x91W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`S`$\x82\x01R\x7FDelegationManager._setOperatorDe`D\x82\x01R\x7Ftails: stakerOptOutWindowBlocks `d\x82\x01Rr\x18\xD8[\x9B\x9B\xDD\x08\x18\x99H\x19\x19X\xDC\x99X\\\xD9Y`j\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`\x99` R`@\x90 \x81\x90a/\xB5\x82\x82aX3V[PP`@Q3\x90\x7F\xFE\xBE\\\xD2K,\xBC{\x06[\x9D\x0F\xDE\xB9\x04F\x1EJ\xFC\xFFW\xDDW\xAC\xDA\x1Ex2\x03\x1B\xA7\xAC\x90a\x1B7\x90\x84\x90aS\xF8V[`fT`\0\x90`\x01\x90\x81\x16\x14\x15a0\x12W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aSXV[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\0\x90\x81R`\x99` R`@\x90 `\x01\x01T\x16\x80\x15\x80\x15\x90a0HWP3`\x01`\x01`\xA0\x1B\x03\x82\x16\x14\x15[\x80\x15a0]WP3`\x01`\x01`\xA0\x1B\x03\x86\x16\x14\x15[\x15a1\xCAWB\x84` \x01Q\x10\x15a0\xDCW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R\x7FDelegationManager._delegate: app`D\x82\x01R\x7Frover signature expired\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\n\xBCV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`\x9C` \x90\x81R`@\x80\x83 \x86\x84R\x90\x91R\x90 T`\xFF\x16\x15a1vW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R\x7FDelegationManager._delegate: app`D\x82\x01R\x7FroverSalt already spent\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\n\xBCV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`\x9C` \x90\x81R`@\x80\x83 \x86\x84R\x82R\x82 \x80T`\xFF\x19\x16`\x01\x17\x90U\x85\x01Qa1\xB7\x90\x88\x90\x88\x90\x85\x90\x88\x90a\t\xCEV[\x90Pa1\xC8\x82\x82\x87`\0\x01QaA\xA3V[P[`\x01`\x01`\xA0\x1B\x03\x86\x81\x16`\0\x81\x81R`\x9A` R`@\x80\x82 \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x94\x8A\x16\x94\x85\x17\x90UQ\x7F\xC3\xEE\x9F._\xDA\x98\xE8\x06j\x1Ft[-\xF9(_Ao\xE9\x8C\xF2U\x9C\xD2\x14\x84\xB3\xD8t3\x04\x91\x90\xA3`\0\x80a2)\x88a\x1B\xFCV[\x91P\x91P`\0[\x82Q\x81\x10\x15a\x13bWa2w\x88\x8A\x85\x84\x81Q\x81\x10a2PWa2PaS\x11V[` \x02` \x01\x01Q\x85\x85\x81Q\x81\x10a2jWa2jaS\x11V[` \x02` \x01\x01Qa9>V[`\x01\x01a20V[`\x01`\x01`\xA0\x1B\x03\x81\x16a3\rW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`I`$\x82\x01R\x7FPausable._setPauserRegistry: new`D\x82\x01R\x7FPauserRegistry cannot be the zer`d\x82\x01Rho address`\xB8\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[`eT`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x83\x16` \x83\x01R\x7Fn\x9F\xCDS\x98\x96\xFC\xA6\x0E\x8B\x0F\x01\xDDX\x023\xE4\x8Ak\x0F}\xF0\x13\xB8\x9B\xA7\xF5e\x86\x9A\xCD\xB6\x91\x01`@Q\x80\x91\x03\x90\xA1`e\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\0\x90\x81R`\x98` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R\x90\x81 \x80T\x83\x92\x90a3\xAD\x90\x84\x90aW\xA2V[\x92PP\x81\x90UP\x83`\x01`\x01`\xA0\x1B\x03\x16\x7Fi\t`\x007\xB7]{G3\xAE\xDD\x81TB\xB5\xEC\x01\x8A\x82wQ\xC82\xAA\xFFd\xEB\xA5\xD6\xD2\xDD\x84\x84\x84`@Qa\x0F0\x93\x92\x91\x90aW\xB9V[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x17iW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\n\xBCV[\x82\x81\x14a4\xD3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`J`$\x82\x01R\x7FDelegationManager._setStrategyWi`D\x82\x01R\x7FthdrawalDelayBlocks: input lengt`d\x82\x01Ri\r\x04\r\xAD.m\xAC.\x8Cm`\xB3\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[\x82`\0[\x81\x81\x10\x15a6iW`\0\x86\x86\x83\x81\x81\x10a4\xF3Wa4\xF3aS\x11V[\x90P` \x02\x01` \x81\x01\x90a5\x08\x91\x90aI\xFFV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`\xA1` R`@\x81 T\x91\x92P\x86\x86\x85\x81\x81\x10a56Wa56aS\x11V[\x90P` \x02\x015\x90Pb\x03K\xC0\x81\x11\x15a5\xFAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`s`$\x82\x01R\x7FDelegationManager._setStrategyWi`D\x82\x01R\x7FthdrawalDelayBlocks: _withdrawal`d\x82\x01R\x7FDelayBlocks cannot be > MAX_WITH`\x84\x82\x01RrDRAWAL_DELAY_BLOCKS`h\x1B`\xA4\x82\x01R`\xC4\x01a\n\xBCV[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x81\x81R`\xA1` \x90\x81R`@\x91\x82\x90 \x84\x90U\x81Q\x92\x83R\x82\x01\x84\x90R\x81\x01\x82\x90R\x7F\x0E~\xFAs\x8E\x8B\x0C\xE67j\x0C\x1A\xF4qeU@\xD2\xE9\xA8\x16G\xD7\xB0\x9E\xD8#\x01\x84&Wm\x90``\x01`@Q\x80\x91\x03\x90\xA1PPP\x80a6b\x90aS=V[\x90Pa4\xD7V[PPPPPPV[`eT`\x01`\x01`\xA0\x1B\x03\x16\x15\x80\x15a6\x92WP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15\x15[a7\x14W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R\x7FPausable._initializePauser: _ini`D\x82\x01R\x7FtializePauser() can only be call`d\x82\x01Rfed once`\xC8\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[`f\x81\x90U`@Q\x81\x81R3\x90\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=\x90` \x01`@Q\x80\x91\x03\x90\xA2a7W\x82a2\x7FV[PPV[`@\x80Q\x80\x82\x01\x82R`\n\x81Ri\"\xB4\xB3\xB2\xB7&0\xBC\xB2\xB9`\xB1\x1B` \x91\x82\x01R\x81Q\x7F\x8C\xAD\x95h{\xA8,,\xE5\x0Et\xF7\xB7Td^Q\x17\xC3\xA5\xBE\xC8\x15\x1C\x07&\xD5\x85y\x80\xA8f\x81\x83\x01R\x7Fq\xB6%\xCF\xADD\xBA\xC6;\x13\xDB\xA0\x7F.\x1D`\x84\xEE\x04\xB6\xF8u!\x01\xEC\xE6\x12mXN\xE6\xEA\x81\x84\x01RF``\x82\x01R0`\x80\x80\x83\x01\x91\x90\x91R\x83Q\x80\x83\x03\x90\x91\x01\x81R`\xA0\x90\x91\x01\x90\x92R\x81Q\x91\x01 \x90V[`3\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x90\x93U`@Q\x91\x16\x91\x90\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90`\0\x90\xA3PPV[b\x03K\xC0\x81\x11\x15a8\xFDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`q`$\x82\x01R\x7FDelegationManager._setMinWithdra`D\x82\x01R\x7FwalDelayBlocks: _minWithdrawalDe`d\x82\x01R\x7FlayBlocks cannot be > MAX_WITHDR`\x84\x82\x01RpAWAL_DELAY_BLOCKS`x\x1B`\xA4\x82\x01R`\xC4\x01a\n\xBCV[`\x9DT`@\x80Q\x91\x82R` \x82\x01\x83\x90R\x7F\xAF\xA0\x03\xCDv\xF8\x7F\xF9\xD6+5\xBE\xEA\x88\x99 \xF3<\x0CB\xB8\xD4[t\x95Ma\xD5\x0FKki\x91\x01`@Q\x80\x91\x03\x90\xA1`\x9DUV[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\0\x90\x81R`\x98` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R\x90\x81 \x80T\x83\x92\x90a9u\x90\x84\x90aW\x8AV[\x92PP\x81\x90UP\x83`\x01`\x01`\xA0\x1B\x03\x16\x7F\x1E\xC0B\xC9e\xE2\xED\xD7\x10{Q\x18\x8E\xE0\xF3\x83\xE2.v\x17\x90A\xAB:\x9D\x18\xFF\x15\x14\x05\x16l\x84\x84\x84`@Qa\x0F0\x93\x92\x91\x90aW\xB9V[`\0a9\xC7a\x05\xF3\x87aX\x96V[`\0\x81\x81R`\x9E` R`@\x90 T\x90\x91P`\xFF\x16a:HW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R`\0\x80Q` aY\xC8\x839\x81Q\x91R`D\x82\x01R\x7FdWithdrawal: action is not in qu`d\x82\x01Rbeue`\xE8\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[`\x9DTC\x90a:]`\xA0\x89\x01`\x80\x8A\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16a:m\x91\x90aW\x8AV[\x11\x15a:\xF5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`_`$\x82\x01R`\0\x80Q` aY\xC8\x839\x81Q\x91R`D\x82\x01R\x7FdWithdrawal: minWithdrawalDelayB`d\x82\x01R\x7Flocks period has not yet passed\0`\x84\x82\x01R`\xA4\x01a\n\xBCV[a;\x05``\x87\x01`@\x88\x01aI\xFFV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a;\x92W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`P`$\x82\x01R`\0\x80Q` aY\xC8\x839\x81Q\x91R`D\x82\x01R\x7FdWithdrawal: only withdrawer can`d\x82\x01Ro\x101\xB7\xB6\xB862\xBA2\x900\xB1\xBA4\xB7\xB7`\x81\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[\x81\x15a<\x14Wa;\xA5`\xA0\x87\x01\x87aS\xAFV[\x85\x14\x90Pa<\x14W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`B`$\x82\x01R`\0\x80Q` aY\xC8\x839\x81Q\x91R`D\x82\x01R\x7FdWithdrawal: input length mismat`d\x82\x01Ra\x0Cm`\xF3\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[`\0\x81\x81R`\x9E` R`@\x90 \x80T`\xFF\x19\x16\x90U\x81\x15a=yW`\0[a<@`\xA0\x88\x01\x88aS\xAFV[\x90P\x81\x10\x15a=sWC`\xA1`\0a<[`\xA0\x8B\x01\x8BaS\xAFV[\x85\x81\x81\x10a<kWa<kaS\x11V[\x90P` \x02\x01` \x81\x01\x90a<\x80\x91\x90aI\xFFV[`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x81\x01\x91\x90\x91R`@\x01`\0 Ta<\xAA`\xA0\x8A\x01`\x80\x8B\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16a<\xBA\x91\x90aW\x8AV[\x11\x15a<\xD8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aX\xA2V[a=ka<\xE8` \x89\x01\x89aI\xFFV[3a<\xF6`\xA0\x8B\x01\x8BaS\xAFV[\x85\x81\x81\x10a=\x06Wa=\x06aS\x11V[\x90P` \x02\x01` \x81\x01\x90a=\x1B\x91\x90aI\xFFV[a=(`\xC0\x8C\x01\x8CaS\xAFV[\x86\x81\x81\x10a=8Wa=8aS\x11V[\x90P` \x02\x015\x8A\x8A\x87\x81\x81\x10a=QWa=QaS\x11V[\x90P` \x02\x01` \x81\x01\x90a=f\x91\x90aI\xFFV[aC]V[`\x01\x01a<3V[PaAhV[3`\0\x90\x81R`\x9A` R`@\x81 T`\x01`\x01`\xA0\x1B\x03\x16\x90[a=\xA1`\xA0\x89\x01\x89aS\xAFV[\x90P\x81\x10\x15aAeWC`\xA1`\0a=\xBC`\xA0\x8C\x01\x8CaS\xAFV[\x85\x81\x81\x10a=\xCCWa=\xCCaS\x11V[\x90P` \x02\x01` \x81\x01\x90a=\xE1\x91\x90aI\xFFV[`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x81\x01\x91\x90\x91R`@\x01`\0 Ta>\x0B`\xA0\x8B\x01`\x80\x8C\x01aW\xF6V[c\xFF\xFF\xFF\xFF\x16a>\x1B\x91\x90aW\x8AV[\x11\x15a>9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\n\xBC\x90aX\xA2V[s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0a>[`\xA0\x8A\x01\x8AaS\xAFV[\x83\x81\x81\x10a>kWa>kaS\x11V[\x90P` \x02\x01` \x81\x01\x90a>\x80\x91\x90aI\xFFV[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15a?\xD0W`\0a>\x9E` \x8A\x01\x8AaI\xFFV[\x90P`\0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16c\x0E\x81\x07<\x83a>\xDF`\xC0\x8E\x01\x8EaS\xAFV[\x87\x81\x81\x10a>\xEFWa>\xEFaS\x11V[`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x87\x90\x1B\x16\x81R`\x01`\x01`\xA0\x1B\x03\x90\x94\x16`\x04\x85\x01R` \x02\x91\x90\x91\x015`$\x83\x01RP`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a?CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a?g\x91\x90aV\\V[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\0\x90\x81R`\x9A` R`@\x90 T\x91\x92P\x16\x80\x15a?\xC8Wa?\xC8\x81\x84a?\x9D`\xA0\x8F\x01\x8FaS\xAFV[\x88\x81\x81\x10a?\xADWa?\xADaS\x11V[\x90P` \x02\x01` \x81\x01\x90a?\xC2\x91\x90aI\xFFV[\x85a9>V[PPPaA]V[\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\xC4b>\xA13\x89\x89\x85\x81\x81\x10a@\x12Wa@\x12aS\x11V[\x90P` \x02\x01` \x81\x01\x90a@'\x91\x90aI\xFFV[a@4`\xA0\x8D\x01\x8DaS\xAFV[\x86\x81\x81\x10a@DWa@DaS\x11V[\x90P` \x02\x01` \x81\x01\x90a@Y\x91\x90aI\xFFV[a@f`\xC0\x8E\x01\x8EaS\xAFV[\x87\x81\x81\x10a@vWa@vaS\x11V[`@Q`\xE0\x88\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81R`\x01`\x01`\xA0\x1B\x03\x96\x87\x16`\x04\x82\x01R\x94\x86\x16`$\x86\x01R\x92\x90\x94\x16`D\x84\x01R` \x90\x91\x02\x015`d\x82\x01R`\x84\x01\x90P`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a@\xD6W`\0\x80\xFD[PZ\xF1\x15\x80\x15a@\xEAW=`\0\x80>=`\0\xFD[PPPP`\x01`\x01`\xA0\x1B\x03\x82\x16\x15aA]WaA]\x823aA\x0F`\xA0\x8C\x01\x8CaS\xAFV[\x85\x81\x81\x10aA\x1FWaA\x1FaS\x11V[\x90P` \x02\x01` \x81\x01\x90aA4\x91\x90aI\xFFV[aAA`\xC0\x8D\x01\x8DaS\xAFV[\x86\x81\x81\x10aAQWaAQaS\x11V[\x90P` \x02\x015a9>V[`\x01\x01a=\x94V[PP[`@Q\x81\x81R\x7F\xC9p\x98\xC2\xF6X\x80\x0BM\xF2\x90\x01R\x7Fs$\xBC\xDF\xFC\xF6\xE8u\x1Ai\x9A\xB9 \xA1\xEC\xED[\x1D\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16;\x15aB\xBDW`@Qc\x0B\x13]?`\xE1\x1B\x80\x82R\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\x16&\xBA~\x90aA\xE3\x90\x86\x90\x86\x90`\x04\x01aY*V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15aB\0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90aB$\x91\x90aY\x87V[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14a\x10\xA3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`S`$\x82\x01R\x7FEIP1271SignatureUtils.checkSigna`D\x82\x01R\x7Fture_EIP1271: ERC1271 signature `d\x82\x01Rr\x1D\x99\\\x9AY\x9AX\xD8]\x1A[\xDB\x88\x19\x98Z[\x19Y`j\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[\x82`\x01`\x01`\xA0\x1B\x03\x16aB\xD1\x83\x83aD\x9DV[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x10\xA3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R\x7FEIP1271SignatureUtils.checkSigna`D\x82\x01R\x7Fture_EIP1271: signature not from`d\x82\x01Rf\x109\xB4\xB3\xB72\xB9`\xC9\x1B`\x84\x82\x01R`\xA4\x01a\n\xBCV[`\x01`\x01`\xA0\x1B\x03\x83\x16s\xBE\xAC\x0E\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEB\xEA\xC0\x14\x15aD\x08W`@Qb8{\x13`\xE8\x1B\x81R`\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\x90c8{\x13\0\x90aC\xD1\x90\x88\x90\x88\x90\x87\x90`\x04\x01aW\xB9V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15aC\xEBW`\0\x80\xFD[PZ\xF1\x15\x80\x15aC\xFFW=`\0\x80>=`\0\xFD[PPPPaD\x96V[`@Qc\xC6\x08\xC7\xF3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x81\x16`\x04\x83\x01R\x84\x81\x16`$\x83\x01R`D\x82\x01\x84\x90R\x82\x81\x16`d\x83\x01R\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\x90c\xC6\x08\xC7\xF3\x90`\x84\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15aD\x82W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x13bW=`\0\x80>=`\0\xFD[PPPPPV[`\0\x80`\0aD\xAC\x85\x85aD\xB9V[\x91P\x91Pa\t\xC6\x81aE)V[`\0\x80\x82Q`A\x14\x15aD\xF0W` \x83\x01Q`@\x84\x01Q``\x85\x01Q`\0\x1AaD\xE4\x87\x82\x85\x85aF\xE4V[\x94P\x94PPPPaE\"V[\x82Q`@\x14\x15aE\x1AW` \x83\x01Q`@\x84\x01QaE\x0F\x86\x83\x83aG\xD1V[\x93P\x93PPPaE\"V[P`\0\x90P`\x02[\x92P\x92\x90PV[`\0\x81`\x04\x81\x11\x15aE=WaE=aY\xB1V[\x14\x15aEFWPV[`\x01\x81`\x04\x81\x11\x15aEZWaEZaY\xB1V[\x14\x15aE\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x18`$\x82\x01R\x7FECDSA: invalid signature\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\n\xBCV[`\x02\x81`\x04\x81\x11\x15aE\xBCWaE\xBCaY\xB1V[\x14\x15aF\nW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FECDSA: invalid signature length\0`D\x82\x01R`d\x01a\n\xBCV[`\x03\x81`\x04\x81\x11\x15aF\x1EWaF\x1EaY\xB1V[\x14\x15aFwW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FECDSA: invalid signature 's' val`D\x82\x01Raue`\xF0\x1B`d\x82\x01R`\x84\x01a\n\xBCV[`\x04\x81`\x04\x81\x11\x15aF\x8BWaF\x8BaY\xB1V[\x14\x15a\x0F\xEEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FECDSA: invalid signature 'v' val`D\x82\x01Raue`\xF0\x1B`d\x82\x01R`\x84\x01a\n\xBCV[`\0\x80\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF]WnsW\xA4P\x1D\xDF\xE9/Fh\x1B \xA0\x83\x11\x15aG\x1BWP`\0\x90P`\x03aG\xC8V[\x84`\xFF\x16`\x1B\x14\x15\x80\x15aG3WP\x84`\xFF\x16`\x1C\x14\x15[\x15aGDWP`\0\x90P`\x04aG\xC8V[`@\x80Q`\0\x80\x82R` \x82\x01\x80\x84R\x89\x90R`\xFF\x88\x16\x92\x82\x01\x92\x90\x92R``\x81\x01\x86\x90R`\x80\x81\x01\x85\x90R`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15aG\x98W=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16aG\xC1W`\0`\x01\x92P\x92PPaG\xC8V[\x91P`\0\x90P[\x94P\x94\x92PPPV[`\0\x80`\x01`\x01`\xFF\x1B\x03\x83\x16\x81aG\xEE`\xFF\x86\x90\x1C`\x1BaW\x8AV[\x90PaG\xFC\x87\x82\x88\x85aF\xE4V[\x93P\x93PPP\x93P\x93\x91PPV[`\0\x80\x83`\x1F\x84\x01\x12aH\x1CW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aH3W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15aE\"W`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15aHaW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aHwW`\0\x80\xFD[aH\x83\x85\x82\x86\x01aH\nV[\x90\x96\x90\x95P\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x0F\xEEW`\0\x80\xFD[\x805aH\xAF\x81aH\x8FV[\x91\x90PV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15aH\xCCW`\0\x80\xFD[\x855aH\xD7\x81aH\x8FV[\x94P` \x86\x015aH\xE7\x81aH\x8FV[\x93P`@\x86\x015aH\xF7\x81aH\x8FV[\x94\x97\x93\x96P\x93\x94``\x81\x015\x94P`\x80\x015\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15aIGW\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01aI+V[P\x90\x96\x95PPPPPPV[`\0``\x82\x84\x03\x12\x15aIeW`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12aI}W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aI\x94W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15aE\"W`\0\x80\xFD[`\0\x80`\0`\x80\x84\x86\x03\x12\x15aI\xC1W`\0\x80\xFD[aI\xCB\x85\x85aISV[\x92P``\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aI\xE6W`\0\x80\xFD[aI\xF2\x86\x82\x87\x01aIkV[\x94\x97\x90\x96P\x93\x94PPPPV[`\0` \x82\x84\x03\x12\x15aJ\x11W`\0\x80\xFD[\x815aJ\x1C\x81aH\x8FV[\x93\x92PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15aJ8W`\0\x80\xFD[\x835aJC\x81aH\x8FV[\x92P` \x84\x015aJS\x81aH\x8FV[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15aJvW`\0\x80\xFD[P5\x91\x90PV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15aJ\x93W`\0\x80\xFD[\x845`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aJ\xAAW`\0\x80\xFD[aJ\xB6\x88\x83\x89\x01aH\nV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15aJ\xCFW`\0\x80\xFD[PaJ\xDC\x87\x82\x88\x01aH\nV[\x95\x98\x94\x97P\x95PPPPV[`\0\x80`\0\x80`\0\x80`\0\x80`\xC0\x89\x8B\x03\x12\x15aK\x04W`\0\x80\xFD[\x885aK\x0F\x81aH\x8FV[\x97P` \x89\x015aK\x1F\x81aH\x8FV[\x96P`@\x89\x015\x95P``\x89\x015\x94P`\x80\x89\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aKIW`\0\x80\xFD[aKU\x8C\x83\x8D\x01aH\nV[\x90\x96P\x94P`\xA0\x8B\x015\x91P\x80\x82\x11\x15aKnW`\0\x80\xFD[PaK{\x8B\x82\x8C\x01aH\nV[\x99\x9C\x98\x9BP\x96\x99P\x94\x97\x93\x96\x92\x95\x94PPPV[`\0\x80`\0\x80`\0\x80`\0\x80`\x80\x89\x8B\x03\x12\x15aK\xABW`\0\x80\xFD[\x885`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aK\xC2W`\0\x80\xFD[aK\xCE\x8C\x83\x8D\x01aH\nV[\x90\x9AP\x98P` \x8B\x015\x91P\x80\x82\x11\x15aK\xE7W`\0\x80\xFD[aK\xF3\x8C\x83\x8D\x01aH\nV[\x90\x98P\x96P`@\x8B\x015\x91P\x80\x82\x11\x15aL\x0CW`\0\x80\xFD[aL\x18\x8C\x83\x8D\x01aH\nV[\x90\x96P\x94P``\x8B\x015\x91P\x80\x82\x11\x15aKnW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q`\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aLiWaLiaL1V[`@R\x90V[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aLiWaLiaL1V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15aL\xB9WaL\xB9aL1V[`@R\x91\x90PV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0F\xEEW`\0\x80\xFD[\x805aH\xAF\x81aL\xC1V[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15aL\xF7WaL\xF7aL1V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12aM\x12W`\0\x80\xFD[\x815` aM'aM\"\x83aL\xDEV[aL\x91V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aMFW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aMjW\x805aM]\x81aH\x8FV[\x83R\x91\x83\x01\x91\x83\x01aMJV[P\x96\x95PPPPPPV[`\0\x82`\x1F\x83\x01\x12aM\x86W`\0\x80\xFD[\x815` aM\x96aM\"\x83aL\xDEV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aM\xB5W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aMjW\x805\x83R\x91\x83\x01\x91\x83\x01aM\xB9V[`\0`\xE0\x82\x84\x03\x12\x15aM\xE2W`\0\x80\xFD[aM\xEAaLGV[\x90PaM\xF5\x82aH\xA4V[\x81RaN\x03` \x83\x01aH\xA4V[` \x82\x01RaN\x14`@\x83\x01aH\xA4V[`@\x82\x01R``\x82\x015``\x82\x01RaN/`\x80\x83\x01aL\xD3V[`\x80\x82\x01R`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aNNW`\0\x80\xFD[aNZ\x85\x83\x86\x01aM\x01V[`\xA0\x84\x01R`\xC0\x84\x015\x91P\x80\x82\x11\x15aNsW`\0\x80\xFD[PaN\x80\x84\x82\x85\x01aMuV[`\xC0\x83\x01RP\x92\x91PPV[`\0` \x82\x84\x03\x12\x15aN\x9EW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15aN\xB4W`\0\x80\xFD[aN\xC0\x84\x82\x85\x01aM\xD0V[\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15aN\xDAW`\0\x80\xFD[\x815`\xFF\x81\x16\x81\x14aJ\x1CW`\0\x80\xFD[\x80\x15\x15\x81\x14a\x0F\xEEW`\0\x80\xFD[`\0\x80`\0\x80`\0`\x80\x86\x88\x03\x12\x15aO\x11W`\0\x80\xFD[\x855`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aO(W`\0\x80\xFD[\x90\x87\x01\x90`\xE0\x82\x8A\x03\x12\x15aO<W`\0\x80\xFD[\x90\x95P` \x87\x015\x90\x80\x82\x11\x15aORW`\0\x80\xFD[PaO_\x88\x82\x89\x01aH\nV[\x90\x95P\x93PP`@\x86\x015\x91P``\x86\x015aOz\x81aN\xEBV[\x80\x91PP\x92\x95P\x92\x95\x90\x93PV[`\0\x80`@\x83\x85\x03\x12\x15aO\x9BW`\0\x80\xFD[\x825aO\xA6\x81aH\x8FV[\x91P` \x83\x015aO\xB6\x81aH\x8FV[\x80\x91PP\x92P\x92\x90PV[`\0`@\x82\x84\x03\x12\x15aO\xD3W`\0\x80\xFD[aO\xDBaLoV[\x90P\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aO\xF4W`\0\x80\xFD[\x81\x84\x01\x91P\x84`\x1F\x83\x01\x12aP\x08W`\0\x80\xFD[\x815` \x82\x82\x11\x15aP\x1CWaP\x1CaL1V[aP.`\x1F\x83\x01`\x1F\x19\x16\x82\x01aL\x91V[\x92P\x81\x83R\x86\x81\x83\x86\x01\x01\x11\x15aPDW`\0\x80\xFD[\x81\x81\x85\x01\x82\x85\x017`\0\x81\x83\x85\x01\x01R\x82\x85R\x80\x86\x015\x81\x86\x01RPPPP\x92\x91PPV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15aP\x81W`\0\x80\xFD[\x855aP\x8C\x81aH\x8FV[\x94P` \x86\x015aP\x9C\x81aH\x8FV[\x93P`@\x86\x015`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aP\xB8W`\0\x80\xFD[aP\xC4\x89\x83\x8A\x01aO\xC1V[\x94P``\x88\x015\x91P\x80\x82\x11\x15aP\xDAW`\0\x80\xFD[PaP\xE7\x88\x82\x89\x01aO\xC1V[\x95\x98\x94\x97P\x92\x95`\x80\x015\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15aQ\x0CW`\0\x80\xFD[\x825aQ\x17\x81aH\x8FV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aQ2W`\0\x80\xFD[aQ>\x85\x82\x86\x01aM\x01V[\x91PP\x92P\x92\x90PV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15aQxW\x81Q\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01aQ\\V[P\x94\x95\x94PPPPPV[` \x81R`\0aJ\x1C` \x83\x01\x84aQHV[`\0\x80` \x83\x85\x03\x12\x15aQ\xA9W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15aQ\xBFW`\0\x80\xFD[aH\x83\x85\x82\x86\x01aIkV[`\0\x80`@\x83\x85\x03\x12\x15aQ\xDEW`\0\x80\xFD[\x825aQ\xE9\x81aH\x8FV[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15aR\rW`\0\x80\xFD[\x845aR\x18\x81aH\x8FV[\x93P` \x85\x015\x92P`@\x85\x015aR/\x81aH\x8FV[\x93\x96\x92\x95P\x92\x93``\x015\x92PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P\x80\x84\x01`\0[\x83\x81\x10\x15aQxW\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01aRSV[`@\x81R`\0aR\x8B`@\x83\x01\x85aR?V[\x82\x81\x03` \x84\x01Ra\x12 \x81\x85aQHV[`\0\x80`\0``\x84\x86\x03\x12\x15aR\xB2W`\0\x80\xFD[\x835aR\xBD\x81aH\x8FV[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15aR\xD8W`\0\x80\xFD[aR\xE4\x86\x82\x87\x01aO\xC1V[\x92PP`@\x84\x015\x90P\x92P\x92P\x92V[`\0``\x82\x84\x03\x12\x15aS\x07W`\0\x80\xFD[aJ\x1C\x83\x83aISV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\0\x19\x82\x14\x15aSQWaSQaS'V[P`\x01\x01\x90V[` \x80\x82R`\x19\x90\x82\x01R\x7FPausable: index is paused\0\0\0\0\0\0\0`@\x82\x01R``\x01\x90V[`\0\x825`^\x19\x836\x03\x01\x81\x12aS\xA5W`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12aS\xC6W`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15aS\xE0W`\0\x80\xFD[` \x01\x91P`\x05\x81\x90\x1B6\x03\x82\x13\x15aE\"W`\0\x80\xFD[``\x81\x01\x825aT\x07\x81aH\x8FV[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x83R` \x84\x015\x90aT#\x82aH\x8FV[\x16` \x83\x01R`@\x83\x015aT7\x81aL\xC1V[c\xFF\xFF\xFF\xFF\x81\x16`@\x84\x01RP\x92\x91PPV[` \x81R\x81` \x82\x01R\x81\x83`@\x83\x017`\0\x81\x83\x01`@\x90\x81\x01\x91\x90\x91R`\x1F\x90\x92\x01`\x1F\x19\x16\x01\x01\x91\x90PV[`\0` \x82\x84\x03\x12\x15aT\x8BW`\0\x80\xFD[\x81QaJ\x1C\x81aH\x8FV[` \x80\x82R`*\x90\x82\x01R\x7Fmsg.sender is not permissioned a`@\x82\x01Ri9\x90:\xB780\xBA\xB9\xB2\xB9`\xB1\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`7\x90\x82\x01R\x7FDelegationManager: onlyStrategyM`@\x82\x01R\x7FanagerOrEigenPodManager\0\0\0\0\0\0\0\0\0``\x82\x01R`\x80\x01\x90V[`\0` \x82\x84\x03\x12\x15aUOW`\0\x80\xFD[\x81QaJ\x1C\x81aN\xEBV[` \x80\x82R`(\x90\x82\x01R\x7Fmsg.sender is not permissioned a`@\x82\x01Rg9\x9080\xBA\xB9\xB2\xB9`\xC1\x1B``\x82\x01R`\x80\x01\x90V[`\0\x825`\xDE\x19\x836\x03\x01\x81\x12aS\xA5W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15aU\xCAW`\0\x80\xFD[\x815aJ\x1C\x81aN\xEBV[`\0`\x01\x80`\xA0\x1B\x03\x80\x83Q\x16\x84R\x80` \x84\x01Q\x16` \x85\x01R\x80`@\x84\x01Q\x16`@\x85\x01RP``\x82\x01Q``\x84\x01Rc\xFF\xFF\xFF\xFF`\x80\x83\x01Q\x16`\x80\x84\x01R`\xA0\x82\x01Q`\xE0`\xA0\x85\x01RaV0`\xE0\x85\x01\x82aR?V[\x90P`\xC0\x83\x01Q\x84\x82\x03`\xC0\x86\x01Ra\x12 \x82\x82aQHV[` \x81R`\0aJ\x1C` \x83\x01\x84aU\xD5V[`\0` \x82\x84\x03\x12\x15aVnW`\0\x80\xFD[PQ\x91\x90PV[`\0\x82`\x1F\x83\x01\x12aV\x86W`\0\x80\xFD[\x81Q` aV\x96aM\"\x83aL\xDEV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15aV\xB5W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15aMjW\x80Q\x83R\x91\x83\x01\x91\x83\x01aV\xB9V[`\0\x80`@\x83\x85\x03\x12\x15aV\xE3W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15aV\xFAW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12aW\x0EW`\0\x80\xFD[\x81Q` aW\x1EaM\"\x83aL\xDEV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15aW=W`\0\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15aWdW\x85QaWU\x81aH\x8FV[\x82R\x94\x82\x01\x94\x90\x82\x01\x90aWBV[\x91\x88\x01Q\x91\x96P\x90\x93PPP\x80\x82\x11\x15aW}W`\0\x80\xFD[PaQ>\x85\x82\x86\x01aVuV[`\0\x82\x19\x82\x11\x15aW\x9DWaW\x9DaS'V[P\x01\x90V[`\0\x82\x82\x10\x15aW\xB4WaW\xB4aS'V[P\x03\x90V[`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x91\x90\x92\x16` \x82\x01R`@\x81\x01\x91\x90\x91R``\x01\x90V[\x82\x81R`@` \x82\x01R`\0aN\xC0`@\x83\x01\x84aU\xD5V[`\0` \x82\x84\x03\x12\x15aX\x08W`\0\x80\xFD[\x815aJ\x1C\x81aL\xC1V[\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[\x815aX>\x81aH\x8FV[aXH\x81\x83aX\x13V[P`\x01\x81\x01` \x83\x015aX[\x81aH\x8FV[aXe\x81\x83aX\x13V[P`@\x83\x015aXt\x81aL\xC1V[\x81Tc\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x16`\xA0\x91\x90\x91\x1Bc\xFF\xFF\xFF\xFF`\xA0\x1B\x16\x17\x90UPPV[`\0a\x17Q6\x83aM\xD0V[` \x80\x82R`n\x90\x82\x01R`\0\x80Q` aY\xC8\x839\x81Q\x91R`@\x82\x01R\x7FdWithdrawal: withdrawalDelayBloc``\x82\x01R\x7Fks period has not yet passed for`\x80\x82\x01Rm this strategy`\x90\x1B`\xA0\x82\x01R`\xC0\x01\x90V[\x82\x81R`\0` `@\x81\x84\x01R\x83Q\x80`@\x85\x01R`\0[\x81\x81\x10\x15aY^W\x85\x81\x01\x83\x01Q\x85\x82\x01``\x01R\x82\x01aYBV[\x81\x81\x11\x15aYpW`\0``\x83\x87\x01\x01R[P`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01``\x01\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15aY\x99W`\0\x80\xFD[\x81Q`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14aJ\x1CW`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD\xFEDelegationManager._completeQueue\xA2dipfsX\"\x12 &\xB1\xFE\xD4\x84\x88\x18C\xA1\xD9\x81\x1EI?\xAB\xDFi?\x06\x8A-\xFA:\xF9(\x9C*\x7F\xBAt\x87>dsolcC\0\x08\x0C\x003",
3029    );
3030    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
3031    /**Event with signature `Initialized(uint8)` and selector `0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498`.
3032    ```solidity
3033    event Initialized(uint8 version);
3034    ```*/
3035    #[allow(
3036        non_camel_case_types,
3037        non_snake_case,
3038        clippy::pub_underscore_fields,
3039        clippy::style
3040    )]
3041    #[derive(Clone)]
3042    pub struct Initialized {
3043        #[allow(missing_docs)]
3044        pub version: u8,
3045    }
3046    #[allow(
3047        non_camel_case_types,
3048        non_snake_case,
3049        clippy::pub_underscore_fields,
3050        clippy::style
3051    )]
3052    const _: () = {
3053        use alloy::sol_types as alloy_sol_types;
3054        #[automatically_derived]
3055        impl alloy_sol_types::SolEvent for Initialized {
3056            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,);
3057            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
3058            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
3059            const SIGNATURE: &'static str = "Initialized(uint8)";
3060            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
3061                alloy_sol_types::private::B256::new([
3062                    127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8, 19u8,
3063                    56u8, 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8, 146u8, 20u8,
3064                    96u8, 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8,
3065                ]);
3066            const ANONYMOUS: bool = false;
3067            #[allow(unused_variables)]
3068            #[inline]
3069            fn new(
3070                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
3071                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
3072            ) -> Self {
3073                Self { version: data.0 }
3074            }
3075            #[inline]
3076            fn check_signature(
3077                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
3078            ) -> alloy_sol_types::Result<()> {
3079                if topics.0 != Self::SIGNATURE_HASH {
3080                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
3081                        Self::SIGNATURE,
3082                        topics.0,
3083                        Self::SIGNATURE_HASH,
3084                    ));
3085                }
3086                Ok(())
3087            }
3088            #[inline]
3089            fn tokenize_body(&self) -> Self::DataToken<'_> {
3090                (
3091                    <alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::SolType>::tokenize(
3092                        &self.version,
3093                    ),
3094                )
3095            }
3096            #[inline]
3097            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
3098                (Self::SIGNATURE_HASH.into(),)
3099            }
3100            #[inline]
3101            fn encode_topics_raw(
3102                &self,
3103                out: &mut [alloy_sol_types::abi::token::WordToken],
3104            ) -> alloy_sol_types::Result<()> {
3105                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
3106                    return Err(alloy_sol_types::Error::Overrun);
3107                }
3108                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
3109                Ok(())
3110            }
3111        }
3112        #[automatically_derived]
3113        impl alloy_sol_types::private::IntoLogData for Initialized {
3114            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3115                From::from(self)
3116            }
3117            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3118                From::from(&self)
3119            }
3120        }
3121        #[automatically_derived]
3122        impl From<&Initialized> for alloy_sol_types::private::LogData {
3123            #[inline]
3124            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
3125                alloy_sol_types::SolEvent::encode_log_data(this)
3126            }
3127        }
3128    };
3129    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
3130    /**Event with signature `MinWithdrawalDelayBlocksSet(uint256,uint256)` and selector `0xafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69`.
3131    ```solidity
3132    event MinWithdrawalDelayBlocksSet(uint256 previousValue, uint256 newValue);
3133    ```*/
3134    #[allow(
3135        non_camel_case_types,
3136        non_snake_case,
3137        clippy::pub_underscore_fields,
3138        clippy::style
3139    )]
3140    #[derive(Clone)]
3141    pub struct MinWithdrawalDelayBlocksSet {
3142        #[allow(missing_docs)]
3143        pub previousValue: alloy::sol_types::private::primitives::aliases::U256,
3144        #[allow(missing_docs)]
3145        pub newValue: alloy::sol_types::private::primitives::aliases::U256,
3146    }
3147    #[allow(
3148        non_camel_case_types,
3149        non_snake_case,
3150        clippy::pub_underscore_fields,
3151        clippy::style
3152    )]
3153    const _: () = {
3154        use alloy::sol_types as alloy_sol_types;
3155        #[automatically_derived]
3156        impl alloy_sol_types::SolEvent for MinWithdrawalDelayBlocksSet {
3157            type DataTuple<'a> = (
3158                alloy::sol_types::sol_data::Uint<256>,
3159                alloy::sol_types::sol_data::Uint<256>,
3160            );
3161            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
3162            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
3163            const SIGNATURE: &'static str = "MinWithdrawalDelayBlocksSet(uint256,uint256)";
3164            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
3165                alloy_sol_types::private::B256::new([
3166                    175u8, 160u8, 3u8, 205u8, 118u8, 248u8, 127u8, 249u8, 214u8, 43u8, 53u8, 190u8,
3167                    234u8, 136u8, 153u8, 32u8, 243u8, 60u8, 12u8, 66u8, 184u8, 212u8, 91u8, 116u8,
3168                    149u8, 77u8, 97u8, 213u8, 15u8, 75u8, 107u8, 105u8,
3169                ]);
3170            const ANONYMOUS: bool = false;
3171            #[allow(unused_variables)]
3172            #[inline]
3173            fn new(
3174                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
3175                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
3176            ) -> Self {
3177                Self {
3178                    previousValue: data.0,
3179                    newValue: data.1,
3180                }
3181            }
3182            #[inline]
3183            fn check_signature(
3184                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
3185            ) -> alloy_sol_types::Result<()> {
3186                if topics.0 != Self::SIGNATURE_HASH {
3187                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
3188                        Self::SIGNATURE,
3189                        topics.0,
3190                        Self::SIGNATURE_HASH,
3191                    ));
3192                }
3193                Ok(())
3194            }
3195            #[inline]
3196            fn tokenize_body(&self) -> Self::DataToken<'_> {
3197                (
3198                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
3199                        &self.previousValue,
3200                    ),
3201                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
3202                        &self.newValue,
3203                    ),
3204                )
3205            }
3206            #[inline]
3207            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
3208                (Self::SIGNATURE_HASH.into(),)
3209            }
3210            #[inline]
3211            fn encode_topics_raw(
3212                &self,
3213                out: &mut [alloy_sol_types::abi::token::WordToken],
3214            ) -> alloy_sol_types::Result<()> {
3215                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
3216                    return Err(alloy_sol_types::Error::Overrun);
3217                }
3218                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
3219                Ok(())
3220            }
3221        }
3222        #[automatically_derived]
3223        impl alloy_sol_types::private::IntoLogData for MinWithdrawalDelayBlocksSet {
3224            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3225                From::from(self)
3226            }
3227            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3228                From::from(&self)
3229            }
3230        }
3231        #[automatically_derived]
3232        impl From<&MinWithdrawalDelayBlocksSet> for alloy_sol_types::private::LogData {
3233            #[inline]
3234            fn from(this: &MinWithdrawalDelayBlocksSet) -> alloy_sol_types::private::LogData {
3235                alloy_sol_types::SolEvent::encode_log_data(this)
3236            }
3237        }
3238    };
3239    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
3240    /**Event with signature `OperatorDetailsModified(address,(address,address,uint32))` and selector `0xfebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac`.
3241    ```solidity
3242    event OperatorDetailsModified(address indexed operator, IDelegationManager.OperatorDetails newOperatorDetails);
3243    ```*/
3244    #[allow(
3245        non_camel_case_types,
3246        non_snake_case,
3247        clippy::pub_underscore_fields,
3248        clippy::style
3249    )]
3250    #[derive(Clone)]
3251    pub struct OperatorDetailsModified {
3252        #[allow(missing_docs)]
3253        pub operator: alloy::sol_types::private::Address,
3254        #[allow(missing_docs)]
3255        pub newOperatorDetails:
3256            <IDelegationManager::OperatorDetails as alloy::sol_types::SolType>::RustType,
3257    }
3258    #[allow(
3259        non_camel_case_types,
3260        non_snake_case,
3261        clippy::pub_underscore_fields,
3262        clippy::style
3263    )]
3264    const _: () = {
3265        use alloy::sol_types as alloy_sol_types;
3266        #[automatically_derived]
3267        impl alloy_sol_types::SolEvent for OperatorDetailsModified {
3268            type DataTuple<'a> = (IDelegationManager::OperatorDetails,);
3269            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
3270            type TopicList = (
3271                alloy_sol_types::sol_data::FixedBytes<32>,
3272                alloy::sol_types::sol_data::Address,
3273            );
3274            const SIGNATURE: &'static str =
3275                "OperatorDetailsModified(address,(address,address,uint32))";
3276            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
3277                alloy_sol_types::private::B256::new([
3278                    254u8, 190u8, 92u8, 210u8, 75u8, 44u8, 188u8, 123u8, 6u8, 91u8, 157u8, 15u8,
3279                    222u8, 185u8, 4u8, 70u8, 30u8, 74u8, 252u8, 255u8, 87u8, 221u8, 87u8, 172u8,
3280                    218u8, 30u8, 120u8, 50u8, 3u8, 27u8, 167u8, 172u8,
3281                ]);
3282            const ANONYMOUS: bool = false;
3283            #[allow(unused_variables)]
3284            #[inline]
3285            fn new(
3286                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
3287                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
3288            ) -> Self {
3289                Self {
3290                    operator: topics.1,
3291                    newOperatorDetails: data.0,
3292                }
3293            }
3294            #[inline]
3295            fn check_signature(
3296                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
3297            ) -> alloy_sol_types::Result<()> {
3298                if topics.0 != Self::SIGNATURE_HASH {
3299                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
3300                        Self::SIGNATURE,
3301                        topics.0,
3302                        Self::SIGNATURE_HASH,
3303                    ));
3304                }
3305                Ok(())
3306            }
3307            #[inline]
3308            fn tokenize_body(&self) -> Self::DataToken<'_> {
3309                (
3310                    <IDelegationManager::OperatorDetails as alloy_sol_types::SolType>::tokenize(
3311                        &self.newOperatorDetails,
3312                    ),
3313                )
3314            }
3315            #[inline]
3316            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
3317                (Self::SIGNATURE_HASH.into(), self.operator.clone())
3318            }
3319            #[inline]
3320            fn encode_topics_raw(
3321                &self,
3322                out: &mut [alloy_sol_types::abi::token::WordToken],
3323            ) -> alloy_sol_types::Result<()> {
3324                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
3325                    return Err(alloy_sol_types::Error::Overrun);
3326                }
3327                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
3328                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
3329                    &self.operator,
3330                );
3331                Ok(())
3332            }
3333        }
3334        #[automatically_derived]
3335        impl alloy_sol_types::private::IntoLogData for OperatorDetailsModified {
3336            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3337                From::from(self)
3338            }
3339            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3340                From::from(&self)
3341            }
3342        }
3343        #[automatically_derived]
3344        impl From<&OperatorDetailsModified> for alloy_sol_types::private::LogData {
3345            #[inline]
3346            fn from(this: &OperatorDetailsModified) -> alloy_sol_types::private::LogData {
3347                alloy_sol_types::SolEvent::encode_log_data(this)
3348            }
3349        }
3350    };
3351    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
3352    /**Event with signature `OperatorMetadataURIUpdated(address,string)` and selector `0x02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b6708090`.
3353    ```solidity
3354    event OperatorMetadataURIUpdated(address indexed operator, string metadataURI);
3355    ```*/
3356    #[allow(
3357        non_camel_case_types,
3358        non_snake_case,
3359        clippy::pub_underscore_fields,
3360        clippy::style
3361    )]
3362    #[derive(Clone)]
3363    pub struct OperatorMetadataURIUpdated {
3364        #[allow(missing_docs)]
3365        pub operator: alloy::sol_types::private::Address,
3366        #[allow(missing_docs)]
3367        pub metadataURI: alloy::sol_types::private::String,
3368    }
3369    #[allow(
3370        non_camel_case_types,
3371        non_snake_case,
3372        clippy::pub_underscore_fields,
3373        clippy::style
3374    )]
3375    const _: () = {
3376        use alloy::sol_types as alloy_sol_types;
3377        #[automatically_derived]
3378        impl alloy_sol_types::SolEvent for OperatorMetadataURIUpdated {
3379            type DataTuple<'a> = (alloy::sol_types::sol_data::String,);
3380            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
3381            type TopicList = (
3382                alloy_sol_types::sol_data::FixedBytes<32>,
3383                alloy::sol_types::sol_data::Address,
3384            );
3385            const SIGNATURE: &'static str = "OperatorMetadataURIUpdated(address,string)";
3386            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
3387                alloy_sol_types::private::B256::new([
3388                    2u8, 169u8, 25u8, 237u8, 14u8, 42u8, 202u8, 209u8, 221u8, 144u8, 241u8, 126u8,
3389                    242u8, 250u8, 74u8, 229u8, 70u8, 46u8, 225u8, 51u8, 145u8, 112u8, 3u8, 74u8,
3390                    133u8, 49u8, 204u8, 164u8, 182u8, 112u8, 128u8, 144u8,
3391                ]);
3392            const ANONYMOUS: bool = false;
3393            #[allow(unused_variables)]
3394            #[inline]
3395            fn new(
3396                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
3397                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
3398            ) -> Self {
3399                Self {
3400                    operator: topics.1,
3401                    metadataURI: data.0,
3402                }
3403            }
3404            #[inline]
3405            fn check_signature(
3406                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
3407            ) -> alloy_sol_types::Result<()> {
3408                if topics.0 != Self::SIGNATURE_HASH {
3409                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
3410                        Self::SIGNATURE,
3411                        topics.0,
3412                        Self::SIGNATURE_HASH,
3413                    ));
3414                }
3415                Ok(())
3416            }
3417            #[inline]
3418            fn tokenize_body(&self) -> Self::DataToken<'_> {
3419                (
3420                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
3421                        &self.metadataURI,
3422                    ),
3423                )
3424            }
3425            #[inline]
3426            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
3427                (Self::SIGNATURE_HASH.into(), self.operator.clone())
3428            }
3429            #[inline]
3430            fn encode_topics_raw(
3431                &self,
3432                out: &mut [alloy_sol_types::abi::token::WordToken],
3433            ) -> alloy_sol_types::Result<()> {
3434                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
3435                    return Err(alloy_sol_types::Error::Overrun);
3436                }
3437                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
3438                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
3439                    &self.operator,
3440                );
3441                Ok(())
3442            }
3443        }
3444        #[automatically_derived]
3445        impl alloy_sol_types::private::IntoLogData for OperatorMetadataURIUpdated {
3446            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3447                From::from(self)
3448            }
3449            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3450                From::from(&self)
3451            }
3452        }
3453        #[automatically_derived]
3454        impl From<&OperatorMetadataURIUpdated> for alloy_sol_types::private::LogData {
3455            #[inline]
3456            fn from(this: &OperatorMetadataURIUpdated) -> alloy_sol_types::private::LogData {
3457                alloy_sol_types::SolEvent::encode_log_data(this)
3458            }
3459        }
3460    };
3461    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
3462    /**Event with signature `OperatorRegistered(address,(address,address,uint32))` and selector `0x8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e2`.
3463    ```solidity
3464    event OperatorRegistered(address indexed operator, IDelegationManager.OperatorDetails operatorDetails);
3465    ```*/
3466    #[allow(
3467        non_camel_case_types,
3468        non_snake_case,
3469        clippy::pub_underscore_fields,
3470        clippy::style
3471    )]
3472    #[derive(Clone)]
3473    pub struct OperatorRegistered {
3474        #[allow(missing_docs)]
3475        pub operator: alloy::sol_types::private::Address,
3476        #[allow(missing_docs)]
3477        pub operatorDetails:
3478            <IDelegationManager::OperatorDetails as alloy::sol_types::SolType>::RustType,
3479    }
3480    #[allow(
3481        non_camel_case_types,
3482        non_snake_case,
3483        clippy::pub_underscore_fields,
3484        clippy::style
3485    )]
3486    const _: () = {
3487        use alloy::sol_types as alloy_sol_types;
3488        #[automatically_derived]
3489        impl alloy_sol_types::SolEvent for OperatorRegistered {
3490            type DataTuple<'a> = (IDelegationManager::OperatorDetails,);
3491            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
3492            type TopicList = (
3493                alloy_sol_types::sol_data::FixedBytes<32>,
3494                alloy::sol_types::sol_data::Address,
3495            );
3496            const SIGNATURE: &'static str = "OperatorRegistered(address,(address,address,uint32))";
3497            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
3498                alloy_sol_types::private::B256::new([
3499                    142u8, 132u8, 133u8, 88u8, 58u8, 35u8, 16u8, 212u8, 31u8, 124u8, 130u8, 185u8,
3500                    66u8, 125u8, 11u8, 212u8, 155u8, 173u8, 116u8, 187u8, 156u8, 255u8, 157u8,
3501                    52u8, 2u8, 162u8, 157u8, 143u8, 155u8, 40u8, 160u8, 226u8,
3502                ]);
3503            const ANONYMOUS: bool = false;
3504            #[allow(unused_variables)]
3505            #[inline]
3506            fn new(
3507                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
3508                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
3509            ) -> Self {
3510                Self {
3511                    operator: topics.1,
3512                    operatorDetails: data.0,
3513                }
3514            }
3515            #[inline]
3516            fn check_signature(
3517                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
3518            ) -> alloy_sol_types::Result<()> {
3519                if topics.0 != Self::SIGNATURE_HASH {
3520                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
3521                        Self::SIGNATURE,
3522                        topics.0,
3523                        Self::SIGNATURE_HASH,
3524                    ));
3525                }
3526                Ok(())
3527            }
3528            #[inline]
3529            fn tokenize_body(&self) -> Self::DataToken<'_> {
3530                (
3531                    <IDelegationManager::OperatorDetails as alloy_sol_types::SolType>::tokenize(
3532                        &self.operatorDetails,
3533                    ),
3534                )
3535            }
3536            #[inline]
3537            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
3538                (Self::SIGNATURE_HASH.into(), self.operator.clone())
3539            }
3540            #[inline]
3541            fn encode_topics_raw(
3542                &self,
3543                out: &mut [alloy_sol_types::abi::token::WordToken],
3544            ) -> alloy_sol_types::Result<()> {
3545                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
3546                    return Err(alloy_sol_types::Error::Overrun);
3547                }
3548                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
3549                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
3550                    &self.operator,
3551                );
3552                Ok(())
3553            }
3554        }
3555        #[automatically_derived]
3556        impl alloy_sol_types::private::IntoLogData for OperatorRegistered {
3557            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3558                From::from(self)
3559            }
3560            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3561                From::from(&self)
3562            }
3563        }
3564        #[automatically_derived]
3565        impl From<&OperatorRegistered> for alloy_sol_types::private::LogData {
3566            #[inline]
3567            fn from(this: &OperatorRegistered) -> alloy_sol_types::private::LogData {
3568                alloy_sol_types::SolEvent::encode_log_data(this)
3569            }
3570        }
3571    };
3572    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
3573    /**Event with signature `OperatorSharesDecreased(address,address,address,uint256)` and selector `0x6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd`.
3574    ```solidity
3575    event OperatorSharesDecreased(address indexed operator, address staker, address strategy, uint256 shares);
3576    ```*/
3577    #[allow(
3578        non_camel_case_types,
3579        non_snake_case,
3580        clippy::pub_underscore_fields,
3581        clippy::style
3582    )]
3583    #[derive(Clone)]
3584    pub struct OperatorSharesDecreased {
3585        #[allow(missing_docs)]
3586        pub operator: alloy::sol_types::private::Address,
3587        #[allow(missing_docs)]
3588        pub staker: alloy::sol_types::private::Address,
3589        #[allow(missing_docs)]
3590        pub strategy: alloy::sol_types::private::Address,
3591        #[allow(missing_docs)]
3592        pub shares: alloy::sol_types::private::primitives::aliases::U256,
3593    }
3594    #[allow(
3595        non_camel_case_types,
3596        non_snake_case,
3597        clippy::pub_underscore_fields,
3598        clippy::style
3599    )]
3600    const _: () = {
3601        use alloy::sol_types as alloy_sol_types;
3602        #[automatically_derived]
3603        impl alloy_sol_types::SolEvent for OperatorSharesDecreased {
3604            type DataTuple<'a> = (
3605                alloy::sol_types::sol_data::Address,
3606                alloy::sol_types::sol_data::Address,
3607                alloy::sol_types::sol_data::Uint<256>,
3608            );
3609            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
3610            type TopicList = (
3611                alloy_sol_types::sol_data::FixedBytes<32>,
3612                alloy::sol_types::sol_data::Address,
3613            );
3614            const SIGNATURE: &'static str =
3615                "OperatorSharesDecreased(address,address,address,uint256)";
3616            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
3617                alloy_sol_types::private::B256::new([
3618                    105u8, 9u8, 96u8, 0u8, 55u8, 183u8, 93u8, 123u8, 71u8, 51u8, 174u8, 221u8,
3619                    129u8, 84u8, 66u8, 181u8, 236u8, 1u8, 138u8, 130u8, 119u8, 81u8, 200u8, 50u8,
3620                    170u8, 255u8, 100u8, 235u8, 165u8, 214u8, 210u8, 221u8,
3621                ]);
3622            const ANONYMOUS: bool = false;
3623            #[allow(unused_variables)]
3624            #[inline]
3625            fn new(
3626                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
3627                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
3628            ) -> Self {
3629                Self {
3630                    operator: topics.1,
3631                    staker: data.0,
3632                    strategy: data.1,
3633                    shares: data.2,
3634                }
3635            }
3636            #[inline]
3637            fn check_signature(
3638                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
3639            ) -> alloy_sol_types::Result<()> {
3640                if topics.0 != Self::SIGNATURE_HASH {
3641                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
3642                        Self::SIGNATURE,
3643                        topics.0,
3644                        Self::SIGNATURE_HASH,
3645                    ));
3646                }
3647                Ok(())
3648            }
3649            #[inline]
3650            fn tokenize_body(&self) -> Self::DataToken<'_> {
3651                (
3652                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3653                        &self.staker,
3654                    ),
3655                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3656                        &self.strategy,
3657                    ),
3658                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
3659                        &self.shares,
3660                    ),
3661                )
3662            }
3663            #[inline]
3664            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
3665                (Self::SIGNATURE_HASH.into(), self.operator.clone())
3666            }
3667            #[inline]
3668            fn encode_topics_raw(
3669                &self,
3670                out: &mut [alloy_sol_types::abi::token::WordToken],
3671            ) -> alloy_sol_types::Result<()> {
3672                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
3673                    return Err(alloy_sol_types::Error::Overrun);
3674                }
3675                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
3676                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
3677                    &self.operator,
3678                );
3679                Ok(())
3680            }
3681        }
3682        #[automatically_derived]
3683        impl alloy_sol_types::private::IntoLogData for OperatorSharesDecreased {
3684            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3685                From::from(self)
3686            }
3687            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3688                From::from(&self)
3689            }
3690        }
3691        #[automatically_derived]
3692        impl From<&OperatorSharesDecreased> for alloy_sol_types::private::LogData {
3693            #[inline]
3694            fn from(this: &OperatorSharesDecreased) -> alloy_sol_types::private::LogData {
3695                alloy_sol_types::SolEvent::encode_log_data(this)
3696            }
3697        }
3698    };
3699    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
3700    /**Event with signature `OperatorSharesIncreased(address,address,address,uint256)` and selector `0x1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c`.
3701    ```solidity
3702    event OperatorSharesIncreased(address indexed operator, address staker, address strategy, uint256 shares);
3703    ```*/
3704    #[allow(
3705        non_camel_case_types,
3706        non_snake_case,
3707        clippy::pub_underscore_fields,
3708        clippy::style
3709    )]
3710    #[derive(Clone)]
3711    pub struct OperatorSharesIncreased {
3712        #[allow(missing_docs)]
3713        pub operator: alloy::sol_types::private::Address,
3714        #[allow(missing_docs)]
3715        pub staker: alloy::sol_types::private::Address,
3716        #[allow(missing_docs)]
3717        pub strategy: alloy::sol_types::private::Address,
3718        #[allow(missing_docs)]
3719        pub shares: alloy::sol_types::private::primitives::aliases::U256,
3720    }
3721    #[allow(
3722        non_camel_case_types,
3723        non_snake_case,
3724        clippy::pub_underscore_fields,
3725        clippy::style
3726    )]
3727    const _: () = {
3728        use alloy::sol_types as alloy_sol_types;
3729        #[automatically_derived]
3730        impl alloy_sol_types::SolEvent for OperatorSharesIncreased {
3731            type DataTuple<'a> = (
3732                alloy::sol_types::sol_data::Address,
3733                alloy::sol_types::sol_data::Address,
3734                alloy::sol_types::sol_data::Uint<256>,
3735            );
3736            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
3737            type TopicList = (
3738                alloy_sol_types::sol_data::FixedBytes<32>,
3739                alloy::sol_types::sol_data::Address,
3740            );
3741            const SIGNATURE: &'static str =
3742                "OperatorSharesIncreased(address,address,address,uint256)";
3743            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
3744                alloy_sol_types::private::B256::new([
3745                    30u8, 192u8, 66u8, 201u8, 101u8, 226u8, 237u8, 215u8, 16u8, 123u8, 81u8, 24u8,
3746                    142u8, 224u8, 243u8, 131u8, 226u8, 46u8, 118u8, 23u8, 144u8, 65u8, 171u8, 58u8,
3747                    157u8, 24u8, 255u8, 21u8, 20u8, 5u8, 22u8, 108u8,
3748                ]);
3749            const ANONYMOUS: bool = false;
3750            #[allow(unused_variables)]
3751            #[inline]
3752            fn new(
3753                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
3754                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
3755            ) -> Self {
3756                Self {
3757                    operator: topics.1,
3758                    staker: data.0,
3759                    strategy: data.1,
3760                    shares: data.2,
3761                }
3762            }
3763            #[inline]
3764            fn check_signature(
3765                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
3766            ) -> alloy_sol_types::Result<()> {
3767                if topics.0 != Self::SIGNATURE_HASH {
3768                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
3769                        Self::SIGNATURE,
3770                        topics.0,
3771                        Self::SIGNATURE_HASH,
3772                    ));
3773                }
3774                Ok(())
3775            }
3776            #[inline]
3777            fn tokenize_body(&self) -> Self::DataToken<'_> {
3778                (
3779                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3780                        &self.staker,
3781                    ),
3782                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3783                        &self.strategy,
3784                    ),
3785                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
3786                        &self.shares,
3787                    ),
3788                )
3789            }
3790            #[inline]
3791            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
3792                (Self::SIGNATURE_HASH.into(), self.operator.clone())
3793            }
3794            #[inline]
3795            fn encode_topics_raw(
3796                &self,
3797                out: &mut [alloy_sol_types::abi::token::WordToken],
3798            ) -> alloy_sol_types::Result<()> {
3799                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
3800                    return Err(alloy_sol_types::Error::Overrun);
3801                }
3802                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
3803                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
3804                    &self.operator,
3805                );
3806                Ok(())
3807            }
3808        }
3809        #[automatically_derived]
3810        impl alloy_sol_types::private::IntoLogData for OperatorSharesIncreased {
3811            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3812                From::from(self)
3813            }
3814            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3815                From::from(&self)
3816            }
3817        }
3818        #[automatically_derived]
3819        impl From<&OperatorSharesIncreased> for alloy_sol_types::private::LogData {
3820            #[inline]
3821            fn from(this: &OperatorSharesIncreased) -> alloy_sol_types::private::LogData {
3822                alloy_sol_types::SolEvent::encode_log_data(this)
3823            }
3824        }
3825    };
3826    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
3827    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
3828    ```solidity
3829    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
3830    ```*/
3831    #[allow(
3832        non_camel_case_types,
3833        non_snake_case,
3834        clippy::pub_underscore_fields,
3835        clippy::style
3836    )]
3837    #[derive(Clone)]
3838    pub struct OwnershipTransferred {
3839        #[allow(missing_docs)]
3840        pub previousOwner: alloy::sol_types::private::Address,
3841        #[allow(missing_docs)]
3842        pub newOwner: alloy::sol_types::private::Address,
3843    }
3844    #[allow(
3845        non_camel_case_types,
3846        non_snake_case,
3847        clippy::pub_underscore_fields,
3848        clippy::style
3849    )]
3850    const _: () = {
3851        use alloy::sol_types as alloy_sol_types;
3852        #[automatically_derived]
3853        impl alloy_sol_types::SolEvent for OwnershipTransferred {
3854            type DataTuple<'a> = ();
3855            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
3856            type TopicList = (
3857                alloy_sol_types::sol_data::FixedBytes<32>,
3858                alloy::sol_types::sol_data::Address,
3859                alloy::sol_types::sol_data::Address,
3860            );
3861            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
3862            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
3863                alloy_sol_types::private::B256::new([
3864                    139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8, 31u8,
3865                    208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8, 218u8,
3866                    175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
3867                ]);
3868            const ANONYMOUS: bool = false;
3869            #[allow(unused_variables)]
3870            #[inline]
3871            fn new(
3872                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
3873                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
3874            ) -> Self {
3875                Self {
3876                    previousOwner: topics.1,
3877                    newOwner: topics.2,
3878                }
3879            }
3880            #[inline]
3881            fn check_signature(
3882                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
3883            ) -> alloy_sol_types::Result<()> {
3884                if topics.0 != Self::SIGNATURE_HASH {
3885                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
3886                        Self::SIGNATURE,
3887                        topics.0,
3888                        Self::SIGNATURE_HASH,
3889                    ));
3890                }
3891                Ok(())
3892            }
3893            #[inline]
3894            fn tokenize_body(&self) -> Self::DataToken<'_> {
3895                ()
3896            }
3897            #[inline]
3898            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
3899                (
3900                    Self::SIGNATURE_HASH.into(),
3901                    self.previousOwner.clone(),
3902                    self.newOwner.clone(),
3903                )
3904            }
3905            #[inline]
3906            fn encode_topics_raw(
3907                &self,
3908                out: &mut [alloy_sol_types::abi::token::WordToken],
3909            ) -> alloy_sol_types::Result<()> {
3910                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
3911                    return Err(alloy_sol_types::Error::Overrun);
3912                }
3913                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
3914                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
3915                    &self.previousOwner,
3916                );
3917                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
3918                    &self.newOwner,
3919                );
3920                Ok(())
3921            }
3922        }
3923        #[automatically_derived]
3924        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
3925            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3926                From::from(self)
3927            }
3928            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3929                From::from(&self)
3930            }
3931        }
3932        #[automatically_derived]
3933        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
3934            #[inline]
3935            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
3936                alloy_sol_types::SolEvent::encode_log_data(this)
3937            }
3938        }
3939    };
3940    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
3941    /**Event with signature `Paused(address,uint256)` and selector `0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d`.
3942    ```solidity
3943    event Paused(address indexed account, uint256 newPausedStatus);
3944    ```*/
3945    #[allow(
3946        non_camel_case_types,
3947        non_snake_case,
3948        clippy::pub_underscore_fields,
3949        clippy::style
3950    )]
3951    #[derive(Clone)]
3952    pub struct Paused {
3953        #[allow(missing_docs)]
3954        pub account: alloy::sol_types::private::Address,
3955        #[allow(missing_docs)]
3956        pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256,
3957    }
3958    #[allow(
3959        non_camel_case_types,
3960        non_snake_case,
3961        clippy::pub_underscore_fields,
3962        clippy::style
3963    )]
3964    const _: () = {
3965        use alloy::sol_types as alloy_sol_types;
3966        #[automatically_derived]
3967        impl alloy_sol_types::SolEvent for Paused {
3968            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
3969            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
3970            type TopicList = (
3971                alloy_sol_types::sol_data::FixedBytes<32>,
3972                alloy::sol_types::sol_data::Address,
3973            );
3974            const SIGNATURE: &'static str = "Paused(address,uint256)";
3975            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
3976                alloy_sol_types::private::B256::new([
3977                    171u8, 64u8, 163u8, 116u8, 188u8, 81u8, 222u8, 55u8, 34u8, 0u8, 168u8, 188u8,
3978                    152u8, 26u8, 248u8, 201u8, 236u8, 220u8, 8u8, 223u8, 218u8, 239u8, 11u8, 182u8,
3979                    224u8, 159u8, 136u8, 243u8, 198u8, 22u8, 239u8, 61u8,
3980                ]);
3981            const ANONYMOUS: bool = false;
3982            #[allow(unused_variables)]
3983            #[inline]
3984            fn new(
3985                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
3986                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
3987            ) -> Self {
3988                Self {
3989                    account: topics.1,
3990                    newPausedStatus: data.0,
3991                }
3992            }
3993            #[inline]
3994            fn check_signature(
3995                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
3996            ) -> alloy_sol_types::Result<()> {
3997                if topics.0 != Self::SIGNATURE_HASH {
3998                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
3999                        Self::SIGNATURE,
4000                        topics.0,
4001                        Self::SIGNATURE_HASH,
4002                    ));
4003                }
4004                Ok(())
4005            }
4006            #[inline]
4007            fn tokenize_body(&self) -> Self::DataToken<'_> {
4008                (
4009                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
4010                        &self.newPausedStatus,
4011                    ),
4012                )
4013            }
4014            #[inline]
4015            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
4016                (Self::SIGNATURE_HASH.into(), self.account.clone())
4017            }
4018            #[inline]
4019            fn encode_topics_raw(
4020                &self,
4021                out: &mut [alloy_sol_types::abi::token::WordToken],
4022            ) -> alloy_sol_types::Result<()> {
4023                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
4024                    return Err(alloy_sol_types::Error::Overrun);
4025                }
4026                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
4027                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
4028                    &self.account,
4029                );
4030                Ok(())
4031            }
4032        }
4033        #[automatically_derived]
4034        impl alloy_sol_types::private::IntoLogData for Paused {
4035            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
4036                From::from(self)
4037            }
4038            fn into_log_data(self) -> alloy_sol_types::private::LogData {
4039                From::from(&self)
4040            }
4041        }
4042        #[automatically_derived]
4043        impl From<&Paused> for alloy_sol_types::private::LogData {
4044            #[inline]
4045            fn from(this: &Paused) -> alloy_sol_types::private::LogData {
4046                alloy_sol_types::SolEvent::encode_log_data(this)
4047            }
4048        }
4049    };
4050    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
4051    /**Event with signature `PauserRegistrySet(address,address)` and selector `0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6`.
4052    ```solidity
4053    event PauserRegistrySet(address pauserRegistry, address newPauserRegistry);
4054    ```*/
4055    #[allow(
4056        non_camel_case_types,
4057        non_snake_case,
4058        clippy::pub_underscore_fields,
4059        clippy::style
4060    )]
4061    #[derive(Clone)]
4062    pub struct PauserRegistrySet {
4063        #[allow(missing_docs)]
4064        pub pauserRegistry: alloy::sol_types::private::Address,
4065        #[allow(missing_docs)]
4066        pub newPauserRegistry: alloy::sol_types::private::Address,
4067    }
4068    #[allow(
4069        non_camel_case_types,
4070        non_snake_case,
4071        clippy::pub_underscore_fields,
4072        clippy::style
4073    )]
4074    const _: () = {
4075        use alloy::sol_types as alloy_sol_types;
4076        #[automatically_derived]
4077        impl alloy_sol_types::SolEvent for PauserRegistrySet {
4078            type DataTuple<'a> = (
4079                alloy::sol_types::sol_data::Address,
4080                alloy::sol_types::sol_data::Address,
4081            );
4082            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
4083            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
4084            const SIGNATURE: &'static str = "PauserRegistrySet(address,address)";
4085            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
4086                alloy_sol_types::private::B256::new([
4087                    110u8, 159u8, 205u8, 83u8, 152u8, 150u8, 252u8, 166u8, 14u8, 139u8, 15u8, 1u8,
4088                    221u8, 88u8, 2u8, 51u8, 228u8, 138u8, 107u8, 15u8, 125u8, 240u8, 19u8, 184u8,
4089                    155u8, 167u8, 245u8, 101u8, 134u8, 154u8, 205u8, 182u8,
4090                ]);
4091            const ANONYMOUS: bool = false;
4092            #[allow(unused_variables)]
4093            #[inline]
4094            fn new(
4095                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
4096                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
4097            ) -> Self {
4098                Self {
4099                    pauserRegistry: data.0,
4100                    newPauserRegistry: data.1,
4101                }
4102            }
4103            #[inline]
4104            fn check_signature(
4105                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
4106            ) -> alloy_sol_types::Result<()> {
4107                if topics.0 != Self::SIGNATURE_HASH {
4108                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
4109                        Self::SIGNATURE,
4110                        topics.0,
4111                        Self::SIGNATURE_HASH,
4112                    ));
4113                }
4114                Ok(())
4115            }
4116            #[inline]
4117            fn tokenize_body(&self) -> Self::DataToken<'_> {
4118                (
4119                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4120                        &self.pauserRegistry,
4121                    ),
4122                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4123                        &self.newPauserRegistry,
4124                    ),
4125                )
4126            }
4127            #[inline]
4128            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
4129                (Self::SIGNATURE_HASH.into(),)
4130            }
4131            #[inline]
4132            fn encode_topics_raw(
4133                &self,
4134                out: &mut [alloy_sol_types::abi::token::WordToken],
4135            ) -> alloy_sol_types::Result<()> {
4136                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
4137                    return Err(alloy_sol_types::Error::Overrun);
4138                }
4139                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
4140                Ok(())
4141            }
4142        }
4143        #[automatically_derived]
4144        impl alloy_sol_types::private::IntoLogData for PauserRegistrySet {
4145            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
4146                From::from(self)
4147            }
4148            fn into_log_data(self) -> alloy_sol_types::private::LogData {
4149                From::from(&self)
4150            }
4151        }
4152        #[automatically_derived]
4153        impl From<&PauserRegistrySet> for alloy_sol_types::private::LogData {
4154            #[inline]
4155            fn from(this: &PauserRegistrySet) -> alloy_sol_types::private::LogData {
4156                alloy_sol_types::SolEvent::encode_log_data(this)
4157            }
4158        }
4159    };
4160    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
4161    /**Event with signature `StakerDelegated(address,address)` and selector `0xc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d8743304`.
4162    ```solidity
4163    event StakerDelegated(address indexed staker, address indexed operator);
4164    ```*/
4165    #[allow(
4166        non_camel_case_types,
4167        non_snake_case,
4168        clippy::pub_underscore_fields,
4169        clippy::style
4170    )]
4171    #[derive(Clone)]
4172    pub struct StakerDelegated {
4173        #[allow(missing_docs)]
4174        pub staker: alloy::sol_types::private::Address,
4175        #[allow(missing_docs)]
4176        pub operator: alloy::sol_types::private::Address,
4177    }
4178    #[allow(
4179        non_camel_case_types,
4180        non_snake_case,
4181        clippy::pub_underscore_fields,
4182        clippy::style
4183    )]
4184    const _: () = {
4185        use alloy::sol_types as alloy_sol_types;
4186        #[automatically_derived]
4187        impl alloy_sol_types::SolEvent for StakerDelegated {
4188            type DataTuple<'a> = ();
4189            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
4190            type TopicList = (
4191                alloy_sol_types::sol_data::FixedBytes<32>,
4192                alloy::sol_types::sol_data::Address,
4193                alloy::sol_types::sol_data::Address,
4194            );
4195            const SIGNATURE: &'static str = "StakerDelegated(address,address)";
4196            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
4197                alloy_sol_types::private::B256::new([
4198                    195u8, 238u8, 159u8, 46u8, 95u8, 218u8, 152u8, 232u8, 6u8, 106u8, 31u8, 116u8,
4199                    91u8, 45u8, 249u8, 40u8, 95u8, 65u8, 111u8, 233u8, 140u8, 242u8, 85u8, 156u8,
4200                    210u8, 20u8, 132u8, 179u8, 216u8, 116u8, 51u8, 4u8,
4201                ]);
4202            const ANONYMOUS: bool = false;
4203            #[allow(unused_variables)]
4204            #[inline]
4205            fn new(
4206                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
4207                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
4208            ) -> Self {
4209                Self {
4210                    staker: topics.1,
4211                    operator: topics.2,
4212                }
4213            }
4214            #[inline]
4215            fn check_signature(
4216                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
4217            ) -> alloy_sol_types::Result<()> {
4218                if topics.0 != Self::SIGNATURE_HASH {
4219                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
4220                        Self::SIGNATURE,
4221                        topics.0,
4222                        Self::SIGNATURE_HASH,
4223                    ));
4224                }
4225                Ok(())
4226            }
4227            #[inline]
4228            fn tokenize_body(&self) -> Self::DataToken<'_> {
4229                ()
4230            }
4231            #[inline]
4232            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
4233                (
4234                    Self::SIGNATURE_HASH.into(),
4235                    self.staker.clone(),
4236                    self.operator.clone(),
4237                )
4238            }
4239            #[inline]
4240            fn encode_topics_raw(
4241                &self,
4242                out: &mut [alloy_sol_types::abi::token::WordToken],
4243            ) -> alloy_sol_types::Result<()> {
4244                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
4245                    return Err(alloy_sol_types::Error::Overrun);
4246                }
4247                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
4248                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
4249                    &self.staker,
4250                );
4251                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
4252                    &self.operator,
4253                );
4254                Ok(())
4255            }
4256        }
4257        #[automatically_derived]
4258        impl alloy_sol_types::private::IntoLogData for StakerDelegated {
4259            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
4260                From::from(self)
4261            }
4262            fn into_log_data(self) -> alloy_sol_types::private::LogData {
4263                From::from(&self)
4264            }
4265        }
4266        #[automatically_derived]
4267        impl From<&StakerDelegated> for alloy_sol_types::private::LogData {
4268            #[inline]
4269            fn from(this: &StakerDelegated) -> alloy_sol_types::private::LogData {
4270                alloy_sol_types::SolEvent::encode_log_data(this)
4271            }
4272        }
4273    };
4274    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
4275    /**Event with signature `StakerForceUndelegated(address,address)` and selector `0xf0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a`.
4276    ```solidity
4277    event StakerForceUndelegated(address indexed staker, address indexed operator);
4278    ```*/
4279    #[allow(
4280        non_camel_case_types,
4281        non_snake_case,
4282        clippy::pub_underscore_fields,
4283        clippy::style
4284    )]
4285    #[derive(Clone)]
4286    pub struct StakerForceUndelegated {
4287        #[allow(missing_docs)]
4288        pub staker: alloy::sol_types::private::Address,
4289        #[allow(missing_docs)]
4290        pub operator: alloy::sol_types::private::Address,
4291    }
4292    #[allow(
4293        non_camel_case_types,
4294        non_snake_case,
4295        clippy::pub_underscore_fields,
4296        clippy::style
4297    )]
4298    const _: () = {
4299        use alloy::sol_types as alloy_sol_types;
4300        #[automatically_derived]
4301        impl alloy_sol_types::SolEvent for StakerForceUndelegated {
4302            type DataTuple<'a> = ();
4303            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
4304            type TopicList = (
4305                alloy_sol_types::sol_data::FixedBytes<32>,
4306                alloy::sol_types::sol_data::Address,
4307                alloy::sol_types::sol_data::Address,
4308            );
4309            const SIGNATURE: &'static str = "StakerForceUndelegated(address,address)";
4310            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
4311                alloy_sol_types::private::B256::new([
4312                    240u8, 237u8, 223u8, 7u8, 230u8, 234u8, 20u8, 243u8, 136u8, 180u8, 126u8, 30u8,
4313                    148u8, 160u8, 244u8, 100u8, 236u8, 189u8, 158u8, 237u8, 65u8, 113u8, 19u8,
4314                    14u8, 15u8, 192u8, 233u8, 159u8, 180u8, 3u8, 10u8, 138u8,
4315                ]);
4316            const ANONYMOUS: bool = false;
4317            #[allow(unused_variables)]
4318            #[inline]
4319            fn new(
4320                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
4321                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
4322            ) -> Self {
4323                Self {
4324                    staker: topics.1,
4325                    operator: topics.2,
4326                }
4327            }
4328            #[inline]
4329            fn check_signature(
4330                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
4331            ) -> alloy_sol_types::Result<()> {
4332                if topics.0 != Self::SIGNATURE_HASH {
4333                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
4334                        Self::SIGNATURE,
4335                        topics.0,
4336                        Self::SIGNATURE_HASH,
4337                    ));
4338                }
4339                Ok(())
4340            }
4341            #[inline]
4342            fn tokenize_body(&self) -> Self::DataToken<'_> {
4343                ()
4344            }
4345            #[inline]
4346            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
4347                (
4348                    Self::SIGNATURE_HASH.into(),
4349                    self.staker.clone(),
4350                    self.operator.clone(),
4351                )
4352            }
4353            #[inline]
4354            fn encode_topics_raw(
4355                &self,
4356                out: &mut [alloy_sol_types::abi::token::WordToken],
4357            ) -> alloy_sol_types::Result<()> {
4358                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
4359                    return Err(alloy_sol_types::Error::Overrun);
4360                }
4361                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
4362                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
4363                    &self.staker,
4364                );
4365                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
4366                    &self.operator,
4367                );
4368                Ok(())
4369            }
4370        }
4371        #[automatically_derived]
4372        impl alloy_sol_types::private::IntoLogData for StakerForceUndelegated {
4373            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
4374                From::from(self)
4375            }
4376            fn into_log_data(self) -> alloy_sol_types::private::LogData {
4377                From::from(&self)
4378            }
4379        }
4380        #[automatically_derived]
4381        impl From<&StakerForceUndelegated> for alloy_sol_types::private::LogData {
4382            #[inline]
4383            fn from(this: &StakerForceUndelegated) -> alloy_sol_types::private::LogData {
4384                alloy_sol_types::SolEvent::encode_log_data(this)
4385            }
4386        }
4387    };
4388    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
4389    /**Event with signature `StakerUndelegated(address,address)` and selector `0xfee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af44676`.
4390    ```solidity
4391    event StakerUndelegated(address indexed staker, address indexed operator);
4392    ```*/
4393    #[allow(
4394        non_camel_case_types,
4395        non_snake_case,
4396        clippy::pub_underscore_fields,
4397        clippy::style
4398    )]
4399    #[derive(Clone)]
4400    pub struct StakerUndelegated {
4401        #[allow(missing_docs)]
4402        pub staker: alloy::sol_types::private::Address,
4403        #[allow(missing_docs)]
4404        pub operator: alloy::sol_types::private::Address,
4405    }
4406    #[allow(
4407        non_camel_case_types,
4408        non_snake_case,
4409        clippy::pub_underscore_fields,
4410        clippy::style
4411    )]
4412    const _: () = {
4413        use alloy::sol_types as alloy_sol_types;
4414        #[automatically_derived]
4415        impl alloy_sol_types::SolEvent for StakerUndelegated {
4416            type DataTuple<'a> = ();
4417            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
4418            type TopicList = (
4419                alloy_sol_types::sol_data::FixedBytes<32>,
4420                alloy::sol_types::sol_data::Address,
4421                alloy::sol_types::sol_data::Address,
4422            );
4423            const SIGNATURE: &'static str = "StakerUndelegated(address,address)";
4424            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
4425                alloy_sol_types::private::B256::new([
4426                    254u8, 227u8, 9u8, 102u8, 162u8, 86u8, 183u8, 30u8, 20u8, 188u8, 14u8, 191u8,
4427                    201u8, 67u8, 21u8, 226u8, 142u8, 244u8, 169u8, 122u8, 113u8, 49u8, 169u8,
4428                    226u8, 183u8, 163u8, 16u8, 167u8, 58u8, 244u8, 70u8, 118u8,
4429                ]);
4430            const ANONYMOUS: bool = false;
4431            #[allow(unused_variables)]
4432            #[inline]
4433            fn new(
4434                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
4435                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
4436            ) -> Self {
4437                Self {
4438                    staker: topics.1,
4439                    operator: topics.2,
4440                }
4441            }
4442            #[inline]
4443            fn check_signature(
4444                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
4445            ) -> alloy_sol_types::Result<()> {
4446                if topics.0 != Self::SIGNATURE_HASH {
4447                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
4448                        Self::SIGNATURE,
4449                        topics.0,
4450                        Self::SIGNATURE_HASH,
4451                    ));
4452                }
4453                Ok(())
4454            }
4455            #[inline]
4456            fn tokenize_body(&self) -> Self::DataToken<'_> {
4457                ()
4458            }
4459            #[inline]
4460            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
4461                (
4462                    Self::SIGNATURE_HASH.into(),
4463                    self.staker.clone(),
4464                    self.operator.clone(),
4465                )
4466            }
4467            #[inline]
4468            fn encode_topics_raw(
4469                &self,
4470                out: &mut [alloy_sol_types::abi::token::WordToken],
4471            ) -> alloy_sol_types::Result<()> {
4472                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
4473                    return Err(alloy_sol_types::Error::Overrun);
4474                }
4475                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
4476                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
4477                    &self.staker,
4478                );
4479                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
4480                    &self.operator,
4481                );
4482                Ok(())
4483            }
4484        }
4485        #[automatically_derived]
4486        impl alloy_sol_types::private::IntoLogData for StakerUndelegated {
4487            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
4488                From::from(self)
4489            }
4490            fn into_log_data(self) -> alloy_sol_types::private::LogData {
4491                From::from(&self)
4492            }
4493        }
4494        #[automatically_derived]
4495        impl From<&StakerUndelegated> for alloy_sol_types::private::LogData {
4496            #[inline]
4497            fn from(this: &StakerUndelegated) -> alloy_sol_types::private::LogData {
4498                alloy_sol_types::SolEvent::encode_log_data(this)
4499            }
4500        }
4501    };
4502    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
4503    /**Event with signature `StrategyWithdrawalDelayBlocksSet(address,uint256,uint256)` and selector `0x0e7efa738e8b0ce6376a0c1af471655540d2e9a81647d7b09ed823018426576d`.
4504    ```solidity
4505    event StrategyWithdrawalDelayBlocksSet(address strategy, uint256 previousValue, uint256 newValue);
4506    ```*/
4507    #[allow(
4508        non_camel_case_types,
4509        non_snake_case,
4510        clippy::pub_underscore_fields,
4511        clippy::style
4512    )]
4513    #[derive(Clone)]
4514    pub struct StrategyWithdrawalDelayBlocksSet {
4515        #[allow(missing_docs)]
4516        pub strategy: alloy::sol_types::private::Address,
4517        #[allow(missing_docs)]
4518        pub previousValue: alloy::sol_types::private::primitives::aliases::U256,
4519        #[allow(missing_docs)]
4520        pub newValue: alloy::sol_types::private::primitives::aliases::U256,
4521    }
4522    #[allow(
4523        non_camel_case_types,
4524        non_snake_case,
4525        clippy::pub_underscore_fields,
4526        clippy::style
4527    )]
4528    const _: () = {
4529        use alloy::sol_types as alloy_sol_types;
4530        #[automatically_derived]
4531        impl alloy_sol_types::SolEvent for StrategyWithdrawalDelayBlocksSet {
4532            type DataTuple<'a> = (
4533                alloy::sol_types::sol_data::Address,
4534                alloy::sol_types::sol_data::Uint<256>,
4535                alloy::sol_types::sol_data::Uint<256>,
4536            );
4537            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
4538            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
4539            const SIGNATURE: &'static str =
4540                "StrategyWithdrawalDelayBlocksSet(address,uint256,uint256)";
4541            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
4542                alloy_sol_types::private::B256::new([
4543                    14u8, 126u8, 250u8, 115u8, 142u8, 139u8, 12u8, 230u8, 55u8, 106u8, 12u8, 26u8,
4544                    244u8, 113u8, 101u8, 85u8, 64u8, 210u8, 233u8, 168u8, 22u8, 71u8, 215u8, 176u8,
4545                    158u8, 216u8, 35u8, 1u8, 132u8, 38u8, 87u8, 109u8,
4546                ]);
4547            const ANONYMOUS: bool = false;
4548            #[allow(unused_variables)]
4549            #[inline]
4550            fn new(
4551                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
4552                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
4553            ) -> Self {
4554                Self {
4555                    strategy: data.0,
4556                    previousValue: data.1,
4557                    newValue: data.2,
4558                }
4559            }
4560            #[inline]
4561            fn check_signature(
4562                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
4563            ) -> alloy_sol_types::Result<()> {
4564                if topics.0 != Self::SIGNATURE_HASH {
4565                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
4566                        Self::SIGNATURE,
4567                        topics.0,
4568                        Self::SIGNATURE_HASH,
4569                    ));
4570                }
4571                Ok(())
4572            }
4573            #[inline]
4574            fn tokenize_body(&self) -> Self::DataToken<'_> {
4575                (
4576                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4577                        &self.strategy,
4578                    ),
4579                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
4580                        &self.previousValue,
4581                    ),
4582                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
4583                        &self.newValue,
4584                    ),
4585                )
4586            }
4587            #[inline]
4588            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
4589                (Self::SIGNATURE_HASH.into(),)
4590            }
4591            #[inline]
4592            fn encode_topics_raw(
4593                &self,
4594                out: &mut [alloy_sol_types::abi::token::WordToken],
4595            ) -> alloy_sol_types::Result<()> {
4596                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
4597                    return Err(alloy_sol_types::Error::Overrun);
4598                }
4599                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
4600                Ok(())
4601            }
4602        }
4603        #[automatically_derived]
4604        impl alloy_sol_types::private::IntoLogData for StrategyWithdrawalDelayBlocksSet {
4605            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
4606                From::from(self)
4607            }
4608            fn into_log_data(self) -> alloy_sol_types::private::LogData {
4609                From::from(&self)
4610            }
4611        }
4612        #[automatically_derived]
4613        impl From<&StrategyWithdrawalDelayBlocksSet> for alloy_sol_types::private::LogData {
4614            #[inline]
4615            fn from(this: &StrategyWithdrawalDelayBlocksSet) -> alloy_sol_types::private::LogData {
4616                alloy_sol_types::SolEvent::encode_log_data(this)
4617            }
4618        }
4619    };
4620    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
4621    /**Event with signature `Unpaused(address,uint256)` and selector `0x3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c`.
4622    ```solidity
4623    event Unpaused(address indexed account, uint256 newPausedStatus);
4624    ```*/
4625    #[allow(
4626        non_camel_case_types,
4627        non_snake_case,
4628        clippy::pub_underscore_fields,
4629        clippy::style
4630    )]
4631    #[derive(Clone)]
4632    pub struct Unpaused {
4633        #[allow(missing_docs)]
4634        pub account: alloy::sol_types::private::Address,
4635        #[allow(missing_docs)]
4636        pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256,
4637    }
4638    #[allow(
4639        non_camel_case_types,
4640        non_snake_case,
4641        clippy::pub_underscore_fields,
4642        clippy::style
4643    )]
4644    const _: () = {
4645        use alloy::sol_types as alloy_sol_types;
4646        #[automatically_derived]
4647        impl alloy_sol_types::SolEvent for Unpaused {
4648            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4649            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
4650            type TopicList = (
4651                alloy_sol_types::sol_data::FixedBytes<32>,
4652                alloy::sol_types::sol_data::Address,
4653            );
4654            const SIGNATURE: &'static str = "Unpaused(address,uint256)";
4655            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
4656                alloy_sol_types::private::B256::new([
4657                    53u8, 130u8, 209u8, 130u8, 142u8, 38u8, 191u8, 86u8, 189u8, 128u8, 21u8, 2u8,
4658                    188u8, 2u8, 26u8, 192u8, 188u8, 138u8, 251u8, 87u8, 200u8, 38u8, 228u8, 152u8,
4659                    107u8, 69u8, 89u8, 60u8, 143u8, 173u8, 56u8, 156u8,
4660                ]);
4661            const ANONYMOUS: bool = false;
4662            #[allow(unused_variables)]
4663            #[inline]
4664            fn new(
4665                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
4666                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
4667            ) -> Self {
4668                Self {
4669                    account: topics.1,
4670                    newPausedStatus: data.0,
4671                }
4672            }
4673            #[inline]
4674            fn check_signature(
4675                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
4676            ) -> alloy_sol_types::Result<()> {
4677                if topics.0 != Self::SIGNATURE_HASH {
4678                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
4679                        Self::SIGNATURE,
4680                        topics.0,
4681                        Self::SIGNATURE_HASH,
4682                    ));
4683                }
4684                Ok(())
4685            }
4686            #[inline]
4687            fn tokenize_body(&self) -> Self::DataToken<'_> {
4688                (
4689                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
4690                        &self.newPausedStatus,
4691                    ),
4692                )
4693            }
4694            #[inline]
4695            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
4696                (Self::SIGNATURE_HASH.into(), self.account.clone())
4697            }
4698            #[inline]
4699            fn encode_topics_raw(
4700                &self,
4701                out: &mut [alloy_sol_types::abi::token::WordToken],
4702            ) -> alloy_sol_types::Result<()> {
4703                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
4704                    return Err(alloy_sol_types::Error::Overrun);
4705                }
4706                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
4707                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
4708                    &self.account,
4709                );
4710                Ok(())
4711            }
4712        }
4713        #[automatically_derived]
4714        impl alloy_sol_types::private::IntoLogData for Unpaused {
4715            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
4716                From::from(self)
4717            }
4718            fn into_log_data(self) -> alloy_sol_types::private::LogData {
4719                From::from(&self)
4720            }
4721        }
4722        #[automatically_derived]
4723        impl From<&Unpaused> for alloy_sol_types::private::LogData {
4724            #[inline]
4725            fn from(this: &Unpaused) -> alloy_sol_types::private::LogData {
4726                alloy_sol_types::SolEvent::encode_log_data(this)
4727            }
4728        }
4729    };
4730    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
4731    /**Event with signature `WithdrawalCompleted(bytes32)` and selector `0xc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d`.
4732    ```solidity
4733    event WithdrawalCompleted(bytes32 withdrawalRoot);
4734    ```*/
4735    #[allow(
4736        non_camel_case_types,
4737        non_snake_case,
4738        clippy::pub_underscore_fields,
4739        clippy::style
4740    )]
4741    #[derive(Clone)]
4742    pub struct WithdrawalCompleted {
4743        #[allow(missing_docs)]
4744        pub withdrawalRoot: alloy::sol_types::private::FixedBytes<32>,
4745    }
4746    #[allow(
4747        non_camel_case_types,
4748        non_snake_case,
4749        clippy::pub_underscore_fields,
4750        clippy::style
4751    )]
4752    const _: () = {
4753        use alloy::sol_types as alloy_sol_types;
4754        #[automatically_derived]
4755        impl alloy_sol_types::SolEvent for WithdrawalCompleted {
4756            type DataTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4757            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
4758            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
4759            const SIGNATURE: &'static str = "WithdrawalCompleted(bytes32)";
4760            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
4761                alloy_sol_types::private::B256::new([
4762                    201u8, 112u8, 152u8, 194u8, 246u8, 88u8, 128u8, 11u8, 77u8, 242u8, 144u8, 1u8,
4763                    82u8, 127u8, 115u8, 36u8, 188u8, 223u8, 252u8, 246u8, 232u8, 117u8, 26u8,
4764                    105u8, 154u8, 185u8, 32u8, 161u8, 236u8, 237u8, 91u8, 29u8,
4765                ]);
4766            const ANONYMOUS: bool = false;
4767            #[allow(unused_variables)]
4768            #[inline]
4769            fn new(
4770                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
4771                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
4772            ) -> Self {
4773                Self {
4774                    withdrawalRoot: data.0,
4775                }
4776            }
4777            #[inline]
4778            fn check_signature(
4779                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
4780            ) -> alloy_sol_types::Result<()> {
4781                if topics.0 != Self::SIGNATURE_HASH {
4782                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
4783                        Self::SIGNATURE,
4784                        topics.0,
4785                        Self::SIGNATURE_HASH,
4786                    ));
4787                }
4788                Ok(())
4789            }
4790            #[inline]
4791            fn tokenize_body(&self) -> Self::DataToken<'_> {
4792                (
4793                    <alloy::sol_types::sol_data::FixedBytes<
4794                        32,
4795                    > as alloy_sol_types::SolType>::tokenize(&self.withdrawalRoot),
4796                )
4797            }
4798            #[inline]
4799            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
4800                (Self::SIGNATURE_HASH.into(),)
4801            }
4802            #[inline]
4803            fn encode_topics_raw(
4804                &self,
4805                out: &mut [alloy_sol_types::abi::token::WordToken],
4806            ) -> alloy_sol_types::Result<()> {
4807                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
4808                    return Err(alloy_sol_types::Error::Overrun);
4809                }
4810                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
4811                Ok(())
4812            }
4813        }
4814        #[automatically_derived]
4815        impl alloy_sol_types::private::IntoLogData for WithdrawalCompleted {
4816            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
4817                From::from(self)
4818            }
4819            fn into_log_data(self) -> alloy_sol_types::private::LogData {
4820                From::from(&self)
4821            }
4822        }
4823        #[automatically_derived]
4824        impl From<&WithdrawalCompleted> for alloy_sol_types::private::LogData {
4825            #[inline]
4826            fn from(this: &WithdrawalCompleted) -> alloy_sol_types::private::LogData {
4827                alloy_sol_types::SolEvent::encode_log_data(this)
4828            }
4829        }
4830    };
4831    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
4832    /**Event with signature `WithdrawalQueued(bytes32,(address,address,address,uint256,uint32,address[],uint256[]))` and selector `0x9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f9`.
4833    ```solidity
4834    event WithdrawalQueued(bytes32 withdrawalRoot, IDelegationManager.Withdrawal withdrawal);
4835    ```*/
4836    #[allow(
4837        non_camel_case_types,
4838        non_snake_case,
4839        clippy::pub_underscore_fields,
4840        clippy::style
4841    )]
4842    #[derive(Clone)]
4843    pub struct WithdrawalQueued {
4844        #[allow(missing_docs)]
4845        pub withdrawalRoot: alloy::sol_types::private::FixedBytes<32>,
4846        #[allow(missing_docs)]
4847        pub withdrawal: <IDelegationManager::Withdrawal as alloy::sol_types::SolType>::RustType,
4848    }
4849    #[allow(
4850        non_camel_case_types,
4851        non_snake_case,
4852        clippy::pub_underscore_fields,
4853        clippy::style
4854    )]
4855    const _: () = {
4856        use alloy::sol_types as alloy_sol_types;
4857        #[automatically_derived]
4858        impl alloy_sol_types::SolEvent for WithdrawalQueued {
4859            type DataTuple<'a> = (
4860                alloy::sol_types::sol_data::FixedBytes<32>,
4861                IDelegationManager::Withdrawal,
4862            );
4863            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
4864            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
4865            const SIGNATURE: &'static str = "WithdrawalQueued(bytes32,(address,address,address,uint256,uint32,address[],uint256[]))";
4866            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
4867                alloy_sol_types::private::B256::new([
4868                    144u8, 9u8, 171u8, 21u8, 62u8, 128u8, 20u8, 251u8, 251u8, 2u8, 242u8, 33u8,
4869                    127u8, 92u8, 222u8, 122u8, 167u8, 249u8, 173u8, 115u8, 74u8, 232u8, 92u8,
4870                    163u8, 238u8, 63u8, 76u8, 162u8, 253u8, 212u8, 153u8, 249u8,
4871                ]);
4872            const ANONYMOUS: bool = false;
4873            #[allow(unused_variables)]
4874            #[inline]
4875            fn new(
4876                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
4877                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
4878            ) -> Self {
4879                Self {
4880                    withdrawalRoot: data.0,
4881                    withdrawal: data.1,
4882                }
4883            }
4884            #[inline]
4885            fn check_signature(
4886                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
4887            ) -> alloy_sol_types::Result<()> {
4888                if topics.0 != Self::SIGNATURE_HASH {
4889                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
4890                        Self::SIGNATURE,
4891                        topics.0,
4892                        Self::SIGNATURE_HASH,
4893                    ));
4894                }
4895                Ok(())
4896            }
4897            #[inline]
4898            fn tokenize_body(&self) -> Self::DataToken<'_> {
4899                (
4900                    <alloy::sol_types::sol_data::FixedBytes<
4901                        32,
4902                    > as alloy_sol_types::SolType>::tokenize(&self.withdrawalRoot),
4903                    <IDelegationManager::Withdrawal as alloy_sol_types::SolType>::tokenize(
4904                        &self.withdrawal,
4905                    ),
4906                )
4907            }
4908            #[inline]
4909            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
4910                (Self::SIGNATURE_HASH.into(),)
4911            }
4912            #[inline]
4913            fn encode_topics_raw(
4914                &self,
4915                out: &mut [alloy_sol_types::abi::token::WordToken],
4916            ) -> alloy_sol_types::Result<()> {
4917                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
4918                    return Err(alloy_sol_types::Error::Overrun);
4919                }
4920                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
4921                Ok(())
4922            }
4923        }
4924        #[automatically_derived]
4925        impl alloy_sol_types::private::IntoLogData for WithdrawalQueued {
4926            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
4927                From::from(self)
4928            }
4929            fn into_log_data(self) -> alloy_sol_types::private::LogData {
4930                From::from(&self)
4931            }
4932        }
4933        #[automatically_derived]
4934        impl From<&WithdrawalQueued> for alloy_sol_types::private::LogData {
4935            #[inline]
4936            fn from(this: &WithdrawalQueued) -> alloy_sol_types::private::LogData {
4937                alloy_sol_types::SolEvent::encode_log_data(this)
4938            }
4939        }
4940    };
4941    /**Constructor`.
4942    ```solidity
4943    constructor(address _strategyManager, address _slasher, address _eigenPodManager);
4944    ```*/
4945    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4946    #[derive(Clone)]
4947    pub struct constructorCall {
4948        #[allow(missing_docs)]
4949        pub _strategyManager: alloy::sol_types::private::Address,
4950        #[allow(missing_docs)]
4951        pub _slasher: alloy::sol_types::private::Address,
4952        #[allow(missing_docs)]
4953        pub _eigenPodManager: alloy::sol_types::private::Address,
4954    }
4955    const _: () = {
4956        use alloy::sol_types as alloy_sol_types;
4957        {
4958            #[doc(hidden)]
4959            type UnderlyingSolTuple<'a> = (
4960                alloy::sol_types::sol_data::Address,
4961                alloy::sol_types::sol_data::Address,
4962                alloy::sol_types::sol_data::Address,
4963            );
4964            #[doc(hidden)]
4965            type UnderlyingRustTuple<'a> = (
4966                alloy::sol_types::private::Address,
4967                alloy::sol_types::private::Address,
4968                alloy::sol_types::private::Address,
4969            );
4970            #[cfg(test)]
4971            #[allow(dead_code, unreachable_patterns)]
4972            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4973                match _t {
4974                    alloy_sol_types::private::AssertTypeEq::<
4975                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4976                    >(_) => {}
4977                }
4978            }
4979            #[automatically_derived]
4980            #[doc(hidden)]
4981            impl ::core::convert::From<constructorCall> for UnderlyingRustTuple<'_> {
4982                fn from(value: constructorCall) -> Self {
4983                    (
4984                        value._strategyManager,
4985                        value._slasher,
4986                        value._eigenPodManager,
4987                    )
4988                }
4989            }
4990            #[automatically_derived]
4991            #[doc(hidden)]
4992            impl ::core::convert::From<UnderlyingRustTuple<'_>> for constructorCall {
4993                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4994                    Self {
4995                        _strategyManager: tuple.0,
4996                        _slasher: tuple.1,
4997                        _eigenPodManager: tuple.2,
4998                    }
4999                }
5000            }
5001        }
5002        #[automatically_derived]
5003        impl alloy_sol_types::SolConstructor for constructorCall {
5004            type Parameters<'a> = (
5005                alloy::sol_types::sol_data::Address,
5006                alloy::sol_types::sol_data::Address,
5007                alloy::sol_types::sol_data::Address,
5008            );
5009            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5010            #[inline]
5011            fn new<'a>(
5012                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5013            ) -> Self {
5014                tuple.into()
5015            }
5016            #[inline]
5017            fn tokenize(&self) -> Self::Token<'_> {
5018                (
5019                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5020                        &self._strategyManager,
5021                    ),
5022                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5023                        &self._slasher,
5024                    ),
5025                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5026                        &self._eigenPodManager,
5027                    ),
5028                )
5029            }
5030        }
5031    };
5032    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
5033    /**Function with signature `DELEGATION_APPROVAL_TYPEHASH()` and selector `0x04a4f979`.
5034    ```solidity
5035    function DELEGATION_APPROVAL_TYPEHASH() external view returns (bytes32);
5036    ```*/
5037    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5038    #[derive(Clone)]
5039    pub struct DELEGATION_APPROVAL_TYPEHASHCall;
5040    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
5041    ///Container type for the return parameters of the [`DELEGATION_APPROVAL_TYPEHASH()`](DELEGATION_APPROVAL_TYPEHASHCall) function.
5042    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5043    #[derive(Clone)]
5044    pub struct DELEGATION_APPROVAL_TYPEHASHReturn {
5045        #[allow(missing_docs)]
5046        pub _0: alloy::sol_types::private::FixedBytes<32>,
5047    }
5048    #[allow(
5049        non_camel_case_types,
5050        non_snake_case,
5051        clippy::pub_underscore_fields,
5052        clippy::style
5053    )]
5054    const _: () = {
5055        use alloy::sol_types as alloy_sol_types;
5056        {
5057            #[doc(hidden)]
5058            type UnderlyingSolTuple<'a> = ();
5059            #[doc(hidden)]
5060            type UnderlyingRustTuple<'a> = ();
5061            #[cfg(test)]
5062            #[allow(dead_code, unreachable_patterns)]
5063            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5064                match _t {
5065                    alloy_sol_types::private::AssertTypeEq::<
5066                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5067                    >(_) => {}
5068                }
5069            }
5070            #[automatically_derived]
5071            #[doc(hidden)]
5072            impl ::core::convert::From<DELEGATION_APPROVAL_TYPEHASHCall> for UnderlyingRustTuple<'_> {
5073                fn from(value: DELEGATION_APPROVAL_TYPEHASHCall) -> Self {
5074                    ()
5075                }
5076            }
5077            #[automatically_derived]
5078            #[doc(hidden)]
5079            impl ::core::convert::From<UnderlyingRustTuple<'_>> for DELEGATION_APPROVAL_TYPEHASHCall {
5080                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5081                    Self
5082                }
5083            }
5084        }
5085        {
5086            #[doc(hidden)]
5087            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5088            #[doc(hidden)]
5089            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
5090            #[cfg(test)]
5091            #[allow(dead_code, unreachable_patterns)]
5092            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5093                match _t {
5094                    alloy_sol_types::private::AssertTypeEq::<
5095                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5096                    >(_) => {}
5097                }
5098            }
5099            #[automatically_derived]
5100            #[doc(hidden)]
5101            impl ::core::convert::From<DELEGATION_APPROVAL_TYPEHASHReturn> for UnderlyingRustTuple<'_> {
5102                fn from(value: DELEGATION_APPROVAL_TYPEHASHReturn) -> Self {
5103                    (value._0,)
5104                }
5105            }
5106            #[automatically_derived]
5107            #[doc(hidden)]
5108            impl ::core::convert::From<UnderlyingRustTuple<'_>> for DELEGATION_APPROVAL_TYPEHASHReturn {
5109                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5110                    Self { _0: tuple.0 }
5111                }
5112            }
5113        }
5114        #[automatically_derived]
5115        impl alloy_sol_types::SolCall for DELEGATION_APPROVAL_TYPEHASHCall {
5116            type Parameters<'a> = ();
5117            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5118            type Return = alloy::sol_types::private::FixedBytes<32>;
5119            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5120            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
5121            const SIGNATURE: &'static str = "DELEGATION_APPROVAL_TYPEHASH()";
5122            const SELECTOR: [u8; 4] = [4u8, 164u8, 249u8, 121u8];
5123            #[inline]
5124            fn new<'a>(
5125                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5126            ) -> Self {
5127                tuple.into()
5128            }
5129            #[inline]
5130            fn tokenize(&self) -> Self::Token<'_> {
5131                ()
5132            }
5133            #[inline]
5134            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5135                (
5136                    <alloy::sol_types::sol_data::FixedBytes<
5137                        32,
5138                    > as alloy_sol_types::SolType>::tokenize(ret),
5139                )
5140            }
5141            #[inline]
5142            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5143                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
5144                    |r| {
5145                        let r: DELEGATION_APPROVAL_TYPEHASHReturn = r.into();
5146                        r._0
5147                    },
5148                )
5149            }
5150            #[inline]
5151            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5152                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
5153                    data,
5154                )
5155                .map(|r| {
5156                    let r: DELEGATION_APPROVAL_TYPEHASHReturn = r.into();
5157                    r._0
5158                })
5159            }
5160        }
5161    };
5162    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
5163    /**Function with signature `DOMAIN_TYPEHASH()` and selector `0x20606b70`.
5164    ```solidity
5165    function DOMAIN_TYPEHASH() external view returns (bytes32);
5166    ```*/
5167    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5168    #[derive(Clone)]
5169    pub struct DOMAIN_TYPEHASHCall;
5170    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
5171    ///Container type for the return parameters of the [`DOMAIN_TYPEHASH()`](DOMAIN_TYPEHASHCall) function.
5172    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5173    #[derive(Clone)]
5174    pub struct DOMAIN_TYPEHASHReturn {
5175        #[allow(missing_docs)]
5176        pub _0: alloy::sol_types::private::FixedBytes<32>,
5177    }
5178    #[allow(
5179        non_camel_case_types,
5180        non_snake_case,
5181        clippy::pub_underscore_fields,
5182        clippy::style
5183    )]
5184    const _: () = {
5185        use alloy::sol_types as alloy_sol_types;
5186        {
5187            #[doc(hidden)]
5188            type UnderlyingSolTuple<'a> = ();
5189            #[doc(hidden)]
5190            type UnderlyingRustTuple<'a> = ();
5191            #[cfg(test)]
5192            #[allow(dead_code, unreachable_patterns)]
5193            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5194                match _t {
5195                    alloy_sol_types::private::AssertTypeEq::<
5196                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5197                    >(_) => {}
5198                }
5199            }
5200            #[automatically_derived]
5201            #[doc(hidden)]
5202            impl ::core::convert::From<DOMAIN_TYPEHASHCall> for UnderlyingRustTuple<'_> {
5203                fn from(value: DOMAIN_TYPEHASHCall) -> Self {
5204                    ()
5205                }
5206            }
5207            #[automatically_derived]
5208            #[doc(hidden)]
5209            impl ::core::convert::From<UnderlyingRustTuple<'_>> for DOMAIN_TYPEHASHCall {
5210                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5211                    Self
5212                }
5213            }
5214        }
5215        {
5216            #[doc(hidden)]
5217            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5218            #[doc(hidden)]
5219            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
5220            #[cfg(test)]
5221            #[allow(dead_code, unreachable_patterns)]
5222            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5223                match _t {
5224                    alloy_sol_types::private::AssertTypeEq::<
5225                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5226                    >(_) => {}
5227                }
5228            }
5229            #[automatically_derived]
5230            #[doc(hidden)]
5231            impl ::core::convert::From<DOMAIN_TYPEHASHReturn> for UnderlyingRustTuple<'_> {
5232                fn from(value: DOMAIN_TYPEHASHReturn) -> Self {
5233                    (value._0,)
5234                }
5235            }
5236            #[automatically_derived]
5237            #[doc(hidden)]
5238            impl ::core::convert::From<UnderlyingRustTuple<'_>> for DOMAIN_TYPEHASHReturn {
5239                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5240                    Self { _0: tuple.0 }
5241                }
5242            }
5243        }
5244        #[automatically_derived]
5245        impl alloy_sol_types::SolCall for DOMAIN_TYPEHASHCall {
5246            type Parameters<'a> = ();
5247            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5248            type Return = alloy::sol_types::private::FixedBytes<32>;
5249            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5250            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
5251            const SIGNATURE: &'static str = "DOMAIN_TYPEHASH()";
5252            const SELECTOR: [u8; 4] = [32u8, 96u8, 107u8, 112u8];
5253            #[inline]
5254            fn new<'a>(
5255                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5256            ) -> Self {
5257                tuple.into()
5258            }
5259            #[inline]
5260            fn tokenize(&self) -> Self::Token<'_> {
5261                ()
5262            }
5263            #[inline]
5264            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5265                (
5266                    <alloy::sol_types::sol_data::FixedBytes<
5267                        32,
5268                    > as alloy_sol_types::SolType>::tokenize(ret),
5269                )
5270            }
5271            #[inline]
5272            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5273                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
5274                    |r| {
5275                        let r: DOMAIN_TYPEHASHReturn = r.into();
5276                        r._0
5277                    },
5278                )
5279            }
5280            #[inline]
5281            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5282                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
5283                    data,
5284                )
5285                .map(|r| {
5286                    let r: DOMAIN_TYPEHASHReturn = r.into();
5287                    r._0
5288                })
5289            }
5290        }
5291    };
5292    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
5293    /**Function with signature `MAX_STAKER_OPT_OUT_WINDOW_BLOCKS()` and selector `0x4fc40b61`.
5294    ```solidity
5295    function MAX_STAKER_OPT_OUT_WINDOW_BLOCKS() external view returns (uint256);
5296    ```*/
5297    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5298    #[derive(Clone)]
5299    pub struct MAX_STAKER_OPT_OUT_WINDOW_BLOCKSCall;
5300    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
5301    ///Container type for the return parameters of the [`MAX_STAKER_OPT_OUT_WINDOW_BLOCKS()`](MAX_STAKER_OPT_OUT_WINDOW_BLOCKSCall) function.
5302    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5303    #[derive(Clone)]
5304    pub struct MAX_STAKER_OPT_OUT_WINDOW_BLOCKSReturn {
5305        #[allow(missing_docs)]
5306        pub _0: alloy::sol_types::private::primitives::aliases::U256,
5307    }
5308    #[allow(
5309        non_camel_case_types,
5310        non_snake_case,
5311        clippy::pub_underscore_fields,
5312        clippy::style
5313    )]
5314    const _: () = {
5315        use alloy::sol_types as alloy_sol_types;
5316        {
5317            #[doc(hidden)]
5318            type UnderlyingSolTuple<'a> = ();
5319            #[doc(hidden)]
5320            type UnderlyingRustTuple<'a> = ();
5321            #[cfg(test)]
5322            #[allow(dead_code, unreachable_patterns)]
5323            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5324                match _t {
5325                    alloy_sol_types::private::AssertTypeEq::<
5326                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5327                    >(_) => {}
5328                }
5329            }
5330            #[automatically_derived]
5331            #[doc(hidden)]
5332            impl ::core::convert::From<MAX_STAKER_OPT_OUT_WINDOW_BLOCKSCall> for UnderlyingRustTuple<'_> {
5333                fn from(value: MAX_STAKER_OPT_OUT_WINDOW_BLOCKSCall) -> Self {
5334                    ()
5335                }
5336            }
5337            #[automatically_derived]
5338            #[doc(hidden)]
5339            impl ::core::convert::From<UnderlyingRustTuple<'_>> for MAX_STAKER_OPT_OUT_WINDOW_BLOCKSCall {
5340                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5341                    Self
5342                }
5343            }
5344        }
5345        {
5346            #[doc(hidden)]
5347            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
5348            #[doc(hidden)]
5349            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
5350            #[cfg(test)]
5351            #[allow(dead_code, unreachable_patterns)]
5352            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5353                match _t {
5354                    alloy_sol_types::private::AssertTypeEq::<
5355                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5356                    >(_) => {}
5357                }
5358            }
5359            #[automatically_derived]
5360            #[doc(hidden)]
5361            impl ::core::convert::From<MAX_STAKER_OPT_OUT_WINDOW_BLOCKSReturn> for UnderlyingRustTuple<'_> {
5362                fn from(value: MAX_STAKER_OPT_OUT_WINDOW_BLOCKSReturn) -> Self {
5363                    (value._0,)
5364                }
5365            }
5366            #[automatically_derived]
5367            #[doc(hidden)]
5368            impl ::core::convert::From<UnderlyingRustTuple<'_>> for MAX_STAKER_OPT_OUT_WINDOW_BLOCKSReturn {
5369                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5370                    Self { _0: tuple.0 }
5371                }
5372            }
5373        }
5374        #[automatically_derived]
5375        impl alloy_sol_types::SolCall for MAX_STAKER_OPT_OUT_WINDOW_BLOCKSCall {
5376            type Parameters<'a> = ();
5377            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5378            type Return = alloy::sol_types::private::primitives::aliases::U256;
5379            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
5380            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
5381            const SIGNATURE: &'static str = "MAX_STAKER_OPT_OUT_WINDOW_BLOCKS()";
5382            const SELECTOR: [u8; 4] = [79u8, 196u8, 11u8, 97u8];
5383            #[inline]
5384            fn new<'a>(
5385                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5386            ) -> Self {
5387                tuple.into()
5388            }
5389            #[inline]
5390            fn tokenize(&self) -> Self::Token<'_> {
5391                ()
5392            }
5393            #[inline]
5394            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5395                (
5396                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
5397                        ret,
5398                    ),
5399                )
5400            }
5401            #[inline]
5402            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5403                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
5404                    |r| {
5405                        let r: MAX_STAKER_OPT_OUT_WINDOW_BLOCKSReturn = r.into();
5406                        r._0
5407                    },
5408                )
5409            }
5410            #[inline]
5411            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5412                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
5413                    data,
5414                )
5415                .map(|r| {
5416                    let r: MAX_STAKER_OPT_OUT_WINDOW_BLOCKSReturn = r.into();
5417                    r._0
5418                })
5419            }
5420        }
5421    };
5422    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
5423    /**Function with signature `MAX_WITHDRAWAL_DELAY_BLOCKS()` and selector `0xca661c04`.
5424    ```solidity
5425    function MAX_WITHDRAWAL_DELAY_BLOCKS() external view returns (uint256);
5426    ```*/
5427    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5428    #[derive(Clone)]
5429    pub struct MAX_WITHDRAWAL_DELAY_BLOCKSCall;
5430    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
5431    ///Container type for the return parameters of the [`MAX_WITHDRAWAL_DELAY_BLOCKS()`](MAX_WITHDRAWAL_DELAY_BLOCKSCall) function.
5432    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5433    #[derive(Clone)]
5434    pub struct MAX_WITHDRAWAL_DELAY_BLOCKSReturn {
5435        #[allow(missing_docs)]
5436        pub _0: alloy::sol_types::private::primitives::aliases::U256,
5437    }
5438    #[allow(
5439        non_camel_case_types,
5440        non_snake_case,
5441        clippy::pub_underscore_fields,
5442        clippy::style
5443    )]
5444    const _: () = {
5445        use alloy::sol_types as alloy_sol_types;
5446        {
5447            #[doc(hidden)]
5448            type UnderlyingSolTuple<'a> = ();
5449            #[doc(hidden)]
5450            type UnderlyingRustTuple<'a> = ();
5451            #[cfg(test)]
5452            #[allow(dead_code, unreachable_patterns)]
5453            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5454                match _t {
5455                    alloy_sol_types::private::AssertTypeEq::<
5456                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5457                    >(_) => {}
5458                }
5459            }
5460            #[automatically_derived]
5461            #[doc(hidden)]
5462            impl ::core::convert::From<MAX_WITHDRAWAL_DELAY_BLOCKSCall> for UnderlyingRustTuple<'_> {
5463                fn from(value: MAX_WITHDRAWAL_DELAY_BLOCKSCall) -> Self {
5464                    ()
5465                }
5466            }
5467            #[automatically_derived]
5468            #[doc(hidden)]
5469            impl ::core::convert::From<UnderlyingRustTuple<'_>> for MAX_WITHDRAWAL_DELAY_BLOCKSCall {
5470                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5471                    Self
5472                }
5473            }
5474        }
5475        {
5476            #[doc(hidden)]
5477            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
5478            #[doc(hidden)]
5479            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
5480            #[cfg(test)]
5481            #[allow(dead_code, unreachable_patterns)]
5482            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5483                match _t {
5484                    alloy_sol_types::private::AssertTypeEq::<
5485                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5486                    >(_) => {}
5487                }
5488            }
5489            #[automatically_derived]
5490            #[doc(hidden)]
5491            impl ::core::convert::From<MAX_WITHDRAWAL_DELAY_BLOCKSReturn> for UnderlyingRustTuple<'_> {
5492                fn from(value: MAX_WITHDRAWAL_DELAY_BLOCKSReturn) -> Self {
5493                    (value._0,)
5494                }
5495            }
5496            #[automatically_derived]
5497            #[doc(hidden)]
5498            impl ::core::convert::From<UnderlyingRustTuple<'_>> for MAX_WITHDRAWAL_DELAY_BLOCKSReturn {
5499                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5500                    Self { _0: tuple.0 }
5501                }
5502            }
5503        }
5504        #[automatically_derived]
5505        impl alloy_sol_types::SolCall for MAX_WITHDRAWAL_DELAY_BLOCKSCall {
5506            type Parameters<'a> = ();
5507            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5508            type Return = alloy::sol_types::private::primitives::aliases::U256;
5509            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
5510            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
5511            const SIGNATURE: &'static str = "MAX_WITHDRAWAL_DELAY_BLOCKS()";
5512            const SELECTOR: [u8; 4] = [202u8, 102u8, 28u8, 4u8];
5513            #[inline]
5514            fn new<'a>(
5515                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5516            ) -> Self {
5517                tuple.into()
5518            }
5519            #[inline]
5520            fn tokenize(&self) -> Self::Token<'_> {
5521                ()
5522            }
5523            #[inline]
5524            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5525                (
5526                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
5527                        ret,
5528                    ),
5529                )
5530            }
5531            #[inline]
5532            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5533                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
5534                    |r| {
5535                        let r: MAX_WITHDRAWAL_DELAY_BLOCKSReturn = r.into();
5536                        r._0
5537                    },
5538                )
5539            }
5540            #[inline]
5541            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5542                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
5543                    data,
5544                )
5545                .map(|r| {
5546                    let r: MAX_WITHDRAWAL_DELAY_BLOCKSReturn = r.into();
5547                    r._0
5548                })
5549            }
5550        }
5551    };
5552    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
5553    /**Function with signature `STAKER_DELEGATION_TYPEHASH()` and selector `0x43377382`.
5554    ```solidity
5555    function STAKER_DELEGATION_TYPEHASH() external view returns (bytes32);
5556    ```*/
5557    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5558    #[derive(Clone)]
5559    pub struct STAKER_DELEGATION_TYPEHASHCall;
5560    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
5561    ///Container type for the return parameters of the [`STAKER_DELEGATION_TYPEHASH()`](STAKER_DELEGATION_TYPEHASHCall) function.
5562    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5563    #[derive(Clone)]
5564    pub struct STAKER_DELEGATION_TYPEHASHReturn {
5565        #[allow(missing_docs)]
5566        pub _0: alloy::sol_types::private::FixedBytes<32>,
5567    }
5568    #[allow(
5569        non_camel_case_types,
5570        non_snake_case,
5571        clippy::pub_underscore_fields,
5572        clippy::style
5573    )]
5574    const _: () = {
5575        use alloy::sol_types as alloy_sol_types;
5576        {
5577            #[doc(hidden)]
5578            type UnderlyingSolTuple<'a> = ();
5579            #[doc(hidden)]
5580            type UnderlyingRustTuple<'a> = ();
5581            #[cfg(test)]
5582            #[allow(dead_code, unreachable_patterns)]
5583            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5584                match _t {
5585                    alloy_sol_types::private::AssertTypeEq::<
5586                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5587                    >(_) => {}
5588                }
5589            }
5590            #[automatically_derived]
5591            #[doc(hidden)]
5592            impl ::core::convert::From<STAKER_DELEGATION_TYPEHASHCall> for UnderlyingRustTuple<'_> {
5593                fn from(value: STAKER_DELEGATION_TYPEHASHCall) -> Self {
5594                    ()
5595                }
5596            }
5597            #[automatically_derived]
5598            #[doc(hidden)]
5599            impl ::core::convert::From<UnderlyingRustTuple<'_>> for STAKER_DELEGATION_TYPEHASHCall {
5600                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5601                    Self
5602                }
5603            }
5604        }
5605        {
5606            #[doc(hidden)]
5607            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5608            #[doc(hidden)]
5609            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
5610            #[cfg(test)]
5611            #[allow(dead_code, unreachable_patterns)]
5612            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5613                match _t {
5614                    alloy_sol_types::private::AssertTypeEq::<
5615                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5616                    >(_) => {}
5617                }
5618            }
5619            #[automatically_derived]
5620            #[doc(hidden)]
5621            impl ::core::convert::From<STAKER_DELEGATION_TYPEHASHReturn> for UnderlyingRustTuple<'_> {
5622                fn from(value: STAKER_DELEGATION_TYPEHASHReturn) -> Self {
5623                    (value._0,)
5624                }
5625            }
5626            #[automatically_derived]
5627            #[doc(hidden)]
5628            impl ::core::convert::From<UnderlyingRustTuple<'_>> for STAKER_DELEGATION_TYPEHASHReturn {
5629                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5630                    Self { _0: tuple.0 }
5631                }
5632            }
5633        }
5634        #[automatically_derived]
5635        impl alloy_sol_types::SolCall for STAKER_DELEGATION_TYPEHASHCall {
5636            type Parameters<'a> = ();
5637            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5638            type Return = alloy::sol_types::private::FixedBytes<32>;
5639            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5640            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
5641            const SIGNATURE: &'static str = "STAKER_DELEGATION_TYPEHASH()";
5642            const SELECTOR: [u8; 4] = [67u8, 55u8, 115u8, 130u8];
5643            #[inline]
5644            fn new<'a>(
5645                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5646            ) -> Self {
5647                tuple.into()
5648            }
5649            #[inline]
5650            fn tokenize(&self) -> Self::Token<'_> {
5651                ()
5652            }
5653            #[inline]
5654            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5655                (
5656                    <alloy::sol_types::sol_data::FixedBytes<
5657                        32,
5658                    > as alloy_sol_types::SolType>::tokenize(ret),
5659                )
5660            }
5661            #[inline]
5662            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5663                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
5664                    |r| {
5665                        let r: STAKER_DELEGATION_TYPEHASHReturn = r.into();
5666                        r._0
5667                    },
5668                )
5669            }
5670            #[inline]
5671            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5672                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
5673                    data,
5674                )
5675                .map(|r| {
5676                    let r: STAKER_DELEGATION_TYPEHASHReturn = r.into();
5677                    r._0
5678                })
5679            }
5680        }
5681    };
5682    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
5683    /**Function with signature `beaconChainETHStrategy()` and selector `0x9104c319`.
5684    ```solidity
5685    function beaconChainETHStrategy() external view returns (address);
5686    ```*/
5687    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5688    #[derive(Clone)]
5689    pub struct beaconChainETHStrategyCall;
5690    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
5691    ///Container type for the return parameters of the [`beaconChainETHStrategy()`](beaconChainETHStrategyCall) function.
5692    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5693    #[derive(Clone)]
5694    pub struct beaconChainETHStrategyReturn {
5695        #[allow(missing_docs)]
5696        pub _0: alloy::sol_types::private::Address,
5697    }
5698    #[allow(
5699        non_camel_case_types,
5700        non_snake_case,
5701        clippy::pub_underscore_fields,
5702        clippy::style
5703    )]
5704    const _: () = {
5705        use alloy::sol_types as alloy_sol_types;
5706        {
5707            #[doc(hidden)]
5708            type UnderlyingSolTuple<'a> = ();
5709            #[doc(hidden)]
5710            type UnderlyingRustTuple<'a> = ();
5711            #[cfg(test)]
5712            #[allow(dead_code, unreachable_patterns)]
5713            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5714                match _t {
5715                    alloy_sol_types::private::AssertTypeEq::<
5716                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5717                    >(_) => {}
5718                }
5719            }
5720            #[automatically_derived]
5721            #[doc(hidden)]
5722            impl ::core::convert::From<beaconChainETHStrategyCall> for UnderlyingRustTuple<'_> {
5723                fn from(value: beaconChainETHStrategyCall) -> Self {
5724                    ()
5725                }
5726            }
5727            #[automatically_derived]
5728            #[doc(hidden)]
5729            impl ::core::convert::From<UnderlyingRustTuple<'_>> for beaconChainETHStrategyCall {
5730                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5731                    Self
5732                }
5733            }
5734        }
5735        {
5736            #[doc(hidden)]
5737            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5738            #[doc(hidden)]
5739            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5740            #[cfg(test)]
5741            #[allow(dead_code, unreachable_patterns)]
5742            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5743                match _t {
5744                    alloy_sol_types::private::AssertTypeEq::<
5745                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5746                    >(_) => {}
5747                }
5748            }
5749            #[automatically_derived]
5750            #[doc(hidden)]
5751            impl ::core::convert::From<beaconChainETHStrategyReturn> for UnderlyingRustTuple<'_> {
5752                fn from(value: beaconChainETHStrategyReturn) -> Self {
5753                    (value._0,)
5754                }
5755            }
5756            #[automatically_derived]
5757            #[doc(hidden)]
5758            impl ::core::convert::From<UnderlyingRustTuple<'_>> for beaconChainETHStrategyReturn {
5759                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5760                    Self { _0: tuple.0 }
5761                }
5762            }
5763        }
5764        #[automatically_derived]
5765        impl alloy_sol_types::SolCall for beaconChainETHStrategyCall {
5766            type Parameters<'a> = ();
5767            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5768            type Return = alloy::sol_types::private::Address;
5769            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
5770            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
5771            const SIGNATURE: &'static str = "beaconChainETHStrategy()";
5772            const SELECTOR: [u8; 4] = [145u8, 4u8, 195u8, 25u8];
5773            #[inline]
5774            fn new<'a>(
5775                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5776            ) -> Self {
5777                tuple.into()
5778            }
5779            #[inline]
5780            fn tokenize(&self) -> Self::Token<'_> {
5781                ()
5782            }
5783            #[inline]
5784            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5785                (
5786                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5787                        ret,
5788                    ),
5789                )
5790            }
5791            #[inline]
5792            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5793                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
5794                    |r| {
5795                        let r: beaconChainETHStrategyReturn = r.into();
5796                        r._0
5797                    },
5798                )
5799            }
5800            #[inline]
5801            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5802                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
5803                    data,
5804                )
5805                .map(|r| {
5806                    let r: beaconChainETHStrategyReturn = r.into();
5807                    r._0
5808                })
5809            }
5810        }
5811    };
5812    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
5813    /**Function with signature `calculateCurrentStakerDelegationDigestHash(address,address,uint256)` and selector `0x1bbce091`.
5814    ```solidity
5815    function calculateCurrentStakerDelegationDigestHash(address staker, address operator, uint256 expiry) external view returns (bytes32);
5816    ```*/
5817    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5818    #[derive(Clone)]
5819    pub struct calculateCurrentStakerDelegationDigestHashCall {
5820        #[allow(missing_docs)]
5821        pub staker: alloy::sol_types::private::Address,
5822        #[allow(missing_docs)]
5823        pub operator: alloy::sol_types::private::Address,
5824        #[allow(missing_docs)]
5825        pub expiry: alloy::sol_types::private::primitives::aliases::U256,
5826    }
5827    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
5828    ///Container type for the return parameters of the [`calculateCurrentStakerDelegationDigestHash(address,address,uint256)`](calculateCurrentStakerDelegationDigestHashCall) function.
5829    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5830    #[derive(Clone)]
5831    pub struct calculateCurrentStakerDelegationDigestHashReturn {
5832        #[allow(missing_docs)]
5833        pub _0: alloy::sol_types::private::FixedBytes<32>,
5834    }
5835    #[allow(
5836        non_camel_case_types,
5837        non_snake_case,
5838        clippy::pub_underscore_fields,
5839        clippy::style
5840    )]
5841    const _: () = {
5842        use alloy::sol_types as alloy_sol_types;
5843        {
5844            #[doc(hidden)]
5845            type UnderlyingSolTuple<'a> = (
5846                alloy::sol_types::sol_data::Address,
5847                alloy::sol_types::sol_data::Address,
5848                alloy::sol_types::sol_data::Uint<256>,
5849            );
5850            #[doc(hidden)]
5851            type UnderlyingRustTuple<'a> = (
5852                alloy::sol_types::private::Address,
5853                alloy::sol_types::private::Address,
5854                alloy::sol_types::private::primitives::aliases::U256,
5855            );
5856            #[cfg(test)]
5857            #[allow(dead_code, unreachable_patterns)]
5858            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5859                match _t {
5860                    alloy_sol_types::private::AssertTypeEq::<
5861                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5862                    >(_) => {}
5863                }
5864            }
5865            #[automatically_derived]
5866            #[doc(hidden)]
5867            impl ::core::convert::From<calculateCurrentStakerDelegationDigestHashCall>
5868                for UnderlyingRustTuple<'_>
5869            {
5870                fn from(value: calculateCurrentStakerDelegationDigestHashCall) -> Self {
5871                    (value.staker, value.operator, value.expiry)
5872                }
5873            }
5874            #[automatically_derived]
5875            #[doc(hidden)]
5876            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5877                for calculateCurrentStakerDelegationDigestHashCall
5878            {
5879                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5880                    Self {
5881                        staker: tuple.0,
5882                        operator: tuple.1,
5883                        expiry: tuple.2,
5884                    }
5885                }
5886            }
5887        }
5888        {
5889            #[doc(hidden)]
5890            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5891            #[doc(hidden)]
5892            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
5893            #[cfg(test)]
5894            #[allow(dead_code, unreachable_patterns)]
5895            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5896                match _t {
5897                    alloy_sol_types::private::AssertTypeEq::<
5898                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5899                    >(_) => {}
5900                }
5901            }
5902            #[automatically_derived]
5903            #[doc(hidden)]
5904            impl ::core::convert::From<calculateCurrentStakerDelegationDigestHashReturn>
5905                for UnderlyingRustTuple<'_>
5906            {
5907                fn from(value: calculateCurrentStakerDelegationDigestHashReturn) -> Self {
5908                    (value._0,)
5909                }
5910            }
5911            #[automatically_derived]
5912            #[doc(hidden)]
5913            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5914                for calculateCurrentStakerDelegationDigestHashReturn
5915            {
5916                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5917                    Self { _0: tuple.0 }
5918                }
5919            }
5920        }
5921        #[automatically_derived]
5922        impl alloy_sol_types::SolCall for calculateCurrentStakerDelegationDigestHashCall {
5923            type Parameters<'a> = (
5924                alloy::sol_types::sol_data::Address,
5925                alloy::sol_types::sol_data::Address,
5926                alloy::sol_types::sol_data::Uint<256>,
5927            );
5928            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5929            type Return = alloy::sol_types::private::FixedBytes<32>;
5930            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5931            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
5932            const SIGNATURE: &'static str =
5933                "calculateCurrentStakerDelegationDigestHash(address,address,uint256)";
5934            const SELECTOR: [u8; 4] = [27u8, 188u8, 224u8, 145u8];
5935            #[inline]
5936            fn new<'a>(
5937                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5938            ) -> Self {
5939                tuple.into()
5940            }
5941            #[inline]
5942            fn tokenize(&self) -> Self::Token<'_> {
5943                (
5944                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5945                        &self.staker,
5946                    ),
5947                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5948                        &self.operator,
5949                    ),
5950                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
5951                        &self.expiry,
5952                    ),
5953                )
5954            }
5955            #[inline]
5956            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5957                (
5958                    <alloy::sol_types::sol_data::FixedBytes<
5959                        32,
5960                    > as alloy_sol_types::SolType>::tokenize(ret),
5961                )
5962            }
5963            #[inline]
5964            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5965                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
5966                    |r| {
5967                        let r: calculateCurrentStakerDelegationDigestHashReturn = r.into();
5968                        r._0
5969                    },
5970                )
5971            }
5972            #[inline]
5973            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5974                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
5975                    data,
5976                )
5977                .map(|r| {
5978                    let r: calculateCurrentStakerDelegationDigestHashReturn = r.into();
5979                    r._0
5980                })
5981            }
5982        }
5983    };
5984    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
5985    /**Function with signature `calculateDelegationApprovalDigestHash(address,address,address,bytes32,uint256)` and selector `0x0b9f487a`.
5986    ```solidity
5987    function calculateDelegationApprovalDigestHash(address staker, address operator, address _delegationApprover, bytes32 approverSalt, uint256 expiry) external view returns (bytes32);
5988    ```*/
5989    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5990    #[derive(Clone)]
5991    pub struct calculateDelegationApprovalDigestHashCall {
5992        #[allow(missing_docs)]
5993        pub staker: alloy::sol_types::private::Address,
5994        #[allow(missing_docs)]
5995        pub operator: alloy::sol_types::private::Address,
5996        #[allow(missing_docs)]
5997        pub _delegationApprover: alloy::sol_types::private::Address,
5998        #[allow(missing_docs)]
5999        pub approverSalt: alloy::sol_types::private::FixedBytes<32>,
6000        #[allow(missing_docs)]
6001        pub expiry: alloy::sol_types::private::primitives::aliases::U256,
6002    }
6003    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
6004    ///Container type for the return parameters of the [`calculateDelegationApprovalDigestHash(address,address,address,bytes32,uint256)`](calculateDelegationApprovalDigestHashCall) function.
6005    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6006    #[derive(Clone)]
6007    pub struct calculateDelegationApprovalDigestHashReturn {
6008        #[allow(missing_docs)]
6009        pub _0: alloy::sol_types::private::FixedBytes<32>,
6010    }
6011    #[allow(
6012        non_camel_case_types,
6013        non_snake_case,
6014        clippy::pub_underscore_fields,
6015        clippy::style
6016    )]
6017    const _: () = {
6018        use alloy::sol_types as alloy_sol_types;
6019        {
6020            #[doc(hidden)]
6021            type UnderlyingSolTuple<'a> = (
6022                alloy::sol_types::sol_data::Address,
6023                alloy::sol_types::sol_data::Address,
6024                alloy::sol_types::sol_data::Address,
6025                alloy::sol_types::sol_data::FixedBytes<32>,
6026                alloy::sol_types::sol_data::Uint<256>,
6027            );
6028            #[doc(hidden)]
6029            type UnderlyingRustTuple<'a> = (
6030                alloy::sol_types::private::Address,
6031                alloy::sol_types::private::Address,
6032                alloy::sol_types::private::Address,
6033                alloy::sol_types::private::FixedBytes<32>,
6034                alloy::sol_types::private::primitives::aliases::U256,
6035            );
6036            #[cfg(test)]
6037            #[allow(dead_code, unreachable_patterns)]
6038            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6039                match _t {
6040                    alloy_sol_types::private::AssertTypeEq::<
6041                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6042                    >(_) => {}
6043                }
6044            }
6045            #[automatically_derived]
6046            #[doc(hidden)]
6047            impl ::core::convert::From<calculateDelegationApprovalDigestHashCall> for UnderlyingRustTuple<'_> {
6048                fn from(value: calculateDelegationApprovalDigestHashCall) -> Self {
6049                    (
6050                        value.staker,
6051                        value.operator,
6052                        value._delegationApprover,
6053                        value.approverSalt,
6054                        value.expiry,
6055                    )
6056                }
6057            }
6058            #[automatically_derived]
6059            #[doc(hidden)]
6060            impl ::core::convert::From<UnderlyingRustTuple<'_>> for calculateDelegationApprovalDigestHashCall {
6061                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6062                    Self {
6063                        staker: tuple.0,
6064                        operator: tuple.1,
6065                        _delegationApprover: tuple.2,
6066                        approverSalt: tuple.3,
6067                        expiry: tuple.4,
6068                    }
6069                }
6070            }
6071        }
6072        {
6073            #[doc(hidden)]
6074            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6075            #[doc(hidden)]
6076            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
6077            #[cfg(test)]
6078            #[allow(dead_code, unreachable_patterns)]
6079            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6080                match _t {
6081                    alloy_sol_types::private::AssertTypeEq::<
6082                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6083                    >(_) => {}
6084                }
6085            }
6086            #[automatically_derived]
6087            #[doc(hidden)]
6088            impl ::core::convert::From<calculateDelegationApprovalDigestHashReturn>
6089                for UnderlyingRustTuple<'_>
6090            {
6091                fn from(value: calculateDelegationApprovalDigestHashReturn) -> Self {
6092                    (value._0,)
6093                }
6094            }
6095            #[automatically_derived]
6096            #[doc(hidden)]
6097            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6098                for calculateDelegationApprovalDigestHashReturn
6099            {
6100                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6101                    Self { _0: tuple.0 }
6102                }
6103            }
6104        }
6105        #[automatically_derived]
6106        impl alloy_sol_types::SolCall for calculateDelegationApprovalDigestHashCall {
6107            type Parameters<'a> = (
6108                alloy::sol_types::sol_data::Address,
6109                alloy::sol_types::sol_data::Address,
6110                alloy::sol_types::sol_data::Address,
6111                alloy::sol_types::sol_data::FixedBytes<32>,
6112                alloy::sol_types::sol_data::Uint<256>,
6113            );
6114            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
6115            type Return = alloy::sol_types::private::FixedBytes<32>;
6116            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6117            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6118            const SIGNATURE: &'static str =
6119                "calculateDelegationApprovalDigestHash(address,address,address,bytes32,uint256)";
6120            const SELECTOR: [u8; 4] = [11u8, 159u8, 72u8, 122u8];
6121            #[inline]
6122            fn new<'a>(
6123                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6124            ) -> Self {
6125                tuple.into()
6126            }
6127            #[inline]
6128            fn tokenize(&self) -> Self::Token<'_> {
6129                (
6130                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6131                        &self.staker,
6132                    ),
6133                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6134                        &self.operator,
6135                    ),
6136                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6137                        &self._delegationApprover,
6138                    ),
6139                    <alloy::sol_types::sol_data::FixedBytes<
6140                        32,
6141                    > as alloy_sol_types::SolType>::tokenize(&self.approverSalt),
6142                    <alloy::sol_types::sol_data::Uint<
6143                        256,
6144                    > as alloy_sol_types::SolType>::tokenize(&self.expiry),
6145                )
6146            }
6147            #[inline]
6148            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6149                (
6150                    <alloy::sol_types::sol_data::FixedBytes<
6151                        32,
6152                    > as alloy_sol_types::SolType>::tokenize(ret),
6153                )
6154            }
6155            #[inline]
6156            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6157                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
6158                    |r| {
6159                        let r: calculateDelegationApprovalDigestHashReturn = r.into();
6160                        r._0
6161                    },
6162                )
6163            }
6164            #[inline]
6165            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6166                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
6167                    data,
6168                )
6169                .map(|r| {
6170                    let r: calculateDelegationApprovalDigestHashReturn = r.into();
6171                    r._0
6172                })
6173            }
6174        }
6175    };
6176    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
6177    /**Function with signature `calculateStakerDelegationDigestHash(address,uint256,address,uint256)` and selector `0xc94b5111`.
6178    ```solidity
6179    function calculateStakerDelegationDigestHash(address staker, uint256 _stakerNonce, address operator, uint256 expiry) external view returns (bytes32);
6180    ```*/
6181    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6182    #[derive(Clone)]
6183    pub struct calculateStakerDelegationDigestHashCall {
6184        #[allow(missing_docs)]
6185        pub staker: alloy::sol_types::private::Address,
6186        #[allow(missing_docs)]
6187        pub _stakerNonce: alloy::sol_types::private::primitives::aliases::U256,
6188        #[allow(missing_docs)]
6189        pub operator: alloy::sol_types::private::Address,
6190        #[allow(missing_docs)]
6191        pub expiry: alloy::sol_types::private::primitives::aliases::U256,
6192    }
6193    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
6194    ///Container type for the return parameters of the [`calculateStakerDelegationDigestHash(address,uint256,address,uint256)`](calculateStakerDelegationDigestHashCall) function.
6195    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6196    #[derive(Clone)]
6197    pub struct calculateStakerDelegationDigestHashReturn {
6198        #[allow(missing_docs)]
6199        pub _0: alloy::sol_types::private::FixedBytes<32>,
6200    }
6201    #[allow(
6202        non_camel_case_types,
6203        non_snake_case,
6204        clippy::pub_underscore_fields,
6205        clippy::style
6206    )]
6207    const _: () = {
6208        use alloy::sol_types as alloy_sol_types;
6209        {
6210            #[doc(hidden)]
6211            type UnderlyingSolTuple<'a> = (
6212                alloy::sol_types::sol_data::Address,
6213                alloy::sol_types::sol_data::Uint<256>,
6214                alloy::sol_types::sol_data::Address,
6215                alloy::sol_types::sol_data::Uint<256>,
6216            );
6217            #[doc(hidden)]
6218            type UnderlyingRustTuple<'a> = (
6219                alloy::sol_types::private::Address,
6220                alloy::sol_types::private::primitives::aliases::U256,
6221                alloy::sol_types::private::Address,
6222                alloy::sol_types::private::primitives::aliases::U256,
6223            );
6224            #[cfg(test)]
6225            #[allow(dead_code, unreachable_patterns)]
6226            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6227                match _t {
6228                    alloy_sol_types::private::AssertTypeEq::<
6229                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6230                    >(_) => {}
6231                }
6232            }
6233            #[automatically_derived]
6234            #[doc(hidden)]
6235            impl ::core::convert::From<calculateStakerDelegationDigestHashCall> for UnderlyingRustTuple<'_> {
6236                fn from(value: calculateStakerDelegationDigestHashCall) -> Self {
6237                    (
6238                        value.staker,
6239                        value._stakerNonce,
6240                        value.operator,
6241                        value.expiry,
6242                    )
6243                }
6244            }
6245            #[automatically_derived]
6246            #[doc(hidden)]
6247            impl ::core::convert::From<UnderlyingRustTuple<'_>> for calculateStakerDelegationDigestHashCall {
6248                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6249                    Self {
6250                        staker: tuple.0,
6251                        _stakerNonce: tuple.1,
6252                        operator: tuple.2,
6253                        expiry: tuple.3,
6254                    }
6255                }
6256            }
6257        }
6258        {
6259            #[doc(hidden)]
6260            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6261            #[doc(hidden)]
6262            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
6263            #[cfg(test)]
6264            #[allow(dead_code, unreachable_patterns)]
6265            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6266                match _t {
6267                    alloy_sol_types::private::AssertTypeEq::<
6268                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6269                    >(_) => {}
6270                }
6271            }
6272            #[automatically_derived]
6273            #[doc(hidden)]
6274            impl ::core::convert::From<calculateStakerDelegationDigestHashReturn> for UnderlyingRustTuple<'_> {
6275                fn from(value: calculateStakerDelegationDigestHashReturn) -> Self {
6276                    (value._0,)
6277                }
6278            }
6279            #[automatically_derived]
6280            #[doc(hidden)]
6281            impl ::core::convert::From<UnderlyingRustTuple<'_>> for calculateStakerDelegationDigestHashReturn {
6282                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6283                    Self { _0: tuple.0 }
6284                }
6285            }
6286        }
6287        #[automatically_derived]
6288        impl alloy_sol_types::SolCall for calculateStakerDelegationDigestHashCall {
6289            type Parameters<'a> = (
6290                alloy::sol_types::sol_data::Address,
6291                alloy::sol_types::sol_data::Uint<256>,
6292                alloy::sol_types::sol_data::Address,
6293                alloy::sol_types::sol_data::Uint<256>,
6294            );
6295            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
6296            type Return = alloy::sol_types::private::FixedBytes<32>;
6297            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6298            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6299            const SIGNATURE: &'static str =
6300                "calculateStakerDelegationDigestHash(address,uint256,address,uint256)";
6301            const SELECTOR: [u8; 4] = [201u8, 75u8, 81u8, 17u8];
6302            #[inline]
6303            fn new<'a>(
6304                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6305            ) -> Self {
6306                tuple.into()
6307            }
6308            #[inline]
6309            fn tokenize(&self) -> Self::Token<'_> {
6310                (
6311                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6312                        &self.staker,
6313                    ),
6314                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
6315                        &self._stakerNonce,
6316                    ),
6317                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6318                        &self.operator,
6319                    ),
6320                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
6321                        &self.expiry,
6322                    ),
6323                )
6324            }
6325            #[inline]
6326            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6327                (
6328                    <alloy::sol_types::sol_data::FixedBytes<
6329                        32,
6330                    > as alloy_sol_types::SolType>::tokenize(ret),
6331                )
6332            }
6333            #[inline]
6334            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6335                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
6336                    |r| {
6337                        let r: calculateStakerDelegationDigestHashReturn = r.into();
6338                        r._0
6339                    },
6340                )
6341            }
6342            #[inline]
6343            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6344                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
6345                    data,
6346                )
6347                .map(|r| {
6348                    let r: calculateStakerDelegationDigestHashReturn = r.into();
6349                    r._0
6350                })
6351            }
6352        }
6353    };
6354    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
6355    /**Function with signature `calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]))` and selector `0x597b36da`.
6356    ```solidity
6357    function calculateWithdrawalRoot(IDelegationManager.Withdrawal memory withdrawal) external pure returns (bytes32);
6358    ```*/
6359    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6360    #[derive(Clone)]
6361    pub struct calculateWithdrawalRootCall {
6362        #[allow(missing_docs)]
6363        pub withdrawal: <IDelegationManager::Withdrawal as alloy::sol_types::SolType>::RustType,
6364    }
6365    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
6366    ///Container type for the return parameters of the [`calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]))`](calculateWithdrawalRootCall) function.
6367    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6368    #[derive(Clone)]
6369    pub struct calculateWithdrawalRootReturn {
6370        #[allow(missing_docs)]
6371        pub _0: alloy::sol_types::private::FixedBytes<32>,
6372    }
6373    #[allow(
6374        non_camel_case_types,
6375        non_snake_case,
6376        clippy::pub_underscore_fields,
6377        clippy::style
6378    )]
6379    const _: () = {
6380        use alloy::sol_types as alloy_sol_types;
6381        {
6382            #[doc(hidden)]
6383            type UnderlyingSolTuple<'a> = (IDelegationManager::Withdrawal,);
6384            #[doc(hidden)]
6385            type UnderlyingRustTuple<'a> =
6386                (<IDelegationManager::Withdrawal as alloy::sol_types::SolType>::RustType,);
6387            #[cfg(test)]
6388            #[allow(dead_code, unreachable_patterns)]
6389            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6390                match _t {
6391                    alloy_sol_types::private::AssertTypeEq::<
6392                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6393                    >(_) => {}
6394                }
6395            }
6396            #[automatically_derived]
6397            #[doc(hidden)]
6398            impl ::core::convert::From<calculateWithdrawalRootCall> for UnderlyingRustTuple<'_> {
6399                fn from(value: calculateWithdrawalRootCall) -> Self {
6400                    (value.withdrawal,)
6401                }
6402            }
6403            #[automatically_derived]
6404            #[doc(hidden)]
6405            impl ::core::convert::From<UnderlyingRustTuple<'_>> for calculateWithdrawalRootCall {
6406                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6407                    Self {
6408                        withdrawal: tuple.0,
6409                    }
6410                }
6411            }
6412        }
6413        {
6414            #[doc(hidden)]
6415            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6416            #[doc(hidden)]
6417            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
6418            #[cfg(test)]
6419            #[allow(dead_code, unreachable_patterns)]
6420            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6421                match _t {
6422                    alloy_sol_types::private::AssertTypeEq::<
6423                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6424                    >(_) => {}
6425                }
6426            }
6427            #[automatically_derived]
6428            #[doc(hidden)]
6429            impl ::core::convert::From<calculateWithdrawalRootReturn> for UnderlyingRustTuple<'_> {
6430                fn from(value: calculateWithdrawalRootReturn) -> Self {
6431                    (value._0,)
6432                }
6433            }
6434            #[automatically_derived]
6435            #[doc(hidden)]
6436            impl ::core::convert::From<UnderlyingRustTuple<'_>> for calculateWithdrawalRootReturn {
6437                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6438                    Self { _0: tuple.0 }
6439                }
6440            }
6441        }
6442        #[automatically_derived]
6443        impl alloy_sol_types::SolCall for calculateWithdrawalRootCall {
6444            type Parameters<'a> = (IDelegationManager::Withdrawal,);
6445            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
6446            type Return = alloy::sol_types::private::FixedBytes<32>;
6447            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6448            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6449            const SIGNATURE: &'static str = "calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]))";
6450            const SELECTOR: [u8; 4] = [89u8, 123u8, 54u8, 218u8];
6451            #[inline]
6452            fn new<'a>(
6453                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6454            ) -> Self {
6455                tuple.into()
6456            }
6457            #[inline]
6458            fn tokenize(&self) -> Self::Token<'_> {
6459                (
6460                    <IDelegationManager::Withdrawal as alloy_sol_types::SolType>::tokenize(
6461                        &self.withdrawal,
6462                    ),
6463                )
6464            }
6465            #[inline]
6466            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6467                (
6468                    <alloy::sol_types::sol_data::FixedBytes<
6469                        32,
6470                    > as alloy_sol_types::SolType>::tokenize(ret),
6471                )
6472            }
6473            #[inline]
6474            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6475                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
6476                    |r| {
6477                        let r: calculateWithdrawalRootReturn = r.into();
6478                        r._0
6479                    },
6480                )
6481            }
6482            #[inline]
6483            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6484                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
6485                    data,
6486                )
6487                .map(|r| {
6488                    let r: calculateWithdrawalRootReturn = r.into();
6489                    r._0
6490                })
6491            }
6492        }
6493    };
6494    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
6495    /**Function with signature `completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]),address[],uint256,bool)` and selector `0x60d7faed`.
6496    ```solidity
6497    function completeQueuedWithdrawal(IDelegationManager.Withdrawal memory withdrawal, address[] memory tokens, uint256 middlewareTimesIndex, bool receiveAsTokens) external;
6498    ```*/
6499    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6500    #[derive(Clone)]
6501    pub struct completeQueuedWithdrawalCall {
6502        #[allow(missing_docs)]
6503        pub withdrawal: <IDelegationManager::Withdrawal as alloy::sol_types::SolType>::RustType,
6504        #[allow(missing_docs)]
6505        pub tokens: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
6506        #[allow(missing_docs)]
6507        pub middlewareTimesIndex: alloy::sol_types::private::primitives::aliases::U256,
6508        #[allow(missing_docs)]
6509        pub receiveAsTokens: bool,
6510    }
6511    ///Container type for the return parameters of the [`completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]),address[],uint256,bool)`](completeQueuedWithdrawalCall) function.
6512    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6513    #[derive(Clone)]
6514    pub struct completeQueuedWithdrawalReturn {}
6515    #[allow(
6516        non_camel_case_types,
6517        non_snake_case,
6518        clippy::pub_underscore_fields,
6519        clippy::style
6520    )]
6521    const _: () = {
6522        use alloy::sol_types as alloy_sol_types;
6523        {
6524            #[doc(hidden)]
6525            type UnderlyingSolTuple<'a> = (
6526                IDelegationManager::Withdrawal,
6527                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
6528                alloy::sol_types::sol_data::Uint<256>,
6529                alloy::sol_types::sol_data::Bool,
6530            );
6531            #[doc(hidden)]
6532            type UnderlyingRustTuple<'a> = (
6533                <IDelegationManager::Withdrawal as alloy::sol_types::SolType>::RustType,
6534                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
6535                alloy::sol_types::private::primitives::aliases::U256,
6536                bool,
6537            );
6538            #[cfg(test)]
6539            #[allow(dead_code, unreachable_patterns)]
6540            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6541                match _t {
6542                    alloy_sol_types::private::AssertTypeEq::<
6543                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6544                    >(_) => {}
6545                }
6546            }
6547            #[automatically_derived]
6548            #[doc(hidden)]
6549            impl ::core::convert::From<completeQueuedWithdrawalCall> for UnderlyingRustTuple<'_> {
6550                fn from(value: completeQueuedWithdrawalCall) -> Self {
6551                    (
6552                        value.withdrawal,
6553                        value.tokens,
6554                        value.middlewareTimesIndex,
6555                        value.receiveAsTokens,
6556                    )
6557                }
6558            }
6559            #[automatically_derived]
6560            #[doc(hidden)]
6561            impl ::core::convert::From<UnderlyingRustTuple<'_>> for completeQueuedWithdrawalCall {
6562                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6563                    Self {
6564                        withdrawal: tuple.0,
6565                        tokens: tuple.1,
6566                        middlewareTimesIndex: tuple.2,
6567                        receiveAsTokens: tuple.3,
6568                    }
6569                }
6570            }
6571        }
6572        {
6573            #[doc(hidden)]
6574            type UnderlyingSolTuple<'a> = ();
6575            #[doc(hidden)]
6576            type UnderlyingRustTuple<'a> = ();
6577            #[cfg(test)]
6578            #[allow(dead_code, unreachable_patterns)]
6579            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6580                match _t {
6581                    alloy_sol_types::private::AssertTypeEq::<
6582                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6583                    >(_) => {}
6584                }
6585            }
6586            #[automatically_derived]
6587            #[doc(hidden)]
6588            impl ::core::convert::From<completeQueuedWithdrawalReturn> for UnderlyingRustTuple<'_> {
6589                fn from(value: completeQueuedWithdrawalReturn) -> Self {
6590                    ()
6591                }
6592            }
6593            #[automatically_derived]
6594            #[doc(hidden)]
6595            impl ::core::convert::From<UnderlyingRustTuple<'_>> for completeQueuedWithdrawalReturn {
6596                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6597                    Self {}
6598                }
6599            }
6600        }
6601        impl completeQueuedWithdrawalReturn {
6602            fn _tokenize(
6603                &self,
6604            ) -> <completeQueuedWithdrawalCall as alloy_sol_types::SolCall>::ReturnToken<'_>
6605            {
6606                ()
6607            }
6608        }
6609        #[automatically_derived]
6610        impl alloy_sol_types::SolCall for completeQueuedWithdrawalCall {
6611            type Parameters<'a> = (
6612                IDelegationManager::Withdrawal,
6613                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
6614                alloy::sol_types::sol_data::Uint<256>,
6615                alloy::sol_types::sol_data::Bool,
6616            );
6617            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
6618            type Return = completeQueuedWithdrawalReturn;
6619            type ReturnTuple<'a> = ();
6620            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6621            const SIGNATURE: &'static str = "completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]),address[],uint256,bool)";
6622            const SELECTOR: [u8; 4] = [96u8, 215u8, 250u8, 237u8];
6623            #[inline]
6624            fn new<'a>(
6625                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6626            ) -> Self {
6627                tuple.into()
6628            }
6629            #[inline]
6630            fn tokenize(&self) -> Self::Token<'_> {
6631                (
6632                    <IDelegationManager::Withdrawal as alloy_sol_types::SolType>::tokenize(
6633                        &self.withdrawal,
6634                    ),
6635                    <alloy::sol_types::sol_data::Array<
6636                        alloy::sol_types::sol_data::Address,
6637                    > as alloy_sol_types::SolType>::tokenize(&self.tokens),
6638                    <alloy::sol_types::sol_data::Uint<
6639                        256,
6640                    > as alloy_sol_types::SolType>::tokenize(&self.middlewareTimesIndex),
6641                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
6642                        &self.receiveAsTokens,
6643                    ),
6644                )
6645            }
6646            #[inline]
6647            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6648                completeQueuedWithdrawalReturn::_tokenize(ret)
6649            }
6650            #[inline]
6651            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6652                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
6653                    .map(Into::into)
6654            }
6655            #[inline]
6656            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6657                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
6658                    data,
6659                )
6660                .map(Into::into)
6661            }
6662        }
6663    };
6664    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
6665    /**Function with signature `completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[],address[][],uint256[],bool[])` and selector `0x33404396`.
6666    ```solidity
6667    function completeQueuedWithdrawals(IDelegationManager.Withdrawal[] memory withdrawals, address[][] memory tokens, uint256[] memory middlewareTimesIndexes, bool[] memory receiveAsTokens) external;
6668    ```*/
6669    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6670    #[derive(Clone)]
6671    pub struct completeQueuedWithdrawalsCall {
6672        #[allow(missing_docs)]
6673        pub withdrawals: alloy::sol_types::private::Vec<
6674            <IDelegationManager::Withdrawal as alloy::sol_types::SolType>::RustType,
6675        >,
6676        #[allow(missing_docs)]
6677        pub tokens: alloy::sol_types::private::Vec<
6678            alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
6679        >,
6680        #[allow(missing_docs)]
6681        pub middlewareTimesIndexes:
6682            alloy::sol_types::private::Vec<alloy::sol_types::private::primitives::aliases::U256>,
6683        #[allow(missing_docs)]
6684        pub receiveAsTokens: alloy::sol_types::private::Vec<bool>,
6685    }
6686    ///Container type for the return parameters of the [`completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[],address[][],uint256[],bool[])`](completeQueuedWithdrawalsCall) function.
6687    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6688    #[derive(Clone)]
6689    pub struct completeQueuedWithdrawalsReturn {}
6690    #[allow(
6691        non_camel_case_types,
6692        non_snake_case,
6693        clippy::pub_underscore_fields,
6694        clippy::style
6695    )]
6696    const _: () = {
6697        use alloy::sol_types as alloy_sol_types;
6698        {
6699            #[doc(hidden)]
6700            type UnderlyingSolTuple<'a> = (
6701                alloy::sol_types::sol_data::Array<IDelegationManager::Withdrawal>,
6702                alloy::sol_types::sol_data::Array<
6703                    alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
6704                >,
6705                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
6706                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Bool>,
6707            );
6708            #[doc(hidden)]
6709            type UnderlyingRustTuple<'a> = (
6710                alloy::sol_types::private::Vec<
6711                    <IDelegationManager::Withdrawal as alloy::sol_types::SolType>::RustType,
6712                >,
6713                alloy::sol_types::private::Vec<
6714                    alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
6715                >,
6716                alloy::sol_types::private::Vec<
6717                    alloy::sol_types::private::primitives::aliases::U256,
6718                >,
6719                alloy::sol_types::private::Vec<bool>,
6720            );
6721            #[cfg(test)]
6722            #[allow(dead_code, unreachable_patterns)]
6723            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6724                match _t {
6725                    alloy_sol_types::private::AssertTypeEq::<
6726                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6727                    >(_) => {}
6728                }
6729            }
6730            #[automatically_derived]
6731            #[doc(hidden)]
6732            impl ::core::convert::From<completeQueuedWithdrawalsCall> for UnderlyingRustTuple<'_> {
6733                fn from(value: completeQueuedWithdrawalsCall) -> Self {
6734                    (
6735                        value.withdrawals,
6736                        value.tokens,
6737                        value.middlewareTimesIndexes,
6738                        value.receiveAsTokens,
6739                    )
6740                }
6741            }
6742            #[automatically_derived]
6743            #[doc(hidden)]
6744            impl ::core::convert::From<UnderlyingRustTuple<'_>> for completeQueuedWithdrawalsCall {
6745                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6746                    Self {
6747                        withdrawals: tuple.0,
6748                        tokens: tuple.1,
6749                        middlewareTimesIndexes: tuple.2,
6750                        receiveAsTokens: tuple.3,
6751                    }
6752                }
6753            }
6754        }
6755        {
6756            #[doc(hidden)]
6757            type UnderlyingSolTuple<'a> = ();
6758            #[doc(hidden)]
6759            type UnderlyingRustTuple<'a> = ();
6760            #[cfg(test)]
6761            #[allow(dead_code, unreachable_patterns)]
6762            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6763                match _t {
6764                    alloy_sol_types::private::AssertTypeEq::<
6765                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6766                    >(_) => {}
6767                }
6768            }
6769            #[automatically_derived]
6770            #[doc(hidden)]
6771            impl ::core::convert::From<completeQueuedWithdrawalsReturn> for UnderlyingRustTuple<'_> {
6772                fn from(value: completeQueuedWithdrawalsReturn) -> Self {
6773                    ()
6774                }
6775            }
6776            #[automatically_derived]
6777            #[doc(hidden)]
6778            impl ::core::convert::From<UnderlyingRustTuple<'_>> for completeQueuedWithdrawalsReturn {
6779                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6780                    Self {}
6781                }
6782            }
6783        }
6784        impl completeQueuedWithdrawalsReturn {
6785            fn _tokenize(
6786                &self,
6787            ) -> <completeQueuedWithdrawalsCall as alloy_sol_types::SolCall>::ReturnToken<'_>
6788            {
6789                ()
6790            }
6791        }
6792        #[automatically_derived]
6793        impl alloy_sol_types::SolCall for completeQueuedWithdrawalsCall {
6794            type Parameters<'a> = (
6795                alloy::sol_types::sol_data::Array<IDelegationManager::Withdrawal>,
6796                alloy::sol_types::sol_data::Array<
6797                    alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
6798                >,
6799                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
6800                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Bool>,
6801            );
6802            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
6803            type Return = completeQueuedWithdrawalsReturn;
6804            type ReturnTuple<'a> = ();
6805            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6806            const SIGNATURE: &'static str = "completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[],address[][],uint256[],bool[])";
6807            const SELECTOR: [u8; 4] = [51u8, 64u8, 67u8, 150u8];
6808            #[inline]
6809            fn new<'a>(
6810                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6811            ) -> Self {
6812                tuple.into()
6813            }
6814            #[inline]
6815            fn tokenize(&self) -> Self::Token<'_> {
6816                (
6817                    <alloy::sol_types::sol_data::Array<
6818                        IDelegationManager::Withdrawal,
6819                    > as alloy_sol_types::SolType>::tokenize(&self.withdrawals),
6820                    <alloy::sol_types::sol_data::Array<
6821                        alloy::sol_types::sol_data::Array<
6822                            alloy::sol_types::sol_data::Address,
6823                        >,
6824                    > as alloy_sol_types::SolType>::tokenize(&self.tokens),
6825                    <alloy::sol_types::sol_data::Array<
6826                        alloy::sol_types::sol_data::Uint<256>,
6827                    > as alloy_sol_types::SolType>::tokenize(
6828                        &self.middlewareTimesIndexes,
6829                    ),
6830                    <alloy::sol_types::sol_data::Array<
6831                        alloy::sol_types::sol_data::Bool,
6832                    > as alloy_sol_types::SolType>::tokenize(&self.receiveAsTokens),
6833                )
6834            }
6835            #[inline]
6836            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6837                completeQueuedWithdrawalsReturn::_tokenize(ret)
6838            }
6839            #[inline]
6840            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6841                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
6842                    .map(Into::into)
6843            }
6844            #[inline]
6845            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6846                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
6847                    data,
6848                )
6849                .map(Into::into)
6850            }
6851        }
6852    };
6853    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
6854    /**Function with signature `cumulativeWithdrawalsQueued(address)` and selector `0xa1788484`.
6855    ```solidity
6856    function cumulativeWithdrawalsQueued(address) external view returns (uint256);
6857    ```*/
6858    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6859    #[derive(Clone)]
6860    pub struct cumulativeWithdrawalsQueuedCall(pub alloy::sol_types::private::Address);
6861    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
6862    ///Container type for the return parameters of the [`cumulativeWithdrawalsQueued(address)`](cumulativeWithdrawalsQueuedCall) function.
6863    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6864    #[derive(Clone)]
6865    pub struct cumulativeWithdrawalsQueuedReturn {
6866        #[allow(missing_docs)]
6867        pub _0: alloy::sol_types::private::primitives::aliases::U256,
6868    }
6869    #[allow(
6870        non_camel_case_types,
6871        non_snake_case,
6872        clippy::pub_underscore_fields,
6873        clippy::style
6874    )]
6875    const _: () = {
6876        use alloy::sol_types as alloy_sol_types;
6877        {
6878            #[doc(hidden)]
6879            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6880            #[doc(hidden)]
6881            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6882            #[cfg(test)]
6883            #[allow(dead_code, unreachable_patterns)]
6884            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6885                match _t {
6886                    alloy_sol_types::private::AssertTypeEq::<
6887                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6888                    >(_) => {}
6889                }
6890            }
6891            #[automatically_derived]
6892            #[doc(hidden)]
6893            impl ::core::convert::From<cumulativeWithdrawalsQueuedCall> for UnderlyingRustTuple<'_> {
6894                fn from(value: cumulativeWithdrawalsQueuedCall) -> Self {
6895                    (value.0,)
6896                }
6897            }
6898            #[automatically_derived]
6899            #[doc(hidden)]
6900            impl ::core::convert::From<UnderlyingRustTuple<'_>> for cumulativeWithdrawalsQueuedCall {
6901                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6902                    Self(tuple.0)
6903                }
6904            }
6905        }
6906        {
6907            #[doc(hidden)]
6908            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6909            #[doc(hidden)]
6910            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
6911            #[cfg(test)]
6912            #[allow(dead_code, unreachable_patterns)]
6913            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6914                match _t {
6915                    alloy_sol_types::private::AssertTypeEq::<
6916                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6917                    >(_) => {}
6918                }
6919            }
6920            #[automatically_derived]
6921            #[doc(hidden)]
6922            impl ::core::convert::From<cumulativeWithdrawalsQueuedReturn> for UnderlyingRustTuple<'_> {
6923                fn from(value: cumulativeWithdrawalsQueuedReturn) -> Self {
6924                    (value._0,)
6925                }
6926            }
6927            #[automatically_derived]
6928            #[doc(hidden)]
6929            impl ::core::convert::From<UnderlyingRustTuple<'_>> for cumulativeWithdrawalsQueuedReturn {
6930                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6931                    Self { _0: tuple.0 }
6932                }
6933            }
6934        }
6935        #[automatically_derived]
6936        impl alloy_sol_types::SolCall for cumulativeWithdrawalsQueuedCall {
6937            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
6938            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
6939            type Return = alloy::sol_types::private::primitives::aliases::U256;
6940            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6941            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6942            const SIGNATURE: &'static str = "cumulativeWithdrawalsQueued(address)";
6943            const SELECTOR: [u8; 4] = [161u8, 120u8, 132u8, 132u8];
6944            #[inline]
6945            fn new<'a>(
6946                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6947            ) -> Self {
6948                tuple.into()
6949            }
6950            #[inline]
6951            fn tokenize(&self) -> Self::Token<'_> {
6952                (
6953                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6954                        &self.0,
6955                    ),
6956                )
6957            }
6958            #[inline]
6959            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6960                (
6961                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
6962                        ret,
6963                    ),
6964                )
6965            }
6966            #[inline]
6967            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6968                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
6969                    |r| {
6970                        let r: cumulativeWithdrawalsQueuedReturn = r.into();
6971                        r._0
6972                    },
6973                )
6974            }
6975            #[inline]
6976            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6977                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
6978                    data,
6979                )
6980                .map(|r| {
6981                    let r: cumulativeWithdrawalsQueuedReturn = r.into();
6982                    r._0
6983                })
6984            }
6985        }
6986    };
6987    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
6988    /**Function with signature `decreaseDelegatedShares(address,address,uint256)` and selector `0x132d4967`.
6989    ```solidity
6990    function decreaseDelegatedShares(address staker, address strategy, uint256 shares) external;
6991    ```*/
6992    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6993    #[derive(Clone)]
6994    pub struct decreaseDelegatedSharesCall {
6995        #[allow(missing_docs)]
6996        pub staker: alloy::sol_types::private::Address,
6997        #[allow(missing_docs)]
6998        pub strategy: alloy::sol_types::private::Address,
6999        #[allow(missing_docs)]
7000        pub shares: alloy::sol_types::private::primitives::aliases::U256,
7001    }
7002    ///Container type for the return parameters of the [`decreaseDelegatedShares(address,address,uint256)`](decreaseDelegatedSharesCall) function.
7003    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7004    #[derive(Clone)]
7005    pub struct decreaseDelegatedSharesReturn {}
7006    #[allow(
7007        non_camel_case_types,
7008        non_snake_case,
7009        clippy::pub_underscore_fields,
7010        clippy::style
7011    )]
7012    const _: () = {
7013        use alloy::sol_types as alloy_sol_types;
7014        {
7015            #[doc(hidden)]
7016            type UnderlyingSolTuple<'a> = (
7017                alloy::sol_types::sol_data::Address,
7018                alloy::sol_types::sol_data::Address,
7019                alloy::sol_types::sol_data::Uint<256>,
7020            );
7021            #[doc(hidden)]
7022            type UnderlyingRustTuple<'a> = (
7023                alloy::sol_types::private::Address,
7024                alloy::sol_types::private::Address,
7025                alloy::sol_types::private::primitives::aliases::U256,
7026            );
7027            #[cfg(test)]
7028            #[allow(dead_code, unreachable_patterns)]
7029            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7030                match _t {
7031                    alloy_sol_types::private::AssertTypeEq::<
7032                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7033                    >(_) => {}
7034                }
7035            }
7036            #[automatically_derived]
7037            #[doc(hidden)]
7038            impl ::core::convert::From<decreaseDelegatedSharesCall> for UnderlyingRustTuple<'_> {
7039                fn from(value: decreaseDelegatedSharesCall) -> Self {
7040                    (value.staker, value.strategy, value.shares)
7041                }
7042            }
7043            #[automatically_derived]
7044            #[doc(hidden)]
7045            impl ::core::convert::From<UnderlyingRustTuple<'_>> for decreaseDelegatedSharesCall {
7046                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7047                    Self {
7048                        staker: tuple.0,
7049                        strategy: tuple.1,
7050                        shares: tuple.2,
7051                    }
7052                }
7053            }
7054        }
7055        {
7056            #[doc(hidden)]
7057            type UnderlyingSolTuple<'a> = ();
7058            #[doc(hidden)]
7059            type UnderlyingRustTuple<'a> = ();
7060            #[cfg(test)]
7061            #[allow(dead_code, unreachable_patterns)]
7062            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7063                match _t {
7064                    alloy_sol_types::private::AssertTypeEq::<
7065                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7066                    >(_) => {}
7067                }
7068            }
7069            #[automatically_derived]
7070            #[doc(hidden)]
7071            impl ::core::convert::From<decreaseDelegatedSharesReturn> for UnderlyingRustTuple<'_> {
7072                fn from(value: decreaseDelegatedSharesReturn) -> Self {
7073                    ()
7074                }
7075            }
7076            #[automatically_derived]
7077            #[doc(hidden)]
7078            impl ::core::convert::From<UnderlyingRustTuple<'_>> for decreaseDelegatedSharesReturn {
7079                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7080                    Self {}
7081                }
7082            }
7083        }
7084        impl decreaseDelegatedSharesReturn {
7085            fn _tokenize(
7086                &self,
7087            ) -> <decreaseDelegatedSharesCall as alloy_sol_types::SolCall>::ReturnToken<'_>
7088            {
7089                ()
7090            }
7091        }
7092        #[automatically_derived]
7093        impl alloy_sol_types::SolCall for decreaseDelegatedSharesCall {
7094            type Parameters<'a> = (
7095                alloy::sol_types::sol_data::Address,
7096                alloy::sol_types::sol_data::Address,
7097                alloy::sol_types::sol_data::Uint<256>,
7098            );
7099            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7100            type Return = decreaseDelegatedSharesReturn;
7101            type ReturnTuple<'a> = ();
7102            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7103            const SIGNATURE: &'static str = "decreaseDelegatedShares(address,address,uint256)";
7104            const SELECTOR: [u8; 4] = [19u8, 45u8, 73u8, 103u8];
7105            #[inline]
7106            fn new<'a>(
7107                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7108            ) -> Self {
7109                tuple.into()
7110            }
7111            #[inline]
7112            fn tokenize(&self) -> Self::Token<'_> {
7113                (
7114                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7115                        &self.staker,
7116                    ),
7117                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7118                        &self.strategy,
7119                    ),
7120                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
7121                        &self.shares,
7122                    ),
7123                )
7124            }
7125            #[inline]
7126            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7127                decreaseDelegatedSharesReturn::_tokenize(ret)
7128            }
7129            #[inline]
7130            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7131                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
7132                    .map(Into::into)
7133            }
7134            #[inline]
7135            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7136                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
7137                    data,
7138                )
7139                .map(Into::into)
7140            }
7141        }
7142    };
7143    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
7144    /**Function with signature `delegateTo(address,(bytes,uint256),bytes32)` and selector `0xeea9064b`.
7145    ```solidity
7146    function delegateTo(address operator, ISignatureUtils.SignatureWithExpiry memory approverSignatureAndExpiry, bytes32 approverSalt) external;
7147    ```*/
7148    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7149    #[derive(Clone)]
7150    pub struct delegateToCall {
7151        #[allow(missing_docs)]
7152        pub operator: alloy::sol_types::private::Address,
7153        #[allow(missing_docs)]
7154        pub approverSignatureAndExpiry:
7155            <ISignatureUtils::SignatureWithExpiry as alloy::sol_types::SolType>::RustType,
7156        #[allow(missing_docs)]
7157        pub approverSalt: alloy::sol_types::private::FixedBytes<32>,
7158    }
7159    ///Container type for the return parameters of the [`delegateTo(address,(bytes,uint256),bytes32)`](delegateToCall) function.
7160    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7161    #[derive(Clone)]
7162    pub struct delegateToReturn {}
7163    #[allow(
7164        non_camel_case_types,
7165        non_snake_case,
7166        clippy::pub_underscore_fields,
7167        clippy::style
7168    )]
7169    const _: () = {
7170        use alloy::sol_types as alloy_sol_types;
7171        {
7172            #[doc(hidden)]
7173            type UnderlyingSolTuple<'a> = (
7174                alloy::sol_types::sol_data::Address,
7175                ISignatureUtils::SignatureWithExpiry,
7176                alloy::sol_types::sol_data::FixedBytes<32>,
7177            );
7178            #[doc(hidden)]
7179            type UnderlyingRustTuple<'a> = (
7180                alloy::sol_types::private::Address,
7181                <ISignatureUtils::SignatureWithExpiry as alloy::sol_types::SolType>::RustType,
7182                alloy::sol_types::private::FixedBytes<32>,
7183            );
7184            #[cfg(test)]
7185            #[allow(dead_code, unreachable_patterns)]
7186            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7187                match _t {
7188                    alloy_sol_types::private::AssertTypeEq::<
7189                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7190                    >(_) => {}
7191                }
7192            }
7193            #[automatically_derived]
7194            #[doc(hidden)]
7195            impl ::core::convert::From<delegateToCall> for UnderlyingRustTuple<'_> {
7196                fn from(value: delegateToCall) -> Self {
7197                    (
7198                        value.operator,
7199                        value.approverSignatureAndExpiry,
7200                        value.approverSalt,
7201                    )
7202                }
7203            }
7204            #[automatically_derived]
7205            #[doc(hidden)]
7206            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegateToCall {
7207                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7208                    Self {
7209                        operator: tuple.0,
7210                        approverSignatureAndExpiry: tuple.1,
7211                        approverSalt: tuple.2,
7212                    }
7213                }
7214            }
7215        }
7216        {
7217            #[doc(hidden)]
7218            type UnderlyingSolTuple<'a> = ();
7219            #[doc(hidden)]
7220            type UnderlyingRustTuple<'a> = ();
7221            #[cfg(test)]
7222            #[allow(dead_code, unreachable_patterns)]
7223            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7224                match _t {
7225                    alloy_sol_types::private::AssertTypeEq::<
7226                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7227                    >(_) => {}
7228                }
7229            }
7230            #[automatically_derived]
7231            #[doc(hidden)]
7232            impl ::core::convert::From<delegateToReturn> for UnderlyingRustTuple<'_> {
7233                fn from(value: delegateToReturn) -> Self {
7234                    ()
7235                }
7236            }
7237            #[automatically_derived]
7238            #[doc(hidden)]
7239            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegateToReturn {
7240                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7241                    Self {}
7242                }
7243            }
7244        }
7245        impl delegateToReturn {
7246            fn _tokenize(&self) -> <delegateToCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
7247                ()
7248            }
7249        }
7250        #[automatically_derived]
7251        impl alloy_sol_types::SolCall for delegateToCall {
7252            type Parameters<'a> = (
7253                alloy::sol_types::sol_data::Address,
7254                ISignatureUtils::SignatureWithExpiry,
7255                alloy::sol_types::sol_data::FixedBytes<32>,
7256            );
7257            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7258            type Return = delegateToReturn;
7259            type ReturnTuple<'a> = ();
7260            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7261            const SIGNATURE: &'static str = "delegateTo(address,(bytes,uint256),bytes32)";
7262            const SELECTOR: [u8; 4] = [238u8, 169u8, 6u8, 75u8];
7263            #[inline]
7264            fn new<'a>(
7265                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7266            ) -> Self {
7267                tuple.into()
7268            }
7269            #[inline]
7270            fn tokenize(&self) -> Self::Token<'_> {
7271                (
7272                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7273                        &self.operator,
7274                    ),
7275                    <ISignatureUtils::SignatureWithExpiry as alloy_sol_types::SolType>::tokenize(
7276                        &self.approverSignatureAndExpiry,
7277                    ),
7278                    <alloy::sol_types::sol_data::FixedBytes<
7279                        32,
7280                    > as alloy_sol_types::SolType>::tokenize(&self.approverSalt),
7281                )
7282            }
7283            #[inline]
7284            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7285                delegateToReturn::_tokenize(ret)
7286            }
7287            #[inline]
7288            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7289                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
7290                    .map(Into::into)
7291            }
7292            #[inline]
7293            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7294                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
7295                    data,
7296                )
7297                .map(Into::into)
7298            }
7299        }
7300    };
7301    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
7302    /**Function with signature `delegateToBySignature(address,address,(bytes,uint256),(bytes,uint256),bytes32)` and selector `0x7f548071`.
7303    ```solidity
7304    function delegateToBySignature(address staker, address operator, ISignatureUtils.SignatureWithExpiry memory stakerSignatureAndExpiry, ISignatureUtils.SignatureWithExpiry memory approverSignatureAndExpiry, bytes32 approverSalt) external;
7305    ```*/
7306    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7307    #[derive(Clone)]
7308    pub struct delegateToBySignatureCall {
7309        #[allow(missing_docs)]
7310        pub staker: alloy::sol_types::private::Address,
7311        #[allow(missing_docs)]
7312        pub operator: alloy::sol_types::private::Address,
7313        #[allow(missing_docs)]
7314        pub stakerSignatureAndExpiry:
7315            <ISignatureUtils::SignatureWithExpiry as alloy::sol_types::SolType>::RustType,
7316        #[allow(missing_docs)]
7317        pub approverSignatureAndExpiry:
7318            <ISignatureUtils::SignatureWithExpiry as alloy::sol_types::SolType>::RustType,
7319        #[allow(missing_docs)]
7320        pub approverSalt: alloy::sol_types::private::FixedBytes<32>,
7321    }
7322    ///Container type for the return parameters of the [`delegateToBySignature(address,address,(bytes,uint256),(bytes,uint256),bytes32)`](delegateToBySignatureCall) function.
7323    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7324    #[derive(Clone)]
7325    pub struct delegateToBySignatureReturn {}
7326    #[allow(
7327        non_camel_case_types,
7328        non_snake_case,
7329        clippy::pub_underscore_fields,
7330        clippy::style
7331    )]
7332    const _: () = {
7333        use alloy::sol_types as alloy_sol_types;
7334        {
7335            #[doc(hidden)]
7336            type UnderlyingSolTuple<'a> = (
7337                alloy::sol_types::sol_data::Address,
7338                alloy::sol_types::sol_data::Address,
7339                ISignatureUtils::SignatureWithExpiry,
7340                ISignatureUtils::SignatureWithExpiry,
7341                alloy::sol_types::sol_data::FixedBytes<32>,
7342            );
7343            #[doc(hidden)]
7344            type UnderlyingRustTuple<'a> = (
7345                alloy::sol_types::private::Address,
7346                alloy::sol_types::private::Address,
7347                <ISignatureUtils::SignatureWithExpiry as alloy::sol_types::SolType>::RustType,
7348                <ISignatureUtils::SignatureWithExpiry as alloy::sol_types::SolType>::RustType,
7349                alloy::sol_types::private::FixedBytes<32>,
7350            );
7351            #[cfg(test)]
7352            #[allow(dead_code, unreachable_patterns)]
7353            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7354                match _t {
7355                    alloy_sol_types::private::AssertTypeEq::<
7356                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7357                    >(_) => {}
7358                }
7359            }
7360            #[automatically_derived]
7361            #[doc(hidden)]
7362            impl ::core::convert::From<delegateToBySignatureCall> for UnderlyingRustTuple<'_> {
7363                fn from(value: delegateToBySignatureCall) -> Self {
7364                    (
7365                        value.staker,
7366                        value.operator,
7367                        value.stakerSignatureAndExpiry,
7368                        value.approverSignatureAndExpiry,
7369                        value.approverSalt,
7370                    )
7371                }
7372            }
7373            #[automatically_derived]
7374            #[doc(hidden)]
7375            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegateToBySignatureCall {
7376                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7377                    Self {
7378                        staker: tuple.0,
7379                        operator: tuple.1,
7380                        stakerSignatureAndExpiry: tuple.2,
7381                        approverSignatureAndExpiry: tuple.3,
7382                        approverSalt: tuple.4,
7383                    }
7384                }
7385            }
7386        }
7387        {
7388            #[doc(hidden)]
7389            type UnderlyingSolTuple<'a> = ();
7390            #[doc(hidden)]
7391            type UnderlyingRustTuple<'a> = ();
7392            #[cfg(test)]
7393            #[allow(dead_code, unreachable_patterns)]
7394            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7395                match _t {
7396                    alloy_sol_types::private::AssertTypeEq::<
7397                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7398                    >(_) => {}
7399                }
7400            }
7401            #[automatically_derived]
7402            #[doc(hidden)]
7403            impl ::core::convert::From<delegateToBySignatureReturn> for UnderlyingRustTuple<'_> {
7404                fn from(value: delegateToBySignatureReturn) -> Self {
7405                    ()
7406                }
7407            }
7408            #[automatically_derived]
7409            #[doc(hidden)]
7410            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegateToBySignatureReturn {
7411                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7412                    Self {}
7413                }
7414            }
7415        }
7416        impl delegateToBySignatureReturn {
7417            fn _tokenize(
7418                &self,
7419            ) -> <delegateToBySignatureCall as alloy_sol_types::SolCall>::ReturnToken<'_>
7420            {
7421                ()
7422            }
7423        }
7424        #[automatically_derived]
7425        impl alloy_sol_types::SolCall for delegateToBySignatureCall {
7426            type Parameters<'a> = (
7427                alloy::sol_types::sol_data::Address,
7428                alloy::sol_types::sol_data::Address,
7429                ISignatureUtils::SignatureWithExpiry,
7430                ISignatureUtils::SignatureWithExpiry,
7431                alloy::sol_types::sol_data::FixedBytes<32>,
7432            );
7433            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7434            type Return = delegateToBySignatureReturn;
7435            type ReturnTuple<'a> = ();
7436            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7437            const SIGNATURE: &'static str =
7438                "delegateToBySignature(address,address,(bytes,uint256),(bytes,uint256),bytes32)";
7439            const SELECTOR: [u8; 4] = [127u8, 84u8, 128u8, 113u8];
7440            #[inline]
7441            fn new<'a>(
7442                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7443            ) -> Self {
7444                tuple.into()
7445            }
7446            #[inline]
7447            fn tokenize(&self) -> Self::Token<'_> {
7448                (
7449                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7450                        &self.staker,
7451                    ),
7452                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7453                        &self.operator,
7454                    ),
7455                    <ISignatureUtils::SignatureWithExpiry as alloy_sol_types::SolType>::tokenize(
7456                        &self.stakerSignatureAndExpiry,
7457                    ),
7458                    <ISignatureUtils::SignatureWithExpiry as alloy_sol_types::SolType>::tokenize(
7459                        &self.approverSignatureAndExpiry,
7460                    ),
7461                    <alloy::sol_types::sol_data::FixedBytes<
7462                        32,
7463                    > as alloy_sol_types::SolType>::tokenize(&self.approverSalt),
7464                )
7465            }
7466            #[inline]
7467            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7468                delegateToBySignatureReturn::_tokenize(ret)
7469            }
7470            #[inline]
7471            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7472                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
7473                    .map(Into::into)
7474            }
7475            #[inline]
7476            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7477                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
7478                    data,
7479                )
7480                .map(Into::into)
7481            }
7482        }
7483    };
7484    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
7485    /**Function with signature `delegatedTo(address)` and selector `0x65da1264`.
7486    ```solidity
7487    function delegatedTo(address) external view returns (address);
7488    ```*/
7489    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7490    #[derive(Clone)]
7491    pub struct delegatedToCall(pub alloy::sol_types::private::Address);
7492    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
7493    ///Container type for the return parameters of the [`delegatedTo(address)`](delegatedToCall) function.
7494    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7495    #[derive(Clone)]
7496    pub struct delegatedToReturn {
7497        #[allow(missing_docs)]
7498        pub _0: alloy::sol_types::private::Address,
7499    }
7500    #[allow(
7501        non_camel_case_types,
7502        non_snake_case,
7503        clippy::pub_underscore_fields,
7504        clippy::style
7505    )]
7506    const _: () = {
7507        use alloy::sol_types as alloy_sol_types;
7508        {
7509            #[doc(hidden)]
7510            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7511            #[doc(hidden)]
7512            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7513            #[cfg(test)]
7514            #[allow(dead_code, unreachable_patterns)]
7515            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7516                match _t {
7517                    alloy_sol_types::private::AssertTypeEq::<
7518                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7519                    >(_) => {}
7520                }
7521            }
7522            #[automatically_derived]
7523            #[doc(hidden)]
7524            impl ::core::convert::From<delegatedToCall> for UnderlyingRustTuple<'_> {
7525                fn from(value: delegatedToCall) -> Self {
7526                    (value.0,)
7527                }
7528            }
7529            #[automatically_derived]
7530            #[doc(hidden)]
7531            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegatedToCall {
7532                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7533                    Self(tuple.0)
7534                }
7535            }
7536        }
7537        {
7538            #[doc(hidden)]
7539            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7540            #[doc(hidden)]
7541            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7542            #[cfg(test)]
7543            #[allow(dead_code, unreachable_patterns)]
7544            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7545                match _t {
7546                    alloy_sol_types::private::AssertTypeEq::<
7547                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7548                    >(_) => {}
7549                }
7550            }
7551            #[automatically_derived]
7552            #[doc(hidden)]
7553            impl ::core::convert::From<delegatedToReturn> for UnderlyingRustTuple<'_> {
7554                fn from(value: delegatedToReturn) -> Self {
7555                    (value._0,)
7556                }
7557            }
7558            #[automatically_derived]
7559            #[doc(hidden)]
7560            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegatedToReturn {
7561                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7562                    Self { _0: tuple.0 }
7563                }
7564            }
7565        }
7566        #[automatically_derived]
7567        impl alloy_sol_types::SolCall for delegatedToCall {
7568            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
7569            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7570            type Return = alloy::sol_types::private::Address;
7571            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
7572            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7573            const SIGNATURE: &'static str = "delegatedTo(address)";
7574            const SELECTOR: [u8; 4] = [101u8, 218u8, 18u8, 100u8];
7575            #[inline]
7576            fn new<'a>(
7577                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7578            ) -> Self {
7579                tuple.into()
7580            }
7581            #[inline]
7582            fn tokenize(&self) -> Self::Token<'_> {
7583                (
7584                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7585                        &self.0,
7586                    ),
7587                )
7588            }
7589            #[inline]
7590            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7591                (
7592                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7593                        ret,
7594                    ),
7595                )
7596            }
7597            #[inline]
7598            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7599                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
7600                    |r| {
7601                        let r: delegatedToReturn = r.into();
7602                        r._0
7603                    },
7604                )
7605            }
7606            #[inline]
7607            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7608                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
7609                    data,
7610                )
7611                .map(|r| {
7612                    let r: delegatedToReturn = r.into();
7613                    r._0
7614                })
7615            }
7616        }
7617    };
7618    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
7619    /**Function with signature `delegationApprover(address)` and selector `0x3cdeb5e0`.
7620    ```solidity
7621    function delegationApprover(address operator) external view returns (address);
7622    ```*/
7623    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7624    #[derive(Clone)]
7625    pub struct delegationApproverCall {
7626        #[allow(missing_docs)]
7627        pub operator: alloy::sol_types::private::Address,
7628    }
7629    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
7630    ///Container type for the return parameters of the [`delegationApprover(address)`](delegationApproverCall) function.
7631    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7632    #[derive(Clone)]
7633    pub struct delegationApproverReturn {
7634        #[allow(missing_docs)]
7635        pub _0: alloy::sol_types::private::Address,
7636    }
7637    #[allow(
7638        non_camel_case_types,
7639        non_snake_case,
7640        clippy::pub_underscore_fields,
7641        clippy::style
7642    )]
7643    const _: () = {
7644        use alloy::sol_types as alloy_sol_types;
7645        {
7646            #[doc(hidden)]
7647            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7648            #[doc(hidden)]
7649            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7650            #[cfg(test)]
7651            #[allow(dead_code, unreachable_patterns)]
7652            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7653                match _t {
7654                    alloy_sol_types::private::AssertTypeEq::<
7655                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7656                    >(_) => {}
7657                }
7658            }
7659            #[automatically_derived]
7660            #[doc(hidden)]
7661            impl ::core::convert::From<delegationApproverCall> for UnderlyingRustTuple<'_> {
7662                fn from(value: delegationApproverCall) -> Self {
7663                    (value.operator,)
7664                }
7665            }
7666            #[automatically_derived]
7667            #[doc(hidden)]
7668            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegationApproverCall {
7669                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7670                    Self { operator: tuple.0 }
7671                }
7672            }
7673        }
7674        {
7675            #[doc(hidden)]
7676            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7677            #[doc(hidden)]
7678            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7679            #[cfg(test)]
7680            #[allow(dead_code, unreachable_patterns)]
7681            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7682                match _t {
7683                    alloy_sol_types::private::AssertTypeEq::<
7684                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7685                    >(_) => {}
7686                }
7687            }
7688            #[automatically_derived]
7689            #[doc(hidden)]
7690            impl ::core::convert::From<delegationApproverReturn> for UnderlyingRustTuple<'_> {
7691                fn from(value: delegationApproverReturn) -> Self {
7692                    (value._0,)
7693                }
7694            }
7695            #[automatically_derived]
7696            #[doc(hidden)]
7697            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegationApproverReturn {
7698                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7699                    Self { _0: tuple.0 }
7700                }
7701            }
7702        }
7703        #[automatically_derived]
7704        impl alloy_sol_types::SolCall for delegationApproverCall {
7705            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
7706            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7707            type Return = alloy::sol_types::private::Address;
7708            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
7709            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7710            const SIGNATURE: &'static str = "delegationApprover(address)";
7711            const SELECTOR: [u8; 4] = [60u8, 222u8, 181u8, 224u8];
7712            #[inline]
7713            fn new<'a>(
7714                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7715            ) -> Self {
7716                tuple.into()
7717            }
7718            #[inline]
7719            fn tokenize(&self) -> Self::Token<'_> {
7720                (
7721                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7722                        &self.operator,
7723                    ),
7724                )
7725            }
7726            #[inline]
7727            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7728                (
7729                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7730                        ret,
7731                    ),
7732                )
7733            }
7734            #[inline]
7735            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7736                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
7737                    |r| {
7738                        let r: delegationApproverReturn = r.into();
7739                        r._0
7740                    },
7741                )
7742            }
7743            #[inline]
7744            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7745                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
7746                    data,
7747                )
7748                .map(|r| {
7749                    let r: delegationApproverReturn = r.into();
7750                    r._0
7751                })
7752            }
7753        }
7754    };
7755    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
7756    /**Function with signature `delegationApproverSaltIsSpent(address,bytes32)` and selector `0xbb45fef2`.
7757    ```solidity
7758    function delegationApproverSaltIsSpent(address, bytes32) external view returns (bool);
7759    ```*/
7760    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7761    #[derive(Clone)]
7762    pub struct delegationApproverSaltIsSpentCall {
7763        #[allow(missing_docs)]
7764        pub _0: alloy::sol_types::private::Address,
7765        #[allow(missing_docs)]
7766        pub _1: alloy::sol_types::private::FixedBytes<32>,
7767    }
7768    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
7769    ///Container type for the return parameters of the [`delegationApproverSaltIsSpent(address,bytes32)`](delegationApproverSaltIsSpentCall) function.
7770    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7771    #[derive(Clone)]
7772    pub struct delegationApproverSaltIsSpentReturn {
7773        #[allow(missing_docs)]
7774        pub _0: bool,
7775    }
7776    #[allow(
7777        non_camel_case_types,
7778        non_snake_case,
7779        clippy::pub_underscore_fields,
7780        clippy::style
7781    )]
7782    const _: () = {
7783        use alloy::sol_types as alloy_sol_types;
7784        {
7785            #[doc(hidden)]
7786            type UnderlyingSolTuple<'a> = (
7787                alloy::sol_types::sol_data::Address,
7788                alloy::sol_types::sol_data::FixedBytes<32>,
7789            );
7790            #[doc(hidden)]
7791            type UnderlyingRustTuple<'a> = (
7792                alloy::sol_types::private::Address,
7793                alloy::sol_types::private::FixedBytes<32>,
7794            );
7795            #[cfg(test)]
7796            #[allow(dead_code, unreachable_patterns)]
7797            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7798                match _t {
7799                    alloy_sol_types::private::AssertTypeEq::<
7800                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7801                    >(_) => {}
7802                }
7803            }
7804            #[automatically_derived]
7805            #[doc(hidden)]
7806            impl ::core::convert::From<delegationApproverSaltIsSpentCall> for UnderlyingRustTuple<'_> {
7807                fn from(value: delegationApproverSaltIsSpentCall) -> Self {
7808                    (value._0, value._1)
7809                }
7810            }
7811            #[automatically_derived]
7812            #[doc(hidden)]
7813            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegationApproverSaltIsSpentCall {
7814                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7815                    Self {
7816                        _0: tuple.0,
7817                        _1: tuple.1,
7818                    }
7819                }
7820            }
7821        }
7822        {
7823            #[doc(hidden)]
7824            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
7825            #[doc(hidden)]
7826            type UnderlyingRustTuple<'a> = (bool,);
7827            #[cfg(test)]
7828            #[allow(dead_code, unreachable_patterns)]
7829            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7830                match _t {
7831                    alloy_sol_types::private::AssertTypeEq::<
7832                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7833                    >(_) => {}
7834                }
7835            }
7836            #[automatically_derived]
7837            #[doc(hidden)]
7838            impl ::core::convert::From<delegationApproverSaltIsSpentReturn> for UnderlyingRustTuple<'_> {
7839                fn from(value: delegationApproverSaltIsSpentReturn) -> Self {
7840                    (value._0,)
7841                }
7842            }
7843            #[automatically_derived]
7844            #[doc(hidden)]
7845            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegationApproverSaltIsSpentReturn {
7846                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7847                    Self { _0: tuple.0 }
7848                }
7849            }
7850        }
7851        #[automatically_derived]
7852        impl alloy_sol_types::SolCall for delegationApproverSaltIsSpentCall {
7853            type Parameters<'a> = (
7854                alloy::sol_types::sol_data::Address,
7855                alloy::sol_types::sol_data::FixedBytes<32>,
7856            );
7857            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7858            type Return = bool;
7859            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
7860            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7861            const SIGNATURE: &'static str = "delegationApproverSaltIsSpent(address,bytes32)";
7862            const SELECTOR: [u8; 4] = [187u8, 69u8, 254u8, 242u8];
7863            #[inline]
7864            fn new<'a>(
7865                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7866            ) -> Self {
7867                tuple.into()
7868            }
7869            #[inline]
7870            fn tokenize(&self) -> Self::Token<'_> {
7871                (
7872                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7873                        &self._0,
7874                    ),
7875                    <alloy::sol_types::sol_data::FixedBytes<
7876                        32,
7877                    > as alloy_sol_types::SolType>::tokenize(&self._1),
7878                )
7879            }
7880            #[inline]
7881            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7882                (<alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(ret),)
7883            }
7884            #[inline]
7885            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7886                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
7887                    |r| {
7888                        let r: delegationApproverSaltIsSpentReturn = r.into();
7889                        r._0
7890                    },
7891                )
7892            }
7893            #[inline]
7894            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7895                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
7896                    data,
7897                )
7898                .map(|r| {
7899                    let r: delegationApproverSaltIsSpentReturn = r.into();
7900                    r._0
7901                })
7902            }
7903        }
7904    };
7905    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
7906    /**Function with signature `domainSeparator()` and selector `0xf698da25`.
7907    ```solidity
7908    function domainSeparator() external view returns (bytes32);
7909    ```*/
7910    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7911    #[derive(Clone)]
7912    pub struct domainSeparatorCall;
7913    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
7914    ///Container type for the return parameters of the [`domainSeparator()`](domainSeparatorCall) function.
7915    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7916    #[derive(Clone)]
7917    pub struct domainSeparatorReturn {
7918        #[allow(missing_docs)]
7919        pub _0: alloy::sol_types::private::FixedBytes<32>,
7920    }
7921    #[allow(
7922        non_camel_case_types,
7923        non_snake_case,
7924        clippy::pub_underscore_fields,
7925        clippy::style
7926    )]
7927    const _: () = {
7928        use alloy::sol_types as alloy_sol_types;
7929        {
7930            #[doc(hidden)]
7931            type UnderlyingSolTuple<'a> = ();
7932            #[doc(hidden)]
7933            type UnderlyingRustTuple<'a> = ();
7934            #[cfg(test)]
7935            #[allow(dead_code, unreachable_patterns)]
7936            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7937                match _t {
7938                    alloy_sol_types::private::AssertTypeEq::<
7939                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7940                    >(_) => {}
7941                }
7942            }
7943            #[automatically_derived]
7944            #[doc(hidden)]
7945            impl ::core::convert::From<domainSeparatorCall> for UnderlyingRustTuple<'_> {
7946                fn from(value: domainSeparatorCall) -> Self {
7947                    ()
7948                }
7949            }
7950            #[automatically_derived]
7951            #[doc(hidden)]
7952            impl ::core::convert::From<UnderlyingRustTuple<'_>> for domainSeparatorCall {
7953                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7954                    Self
7955                }
7956            }
7957        }
7958        {
7959            #[doc(hidden)]
7960            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
7961            #[doc(hidden)]
7962            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
7963            #[cfg(test)]
7964            #[allow(dead_code, unreachable_patterns)]
7965            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7966                match _t {
7967                    alloy_sol_types::private::AssertTypeEq::<
7968                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7969                    >(_) => {}
7970                }
7971            }
7972            #[automatically_derived]
7973            #[doc(hidden)]
7974            impl ::core::convert::From<domainSeparatorReturn> for UnderlyingRustTuple<'_> {
7975                fn from(value: domainSeparatorReturn) -> Self {
7976                    (value._0,)
7977                }
7978            }
7979            #[automatically_derived]
7980            #[doc(hidden)]
7981            impl ::core::convert::From<UnderlyingRustTuple<'_>> for domainSeparatorReturn {
7982                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7983                    Self { _0: tuple.0 }
7984                }
7985            }
7986        }
7987        #[automatically_derived]
7988        impl alloy_sol_types::SolCall for domainSeparatorCall {
7989            type Parameters<'a> = ();
7990            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7991            type Return = alloy::sol_types::private::FixedBytes<32>;
7992            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
7993            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7994            const SIGNATURE: &'static str = "domainSeparator()";
7995            const SELECTOR: [u8; 4] = [246u8, 152u8, 218u8, 37u8];
7996            #[inline]
7997            fn new<'a>(
7998                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7999            ) -> Self {
8000                tuple.into()
8001            }
8002            #[inline]
8003            fn tokenize(&self) -> Self::Token<'_> {
8004                ()
8005            }
8006            #[inline]
8007            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8008                (
8009                    <alloy::sol_types::sol_data::FixedBytes<
8010                        32,
8011                    > as alloy_sol_types::SolType>::tokenize(ret),
8012                )
8013            }
8014            #[inline]
8015            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8016                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
8017                    |r| {
8018                        let r: domainSeparatorReturn = r.into();
8019                        r._0
8020                    },
8021                )
8022            }
8023            #[inline]
8024            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8025                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
8026                    data,
8027                )
8028                .map(|r| {
8029                    let r: domainSeparatorReturn = r.into();
8030                    r._0
8031                })
8032            }
8033        }
8034    };
8035    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
8036    /**Function with signature `eigenPodManager()` and selector `0x4665bcda`.
8037    ```solidity
8038    function eigenPodManager() external view returns (address);
8039    ```*/
8040    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8041    #[derive(Clone)]
8042    pub struct eigenPodManagerCall;
8043    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
8044    ///Container type for the return parameters of the [`eigenPodManager()`](eigenPodManagerCall) function.
8045    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8046    #[derive(Clone)]
8047    pub struct eigenPodManagerReturn {
8048        #[allow(missing_docs)]
8049        pub _0: alloy::sol_types::private::Address,
8050    }
8051    #[allow(
8052        non_camel_case_types,
8053        non_snake_case,
8054        clippy::pub_underscore_fields,
8055        clippy::style
8056    )]
8057    const _: () = {
8058        use alloy::sol_types as alloy_sol_types;
8059        {
8060            #[doc(hidden)]
8061            type UnderlyingSolTuple<'a> = ();
8062            #[doc(hidden)]
8063            type UnderlyingRustTuple<'a> = ();
8064            #[cfg(test)]
8065            #[allow(dead_code, unreachable_patterns)]
8066            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8067                match _t {
8068                    alloy_sol_types::private::AssertTypeEq::<
8069                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8070                    >(_) => {}
8071                }
8072            }
8073            #[automatically_derived]
8074            #[doc(hidden)]
8075            impl ::core::convert::From<eigenPodManagerCall> for UnderlyingRustTuple<'_> {
8076                fn from(value: eigenPodManagerCall) -> Self {
8077                    ()
8078                }
8079            }
8080            #[automatically_derived]
8081            #[doc(hidden)]
8082            impl ::core::convert::From<UnderlyingRustTuple<'_>> for eigenPodManagerCall {
8083                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8084                    Self
8085                }
8086            }
8087        }
8088        {
8089            #[doc(hidden)]
8090            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
8091            #[doc(hidden)]
8092            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
8093            #[cfg(test)]
8094            #[allow(dead_code, unreachable_patterns)]
8095            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8096                match _t {
8097                    alloy_sol_types::private::AssertTypeEq::<
8098                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8099                    >(_) => {}
8100                }
8101            }
8102            #[automatically_derived]
8103            #[doc(hidden)]
8104            impl ::core::convert::From<eigenPodManagerReturn> for UnderlyingRustTuple<'_> {
8105                fn from(value: eigenPodManagerReturn) -> Self {
8106                    (value._0,)
8107                }
8108            }
8109            #[automatically_derived]
8110            #[doc(hidden)]
8111            impl ::core::convert::From<UnderlyingRustTuple<'_>> for eigenPodManagerReturn {
8112                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8113                    Self { _0: tuple.0 }
8114                }
8115            }
8116        }
8117        #[automatically_derived]
8118        impl alloy_sol_types::SolCall for eigenPodManagerCall {
8119            type Parameters<'a> = ();
8120            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8121            type Return = alloy::sol_types::private::Address;
8122            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
8123            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8124            const SIGNATURE: &'static str = "eigenPodManager()";
8125            const SELECTOR: [u8; 4] = [70u8, 101u8, 188u8, 218u8];
8126            #[inline]
8127            fn new<'a>(
8128                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8129            ) -> Self {
8130                tuple.into()
8131            }
8132            #[inline]
8133            fn tokenize(&self) -> Self::Token<'_> {
8134                ()
8135            }
8136            #[inline]
8137            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8138                (
8139                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8140                        ret,
8141                    ),
8142                )
8143            }
8144            #[inline]
8145            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8146                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
8147                    |r| {
8148                        let r: eigenPodManagerReturn = r.into();
8149                        r._0
8150                    },
8151                )
8152            }
8153            #[inline]
8154            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8155                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
8156                    data,
8157                )
8158                .map(|r| {
8159                    let r: eigenPodManagerReturn = r.into();
8160                    r._0
8161                })
8162            }
8163        }
8164    };
8165    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
8166    /**Function with signature `getDelegatableShares(address)` and selector `0xcf80873e`.
8167    ```solidity
8168    function getDelegatableShares(address staker) external view returns (address[] memory, uint256[] memory);
8169    ```*/
8170    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8171    #[derive(Clone)]
8172    pub struct getDelegatableSharesCall {
8173        #[allow(missing_docs)]
8174        pub staker: alloy::sol_types::private::Address,
8175    }
8176    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
8177    ///Container type for the return parameters of the [`getDelegatableShares(address)`](getDelegatableSharesCall) function.
8178    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8179    #[derive(Clone)]
8180    pub struct getDelegatableSharesReturn {
8181        #[allow(missing_docs)]
8182        pub _0: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
8183        #[allow(missing_docs)]
8184        pub _1:
8185            alloy::sol_types::private::Vec<alloy::sol_types::private::primitives::aliases::U256>,
8186    }
8187    #[allow(
8188        non_camel_case_types,
8189        non_snake_case,
8190        clippy::pub_underscore_fields,
8191        clippy::style
8192    )]
8193    const _: () = {
8194        use alloy::sol_types as alloy_sol_types;
8195        {
8196            #[doc(hidden)]
8197            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
8198            #[doc(hidden)]
8199            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
8200            #[cfg(test)]
8201            #[allow(dead_code, unreachable_patterns)]
8202            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8203                match _t {
8204                    alloy_sol_types::private::AssertTypeEq::<
8205                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8206                    >(_) => {}
8207                }
8208            }
8209            #[automatically_derived]
8210            #[doc(hidden)]
8211            impl ::core::convert::From<getDelegatableSharesCall> for UnderlyingRustTuple<'_> {
8212                fn from(value: getDelegatableSharesCall) -> Self {
8213                    (value.staker,)
8214                }
8215            }
8216            #[automatically_derived]
8217            #[doc(hidden)]
8218            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getDelegatableSharesCall {
8219                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8220                    Self { staker: tuple.0 }
8221                }
8222            }
8223        }
8224        {
8225            #[doc(hidden)]
8226            type UnderlyingSolTuple<'a> = (
8227                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
8228                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
8229            );
8230            #[doc(hidden)]
8231            type UnderlyingRustTuple<'a> = (
8232                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
8233                alloy::sol_types::private::Vec<
8234                    alloy::sol_types::private::primitives::aliases::U256,
8235                >,
8236            );
8237            #[cfg(test)]
8238            #[allow(dead_code, unreachable_patterns)]
8239            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8240                match _t {
8241                    alloy_sol_types::private::AssertTypeEq::<
8242                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8243                    >(_) => {}
8244                }
8245            }
8246            #[automatically_derived]
8247            #[doc(hidden)]
8248            impl ::core::convert::From<getDelegatableSharesReturn> for UnderlyingRustTuple<'_> {
8249                fn from(value: getDelegatableSharesReturn) -> Self {
8250                    (value._0, value._1)
8251                }
8252            }
8253            #[automatically_derived]
8254            #[doc(hidden)]
8255            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getDelegatableSharesReturn {
8256                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8257                    Self {
8258                        _0: tuple.0,
8259                        _1: tuple.1,
8260                    }
8261                }
8262            }
8263        }
8264        impl getDelegatableSharesReturn {
8265            fn _tokenize(
8266                &self,
8267            ) -> <getDelegatableSharesCall as alloy_sol_types::SolCall>::ReturnToken<'_>
8268            {
8269                (
8270                    <alloy::sol_types::sol_data::Array<
8271                        alloy::sol_types::sol_data::Address,
8272                    > as alloy_sol_types::SolType>::tokenize(&self._0),
8273                    <alloy::sol_types::sol_data::Array<
8274                        alloy::sol_types::sol_data::Uint<256>,
8275                    > as alloy_sol_types::SolType>::tokenize(&self._1),
8276                )
8277            }
8278        }
8279        #[automatically_derived]
8280        impl alloy_sol_types::SolCall for getDelegatableSharesCall {
8281            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
8282            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8283            type Return = getDelegatableSharesReturn;
8284            type ReturnTuple<'a> = (
8285                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
8286                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
8287            );
8288            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8289            const SIGNATURE: &'static str = "getDelegatableShares(address)";
8290            const SELECTOR: [u8; 4] = [207u8, 128u8, 135u8, 62u8];
8291            #[inline]
8292            fn new<'a>(
8293                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8294            ) -> Self {
8295                tuple.into()
8296            }
8297            #[inline]
8298            fn tokenize(&self) -> Self::Token<'_> {
8299                (
8300                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8301                        &self.staker,
8302                    ),
8303                )
8304            }
8305            #[inline]
8306            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8307                getDelegatableSharesReturn::_tokenize(ret)
8308            }
8309            #[inline]
8310            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8311                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
8312                    .map(Into::into)
8313            }
8314            #[inline]
8315            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8316                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
8317                    data,
8318                )
8319                .map(Into::into)
8320            }
8321        }
8322    };
8323    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
8324    /**Function with signature `getOperatorShares(address,address[])` and selector `0x90041347`.
8325    ```solidity
8326    function getOperatorShares(address operator, address[] memory strategies) external view returns (uint256[] memory);
8327    ```*/
8328    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8329    #[derive(Clone)]
8330    pub struct getOperatorSharesCall {
8331        #[allow(missing_docs)]
8332        pub operator: alloy::sol_types::private::Address,
8333        #[allow(missing_docs)]
8334        pub strategies: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
8335    }
8336    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
8337    ///Container type for the return parameters of the [`getOperatorShares(address,address[])`](getOperatorSharesCall) function.
8338    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8339    #[derive(Clone)]
8340    pub struct getOperatorSharesReturn {
8341        #[allow(missing_docs)]
8342        pub _0:
8343            alloy::sol_types::private::Vec<alloy::sol_types::private::primitives::aliases::U256>,
8344    }
8345    #[allow(
8346        non_camel_case_types,
8347        non_snake_case,
8348        clippy::pub_underscore_fields,
8349        clippy::style
8350    )]
8351    const _: () = {
8352        use alloy::sol_types as alloy_sol_types;
8353        {
8354            #[doc(hidden)]
8355            type UnderlyingSolTuple<'a> = (
8356                alloy::sol_types::sol_data::Address,
8357                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
8358            );
8359            #[doc(hidden)]
8360            type UnderlyingRustTuple<'a> = (
8361                alloy::sol_types::private::Address,
8362                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
8363            );
8364            #[cfg(test)]
8365            #[allow(dead_code, unreachable_patterns)]
8366            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8367                match _t {
8368                    alloy_sol_types::private::AssertTypeEq::<
8369                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8370                    >(_) => {}
8371                }
8372            }
8373            #[automatically_derived]
8374            #[doc(hidden)]
8375            impl ::core::convert::From<getOperatorSharesCall> for UnderlyingRustTuple<'_> {
8376                fn from(value: getOperatorSharesCall) -> Self {
8377                    (value.operator, value.strategies)
8378                }
8379            }
8380            #[automatically_derived]
8381            #[doc(hidden)]
8382            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getOperatorSharesCall {
8383                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8384                    Self {
8385                        operator: tuple.0,
8386                        strategies: tuple.1,
8387                    }
8388                }
8389            }
8390        }
8391        {
8392            #[doc(hidden)]
8393            type UnderlyingSolTuple<'a> =
8394                (alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,);
8395            #[doc(hidden)]
8396            type UnderlyingRustTuple<'a> = (
8397                alloy::sol_types::private::Vec<
8398                    alloy::sol_types::private::primitives::aliases::U256,
8399                >,
8400            );
8401            #[cfg(test)]
8402            #[allow(dead_code, unreachable_patterns)]
8403            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8404                match _t {
8405                    alloy_sol_types::private::AssertTypeEq::<
8406                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8407                    >(_) => {}
8408                }
8409            }
8410            #[automatically_derived]
8411            #[doc(hidden)]
8412            impl ::core::convert::From<getOperatorSharesReturn> for UnderlyingRustTuple<'_> {
8413                fn from(value: getOperatorSharesReturn) -> Self {
8414                    (value._0,)
8415                }
8416            }
8417            #[automatically_derived]
8418            #[doc(hidden)]
8419            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getOperatorSharesReturn {
8420                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8421                    Self { _0: tuple.0 }
8422                }
8423            }
8424        }
8425        #[automatically_derived]
8426        impl alloy_sol_types::SolCall for getOperatorSharesCall {
8427            type Parameters<'a> = (
8428                alloy::sol_types::sol_data::Address,
8429                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
8430            );
8431            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8432            type Return = alloy::sol_types::private::Vec<
8433                alloy::sol_types::private::primitives::aliases::U256,
8434            >;
8435            type ReturnTuple<'a> =
8436                (alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,);
8437            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8438            const SIGNATURE: &'static str = "getOperatorShares(address,address[])";
8439            const SELECTOR: [u8; 4] = [144u8, 4u8, 19u8, 71u8];
8440            #[inline]
8441            fn new<'a>(
8442                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8443            ) -> Self {
8444                tuple.into()
8445            }
8446            #[inline]
8447            fn tokenize(&self) -> Self::Token<'_> {
8448                (
8449                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8450                        &self.operator,
8451                    ),
8452                    <alloy::sol_types::sol_data::Array<
8453                        alloy::sol_types::sol_data::Address,
8454                    > as alloy_sol_types::SolType>::tokenize(&self.strategies),
8455                )
8456            }
8457            #[inline]
8458            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8459                (<alloy::sol_types::sol_data::Array<
8460                    alloy::sol_types::sol_data::Uint<256>,
8461                > as alloy_sol_types::SolType>::tokenize(ret),)
8462            }
8463            #[inline]
8464            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8465                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
8466                    |r| {
8467                        let r: getOperatorSharesReturn = r.into();
8468                        r._0
8469                    },
8470                )
8471            }
8472            #[inline]
8473            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8474                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
8475                    data,
8476                )
8477                .map(|r| {
8478                    let r: getOperatorSharesReturn = r.into();
8479                    r._0
8480                })
8481            }
8482        }
8483    };
8484    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
8485    /**Function with signature `getWithdrawalDelay(address[])` and selector `0x0449ca39`.
8486    ```solidity
8487    function getWithdrawalDelay(address[] memory strategies) external view returns (uint256);
8488    ```*/
8489    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8490    #[derive(Clone)]
8491    pub struct getWithdrawalDelayCall {
8492        #[allow(missing_docs)]
8493        pub strategies: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
8494    }
8495    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
8496    ///Container type for the return parameters of the [`getWithdrawalDelay(address[])`](getWithdrawalDelayCall) function.
8497    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8498    #[derive(Clone)]
8499    pub struct getWithdrawalDelayReturn {
8500        #[allow(missing_docs)]
8501        pub _0: alloy::sol_types::private::primitives::aliases::U256,
8502    }
8503    #[allow(
8504        non_camel_case_types,
8505        non_snake_case,
8506        clippy::pub_underscore_fields,
8507        clippy::style
8508    )]
8509    const _: () = {
8510        use alloy::sol_types as alloy_sol_types;
8511        {
8512            #[doc(hidden)]
8513            type UnderlyingSolTuple<'a> =
8514                (alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,);
8515            #[doc(hidden)]
8516            type UnderlyingRustTuple<'a> =
8517                (alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,);
8518            #[cfg(test)]
8519            #[allow(dead_code, unreachable_patterns)]
8520            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8521                match _t {
8522                    alloy_sol_types::private::AssertTypeEq::<
8523                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8524                    >(_) => {}
8525                }
8526            }
8527            #[automatically_derived]
8528            #[doc(hidden)]
8529            impl ::core::convert::From<getWithdrawalDelayCall> for UnderlyingRustTuple<'_> {
8530                fn from(value: getWithdrawalDelayCall) -> Self {
8531                    (value.strategies,)
8532                }
8533            }
8534            #[automatically_derived]
8535            #[doc(hidden)]
8536            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getWithdrawalDelayCall {
8537                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8538                    Self {
8539                        strategies: tuple.0,
8540                    }
8541                }
8542            }
8543        }
8544        {
8545            #[doc(hidden)]
8546            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8547            #[doc(hidden)]
8548            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
8549            #[cfg(test)]
8550            #[allow(dead_code, unreachable_patterns)]
8551            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8552                match _t {
8553                    alloy_sol_types::private::AssertTypeEq::<
8554                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8555                    >(_) => {}
8556                }
8557            }
8558            #[automatically_derived]
8559            #[doc(hidden)]
8560            impl ::core::convert::From<getWithdrawalDelayReturn> for UnderlyingRustTuple<'_> {
8561                fn from(value: getWithdrawalDelayReturn) -> Self {
8562                    (value._0,)
8563                }
8564            }
8565            #[automatically_derived]
8566            #[doc(hidden)]
8567            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getWithdrawalDelayReturn {
8568                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8569                    Self { _0: tuple.0 }
8570                }
8571            }
8572        }
8573        #[automatically_derived]
8574        impl alloy_sol_types::SolCall for getWithdrawalDelayCall {
8575            type Parameters<'a> =
8576                (alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,);
8577            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8578            type Return = alloy::sol_types::private::primitives::aliases::U256;
8579            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8580            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8581            const SIGNATURE: &'static str = "getWithdrawalDelay(address[])";
8582            const SELECTOR: [u8; 4] = [4u8, 73u8, 202u8, 57u8];
8583            #[inline]
8584            fn new<'a>(
8585                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8586            ) -> Self {
8587                tuple.into()
8588            }
8589            #[inline]
8590            fn tokenize(&self) -> Self::Token<'_> {
8591                (<alloy::sol_types::sol_data::Array<
8592                    alloy::sol_types::sol_data::Address,
8593                > as alloy_sol_types::SolType>::tokenize(
8594                    &self.strategies
8595                ),)
8596            }
8597            #[inline]
8598            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8599                (
8600                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
8601                        ret,
8602                    ),
8603                )
8604            }
8605            #[inline]
8606            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8607                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
8608                    |r| {
8609                        let r: getWithdrawalDelayReturn = r.into();
8610                        r._0
8611                    },
8612                )
8613            }
8614            #[inline]
8615            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8616                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
8617                    data,
8618                )
8619                .map(|r| {
8620                    let r: getWithdrawalDelayReturn = r.into();
8621                    r._0
8622                })
8623            }
8624        }
8625    };
8626    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
8627    /**Function with signature `increaseDelegatedShares(address,address,uint256)` and selector `0x28a573ae`.
8628    ```solidity
8629    function increaseDelegatedShares(address staker, address strategy, uint256 shares) external;
8630    ```*/
8631    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8632    #[derive(Clone)]
8633    pub struct increaseDelegatedSharesCall {
8634        #[allow(missing_docs)]
8635        pub staker: alloy::sol_types::private::Address,
8636        #[allow(missing_docs)]
8637        pub strategy: alloy::sol_types::private::Address,
8638        #[allow(missing_docs)]
8639        pub shares: alloy::sol_types::private::primitives::aliases::U256,
8640    }
8641    ///Container type for the return parameters of the [`increaseDelegatedShares(address,address,uint256)`](increaseDelegatedSharesCall) function.
8642    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8643    #[derive(Clone)]
8644    pub struct increaseDelegatedSharesReturn {}
8645    #[allow(
8646        non_camel_case_types,
8647        non_snake_case,
8648        clippy::pub_underscore_fields,
8649        clippy::style
8650    )]
8651    const _: () = {
8652        use alloy::sol_types as alloy_sol_types;
8653        {
8654            #[doc(hidden)]
8655            type UnderlyingSolTuple<'a> = (
8656                alloy::sol_types::sol_data::Address,
8657                alloy::sol_types::sol_data::Address,
8658                alloy::sol_types::sol_data::Uint<256>,
8659            );
8660            #[doc(hidden)]
8661            type UnderlyingRustTuple<'a> = (
8662                alloy::sol_types::private::Address,
8663                alloy::sol_types::private::Address,
8664                alloy::sol_types::private::primitives::aliases::U256,
8665            );
8666            #[cfg(test)]
8667            #[allow(dead_code, unreachable_patterns)]
8668            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8669                match _t {
8670                    alloy_sol_types::private::AssertTypeEq::<
8671                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8672                    >(_) => {}
8673                }
8674            }
8675            #[automatically_derived]
8676            #[doc(hidden)]
8677            impl ::core::convert::From<increaseDelegatedSharesCall> for UnderlyingRustTuple<'_> {
8678                fn from(value: increaseDelegatedSharesCall) -> Self {
8679                    (value.staker, value.strategy, value.shares)
8680                }
8681            }
8682            #[automatically_derived]
8683            #[doc(hidden)]
8684            impl ::core::convert::From<UnderlyingRustTuple<'_>> for increaseDelegatedSharesCall {
8685                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8686                    Self {
8687                        staker: tuple.0,
8688                        strategy: tuple.1,
8689                        shares: tuple.2,
8690                    }
8691                }
8692            }
8693        }
8694        {
8695            #[doc(hidden)]
8696            type UnderlyingSolTuple<'a> = ();
8697            #[doc(hidden)]
8698            type UnderlyingRustTuple<'a> = ();
8699            #[cfg(test)]
8700            #[allow(dead_code, unreachable_patterns)]
8701            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
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<increaseDelegatedSharesReturn> for UnderlyingRustTuple<'_> {
8711                fn from(value: increaseDelegatedSharesReturn) -> Self {
8712                    ()
8713                }
8714            }
8715            #[automatically_derived]
8716            #[doc(hidden)]
8717            impl ::core::convert::From<UnderlyingRustTuple<'_>> for increaseDelegatedSharesReturn {
8718                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8719                    Self {}
8720                }
8721            }
8722        }
8723        impl increaseDelegatedSharesReturn {
8724            fn _tokenize(
8725                &self,
8726            ) -> <increaseDelegatedSharesCall as alloy_sol_types::SolCall>::ReturnToken<'_>
8727            {
8728                ()
8729            }
8730        }
8731        #[automatically_derived]
8732        impl alloy_sol_types::SolCall for increaseDelegatedSharesCall {
8733            type Parameters<'a> = (
8734                alloy::sol_types::sol_data::Address,
8735                alloy::sol_types::sol_data::Address,
8736                alloy::sol_types::sol_data::Uint<256>,
8737            );
8738            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8739            type Return = increaseDelegatedSharesReturn;
8740            type ReturnTuple<'a> = ();
8741            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8742            const SIGNATURE: &'static str = "increaseDelegatedShares(address,address,uint256)";
8743            const SELECTOR: [u8; 4] = [40u8, 165u8, 115u8, 174u8];
8744            #[inline]
8745            fn new<'a>(
8746                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8747            ) -> Self {
8748                tuple.into()
8749            }
8750            #[inline]
8751            fn tokenize(&self) -> Self::Token<'_> {
8752                (
8753                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8754                        &self.staker,
8755                    ),
8756                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8757                        &self.strategy,
8758                    ),
8759                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
8760                        &self.shares,
8761                    ),
8762                )
8763            }
8764            #[inline]
8765            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8766                increaseDelegatedSharesReturn::_tokenize(ret)
8767            }
8768            #[inline]
8769            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8770                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
8771                    .map(Into::into)
8772            }
8773            #[inline]
8774            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8775                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
8776                    data,
8777                )
8778                .map(Into::into)
8779            }
8780        }
8781    };
8782    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
8783    /**Function with signature `initialize(address,address,uint256,uint256,address[],uint256[])` and selector `0x22bf40e4`.
8784    ```solidity
8785    function initialize(address initialOwner, address _pauserRegistry, uint256 initialPausedStatus, uint256 _minWithdrawalDelayBlocks, address[] memory _strategies, uint256[] memory _withdrawalDelayBlocks) external;
8786    ```*/
8787    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8788    #[derive(Clone)]
8789    pub struct initializeCall {
8790        #[allow(missing_docs)]
8791        pub initialOwner: alloy::sol_types::private::Address,
8792        #[allow(missing_docs)]
8793        pub _pauserRegistry: alloy::sol_types::private::Address,
8794        #[allow(missing_docs)]
8795        pub initialPausedStatus: alloy::sol_types::private::primitives::aliases::U256,
8796        #[allow(missing_docs)]
8797        pub _minWithdrawalDelayBlocks: alloy::sol_types::private::primitives::aliases::U256,
8798        #[allow(missing_docs)]
8799        pub _strategies: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
8800        #[allow(missing_docs)]
8801        pub _withdrawalDelayBlocks:
8802            alloy::sol_types::private::Vec<alloy::sol_types::private::primitives::aliases::U256>,
8803    }
8804    ///Container type for the return parameters of the [`initialize(address,address,uint256,uint256,address[],uint256[])`](initializeCall) function.
8805    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8806    #[derive(Clone)]
8807    pub struct initializeReturn {}
8808    #[allow(
8809        non_camel_case_types,
8810        non_snake_case,
8811        clippy::pub_underscore_fields,
8812        clippy::style
8813    )]
8814    const _: () = {
8815        use alloy::sol_types as alloy_sol_types;
8816        {
8817            #[doc(hidden)]
8818            type UnderlyingSolTuple<'a> = (
8819                alloy::sol_types::sol_data::Address,
8820                alloy::sol_types::sol_data::Address,
8821                alloy::sol_types::sol_data::Uint<256>,
8822                alloy::sol_types::sol_data::Uint<256>,
8823                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
8824                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
8825            );
8826            #[doc(hidden)]
8827            type UnderlyingRustTuple<'a> = (
8828                alloy::sol_types::private::Address,
8829                alloy::sol_types::private::Address,
8830                alloy::sol_types::private::primitives::aliases::U256,
8831                alloy::sol_types::private::primitives::aliases::U256,
8832                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
8833                alloy::sol_types::private::Vec<
8834                    alloy::sol_types::private::primitives::aliases::U256,
8835                >,
8836            );
8837            #[cfg(test)]
8838            #[allow(dead_code, unreachable_patterns)]
8839            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8840                match _t {
8841                    alloy_sol_types::private::AssertTypeEq::<
8842                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8843                    >(_) => {}
8844                }
8845            }
8846            #[automatically_derived]
8847            #[doc(hidden)]
8848            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
8849                fn from(value: initializeCall) -> Self {
8850                    (
8851                        value.initialOwner,
8852                        value._pauserRegistry,
8853                        value.initialPausedStatus,
8854                        value._minWithdrawalDelayBlocks,
8855                        value._strategies,
8856                        value._withdrawalDelayBlocks,
8857                    )
8858                }
8859            }
8860            #[automatically_derived]
8861            #[doc(hidden)]
8862            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
8863                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8864                    Self {
8865                        initialOwner: tuple.0,
8866                        _pauserRegistry: tuple.1,
8867                        initialPausedStatus: tuple.2,
8868                        _minWithdrawalDelayBlocks: tuple.3,
8869                        _strategies: tuple.4,
8870                        _withdrawalDelayBlocks: tuple.5,
8871                    }
8872                }
8873            }
8874        }
8875        {
8876            #[doc(hidden)]
8877            type UnderlyingSolTuple<'a> = ();
8878            #[doc(hidden)]
8879            type UnderlyingRustTuple<'a> = ();
8880            #[cfg(test)]
8881            #[allow(dead_code, unreachable_patterns)]
8882            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8883                match _t {
8884                    alloy_sol_types::private::AssertTypeEq::<
8885                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8886                    >(_) => {}
8887                }
8888            }
8889            #[automatically_derived]
8890            #[doc(hidden)]
8891            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
8892                fn from(value: initializeReturn) -> Self {
8893                    ()
8894                }
8895            }
8896            #[automatically_derived]
8897            #[doc(hidden)]
8898            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
8899                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8900                    Self {}
8901                }
8902            }
8903        }
8904        impl initializeReturn {
8905            fn _tokenize(&self) -> <initializeCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8906                ()
8907            }
8908        }
8909        #[automatically_derived]
8910        impl alloy_sol_types::SolCall for initializeCall {
8911            type Parameters<'a> = (
8912                alloy::sol_types::sol_data::Address,
8913                alloy::sol_types::sol_data::Address,
8914                alloy::sol_types::sol_data::Uint<256>,
8915                alloy::sol_types::sol_data::Uint<256>,
8916                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
8917                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
8918            );
8919            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8920            type Return = initializeReturn;
8921            type ReturnTuple<'a> = ();
8922            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8923            const SIGNATURE: &'static str =
8924                "initialize(address,address,uint256,uint256,address[],uint256[])";
8925            const SELECTOR: [u8; 4] = [34u8, 191u8, 64u8, 228u8];
8926            #[inline]
8927            fn new<'a>(
8928                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8929            ) -> Self {
8930                tuple.into()
8931            }
8932            #[inline]
8933            fn tokenize(&self) -> Self::Token<'_> {
8934                (
8935                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8936                        &self.initialOwner,
8937                    ),
8938                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8939                        &self._pauserRegistry,
8940                    ),
8941                    <alloy::sol_types::sol_data::Uint<
8942                        256,
8943                    > as alloy_sol_types::SolType>::tokenize(&self.initialPausedStatus),
8944                    <alloy::sol_types::sol_data::Uint<
8945                        256,
8946                    > as alloy_sol_types::SolType>::tokenize(
8947                        &self._minWithdrawalDelayBlocks,
8948                    ),
8949                    <alloy::sol_types::sol_data::Array<
8950                        alloy::sol_types::sol_data::Address,
8951                    > as alloy_sol_types::SolType>::tokenize(&self._strategies),
8952                    <alloy::sol_types::sol_data::Array<
8953                        alloy::sol_types::sol_data::Uint<256>,
8954                    > as alloy_sol_types::SolType>::tokenize(
8955                        &self._withdrawalDelayBlocks,
8956                    ),
8957                )
8958            }
8959            #[inline]
8960            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8961                initializeReturn::_tokenize(ret)
8962            }
8963            #[inline]
8964            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8965                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
8966                    .map(Into::into)
8967            }
8968            #[inline]
8969            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8970                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
8971                    data,
8972                )
8973                .map(Into::into)
8974            }
8975        }
8976    };
8977    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
8978    /**Function with signature `isDelegated(address)` and selector `0x3e28391d`.
8979    ```solidity
8980    function isDelegated(address staker) external view returns (bool);
8981    ```*/
8982    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8983    #[derive(Clone)]
8984    pub struct isDelegatedCall {
8985        #[allow(missing_docs)]
8986        pub staker: alloy::sol_types::private::Address,
8987    }
8988    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
8989    ///Container type for the return parameters of the [`isDelegated(address)`](isDelegatedCall) function.
8990    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8991    #[derive(Clone)]
8992    pub struct isDelegatedReturn {
8993        #[allow(missing_docs)]
8994        pub _0: bool,
8995    }
8996    #[allow(
8997        non_camel_case_types,
8998        non_snake_case,
8999        clippy::pub_underscore_fields,
9000        clippy::style
9001    )]
9002    const _: () = {
9003        use alloy::sol_types as alloy_sol_types;
9004        {
9005            #[doc(hidden)]
9006            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
9007            #[doc(hidden)]
9008            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
9009            #[cfg(test)]
9010            #[allow(dead_code, unreachable_patterns)]
9011            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9012                match _t {
9013                    alloy_sol_types::private::AssertTypeEq::<
9014                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9015                    >(_) => {}
9016                }
9017            }
9018            #[automatically_derived]
9019            #[doc(hidden)]
9020            impl ::core::convert::From<isDelegatedCall> for UnderlyingRustTuple<'_> {
9021                fn from(value: isDelegatedCall) -> Self {
9022                    (value.staker,)
9023                }
9024            }
9025            #[automatically_derived]
9026            #[doc(hidden)]
9027            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isDelegatedCall {
9028                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9029                    Self { staker: tuple.0 }
9030                }
9031            }
9032        }
9033        {
9034            #[doc(hidden)]
9035            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
9036            #[doc(hidden)]
9037            type UnderlyingRustTuple<'a> = (bool,);
9038            #[cfg(test)]
9039            #[allow(dead_code, unreachable_patterns)]
9040            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9041                match _t {
9042                    alloy_sol_types::private::AssertTypeEq::<
9043                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9044                    >(_) => {}
9045                }
9046            }
9047            #[automatically_derived]
9048            #[doc(hidden)]
9049            impl ::core::convert::From<isDelegatedReturn> for UnderlyingRustTuple<'_> {
9050                fn from(value: isDelegatedReturn) -> Self {
9051                    (value._0,)
9052                }
9053            }
9054            #[automatically_derived]
9055            #[doc(hidden)]
9056            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isDelegatedReturn {
9057                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9058                    Self { _0: tuple.0 }
9059                }
9060            }
9061        }
9062        #[automatically_derived]
9063        impl alloy_sol_types::SolCall for isDelegatedCall {
9064            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
9065            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
9066            type Return = bool;
9067            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
9068            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
9069            const SIGNATURE: &'static str = "isDelegated(address)";
9070            const SELECTOR: [u8; 4] = [62u8, 40u8, 57u8, 29u8];
9071            #[inline]
9072            fn new<'a>(
9073                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9074            ) -> Self {
9075                tuple.into()
9076            }
9077            #[inline]
9078            fn tokenize(&self) -> Self::Token<'_> {
9079                (
9080                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9081                        &self.staker,
9082                    ),
9083                )
9084            }
9085            #[inline]
9086            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9087                (<alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(ret),)
9088            }
9089            #[inline]
9090            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9091                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
9092                    |r| {
9093                        let r: isDelegatedReturn = r.into();
9094                        r._0
9095                    },
9096                )
9097            }
9098            #[inline]
9099            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9100                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
9101                    data,
9102                )
9103                .map(|r| {
9104                    let r: isDelegatedReturn = r.into();
9105                    r._0
9106                })
9107            }
9108        }
9109    };
9110    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
9111    /**Function with signature `isOperator(address)` and selector `0x6d70f7ae`.
9112    ```solidity
9113    function isOperator(address operator) external view returns (bool);
9114    ```*/
9115    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9116    #[derive(Clone)]
9117    pub struct isOperatorCall {
9118        #[allow(missing_docs)]
9119        pub operator: alloy::sol_types::private::Address,
9120    }
9121    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
9122    ///Container type for the return parameters of the [`isOperator(address)`](isOperatorCall) function.
9123    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9124    #[derive(Clone)]
9125    pub struct isOperatorReturn {
9126        #[allow(missing_docs)]
9127        pub _0: bool,
9128    }
9129    #[allow(
9130        non_camel_case_types,
9131        non_snake_case,
9132        clippy::pub_underscore_fields,
9133        clippy::style
9134    )]
9135    const _: () = {
9136        use alloy::sol_types as alloy_sol_types;
9137        {
9138            #[doc(hidden)]
9139            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
9140            #[doc(hidden)]
9141            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
9142            #[cfg(test)]
9143            #[allow(dead_code, unreachable_patterns)]
9144            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9145                match _t {
9146                    alloy_sol_types::private::AssertTypeEq::<
9147                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9148                    >(_) => {}
9149                }
9150            }
9151            #[automatically_derived]
9152            #[doc(hidden)]
9153            impl ::core::convert::From<isOperatorCall> for UnderlyingRustTuple<'_> {
9154                fn from(value: isOperatorCall) -> Self {
9155                    (value.operator,)
9156                }
9157            }
9158            #[automatically_derived]
9159            #[doc(hidden)]
9160            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isOperatorCall {
9161                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9162                    Self { operator: tuple.0 }
9163                }
9164            }
9165        }
9166        {
9167            #[doc(hidden)]
9168            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
9169            #[doc(hidden)]
9170            type UnderlyingRustTuple<'a> = (bool,);
9171            #[cfg(test)]
9172            #[allow(dead_code, unreachable_patterns)]
9173            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9174                match _t {
9175                    alloy_sol_types::private::AssertTypeEq::<
9176                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9177                    >(_) => {}
9178                }
9179            }
9180            #[automatically_derived]
9181            #[doc(hidden)]
9182            impl ::core::convert::From<isOperatorReturn> for UnderlyingRustTuple<'_> {
9183                fn from(value: isOperatorReturn) -> Self {
9184                    (value._0,)
9185                }
9186            }
9187            #[automatically_derived]
9188            #[doc(hidden)]
9189            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isOperatorReturn {
9190                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9191                    Self { _0: tuple.0 }
9192                }
9193            }
9194        }
9195        #[automatically_derived]
9196        impl alloy_sol_types::SolCall for isOperatorCall {
9197            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
9198            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
9199            type Return = bool;
9200            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
9201            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
9202            const SIGNATURE: &'static str = "isOperator(address)";
9203            const SELECTOR: [u8; 4] = [109u8, 112u8, 247u8, 174u8];
9204            #[inline]
9205            fn new<'a>(
9206                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9207            ) -> Self {
9208                tuple.into()
9209            }
9210            #[inline]
9211            fn tokenize(&self) -> Self::Token<'_> {
9212                (
9213                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9214                        &self.operator,
9215                    ),
9216                )
9217            }
9218            #[inline]
9219            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9220                (<alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(ret),)
9221            }
9222            #[inline]
9223            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9224                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
9225                    |r| {
9226                        let r: isOperatorReturn = r.into();
9227                        r._0
9228                    },
9229                )
9230            }
9231            #[inline]
9232            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9233                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
9234                    data,
9235                )
9236                .map(|r| {
9237                    let r: isOperatorReturn = r.into();
9238                    r._0
9239                })
9240            }
9241        }
9242    };
9243    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
9244    /**Function with signature `minWithdrawalDelayBlocks()` and selector `0xc448feb8`.
9245    ```solidity
9246    function minWithdrawalDelayBlocks() external view returns (uint256);
9247    ```*/
9248    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9249    #[derive(Clone)]
9250    pub struct minWithdrawalDelayBlocksCall;
9251    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
9252    ///Container type for the return parameters of the [`minWithdrawalDelayBlocks()`](minWithdrawalDelayBlocksCall) function.
9253    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9254    #[derive(Clone)]
9255    pub struct minWithdrawalDelayBlocksReturn {
9256        #[allow(missing_docs)]
9257        pub _0: alloy::sol_types::private::primitives::aliases::U256,
9258    }
9259    #[allow(
9260        non_camel_case_types,
9261        non_snake_case,
9262        clippy::pub_underscore_fields,
9263        clippy::style
9264    )]
9265    const _: () = {
9266        use alloy::sol_types as alloy_sol_types;
9267        {
9268            #[doc(hidden)]
9269            type UnderlyingSolTuple<'a> = ();
9270            #[doc(hidden)]
9271            type UnderlyingRustTuple<'a> = ();
9272            #[cfg(test)]
9273            #[allow(dead_code, unreachable_patterns)]
9274            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9275                match _t {
9276                    alloy_sol_types::private::AssertTypeEq::<
9277                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9278                    >(_) => {}
9279                }
9280            }
9281            #[automatically_derived]
9282            #[doc(hidden)]
9283            impl ::core::convert::From<minWithdrawalDelayBlocksCall> for UnderlyingRustTuple<'_> {
9284                fn from(value: minWithdrawalDelayBlocksCall) -> Self {
9285                    ()
9286                }
9287            }
9288            #[automatically_derived]
9289            #[doc(hidden)]
9290            impl ::core::convert::From<UnderlyingRustTuple<'_>> for minWithdrawalDelayBlocksCall {
9291                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9292                    Self
9293                }
9294            }
9295        }
9296        {
9297            #[doc(hidden)]
9298            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9299            #[doc(hidden)]
9300            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
9301            #[cfg(test)]
9302            #[allow(dead_code, unreachable_patterns)]
9303            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9304                match _t {
9305                    alloy_sol_types::private::AssertTypeEq::<
9306                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9307                    >(_) => {}
9308                }
9309            }
9310            #[automatically_derived]
9311            #[doc(hidden)]
9312            impl ::core::convert::From<minWithdrawalDelayBlocksReturn> for UnderlyingRustTuple<'_> {
9313                fn from(value: minWithdrawalDelayBlocksReturn) -> Self {
9314                    (value._0,)
9315                }
9316            }
9317            #[automatically_derived]
9318            #[doc(hidden)]
9319            impl ::core::convert::From<UnderlyingRustTuple<'_>> for minWithdrawalDelayBlocksReturn {
9320                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9321                    Self { _0: tuple.0 }
9322                }
9323            }
9324        }
9325        #[automatically_derived]
9326        impl alloy_sol_types::SolCall for minWithdrawalDelayBlocksCall {
9327            type Parameters<'a> = ();
9328            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
9329            type Return = alloy::sol_types::private::primitives::aliases::U256;
9330            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9331            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
9332            const SIGNATURE: &'static str = "minWithdrawalDelayBlocks()";
9333            const SELECTOR: [u8; 4] = [196u8, 72u8, 254u8, 184u8];
9334            #[inline]
9335            fn new<'a>(
9336                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9337            ) -> Self {
9338                tuple.into()
9339            }
9340            #[inline]
9341            fn tokenize(&self) -> Self::Token<'_> {
9342                ()
9343            }
9344            #[inline]
9345            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9346                (
9347                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
9348                        ret,
9349                    ),
9350                )
9351            }
9352            #[inline]
9353            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9354                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
9355                    |r| {
9356                        let r: minWithdrawalDelayBlocksReturn = r.into();
9357                        r._0
9358                    },
9359                )
9360            }
9361            #[inline]
9362            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9363                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
9364                    data,
9365                )
9366                .map(|r| {
9367                    let r: minWithdrawalDelayBlocksReturn = r.into();
9368                    r._0
9369                })
9370            }
9371        }
9372    };
9373    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
9374    /**Function with signature `modifyOperatorDetails((address,address,uint32))` and selector `0xf16172b0`.
9375    ```solidity
9376    function modifyOperatorDetails(IDelegationManager.OperatorDetails memory newOperatorDetails) external;
9377    ```*/
9378    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9379    #[derive(Clone)]
9380    pub struct modifyOperatorDetailsCall {
9381        #[allow(missing_docs)]
9382        pub newOperatorDetails:
9383            <IDelegationManager::OperatorDetails as alloy::sol_types::SolType>::RustType,
9384    }
9385    ///Container type for the return parameters of the [`modifyOperatorDetails((address,address,uint32))`](modifyOperatorDetailsCall) function.
9386    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9387    #[derive(Clone)]
9388    pub struct modifyOperatorDetailsReturn {}
9389    #[allow(
9390        non_camel_case_types,
9391        non_snake_case,
9392        clippy::pub_underscore_fields,
9393        clippy::style
9394    )]
9395    const _: () = {
9396        use alloy::sol_types as alloy_sol_types;
9397        {
9398            #[doc(hidden)]
9399            type UnderlyingSolTuple<'a> = (IDelegationManager::OperatorDetails,);
9400            #[doc(hidden)]
9401            type UnderlyingRustTuple<'a> =
9402                (<IDelegationManager::OperatorDetails as alloy::sol_types::SolType>::RustType,);
9403            #[cfg(test)]
9404            #[allow(dead_code, unreachable_patterns)]
9405            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9406                match _t {
9407                    alloy_sol_types::private::AssertTypeEq::<
9408                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9409                    >(_) => {}
9410                }
9411            }
9412            #[automatically_derived]
9413            #[doc(hidden)]
9414            impl ::core::convert::From<modifyOperatorDetailsCall> for UnderlyingRustTuple<'_> {
9415                fn from(value: modifyOperatorDetailsCall) -> Self {
9416                    (value.newOperatorDetails,)
9417                }
9418            }
9419            #[automatically_derived]
9420            #[doc(hidden)]
9421            impl ::core::convert::From<UnderlyingRustTuple<'_>> for modifyOperatorDetailsCall {
9422                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9423                    Self {
9424                        newOperatorDetails: tuple.0,
9425                    }
9426                }
9427            }
9428        }
9429        {
9430            #[doc(hidden)]
9431            type UnderlyingSolTuple<'a> = ();
9432            #[doc(hidden)]
9433            type UnderlyingRustTuple<'a> = ();
9434            #[cfg(test)]
9435            #[allow(dead_code, unreachable_patterns)]
9436            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9437                match _t {
9438                    alloy_sol_types::private::AssertTypeEq::<
9439                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9440                    >(_) => {}
9441                }
9442            }
9443            #[automatically_derived]
9444            #[doc(hidden)]
9445            impl ::core::convert::From<modifyOperatorDetailsReturn> for UnderlyingRustTuple<'_> {
9446                fn from(value: modifyOperatorDetailsReturn) -> Self {
9447                    ()
9448                }
9449            }
9450            #[automatically_derived]
9451            #[doc(hidden)]
9452            impl ::core::convert::From<UnderlyingRustTuple<'_>> for modifyOperatorDetailsReturn {
9453                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9454                    Self {}
9455                }
9456            }
9457        }
9458        impl modifyOperatorDetailsReturn {
9459            fn _tokenize(
9460                &self,
9461            ) -> <modifyOperatorDetailsCall as alloy_sol_types::SolCall>::ReturnToken<'_>
9462            {
9463                ()
9464            }
9465        }
9466        #[automatically_derived]
9467        impl alloy_sol_types::SolCall for modifyOperatorDetailsCall {
9468            type Parameters<'a> = (IDelegationManager::OperatorDetails,);
9469            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
9470            type Return = modifyOperatorDetailsReturn;
9471            type ReturnTuple<'a> = ();
9472            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
9473            const SIGNATURE: &'static str = "modifyOperatorDetails((address,address,uint32))";
9474            const SELECTOR: [u8; 4] = [241u8, 97u8, 114u8, 176u8];
9475            #[inline]
9476            fn new<'a>(
9477                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9478            ) -> Self {
9479                tuple.into()
9480            }
9481            #[inline]
9482            fn tokenize(&self) -> Self::Token<'_> {
9483                (
9484                    <IDelegationManager::OperatorDetails as alloy_sol_types::SolType>::tokenize(
9485                        &self.newOperatorDetails,
9486                    ),
9487                )
9488            }
9489            #[inline]
9490            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9491                modifyOperatorDetailsReturn::_tokenize(ret)
9492            }
9493            #[inline]
9494            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9495                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
9496                    .map(Into::into)
9497            }
9498            #[inline]
9499            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9500                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
9501                    data,
9502                )
9503                .map(Into::into)
9504            }
9505        }
9506    };
9507    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
9508    /**Function with signature `operatorDetails(address)` and selector `0xc5e480db`.
9509    ```solidity
9510    function operatorDetails(address operator) external view returns (IDelegationManager.OperatorDetails memory);
9511    ```*/
9512    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9513    #[derive(Clone)]
9514    pub struct operatorDetailsCall {
9515        #[allow(missing_docs)]
9516        pub operator: alloy::sol_types::private::Address,
9517    }
9518    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
9519    ///Container type for the return parameters of the [`operatorDetails(address)`](operatorDetailsCall) function.
9520    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9521    #[derive(Clone)]
9522    pub struct operatorDetailsReturn {
9523        #[allow(missing_docs)]
9524        pub _0: <IDelegationManager::OperatorDetails as alloy::sol_types::SolType>::RustType,
9525    }
9526    #[allow(
9527        non_camel_case_types,
9528        non_snake_case,
9529        clippy::pub_underscore_fields,
9530        clippy::style
9531    )]
9532    const _: () = {
9533        use alloy::sol_types as alloy_sol_types;
9534        {
9535            #[doc(hidden)]
9536            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
9537            #[doc(hidden)]
9538            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
9539            #[cfg(test)]
9540            #[allow(dead_code, unreachable_patterns)]
9541            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9542                match _t {
9543                    alloy_sol_types::private::AssertTypeEq::<
9544                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9545                    >(_) => {}
9546                }
9547            }
9548            #[automatically_derived]
9549            #[doc(hidden)]
9550            impl ::core::convert::From<operatorDetailsCall> for UnderlyingRustTuple<'_> {
9551                fn from(value: operatorDetailsCall) -> Self {
9552                    (value.operator,)
9553                }
9554            }
9555            #[automatically_derived]
9556            #[doc(hidden)]
9557            impl ::core::convert::From<UnderlyingRustTuple<'_>> for operatorDetailsCall {
9558                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9559                    Self { operator: tuple.0 }
9560                }
9561            }
9562        }
9563        {
9564            #[doc(hidden)]
9565            type UnderlyingSolTuple<'a> = (IDelegationManager::OperatorDetails,);
9566            #[doc(hidden)]
9567            type UnderlyingRustTuple<'a> =
9568                (<IDelegationManager::OperatorDetails as alloy::sol_types::SolType>::RustType,);
9569            #[cfg(test)]
9570            #[allow(dead_code, unreachable_patterns)]
9571            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9572                match _t {
9573                    alloy_sol_types::private::AssertTypeEq::<
9574                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9575                    >(_) => {}
9576                }
9577            }
9578            #[automatically_derived]
9579            #[doc(hidden)]
9580            impl ::core::convert::From<operatorDetailsReturn> for UnderlyingRustTuple<'_> {
9581                fn from(value: operatorDetailsReturn) -> Self {
9582                    (value._0,)
9583                }
9584            }
9585            #[automatically_derived]
9586            #[doc(hidden)]
9587            impl ::core::convert::From<UnderlyingRustTuple<'_>> for operatorDetailsReturn {
9588                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9589                    Self { _0: tuple.0 }
9590                }
9591            }
9592        }
9593        #[automatically_derived]
9594        impl alloy_sol_types::SolCall for operatorDetailsCall {
9595            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
9596            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
9597            type Return =
9598                <IDelegationManager::OperatorDetails as alloy::sol_types::SolType>::RustType;
9599            type ReturnTuple<'a> = (IDelegationManager::OperatorDetails,);
9600            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
9601            const SIGNATURE: &'static str = "operatorDetails(address)";
9602            const SELECTOR: [u8; 4] = [197u8, 228u8, 128u8, 219u8];
9603            #[inline]
9604            fn new<'a>(
9605                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9606            ) -> Self {
9607                tuple.into()
9608            }
9609            #[inline]
9610            fn tokenize(&self) -> Self::Token<'_> {
9611                (
9612                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9613                        &self.operator,
9614                    ),
9615                )
9616            }
9617            #[inline]
9618            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9619                (
9620                    <IDelegationManager::OperatorDetails as alloy_sol_types::SolType>::tokenize(
9621                        ret,
9622                    ),
9623                )
9624            }
9625            #[inline]
9626            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9627                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
9628                    |r| {
9629                        let r: operatorDetailsReturn = r.into();
9630                        r._0
9631                    },
9632                )
9633            }
9634            #[inline]
9635            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9636                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
9637                    data,
9638                )
9639                .map(|r| {
9640                    let r: operatorDetailsReturn = r.into();
9641                    r._0
9642                })
9643            }
9644        }
9645    };
9646    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
9647    /**Function with signature `operatorShares(address,address)` and selector `0x778e55f3`.
9648    ```solidity
9649    function operatorShares(address, address) external view returns (uint256);
9650    ```*/
9651    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9652    #[derive(Clone)]
9653    pub struct operatorSharesCall {
9654        #[allow(missing_docs)]
9655        pub _0: alloy::sol_types::private::Address,
9656        #[allow(missing_docs)]
9657        pub _1: alloy::sol_types::private::Address,
9658    }
9659    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
9660    ///Container type for the return parameters of the [`operatorShares(address,address)`](operatorSharesCall) function.
9661    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9662    #[derive(Clone)]
9663    pub struct operatorSharesReturn {
9664        #[allow(missing_docs)]
9665        pub _0: alloy::sol_types::private::primitives::aliases::U256,
9666    }
9667    #[allow(
9668        non_camel_case_types,
9669        non_snake_case,
9670        clippy::pub_underscore_fields,
9671        clippy::style
9672    )]
9673    const _: () = {
9674        use alloy::sol_types as alloy_sol_types;
9675        {
9676            #[doc(hidden)]
9677            type UnderlyingSolTuple<'a> = (
9678                alloy::sol_types::sol_data::Address,
9679                alloy::sol_types::sol_data::Address,
9680            );
9681            #[doc(hidden)]
9682            type UnderlyingRustTuple<'a> = (
9683                alloy::sol_types::private::Address,
9684                alloy::sol_types::private::Address,
9685            );
9686            #[cfg(test)]
9687            #[allow(dead_code, unreachable_patterns)]
9688            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9689                match _t {
9690                    alloy_sol_types::private::AssertTypeEq::<
9691                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9692                    >(_) => {}
9693                }
9694            }
9695            #[automatically_derived]
9696            #[doc(hidden)]
9697            impl ::core::convert::From<operatorSharesCall> for UnderlyingRustTuple<'_> {
9698                fn from(value: operatorSharesCall) -> Self {
9699                    (value._0, value._1)
9700                }
9701            }
9702            #[automatically_derived]
9703            #[doc(hidden)]
9704            impl ::core::convert::From<UnderlyingRustTuple<'_>> for operatorSharesCall {
9705                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9706                    Self {
9707                        _0: tuple.0,
9708                        _1: tuple.1,
9709                    }
9710                }
9711            }
9712        }
9713        {
9714            #[doc(hidden)]
9715            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9716            #[doc(hidden)]
9717            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
9718            #[cfg(test)]
9719            #[allow(dead_code, unreachable_patterns)]
9720            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9721                match _t {
9722                    alloy_sol_types::private::AssertTypeEq::<
9723                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9724                    >(_) => {}
9725                }
9726            }
9727            #[automatically_derived]
9728            #[doc(hidden)]
9729            impl ::core::convert::From<operatorSharesReturn> for UnderlyingRustTuple<'_> {
9730                fn from(value: operatorSharesReturn) -> Self {
9731                    (value._0,)
9732                }
9733            }
9734            #[automatically_derived]
9735            #[doc(hidden)]
9736            impl ::core::convert::From<UnderlyingRustTuple<'_>> for operatorSharesReturn {
9737                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9738                    Self { _0: tuple.0 }
9739                }
9740            }
9741        }
9742        #[automatically_derived]
9743        impl alloy_sol_types::SolCall for operatorSharesCall {
9744            type Parameters<'a> = (
9745                alloy::sol_types::sol_data::Address,
9746                alloy::sol_types::sol_data::Address,
9747            );
9748            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
9749            type Return = alloy::sol_types::private::primitives::aliases::U256;
9750            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9751            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
9752            const SIGNATURE: &'static str = "operatorShares(address,address)";
9753            const SELECTOR: [u8; 4] = [119u8, 142u8, 85u8, 243u8];
9754            #[inline]
9755            fn new<'a>(
9756                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9757            ) -> Self {
9758                tuple.into()
9759            }
9760            #[inline]
9761            fn tokenize(&self) -> Self::Token<'_> {
9762                (
9763                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9764                        &self._0,
9765                    ),
9766                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9767                        &self._1,
9768                    ),
9769                )
9770            }
9771            #[inline]
9772            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9773                (
9774                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
9775                        ret,
9776                    ),
9777                )
9778            }
9779            #[inline]
9780            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9781                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
9782                    |r| {
9783                        let r: operatorSharesReturn = r.into();
9784                        r._0
9785                    },
9786                )
9787            }
9788            #[inline]
9789            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9790                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
9791                    data,
9792                )
9793                .map(|r| {
9794                    let r: operatorSharesReturn = r.into();
9795                    r._0
9796                })
9797            }
9798        }
9799    };
9800    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
9801    /**Function with signature `owner()` and selector `0x8da5cb5b`.
9802    ```solidity
9803    function owner() external view returns (address);
9804    ```*/
9805    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9806    #[derive(Clone)]
9807    pub struct ownerCall;
9808    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
9809    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
9810    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9811    #[derive(Clone)]
9812    pub struct ownerReturn {
9813        #[allow(missing_docs)]
9814        pub _0: alloy::sol_types::private::Address,
9815    }
9816    #[allow(
9817        non_camel_case_types,
9818        non_snake_case,
9819        clippy::pub_underscore_fields,
9820        clippy::style
9821    )]
9822    const _: () = {
9823        use alloy::sol_types as alloy_sol_types;
9824        {
9825            #[doc(hidden)]
9826            type UnderlyingSolTuple<'a> = ();
9827            #[doc(hidden)]
9828            type UnderlyingRustTuple<'a> = ();
9829            #[cfg(test)]
9830            #[allow(dead_code, unreachable_patterns)]
9831            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9832                match _t {
9833                    alloy_sol_types::private::AssertTypeEq::<
9834                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9835                    >(_) => {}
9836                }
9837            }
9838            #[automatically_derived]
9839            #[doc(hidden)]
9840            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
9841                fn from(value: ownerCall) -> Self {
9842                    ()
9843                }
9844            }
9845            #[automatically_derived]
9846            #[doc(hidden)]
9847            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
9848                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9849                    Self
9850                }
9851            }
9852        }
9853        {
9854            #[doc(hidden)]
9855            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
9856            #[doc(hidden)]
9857            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
9858            #[cfg(test)]
9859            #[allow(dead_code, unreachable_patterns)]
9860            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9861                match _t {
9862                    alloy_sol_types::private::AssertTypeEq::<
9863                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9864                    >(_) => {}
9865                }
9866            }
9867            #[automatically_derived]
9868            #[doc(hidden)]
9869            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
9870                fn from(value: ownerReturn) -> Self {
9871                    (value._0,)
9872                }
9873            }
9874            #[automatically_derived]
9875            #[doc(hidden)]
9876            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
9877                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9878                    Self { _0: tuple.0 }
9879                }
9880            }
9881        }
9882        #[automatically_derived]
9883        impl alloy_sol_types::SolCall for ownerCall {
9884            type Parameters<'a> = ();
9885            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
9886            type Return = alloy::sol_types::private::Address;
9887            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
9888            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
9889            const SIGNATURE: &'static str = "owner()";
9890            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
9891            #[inline]
9892            fn new<'a>(
9893                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9894            ) -> Self {
9895                tuple.into()
9896            }
9897            #[inline]
9898            fn tokenize(&self) -> Self::Token<'_> {
9899                ()
9900            }
9901            #[inline]
9902            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9903                (
9904                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9905                        ret,
9906                    ),
9907                )
9908            }
9909            #[inline]
9910            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9911                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
9912                    |r| {
9913                        let r: ownerReturn = r.into();
9914                        r._0
9915                    },
9916                )
9917            }
9918            #[inline]
9919            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9920                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
9921                    data,
9922                )
9923                .map(|r| {
9924                    let r: ownerReturn = r.into();
9925                    r._0
9926                })
9927            }
9928        }
9929    };
9930    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
9931    /**Function with signature `pause(uint256)` and selector `0x136439dd`.
9932    ```solidity
9933    function pause(uint256 newPausedStatus) external;
9934    ```*/
9935    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9936    #[derive(Clone)]
9937    pub struct pauseCall {
9938        #[allow(missing_docs)]
9939        pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256,
9940    }
9941    ///Container type for the return parameters of the [`pause(uint256)`](pauseCall) function.
9942    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9943    #[derive(Clone)]
9944    pub struct pauseReturn {}
9945    #[allow(
9946        non_camel_case_types,
9947        non_snake_case,
9948        clippy::pub_underscore_fields,
9949        clippy::style
9950    )]
9951    const _: () = {
9952        use alloy::sol_types as alloy_sol_types;
9953        {
9954            #[doc(hidden)]
9955            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9956            #[doc(hidden)]
9957            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
9958            #[cfg(test)]
9959            #[allow(dead_code, unreachable_patterns)]
9960            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9961                match _t {
9962                    alloy_sol_types::private::AssertTypeEq::<
9963                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9964                    >(_) => {}
9965                }
9966            }
9967            #[automatically_derived]
9968            #[doc(hidden)]
9969            impl ::core::convert::From<pauseCall> for UnderlyingRustTuple<'_> {
9970                fn from(value: pauseCall) -> Self {
9971                    (value.newPausedStatus,)
9972                }
9973            }
9974            #[automatically_derived]
9975            #[doc(hidden)]
9976            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauseCall {
9977                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9978                    Self {
9979                        newPausedStatus: tuple.0,
9980                    }
9981                }
9982            }
9983        }
9984        {
9985            #[doc(hidden)]
9986            type UnderlyingSolTuple<'a> = ();
9987            #[doc(hidden)]
9988            type UnderlyingRustTuple<'a> = ();
9989            #[cfg(test)]
9990            #[allow(dead_code, unreachable_patterns)]
9991            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9992                match _t {
9993                    alloy_sol_types::private::AssertTypeEq::<
9994                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9995                    >(_) => {}
9996                }
9997            }
9998            #[automatically_derived]
9999            #[doc(hidden)]
10000            impl ::core::convert::From<pauseReturn> for UnderlyingRustTuple<'_> {
10001                fn from(value: pauseReturn) -> Self {
10002                    ()
10003                }
10004            }
10005            #[automatically_derived]
10006            #[doc(hidden)]
10007            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauseReturn {
10008                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10009                    Self {}
10010                }
10011            }
10012        }
10013        impl pauseReturn {
10014            fn _tokenize(&self) -> <pauseCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10015                ()
10016            }
10017        }
10018        #[automatically_derived]
10019        impl alloy_sol_types::SolCall for pauseCall {
10020            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10021            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
10022            type Return = pauseReturn;
10023            type ReturnTuple<'a> = ();
10024            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
10025            const SIGNATURE: &'static str = "pause(uint256)";
10026            const SELECTOR: [u8; 4] = [19u8, 100u8, 57u8, 221u8];
10027            #[inline]
10028            fn new<'a>(
10029                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10030            ) -> Self {
10031                tuple.into()
10032            }
10033            #[inline]
10034            fn tokenize(&self) -> Self::Token<'_> {
10035                (
10036                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
10037                        &self.newPausedStatus,
10038                    ),
10039                )
10040            }
10041            #[inline]
10042            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10043                pauseReturn::_tokenize(ret)
10044            }
10045            #[inline]
10046            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10047                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
10048                    .map(Into::into)
10049            }
10050            #[inline]
10051            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10052                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
10053                    data,
10054                )
10055                .map(Into::into)
10056            }
10057        }
10058    };
10059    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
10060    /**Function with signature `pauseAll()` and selector `0x595c6a67`.
10061    ```solidity
10062    function pauseAll() external;
10063    ```*/
10064    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10065    #[derive(Clone)]
10066    pub struct pauseAllCall;
10067    ///Container type for the return parameters of the [`pauseAll()`](pauseAllCall) function.
10068    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10069    #[derive(Clone)]
10070    pub struct pauseAllReturn {}
10071    #[allow(
10072        non_camel_case_types,
10073        non_snake_case,
10074        clippy::pub_underscore_fields,
10075        clippy::style
10076    )]
10077    const _: () = {
10078        use alloy::sol_types as alloy_sol_types;
10079        {
10080            #[doc(hidden)]
10081            type UnderlyingSolTuple<'a> = ();
10082            #[doc(hidden)]
10083            type UnderlyingRustTuple<'a> = ();
10084            #[cfg(test)]
10085            #[allow(dead_code, unreachable_patterns)]
10086            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10087                match _t {
10088                    alloy_sol_types::private::AssertTypeEq::<
10089                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10090                    >(_) => {}
10091                }
10092            }
10093            #[automatically_derived]
10094            #[doc(hidden)]
10095            impl ::core::convert::From<pauseAllCall> for UnderlyingRustTuple<'_> {
10096                fn from(value: pauseAllCall) -> Self {
10097                    ()
10098                }
10099            }
10100            #[automatically_derived]
10101            #[doc(hidden)]
10102            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauseAllCall {
10103                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10104                    Self
10105                }
10106            }
10107        }
10108        {
10109            #[doc(hidden)]
10110            type UnderlyingSolTuple<'a> = ();
10111            #[doc(hidden)]
10112            type UnderlyingRustTuple<'a> = ();
10113            #[cfg(test)]
10114            #[allow(dead_code, unreachable_patterns)]
10115            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10116                match _t {
10117                    alloy_sol_types::private::AssertTypeEq::<
10118                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10119                    >(_) => {}
10120                }
10121            }
10122            #[automatically_derived]
10123            #[doc(hidden)]
10124            impl ::core::convert::From<pauseAllReturn> for UnderlyingRustTuple<'_> {
10125                fn from(value: pauseAllReturn) -> Self {
10126                    ()
10127                }
10128            }
10129            #[automatically_derived]
10130            #[doc(hidden)]
10131            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauseAllReturn {
10132                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10133                    Self {}
10134                }
10135            }
10136        }
10137        impl pauseAllReturn {
10138            fn _tokenize(&self) -> <pauseAllCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10139                ()
10140            }
10141        }
10142        #[automatically_derived]
10143        impl alloy_sol_types::SolCall for pauseAllCall {
10144            type Parameters<'a> = ();
10145            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
10146            type Return = pauseAllReturn;
10147            type ReturnTuple<'a> = ();
10148            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
10149            const SIGNATURE: &'static str = "pauseAll()";
10150            const SELECTOR: [u8; 4] = [89u8, 92u8, 106u8, 103u8];
10151            #[inline]
10152            fn new<'a>(
10153                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10154            ) -> Self {
10155                tuple.into()
10156            }
10157            #[inline]
10158            fn tokenize(&self) -> Self::Token<'_> {
10159                ()
10160            }
10161            #[inline]
10162            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10163                pauseAllReturn::_tokenize(ret)
10164            }
10165            #[inline]
10166            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10167                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
10168                    .map(Into::into)
10169            }
10170            #[inline]
10171            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10172                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
10173                    data,
10174                )
10175                .map(Into::into)
10176            }
10177        }
10178    };
10179    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
10180    /**Function with signature `paused(uint8)` and selector `0x5ac86ab7`.
10181    ```solidity
10182    function paused(uint8 index) external view returns (bool);
10183    ```*/
10184    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10185    #[derive(Clone)]
10186    pub struct paused_0Call {
10187        #[allow(missing_docs)]
10188        pub index: u8,
10189    }
10190    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
10191    ///Container type for the return parameters of the [`paused(uint8)`](paused_0Call) function.
10192    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10193    #[derive(Clone)]
10194    pub struct paused_0Return {
10195        #[allow(missing_docs)]
10196        pub _0: bool,
10197    }
10198    #[allow(
10199        non_camel_case_types,
10200        non_snake_case,
10201        clippy::pub_underscore_fields,
10202        clippy::style
10203    )]
10204    const _: () = {
10205        use alloy::sol_types as alloy_sol_types;
10206        {
10207            #[doc(hidden)]
10208            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,);
10209            #[doc(hidden)]
10210            type UnderlyingRustTuple<'a> = (u8,);
10211            #[cfg(test)]
10212            #[allow(dead_code, unreachable_patterns)]
10213            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10214                match _t {
10215                    alloy_sol_types::private::AssertTypeEq::<
10216                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10217                    >(_) => {}
10218                }
10219            }
10220            #[automatically_derived]
10221            #[doc(hidden)]
10222            impl ::core::convert::From<paused_0Call> for UnderlyingRustTuple<'_> {
10223                fn from(value: paused_0Call) -> Self {
10224                    (value.index,)
10225                }
10226            }
10227            #[automatically_derived]
10228            #[doc(hidden)]
10229            impl ::core::convert::From<UnderlyingRustTuple<'_>> for paused_0Call {
10230                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10231                    Self { index: tuple.0 }
10232                }
10233            }
10234        }
10235        {
10236            #[doc(hidden)]
10237            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10238            #[doc(hidden)]
10239            type UnderlyingRustTuple<'a> = (bool,);
10240            #[cfg(test)]
10241            #[allow(dead_code, unreachable_patterns)]
10242            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10243                match _t {
10244                    alloy_sol_types::private::AssertTypeEq::<
10245                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10246                    >(_) => {}
10247                }
10248            }
10249            #[automatically_derived]
10250            #[doc(hidden)]
10251            impl ::core::convert::From<paused_0Return> for UnderlyingRustTuple<'_> {
10252                fn from(value: paused_0Return) -> Self {
10253                    (value._0,)
10254                }
10255            }
10256            #[automatically_derived]
10257            #[doc(hidden)]
10258            impl ::core::convert::From<UnderlyingRustTuple<'_>> for paused_0Return {
10259                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10260                    Self { _0: tuple.0 }
10261                }
10262            }
10263        }
10264        #[automatically_derived]
10265        impl alloy_sol_types::SolCall for paused_0Call {
10266            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,);
10267            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
10268            type Return = bool;
10269            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10270            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
10271            const SIGNATURE: &'static str = "paused(uint8)";
10272            const SELECTOR: [u8; 4] = [90u8, 200u8, 106u8, 183u8];
10273            #[inline]
10274            fn new<'a>(
10275                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10276            ) -> Self {
10277                tuple.into()
10278            }
10279            #[inline]
10280            fn tokenize(&self) -> Self::Token<'_> {
10281                (
10282                    <alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::SolType>::tokenize(
10283                        &self.index,
10284                    ),
10285                )
10286            }
10287            #[inline]
10288            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10289                (<alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(ret),)
10290            }
10291            #[inline]
10292            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10293                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
10294                    |r| {
10295                        let r: paused_0Return = r.into();
10296                        r._0
10297                    },
10298                )
10299            }
10300            #[inline]
10301            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10302                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
10303                    data,
10304                )
10305                .map(|r| {
10306                    let r: paused_0Return = r.into();
10307                    r._0
10308                })
10309            }
10310        }
10311    };
10312    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
10313    /**Function with signature `paused()` and selector `0x5c975abb`.
10314    ```solidity
10315    function paused() external view returns (uint256);
10316    ```*/
10317    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10318    #[derive(Clone)]
10319    pub struct paused_1Call;
10320    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
10321    ///Container type for the return parameters of the [`paused()`](paused_1Call) function.
10322    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10323    #[derive(Clone)]
10324    pub struct paused_1Return {
10325        #[allow(missing_docs)]
10326        pub _0: alloy::sol_types::private::primitives::aliases::U256,
10327    }
10328    #[allow(
10329        non_camel_case_types,
10330        non_snake_case,
10331        clippy::pub_underscore_fields,
10332        clippy::style
10333    )]
10334    const _: () = {
10335        use alloy::sol_types as alloy_sol_types;
10336        {
10337            #[doc(hidden)]
10338            type UnderlyingSolTuple<'a> = ();
10339            #[doc(hidden)]
10340            type UnderlyingRustTuple<'a> = ();
10341            #[cfg(test)]
10342            #[allow(dead_code, unreachable_patterns)]
10343            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10344                match _t {
10345                    alloy_sol_types::private::AssertTypeEq::<
10346                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10347                    >(_) => {}
10348                }
10349            }
10350            #[automatically_derived]
10351            #[doc(hidden)]
10352            impl ::core::convert::From<paused_1Call> for UnderlyingRustTuple<'_> {
10353                fn from(value: paused_1Call) -> Self {
10354                    ()
10355                }
10356            }
10357            #[automatically_derived]
10358            #[doc(hidden)]
10359            impl ::core::convert::From<UnderlyingRustTuple<'_>> for paused_1Call {
10360                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10361                    Self
10362                }
10363            }
10364        }
10365        {
10366            #[doc(hidden)]
10367            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10368            #[doc(hidden)]
10369            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
10370            #[cfg(test)]
10371            #[allow(dead_code, unreachable_patterns)]
10372            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10373                match _t {
10374                    alloy_sol_types::private::AssertTypeEq::<
10375                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10376                    >(_) => {}
10377                }
10378            }
10379            #[automatically_derived]
10380            #[doc(hidden)]
10381            impl ::core::convert::From<paused_1Return> for UnderlyingRustTuple<'_> {
10382                fn from(value: paused_1Return) -> Self {
10383                    (value._0,)
10384                }
10385            }
10386            #[automatically_derived]
10387            #[doc(hidden)]
10388            impl ::core::convert::From<UnderlyingRustTuple<'_>> for paused_1Return {
10389                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10390                    Self { _0: tuple.0 }
10391                }
10392            }
10393        }
10394        #[automatically_derived]
10395        impl alloy_sol_types::SolCall for paused_1Call {
10396            type Parameters<'a> = ();
10397            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
10398            type Return = alloy::sol_types::private::primitives::aliases::U256;
10399            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10400            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
10401            const SIGNATURE: &'static str = "paused()";
10402            const SELECTOR: [u8; 4] = [92u8, 151u8, 90u8, 187u8];
10403            #[inline]
10404            fn new<'a>(
10405                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10406            ) -> Self {
10407                tuple.into()
10408            }
10409            #[inline]
10410            fn tokenize(&self) -> Self::Token<'_> {
10411                ()
10412            }
10413            #[inline]
10414            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10415                (
10416                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
10417                        ret,
10418                    ),
10419                )
10420            }
10421            #[inline]
10422            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10423                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
10424                    |r| {
10425                        let r: paused_1Return = r.into();
10426                        r._0
10427                    },
10428                )
10429            }
10430            #[inline]
10431            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10432                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
10433                    data,
10434                )
10435                .map(|r| {
10436                    let r: paused_1Return = r.into();
10437                    r._0
10438                })
10439            }
10440        }
10441    };
10442    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
10443    /**Function with signature `pauserRegistry()` and selector `0x886f1195`.
10444    ```solidity
10445    function pauserRegistry() external view returns (address);
10446    ```*/
10447    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10448    #[derive(Clone)]
10449    pub struct pauserRegistryCall;
10450    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
10451    ///Container type for the return parameters of the [`pauserRegistry()`](pauserRegistryCall) function.
10452    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10453    #[derive(Clone)]
10454    pub struct pauserRegistryReturn {
10455        #[allow(missing_docs)]
10456        pub _0: alloy::sol_types::private::Address,
10457    }
10458    #[allow(
10459        non_camel_case_types,
10460        non_snake_case,
10461        clippy::pub_underscore_fields,
10462        clippy::style
10463    )]
10464    const _: () = {
10465        use alloy::sol_types as alloy_sol_types;
10466        {
10467            #[doc(hidden)]
10468            type UnderlyingSolTuple<'a> = ();
10469            #[doc(hidden)]
10470            type UnderlyingRustTuple<'a> = ();
10471            #[cfg(test)]
10472            #[allow(dead_code, unreachable_patterns)]
10473            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10474                match _t {
10475                    alloy_sol_types::private::AssertTypeEq::<
10476                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10477                    >(_) => {}
10478                }
10479            }
10480            #[automatically_derived]
10481            #[doc(hidden)]
10482            impl ::core::convert::From<pauserRegistryCall> for UnderlyingRustTuple<'_> {
10483                fn from(value: pauserRegistryCall) -> Self {
10484                    ()
10485                }
10486            }
10487            #[automatically_derived]
10488            #[doc(hidden)]
10489            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauserRegistryCall {
10490                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10491                    Self
10492                }
10493            }
10494        }
10495        {
10496            #[doc(hidden)]
10497            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
10498            #[doc(hidden)]
10499            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
10500            #[cfg(test)]
10501            #[allow(dead_code, unreachable_patterns)]
10502            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10503                match _t {
10504                    alloy_sol_types::private::AssertTypeEq::<
10505                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10506                    >(_) => {}
10507                }
10508            }
10509            #[automatically_derived]
10510            #[doc(hidden)]
10511            impl ::core::convert::From<pauserRegistryReturn> for UnderlyingRustTuple<'_> {
10512                fn from(value: pauserRegistryReturn) -> Self {
10513                    (value._0,)
10514                }
10515            }
10516            #[automatically_derived]
10517            #[doc(hidden)]
10518            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauserRegistryReturn {
10519                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10520                    Self { _0: tuple.0 }
10521                }
10522            }
10523        }
10524        #[automatically_derived]
10525        impl alloy_sol_types::SolCall for pauserRegistryCall {
10526            type Parameters<'a> = ();
10527            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
10528            type Return = alloy::sol_types::private::Address;
10529            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
10530            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
10531            const SIGNATURE: &'static str = "pauserRegistry()";
10532            const SELECTOR: [u8; 4] = [136u8, 111u8, 17u8, 149u8];
10533            #[inline]
10534            fn new<'a>(
10535                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10536            ) -> Self {
10537                tuple.into()
10538            }
10539            #[inline]
10540            fn tokenize(&self) -> Self::Token<'_> {
10541                ()
10542            }
10543            #[inline]
10544            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10545                (
10546                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10547                        ret,
10548                    ),
10549                )
10550            }
10551            #[inline]
10552            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10553                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
10554                    |r| {
10555                        let r: pauserRegistryReturn = r.into();
10556                        r._0
10557                    },
10558                )
10559            }
10560            #[inline]
10561            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10562                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
10563                    data,
10564                )
10565                .map(|r| {
10566                    let r: pauserRegistryReturn = r.into();
10567                    r._0
10568                })
10569            }
10570        }
10571    };
10572    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
10573    /**Function with signature `pendingWithdrawals(bytes32)` and selector `0xb7f06ebe`.
10574    ```solidity
10575    function pendingWithdrawals(bytes32) external view returns (bool);
10576    ```*/
10577    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10578    #[derive(Clone)]
10579    pub struct pendingWithdrawalsCall(pub alloy::sol_types::private::FixedBytes<32>);
10580    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
10581    ///Container type for the return parameters of the [`pendingWithdrawals(bytes32)`](pendingWithdrawalsCall) function.
10582    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10583    #[derive(Clone)]
10584    pub struct pendingWithdrawalsReturn {
10585        #[allow(missing_docs)]
10586        pub _0: bool,
10587    }
10588    #[allow(
10589        non_camel_case_types,
10590        non_snake_case,
10591        clippy::pub_underscore_fields,
10592        clippy::style
10593    )]
10594    const _: () = {
10595        use alloy::sol_types as alloy_sol_types;
10596        {
10597            #[doc(hidden)]
10598            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
10599            #[doc(hidden)]
10600            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
10601            #[cfg(test)]
10602            #[allow(dead_code, unreachable_patterns)]
10603            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10604                match _t {
10605                    alloy_sol_types::private::AssertTypeEq::<
10606                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10607                    >(_) => {}
10608                }
10609            }
10610            #[automatically_derived]
10611            #[doc(hidden)]
10612            impl ::core::convert::From<pendingWithdrawalsCall> for UnderlyingRustTuple<'_> {
10613                fn from(value: pendingWithdrawalsCall) -> Self {
10614                    (value.0,)
10615                }
10616            }
10617            #[automatically_derived]
10618            #[doc(hidden)]
10619            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pendingWithdrawalsCall {
10620                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10621                    Self(tuple.0)
10622                }
10623            }
10624        }
10625        {
10626            #[doc(hidden)]
10627            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10628            #[doc(hidden)]
10629            type UnderlyingRustTuple<'a> = (bool,);
10630            #[cfg(test)]
10631            #[allow(dead_code, unreachable_patterns)]
10632            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10633                match _t {
10634                    alloy_sol_types::private::AssertTypeEq::<
10635                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10636                    >(_) => {}
10637                }
10638            }
10639            #[automatically_derived]
10640            #[doc(hidden)]
10641            impl ::core::convert::From<pendingWithdrawalsReturn> for UnderlyingRustTuple<'_> {
10642                fn from(value: pendingWithdrawalsReturn) -> Self {
10643                    (value._0,)
10644                }
10645            }
10646            #[automatically_derived]
10647            #[doc(hidden)]
10648            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pendingWithdrawalsReturn {
10649                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10650                    Self { _0: tuple.0 }
10651                }
10652            }
10653        }
10654        #[automatically_derived]
10655        impl alloy_sol_types::SolCall for pendingWithdrawalsCall {
10656            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
10657            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
10658            type Return = bool;
10659            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10660            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
10661            const SIGNATURE: &'static str = "pendingWithdrawals(bytes32)";
10662            const SELECTOR: [u8; 4] = [183u8, 240u8, 110u8, 190u8];
10663            #[inline]
10664            fn new<'a>(
10665                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10666            ) -> Self {
10667                tuple.into()
10668            }
10669            #[inline]
10670            fn tokenize(&self) -> Self::Token<'_> {
10671                (
10672                    <alloy::sol_types::sol_data::FixedBytes<
10673                        32,
10674                    > as alloy_sol_types::SolType>::tokenize(&self.0),
10675                )
10676            }
10677            #[inline]
10678            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10679                (<alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(ret),)
10680            }
10681            #[inline]
10682            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10683                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
10684                    |r| {
10685                        let r: pendingWithdrawalsReturn = r.into();
10686                        r._0
10687                    },
10688                )
10689            }
10690            #[inline]
10691            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10692                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
10693                    data,
10694                )
10695                .map(|r| {
10696                    let r: pendingWithdrawalsReturn = r.into();
10697                    r._0
10698                })
10699            }
10700        }
10701    };
10702    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
10703    /**Function with signature `queueWithdrawals((address[],uint256[],address)[])` and selector `0x0dd8dd02`.
10704    ```solidity
10705    function queueWithdrawals(IDelegationManager.QueuedWithdrawalParams[] memory queuedWithdrawalParams) external returns (bytes32[] memory);
10706    ```*/
10707    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10708    #[derive(Clone)]
10709    pub struct queueWithdrawalsCall {
10710        #[allow(missing_docs)]
10711        pub queuedWithdrawalParams: alloy::sol_types::private::Vec<
10712            <IDelegationManager::QueuedWithdrawalParams as alloy::sol_types::SolType>::RustType,
10713        >,
10714    }
10715    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
10716    ///Container type for the return parameters of the [`queueWithdrawals((address[],uint256[],address)[])`](queueWithdrawalsCall) function.
10717    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10718    #[derive(Clone)]
10719    pub struct queueWithdrawalsReturn {
10720        #[allow(missing_docs)]
10721        pub _0: alloy::sol_types::private::Vec<alloy::sol_types::private::FixedBytes<32>>,
10722    }
10723    #[allow(
10724        non_camel_case_types,
10725        non_snake_case,
10726        clippy::pub_underscore_fields,
10727        clippy::style
10728    )]
10729    const _: () = {
10730        use alloy::sol_types as alloy_sol_types;
10731        {
10732            #[doc(hidden)]
10733            type UnderlyingSolTuple<'a> =
10734                (alloy::sol_types::sol_data::Array<IDelegationManager::QueuedWithdrawalParams>,);
10735            #[doc(hidden)]
10736            type UnderlyingRustTuple<'a> = (
10737                alloy::sol_types::private::Vec<
10738                    <IDelegationManager::QueuedWithdrawalParams as alloy::sol_types::SolType>::RustType,
10739                >,
10740            );
10741            #[cfg(test)]
10742            #[allow(dead_code, unreachable_patterns)]
10743            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10744                match _t {
10745                    alloy_sol_types::private::AssertTypeEq::<
10746                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10747                    >(_) => {}
10748                }
10749            }
10750            #[automatically_derived]
10751            #[doc(hidden)]
10752            impl ::core::convert::From<queueWithdrawalsCall> for UnderlyingRustTuple<'_> {
10753                fn from(value: queueWithdrawalsCall) -> Self {
10754                    (value.queuedWithdrawalParams,)
10755                }
10756            }
10757            #[automatically_derived]
10758            #[doc(hidden)]
10759            impl ::core::convert::From<UnderlyingRustTuple<'_>> for queueWithdrawalsCall {
10760                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10761                    Self {
10762                        queuedWithdrawalParams: tuple.0,
10763                    }
10764                }
10765            }
10766        }
10767        {
10768            #[doc(hidden)]
10769            type UnderlyingSolTuple<'a> =
10770                (alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::FixedBytes<32>>,);
10771            #[doc(hidden)]
10772            type UnderlyingRustTuple<'a> =
10773                (alloy::sol_types::private::Vec<alloy::sol_types::private::FixedBytes<32>>,);
10774            #[cfg(test)]
10775            #[allow(dead_code, unreachable_patterns)]
10776            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10777                match _t {
10778                    alloy_sol_types::private::AssertTypeEq::<
10779                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10780                    >(_) => {}
10781                }
10782            }
10783            #[automatically_derived]
10784            #[doc(hidden)]
10785            impl ::core::convert::From<queueWithdrawalsReturn> for UnderlyingRustTuple<'_> {
10786                fn from(value: queueWithdrawalsReturn) -> Self {
10787                    (value._0,)
10788                }
10789            }
10790            #[automatically_derived]
10791            #[doc(hidden)]
10792            impl ::core::convert::From<UnderlyingRustTuple<'_>> for queueWithdrawalsReturn {
10793                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10794                    Self { _0: tuple.0 }
10795                }
10796            }
10797        }
10798        #[automatically_derived]
10799        impl alloy_sol_types::SolCall for queueWithdrawalsCall {
10800            type Parameters<'a> =
10801                (alloy::sol_types::sol_data::Array<IDelegationManager::QueuedWithdrawalParams>,);
10802            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
10803            type Return = alloy::sol_types::private::Vec<alloy::sol_types::private::FixedBytes<32>>;
10804            type ReturnTuple<'a> =
10805                (alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::FixedBytes<32>>,);
10806            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
10807            const SIGNATURE: &'static str = "queueWithdrawals((address[],uint256[],address)[])";
10808            const SELECTOR: [u8; 4] = [13u8, 216u8, 221u8, 2u8];
10809            #[inline]
10810            fn new<'a>(
10811                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10812            ) -> Self {
10813                tuple.into()
10814            }
10815            #[inline]
10816            fn tokenize(&self) -> Self::Token<'_> {
10817                (<alloy::sol_types::sol_data::Array<
10818                    IDelegationManager::QueuedWithdrawalParams,
10819                > as alloy_sol_types::SolType>::tokenize(
10820                    &self.queuedWithdrawalParams,
10821                ),)
10822            }
10823            #[inline]
10824            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10825                (<alloy::sol_types::sol_data::Array<
10826                    alloy::sol_types::sol_data::FixedBytes<32>,
10827                > as alloy_sol_types::SolType>::tokenize(ret),)
10828            }
10829            #[inline]
10830            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10831                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
10832                    |r| {
10833                        let r: queueWithdrawalsReturn = r.into();
10834                        r._0
10835                    },
10836                )
10837            }
10838            #[inline]
10839            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10840                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
10841                    data,
10842                )
10843                .map(|r| {
10844                    let r: queueWithdrawalsReturn = r.into();
10845                    r._0
10846                })
10847            }
10848        }
10849    };
10850    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
10851    /**Function with signature `registerAsOperator((address,address,uint32),string)` and selector `0x0f589e59`.
10852    ```solidity
10853    function registerAsOperator(IDelegationManager.OperatorDetails memory registeringOperatorDetails, string memory metadataURI) external;
10854    ```*/
10855    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10856    #[derive(Clone)]
10857    pub struct registerAsOperatorCall {
10858        #[allow(missing_docs)]
10859        pub registeringOperatorDetails:
10860            <IDelegationManager::OperatorDetails as alloy::sol_types::SolType>::RustType,
10861        #[allow(missing_docs)]
10862        pub metadataURI: alloy::sol_types::private::String,
10863    }
10864    ///Container type for the return parameters of the [`registerAsOperator((address,address,uint32),string)`](registerAsOperatorCall) function.
10865    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10866    #[derive(Clone)]
10867    pub struct registerAsOperatorReturn {}
10868    #[allow(
10869        non_camel_case_types,
10870        non_snake_case,
10871        clippy::pub_underscore_fields,
10872        clippy::style
10873    )]
10874    const _: () = {
10875        use alloy::sol_types as alloy_sol_types;
10876        {
10877            #[doc(hidden)]
10878            type UnderlyingSolTuple<'a> = (
10879                IDelegationManager::OperatorDetails,
10880                alloy::sol_types::sol_data::String,
10881            );
10882            #[doc(hidden)]
10883            type UnderlyingRustTuple<'a> = (
10884                <IDelegationManager::OperatorDetails as alloy::sol_types::SolType>::RustType,
10885                alloy::sol_types::private::String,
10886            );
10887            #[cfg(test)]
10888            #[allow(dead_code, unreachable_patterns)]
10889            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10890                match _t {
10891                    alloy_sol_types::private::AssertTypeEq::<
10892                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10893                    >(_) => {}
10894                }
10895            }
10896            #[automatically_derived]
10897            #[doc(hidden)]
10898            impl ::core::convert::From<registerAsOperatorCall> for UnderlyingRustTuple<'_> {
10899                fn from(value: registerAsOperatorCall) -> Self {
10900                    (value.registeringOperatorDetails, value.metadataURI)
10901                }
10902            }
10903            #[automatically_derived]
10904            #[doc(hidden)]
10905            impl ::core::convert::From<UnderlyingRustTuple<'_>> for registerAsOperatorCall {
10906                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10907                    Self {
10908                        registeringOperatorDetails: tuple.0,
10909                        metadataURI: tuple.1,
10910                    }
10911                }
10912            }
10913        }
10914        {
10915            #[doc(hidden)]
10916            type UnderlyingSolTuple<'a> = ();
10917            #[doc(hidden)]
10918            type UnderlyingRustTuple<'a> = ();
10919            #[cfg(test)]
10920            #[allow(dead_code, unreachable_patterns)]
10921            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10922                match _t {
10923                    alloy_sol_types::private::AssertTypeEq::<
10924                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10925                    >(_) => {}
10926                }
10927            }
10928            #[automatically_derived]
10929            #[doc(hidden)]
10930            impl ::core::convert::From<registerAsOperatorReturn> for UnderlyingRustTuple<'_> {
10931                fn from(value: registerAsOperatorReturn) -> Self {
10932                    ()
10933                }
10934            }
10935            #[automatically_derived]
10936            #[doc(hidden)]
10937            impl ::core::convert::From<UnderlyingRustTuple<'_>> for registerAsOperatorReturn {
10938                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10939                    Self {}
10940                }
10941            }
10942        }
10943        impl registerAsOperatorReturn {
10944            fn _tokenize(
10945                &self,
10946            ) -> <registerAsOperatorCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10947                ()
10948            }
10949        }
10950        #[automatically_derived]
10951        impl alloy_sol_types::SolCall for registerAsOperatorCall {
10952            type Parameters<'a> = (
10953                IDelegationManager::OperatorDetails,
10954                alloy::sol_types::sol_data::String,
10955            );
10956            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
10957            type Return = registerAsOperatorReturn;
10958            type ReturnTuple<'a> = ();
10959            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
10960            const SIGNATURE: &'static str = "registerAsOperator((address,address,uint32),string)";
10961            const SELECTOR: [u8; 4] = [15u8, 88u8, 158u8, 89u8];
10962            #[inline]
10963            fn new<'a>(
10964                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10965            ) -> Self {
10966                tuple.into()
10967            }
10968            #[inline]
10969            fn tokenize(&self) -> Self::Token<'_> {
10970                (
10971                    <IDelegationManager::OperatorDetails as alloy_sol_types::SolType>::tokenize(
10972                        &self.registeringOperatorDetails,
10973                    ),
10974                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
10975                        &self.metadataURI,
10976                    ),
10977                )
10978            }
10979            #[inline]
10980            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10981                registerAsOperatorReturn::_tokenize(ret)
10982            }
10983            #[inline]
10984            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10985                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
10986                    .map(Into::into)
10987            }
10988            #[inline]
10989            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10990                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
10991                    data,
10992                )
10993                .map(Into::into)
10994            }
10995        }
10996    };
10997    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
10998    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
10999    ```solidity
11000    function renounceOwnership() external;
11001    ```*/
11002    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11003    #[derive(Clone)]
11004    pub struct renounceOwnershipCall;
11005    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
11006    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11007    #[derive(Clone)]
11008    pub struct renounceOwnershipReturn {}
11009    #[allow(
11010        non_camel_case_types,
11011        non_snake_case,
11012        clippy::pub_underscore_fields,
11013        clippy::style
11014    )]
11015    const _: () = {
11016        use alloy::sol_types as alloy_sol_types;
11017        {
11018            #[doc(hidden)]
11019            type UnderlyingSolTuple<'a> = ();
11020            #[doc(hidden)]
11021            type UnderlyingRustTuple<'a> = ();
11022            #[cfg(test)]
11023            #[allow(dead_code, unreachable_patterns)]
11024            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
11025                match _t {
11026                    alloy_sol_types::private::AssertTypeEq::<
11027                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11028                    >(_) => {}
11029                }
11030            }
11031            #[automatically_derived]
11032            #[doc(hidden)]
11033            impl ::core::convert::From<renounceOwnershipCall> for UnderlyingRustTuple<'_> {
11034                fn from(value: renounceOwnershipCall) -> Self {
11035                    ()
11036                }
11037            }
11038            #[automatically_derived]
11039            #[doc(hidden)]
11040            impl ::core::convert::From<UnderlyingRustTuple<'_>> for renounceOwnershipCall {
11041                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11042                    Self
11043                }
11044            }
11045        }
11046        {
11047            #[doc(hidden)]
11048            type UnderlyingSolTuple<'a> = ();
11049            #[doc(hidden)]
11050            type UnderlyingRustTuple<'a> = ();
11051            #[cfg(test)]
11052            #[allow(dead_code, unreachable_patterns)]
11053            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
11054                match _t {
11055                    alloy_sol_types::private::AssertTypeEq::<
11056                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11057                    >(_) => {}
11058                }
11059            }
11060            #[automatically_derived]
11061            #[doc(hidden)]
11062            impl ::core::convert::From<renounceOwnershipReturn> for UnderlyingRustTuple<'_> {
11063                fn from(value: renounceOwnershipReturn) -> Self {
11064                    ()
11065                }
11066            }
11067            #[automatically_derived]
11068            #[doc(hidden)]
11069            impl ::core::convert::From<UnderlyingRustTuple<'_>> for renounceOwnershipReturn {
11070                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11071                    Self {}
11072                }
11073            }
11074        }
11075        impl renounceOwnershipReturn {
11076            fn _tokenize(
11077                &self,
11078            ) -> <renounceOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
11079                ()
11080            }
11081        }
11082        #[automatically_derived]
11083        impl alloy_sol_types::SolCall for renounceOwnershipCall {
11084            type Parameters<'a> = ();
11085            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
11086            type Return = renounceOwnershipReturn;
11087            type ReturnTuple<'a> = ();
11088            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
11089            const SIGNATURE: &'static str = "renounceOwnership()";
11090            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
11091            #[inline]
11092            fn new<'a>(
11093                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11094            ) -> Self {
11095                tuple.into()
11096            }
11097            #[inline]
11098            fn tokenize(&self) -> Self::Token<'_> {
11099                ()
11100            }
11101            #[inline]
11102            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11103                renounceOwnershipReturn::_tokenize(ret)
11104            }
11105            #[inline]
11106            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11107                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
11108                    .map(Into::into)
11109            }
11110            #[inline]
11111            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11112                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
11113                    data,
11114                )
11115                .map(Into::into)
11116            }
11117        }
11118    };
11119    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
11120    /**Function with signature `setMinWithdrawalDelayBlocks(uint256)` and selector `0x635bbd10`.
11121    ```solidity
11122    function setMinWithdrawalDelayBlocks(uint256 newMinWithdrawalDelayBlocks) external;
11123    ```*/
11124    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11125    #[derive(Clone)]
11126    pub struct setMinWithdrawalDelayBlocksCall {
11127        #[allow(missing_docs)]
11128        pub newMinWithdrawalDelayBlocks: alloy::sol_types::private::primitives::aliases::U256,
11129    }
11130    ///Container type for the return parameters of the [`setMinWithdrawalDelayBlocks(uint256)`](setMinWithdrawalDelayBlocksCall) function.
11131    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11132    #[derive(Clone)]
11133    pub struct setMinWithdrawalDelayBlocksReturn {}
11134    #[allow(
11135        non_camel_case_types,
11136        non_snake_case,
11137        clippy::pub_underscore_fields,
11138        clippy::style
11139    )]
11140    const _: () = {
11141        use alloy::sol_types as alloy_sol_types;
11142        {
11143            #[doc(hidden)]
11144            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
11145            #[doc(hidden)]
11146            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
11147            #[cfg(test)]
11148            #[allow(dead_code, unreachable_patterns)]
11149            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
11150                match _t {
11151                    alloy_sol_types::private::AssertTypeEq::<
11152                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11153                    >(_) => {}
11154                }
11155            }
11156            #[automatically_derived]
11157            #[doc(hidden)]
11158            impl ::core::convert::From<setMinWithdrawalDelayBlocksCall> for UnderlyingRustTuple<'_> {
11159                fn from(value: setMinWithdrawalDelayBlocksCall) -> Self {
11160                    (value.newMinWithdrawalDelayBlocks,)
11161                }
11162            }
11163            #[automatically_derived]
11164            #[doc(hidden)]
11165            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setMinWithdrawalDelayBlocksCall {
11166                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11167                    Self {
11168                        newMinWithdrawalDelayBlocks: tuple.0,
11169                    }
11170                }
11171            }
11172        }
11173        {
11174            #[doc(hidden)]
11175            type UnderlyingSolTuple<'a> = ();
11176            #[doc(hidden)]
11177            type UnderlyingRustTuple<'a> = ();
11178            #[cfg(test)]
11179            #[allow(dead_code, unreachable_patterns)]
11180            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
11181                match _t {
11182                    alloy_sol_types::private::AssertTypeEq::<
11183                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11184                    >(_) => {}
11185                }
11186            }
11187            #[automatically_derived]
11188            #[doc(hidden)]
11189            impl ::core::convert::From<setMinWithdrawalDelayBlocksReturn> for UnderlyingRustTuple<'_> {
11190                fn from(value: setMinWithdrawalDelayBlocksReturn) -> Self {
11191                    ()
11192                }
11193            }
11194            #[automatically_derived]
11195            #[doc(hidden)]
11196            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setMinWithdrawalDelayBlocksReturn {
11197                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11198                    Self {}
11199                }
11200            }
11201        }
11202        impl setMinWithdrawalDelayBlocksReturn {
11203            fn _tokenize(
11204                &self,
11205            ) -> <setMinWithdrawalDelayBlocksCall as alloy_sol_types::SolCall>::ReturnToken<'_>
11206            {
11207                ()
11208            }
11209        }
11210        #[automatically_derived]
11211        impl alloy_sol_types::SolCall for setMinWithdrawalDelayBlocksCall {
11212            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
11213            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
11214            type Return = setMinWithdrawalDelayBlocksReturn;
11215            type ReturnTuple<'a> = ();
11216            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
11217            const SIGNATURE: &'static str = "setMinWithdrawalDelayBlocks(uint256)";
11218            const SELECTOR: [u8; 4] = [99u8, 91u8, 189u8, 16u8];
11219            #[inline]
11220            fn new<'a>(
11221                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11222            ) -> Self {
11223                tuple.into()
11224            }
11225            #[inline]
11226            fn tokenize(&self) -> Self::Token<'_> {
11227                (
11228                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
11229                        &self.newMinWithdrawalDelayBlocks,
11230                    ),
11231                )
11232            }
11233            #[inline]
11234            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11235                setMinWithdrawalDelayBlocksReturn::_tokenize(ret)
11236            }
11237            #[inline]
11238            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11239                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
11240                    .map(Into::into)
11241            }
11242            #[inline]
11243            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11244                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
11245                    data,
11246                )
11247                .map(Into::into)
11248            }
11249        }
11250    };
11251    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
11252    /**Function with signature `setPauserRegistry(address)` and selector `0x10d67a2f`.
11253    ```solidity
11254    function setPauserRegistry(address newPauserRegistry) external;
11255    ```*/
11256    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11257    #[derive(Clone)]
11258    pub struct setPauserRegistryCall {
11259        #[allow(missing_docs)]
11260        pub newPauserRegistry: alloy::sol_types::private::Address,
11261    }
11262    ///Container type for the return parameters of the [`setPauserRegistry(address)`](setPauserRegistryCall) function.
11263    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11264    #[derive(Clone)]
11265    pub struct setPauserRegistryReturn {}
11266    #[allow(
11267        non_camel_case_types,
11268        non_snake_case,
11269        clippy::pub_underscore_fields,
11270        clippy::style
11271    )]
11272    const _: () = {
11273        use alloy::sol_types as alloy_sol_types;
11274        {
11275            #[doc(hidden)]
11276            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
11277            #[doc(hidden)]
11278            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
11279            #[cfg(test)]
11280            #[allow(dead_code, unreachable_patterns)]
11281            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
11282                match _t {
11283                    alloy_sol_types::private::AssertTypeEq::<
11284                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11285                    >(_) => {}
11286                }
11287            }
11288            #[automatically_derived]
11289            #[doc(hidden)]
11290            impl ::core::convert::From<setPauserRegistryCall> for UnderlyingRustTuple<'_> {
11291                fn from(value: setPauserRegistryCall) -> Self {
11292                    (value.newPauserRegistry,)
11293                }
11294            }
11295            #[automatically_derived]
11296            #[doc(hidden)]
11297            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setPauserRegistryCall {
11298                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11299                    Self {
11300                        newPauserRegistry: tuple.0,
11301                    }
11302                }
11303            }
11304        }
11305        {
11306            #[doc(hidden)]
11307            type UnderlyingSolTuple<'a> = ();
11308            #[doc(hidden)]
11309            type UnderlyingRustTuple<'a> = ();
11310            #[cfg(test)]
11311            #[allow(dead_code, unreachable_patterns)]
11312            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
11313                match _t {
11314                    alloy_sol_types::private::AssertTypeEq::<
11315                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11316                    >(_) => {}
11317                }
11318            }
11319            #[automatically_derived]
11320            #[doc(hidden)]
11321            impl ::core::convert::From<setPauserRegistryReturn> for UnderlyingRustTuple<'_> {
11322                fn from(value: setPauserRegistryReturn) -> Self {
11323                    ()
11324                }
11325            }
11326            #[automatically_derived]
11327            #[doc(hidden)]
11328            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setPauserRegistryReturn {
11329                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11330                    Self {}
11331                }
11332            }
11333        }
11334        impl setPauserRegistryReturn {
11335            fn _tokenize(
11336                &self,
11337            ) -> <setPauserRegistryCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
11338                ()
11339            }
11340        }
11341        #[automatically_derived]
11342        impl alloy_sol_types::SolCall for setPauserRegistryCall {
11343            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
11344            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
11345            type Return = setPauserRegistryReturn;
11346            type ReturnTuple<'a> = ();
11347            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
11348            const SIGNATURE: &'static str = "setPauserRegistry(address)";
11349            const SELECTOR: [u8; 4] = [16u8, 214u8, 122u8, 47u8];
11350            #[inline]
11351            fn new<'a>(
11352                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11353            ) -> Self {
11354                tuple.into()
11355            }
11356            #[inline]
11357            fn tokenize(&self) -> Self::Token<'_> {
11358                (
11359                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11360                        &self.newPauserRegistry,
11361                    ),
11362                )
11363            }
11364            #[inline]
11365            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11366                setPauserRegistryReturn::_tokenize(ret)
11367            }
11368            #[inline]
11369            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11370                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
11371                    .map(Into::into)
11372            }
11373            #[inline]
11374            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11375                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
11376                    data,
11377                )
11378                .map(Into::into)
11379            }
11380        }
11381    };
11382    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
11383    /**Function with signature `setStrategyWithdrawalDelayBlocks(address[],uint256[])` and selector `0x1522bf02`.
11384    ```solidity
11385    function setStrategyWithdrawalDelayBlocks(address[] memory strategies, uint256[] memory withdrawalDelayBlocks) external;
11386    ```*/
11387    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11388    #[derive(Clone)]
11389    pub struct setStrategyWithdrawalDelayBlocksCall {
11390        #[allow(missing_docs)]
11391        pub strategies: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
11392        #[allow(missing_docs)]
11393        pub withdrawalDelayBlocks:
11394            alloy::sol_types::private::Vec<alloy::sol_types::private::primitives::aliases::U256>,
11395    }
11396    ///Container type for the return parameters of the [`setStrategyWithdrawalDelayBlocks(address[],uint256[])`](setStrategyWithdrawalDelayBlocksCall) function.
11397    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11398    #[derive(Clone)]
11399    pub struct setStrategyWithdrawalDelayBlocksReturn {}
11400    #[allow(
11401        non_camel_case_types,
11402        non_snake_case,
11403        clippy::pub_underscore_fields,
11404        clippy::style
11405    )]
11406    const _: () = {
11407        use alloy::sol_types as alloy_sol_types;
11408        {
11409            #[doc(hidden)]
11410            type UnderlyingSolTuple<'a> = (
11411                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
11412                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
11413            );
11414            #[doc(hidden)]
11415            type UnderlyingRustTuple<'a> = (
11416                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
11417                alloy::sol_types::private::Vec<
11418                    alloy::sol_types::private::primitives::aliases::U256,
11419                >,
11420            );
11421            #[cfg(test)]
11422            #[allow(dead_code, unreachable_patterns)]
11423            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
11424                match _t {
11425                    alloy_sol_types::private::AssertTypeEq::<
11426                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11427                    >(_) => {}
11428                }
11429            }
11430            #[automatically_derived]
11431            #[doc(hidden)]
11432            impl ::core::convert::From<setStrategyWithdrawalDelayBlocksCall> for UnderlyingRustTuple<'_> {
11433                fn from(value: setStrategyWithdrawalDelayBlocksCall) -> Self {
11434                    (value.strategies, value.withdrawalDelayBlocks)
11435                }
11436            }
11437            #[automatically_derived]
11438            #[doc(hidden)]
11439            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setStrategyWithdrawalDelayBlocksCall {
11440                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11441                    Self {
11442                        strategies: tuple.0,
11443                        withdrawalDelayBlocks: tuple.1,
11444                    }
11445                }
11446            }
11447        }
11448        {
11449            #[doc(hidden)]
11450            type UnderlyingSolTuple<'a> = ();
11451            #[doc(hidden)]
11452            type UnderlyingRustTuple<'a> = ();
11453            #[cfg(test)]
11454            #[allow(dead_code, unreachable_patterns)]
11455            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
11456                match _t {
11457                    alloy_sol_types::private::AssertTypeEq::<
11458                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11459                    >(_) => {}
11460                }
11461            }
11462            #[automatically_derived]
11463            #[doc(hidden)]
11464            impl ::core::convert::From<setStrategyWithdrawalDelayBlocksReturn> for UnderlyingRustTuple<'_> {
11465                fn from(value: setStrategyWithdrawalDelayBlocksReturn) -> Self {
11466                    ()
11467                }
11468            }
11469            #[automatically_derived]
11470            #[doc(hidden)]
11471            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setStrategyWithdrawalDelayBlocksReturn {
11472                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11473                    Self {}
11474                }
11475            }
11476        }
11477        impl setStrategyWithdrawalDelayBlocksReturn {
11478            fn _tokenize(
11479                &self,
11480            ) -> <setStrategyWithdrawalDelayBlocksCall as alloy_sol_types::SolCall>::ReturnToken<'_>
11481            {
11482                ()
11483            }
11484        }
11485        #[automatically_derived]
11486        impl alloy_sol_types::SolCall for setStrategyWithdrawalDelayBlocksCall {
11487            type Parameters<'a> = (
11488                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
11489                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
11490            );
11491            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
11492            type Return = setStrategyWithdrawalDelayBlocksReturn;
11493            type ReturnTuple<'a> = ();
11494            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
11495            const SIGNATURE: &'static str = "setStrategyWithdrawalDelayBlocks(address[],uint256[])";
11496            const SELECTOR: [u8; 4] = [21u8, 34u8, 191u8, 2u8];
11497            #[inline]
11498            fn new<'a>(
11499                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11500            ) -> Self {
11501                tuple.into()
11502            }
11503            #[inline]
11504            fn tokenize(&self) -> Self::Token<'_> {
11505                (
11506                    <alloy::sol_types::sol_data::Array<
11507                        alloy::sol_types::sol_data::Address,
11508                    > as alloy_sol_types::SolType>::tokenize(&self.strategies),
11509                    <alloy::sol_types::sol_data::Array<
11510                        alloy::sol_types::sol_data::Uint<256>,
11511                    > as alloy_sol_types::SolType>::tokenize(&self.withdrawalDelayBlocks),
11512                )
11513            }
11514            #[inline]
11515            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11516                setStrategyWithdrawalDelayBlocksReturn::_tokenize(ret)
11517            }
11518            #[inline]
11519            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11520                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
11521                    .map(Into::into)
11522            }
11523            #[inline]
11524            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11525                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
11526                    data,
11527                )
11528                .map(Into::into)
11529            }
11530        }
11531    };
11532    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
11533    /**Function with signature `slasher()` and selector `0xb1344271`.
11534    ```solidity
11535    function slasher() external view returns (address);
11536    ```*/
11537    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11538    #[derive(Clone)]
11539    pub struct slasherCall;
11540    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
11541    ///Container type for the return parameters of the [`slasher()`](slasherCall) function.
11542    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11543    #[derive(Clone)]
11544    pub struct slasherReturn {
11545        #[allow(missing_docs)]
11546        pub _0: alloy::sol_types::private::Address,
11547    }
11548    #[allow(
11549        non_camel_case_types,
11550        non_snake_case,
11551        clippy::pub_underscore_fields,
11552        clippy::style
11553    )]
11554    const _: () = {
11555        use alloy::sol_types as alloy_sol_types;
11556        {
11557            #[doc(hidden)]
11558            type UnderlyingSolTuple<'a> = ();
11559            #[doc(hidden)]
11560            type UnderlyingRustTuple<'a> = ();
11561            #[cfg(test)]
11562            #[allow(dead_code, unreachable_patterns)]
11563            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
11564                match _t {
11565                    alloy_sol_types::private::AssertTypeEq::<
11566                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11567                    >(_) => {}
11568                }
11569            }
11570            #[automatically_derived]
11571            #[doc(hidden)]
11572            impl ::core::convert::From<slasherCall> for UnderlyingRustTuple<'_> {
11573                fn from(value: slasherCall) -> Self {
11574                    ()
11575                }
11576            }
11577            #[automatically_derived]
11578            #[doc(hidden)]
11579            impl ::core::convert::From<UnderlyingRustTuple<'_>> for slasherCall {
11580                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11581                    Self
11582                }
11583            }
11584        }
11585        {
11586            #[doc(hidden)]
11587            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
11588            #[doc(hidden)]
11589            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
11590            #[cfg(test)]
11591            #[allow(dead_code, unreachable_patterns)]
11592            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
11593                match _t {
11594                    alloy_sol_types::private::AssertTypeEq::<
11595                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11596                    >(_) => {}
11597                }
11598            }
11599            #[automatically_derived]
11600            #[doc(hidden)]
11601            impl ::core::convert::From<slasherReturn> for UnderlyingRustTuple<'_> {
11602                fn from(value: slasherReturn) -> Self {
11603                    (value._0,)
11604                }
11605            }
11606            #[automatically_derived]
11607            #[doc(hidden)]
11608            impl ::core::convert::From<UnderlyingRustTuple<'_>> for slasherReturn {
11609                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11610                    Self { _0: tuple.0 }
11611                }
11612            }
11613        }
11614        #[automatically_derived]
11615        impl alloy_sol_types::SolCall for slasherCall {
11616            type Parameters<'a> = ();
11617            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
11618            type Return = alloy::sol_types::private::Address;
11619            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
11620            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
11621            const SIGNATURE: &'static str = "slasher()";
11622            const SELECTOR: [u8; 4] = [177u8, 52u8, 66u8, 113u8];
11623            #[inline]
11624            fn new<'a>(
11625                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11626            ) -> Self {
11627                tuple.into()
11628            }
11629            #[inline]
11630            fn tokenize(&self) -> Self::Token<'_> {
11631                ()
11632            }
11633            #[inline]
11634            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11635                (
11636                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11637                        ret,
11638                    ),
11639                )
11640            }
11641            #[inline]
11642            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11643                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
11644                    |r| {
11645                        let r: slasherReturn = r.into();
11646                        r._0
11647                    },
11648                )
11649            }
11650            #[inline]
11651            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11652                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
11653                    data,
11654                )
11655                .map(|r| {
11656                    let r: slasherReturn = r.into();
11657                    r._0
11658                })
11659            }
11660        }
11661    };
11662    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
11663    /**Function with signature `stakerNonce(address)` and selector `0x29c77d4f`.
11664    ```solidity
11665    function stakerNonce(address) external view returns (uint256);
11666    ```*/
11667    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11668    #[derive(Clone)]
11669    pub struct stakerNonceCall(pub alloy::sol_types::private::Address);
11670    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
11671    ///Container type for the return parameters of the [`stakerNonce(address)`](stakerNonceCall) function.
11672    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11673    #[derive(Clone)]
11674    pub struct stakerNonceReturn {
11675        #[allow(missing_docs)]
11676        pub _0: alloy::sol_types::private::primitives::aliases::U256,
11677    }
11678    #[allow(
11679        non_camel_case_types,
11680        non_snake_case,
11681        clippy::pub_underscore_fields,
11682        clippy::style
11683    )]
11684    const _: () = {
11685        use alloy::sol_types as alloy_sol_types;
11686        {
11687            #[doc(hidden)]
11688            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
11689            #[doc(hidden)]
11690            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
11691            #[cfg(test)]
11692            #[allow(dead_code, unreachable_patterns)]
11693            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
11694                match _t {
11695                    alloy_sol_types::private::AssertTypeEq::<
11696                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11697                    >(_) => {}
11698                }
11699            }
11700            #[automatically_derived]
11701            #[doc(hidden)]
11702            impl ::core::convert::From<stakerNonceCall> for UnderlyingRustTuple<'_> {
11703                fn from(value: stakerNonceCall) -> Self {
11704                    (value.0,)
11705                }
11706            }
11707            #[automatically_derived]
11708            #[doc(hidden)]
11709            impl ::core::convert::From<UnderlyingRustTuple<'_>> for stakerNonceCall {
11710                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11711                    Self(tuple.0)
11712                }
11713            }
11714        }
11715        {
11716            #[doc(hidden)]
11717            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
11718            #[doc(hidden)]
11719            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
11720            #[cfg(test)]
11721            #[allow(dead_code, unreachable_patterns)]
11722            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
11723                match _t {
11724                    alloy_sol_types::private::AssertTypeEq::<
11725                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11726                    >(_) => {}
11727                }
11728            }
11729            #[automatically_derived]
11730            #[doc(hidden)]
11731            impl ::core::convert::From<stakerNonceReturn> for UnderlyingRustTuple<'_> {
11732                fn from(value: stakerNonceReturn) -> Self {
11733                    (value._0,)
11734                }
11735            }
11736            #[automatically_derived]
11737            #[doc(hidden)]
11738            impl ::core::convert::From<UnderlyingRustTuple<'_>> for stakerNonceReturn {
11739                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11740                    Self { _0: tuple.0 }
11741                }
11742            }
11743        }
11744        #[automatically_derived]
11745        impl alloy_sol_types::SolCall for stakerNonceCall {
11746            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
11747            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
11748            type Return = alloy::sol_types::private::primitives::aliases::U256;
11749            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
11750            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
11751            const SIGNATURE: &'static str = "stakerNonce(address)";
11752            const SELECTOR: [u8; 4] = [41u8, 199u8, 125u8, 79u8];
11753            #[inline]
11754            fn new<'a>(
11755                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11756            ) -> Self {
11757                tuple.into()
11758            }
11759            #[inline]
11760            fn tokenize(&self) -> Self::Token<'_> {
11761                (
11762                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11763                        &self.0,
11764                    ),
11765                )
11766            }
11767            #[inline]
11768            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11769                (
11770                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
11771                        ret,
11772                    ),
11773                )
11774            }
11775            #[inline]
11776            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11777                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
11778                    |r| {
11779                        let r: stakerNonceReturn = r.into();
11780                        r._0
11781                    },
11782                )
11783            }
11784            #[inline]
11785            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11786                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
11787                    data,
11788                )
11789                .map(|r| {
11790                    let r: stakerNonceReturn = r.into();
11791                    r._0
11792                })
11793            }
11794        }
11795    };
11796    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
11797    /**Function with signature `stakerOptOutWindowBlocks(address)` and selector `0x16928365`.
11798    ```solidity
11799    function stakerOptOutWindowBlocks(address operator) external view returns (uint256);
11800    ```*/
11801    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11802    #[derive(Clone)]
11803    pub struct stakerOptOutWindowBlocksCall {
11804        #[allow(missing_docs)]
11805        pub operator: alloy::sol_types::private::Address,
11806    }
11807    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
11808    ///Container type for the return parameters of the [`stakerOptOutWindowBlocks(address)`](stakerOptOutWindowBlocksCall) function.
11809    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11810    #[derive(Clone)]
11811    pub struct stakerOptOutWindowBlocksReturn {
11812        #[allow(missing_docs)]
11813        pub _0: alloy::sol_types::private::primitives::aliases::U256,
11814    }
11815    #[allow(
11816        non_camel_case_types,
11817        non_snake_case,
11818        clippy::pub_underscore_fields,
11819        clippy::style
11820    )]
11821    const _: () = {
11822        use alloy::sol_types as alloy_sol_types;
11823        {
11824            #[doc(hidden)]
11825            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
11826            #[doc(hidden)]
11827            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
11828            #[cfg(test)]
11829            #[allow(dead_code, unreachable_patterns)]
11830            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
11831                match _t {
11832                    alloy_sol_types::private::AssertTypeEq::<
11833                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11834                    >(_) => {}
11835                }
11836            }
11837            #[automatically_derived]
11838            #[doc(hidden)]
11839            impl ::core::convert::From<stakerOptOutWindowBlocksCall> for UnderlyingRustTuple<'_> {
11840                fn from(value: stakerOptOutWindowBlocksCall) -> Self {
11841                    (value.operator,)
11842                }
11843            }
11844            #[automatically_derived]
11845            #[doc(hidden)]
11846            impl ::core::convert::From<UnderlyingRustTuple<'_>> for stakerOptOutWindowBlocksCall {
11847                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11848                    Self { operator: tuple.0 }
11849                }
11850            }
11851        }
11852        {
11853            #[doc(hidden)]
11854            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
11855            #[doc(hidden)]
11856            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
11857            #[cfg(test)]
11858            #[allow(dead_code, unreachable_patterns)]
11859            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
11860                match _t {
11861                    alloy_sol_types::private::AssertTypeEq::<
11862                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11863                    >(_) => {}
11864                }
11865            }
11866            #[automatically_derived]
11867            #[doc(hidden)]
11868            impl ::core::convert::From<stakerOptOutWindowBlocksReturn> for UnderlyingRustTuple<'_> {
11869                fn from(value: stakerOptOutWindowBlocksReturn) -> Self {
11870                    (value._0,)
11871                }
11872            }
11873            #[automatically_derived]
11874            #[doc(hidden)]
11875            impl ::core::convert::From<UnderlyingRustTuple<'_>> for stakerOptOutWindowBlocksReturn {
11876                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11877                    Self { _0: tuple.0 }
11878                }
11879            }
11880        }
11881        #[automatically_derived]
11882        impl alloy_sol_types::SolCall for stakerOptOutWindowBlocksCall {
11883            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
11884            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
11885            type Return = alloy::sol_types::private::primitives::aliases::U256;
11886            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
11887            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
11888            const SIGNATURE: &'static str = "stakerOptOutWindowBlocks(address)";
11889            const SELECTOR: [u8; 4] = [22u8, 146u8, 131u8, 101u8];
11890            #[inline]
11891            fn new<'a>(
11892                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11893            ) -> Self {
11894                tuple.into()
11895            }
11896            #[inline]
11897            fn tokenize(&self) -> Self::Token<'_> {
11898                (
11899                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11900                        &self.operator,
11901                    ),
11902                )
11903            }
11904            #[inline]
11905            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11906                (
11907                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
11908                        ret,
11909                    ),
11910                )
11911            }
11912            #[inline]
11913            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11914                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
11915                    |r| {
11916                        let r: stakerOptOutWindowBlocksReturn = r.into();
11917                        r._0
11918                    },
11919                )
11920            }
11921            #[inline]
11922            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11923                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
11924                    data,
11925                )
11926                .map(|r| {
11927                    let r: stakerOptOutWindowBlocksReturn = r.into();
11928                    r._0
11929                })
11930            }
11931        }
11932    };
11933    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
11934    /**Function with signature `strategyManager()` and selector `0x39b70e38`.
11935    ```solidity
11936    function strategyManager() external view returns (address);
11937    ```*/
11938    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11939    #[derive(Clone)]
11940    pub struct strategyManagerCall;
11941    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
11942    ///Container type for the return parameters of the [`strategyManager()`](strategyManagerCall) function.
11943    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11944    #[derive(Clone)]
11945    pub struct strategyManagerReturn {
11946        #[allow(missing_docs)]
11947        pub _0: alloy::sol_types::private::Address,
11948    }
11949    #[allow(
11950        non_camel_case_types,
11951        non_snake_case,
11952        clippy::pub_underscore_fields,
11953        clippy::style
11954    )]
11955    const _: () = {
11956        use alloy::sol_types as alloy_sol_types;
11957        {
11958            #[doc(hidden)]
11959            type UnderlyingSolTuple<'a> = ();
11960            #[doc(hidden)]
11961            type UnderlyingRustTuple<'a> = ();
11962            #[cfg(test)]
11963            #[allow(dead_code, unreachable_patterns)]
11964            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
11965                match _t {
11966                    alloy_sol_types::private::AssertTypeEq::<
11967                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11968                    >(_) => {}
11969                }
11970            }
11971            #[automatically_derived]
11972            #[doc(hidden)]
11973            impl ::core::convert::From<strategyManagerCall> for UnderlyingRustTuple<'_> {
11974                fn from(value: strategyManagerCall) -> Self {
11975                    ()
11976                }
11977            }
11978            #[automatically_derived]
11979            #[doc(hidden)]
11980            impl ::core::convert::From<UnderlyingRustTuple<'_>> for strategyManagerCall {
11981                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11982                    Self
11983                }
11984            }
11985        }
11986        {
11987            #[doc(hidden)]
11988            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
11989            #[doc(hidden)]
11990            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
11991            #[cfg(test)]
11992            #[allow(dead_code, unreachable_patterns)]
11993            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
11994                match _t {
11995                    alloy_sol_types::private::AssertTypeEq::<
11996                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11997                    >(_) => {}
11998                }
11999            }
12000            #[automatically_derived]
12001            #[doc(hidden)]
12002            impl ::core::convert::From<strategyManagerReturn> for UnderlyingRustTuple<'_> {
12003                fn from(value: strategyManagerReturn) -> Self {
12004                    (value._0,)
12005                }
12006            }
12007            #[automatically_derived]
12008            #[doc(hidden)]
12009            impl ::core::convert::From<UnderlyingRustTuple<'_>> for strategyManagerReturn {
12010                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12011                    Self { _0: tuple.0 }
12012                }
12013            }
12014        }
12015        #[automatically_derived]
12016        impl alloy_sol_types::SolCall for strategyManagerCall {
12017            type Parameters<'a> = ();
12018            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
12019            type Return = alloy::sol_types::private::Address;
12020            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
12021            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
12022            const SIGNATURE: &'static str = "strategyManager()";
12023            const SELECTOR: [u8; 4] = [57u8, 183u8, 14u8, 56u8];
12024            #[inline]
12025            fn new<'a>(
12026                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12027            ) -> Self {
12028                tuple.into()
12029            }
12030            #[inline]
12031            fn tokenize(&self) -> Self::Token<'_> {
12032                ()
12033            }
12034            #[inline]
12035            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12036                (
12037                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
12038                        ret,
12039                    ),
12040                )
12041            }
12042            #[inline]
12043            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12044                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
12045                    |r| {
12046                        let r: strategyManagerReturn = r.into();
12047                        r._0
12048                    },
12049                )
12050            }
12051            #[inline]
12052            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12053                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
12054                    data,
12055                )
12056                .map(|r| {
12057                    let r: strategyManagerReturn = r.into();
12058                    r._0
12059                })
12060            }
12061        }
12062    };
12063    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
12064    /**Function with signature `strategyWithdrawalDelayBlocks(address)` and selector `0xc488375a`.
12065    ```solidity
12066    function strategyWithdrawalDelayBlocks(address) external view returns (uint256);
12067    ```*/
12068    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12069    #[derive(Clone)]
12070    pub struct strategyWithdrawalDelayBlocksCall(pub alloy::sol_types::private::Address);
12071    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
12072    ///Container type for the return parameters of the [`strategyWithdrawalDelayBlocks(address)`](strategyWithdrawalDelayBlocksCall) function.
12073    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12074    #[derive(Clone)]
12075    pub struct strategyWithdrawalDelayBlocksReturn {
12076        #[allow(missing_docs)]
12077        pub _0: alloy::sol_types::private::primitives::aliases::U256,
12078    }
12079    #[allow(
12080        non_camel_case_types,
12081        non_snake_case,
12082        clippy::pub_underscore_fields,
12083        clippy::style
12084    )]
12085    const _: () = {
12086        use alloy::sol_types as alloy_sol_types;
12087        {
12088            #[doc(hidden)]
12089            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
12090            #[doc(hidden)]
12091            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
12092            #[cfg(test)]
12093            #[allow(dead_code, unreachable_patterns)]
12094            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
12095                match _t {
12096                    alloy_sol_types::private::AssertTypeEq::<
12097                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12098                    >(_) => {}
12099                }
12100            }
12101            #[automatically_derived]
12102            #[doc(hidden)]
12103            impl ::core::convert::From<strategyWithdrawalDelayBlocksCall> for UnderlyingRustTuple<'_> {
12104                fn from(value: strategyWithdrawalDelayBlocksCall) -> Self {
12105                    (value.0,)
12106                }
12107            }
12108            #[automatically_derived]
12109            #[doc(hidden)]
12110            impl ::core::convert::From<UnderlyingRustTuple<'_>> for strategyWithdrawalDelayBlocksCall {
12111                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12112                    Self(tuple.0)
12113                }
12114            }
12115        }
12116        {
12117            #[doc(hidden)]
12118            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
12119            #[doc(hidden)]
12120            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
12121            #[cfg(test)]
12122            #[allow(dead_code, unreachable_patterns)]
12123            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
12124                match _t {
12125                    alloy_sol_types::private::AssertTypeEq::<
12126                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12127                    >(_) => {}
12128                }
12129            }
12130            #[automatically_derived]
12131            #[doc(hidden)]
12132            impl ::core::convert::From<strategyWithdrawalDelayBlocksReturn> for UnderlyingRustTuple<'_> {
12133                fn from(value: strategyWithdrawalDelayBlocksReturn) -> Self {
12134                    (value._0,)
12135                }
12136            }
12137            #[automatically_derived]
12138            #[doc(hidden)]
12139            impl ::core::convert::From<UnderlyingRustTuple<'_>> for strategyWithdrawalDelayBlocksReturn {
12140                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12141                    Self { _0: tuple.0 }
12142                }
12143            }
12144        }
12145        #[automatically_derived]
12146        impl alloy_sol_types::SolCall for strategyWithdrawalDelayBlocksCall {
12147            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
12148            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
12149            type Return = alloy::sol_types::private::primitives::aliases::U256;
12150            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
12151            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
12152            const SIGNATURE: &'static str = "strategyWithdrawalDelayBlocks(address)";
12153            const SELECTOR: [u8; 4] = [196u8, 136u8, 55u8, 90u8];
12154            #[inline]
12155            fn new<'a>(
12156                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12157            ) -> Self {
12158                tuple.into()
12159            }
12160            #[inline]
12161            fn tokenize(&self) -> Self::Token<'_> {
12162                (
12163                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
12164                        &self.0,
12165                    ),
12166                )
12167            }
12168            #[inline]
12169            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12170                (
12171                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
12172                        ret,
12173                    ),
12174                )
12175            }
12176            #[inline]
12177            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12178                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
12179                    |r| {
12180                        let r: strategyWithdrawalDelayBlocksReturn = r.into();
12181                        r._0
12182                    },
12183                )
12184            }
12185            #[inline]
12186            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12187                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
12188                    data,
12189                )
12190                .map(|r| {
12191                    let r: strategyWithdrawalDelayBlocksReturn = r.into();
12192                    r._0
12193                })
12194            }
12195        }
12196    };
12197    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
12198    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
12199    ```solidity
12200    function transferOwnership(address newOwner) external;
12201    ```*/
12202    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12203    #[derive(Clone)]
12204    pub struct transferOwnershipCall {
12205        #[allow(missing_docs)]
12206        pub newOwner: alloy::sol_types::private::Address,
12207    }
12208    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
12209    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12210    #[derive(Clone)]
12211    pub struct transferOwnershipReturn {}
12212    #[allow(
12213        non_camel_case_types,
12214        non_snake_case,
12215        clippy::pub_underscore_fields,
12216        clippy::style
12217    )]
12218    const _: () = {
12219        use alloy::sol_types as alloy_sol_types;
12220        {
12221            #[doc(hidden)]
12222            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
12223            #[doc(hidden)]
12224            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
12225            #[cfg(test)]
12226            #[allow(dead_code, unreachable_patterns)]
12227            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
12228                match _t {
12229                    alloy_sol_types::private::AssertTypeEq::<
12230                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12231                    >(_) => {}
12232                }
12233            }
12234            #[automatically_derived]
12235            #[doc(hidden)]
12236            impl ::core::convert::From<transferOwnershipCall> for UnderlyingRustTuple<'_> {
12237                fn from(value: transferOwnershipCall) -> Self {
12238                    (value.newOwner,)
12239                }
12240            }
12241            #[automatically_derived]
12242            #[doc(hidden)]
12243            impl ::core::convert::From<UnderlyingRustTuple<'_>> for transferOwnershipCall {
12244                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12245                    Self { newOwner: tuple.0 }
12246                }
12247            }
12248        }
12249        {
12250            #[doc(hidden)]
12251            type UnderlyingSolTuple<'a> = ();
12252            #[doc(hidden)]
12253            type UnderlyingRustTuple<'a> = ();
12254            #[cfg(test)]
12255            #[allow(dead_code, unreachable_patterns)]
12256            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
12257                match _t {
12258                    alloy_sol_types::private::AssertTypeEq::<
12259                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12260                    >(_) => {}
12261                }
12262            }
12263            #[automatically_derived]
12264            #[doc(hidden)]
12265            impl ::core::convert::From<transferOwnershipReturn> for UnderlyingRustTuple<'_> {
12266                fn from(value: transferOwnershipReturn) -> Self {
12267                    ()
12268                }
12269            }
12270            #[automatically_derived]
12271            #[doc(hidden)]
12272            impl ::core::convert::From<UnderlyingRustTuple<'_>> for transferOwnershipReturn {
12273                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12274                    Self {}
12275                }
12276            }
12277        }
12278        impl transferOwnershipReturn {
12279            fn _tokenize(
12280                &self,
12281            ) -> <transferOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
12282                ()
12283            }
12284        }
12285        #[automatically_derived]
12286        impl alloy_sol_types::SolCall for transferOwnershipCall {
12287            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
12288            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
12289            type Return = transferOwnershipReturn;
12290            type ReturnTuple<'a> = ();
12291            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
12292            const SIGNATURE: &'static str = "transferOwnership(address)";
12293            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
12294            #[inline]
12295            fn new<'a>(
12296                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12297            ) -> Self {
12298                tuple.into()
12299            }
12300            #[inline]
12301            fn tokenize(&self) -> Self::Token<'_> {
12302                (
12303                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
12304                        &self.newOwner,
12305                    ),
12306                )
12307            }
12308            #[inline]
12309            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12310                transferOwnershipReturn::_tokenize(ret)
12311            }
12312            #[inline]
12313            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12314                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
12315                    .map(Into::into)
12316            }
12317            #[inline]
12318            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12319                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
12320                    data,
12321                )
12322                .map(Into::into)
12323            }
12324        }
12325    };
12326    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
12327    /**Function with signature `undelegate(address)` and selector `0xda8be864`.
12328    ```solidity
12329    function undelegate(address staker) external returns (bytes32[] memory withdrawalRoots);
12330    ```*/
12331    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12332    #[derive(Clone)]
12333    pub struct undelegateCall {
12334        #[allow(missing_docs)]
12335        pub staker: alloy::sol_types::private::Address,
12336    }
12337    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
12338    ///Container type for the return parameters of the [`undelegate(address)`](undelegateCall) function.
12339    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12340    #[derive(Clone)]
12341    pub struct undelegateReturn {
12342        #[allow(missing_docs)]
12343        pub withdrawalRoots:
12344            alloy::sol_types::private::Vec<alloy::sol_types::private::FixedBytes<32>>,
12345    }
12346    #[allow(
12347        non_camel_case_types,
12348        non_snake_case,
12349        clippy::pub_underscore_fields,
12350        clippy::style
12351    )]
12352    const _: () = {
12353        use alloy::sol_types as alloy_sol_types;
12354        {
12355            #[doc(hidden)]
12356            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
12357            #[doc(hidden)]
12358            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
12359            #[cfg(test)]
12360            #[allow(dead_code, unreachable_patterns)]
12361            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
12362                match _t {
12363                    alloy_sol_types::private::AssertTypeEq::<
12364                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12365                    >(_) => {}
12366                }
12367            }
12368            #[automatically_derived]
12369            #[doc(hidden)]
12370            impl ::core::convert::From<undelegateCall> for UnderlyingRustTuple<'_> {
12371                fn from(value: undelegateCall) -> Self {
12372                    (value.staker,)
12373                }
12374            }
12375            #[automatically_derived]
12376            #[doc(hidden)]
12377            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegateCall {
12378                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12379                    Self { staker: tuple.0 }
12380                }
12381            }
12382        }
12383        {
12384            #[doc(hidden)]
12385            type UnderlyingSolTuple<'a> =
12386                (alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::FixedBytes<32>>,);
12387            #[doc(hidden)]
12388            type UnderlyingRustTuple<'a> =
12389                (alloy::sol_types::private::Vec<alloy::sol_types::private::FixedBytes<32>>,);
12390            #[cfg(test)]
12391            #[allow(dead_code, unreachable_patterns)]
12392            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
12393                match _t {
12394                    alloy_sol_types::private::AssertTypeEq::<
12395                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12396                    >(_) => {}
12397                }
12398            }
12399            #[automatically_derived]
12400            #[doc(hidden)]
12401            impl ::core::convert::From<undelegateReturn> for UnderlyingRustTuple<'_> {
12402                fn from(value: undelegateReturn) -> Self {
12403                    (value.withdrawalRoots,)
12404                }
12405            }
12406            #[automatically_derived]
12407            #[doc(hidden)]
12408            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegateReturn {
12409                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12410                    Self {
12411                        withdrawalRoots: tuple.0,
12412                    }
12413                }
12414            }
12415        }
12416        #[automatically_derived]
12417        impl alloy_sol_types::SolCall for undelegateCall {
12418            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
12419            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
12420            type Return = alloy::sol_types::private::Vec<alloy::sol_types::private::FixedBytes<32>>;
12421            type ReturnTuple<'a> =
12422                (alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::FixedBytes<32>>,);
12423            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
12424            const SIGNATURE: &'static str = "undelegate(address)";
12425            const SELECTOR: [u8; 4] = [218u8, 139u8, 232u8, 100u8];
12426            #[inline]
12427            fn new<'a>(
12428                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12429            ) -> Self {
12430                tuple.into()
12431            }
12432            #[inline]
12433            fn tokenize(&self) -> Self::Token<'_> {
12434                (
12435                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
12436                        &self.staker,
12437                    ),
12438                )
12439            }
12440            #[inline]
12441            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12442                (<alloy::sol_types::sol_data::Array<
12443                    alloy::sol_types::sol_data::FixedBytes<32>,
12444                > as alloy_sol_types::SolType>::tokenize(ret),)
12445            }
12446            #[inline]
12447            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12448                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
12449                    |r| {
12450                        let r: undelegateReturn = r.into();
12451                        r.withdrawalRoots
12452                    },
12453                )
12454            }
12455            #[inline]
12456            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12457                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
12458                    data,
12459                )
12460                .map(|r| {
12461                    let r: undelegateReturn = r.into();
12462                    r.withdrawalRoots
12463                })
12464            }
12465        }
12466    };
12467    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
12468    /**Function with signature `unpause(uint256)` and selector `0xfabc1cbc`.
12469    ```solidity
12470    function unpause(uint256 newPausedStatus) external;
12471    ```*/
12472    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12473    #[derive(Clone)]
12474    pub struct unpauseCall {
12475        #[allow(missing_docs)]
12476        pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256,
12477    }
12478    ///Container type for the return parameters of the [`unpause(uint256)`](unpauseCall) function.
12479    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12480    #[derive(Clone)]
12481    pub struct unpauseReturn {}
12482    #[allow(
12483        non_camel_case_types,
12484        non_snake_case,
12485        clippy::pub_underscore_fields,
12486        clippy::style
12487    )]
12488    const _: () = {
12489        use alloy::sol_types as alloy_sol_types;
12490        {
12491            #[doc(hidden)]
12492            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
12493            #[doc(hidden)]
12494            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
12495            #[cfg(test)]
12496            #[allow(dead_code, unreachable_patterns)]
12497            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
12498                match _t {
12499                    alloy_sol_types::private::AssertTypeEq::<
12500                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12501                    >(_) => {}
12502                }
12503            }
12504            #[automatically_derived]
12505            #[doc(hidden)]
12506            impl ::core::convert::From<unpauseCall> for UnderlyingRustTuple<'_> {
12507                fn from(value: unpauseCall) -> Self {
12508                    (value.newPausedStatus,)
12509                }
12510            }
12511            #[automatically_derived]
12512            #[doc(hidden)]
12513            impl ::core::convert::From<UnderlyingRustTuple<'_>> for unpauseCall {
12514                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12515                    Self {
12516                        newPausedStatus: tuple.0,
12517                    }
12518                }
12519            }
12520        }
12521        {
12522            #[doc(hidden)]
12523            type UnderlyingSolTuple<'a> = ();
12524            #[doc(hidden)]
12525            type UnderlyingRustTuple<'a> = ();
12526            #[cfg(test)]
12527            #[allow(dead_code, unreachable_patterns)]
12528            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
12529                match _t {
12530                    alloy_sol_types::private::AssertTypeEq::<
12531                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12532                    >(_) => {}
12533                }
12534            }
12535            #[automatically_derived]
12536            #[doc(hidden)]
12537            impl ::core::convert::From<unpauseReturn> for UnderlyingRustTuple<'_> {
12538                fn from(value: unpauseReturn) -> Self {
12539                    ()
12540                }
12541            }
12542            #[automatically_derived]
12543            #[doc(hidden)]
12544            impl ::core::convert::From<UnderlyingRustTuple<'_>> for unpauseReturn {
12545                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12546                    Self {}
12547                }
12548            }
12549        }
12550        impl unpauseReturn {
12551            fn _tokenize(&self) -> <unpauseCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
12552                ()
12553            }
12554        }
12555        #[automatically_derived]
12556        impl alloy_sol_types::SolCall for unpauseCall {
12557            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
12558            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
12559            type Return = unpauseReturn;
12560            type ReturnTuple<'a> = ();
12561            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
12562            const SIGNATURE: &'static str = "unpause(uint256)";
12563            const SELECTOR: [u8; 4] = [250u8, 188u8, 28u8, 188u8];
12564            #[inline]
12565            fn new<'a>(
12566                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12567            ) -> Self {
12568                tuple.into()
12569            }
12570            #[inline]
12571            fn tokenize(&self) -> Self::Token<'_> {
12572                (
12573                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
12574                        &self.newPausedStatus,
12575                    ),
12576                )
12577            }
12578            #[inline]
12579            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12580                unpauseReturn::_tokenize(ret)
12581            }
12582            #[inline]
12583            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12584                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
12585                    .map(Into::into)
12586            }
12587            #[inline]
12588            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12589                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
12590                    data,
12591                )
12592                .map(Into::into)
12593            }
12594        }
12595    };
12596    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
12597    /**Function with signature `updateOperatorMetadataURI(string)` and selector `0x99be81c8`.
12598    ```solidity
12599    function updateOperatorMetadataURI(string memory metadataURI) external;
12600    ```*/
12601    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12602    #[derive(Clone)]
12603    pub struct updateOperatorMetadataURICall {
12604        #[allow(missing_docs)]
12605        pub metadataURI: alloy::sol_types::private::String,
12606    }
12607    ///Container type for the return parameters of the [`updateOperatorMetadataURI(string)`](updateOperatorMetadataURICall) function.
12608    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12609    #[derive(Clone)]
12610    pub struct updateOperatorMetadataURIReturn {}
12611    #[allow(
12612        non_camel_case_types,
12613        non_snake_case,
12614        clippy::pub_underscore_fields,
12615        clippy::style
12616    )]
12617    const _: () = {
12618        use alloy::sol_types as alloy_sol_types;
12619        {
12620            #[doc(hidden)]
12621            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
12622            #[doc(hidden)]
12623            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
12624            #[cfg(test)]
12625            #[allow(dead_code, unreachable_patterns)]
12626            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
12627                match _t {
12628                    alloy_sol_types::private::AssertTypeEq::<
12629                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12630                    >(_) => {}
12631                }
12632            }
12633            #[automatically_derived]
12634            #[doc(hidden)]
12635            impl ::core::convert::From<updateOperatorMetadataURICall> for UnderlyingRustTuple<'_> {
12636                fn from(value: updateOperatorMetadataURICall) -> Self {
12637                    (value.metadataURI,)
12638                }
12639            }
12640            #[automatically_derived]
12641            #[doc(hidden)]
12642            impl ::core::convert::From<UnderlyingRustTuple<'_>> for updateOperatorMetadataURICall {
12643                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12644                    Self {
12645                        metadataURI: tuple.0,
12646                    }
12647                }
12648            }
12649        }
12650        {
12651            #[doc(hidden)]
12652            type UnderlyingSolTuple<'a> = ();
12653            #[doc(hidden)]
12654            type UnderlyingRustTuple<'a> = ();
12655            #[cfg(test)]
12656            #[allow(dead_code, unreachable_patterns)]
12657            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
12658                match _t {
12659                    alloy_sol_types::private::AssertTypeEq::<
12660                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12661                    >(_) => {}
12662                }
12663            }
12664            #[automatically_derived]
12665            #[doc(hidden)]
12666            impl ::core::convert::From<updateOperatorMetadataURIReturn> for UnderlyingRustTuple<'_> {
12667                fn from(value: updateOperatorMetadataURIReturn) -> Self {
12668                    ()
12669                }
12670            }
12671            #[automatically_derived]
12672            #[doc(hidden)]
12673            impl ::core::convert::From<UnderlyingRustTuple<'_>> for updateOperatorMetadataURIReturn {
12674                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12675                    Self {}
12676                }
12677            }
12678        }
12679        impl updateOperatorMetadataURIReturn {
12680            fn _tokenize(
12681                &self,
12682            ) -> <updateOperatorMetadataURICall as alloy_sol_types::SolCall>::ReturnToken<'_>
12683            {
12684                ()
12685            }
12686        }
12687        #[automatically_derived]
12688        impl alloy_sol_types::SolCall for updateOperatorMetadataURICall {
12689            type Parameters<'a> = (alloy::sol_types::sol_data::String,);
12690            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
12691            type Return = updateOperatorMetadataURIReturn;
12692            type ReturnTuple<'a> = ();
12693            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
12694            const SIGNATURE: &'static str = "updateOperatorMetadataURI(string)";
12695            const SELECTOR: [u8; 4] = [153u8, 190u8, 129u8, 200u8];
12696            #[inline]
12697            fn new<'a>(
12698                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12699            ) -> Self {
12700                tuple.into()
12701            }
12702            #[inline]
12703            fn tokenize(&self) -> Self::Token<'_> {
12704                (
12705                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
12706                        &self.metadataURI,
12707                    ),
12708                )
12709            }
12710            #[inline]
12711            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12712                updateOperatorMetadataURIReturn::_tokenize(ret)
12713            }
12714            #[inline]
12715            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12716                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
12717                    .map(Into::into)
12718            }
12719            #[inline]
12720            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12721                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
12722                    data,
12723                )
12724                .map(Into::into)
12725            }
12726        }
12727    };
12728    ///Container for all the [`DelegationManager`](self) function calls.
12729    #[derive(serde::Serialize, serde::Deserialize)]
12730    pub enum DelegationManagerCalls {
12731        #[allow(missing_docs)]
12732        DELEGATION_APPROVAL_TYPEHASH(DELEGATION_APPROVAL_TYPEHASHCall),
12733        #[allow(missing_docs)]
12734        DOMAIN_TYPEHASH(DOMAIN_TYPEHASHCall),
12735        #[allow(missing_docs)]
12736        MAX_STAKER_OPT_OUT_WINDOW_BLOCKS(MAX_STAKER_OPT_OUT_WINDOW_BLOCKSCall),
12737        #[allow(missing_docs)]
12738        MAX_WITHDRAWAL_DELAY_BLOCKS(MAX_WITHDRAWAL_DELAY_BLOCKSCall),
12739        #[allow(missing_docs)]
12740        STAKER_DELEGATION_TYPEHASH(STAKER_DELEGATION_TYPEHASHCall),
12741        #[allow(missing_docs)]
12742        beaconChainETHStrategy(beaconChainETHStrategyCall),
12743        #[allow(missing_docs)]
12744        calculateCurrentStakerDelegationDigestHash(calculateCurrentStakerDelegationDigestHashCall),
12745        #[allow(missing_docs)]
12746        calculateDelegationApprovalDigestHash(calculateDelegationApprovalDigestHashCall),
12747        #[allow(missing_docs)]
12748        calculateStakerDelegationDigestHash(calculateStakerDelegationDigestHashCall),
12749        #[allow(missing_docs)]
12750        calculateWithdrawalRoot(calculateWithdrawalRootCall),
12751        #[allow(missing_docs)]
12752        completeQueuedWithdrawal(completeQueuedWithdrawalCall),
12753        #[allow(missing_docs)]
12754        completeQueuedWithdrawals(completeQueuedWithdrawalsCall),
12755        #[allow(missing_docs)]
12756        cumulativeWithdrawalsQueued(cumulativeWithdrawalsQueuedCall),
12757        #[allow(missing_docs)]
12758        decreaseDelegatedShares(decreaseDelegatedSharesCall),
12759        #[allow(missing_docs)]
12760        delegateTo(delegateToCall),
12761        #[allow(missing_docs)]
12762        delegateToBySignature(delegateToBySignatureCall),
12763        #[allow(missing_docs)]
12764        delegatedTo(delegatedToCall),
12765        #[allow(missing_docs)]
12766        delegationApprover(delegationApproverCall),
12767        #[allow(missing_docs)]
12768        delegationApproverSaltIsSpent(delegationApproverSaltIsSpentCall),
12769        #[allow(missing_docs)]
12770        domainSeparator(domainSeparatorCall),
12771        #[allow(missing_docs)]
12772        eigenPodManager(eigenPodManagerCall),
12773        #[allow(missing_docs)]
12774        getDelegatableShares(getDelegatableSharesCall),
12775        #[allow(missing_docs)]
12776        getOperatorShares(getOperatorSharesCall),
12777        #[allow(missing_docs)]
12778        getWithdrawalDelay(getWithdrawalDelayCall),
12779        #[allow(missing_docs)]
12780        increaseDelegatedShares(increaseDelegatedSharesCall),
12781        #[allow(missing_docs)]
12782        initialize(initializeCall),
12783        #[allow(missing_docs)]
12784        isDelegated(isDelegatedCall),
12785        #[allow(missing_docs)]
12786        isOperator(isOperatorCall),
12787        #[allow(missing_docs)]
12788        minWithdrawalDelayBlocks(minWithdrawalDelayBlocksCall),
12789        #[allow(missing_docs)]
12790        modifyOperatorDetails(modifyOperatorDetailsCall),
12791        #[allow(missing_docs)]
12792        operatorDetails(operatorDetailsCall),
12793        #[allow(missing_docs)]
12794        operatorShares(operatorSharesCall),
12795        #[allow(missing_docs)]
12796        owner(ownerCall),
12797        #[allow(missing_docs)]
12798        pause(pauseCall),
12799        #[allow(missing_docs)]
12800        pauseAll(pauseAllCall),
12801        #[allow(missing_docs)]
12802        paused_0(paused_0Call),
12803        #[allow(missing_docs)]
12804        paused_1(paused_1Call),
12805        #[allow(missing_docs)]
12806        pauserRegistry(pauserRegistryCall),
12807        #[allow(missing_docs)]
12808        pendingWithdrawals(pendingWithdrawalsCall),
12809        #[allow(missing_docs)]
12810        queueWithdrawals(queueWithdrawalsCall),
12811        #[allow(missing_docs)]
12812        registerAsOperator(registerAsOperatorCall),
12813        #[allow(missing_docs)]
12814        renounceOwnership(renounceOwnershipCall),
12815        #[allow(missing_docs)]
12816        setMinWithdrawalDelayBlocks(setMinWithdrawalDelayBlocksCall),
12817        #[allow(missing_docs)]
12818        setPauserRegistry(setPauserRegistryCall),
12819        #[allow(missing_docs)]
12820        setStrategyWithdrawalDelayBlocks(setStrategyWithdrawalDelayBlocksCall),
12821        #[allow(missing_docs)]
12822        slasher(slasherCall),
12823        #[allow(missing_docs)]
12824        stakerNonce(stakerNonceCall),
12825        #[allow(missing_docs)]
12826        stakerOptOutWindowBlocks(stakerOptOutWindowBlocksCall),
12827        #[allow(missing_docs)]
12828        strategyManager(strategyManagerCall),
12829        #[allow(missing_docs)]
12830        strategyWithdrawalDelayBlocks(strategyWithdrawalDelayBlocksCall),
12831        #[allow(missing_docs)]
12832        transferOwnership(transferOwnershipCall),
12833        #[allow(missing_docs)]
12834        undelegate(undelegateCall),
12835        #[allow(missing_docs)]
12836        unpause(unpauseCall),
12837        #[allow(missing_docs)]
12838        updateOperatorMetadataURI(updateOperatorMetadataURICall),
12839    }
12840    #[automatically_derived]
12841    impl DelegationManagerCalls {
12842        /// All the selectors of this enum.
12843        ///
12844        /// Note that the selectors might not be in the same order as the variants.
12845        /// No guarantees are made about the order of the selectors.
12846        ///
12847        /// Prefer using `SolInterface` methods instead.
12848        pub const SELECTORS: &'static [[u8; 4usize]] = &[
12849            [4u8, 73u8, 202u8, 57u8],
12850            [4u8, 164u8, 249u8, 121u8],
12851            [11u8, 159u8, 72u8, 122u8],
12852            [13u8, 216u8, 221u8, 2u8],
12853            [15u8, 88u8, 158u8, 89u8],
12854            [16u8, 214u8, 122u8, 47u8],
12855            [19u8, 45u8, 73u8, 103u8],
12856            [19u8, 100u8, 57u8, 221u8],
12857            [21u8, 34u8, 191u8, 2u8],
12858            [22u8, 146u8, 131u8, 101u8],
12859            [27u8, 188u8, 224u8, 145u8],
12860            [32u8, 96u8, 107u8, 112u8],
12861            [34u8, 191u8, 64u8, 228u8],
12862            [40u8, 165u8, 115u8, 174u8],
12863            [41u8, 199u8, 125u8, 79u8],
12864            [51u8, 64u8, 67u8, 150u8],
12865            [57u8, 183u8, 14u8, 56u8],
12866            [60u8, 222u8, 181u8, 224u8],
12867            [62u8, 40u8, 57u8, 29u8],
12868            [67u8, 55u8, 115u8, 130u8],
12869            [70u8, 101u8, 188u8, 218u8],
12870            [79u8, 196u8, 11u8, 97u8],
12871            [89u8, 92u8, 106u8, 103u8],
12872            [89u8, 123u8, 54u8, 218u8],
12873            [90u8, 200u8, 106u8, 183u8],
12874            [92u8, 151u8, 90u8, 187u8],
12875            [96u8, 215u8, 250u8, 237u8],
12876            [99u8, 91u8, 189u8, 16u8],
12877            [101u8, 218u8, 18u8, 100u8],
12878            [109u8, 112u8, 247u8, 174u8],
12879            [113u8, 80u8, 24u8, 166u8],
12880            [119u8, 142u8, 85u8, 243u8],
12881            [127u8, 84u8, 128u8, 113u8],
12882            [136u8, 111u8, 17u8, 149u8],
12883            [141u8, 165u8, 203u8, 91u8],
12884            [144u8, 4u8, 19u8, 71u8],
12885            [145u8, 4u8, 195u8, 25u8],
12886            [153u8, 190u8, 129u8, 200u8],
12887            [161u8, 120u8, 132u8, 132u8],
12888            [177u8, 52u8, 66u8, 113u8],
12889            [183u8, 240u8, 110u8, 190u8],
12890            [187u8, 69u8, 254u8, 242u8],
12891            [196u8, 72u8, 254u8, 184u8],
12892            [196u8, 136u8, 55u8, 90u8],
12893            [197u8, 228u8, 128u8, 219u8],
12894            [201u8, 75u8, 81u8, 17u8],
12895            [202u8, 102u8, 28u8, 4u8],
12896            [207u8, 128u8, 135u8, 62u8],
12897            [218u8, 139u8, 232u8, 100u8],
12898            [238u8, 169u8, 6u8, 75u8],
12899            [241u8, 97u8, 114u8, 176u8],
12900            [242u8, 253u8, 227u8, 139u8],
12901            [246u8, 152u8, 218u8, 37u8],
12902            [250u8, 188u8, 28u8, 188u8],
12903        ];
12904    }
12905    #[automatically_derived]
12906    impl alloy_sol_types::SolInterface for DelegationManagerCalls {
12907        const NAME: &'static str = "DelegationManagerCalls";
12908        const MIN_DATA_LENGTH: usize = 0usize;
12909        const COUNT: usize = 54usize;
12910        #[inline]
12911        fn selector(&self) -> [u8; 4] {
12912            match self {
12913                Self::DELEGATION_APPROVAL_TYPEHASH(_) => {
12914                    <DELEGATION_APPROVAL_TYPEHASHCall as alloy_sol_types::SolCall>::SELECTOR
12915                }
12916                Self::DOMAIN_TYPEHASH(_) => {
12917                    <DOMAIN_TYPEHASHCall as alloy_sol_types::SolCall>::SELECTOR
12918                }
12919                Self::MAX_STAKER_OPT_OUT_WINDOW_BLOCKS(_) => {
12920                    <MAX_STAKER_OPT_OUT_WINDOW_BLOCKSCall as alloy_sol_types::SolCall>::SELECTOR
12921                }
12922                Self::MAX_WITHDRAWAL_DELAY_BLOCKS(_) => {
12923                    <MAX_WITHDRAWAL_DELAY_BLOCKSCall as alloy_sol_types::SolCall>::SELECTOR
12924                }
12925                Self::STAKER_DELEGATION_TYPEHASH(_) => {
12926                    <STAKER_DELEGATION_TYPEHASHCall as alloy_sol_types::SolCall>::SELECTOR
12927                }
12928                Self::beaconChainETHStrategy(_) => {
12929                    <beaconChainETHStrategyCall as alloy_sol_types::SolCall>::SELECTOR
12930                }
12931                Self::calculateCurrentStakerDelegationDigestHash(_) => {
12932                    <calculateCurrentStakerDelegationDigestHashCall as alloy_sol_types::SolCall>::SELECTOR
12933                }
12934                Self::calculateDelegationApprovalDigestHash(_) => {
12935                    <calculateDelegationApprovalDigestHashCall as alloy_sol_types::SolCall>::SELECTOR
12936                }
12937                Self::calculateStakerDelegationDigestHash(_) => {
12938                    <calculateStakerDelegationDigestHashCall as alloy_sol_types::SolCall>::SELECTOR
12939                }
12940                Self::calculateWithdrawalRoot(_) => {
12941                    <calculateWithdrawalRootCall as alloy_sol_types::SolCall>::SELECTOR
12942                }
12943                Self::completeQueuedWithdrawal(_) => {
12944                    <completeQueuedWithdrawalCall as alloy_sol_types::SolCall>::SELECTOR
12945                }
12946                Self::completeQueuedWithdrawals(_) => {
12947                    <completeQueuedWithdrawalsCall as alloy_sol_types::SolCall>::SELECTOR
12948                }
12949                Self::cumulativeWithdrawalsQueued(_) => {
12950                    <cumulativeWithdrawalsQueuedCall as alloy_sol_types::SolCall>::SELECTOR
12951                }
12952                Self::decreaseDelegatedShares(_) => {
12953                    <decreaseDelegatedSharesCall as alloy_sol_types::SolCall>::SELECTOR
12954                }
12955                Self::delegateTo(_) => {
12956                    <delegateToCall as alloy_sol_types::SolCall>::SELECTOR
12957                }
12958                Self::delegateToBySignature(_) => {
12959                    <delegateToBySignatureCall as alloy_sol_types::SolCall>::SELECTOR
12960                }
12961                Self::delegatedTo(_) => {
12962                    <delegatedToCall as alloy_sol_types::SolCall>::SELECTOR
12963                }
12964                Self::delegationApprover(_) => {
12965                    <delegationApproverCall as alloy_sol_types::SolCall>::SELECTOR
12966                }
12967                Self::delegationApproverSaltIsSpent(_) => {
12968                    <delegationApproverSaltIsSpentCall as alloy_sol_types::SolCall>::SELECTOR
12969                }
12970                Self::domainSeparator(_) => {
12971                    <domainSeparatorCall as alloy_sol_types::SolCall>::SELECTOR
12972                }
12973                Self::eigenPodManager(_) => {
12974                    <eigenPodManagerCall as alloy_sol_types::SolCall>::SELECTOR
12975                }
12976                Self::getDelegatableShares(_) => {
12977                    <getDelegatableSharesCall as alloy_sol_types::SolCall>::SELECTOR
12978                }
12979                Self::getOperatorShares(_) => {
12980                    <getOperatorSharesCall as alloy_sol_types::SolCall>::SELECTOR
12981                }
12982                Self::getWithdrawalDelay(_) => {
12983                    <getWithdrawalDelayCall as alloy_sol_types::SolCall>::SELECTOR
12984                }
12985                Self::increaseDelegatedShares(_) => {
12986                    <increaseDelegatedSharesCall as alloy_sol_types::SolCall>::SELECTOR
12987                }
12988                Self::initialize(_) => {
12989                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
12990                }
12991                Self::isDelegated(_) => {
12992                    <isDelegatedCall as alloy_sol_types::SolCall>::SELECTOR
12993                }
12994                Self::isOperator(_) => {
12995                    <isOperatorCall as alloy_sol_types::SolCall>::SELECTOR
12996                }
12997                Self::minWithdrawalDelayBlocks(_) => {
12998                    <minWithdrawalDelayBlocksCall as alloy_sol_types::SolCall>::SELECTOR
12999                }
13000                Self::modifyOperatorDetails(_) => {
13001                    <modifyOperatorDetailsCall as alloy_sol_types::SolCall>::SELECTOR
13002                }
13003                Self::operatorDetails(_) => {
13004                    <operatorDetailsCall as alloy_sol_types::SolCall>::SELECTOR
13005                }
13006                Self::operatorShares(_) => {
13007                    <operatorSharesCall as alloy_sol_types::SolCall>::SELECTOR
13008                }
13009                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
13010                Self::pause(_) => <pauseCall as alloy_sol_types::SolCall>::SELECTOR,
13011                Self::pauseAll(_) => <pauseAllCall as alloy_sol_types::SolCall>::SELECTOR,
13012                Self::paused_0(_) => <paused_0Call as alloy_sol_types::SolCall>::SELECTOR,
13013                Self::paused_1(_) => <paused_1Call as alloy_sol_types::SolCall>::SELECTOR,
13014                Self::pauserRegistry(_) => {
13015                    <pauserRegistryCall as alloy_sol_types::SolCall>::SELECTOR
13016                }
13017                Self::pendingWithdrawals(_) => {
13018                    <pendingWithdrawalsCall as alloy_sol_types::SolCall>::SELECTOR
13019                }
13020                Self::queueWithdrawals(_) => {
13021                    <queueWithdrawalsCall as alloy_sol_types::SolCall>::SELECTOR
13022                }
13023                Self::registerAsOperator(_) => {
13024                    <registerAsOperatorCall as alloy_sol_types::SolCall>::SELECTOR
13025                }
13026                Self::renounceOwnership(_) => {
13027                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
13028                }
13029                Self::setMinWithdrawalDelayBlocks(_) => {
13030                    <setMinWithdrawalDelayBlocksCall as alloy_sol_types::SolCall>::SELECTOR
13031                }
13032                Self::setPauserRegistry(_) => {
13033                    <setPauserRegistryCall as alloy_sol_types::SolCall>::SELECTOR
13034                }
13035                Self::setStrategyWithdrawalDelayBlocks(_) => {
13036                    <setStrategyWithdrawalDelayBlocksCall as alloy_sol_types::SolCall>::SELECTOR
13037                }
13038                Self::slasher(_) => <slasherCall as alloy_sol_types::SolCall>::SELECTOR,
13039                Self::stakerNonce(_) => {
13040                    <stakerNonceCall as alloy_sol_types::SolCall>::SELECTOR
13041                }
13042                Self::stakerOptOutWindowBlocks(_) => {
13043                    <stakerOptOutWindowBlocksCall as alloy_sol_types::SolCall>::SELECTOR
13044                }
13045                Self::strategyManager(_) => {
13046                    <strategyManagerCall as alloy_sol_types::SolCall>::SELECTOR
13047                }
13048                Self::strategyWithdrawalDelayBlocks(_) => {
13049                    <strategyWithdrawalDelayBlocksCall as alloy_sol_types::SolCall>::SELECTOR
13050                }
13051                Self::transferOwnership(_) => {
13052                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
13053                }
13054                Self::undelegate(_) => {
13055                    <undelegateCall as alloy_sol_types::SolCall>::SELECTOR
13056                }
13057                Self::unpause(_) => <unpauseCall as alloy_sol_types::SolCall>::SELECTOR,
13058                Self::updateOperatorMetadataURI(_) => {
13059                    <updateOperatorMetadataURICall as alloy_sol_types::SolCall>::SELECTOR
13060                }
13061            }
13062        }
13063        #[inline]
13064        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
13065            Self::SELECTORS.get(i).copied()
13066        }
13067        #[inline]
13068        fn valid_selector(selector: [u8; 4]) -> bool {
13069            Self::SELECTORS.binary_search(&selector).is_ok()
13070        }
13071        #[inline]
13072        #[allow(non_snake_case)]
13073        fn abi_decode_raw(selector: [u8; 4], data: &[u8]) -> alloy_sol_types::Result<Self> {
13074            static DECODE_SHIMS: &[fn(&[u8]) -> alloy_sol_types::Result<DelegationManagerCalls>] =
13075                &[
13076                    {
13077                        fn getWithdrawalDelay(
13078                            data: &[u8],
13079                        ) -> alloy_sol_types::Result<DelegationManagerCalls>
13080                        {
13081                            <getWithdrawalDelayCall as alloy_sol_types::SolCall>::abi_decode_raw(
13082                                data,
13083                            )
13084                            .map(DelegationManagerCalls::getWithdrawalDelay)
13085                        }
13086                        getWithdrawalDelay
13087                    },
13088                    {
13089                        fn DELEGATION_APPROVAL_TYPEHASH(
13090                            data: &[u8],
13091                        ) -> alloy_sol_types::Result<DelegationManagerCalls>
13092                        {
13093                            <DELEGATION_APPROVAL_TYPEHASHCall as alloy_sol_types::SolCall>::abi_decode_raw(
13094                                data,
13095                            )
13096                            .map(DelegationManagerCalls::DELEGATION_APPROVAL_TYPEHASH)
13097                        }
13098                        DELEGATION_APPROVAL_TYPEHASH
13099                    },
13100                    {
13101                        fn calculateDelegationApprovalDigestHash(
13102                            data: &[u8],
13103                        ) -> alloy_sol_types::Result<DelegationManagerCalls>
13104                        {
13105                            <calculateDelegationApprovalDigestHashCall as alloy_sol_types::SolCall>::abi_decode_raw(
13106                                data,
13107                            )
13108                            .map(
13109                                DelegationManagerCalls::calculateDelegationApprovalDigestHash,
13110                            )
13111                        }
13112                        calculateDelegationApprovalDigestHash
13113                    },
13114                    {
13115                        fn queueWithdrawals(
13116                            data: &[u8],
13117                        ) -> alloy_sol_types::Result<DelegationManagerCalls>
13118                        {
13119                            <queueWithdrawalsCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
13120                                .map(DelegationManagerCalls::queueWithdrawals)
13121                        }
13122                        queueWithdrawals
13123                    },
13124                    {
13125                        fn registerAsOperator(
13126                            data: &[u8],
13127                        ) -> alloy_sol_types::Result<DelegationManagerCalls>
13128                        {
13129                            <registerAsOperatorCall as alloy_sol_types::SolCall>::abi_decode_raw(
13130                                data,
13131                            )
13132                            .map(DelegationManagerCalls::registerAsOperator)
13133                        }
13134                        registerAsOperator
13135                    },
13136                    {
13137                        fn setPauserRegistry(
13138                            data: &[u8],
13139                        ) -> alloy_sol_types::Result<DelegationManagerCalls>
13140                        {
13141                            <setPauserRegistryCall as alloy_sol_types::SolCall>::abi_decode_raw(
13142                                data,
13143                            )
13144                            .map(DelegationManagerCalls::setPauserRegistry)
13145                        }
13146                        setPauserRegistry
13147                    },
13148                    {
13149                        fn decreaseDelegatedShares(
13150                            data: &[u8],
13151                        ) -> alloy_sol_types::Result<DelegationManagerCalls>
13152                        {
13153                            <decreaseDelegatedSharesCall as alloy_sol_types::SolCall>::abi_decode_raw(
13154                                data,
13155                            )
13156                            .map(DelegationManagerCalls::decreaseDelegatedShares)
13157                        }
13158                        decreaseDelegatedShares
13159                    },
13160                    {
13161                        fn pause(data: &[u8]) -> alloy_sol_types::Result<DelegationManagerCalls> {
13162                            <pauseCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
13163                                .map(DelegationManagerCalls::pause)
13164                        }
13165                        pause
13166                    },
13167                    {
13168                        fn setStrategyWithdrawalDelayBlocks(
13169                            data: &[u8],
13170                        ) -> alloy_sol_types::Result<DelegationManagerCalls>
13171                        {
13172                            <setStrategyWithdrawalDelayBlocksCall as alloy_sol_types::SolCall>::abi_decode_raw(
13173                                data,
13174                            )
13175                            .map(
13176                                DelegationManagerCalls::setStrategyWithdrawalDelayBlocks,
13177                            )
13178                        }
13179                        setStrategyWithdrawalDelayBlocks
13180                    },
13181                    {
13182                        fn stakerOptOutWindowBlocks(
13183                            data: &[u8],
13184                        ) -> alloy_sol_types::Result<DelegationManagerCalls>
13185                        {
13186                            <stakerOptOutWindowBlocksCall as alloy_sol_types::SolCall>::abi_decode_raw(
13187                                data,
13188                            )
13189                            .map(DelegationManagerCalls::stakerOptOutWindowBlocks)
13190                        }
13191                        stakerOptOutWindowBlocks
13192                    },
13193                    {
13194                        fn calculateCurrentStakerDelegationDigestHash(
13195                            data: &[u8],
13196                        ) -> alloy_sol_types::Result<DelegationManagerCalls>
13197                        {
13198                            <calculateCurrentStakerDelegationDigestHashCall as alloy_sol_types::SolCall>::abi_decode_raw(
13199                                data,
13200                            )
13201                            .map(
13202                                DelegationManagerCalls::calculateCurrentStakerDelegationDigestHash,
13203                            )
13204                        }
13205                        calculateCurrentStakerDelegationDigestHash
13206                    },
13207                    {
13208                        fn DOMAIN_TYPEHASH(
13209                            data: &[u8],
13210                        ) -> alloy_sol_types::Result<DelegationManagerCalls>
13211                        {
13212                            <DOMAIN_TYPEHASHCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
13213                                .map(DelegationManagerCalls::DOMAIN_TYPEHASH)
13214                        }
13215                        DOMAIN_TYPEHASH
13216                    },
13217                    {
13218                        fn initialize(
13219                            data: &[u8],
13220                        ) -> alloy_sol_types::Result<DelegationManagerCalls>
13221                        {
13222                            <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
13223                                .map(DelegationManagerCalls::initialize)
13224                        }
13225                        initialize
13226                    },
13227                    {
13228                        fn increaseDelegatedShares(
13229                            data: &[u8],
13230                        ) -> alloy_sol_types::Result<DelegationManagerCalls>
13231                        {
13232                            <increaseDelegatedSharesCall as alloy_sol_types::SolCall>::abi_decode_raw(
13233                                data,
13234                            )
13235                            .map(DelegationManagerCalls::increaseDelegatedShares)
13236                        }
13237                        increaseDelegatedShares
13238                    },
13239                    {
13240                        fn stakerNonce(
13241                            data: &[u8],
13242                        ) -> alloy_sol_types::Result<DelegationManagerCalls>
13243                        {
13244                            <stakerNonceCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
13245                                .map(DelegationManagerCalls::stakerNonce)
13246                        }
13247                        stakerNonce
13248                    },
13249                    {
13250                        fn completeQueuedWithdrawals(
13251                            data: &[u8],
13252                        ) -> alloy_sol_types::Result<DelegationManagerCalls>
13253                        {
13254                            <completeQueuedWithdrawalsCall as alloy_sol_types::SolCall>::abi_decode_raw(
13255                                data,
13256                            )
13257                            .map(DelegationManagerCalls::completeQueuedWithdrawals)
13258                        }
13259                        completeQueuedWithdrawals
13260                    },
13261                    {
13262                        fn strategyManager(
13263                            data: &[u8],
13264                        ) -> alloy_sol_types::Result<DelegationManagerCalls>
13265                        {
13266                            <strategyManagerCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
13267                                .map(DelegationManagerCalls::strategyManager)
13268                        }
13269                        strategyManager
13270                    },
13271                    {
13272                        fn delegationApprover(
13273                            data: &[u8],
13274                        ) -> alloy_sol_types::Result<DelegationManagerCalls>
13275                        {
13276                            <delegationApproverCall as alloy_sol_types::SolCall>::abi_decode_raw(
13277                                data,
13278                            )
13279                            .map(DelegationManagerCalls::delegationApprover)
13280                        }
13281                        delegationApprover
13282                    },
13283                    {
13284                        fn isDelegated(
13285                            data: &[u8],
13286                        ) -> alloy_sol_types::Result<DelegationManagerCalls>
13287                        {
13288                            <isDelegatedCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
13289                                .map(DelegationManagerCalls::isDelegated)
13290                        }
13291                        isDelegated
13292                    },
13293                    {
13294                        fn STAKER_DELEGATION_TYPEHASH(
13295                            data: &[u8],
13296                        ) -> alloy_sol_types::Result<DelegationManagerCalls>
13297                        {
13298                            <STAKER_DELEGATION_TYPEHASHCall as alloy_sol_types::SolCall>::abi_decode_raw(
13299                                data,
13300                            )
13301                            .map(DelegationManagerCalls::STAKER_DELEGATION_TYPEHASH)
13302                        }
13303                        STAKER_DELEGATION_TYPEHASH
13304                    },
13305                    {
13306                        fn eigenPodManager(
13307                            data: &[u8],
13308                        ) -> alloy_sol_types::Result<DelegationManagerCalls>
13309                        {
13310                            <eigenPodManagerCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
13311                                .map(DelegationManagerCalls::eigenPodManager)
13312                        }
13313                        eigenPodManager
13314                    },
13315                    {
13316                        fn MAX_STAKER_OPT_OUT_WINDOW_BLOCKS(
13317                            data: &[u8],
13318                        ) -> alloy_sol_types::Result<DelegationManagerCalls>
13319                        {
13320                            <MAX_STAKER_OPT_OUT_WINDOW_BLOCKSCall as alloy_sol_types::SolCall>::abi_decode_raw(
13321                                data,
13322                            )
13323                            .map(
13324                                DelegationManagerCalls::MAX_STAKER_OPT_OUT_WINDOW_BLOCKS,
13325                            )
13326                        }
13327                        MAX_STAKER_OPT_OUT_WINDOW_BLOCKS
13328                    },
13329                    {
13330                        fn pauseAll(
13331                            data: &[u8],
13332                        ) -> alloy_sol_types::Result<DelegationManagerCalls>
13333                        {
13334                            <pauseAllCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
13335                                .map(DelegationManagerCalls::pauseAll)
13336                        }
13337                        pauseAll
13338                    },
13339                    {
13340                        fn calculateWithdrawalRoot(
13341                            data: &[u8],
13342                        ) -> alloy_sol_types::Result<DelegationManagerCalls>
13343                        {
13344                            <calculateWithdrawalRootCall as alloy_sol_types::SolCall>::abi_decode_raw(
13345                                data,
13346                            )
13347                            .map(DelegationManagerCalls::calculateWithdrawalRoot)
13348                        }
13349                        calculateWithdrawalRoot
13350                    },
13351                    {
13352                        fn paused_0(
13353                            data: &[u8],
13354                        ) -> alloy_sol_types::Result<DelegationManagerCalls>
13355                        {
13356                            <paused_0Call as alloy_sol_types::SolCall>::abi_decode_raw(data)
13357                                .map(DelegationManagerCalls::paused_0)
13358                        }
13359                        paused_0
13360                    },
13361                    {
13362                        fn paused_1(
13363                            data: &[u8],
13364                        ) -> alloy_sol_types::Result<DelegationManagerCalls>
13365                        {
13366                            <paused_1Call as alloy_sol_types::SolCall>::abi_decode_raw(data)
13367                                .map(DelegationManagerCalls::paused_1)
13368                        }
13369                        paused_1
13370                    },
13371                    {
13372                        fn completeQueuedWithdrawal(
13373                            data: &[u8],
13374                        ) -> alloy_sol_types::Result<DelegationManagerCalls>
13375                        {
13376                            <completeQueuedWithdrawalCall as alloy_sol_types::SolCall>::abi_decode_raw(
13377                                data,
13378                            )
13379                            .map(DelegationManagerCalls::completeQueuedWithdrawal)
13380                        }
13381                        completeQueuedWithdrawal
13382                    },
13383                    {
13384                        fn setMinWithdrawalDelayBlocks(
13385                            data: &[u8],
13386                        ) -> alloy_sol_types::Result<DelegationManagerCalls>
13387                        {
13388                            <setMinWithdrawalDelayBlocksCall as alloy_sol_types::SolCall>::abi_decode_raw(
13389                                data,
13390                            )
13391                            .map(DelegationManagerCalls::setMinWithdrawalDelayBlocks)
13392                        }
13393                        setMinWithdrawalDelayBlocks
13394                    },
13395                    {
13396                        fn delegatedTo(
13397                            data: &[u8],
13398                        ) -> alloy_sol_types::Result<DelegationManagerCalls>
13399                        {
13400                            <delegatedToCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
13401                                .map(DelegationManagerCalls::delegatedTo)
13402                        }
13403                        delegatedTo
13404                    },
13405                    {
13406                        fn isOperator(
13407                            data: &[u8],
13408                        ) -> alloy_sol_types::Result<DelegationManagerCalls>
13409                        {
13410                            <isOperatorCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
13411                                .map(DelegationManagerCalls::isOperator)
13412                        }
13413                        isOperator
13414                    },
13415                    {
13416                        fn renounceOwnership(
13417                            data: &[u8],
13418                        ) -> alloy_sol_types::Result<DelegationManagerCalls>
13419                        {
13420                            <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
13421                                data,
13422                            )
13423                            .map(DelegationManagerCalls::renounceOwnership)
13424                        }
13425                        renounceOwnership
13426                    },
13427                    {
13428                        fn operatorShares(
13429                            data: &[u8],
13430                        ) -> alloy_sol_types::Result<DelegationManagerCalls>
13431                        {
13432                            <operatorSharesCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
13433                                .map(DelegationManagerCalls::operatorShares)
13434                        }
13435                        operatorShares
13436                    },
13437                    {
13438                        fn delegateToBySignature(
13439                            data: &[u8],
13440                        ) -> alloy_sol_types::Result<DelegationManagerCalls>
13441                        {
13442                            <delegateToBySignatureCall as alloy_sol_types::SolCall>::abi_decode_raw(
13443                                data,
13444                            )
13445                            .map(DelegationManagerCalls::delegateToBySignature)
13446                        }
13447                        delegateToBySignature
13448                    },
13449                    {
13450                        fn pauserRegistry(
13451                            data: &[u8],
13452                        ) -> alloy_sol_types::Result<DelegationManagerCalls>
13453                        {
13454                            <pauserRegistryCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
13455                                .map(DelegationManagerCalls::pauserRegistry)
13456                        }
13457                        pauserRegistry
13458                    },
13459                    {
13460                        fn owner(data: &[u8]) -> alloy_sol_types::Result<DelegationManagerCalls> {
13461                            <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
13462                                .map(DelegationManagerCalls::owner)
13463                        }
13464                        owner
13465                    },
13466                    {
13467                        fn getOperatorShares(
13468                            data: &[u8],
13469                        ) -> alloy_sol_types::Result<DelegationManagerCalls>
13470                        {
13471                            <getOperatorSharesCall as alloy_sol_types::SolCall>::abi_decode_raw(
13472                                data,
13473                            )
13474                            .map(DelegationManagerCalls::getOperatorShares)
13475                        }
13476                        getOperatorShares
13477                    },
13478                    {
13479                        fn beaconChainETHStrategy(
13480                            data: &[u8],
13481                        ) -> alloy_sol_types::Result<DelegationManagerCalls>
13482                        {
13483                            <beaconChainETHStrategyCall as alloy_sol_types::SolCall>::abi_decode_raw(
13484                                data,
13485                            )
13486                            .map(DelegationManagerCalls::beaconChainETHStrategy)
13487                        }
13488                        beaconChainETHStrategy
13489                    },
13490                    {
13491                        fn updateOperatorMetadataURI(
13492                            data: &[u8],
13493                        ) -> alloy_sol_types::Result<DelegationManagerCalls>
13494                        {
13495                            <updateOperatorMetadataURICall as alloy_sol_types::SolCall>::abi_decode_raw(
13496                                data,
13497                            )
13498                            .map(DelegationManagerCalls::updateOperatorMetadataURI)
13499                        }
13500                        updateOperatorMetadataURI
13501                    },
13502                    {
13503                        fn cumulativeWithdrawalsQueued(
13504                            data: &[u8],
13505                        ) -> alloy_sol_types::Result<DelegationManagerCalls>
13506                        {
13507                            <cumulativeWithdrawalsQueuedCall as alloy_sol_types::SolCall>::abi_decode_raw(
13508                                data,
13509                            )
13510                            .map(DelegationManagerCalls::cumulativeWithdrawalsQueued)
13511                        }
13512                        cumulativeWithdrawalsQueued
13513                    },
13514                    {
13515                        fn slasher(data: &[u8]) -> alloy_sol_types::Result<DelegationManagerCalls> {
13516                            <slasherCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
13517                                .map(DelegationManagerCalls::slasher)
13518                        }
13519                        slasher
13520                    },
13521                    {
13522                        fn pendingWithdrawals(
13523                            data: &[u8],
13524                        ) -> alloy_sol_types::Result<DelegationManagerCalls>
13525                        {
13526                            <pendingWithdrawalsCall as alloy_sol_types::SolCall>::abi_decode_raw(
13527                                data,
13528                            )
13529                            .map(DelegationManagerCalls::pendingWithdrawals)
13530                        }
13531                        pendingWithdrawals
13532                    },
13533                    {
13534                        fn delegationApproverSaltIsSpent(
13535                            data: &[u8],
13536                        ) -> alloy_sol_types::Result<DelegationManagerCalls>
13537                        {
13538                            <delegationApproverSaltIsSpentCall as alloy_sol_types::SolCall>::abi_decode_raw(
13539                                data,
13540                            )
13541                            .map(DelegationManagerCalls::delegationApproverSaltIsSpent)
13542                        }
13543                        delegationApproverSaltIsSpent
13544                    },
13545                    {
13546                        fn minWithdrawalDelayBlocks(
13547                            data: &[u8],
13548                        ) -> alloy_sol_types::Result<DelegationManagerCalls>
13549                        {
13550                            <minWithdrawalDelayBlocksCall as alloy_sol_types::SolCall>::abi_decode_raw(
13551                                data,
13552                            )
13553                            .map(DelegationManagerCalls::minWithdrawalDelayBlocks)
13554                        }
13555                        minWithdrawalDelayBlocks
13556                    },
13557                    {
13558                        fn strategyWithdrawalDelayBlocks(
13559                            data: &[u8],
13560                        ) -> alloy_sol_types::Result<DelegationManagerCalls>
13561                        {
13562                            <strategyWithdrawalDelayBlocksCall as alloy_sol_types::SolCall>::abi_decode_raw(
13563                                data,
13564                            )
13565                            .map(DelegationManagerCalls::strategyWithdrawalDelayBlocks)
13566                        }
13567                        strategyWithdrawalDelayBlocks
13568                    },
13569                    {
13570                        fn operatorDetails(
13571                            data: &[u8],
13572                        ) -> alloy_sol_types::Result<DelegationManagerCalls>
13573                        {
13574                            <operatorDetailsCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
13575                                .map(DelegationManagerCalls::operatorDetails)
13576                        }
13577                        operatorDetails
13578                    },
13579                    {
13580                        fn calculateStakerDelegationDigestHash(
13581                            data: &[u8],
13582                        ) -> alloy_sol_types::Result<DelegationManagerCalls>
13583                        {
13584                            <calculateStakerDelegationDigestHashCall as alloy_sol_types::SolCall>::abi_decode_raw(
13585                                data,
13586                            )
13587                            .map(
13588                                DelegationManagerCalls::calculateStakerDelegationDigestHash,
13589                            )
13590                        }
13591                        calculateStakerDelegationDigestHash
13592                    },
13593                    {
13594                        fn MAX_WITHDRAWAL_DELAY_BLOCKS(
13595                            data: &[u8],
13596                        ) -> alloy_sol_types::Result<DelegationManagerCalls>
13597                        {
13598                            <MAX_WITHDRAWAL_DELAY_BLOCKSCall as alloy_sol_types::SolCall>::abi_decode_raw(
13599                                data,
13600                            )
13601                            .map(DelegationManagerCalls::MAX_WITHDRAWAL_DELAY_BLOCKS)
13602                        }
13603                        MAX_WITHDRAWAL_DELAY_BLOCKS
13604                    },
13605                    {
13606                        fn getDelegatableShares(
13607                            data: &[u8],
13608                        ) -> alloy_sol_types::Result<DelegationManagerCalls>
13609                        {
13610                            <getDelegatableSharesCall as alloy_sol_types::SolCall>::abi_decode_raw(
13611                                data,
13612                            )
13613                            .map(DelegationManagerCalls::getDelegatableShares)
13614                        }
13615                        getDelegatableShares
13616                    },
13617                    {
13618                        fn undelegate(
13619                            data: &[u8],
13620                        ) -> alloy_sol_types::Result<DelegationManagerCalls>
13621                        {
13622                            <undelegateCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
13623                                .map(DelegationManagerCalls::undelegate)
13624                        }
13625                        undelegate
13626                    },
13627                    {
13628                        fn delegateTo(
13629                            data: &[u8],
13630                        ) -> alloy_sol_types::Result<DelegationManagerCalls>
13631                        {
13632                            <delegateToCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
13633                                .map(DelegationManagerCalls::delegateTo)
13634                        }
13635                        delegateTo
13636                    },
13637                    {
13638                        fn modifyOperatorDetails(
13639                            data: &[u8],
13640                        ) -> alloy_sol_types::Result<DelegationManagerCalls>
13641                        {
13642                            <modifyOperatorDetailsCall as alloy_sol_types::SolCall>::abi_decode_raw(
13643                                data,
13644                            )
13645                            .map(DelegationManagerCalls::modifyOperatorDetails)
13646                        }
13647                        modifyOperatorDetails
13648                    },
13649                    {
13650                        fn transferOwnership(
13651                            data: &[u8],
13652                        ) -> alloy_sol_types::Result<DelegationManagerCalls>
13653                        {
13654                            <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
13655                                data,
13656                            )
13657                            .map(DelegationManagerCalls::transferOwnership)
13658                        }
13659                        transferOwnership
13660                    },
13661                    {
13662                        fn domainSeparator(
13663                            data: &[u8],
13664                        ) -> alloy_sol_types::Result<DelegationManagerCalls>
13665                        {
13666                            <domainSeparatorCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
13667                                .map(DelegationManagerCalls::domainSeparator)
13668                        }
13669                        domainSeparator
13670                    },
13671                    {
13672                        fn unpause(data: &[u8]) -> alloy_sol_types::Result<DelegationManagerCalls> {
13673                            <unpauseCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
13674                                .map(DelegationManagerCalls::unpause)
13675                        }
13676                        unpause
13677                    },
13678                ];
13679            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
13680                return Err(alloy_sol_types::Error::unknown_selector(
13681                    <Self as alloy_sol_types::SolInterface>::NAME,
13682                    selector,
13683                ));
13684            };
13685            DECODE_SHIMS[idx](data)
13686        }
13687        #[inline]
13688        #[allow(non_snake_case)]
13689        fn abi_decode_raw_validate(
13690            selector: [u8; 4],
13691            data: &[u8],
13692        ) -> alloy_sol_types::Result<Self> {
13693            static DECODE_VALIDATE_SHIMS: &[fn(
13694                &[u8],
13695            ) -> alloy_sol_types::Result<
13696                DelegationManagerCalls,
13697            >] = &[
13698                {
13699                    fn getWithdrawalDelay(
13700                        data: &[u8],
13701                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
13702                        <getWithdrawalDelayCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
13703                                data,
13704                            )
13705                            .map(DelegationManagerCalls::getWithdrawalDelay)
13706                    }
13707                    getWithdrawalDelay
13708                },
13709                {
13710                    fn DELEGATION_APPROVAL_TYPEHASH(
13711                        data: &[u8],
13712                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
13713                        <DELEGATION_APPROVAL_TYPEHASHCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
13714                                data,
13715                            )
13716                            .map(DelegationManagerCalls::DELEGATION_APPROVAL_TYPEHASH)
13717                    }
13718                    DELEGATION_APPROVAL_TYPEHASH
13719                },
13720                {
13721                    fn calculateDelegationApprovalDigestHash(
13722                        data: &[u8],
13723                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
13724                        <calculateDelegationApprovalDigestHashCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
13725                                data,
13726                            )
13727                            .map(
13728                                DelegationManagerCalls::calculateDelegationApprovalDigestHash,
13729                            )
13730                    }
13731                    calculateDelegationApprovalDigestHash
13732                },
13733                {
13734                    fn queueWithdrawals(
13735                        data: &[u8],
13736                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
13737                        <queueWithdrawalsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
13738                            data,
13739                        )
13740                        .map(DelegationManagerCalls::queueWithdrawals)
13741                    }
13742                    queueWithdrawals
13743                },
13744                {
13745                    fn registerAsOperator(
13746                        data: &[u8],
13747                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
13748                        <registerAsOperatorCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
13749                                data,
13750                            )
13751                            .map(DelegationManagerCalls::registerAsOperator)
13752                    }
13753                    registerAsOperator
13754                },
13755                {
13756                    fn setPauserRegistry(
13757                        data: &[u8],
13758                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
13759                        <setPauserRegistryCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
13760                                data,
13761                            )
13762                            .map(DelegationManagerCalls::setPauserRegistry)
13763                    }
13764                    setPauserRegistry
13765                },
13766                {
13767                    fn decreaseDelegatedShares(
13768                        data: &[u8],
13769                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
13770                        <decreaseDelegatedSharesCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
13771                                data,
13772                            )
13773                            .map(DelegationManagerCalls::decreaseDelegatedShares)
13774                    }
13775                    decreaseDelegatedShares
13776                },
13777                {
13778                    fn pause(data: &[u8]) -> alloy_sol_types::Result<DelegationManagerCalls> {
13779                        <pauseCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(data)
13780                            .map(DelegationManagerCalls::pause)
13781                    }
13782                    pause
13783                },
13784                {
13785                    fn setStrategyWithdrawalDelayBlocks(
13786                        data: &[u8],
13787                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
13788                        <setStrategyWithdrawalDelayBlocksCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
13789                                data,
13790                            )
13791                            .map(
13792                                DelegationManagerCalls::setStrategyWithdrawalDelayBlocks,
13793                            )
13794                    }
13795                    setStrategyWithdrawalDelayBlocks
13796                },
13797                {
13798                    fn stakerOptOutWindowBlocks(
13799                        data: &[u8],
13800                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
13801                        <stakerOptOutWindowBlocksCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
13802                                data,
13803                            )
13804                            .map(DelegationManagerCalls::stakerOptOutWindowBlocks)
13805                    }
13806                    stakerOptOutWindowBlocks
13807                },
13808                {
13809                    fn calculateCurrentStakerDelegationDigestHash(
13810                        data: &[u8],
13811                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
13812                        <calculateCurrentStakerDelegationDigestHashCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
13813                                data,
13814                            )
13815                            .map(
13816                                DelegationManagerCalls::calculateCurrentStakerDelegationDigestHash,
13817                            )
13818                    }
13819                    calculateCurrentStakerDelegationDigestHash
13820                },
13821                {
13822                    fn DOMAIN_TYPEHASH(
13823                        data: &[u8],
13824                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
13825                        <DOMAIN_TYPEHASHCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
13826                            data,
13827                        )
13828                        .map(DelegationManagerCalls::DOMAIN_TYPEHASH)
13829                    }
13830                    DOMAIN_TYPEHASH
13831                },
13832                {
13833                    fn initialize(data: &[u8]) -> alloy_sol_types::Result<DelegationManagerCalls> {
13834                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(data)
13835                            .map(DelegationManagerCalls::initialize)
13836                    }
13837                    initialize
13838                },
13839                {
13840                    fn increaseDelegatedShares(
13841                        data: &[u8],
13842                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
13843                        <increaseDelegatedSharesCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
13844                                data,
13845                            )
13846                            .map(DelegationManagerCalls::increaseDelegatedShares)
13847                    }
13848                    increaseDelegatedShares
13849                },
13850                {
13851                    fn stakerNonce(data: &[u8]) -> alloy_sol_types::Result<DelegationManagerCalls> {
13852                        <stakerNonceCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(data)
13853                            .map(DelegationManagerCalls::stakerNonce)
13854                    }
13855                    stakerNonce
13856                },
13857                {
13858                    fn completeQueuedWithdrawals(
13859                        data: &[u8],
13860                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
13861                        <completeQueuedWithdrawalsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
13862                                data,
13863                            )
13864                            .map(DelegationManagerCalls::completeQueuedWithdrawals)
13865                    }
13866                    completeQueuedWithdrawals
13867                },
13868                {
13869                    fn strategyManager(
13870                        data: &[u8],
13871                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
13872                        <strategyManagerCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
13873                            data,
13874                        )
13875                        .map(DelegationManagerCalls::strategyManager)
13876                    }
13877                    strategyManager
13878                },
13879                {
13880                    fn delegationApprover(
13881                        data: &[u8],
13882                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
13883                        <delegationApproverCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
13884                                data,
13885                            )
13886                            .map(DelegationManagerCalls::delegationApprover)
13887                    }
13888                    delegationApprover
13889                },
13890                {
13891                    fn isDelegated(data: &[u8]) -> alloy_sol_types::Result<DelegationManagerCalls> {
13892                        <isDelegatedCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(data)
13893                            .map(DelegationManagerCalls::isDelegated)
13894                    }
13895                    isDelegated
13896                },
13897                {
13898                    fn STAKER_DELEGATION_TYPEHASH(
13899                        data: &[u8],
13900                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
13901                        <STAKER_DELEGATION_TYPEHASHCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
13902                                data,
13903                            )
13904                            .map(DelegationManagerCalls::STAKER_DELEGATION_TYPEHASH)
13905                    }
13906                    STAKER_DELEGATION_TYPEHASH
13907                },
13908                {
13909                    fn eigenPodManager(
13910                        data: &[u8],
13911                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
13912                        <eigenPodManagerCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
13913                            data,
13914                        )
13915                        .map(DelegationManagerCalls::eigenPodManager)
13916                    }
13917                    eigenPodManager
13918                },
13919                {
13920                    fn MAX_STAKER_OPT_OUT_WINDOW_BLOCKS(
13921                        data: &[u8],
13922                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
13923                        <MAX_STAKER_OPT_OUT_WINDOW_BLOCKSCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
13924                                data,
13925                            )
13926                            .map(
13927                                DelegationManagerCalls::MAX_STAKER_OPT_OUT_WINDOW_BLOCKS,
13928                            )
13929                    }
13930                    MAX_STAKER_OPT_OUT_WINDOW_BLOCKS
13931                },
13932                {
13933                    fn pauseAll(data: &[u8]) -> alloy_sol_types::Result<DelegationManagerCalls> {
13934                        <pauseAllCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(data)
13935                            .map(DelegationManagerCalls::pauseAll)
13936                    }
13937                    pauseAll
13938                },
13939                {
13940                    fn calculateWithdrawalRoot(
13941                        data: &[u8],
13942                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
13943                        <calculateWithdrawalRootCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
13944                                data,
13945                            )
13946                            .map(DelegationManagerCalls::calculateWithdrawalRoot)
13947                    }
13948                    calculateWithdrawalRoot
13949                },
13950                {
13951                    fn paused_0(data: &[u8]) -> alloy_sol_types::Result<DelegationManagerCalls> {
13952                        <paused_0Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(data)
13953                            .map(DelegationManagerCalls::paused_0)
13954                    }
13955                    paused_0
13956                },
13957                {
13958                    fn paused_1(data: &[u8]) -> alloy_sol_types::Result<DelegationManagerCalls> {
13959                        <paused_1Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(data)
13960                            .map(DelegationManagerCalls::paused_1)
13961                    }
13962                    paused_1
13963                },
13964                {
13965                    fn completeQueuedWithdrawal(
13966                        data: &[u8],
13967                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
13968                        <completeQueuedWithdrawalCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
13969                                data,
13970                            )
13971                            .map(DelegationManagerCalls::completeQueuedWithdrawal)
13972                    }
13973                    completeQueuedWithdrawal
13974                },
13975                {
13976                    fn setMinWithdrawalDelayBlocks(
13977                        data: &[u8],
13978                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
13979                        <setMinWithdrawalDelayBlocksCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
13980                                data,
13981                            )
13982                            .map(DelegationManagerCalls::setMinWithdrawalDelayBlocks)
13983                    }
13984                    setMinWithdrawalDelayBlocks
13985                },
13986                {
13987                    fn delegatedTo(data: &[u8]) -> alloy_sol_types::Result<DelegationManagerCalls> {
13988                        <delegatedToCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(data)
13989                            .map(DelegationManagerCalls::delegatedTo)
13990                    }
13991                    delegatedTo
13992                },
13993                {
13994                    fn isOperator(data: &[u8]) -> alloy_sol_types::Result<DelegationManagerCalls> {
13995                        <isOperatorCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(data)
13996                            .map(DelegationManagerCalls::isOperator)
13997                    }
13998                    isOperator
13999                },
14000                {
14001                    fn renounceOwnership(
14002                        data: &[u8],
14003                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
14004                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14005                                data,
14006                            )
14007                            .map(DelegationManagerCalls::renounceOwnership)
14008                    }
14009                    renounceOwnership
14010                },
14011                {
14012                    fn operatorShares(
14013                        data: &[u8],
14014                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
14015                        <operatorSharesCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14016                            data,
14017                        )
14018                        .map(DelegationManagerCalls::operatorShares)
14019                    }
14020                    operatorShares
14021                },
14022                {
14023                    fn delegateToBySignature(
14024                        data: &[u8],
14025                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
14026                        <delegateToBySignatureCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14027                                data,
14028                            )
14029                            .map(DelegationManagerCalls::delegateToBySignature)
14030                    }
14031                    delegateToBySignature
14032                },
14033                {
14034                    fn pauserRegistry(
14035                        data: &[u8],
14036                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
14037                        <pauserRegistryCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14038                            data,
14039                        )
14040                        .map(DelegationManagerCalls::pauserRegistry)
14041                    }
14042                    pauserRegistry
14043                },
14044                {
14045                    fn owner(data: &[u8]) -> alloy_sol_types::Result<DelegationManagerCalls> {
14046                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(data)
14047                            .map(DelegationManagerCalls::owner)
14048                    }
14049                    owner
14050                },
14051                {
14052                    fn getOperatorShares(
14053                        data: &[u8],
14054                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
14055                        <getOperatorSharesCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14056                                data,
14057                            )
14058                            .map(DelegationManagerCalls::getOperatorShares)
14059                    }
14060                    getOperatorShares
14061                },
14062                {
14063                    fn beaconChainETHStrategy(
14064                        data: &[u8],
14065                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
14066                        <beaconChainETHStrategyCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14067                                data,
14068                            )
14069                            .map(DelegationManagerCalls::beaconChainETHStrategy)
14070                    }
14071                    beaconChainETHStrategy
14072                },
14073                {
14074                    fn updateOperatorMetadataURI(
14075                        data: &[u8],
14076                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
14077                        <updateOperatorMetadataURICall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14078                                data,
14079                            )
14080                            .map(DelegationManagerCalls::updateOperatorMetadataURI)
14081                    }
14082                    updateOperatorMetadataURI
14083                },
14084                {
14085                    fn cumulativeWithdrawalsQueued(
14086                        data: &[u8],
14087                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
14088                        <cumulativeWithdrawalsQueuedCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14089                                data,
14090                            )
14091                            .map(DelegationManagerCalls::cumulativeWithdrawalsQueued)
14092                    }
14093                    cumulativeWithdrawalsQueued
14094                },
14095                {
14096                    fn slasher(data: &[u8]) -> alloy_sol_types::Result<DelegationManagerCalls> {
14097                        <slasherCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(data)
14098                            .map(DelegationManagerCalls::slasher)
14099                    }
14100                    slasher
14101                },
14102                {
14103                    fn pendingWithdrawals(
14104                        data: &[u8],
14105                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
14106                        <pendingWithdrawalsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14107                                data,
14108                            )
14109                            .map(DelegationManagerCalls::pendingWithdrawals)
14110                    }
14111                    pendingWithdrawals
14112                },
14113                {
14114                    fn delegationApproverSaltIsSpent(
14115                        data: &[u8],
14116                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
14117                        <delegationApproverSaltIsSpentCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14118                                data,
14119                            )
14120                            .map(DelegationManagerCalls::delegationApproverSaltIsSpent)
14121                    }
14122                    delegationApproverSaltIsSpent
14123                },
14124                {
14125                    fn minWithdrawalDelayBlocks(
14126                        data: &[u8],
14127                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
14128                        <minWithdrawalDelayBlocksCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14129                                data,
14130                            )
14131                            .map(DelegationManagerCalls::minWithdrawalDelayBlocks)
14132                    }
14133                    minWithdrawalDelayBlocks
14134                },
14135                {
14136                    fn strategyWithdrawalDelayBlocks(
14137                        data: &[u8],
14138                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
14139                        <strategyWithdrawalDelayBlocksCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14140                                data,
14141                            )
14142                            .map(DelegationManagerCalls::strategyWithdrawalDelayBlocks)
14143                    }
14144                    strategyWithdrawalDelayBlocks
14145                },
14146                {
14147                    fn operatorDetails(
14148                        data: &[u8],
14149                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
14150                        <operatorDetailsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14151                            data,
14152                        )
14153                        .map(DelegationManagerCalls::operatorDetails)
14154                    }
14155                    operatorDetails
14156                },
14157                {
14158                    fn calculateStakerDelegationDigestHash(
14159                        data: &[u8],
14160                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
14161                        <calculateStakerDelegationDigestHashCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14162                                data,
14163                            )
14164                            .map(
14165                                DelegationManagerCalls::calculateStakerDelegationDigestHash,
14166                            )
14167                    }
14168                    calculateStakerDelegationDigestHash
14169                },
14170                {
14171                    fn MAX_WITHDRAWAL_DELAY_BLOCKS(
14172                        data: &[u8],
14173                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
14174                        <MAX_WITHDRAWAL_DELAY_BLOCKSCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14175                                data,
14176                            )
14177                            .map(DelegationManagerCalls::MAX_WITHDRAWAL_DELAY_BLOCKS)
14178                    }
14179                    MAX_WITHDRAWAL_DELAY_BLOCKS
14180                },
14181                {
14182                    fn getDelegatableShares(
14183                        data: &[u8],
14184                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
14185                        <getDelegatableSharesCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14186                                data,
14187                            )
14188                            .map(DelegationManagerCalls::getDelegatableShares)
14189                    }
14190                    getDelegatableShares
14191                },
14192                {
14193                    fn undelegate(data: &[u8]) -> alloy_sol_types::Result<DelegationManagerCalls> {
14194                        <undelegateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(data)
14195                            .map(DelegationManagerCalls::undelegate)
14196                    }
14197                    undelegate
14198                },
14199                {
14200                    fn delegateTo(data: &[u8]) -> alloy_sol_types::Result<DelegationManagerCalls> {
14201                        <delegateToCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(data)
14202                            .map(DelegationManagerCalls::delegateTo)
14203                    }
14204                    delegateTo
14205                },
14206                {
14207                    fn modifyOperatorDetails(
14208                        data: &[u8],
14209                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
14210                        <modifyOperatorDetailsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14211                                data,
14212                            )
14213                            .map(DelegationManagerCalls::modifyOperatorDetails)
14214                    }
14215                    modifyOperatorDetails
14216                },
14217                {
14218                    fn transferOwnership(
14219                        data: &[u8],
14220                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
14221                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14222                                data,
14223                            )
14224                            .map(DelegationManagerCalls::transferOwnership)
14225                    }
14226                    transferOwnership
14227                },
14228                {
14229                    fn domainSeparator(
14230                        data: &[u8],
14231                    ) -> alloy_sol_types::Result<DelegationManagerCalls> {
14232                        <domainSeparatorCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14233                            data,
14234                        )
14235                        .map(DelegationManagerCalls::domainSeparator)
14236                    }
14237                    domainSeparator
14238                },
14239                {
14240                    fn unpause(data: &[u8]) -> alloy_sol_types::Result<DelegationManagerCalls> {
14241                        <unpauseCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(data)
14242                            .map(DelegationManagerCalls::unpause)
14243                    }
14244                    unpause
14245                },
14246            ];
14247            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
14248                return Err(alloy_sol_types::Error::unknown_selector(
14249                    <Self as alloy_sol_types::SolInterface>::NAME,
14250                    selector,
14251                ));
14252            };
14253            DECODE_VALIDATE_SHIMS[idx](data)
14254        }
14255        #[inline]
14256        fn abi_encoded_size(&self) -> usize {
14257            match self {
14258                Self::DELEGATION_APPROVAL_TYPEHASH(inner) => {
14259                    <DELEGATION_APPROVAL_TYPEHASHCall as alloy_sol_types::SolCall>::abi_encoded_size(
14260                        inner,
14261                    )
14262                }
14263                Self::DOMAIN_TYPEHASH(inner) => {
14264                    <DOMAIN_TYPEHASHCall as alloy_sol_types::SolCall>::abi_encoded_size(
14265                        inner,
14266                    )
14267                }
14268                Self::MAX_STAKER_OPT_OUT_WINDOW_BLOCKS(inner) => {
14269                    <MAX_STAKER_OPT_OUT_WINDOW_BLOCKSCall as alloy_sol_types::SolCall>::abi_encoded_size(
14270                        inner,
14271                    )
14272                }
14273                Self::MAX_WITHDRAWAL_DELAY_BLOCKS(inner) => {
14274                    <MAX_WITHDRAWAL_DELAY_BLOCKSCall as alloy_sol_types::SolCall>::abi_encoded_size(
14275                        inner,
14276                    )
14277                }
14278                Self::STAKER_DELEGATION_TYPEHASH(inner) => {
14279                    <STAKER_DELEGATION_TYPEHASHCall as alloy_sol_types::SolCall>::abi_encoded_size(
14280                        inner,
14281                    )
14282                }
14283                Self::beaconChainETHStrategy(inner) => {
14284                    <beaconChainETHStrategyCall as alloy_sol_types::SolCall>::abi_encoded_size(
14285                        inner,
14286                    )
14287                }
14288                Self::calculateCurrentStakerDelegationDigestHash(inner) => {
14289                    <calculateCurrentStakerDelegationDigestHashCall as alloy_sol_types::SolCall>::abi_encoded_size(
14290                        inner,
14291                    )
14292                }
14293                Self::calculateDelegationApprovalDigestHash(inner) => {
14294                    <calculateDelegationApprovalDigestHashCall as alloy_sol_types::SolCall>::abi_encoded_size(
14295                        inner,
14296                    )
14297                }
14298                Self::calculateStakerDelegationDigestHash(inner) => {
14299                    <calculateStakerDelegationDigestHashCall as alloy_sol_types::SolCall>::abi_encoded_size(
14300                        inner,
14301                    )
14302                }
14303                Self::calculateWithdrawalRoot(inner) => {
14304                    <calculateWithdrawalRootCall as alloy_sol_types::SolCall>::abi_encoded_size(
14305                        inner,
14306                    )
14307                }
14308                Self::completeQueuedWithdrawal(inner) => {
14309                    <completeQueuedWithdrawalCall as alloy_sol_types::SolCall>::abi_encoded_size(
14310                        inner,
14311                    )
14312                }
14313                Self::completeQueuedWithdrawals(inner) => {
14314                    <completeQueuedWithdrawalsCall as alloy_sol_types::SolCall>::abi_encoded_size(
14315                        inner,
14316                    )
14317                }
14318                Self::cumulativeWithdrawalsQueued(inner) => {
14319                    <cumulativeWithdrawalsQueuedCall as alloy_sol_types::SolCall>::abi_encoded_size(
14320                        inner,
14321                    )
14322                }
14323                Self::decreaseDelegatedShares(inner) => {
14324                    <decreaseDelegatedSharesCall as alloy_sol_types::SolCall>::abi_encoded_size(
14325                        inner,
14326                    )
14327                }
14328                Self::delegateTo(inner) => {
14329                    <delegateToCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
14330                }
14331                Self::delegateToBySignature(inner) => {
14332                    <delegateToBySignatureCall as alloy_sol_types::SolCall>::abi_encoded_size(
14333                        inner,
14334                    )
14335                }
14336                Self::delegatedTo(inner) => {
14337                    <delegatedToCall as alloy_sol_types::SolCall>::abi_encoded_size(
14338                        inner,
14339                    )
14340                }
14341                Self::delegationApprover(inner) => {
14342                    <delegationApproverCall as alloy_sol_types::SolCall>::abi_encoded_size(
14343                        inner,
14344                    )
14345                }
14346                Self::delegationApproverSaltIsSpent(inner) => {
14347                    <delegationApproverSaltIsSpentCall as alloy_sol_types::SolCall>::abi_encoded_size(
14348                        inner,
14349                    )
14350                }
14351                Self::domainSeparator(inner) => {
14352                    <domainSeparatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
14353                        inner,
14354                    )
14355                }
14356                Self::eigenPodManager(inner) => {
14357                    <eigenPodManagerCall as alloy_sol_types::SolCall>::abi_encoded_size(
14358                        inner,
14359                    )
14360                }
14361                Self::getDelegatableShares(inner) => {
14362                    <getDelegatableSharesCall as alloy_sol_types::SolCall>::abi_encoded_size(
14363                        inner,
14364                    )
14365                }
14366                Self::getOperatorShares(inner) => {
14367                    <getOperatorSharesCall as alloy_sol_types::SolCall>::abi_encoded_size(
14368                        inner,
14369                    )
14370                }
14371                Self::getWithdrawalDelay(inner) => {
14372                    <getWithdrawalDelayCall as alloy_sol_types::SolCall>::abi_encoded_size(
14373                        inner,
14374                    )
14375                }
14376                Self::increaseDelegatedShares(inner) => {
14377                    <increaseDelegatedSharesCall as alloy_sol_types::SolCall>::abi_encoded_size(
14378                        inner,
14379                    )
14380                }
14381                Self::initialize(inner) => {
14382                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
14383                }
14384                Self::isDelegated(inner) => {
14385                    <isDelegatedCall as alloy_sol_types::SolCall>::abi_encoded_size(
14386                        inner,
14387                    )
14388                }
14389                Self::isOperator(inner) => {
14390                    <isOperatorCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
14391                }
14392                Self::minWithdrawalDelayBlocks(inner) => {
14393                    <minWithdrawalDelayBlocksCall as alloy_sol_types::SolCall>::abi_encoded_size(
14394                        inner,
14395                    )
14396                }
14397                Self::modifyOperatorDetails(inner) => {
14398                    <modifyOperatorDetailsCall as alloy_sol_types::SolCall>::abi_encoded_size(
14399                        inner,
14400                    )
14401                }
14402                Self::operatorDetails(inner) => {
14403                    <operatorDetailsCall as alloy_sol_types::SolCall>::abi_encoded_size(
14404                        inner,
14405                    )
14406                }
14407                Self::operatorShares(inner) => {
14408                    <operatorSharesCall as alloy_sol_types::SolCall>::abi_encoded_size(
14409                        inner,
14410                    )
14411                }
14412                Self::owner(inner) => {
14413                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
14414                }
14415                Self::pause(inner) => {
14416                    <pauseCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
14417                }
14418                Self::pauseAll(inner) => {
14419                    <pauseAllCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
14420                }
14421                Self::paused_0(inner) => {
14422                    <paused_0Call as alloy_sol_types::SolCall>::abi_encoded_size(inner)
14423                }
14424                Self::paused_1(inner) => {
14425                    <paused_1Call as alloy_sol_types::SolCall>::abi_encoded_size(inner)
14426                }
14427                Self::pauserRegistry(inner) => {
14428                    <pauserRegistryCall as alloy_sol_types::SolCall>::abi_encoded_size(
14429                        inner,
14430                    )
14431                }
14432                Self::pendingWithdrawals(inner) => {
14433                    <pendingWithdrawalsCall as alloy_sol_types::SolCall>::abi_encoded_size(
14434                        inner,
14435                    )
14436                }
14437                Self::queueWithdrawals(inner) => {
14438                    <queueWithdrawalsCall as alloy_sol_types::SolCall>::abi_encoded_size(
14439                        inner,
14440                    )
14441                }
14442                Self::registerAsOperator(inner) => {
14443                    <registerAsOperatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
14444                        inner,
14445                    )
14446                }
14447                Self::renounceOwnership(inner) => {
14448                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
14449                        inner,
14450                    )
14451                }
14452                Self::setMinWithdrawalDelayBlocks(inner) => {
14453                    <setMinWithdrawalDelayBlocksCall as alloy_sol_types::SolCall>::abi_encoded_size(
14454                        inner,
14455                    )
14456                }
14457                Self::setPauserRegistry(inner) => {
14458                    <setPauserRegistryCall as alloy_sol_types::SolCall>::abi_encoded_size(
14459                        inner,
14460                    )
14461                }
14462                Self::setStrategyWithdrawalDelayBlocks(inner) => {
14463                    <setStrategyWithdrawalDelayBlocksCall as alloy_sol_types::SolCall>::abi_encoded_size(
14464                        inner,
14465                    )
14466                }
14467                Self::slasher(inner) => {
14468                    <slasherCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
14469                }
14470                Self::stakerNonce(inner) => {
14471                    <stakerNonceCall as alloy_sol_types::SolCall>::abi_encoded_size(
14472                        inner,
14473                    )
14474                }
14475                Self::stakerOptOutWindowBlocks(inner) => {
14476                    <stakerOptOutWindowBlocksCall as alloy_sol_types::SolCall>::abi_encoded_size(
14477                        inner,
14478                    )
14479                }
14480                Self::strategyManager(inner) => {
14481                    <strategyManagerCall as alloy_sol_types::SolCall>::abi_encoded_size(
14482                        inner,
14483                    )
14484                }
14485                Self::strategyWithdrawalDelayBlocks(inner) => {
14486                    <strategyWithdrawalDelayBlocksCall as alloy_sol_types::SolCall>::abi_encoded_size(
14487                        inner,
14488                    )
14489                }
14490                Self::transferOwnership(inner) => {
14491                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
14492                        inner,
14493                    )
14494                }
14495                Self::undelegate(inner) => {
14496                    <undelegateCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
14497                }
14498                Self::unpause(inner) => {
14499                    <unpauseCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
14500                }
14501                Self::updateOperatorMetadataURI(inner) => {
14502                    <updateOperatorMetadataURICall as alloy_sol_types::SolCall>::abi_encoded_size(
14503                        inner,
14504                    )
14505                }
14506            }
14507        }
14508        #[inline]
14509        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
14510            match self {
14511                Self::DELEGATION_APPROVAL_TYPEHASH(inner) => {
14512                    <DELEGATION_APPROVAL_TYPEHASHCall as alloy_sol_types::SolCall>::abi_encode_raw(
14513                        inner,
14514                        out,
14515                    )
14516                }
14517                Self::DOMAIN_TYPEHASH(inner) => {
14518                    <DOMAIN_TYPEHASHCall as alloy_sol_types::SolCall>::abi_encode_raw(
14519                        inner,
14520                        out,
14521                    )
14522                }
14523                Self::MAX_STAKER_OPT_OUT_WINDOW_BLOCKS(inner) => {
14524                    <MAX_STAKER_OPT_OUT_WINDOW_BLOCKSCall as alloy_sol_types::SolCall>::abi_encode_raw(
14525                        inner,
14526                        out,
14527                    )
14528                }
14529                Self::MAX_WITHDRAWAL_DELAY_BLOCKS(inner) => {
14530                    <MAX_WITHDRAWAL_DELAY_BLOCKSCall as alloy_sol_types::SolCall>::abi_encode_raw(
14531                        inner,
14532                        out,
14533                    )
14534                }
14535                Self::STAKER_DELEGATION_TYPEHASH(inner) => {
14536                    <STAKER_DELEGATION_TYPEHASHCall as alloy_sol_types::SolCall>::abi_encode_raw(
14537                        inner,
14538                        out,
14539                    )
14540                }
14541                Self::beaconChainETHStrategy(inner) => {
14542                    <beaconChainETHStrategyCall as alloy_sol_types::SolCall>::abi_encode_raw(
14543                        inner,
14544                        out,
14545                    )
14546                }
14547                Self::calculateCurrentStakerDelegationDigestHash(inner) => {
14548                    <calculateCurrentStakerDelegationDigestHashCall as alloy_sol_types::SolCall>::abi_encode_raw(
14549                        inner,
14550                        out,
14551                    )
14552                }
14553                Self::calculateDelegationApprovalDigestHash(inner) => {
14554                    <calculateDelegationApprovalDigestHashCall as alloy_sol_types::SolCall>::abi_encode_raw(
14555                        inner,
14556                        out,
14557                    )
14558                }
14559                Self::calculateStakerDelegationDigestHash(inner) => {
14560                    <calculateStakerDelegationDigestHashCall as alloy_sol_types::SolCall>::abi_encode_raw(
14561                        inner,
14562                        out,
14563                    )
14564                }
14565                Self::calculateWithdrawalRoot(inner) => {
14566                    <calculateWithdrawalRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
14567                        inner,
14568                        out,
14569                    )
14570                }
14571                Self::completeQueuedWithdrawal(inner) => {
14572                    <completeQueuedWithdrawalCall as alloy_sol_types::SolCall>::abi_encode_raw(
14573                        inner,
14574                        out,
14575                    )
14576                }
14577                Self::completeQueuedWithdrawals(inner) => {
14578                    <completeQueuedWithdrawalsCall as alloy_sol_types::SolCall>::abi_encode_raw(
14579                        inner,
14580                        out,
14581                    )
14582                }
14583                Self::cumulativeWithdrawalsQueued(inner) => {
14584                    <cumulativeWithdrawalsQueuedCall as alloy_sol_types::SolCall>::abi_encode_raw(
14585                        inner,
14586                        out,
14587                    )
14588                }
14589                Self::decreaseDelegatedShares(inner) => {
14590                    <decreaseDelegatedSharesCall as alloy_sol_types::SolCall>::abi_encode_raw(
14591                        inner,
14592                        out,
14593                    )
14594                }
14595                Self::delegateTo(inner) => {
14596                    <delegateToCall as alloy_sol_types::SolCall>::abi_encode_raw(
14597                        inner,
14598                        out,
14599                    )
14600                }
14601                Self::delegateToBySignature(inner) => {
14602                    <delegateToBySignatureCall as alloy_sol_types::SolCall>::abi_encode_raw(
14603                        inner,
14604                        out,
14605                    )
14606                }
14607                Self::delegatedTo(inner) => {
14608                    <delegatedToCall as alloy_sol_types::SolCall>::abi_encode_raw(
14609                        inner,
14610                        out,
14611                    )
14612                }
14613                Self::delegationApprover(inner) => {
14614                    <delegationApproverCall as alloy_sol_types::SolCall>::abi_encode_raw(
14615                        inner,
14616                        out,
14617                    )
14618                }
14619                Self::delegationApproverSaltIsSpent(inner) => {
14620                    <delegationApproverSaltIsSpentCall as alloy_sol_types::SolCall>::abi_encode_raw(
14621                        inner,
14622                        out,
14623                    )
14624                }
14625                Self::domainSeparator(inner) => {
14626                    <domainSeparatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
14627                        inner,
14628                        out,
14629                    )
14630                }
14631                Self::eigenPodManager(inner) => {
14632                    <eigenPodManagerCall as alloy_sol_types::SolCall>::abi_encode_raw(
14633                        inner,
14634                        out,
14635                    )
14636                }
14637                Self::getDelegatableShares(inner) => {
14638                    <getDelegatableSharesCall as alloy_sol_types::SolCall>::abi_encode_raw(
14639                        inner,
14640                        out,
14641                    )
14642                }
14643                Self::getOperatorShares(inner) => {
14644                    <getOperatorSharesCall as alloy_sol_types::SolCall>::abi_encode_raw(
14645                        inner,
14646                        out,
14647                    )
14648                }
14649                Self::getWithdrawalDelay(inner) => {
14650                    <getWithdrawalDelayCall as alloy_sol_types::SolCall>::abi_encode_raw(
14651                        inner,
14652                        out,
14653                    )
14654                }
14655                Self::increaseDelegatedShares(inner) => {
14656                    <increaseDelegatedSharesCall as alloy_sol_types::SolCall>::abi_encode_raw(
14657                        inner,
14658                        out,
14659                    )
14660                }
14661                Self::initialize(inner) => {
14662                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
14663                        inner,
14664                        out,
14665                    )
14666                }
14667                Self::isDelegated(inner) => {
14668                    <isDelegatedCall as alloy_sol_types::SolCall>::abi_encode_raw(
14669                        inner,
14670                        out,
14671                    )
14672                }
14673                Self::isOperator(inner) => {
14674                    <isOperatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
14675                        inner,
14676                        out,
14677                    )
14678                }
14679                Self::minWithdrawalDelayBlocks(inner) => {
14680                    <minWithdrawalDelayBlocksCall as alloy_sol_types::SolCall>::abi_encode_raw(
14681                        inner,
14682                        out,
14683                    )
14684                }
14685                Self::modifyOperatorDetails(inner) => {
14686                    <modifyOperatorDetailsCall as alloy_sol_types::SolCall>::abi_encode_raw(
14687                        inner,
14688                        out,
14689                    )
14690                }
14691                Self::operatorDetails(inner) => {
14692                    <operatorDetailsCall as alloy_sol_types::SolCall>::abi_encode_raw(
14693                        inner,
14694                        out,
14695                    )
14696                }
14697                Self::operatorShares(inner) => {
14698                    <operatorSharesCall as alloy_sol_types::SolCall>::abi_encode_raw(
14699                        inner,
14700                        out,
14701                    )
14702                }
14703                Self::owner(inner) => {
14704                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
14705                }
14706                Self::pause(inner) => {
14707                    <pauseCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
14708                }
14709                Self::pauseAll(inner) => {
14710                    <pauseAllCall as alloy_sol_types::SolCall>::abi_encode_raw(
14711                        inner,
14712                        out,
14713                    )
14714                }
14715                Self::paused_0(inner) => {
14716                    <paused_0Call as alloy_sol_types::SolCall>::abi_encode_raw(
14717                        inner,
14718                        out,
14719                    )
14720                }
14721                Self::paused_1(inner) => {
14722                    <paused_1Call as alloy_sol_types::SolCall>::abi_encode_raw(
14723                        inner,
14724                        out,
14725                    )
14726                }
14727                Self::pauserRegistry(inner) => {
14728                    <pauserRegistryCall as alloy_sol_types::SolCall>::abi_encode_raw(
14729                        inner,
14730                        out,
14731                    )
14732                }
14733                Self::pendingWithdrawals(inner) => {
14734                    <pendingWithdrawalsCall as alloy_sol_types::SolCall>::abi_encode_raw(
14735                        inner,
14736                        out,
14737                    )
14738                }
14739                Self::queueWithdrawals(inner) => {
14740                    <queueWithdrawalsCall as alloy_sol_types::SolCall>::abi_encode_raw(
14741                        inner,
14742                        out,
14743                    )
14744                }
14745                Self::registerAsOperator(inner) => {
14746                    <registerAsOperatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
14747                        inner,
14748                        out,
14749                    )
14750                }
14751                Self::renounceOwnership(inner) => {
14752                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
14753                        inner,
14754                        out,
14755                    )
14756                }
14757                Self::setMinWithdrawalDelayBlocks(inner) => {
14758                    <setMinWithdrawalDelayBlocksCall as alloy_sol_types::SolCall>::abi_encode_raw(
14759                        inner,
14760                        out,
14761                    )
14762                }
14763                Self::setPauserRegistry(inner) => {
14764                    <setPauserRegistryCall as alloy_sol_types::SolCall>::abi_encode_raw(
14765                        inner,
14766                        out,
14767                    )
14768                }
14769                Self::setStrategyWithdrawalDelayBlocks(inner) => {
14770                    <setStrategyWithdrawalDelayBlocksCall as alloy_sol_types::SolCall>::abi_encode_raw(
14771                        inner,
14772                        out,
14773                    )
14774                }
14775                Self::slasher(inner) => {
14776                    <slasherCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
14777                }
14778                Self::stakerNonce(inner) => {
14779                    <stakerNonceCall as alloy_sol_types::SolCall>::abi_encode_raw(
14780                        inner,
14781                        out,
14782                    )
14783                }
14784                Self::stakerOptOutWindowBlocks(inner) => {
14785                    <stakerOptOutWindowBlocksCall as alloy_sol_types::SolCall>::abi_encode_raw(
14786                        inner,
14787                        out,
14788                    )
14789                }
14790                Self::strategyManager(inner) => {
14791                    <strategyManagerCall as alloy_sol_types::SolCall>::abi_encode_raw(
14792                        inner,
14793                        out,
14794                    )
14795                }
14796                Self::strategyWithdrawalDelayBlocks(inner) => {
14797                    <strategyWithdrawalDelayBlocksCall as alloy_sol_types::SolCall>::abi_encode_raw(
14798                        inner,
14799                        out,
14800                    )
14801                }
14802                Self::transferOwnership(inner) => {
14803                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
14804                        inner,
14805                        out,
14806                    )
14807                }
14808                Self::undelegate(inner) => {
14809                    <undelegateCall as alloy_sol_types::SolCall>::abi_encode_raw(
14810                        inner,
14811                        out,
14812                    )
14813                }
14814                Self::unpause(inner) => {
14815                    <unpauseCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
14816                }
14817                Self::updateOperatorMetadataURI(inner) => {
14818                    <updateOperatorMetadataURICall as alloy_sol_types::SolCall>::abi_encode_raw(
14819                        inner,
14820                        out,
14821                    )
14822                }
14823            }
14824        }
14825    }
14826    ///Container for all the [`DelegationManager`](self) events.
14827    #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq, Eq, Hash)]
14828    pub enum DelegationManagerEvents {
14829        #[allow(missing_docs)]
14830        Initialized(Initialized),
14831        #[allow(missing_docs)]
14832        MinWithdrawalDelayBlocksSet(MinWithdrawalDelayBlocksSet),
14833        #[allow(missing_docs)]
14834        OperatorDetailsModified(OperatorDetailsModified),
14835        #[allow(missing_docs)]
14836        OperatorMetadataURIUpdated(OperatorMetadataURIUpdated),
14837        #[allow(missing_docs)]
14838        OperatorRegistered(OperatorRegistered),
14839        #[allow(missing_docs)]
14840        OperatorSharesDecreased(OperatorSharesDecreased),
14841        #[allow(missing_docs)]
14842        OperatorSharesIncreased(OperatorSharesIncreased),
14843        #[allow(missing_docs)]
14844        OwnershipTransferred(OwnershipTransferred),
14845        #[allow(missing_docs)]
14846        Paused(Paused),
14847        #[allow(missing_docs)]
14848        PauserRegistrySet(PauserRegistrySet),
14849        #[allow(missing_docs)]
14850        StakerDelegated(StakerDelegated),
14851        #[allow(missing_docs)]
14852        StakerForceUndelegated(StakerForceUndelegated),
14853        #[allow(missing_docs)]
14854        StakerUndelegated(StakerUndelegated),
14855        #[allow(missing_docs)]
14856        StrategyWithdrawalDelayBlocksSet(StrategyWithdrawalDelayBlocksSet),
14857        #[allow(missing_docs)]
14858        Unpaused(Unpaused),
14859        #[allow(missing_docs)]
14860        WithdrawalCompleted(WithdrawalCompleted),
14861        #[allow(missing_docs)]
14862        WithdrawalQueued(WithdrawalQueued),
14863    }
14864    #[automatically_derived]
14865    impl DelegationManagerEvents {
14866        /// All the selectors of this enum.
14867        ///
14868        /// Note that the selectors might not be in the same order as the variants.
14869        /// No guarantees are made about the order of the selectors.
14870        ///
14871        /// Prefer using `SolInterface` methods instead.
14872        pub const SELECTORS: &'static [[u8; 32usize]] = &[
14873            [
14874                2u8, 169u8, 25u8, 237u8, 14u8, 42u8, 202u8, 209u8, 221u8, 144u8, 241u8, 126u8,
14875                242u8, 250u8, 74u8, 229u8, 70u8, 46u8, 225u8, 51u8, 145u8, 112u8, 3u8, 74u8, 133u8,
14876                49u8, 204u8, 164u8, 182u8, 112u8, 128u8, 144u8,
14877            ],
14878            [
14879                14u8, 126u8, 250u8, 115u8, 142u8, 139u8, 12u8, 230u8, 55u8, 106u8, 12u8, 26u8,
14880                244u8, 113u8, 101u8, 85u8, 64u8, 210u8, 233u8, 168u8, 22u8, 71u8, 215u8, 176u8,
14881                158u8, 216u8, 35u8, 1u8, 132u8, 38u8, 87u8, 109u8,
14882            ],
14883            [
14884                30u8, 192u8, 66u8, 201u8, 101u8, 226u8, 237u8, 215u8, 16u8, 123u8, 81u8, 24u8,
14885                142u8, 224u8, 243u8, 131u8, 226u8, 46u8, 118u8, 23u8, 144u8, 65u8, 171u8, 58u8,
14886                157u8, 24u8, 255u8, 21u8, 20u8, 5u8, 22u8, 108u8,
14887            ],
14888            [
14889                53u8, 130u8, 209u8, 130u8, 142u8, 38u8, 191u8, 86u8, 189u8, 128u8, 21u8, 2u8,
14890                188u8, 2u8, 26u8, 192u8, 188u8, 138u8, 251u8, 87u8, 200u8, 38u8, 228u8, 152u8,
14891                107u8, 69u8, 89u8, 60u8, 143u8, 173u8, 56u8, 156u8,
14892            ],
14893            [
14894                105u8, 9u8, 96u8, 0u8, 55u8, 183u8, 93u8, 123u8, 71u8, 51u8, 174u8, 221u8, 129u8,
14895                84u8, 66u8, 181u8, 236u8, 1u8, 138u8, 130u8, 119u8, 81u8, 200u8, 50u8, 170u8,
14896                255u8, 100u8, 235u8, 165u8, 214u8, 210u8, 221u8,
14897            ],
14898            [
14899                110u8, 159u8, 205u8, 83u8, 152u8, 150u8, 252u8, 166u8, 14u8, 139u8, 15u8, 1u8,
14900                221u8, 88u8, 2u8, 51u8, 228u8, 138u8, 107u8, 15u8, 125u8, 240u8, 19u8, 184u8,
14901                155u8, 167u8, 245u8, 101u8, 134u8, 154u8, 205u8, 182u8,
14902            ],
14903            [
14904                127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8, 19u8, 56u8,
14905                82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8, 146u8, 20u8, 96u8,
14906                206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8,
14907            ],
14908            [
14909                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8, 31u8, 208u8,
14910                164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8, 218u8, 175u8, 227u8,
14911                180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
14912            ],
14913            [
14914                142u8, 132u8, 133u8, 88u8, 58u8, 35u8, 16u8, 212u8, 31u8, 124u8, 130u8, 185u8,
14915                66u8, 125u8, 11u8, 212u8, 155u8, 173u8, 116u8, 187u8, 156u8, 255u8, 157u8, 52u8,
14916                2u8, 162u8, 157u8, 143u8, 155u8, 40u8, 160u8, 226u8,
14917            ],
14918            [
14919                144u8, 9u8, 171u8, 21u8, 62u8, 128u8, 20u8, 251u8, 251u8, 2u8, 242u8, 33u8, 127u8,
14920                92u8, 222u8, 122u8, 167u8, 249u8, 173u8, 115u8, 74u8, 232u8, 92u8, 163u8, 238u8,
14921                63u8, 76u8, 162u8, 253u8, 212u8, 153u8, 249u8,
14922            ],
14923            [
14924                171u8, 64u8, 163u8, 116u8, 188u8, 81u8, 222u8, 55u8, 34u8, 0u8, 168u8, 188u8,
14925                152u8, 26u8, 248u8, 201u8, 236u8, 220u8, 8u8, 223u8, 218u8, 239u8, 11u8, 182u8,
14926                224u8, 159u8, 136u8, 243u8, 198u8, 22u8, 239u8, 61u8,
14927            ],
14928            [
14929                175u8, 160u8, 3u8, 205u8, 118u8, 248u8, 127u8, 249u8, 214u8, 43u8, 53u8, 190u8,
14930                234u8, 136u8, 153u8, 32u8, 243u8, 60u8, 12u8, 66u8, 184u8, 212u8, 91u8, 116u8,
14931                149u8, 77u8, 97u8, 213u8, 15u8, 75u8, 107u8, 105u8,
14932            ],
14933            [
14934                195u8, 238u8, 159u8, 46u8, 95u8, 218u8, 152u8, 232u8, 6u8, 106u8, 31u8, 116u8,
14935                91u8, 45u8, 249u8, 40u8, 95u8, 65u8, 111u8, 233u8, 140u8, 242u8, 85u8, 156u8,
14936                210u8, 20u8, 132u8, 179u8, 216u8, 116u8, 51u8, 4u8,
14937            ],
14938            [
14939                201u8, 112u8, 152u8, 194u8, 246u8, 88u8, 128u8, 11u8, 77u8, 242u8, 144u8, 1u8,
14940                82u8, 127u8, 115u8, 36u8, 188u8, 223u8, 252u8, 246u8, 232u8, 117u8, 26u8, 105u8,
14941                154u8, 185u8, 32u8, 161u8, 236u8, 237u8, 91u8, 29u8,
14942            ],
14943            [
14944                240u8, 237u8, 223u8, 7u8, 230u8, 234u8, 20u8, 243u8, 136u8, 180u8, 126u8, 30u8,
14945                148u8, 160u8, 244u8, 100u8, 236u8, 189u8, 158u8, 237u8, 65u8, 113u8, 19u8, 14u8,
14946                15u8, 192u8, 233u8, 159u8, 180u8, 3u8, 10u8, 138u8,
14947            ],
14948            [
14949                254u8, 190u8, 92u8, 210u8, 75u8, 44u8, 188u8, 123u8, 6u8, 91u8, 157u8, 15u8, 222u8,
14950                185u8, 4u8, 70u8, 30u8, 74u8, 252u8, 255u8, 87u8, 221u8, 87u8, 172u8, 218u8, 30u8,
14951                120u8, 50u8, 3u8, 27u8, 167u8, 172u8,
14952            ],
14953            [
14954                254u8, 227u8, 9u8, 102u8, 162u8, 86u8, 183u8, 30u8, 20u8, 188u8, 14u8, 191u8,
14955                201u8, 67u8, 21u8, 226u8, 142u8, 244u8, 169u8, 122u8, 113u8, 49u8, 169u8, 226u8,
14956                183u8, 163u8, 16u8, 167u8, 58u8, 244u8, 70u8, 118u8,
14957            ],
14958        ];
14959    }
14960    #[automatically_derived]
14961    impl alloy_sol_types::SolEventInterface for DelegationManagerEvents {
14962        const NAME: &'static str = "DelegationManagerEvents";
14963        const COUNT: usize = 17usize;
14964        fn decode_raw_log(
14965            topics: &[alloy_sol_types::Word],
14966            data: &[u8],
14967        ) -> alloy_sol_types::Result<Self> {
14968            match topics.first().copied() {
14969                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
14970                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
14971                        .map(Self::Initialized)
14972                }
14973                Some(
14974                    <MinWithdrawalDelayBlocksSet as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
14975                ) => <MinWithdrawalDelayBlocksSet as alloy_sol_types::SolEvent>::decode_raw_log(
14976                    topics, data,
14977                )
14978                .map(Self::MinWithdrawalDelayBlocksSet),
14979                Some(<OperatorDetailsModified as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
14980                    <OperatorDetailsModified as alloy_sol_types::SolEvent>::decode_raw_log(
14981                        topics, data,
14982                    )
14983                    .map(Self::OperatorDetailsModified)
14984                }
14985                Some(<OperatorMetadataURIUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
14986                    <OperatorMetadataURIUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
14987                        topics, data,
14988                    )
14989                    .map(Self::OperatorMetadataURIUpdated)
14990                }
14991                Some(<OperatorRegistered as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
14992                    <OperatorRegistered as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
14993                        .map(Self::OperatorRegistered)
14994                }
14995                Some(<OperatorSharesDecreased as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
14996                    <OperatorSharesDecreased as alloy_sol_types::SolEvent>::decode_raw_log(
14997                        topics, data,
14998                    )
14999                    .map(Self::OperatorSharesDecreased)
15000                }
15001                Some(<OperatorSharesIncreased as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
15002                    <OperatorSharesIncreased as alloy_sol_types::SolEvent>::decode_raw_log(
15003                        topics, data,
15004                    )
15005                    .map(Self::OperatorSharesIncreased)
15006                }
15007                Some(<OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
15008                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
15009                        topics, data,
15010                    )
15011                    .map(Self::OwnershipTransferred)
15012                }
15013                Some(<Paused as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
15014                    <Paused as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
15015                        .map(Self::Paused)
15016                }
15017                Some(<PauserRegistrySet as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
15018                    <PauserRegistrySet as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
15019                        .map(Self::PauserRegistrySet)
15020                }
15021                Some(<StakerDelegated as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
15022                    <StakerDelegated as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
15023                        .map(Self::StakerDelegated)
15024                }
15025                Some(<StakerForceUndelegated as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
15026                    <StakerForceUndelegated as alloy_sol_types::SolEvent>::decode_raw_log(
15027                        topics, data,
15028                    )
15029                    .map(Self::StakerForceUndelegated)
15030                }
15031                Some(<StakerUndelegated as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
15032                    <StakerUndelegated as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
15033                        .map(Self::StakerUndelegated)
15034                }
15035                Some(
15036                    <StrategyWithdrawalDelayBlocksSet as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
15037                ) => {
15038                    <StrategyWithdrawalDelayBlocksSet as alloy_sol_types::SolEvent>::decode_raw_log(
15039                        topics, data,
15040                    )
15041                    .map(Self::StrategyWithdrawalDelayBlocksSet)
15042                }
15043                Some(<Unpaused as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
15044                    <Unpaused as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
15045                        .map(Self::Unpaused)
15046                }
15047                Some(<WithdrawalCompleted as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
15048                    <WithdrawalCompleted as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
15049                        .map(Self::WithdrawalCompleted)
15050                }
15051                Some(<WithdrawalQueued as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
15052                    <WithdrawalQueued as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
15053                        .map(Self::WithdrawalQueued)
15054                }
15055                _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
15056                    name: <Self as alloy_sol_types::SolEventInterface>::NAME,
15057                    log: alloy_sol_types::private::Box::new(
15058                        alloy_sol_types::private::LogData::new_unchecked(
15059                            topics.to_vec(),
15060                            data.to_vec().into(),
15061                        ),
15062                    ),
15063                }),
15064            }
15065        }
15066    }
15067    #[automatically_derived]
15068    impl alloy_sol_types::private::IntoLogData for DelegationManagerEvents {
15069        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
15070            match self {
15071                Self::Initialized(inner) => {
15072                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15073                }
15074                Self::MinWithdrawalDelayBlocksSet(inner) => {
15075                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15076                }
15077                Self::OperatorDetailsModified(inner) => {
15078                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15079                }
15080                Self::OperatorMetadataURIUpdated(inner) => {
15081                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15082                }
15083                Self::OperatorRegistered(inner) => {
15084                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15085                }
15086                Self::OperatorSharesDecreased(inner) => {
15087                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15088                }
15089                Self::OperatorSharesIncreased(inner) => {
15090                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15091                }
15092                Self::OwnershipTransferred(inner) => {
15093                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15094                }
15095                Self::Paused(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner),
15096                Self::PauserRegistrySet(inner) => {
15097                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15098                }
15099                Self::StakerDelegated(inner) => {
15100                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15101                }
15102                Self::StakerForceUndelegated(inner) => {
15103                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15104                }
15105                Self::StakerUndelegated(inner) => {
15106                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15107                }
15108                Self::StrategyWithdrawalDelayBlocksSet(inner) => {
15109                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15110                }
15111                Self::Unpaused(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner),
15112                Self::WithdrawalCompleted(inner) => {
15113                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15114                }
15115                Self::WithdrawalQueued(inner) => {
15116                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15117                }
15118            }
15119        }
15120        fn into_log_data(self) -> alloy_sol_types::private::LogData {
15121            match self {
15122                Self::Initialized(inner) => {
15123                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15124                }
15125                Self::MinWithdrawalDelayBlocksSet(inner) => {
15126                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15127                }
15128                Self::OperatorDetailsModified(inner) => {
15129                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15130                }
15131                Self::OperatorMetadataURIUpdated(inner) => {
15132                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15133                }
15134                Self::OperatorRegistered(inner) => {
15135                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15136                }
15137                Self::OperatorSharesDecreased(inner) => {
15138                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15139                }
15140                Self::OperatorSharesIncreased(inner) => {
15141                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15142                }
15143                Self::OwnershipTransferred(inner) => {
15144                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15145                }
15146                Self::Paused(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner),
15147                Self::PauserRegistrySet(inner) => {
15148                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15149                }
15150                Self::StakerDelegated(inner) => {
15151                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15152                }
15153                Self::StakerForceUndelegated(inner) => {
15154                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15155                }
15156                Self::StakerUndelegated(inner) => {
15157                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15158                }
15159                Self::StrategyWithdrawalDelayBlocksSet(inner) => {
15160                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15161                }
15162                Self::Unpaused(inner) => {
15163                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15164                }
15165                Self::WithdrawalCompleted(inner) => {
15166                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15167                }
15168                Self::WithdrawalQueued(inner) => {
15169                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15170                }
15171            }
15172        }
15173    }
15174    use alloy::contract as alloy_contract;
15175    /**Creates a new wrapper around an on-chain [`DelegationManager`](self) contract instance.
15176
15177    See the [wrapper's documentation](`DelegationManagerInstance`) for more details.*/
15178    #[inline]
15179    pub const fn new<
15180        P: alloy_contract::private::Provider<N>,
15181        N: alloy_contract::private::Network,
15182    >(
15183        address: alloy_sol_types::private::Address,
15184        provider: P,
15185    ) -> DelegationManagerInstance<P, N> {
15186        DelegationManagerInstance::<P, N>::new(address, provider)
15187    }
15188    /**Deploys this contract using the given `provider` and constructor arguments, if any.
15189
15190    Returns a new instance of the contract, if the deployment was successful.
15191
15192    For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
15193    #[inline]
15194    pub fn deploy<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>(
15195        provider: P,
15196        _strategyManager: alloy::sol_types::private::Address,
15197        _slasher: alloy::sol_types::private::Address,
15198        _eigenPodManager: alloy::sol_types::private::Address,
15199    ) -> impl ::core::future::Future<Output = alloy_contract::Result<DelegationManagerInstance<P, N>>>
15200    {
15201        DelegationManagerInstance::<P, N>::deploy(
15202            provider,
15203            _strategyManager,
15204            _slasher,
15205            _eigenPodManager,
15206        )
15207    }
15208    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
15209    and constructor arguments, if any.
15210
15211    This is a simple wrapper around creating a `RawCallBuilder` with the data set to
15212    the bytecode concatenated with the constructor's ABI-encoded arguments.*/
15213    #[inline]
15214    pub fn deploy_builder<
15215        P: alloy_contract::private::Provider<N>,
15216        N: alloy_contract::private::Network,
15217    >(
15218        provider: P,
15219        _strategyManager: alloy::sol_types::private::Address,
15220        _slasher: alloy::sol_types::private::Address,
15221        _eigenPodManager: alloy::sol_types::private::Address,
15222    ) -> alloy_contract::RawCallBuilder<P, N> {
15223        DelegationManagerInstance::<P, N>::deploy_builder(
15224            provider,
15225            _strategyManager,
15226            _slasher,
15227            _eigenPodManager,
15228        )
15229    }
15230    /**A [`DelegationManager`](self) instance.
15231
15232    Contains type-safe methods for interacting with an on-chain instance of the
15233    [`DelegationManager`](self) contract located at a given `address`, using a given
15234    provider `P`.
15235
15236    If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
15237    documentation on how to provide it), the `deploy` and `deploy_builder` methods can
15238    be used to deploy a new instance of the contract.
15239
15240    See the [module-level documentation](self) for all the available methods.*/
15241    #[derive(Clone)]
15242    pub struct DelegationManagerInstance<P, N = alloy_contract::private::Ethereum> {
15243        address: alloy_sol_types::private::Address,
15244        provider: P,
15245        _network: ::core::marker::PhantomData<N>,
15246    }
15247    #[automatically_derived]
15248    impl<P, N> ::core::fmt::Debug for DelegationManagerInstance<P, N> {
15249        #[inline]
15250        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
15251            f.debug_tuple("DelegationManagerInstance")
15252                .field(&self.address)
15253                .finish()
15254        }
15255    }
15256    /// Instantiation and getters/setters.
15257    #[automatically_derived]
15258    impl<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>
15259        DelegationManagerInstance<P, N>
15260    {
15261        /**Creates a new wrapper around an on-chain [`DelegationManager`](self) contract instance.
15262
15263        See the [wrapper's documentation](`DelegationManagerInstance`) for more details.*/
15264        #[inline]
15265        pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self {
15266            Self {
15267                address,
15268                provider,
15269                _network: ::core::marker::PhantomData,
15270            }
15271        }
15272        /**Deploys this contract using the given `provider` and constructor arguments, if any.
15273
15274        Returns a new instance of the contract, if the deployment was successful.
15275
15276        For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
15277        #[inline]
15278        pub async fn deploy(
15279            provider: P,
15280            _strategyManager: alloy::sol_types::private::Address,
15281            _slasher: alloy::sol_types::private::Address,
15282            _eigenPodManager: alloy::sol_types::private::Address,
15283        ) -> alloy_contract::Result<DelegationManagerInstance<P, N>> {
15284            let call_builder =
15285                Self::deploy_builder(provider, _strategyManager, _slasher, _eigenPodManager);
15286            let contract_address = call_builder.deploy().await?;
15287            Ok(Self::new(contract_address, call_builder.provider))
15288        }
15289        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
15290        and constructor arguments, if any.
15291
15292        This is a simple wrapper around creating a `RawCallBuilder` with the data set to
15293        the bytecode concatenated with the constructor's ABI-encoded arguments.*/
15294        #[inline]
15295        pub fn deploy_builder(
15296            provider: P,
15297            _strategyManager: alloy::sol_types::private::Address,
15298            _slasher: alloy::sol_types::private::Address,
15299            _eigenPodManager: alloy::sol_types::private::Address,
15300        ) -> alloy_contract::RawCallBuilder<P, N> {
15301            alloy_contract::RawCallBuilder::new_raw_deploy(
15302                provider,
15303                [
15304                    &BYTECODE[..],
15305                    &alloy_sol_types::SolConstructor::abi_encode(&constructorCall {
15306                        _strategyManager,
15307                        _slasher,
15308                        _eigenPodManager,
15309                    })[..],
15310                ]
15311                .concat()
15312                .into(),
15313            )
15314        }
15315        /// Returns a reference to the address.
15316        #[inline]
15317        pub const fn address(&self) -> &alloy_sol_types::private::Address {
15318            &self.address
15319        }
15320        /// Sets the address.
15321        #[inline]
15322        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
15323            self.address = address;
15324        }
15325        /// Sets the address and returns `self`.
15326        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
15327            self.set_address(address);
15328            self
15329        }
15330        /// Returns a reference to the provider.
15331        #[inline]
15332        pub const fn provider(&self) -> &P {
15333            &self.provider
15334        }
15335    }
15336    impl<P: ::core::clone::Clone, N> DelegationManagerInstance<&P, N> {
15337        /// Clones the provider and returns a new instance with the cloned provider.
15338        #[inline]
15339        pub fn with_cloned_provider(self) -> DelegationManagerInstance<P, N> {
15340            DelegationManagerInstance {
15341                address: self.address,
15342                provider: ::core::clone::Clone::clone(&self.provider),
15343                _network: ::core::marker::PhantomData,
15344            }
15345        }
15346    }
15347    /// Function calls.
15348    #[automatically_derived]
15349    impl<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>
15350        DelegationManagerInstance<P, N>
15351    {
15352        /// Creates a new call builder using this contract instance's provider and address.
15353        ///
15354        /// Note that the call can be any function call, not just those defined in this
15355        /// contract. Prefer using the other methods for building type-safe contract calls.
15356        pub fn call_builder<C: alloy_sol_types::SolCall>(
15357            &self,
15358            call: &C,
15359        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
15360            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
15361        }
15362        ///Creates a new call builder for the [`DELEGATION_APPROVAL_TYPEHASH`] function.
15363        pub fn DELEGATION_APPROVAL_TYPEHASH(
15364            &self,
15365        ) -> alloy_contract::SolCallBuilder<&P, DELEGATION_APPROVAL_TYPEHASHCall, N> {
15366            self.call_builder(&DELEGATION_APPROVAL_TYPEHASHCall)
15367        }
15368        ///Creates a new call builder for the [`DOMAIN_TYPEHASH`] function.
15369        pub fn DOMAIN_TYPEHASH(
15370            &self,
15371        ) -> alloy_contract::SolCallBuilder<&P, DOMAIN_TYPEHASHCall, N> {
15372            self.call_builder(&DOMAIN_TYPEHASHCall)
15373        }
15374        ///Creates a new call builder for the [`MAX_STAKER_OPT_OUT_WINDOW_BLOCKS`] function.
15375        pub fn MAX_STAKER_OPT_OUT_WINDOW_BLOCKS(
15376            &self,
15377        ) -> alloy_contract::SolCallBuilder<&P, MAX_STAKER_OPT_OUT_WINDOW_BLOCKSCall, N> {
15378            self.call_builder(&MAX_STAKER_OPT_OUT_WINDOW_BLOCKSCall)
15379        }
15380        ///Creates a new call builder for the [`MAX_WITHDRAWAL_DELAY_BLOCKS`] function.
15381        pub fn MAX_WITHDRAWAL_DELAY_BLOCKS(
15382            &self,
15383        ) -> alloy_contract::SolCallBuilder<&P, MAX_WITHDRAWAL_DELAY_BLOCKSCall, N> {
15384            self.call_builder(&MAX_WITHDRAWAL_DELAY_BLOCKSCall)
15385        }
15386        ///Creates a new call builder for the [`STAKER_DELEGATION_TYPEHASH`] function.
15387        pub fn STAKER_DELEGATION_TYPEHASH(
15388            &self,
15389        ) -> alloy_contract::SolCallBuilder<&P, STAKER_DELEGATION_TYPEHASHCall, N> {
15390            self.call_builder(&STAKER_DELEGATION_TYPEHASHCall)
15391        }
15392        ///Creates a new call builder for the [`beaconChainETHStrategy`] function.
15393        pub fn beaconChainETHStrategy(
15394            &self,
15395        ) -> alloy_contract::SolCallBuilder<&P, beaconChainETHStrategyCall, N> {
15396            self.call_builder(&beaconChainETHStrategyCall)
15397        }
15398        ///Creates a new call builder for the [`calculateCurrentStakerDelegationDigestHash`] function.
15399        pub fn calculateCurrentStakerDelegationDigestHash(
15400            &self,
15401            staker: alloy::sol_types::private::Address,
15402            operator: alloy::sol_types::private::Address,
15403            expiry: alloy::sol_types::private::primitives::aliases::U256,
15404        ) -> alloy_contract::SolCallBuilder<&P, calculateCurrentStakerDelegationDigestHashCall, N>
15405        {
15406            self.call_builder(&calculateCurrentStakerDelegationDigestHashCall {
15407                staker,
15408                operator,
15409                expiry,
15410            })
15411        }
15412        ///Creates a new call builder for the [`calculateDelegationApprovalDigestHash`] function.
15413        pub fn calculateDelegationApprovalDigestHash(
15414            &self,
15415            staker: alloy::sol_types::private::Address,
15416            operator: alloy::sol_types::private::Address,
15417            _delegationApprover: alloy::sol_types::private::Address,
15418            approverSalt: alloy::sol_types::private::FixedBytes<32>,
15419            expiry: alloy::sol_types::private::primitives::aliases::U256,
15420        ) -> alloy_contract::SolCallBuilder<&P, calculateDelegationApprovalDigestHashCall, N>
15421        {
15422            self.call_builder(&calculateDelegationApprovalDigestHashCall {
15423                staker,
15424                operator,
15425                _delegationApprover,
15426                approverSalt,
15427                expiry,
15428            })
15429        }
15430        ///Creates a new call builder for the [`calculateStakerDelegationDigestHash`] function.
15431        pub fn calculateStakerDelegationDigestHash(
15432            &self,
15433            staker: alloy::sol_types::private::Address,
15434            _stakerNonce: alloy::sol_types::private::primitives::aliases::U256,
15435            operator: alloy::sol_types::private::Address,
15436            expiry: alloy::sol_types::private::primitives::aliases::U256,
15437        ) -> alloy_contract::SolCallBuilder<&P, calculateStakerDelegationDigestHashCall, N>
15438        {
15439            self.call_builder(&calculateStakerDelegationDigestHashCall {
15440                staker,
15441                _stakerNonce,
15442                operator,
15443                expiry,
15444            })
15445        }
15446        ///Creates a new call builder for the [`calculateWithdrawalRoot`] function.
15447        pub fn calculateWithdrawalRoot(
15448            &self,
15449            withdrawal: <IDelegationManager::Withdrawal as alloy::sol_types::SolType>::RustType,
15450        ) -> alloy_contract::SolCallBuilder<&P, calculateWithdrawalRootCall, N> {
15451            self.call_builder(&calculateWithdrawalRootCall { withdrawal })
15452        }
15453        ///Creates a new call builder for the [`completeQueuedWithdrawal`] function.
15454        pub fn completeQueuedWithdrawal(
15455            &self,
15456            withdrawal: <IDelegationManager::Withdrawal as alloy::sol_types::SolType>::RustType,
15457            tokens: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
15458            middlewareTimesIndex: alloy::sol_types::private::primitives::aliases::U256,
15459            receiveAsTokens: bool,
15460        ) -> alloy_contract::SolCallBuilder<&P, completeQueuedWithdrawalCall, N> {
15461            self.call_builder(&completeQueuedWithdrawalCall {
15462                withdrawal,
15463                tokens,
15464                middlewareTimesIndex,
15465                receiveAsTokens,
15466            })
15467        }
15468        ///Creates a new call builder for the [`completeQueuedWithdrawals`] function.
15469        pub fn completeQueuedWithdrawals(
15470            &self,
15471            withdrawals: alloy::sol_types::private::Vec<
15472                <IDelegationManager::Withdrawal as alloy::sol_types::SolType>::RustType,
15473            >,
15474            tokens: alloy::sol_types::private::Vec<
15475                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
15476            >,
15477            middlewareTimesIndexes: alloy::sol_types::private::Vec<
15478                alloy::sol_types::private::primitives::aliases::U256,
15479            >,
15480            receiveAsTokens: alloy::sol_types::private::Vec<bool>,
15481        ) -> alloy_contract::SolCallBuilder<&P, completeQueuedWithdrawalsCall, N> {
15482            self.call_builder(&completeQueuedWithdrawalsCall {
15483                withdrawals,
15484                tokens,
15485                middlewareTimesIndexes,
15486                receiveAsTokens,
15487            })
15488        }
15489        ///Creates a new call builder for the [`cumulativeWithdrawalsQueued`] function.
15490        pub fn cumulativeWithdrawalsQueued(
15491            &self,
15492            _0: alloy::sol_types::private::Address,
15493        ) -> alloy_contract::SolCallBuilder<&P, cumulativeWithdrawalsQueuedCall, N> {
15494            self.call_builder(&cumulativeWithdrawalsQueuedCall(_0))
15495        }
15496        ///Creates a new call builder for the [`decreaseDelegatedShares`] function.
15497        pub fn decreaseDelegatedShares(
15498            &self,
15499            staker: alloy::sol_types::private::Address,
15500            strategy: alloy::sol_types::private::Address,
15501            shares: alloy::sol_types::private::primitives::aliases::U256,
15502        ) -> alloy_contract::SolCallBuilder<&P, decreaseDelegatedSharesCall, N> {
15503            self.call_builder(&decreaseDelegatedSharesCall {
15504                staker,
15505                strategy,
15506                shares,
15507            })
15508        }
15509        ///Creates a new call builder for the [`delegateTo`] function.
15510        pub fn delegateTo(
15511            &self,
15512            operator: alloy::sol_types::private::Address,
15513            approverSignatureAndExpiry: <ISignatureUtils::SignatureWithExpiry as alloy::sol_types::SolType>::RustType,
15514            approverSalt: alloy::sol_types::private::FixedBytes<32>,
15515        ) -> alloy_contract::SolCallBuilder<&P, delegateToCall, N> {
15516            self.call_builder(&delegateToCall {
15517                operator,
15518                approverSignatureAndExpiry,
15519                approverSalt,
15520            })
15521        }
15522        ///Creates a new call builder for the [`delegateToBySignature`] function.
15523        pub fn delegateToBySignature(
15524            &self,
15525            staker: alloy::sol_types::private::Address,
15526            operator: alloy::sol_types::private::Address,
15527            stakerSignatureAndExpiry: <ISignatureUtils::SignatureWithExpiry as alloy::sol_types::SolType>::RustType,
15528            approverSignatureAndExpiry: <ISignatureUtils::SignatureWithExpiry as alloy::sol_types::SolType>::RustType,
15529            approverSalt: alloy::sol_types::private::FixedBytes<32>,
15530        ) -> alloy_contract::SolCallBuilder<&P, delegateToBySignatureCall, N> {
15531            self.call_builder(&delegateToBySignatureCall {
15532                staker,
15533                operator,
15534                stakerSignatureAndExpiry,
15535                approverSignatureAndExpiry,
15536                approverSalt,
15537            })
15538        }
15539        ///Creates a new call builder for the [`delegatedTo`] function.
15540        pub fn delegatedTo(
15541            &self,
15542            _0: alloy::sol_types::private::Address,
15543        ) -> alloy_contract::SolCallBuilder<&P, delegatedToCall, N> {
15544            self.call_builder(&delegatedToCall(_0))
15545        }
15546        ///Creates a new call builder for the [`delegationApprover`] function.
15547        pub fn delegationApprover(
15548            &self,
15549            operator: alloy::sol_types::private::Address,
15550        ) -> alloy_contract::SolCallBuilder<&P, delegationApproverCall, N> {
15551            self.call_builder(&delegationApproverCall { operator })
15552        }
15553        ///Creates a new call builder for the [`delegationApproverSaltIsSpent`] function.
15554        pub fn delegationApproverSaltIsSpent(
15555            &self,
15556            _0: alloy::sol_types::private::Address,
15557            _1: alloy::sol_types::private::FixedBytes<32>,
15558        ) -> alloy_contract::SolCallBuilder<&P, delegationApproverSaltIsSpentCall, N> {
15559            self.call_builder(&delegationApproverSaltIsSpentCall { _0, _1 })
15560        }
15561        ///Creates a new call builder for the [`domainSeparator`] function.
15562        pub fn domainSeparator(
15563            &self,
15564        ) -> alloy_contract::SolCallBuilder<&P, domainSeparatorCall, N> {
15565            self.call_builder(&domainSeparatorCall)
15566        }
15567        ///Creates a new call builder for the [`eigenPodManager`] function.
15568        pub fn eigenPodManager(
15569            &self,
15570        ) -> alloy_contract::SolCallBuilder<&P, eigenPodManagerCall, N> {
15571            self.call_builder(&eigenPodManagerCall)
15572        }
15573        ///Creates a new call builder for the [`getDelegatableShares`] function.
15574        pub fn getDelegatableShares(
15575            &self,
15576            staker: alloy::sol_types::private::Address,
15577        ) -> alloy_contract::SolCallBuilder<&P, getDelegatableSharesCall, N> {
15578            self.call_builder(&getDelegatableSharesCall { staker })
15579        }
15580        ///Creates a new call builder for the [`getOperatorShares`] function.
15581        pub fn getOperatorShares(
15582            &self,
15583            operator: alloy::sol_types::private::Address,
15584            strategies: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
15585        ) -> alloy_contract::SolCallBuilder<&P, getOperatorSharesCall, N> {
15586            self.call_builder(&getOperatorSharesCall {
15587                operator,
15588                strategies,
15589            })
15590        }
15591        ///Creates a new call builder for the [`getWithdrawalDelay`] function.
15592        pub fn getWithdrawalDelay(
15593            &self,
15594            strategies: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
15595        ) -> alloy_contract::SolCallBuilder<&P, getWithdrawalDelayCall, N> {
15596            self.call_builder(&getWithdrawalDelayCall { strategies })
15597        }
15598        ///Creates a new call builder for the [`increaseDelegatedShares`] function.
15599        pub fn increaseDelegatedShares(
15600            &self,
15601            staker: alloy::sol_types::private::Address,
15602            strategy: alloy::sol_types::private::Address,
15603            shares: alloy::sol_types::private::primitives::aliases::U256,
15604        ) -> alloy_contract::SolCallBuilder<&P, increaseDelegatedSharesCall, N> {
15605            self.call_builder(&increaseDelegatedSharesCall {
15606                staker,
15607                strategy,
15608                shares,
15609            })
15610        }
15611        ///Creates a new call builder for the [`initialize`] function.
15612        pub fn initialize(
15613            &self,
15614            initialOwner: alloy::sol_types::private::Address,
15615            _pauserRegistry: alloy::sol_types::private::Address,
15616            initialPausedStatus: alloy::sol_types::private::primitives::aliases::U256,
15617            _minWithdrawalDelayBlocks: alloy::sol_types::private::primitives::aliases::U256,
15618            _strategies: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
15619            _withdrawalDelayBlocks: alloy::sol_types::private::Vec<
15620                alloy::sol_types::private::primitives::aliases::U256,
15621            >,
15622        ) -> alloy_contract::SolCallBuilder<&P, initializeCall, N> {
15623            self.call_builder(&initializeCall {
15624                initialOwner,
15625                _pauserRegistry,
15626                initialPausedStatus,
15627                _minWithdrawalDelayBlocks,
15628                _strategies,
15629                _withdrawalDelayBlocks,
15630            })
15631        }
15632        ///Creates a new call builder for the [`isDelegated`] function.
15633        pub fn isDelegated(
15634            &self,
15635            staker: alloy::sol_types::private::Address,
15636        ) -> alloy_contract::SolCallBuilder<&P, isDelegatedCall, N> {
15637            self.call_builder(&isDelegatedCall { staker })
15638        }
15639        ///Creates a new call builder for the [`isOperator`] function.
15640        pub fn isOperator(
15641            &self,
15642            operator: alloy::sol_types::private::Address,
15643        ) -> alloy_contract::SolCallBuilder<&P, isOperatorCall, N> {
15644            self.call_builder(&isOperatorCall { operator })
15645        }
15646        ///Creates a new call builder for the [`minWithdrawalDelayBlocks`] function.
15647        pub fn minWithdrawalDelayBlocks(
15648            &self,
15649        ) -> alloy_contract::SolCallBuilder<&P, minWithdrawalDelayBlocksCall, N> {
15650            self.call_builder(&minWithdrawalDelayBlocksCall)
15651        }
15652        ///Creates a new call builder for the [`modifyOperatorDetails`] function.
15653        pub fn modifyOperatorDetails(
15654            &self,
15655            newOperatorDetails: <IDelegationManager::OperatorDetails as alloy::sol_types::SolType>::RustType,
15656        ) -> alloy_contract::SolCallBuilder<&P, modifyOperatorDetailsCall, N> {
15657            self.call_builder(&modifyOperatorDetailsCall { newOperatorDetails })
15658        }
15659        ///Creates a new call builder for the [`operatorDetails`] function.
15660        pub fn operatorDetails(
15661            &self,
15662            operator: alloy::sol_types::private::Address,
15663        ) -> alloy_contract::SolCallBuilder<&P, operatorDetailsCall, N> {
15664            self.call_builder(&operatorDetailsCall { operator })
15665        }
15666        ///Creates a new call builder for the [`operatorShares`] function.
15667        pub fn operatorShares(
15668            &self,
15669            _0: alloy::sol_types::private::Address,
15670            _1: alloy::sol_types::private::Address,
15671        ) -> alloy_contract::SolCallBuilder<&P, operatorSharesCall, N> {
15672            self.call_builder(&operatorSharesCall { _0, _1 })
15673        }
15674        ///Creates a new call builder for the [`owner`] function.
15675        pub fn owner(&self) -> alloy_contract::SolCallBuilder<&P, ownerCall, N> {
15676            self.call_builder(&ownerCall)
15677        }
15678        ///Creates a new call builder for the [`pause`] function.
15679        pub fn pause(
15680            &self,
15681            newPausedStatus: alloy::sol_types::private::primitives::aliases::U256,
15682        ) -> alloy_contract::SolCallBuilder<&P, pauseCall, N> {
15683            self.call_builder(&pauseCall { newPausedStatus })
15684        }
15685        ///Creates a new call builder for the [`pauseAll`] function.
15686        pub fn pauseAll(&self) -> alloy_contract::SolCallBuilder<&P, pauseAllCall, N> {
15687            self.call_builder(&pauseAllCall)
15688        }
15689        ///Creates a new call builder for the [`paused_0`] function.
15690        pub fn paused_0(&self, index: u8) -> alloy_contract::SolCallBuilder<&P, paused_0Call, N> {
15691            self.call_builder(&paused_0Call { index })
15692        }
15693        ///Creates a new call builder for the [`paused_1`] function.
15694        pub fn paused_1(&self) -> alloy_contract::SolCallBuilder<&P, paused_1Call, N> {
15695            self.call_builder(&paused_1Call)
15696        }
15697        ///Creates a new call builder for the [`pauserRegistry`] function.
15698        pub fn pauserRegistry(&self) -> alloy_contract::SolCallBuilder<&P, pauserRegistryCall, N> {
15699            self.call_builder(&pauserRegistryCall)
15700        }
15701        ///Creates a new call builder for the [`pendingWithdrawals`] function.
15702        pub fn pendingWithdrawals(
15703            &self,
15704            _0: alloy::sol_types::private::FixedBytes<32>,
15705        ) -> alloy_contract::SolCallBuilder<&P, pendingWithdrawalsCall, N> {
15706            self.call_builder(&pendingWithdrawalsCall(_0))
15707        }
15708        ///Creates a new call builder for the [`queueWithdrawals`] function.
15709        pub fn queueWithdrawals(
15710            &self,
15711            queuedWithdrawalParams: alloy::sol_types::private::Vec<
15712                <IDelegationManager::QueuedWithdrawalParams as alloy::sol_types::SolType>::RustType,
15713            >,
15714        ) -> alloy_contract::SolCallBuilder<&P, queueWithdrawalsCall, N> {
15715            self.call_builder(&queueWithdrawalsCall {
15716                queuedWithdrawalParams,
15717            })
15718        }
15719        ///Creates a new call builder for the [`registerAsOperator`] function.
15720        pub fn registerAsOperator(
15721            &self,
15722            registeringOperatorDetails: <IDelegationManager::OperatorDetails as alloy::sol_types::SolType>::RustType,
15723            metadataURI: alloy::sol_types::private::String,
15724        ) -> alloy_contract::SolCallBuilder<&P, registerAsOperatorCall, N> {
15725            self.call_builder(&registerAsOperatorCall {
15726                registeringOperatorDetails,
15727                metadataURI,
15728            })
15729        }
15730        ///Creates a new call builder for the [`renounceOwnership`] function.
15731        pub fn renounceOwnership(
15732            &self,
15733        ) -> alloy_contract::SolCallBuilder<&P, renounceOwnershipCall, N> {
15734            self.call_builder(&renounceOwnershipCall)
15735        }
15736        ///Creates a new call builder for the [`setMinWithdrawalDelayBlocks`] function.
15737        pub fn setMinWithdrawalDelayBlocks(
15738            &self,
15739            newMinWithdrawalDelayBlocks: alloy::sol_types::private::primitives::aliases::U256,
15740        ) -> alloy_contract::SolCallBuilder<&P, setMinWithdrawalDelayBlocksCall, N> {
15741            self.call_builder(&setMinWithdrawalDelayBlocksCall {
15742                newMinWithdrawalDelayBlocks,
15743            })
15744        }
15745        ///Creates a new call builder for the [`setPauserRegistry`] function.
15746        pub fn setPauserRegistry(
15747            &self,
15748            newPauserRegistry: alloy::sol_types::private::Address,
15749        ) -> alloy_contract::SolCallBuilder<&P, setPauserRegistryCall, N> {
15750            self.call_builder(&setPauserRegistryCall { newPauserRegistry })
15751        }
15752        ///Creates a new call builder for the [`setStrategyWithdrawalDelayBlocks`] function.
15753        pub fn setStrategyWithdrawalDelayBlocks(
15754            &self,
15755            strategies: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
15756            withdrawalDelayBlocks: alloy::sol_types::private::Vec<
15757                alloy::sol_types::private::primitives::aliases::U256,
15758            >,
15759        ) -> alloy_contract::SolCallBuilder<&P, setStrategyWithdrawalDelayBlocksCall, N> {
15760            self.call_builder(&setStrategyWithdrawalDelayBlocksCall {
15761                strategies,
15762                withdrawalDelayBlocks,
15763            })
15764        }
15765        ///Creates a new call builder for the [`slasher`] function.
15766        pub fn slasher(&self) -> alloy_contract::SolCallBuilder<&P, slasherCall, N> {
15767            self.call_builder(&slasherCall)
15768        }
15769        ///Creates a new call builder for the [`stakerNonce`] function.
15770        pub fn stakerNonce(
15771            &self,
15772            _0: alloy::sol_types::private::Address,
15773        ) -> alloy_contract::SolCallBuilder<&P, stakerNonceCall, N> {
15774            self.call_builder(&stakerNonceCall(_0))
15775        }
15776        ///Creates a new call builder for the [`stakerOptOutWindowBlocks`] function.
15777        pub fn stakerOptOutWindowBlocks(
15778            &self,
15779            operator: alloy::sol_types::private::Address,
15780        ) -> alloy_contract::SolCallBuilder<&P, stakerOptOutWindowBlocksCall, N> {
15781            self.call_builder(&stakerOptOutWindowBlocksCall { operator })
15782        }
15783        ///Creates a new call builder for the [`strategyManager`] function.
15784        pub fn strategyManager(
15785            &self,
15786        ) -> alloy_contract::SolCallBuilder<&P, strategyManagerCall, N> {
15787            self.call_builder(&strategyManagerCall)
15788        }
15789        ///Creates a new call builder for the [`strategyWithdrawalDelayBlocks`] function.
15790        pub fn strategyWithdrawalDelayBlocks(
15791            &self,
15792            _0: alloy::sol_types::private::Address,
15793        ) -> alloy_contract::SolCallBuilder<&P, strategyWithdrawalDelayBlocksCall, N> {
15794            self.call_builder(&strategyWithdrawalDelayBlocksCall(_0))
15795        }
15796        ///Creates a new call builder for the [`transferOwnership`] function.
15797        pub fn transferOwnership(
15798            &self,
15799            newOwner: alloy::sol_types::private::Address,
15800        ) -> alloy_contract::SolCallBuilder<&P, transferOwnershipCall, N> {
15801            self.call_builder(&transferOwnershipCall { newOwner })
15802        }
15803        ///Creates a new call builder for the [`undelegate`] function.
15804        pub fn undelegate(
15805            &self,
15806            staker: alloy::sol_types::private::Address,
15807        ) -> alloy_contract::SolCallBuilder<&P, undelegateCall, N> {
15808            self.call_builder(&undelegateCall { staker })
15809        }
15810        ///Creates a new call builder for the [`unpause`] function.
15811        pub fn unpause(
15812            &self,
15813            newPausedStatus: alloy::sol_types::private::primitives::aliases::U256,
15814        ) -> alloy_contract::SolCallBuilder<&P, unpauseCall, N> {
15815            self.call_builder(&unpauseCall { newPausedStatus })
15816        }
15817        ///Creates a new call builder for the [`updateOperatorMetadataURI`] function.
15818        pub fn updateOperatorMetadataURI(
15819            &self,
15820            metadataURI: alloy::sol_types::private::String,
15821        ) -> alloy_contract::SolCallBuilder<&P, updateOperatorMetadataURICall, N> {
15822            self.call_builder(&updateOperatorMetadataURICall { metadataURI })
15823        }
15824    }
15825    /// Event filters.
15826    #[automatically_derived]
15827    impl<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>
15828        DelegationManagerInstance<P, N>
15829    {
15830        /// Creates a new event filter using this contract instance's provider and address.
15831        ///
15832        /// Note that the type can be any event, not just those defined in this contract.
15833        /// Prefer using the other methods for building type-safe event filters.
15834        pub fn event_filter<E: alloy_sol_types::SolEvent>(
15835            &self,
15836        ) -> alloy_contract::Event<&P, E, N> {
15837            alloy_contract::Event::new_sol(&self.provider, &self.address)
15838        }
15839        ///Creates a new event filter for the [`Initialized`] event.
15840        pub fn Initialized_filter(&self) -> alloy_contract::Event<&P, Initialized, N> {
15841            self.event_filter::<Initialized>()
15842        }
15843        ///Creates a new event filter for the [`MinWithdrawalDelayBlocksSet`] event.
15844        pub fn MinWithdrawalDelayBlocksSet_filter(
15845            &self,
15846        ) -> alloy_contract::Event<&P, MinWithdrawalDelayBlocksSet, N> {
15847            self.event_filter::<MinWithdrawalDelayBlocksSet>()
15848        }
15849        ///Creates a new event filter for the [`OperatorDetailsModified`] event.
15850        pub fn OperatorDetailsModified_filter(
15851            &self,
15852        ) -> alloy_contract::Event<&P, OperatorDetailsModified, N> {
15853            self.event_filter::<OperatorDetailsModified>()
15854        }
15855        ///Creates a new event filter for the [`OperatorMetadataURIUpdated`] event.
15856        pub fn OperatorMetadataURIUpdated_filter(
15857            &self,
15858        ) -> alloy_contract::Event<&P, OperatorMetadataURIUpdated, N> {
15859            self.event_filter::<OperatorMetadataURIUpdated>()
15860        }
15861        ///Creates a new event filter for the [`OperatorRegistered`] event.
15862        pub fn OperatorRegistered_filter(
15863            &self,
15864        ) -> alloy_contract::Event<&P, OperatorRegistered, N> {
15865            self.event_filter::<OperatorRegistered>()
15866        }
15867        ///Creates a new event filter for the [`OperatorSharesDecreased`] event.
15868        pub fn OperatorSharesDecreased_filter(
15869            &self,
15870        ) -> alloy_contract::Event<&P, OperatorSharesDecreased, N> {
15871            self.event_filter::<OperatorSharesDecreased>()
15872        }
15873        ///Creates a new event filter for the [`OperatorSharesIncreased`] event.
15874        pub fn OperatorSharesIncreased_filter(
15875            &self,
15876        ) -> alloy_contract::Event<&P, OperatorSharesIncreased, N> {
15877            self.event_filter::<OperatorSharesIncreased>()
15878        }
15879        ///Creates a new event filter for the [`OwnershipTransferred`] event.
15880        pub fn OwnershipTransferred_filter(
15881            &self,
15882        ) -> alloy_contract::Event<&P, OwnershipTransferred, N> {
15883            self.event_filter::<OwnershipTransferred>()
15884        }
15885        ///Creates a new event filter for the [`Paused`] event.
15886        pub fn Paused_filter(&self) -> alloy_contract::Event<&P, Paused, N> {
15887            self.event_filter::<Paused>()
15888        }
15889        ///Creates a new event filter for the [`PauserRegistrySet`] event.
15890        pub fn PauserRegistrySet_filter(&self) -> alloy_contract::Event<&P, PauserRegistrySet, N> {
15891            self.event_filter::<PauserRegistrySet>()
15892        }
15893        ///Creates a new event filter for the [`StakerDelegated`] event.
15894        pub fn StakerDelegated_filter(&self) -> alloy_contract::Event<&P, StakerDelegated, N> {
15895            self.event_filter::<StakerDelegated>()
15896        }
15897        ///Creates a new event filter for the [`StakerForceUndelegated`] event.
15898        pub fn StakerForceUndelegated_filter(
15899            &self,
15900        ) -> alloy_contract::Event<&P, StakerForceUndelegated, N> {
15901            self.event_filter::<StakerForceUndelegated>()
15902        }
15903        ///Creates a new event filter for the [`StakerUndelegated`] event.
15904        pub fn StakerUndelegated_filter(&self) -> alloy_contract::Event<&P, StakerUndelegated, N> {
15905            self.event_filter::<StakerUndelegated>()
15906        }
15907        ///Creates a new event filter for the [`StrategyWithdrawalDelayBlocksSet`] event.
15908        pub fn StrategyWithdrawalDelayBlocksSet_filter(
15909            &self,
15910        ) -> alloy_contract::Event<&P, StrategyWithdrawalDelayBlocksSet, N> {
15911            self.event_filter::<StrategyWithdrawalDelayBlocksSet>()
15912        }
15913        ///Creates a new event filter for the [`Unpaused`] event.
15914        pub fn Unpaused_filter(&self) -> alloy_contract::Event<&P, Unpaused, N> {
15915            self.event_filter::<Unpaused>()
15916        }
15917        ///Creates a new event filter for the [`WithdrawalCompleted`] event.
15918        pub fn WithdrawalCompleted_filter(
15919            &self,
15920        ) -> alloy_contract::Event<&P, WithdrawalCompleted, N> {
15921            self.event_filter::<WithdrawalCompleted>()
15922        }
15923        ///Creates a new event filter for the [`WithdrawalQueued`] event.
15924        pub fn WithdrawalQueued_filter(&self) -> alloy_contract::Event<&P, WithdrawalQueued, N> {
15925            self.event_filter::<WithdrawalQueued>()
15926        }
15927    }
15928}