eigenlayer_contract_deployer/bindings/deploy/
squaring_service_manager.rs

1#![allow(clippy::all, clippy::pedantic, clippy::nursery, warnings, unknown_lints, rustdoc::all, elided_lifetimes_in_paths)]
2use SquaringServiceManager::*;
3
4///Module containing a contract's types and functions.
5/**
6
7```solidity
8library IRewardsCoordinatorTypes {
9    struct OperatorDirectedRewardsSubmission { StrategyAndMultiplier[] strategiesAndMultipliers; address token; OperatorReward[] operatorRewards; uint32 startTimestamp; uint32 duration; string description; }
10    struct OperatorReward { address operator; uint256 amount; }
11    struct RewardsSubmission { StrategyAndMultiplier[] strategiesAndMultipliers; address token; uint256 amount; uint32 startTimestamp; uint32 duration; }
12    struct StrategyAndMultiplier { address strategy; uint96 multiplier; }
13}
14```*/
15#[allow(
16    non_camel_case_types,
17    non_snake_case,
18    clippy::pub_underscore_fields,
19    clippy::style,
20    clippy::empty_structs_with_brackets
21)]
22pub mod IRewardsCoordinatorTypes {
23    use super::*;
24    use alloy::sol_types as alloy_sol_types;
25    #[derive(serde::Serialize, serde::Deserialize)]
26    #[derive(Default, Debug, PartialEq, Eq, Hash)]
27    /**```solidity
28struct OperatorDirectedRewardsSubmission { StrategyAndMultiplier[] strategiesAndMultipliers; address token; OperatorReward[] operatorRewards; uint32 startTimestamp; uint32 duration; string description; }
29```*/
30    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
31    #[derive(Clone)]
32    pub struct OperatorDirectedRewardsSubmission {
33        #[allow(missing_docs)]
34        pub strategiesAndMultipliers: alloy::sol_types::private::Vec<
35            <StrategyAndMultiplier as alloy::sol_types::SolType>::RustType,
36        >,
37        #[allow(missing_docs)]
38        pub token: alloy::sol_types::private::Address,
39        #[allow(missing_docs)]
40        pub operatorRewards: alloy::sol_types::private::Vec<
41            <OperatorReward as alloy::sol_types::SolType>::RustType,
42        >,
43        #[allow(missing_docs)]
44        pub startTimestamp: u32,
45        #[allow(missing_docs)]
46        pub duration: u32,
47        #[allow(missing_docs)]
48        pub description: alloy::sol_types::private::String,
49    }
50    #[allow(
51        non_camel_case_types,
52        non_snake_case,
53        clippy::pub_underscore_fields,
54        clippy::style
55    )]
56    const _: () = {
57        use alloy::sol_types as alloy_sol_types;
58        #[doc(hidden)]
59        type UnderlyingSolTuple<'a> = (
60            alloy::sol_types::sol_data::Array<StrategyAndMultiplier>,
61            alloy::sol_types::sol_data::Address,
62            alloy::sol_types::sol_data::Array<OperatorReward>,
63            alloy::sol_types::sol_data::Uint<32>,
64            alloy::sol_types::sol_data::Uint<32>,
65            alloy::sol_types::sol_data::String,
66        );
67        #[doc(hidden)]
68        type UnderlyingRustTuple<'a> = (
69            alloy::sol_types::private::Vec<
70                <StrategyAndMultiplier as alloy::sol_types::SolType>::RustType,
71            >,
72            alloy::sol_types::private::Address,
73            alloy::sol_types::private::Vec<
74                <OperatorReward as alloy::sol_types::SolType>::RustType,
75            >,
76            u32,
77            u32,
78            alloy::sol_types::private::String,
79        );
80        #[cfg(test)]
81        #[allow(dead_code, unreachable_patterns)]
82        fn _type_assertion(
83            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
84        ) {
85            match _t {
86                alloy_sol_types::private::AssertTypeEq::<
87                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
88                >(_) => {}
89            }
90        }
91        #[automatically_derived]
92        #[doc(hidden)]
93        impl ::core::convert::From<OperatorDirectedRewardsSubmission>
94        for UnderlyingRustTuple<'_> {
95            fn from(value: OperatorDirectedRewardsSubmission) -> Self {
96                (
97                    value.strategiesAndMultipliers,
98                    value.token,
99                    value.operatorRewards,
100                    value.startTimestamp,
101                    value.duration,
102                    value.description,
103                )
104            }
105        }
106        #[automatically_derived]
107        #[doc(hidden)]
108        impl ::core::convert::From<UnderlyingRustTuple<'_>>
109        for OperatorDirectedRewardsSubmission {
110            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
111                Self {
112                    strategiesAndMultipliers: tuple.0,
113                    token: tuple.1,
114                    operatorRewards: tuple.2,
115                    startTimestamp: tuple.3,
116                    duration: tuple.4,
117                    description: tuple.5,
118                }
119            }
120        }
121        #[automatically_derived]
122        impl alloy_sol_types::SolValue for OperatorDirectedRewardsSubmission {
123            type SolType = Self;
124        }
125        #[automatically_derived]
126        impl alloy_sol_types::private::SolTypeValue<Self>
127        for OperatorDirectedRewardsSubmission {
128            #[inline]
129            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
130                (
131                    <alloy::sol_types::sol_data::Array<
132                        StrategyAndMultiplier,
133                    > as alloy_sol_types::SolType>::tokenize(
134                        &self.strategiesAndMultipliers,
135                    ),
136                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
137                        &self.token,
138                    ),
139                    <alloy::sol_types::sol_data::Array<
140                        OperatorReward,
141                    > as alloy_sol_types::SolType>::tokenize(&self.operatorRewards),
142                    <alloy::sol_types::sol_data::Uint<
143                        32,
144                    > as alloy_sol_types::SolType>::tokenize(&self.startTimestamp),
145                    <alloy::sol_types::sol_data::Uint<
146                        32,
147                    > as alloy_sol_types::SolType>::tokenize(&self.duration),
148                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
149                        &self.description,
150                    ),
151                )
152            }
153            #[inline]
154            fn stv_abi_encoded_size(&self) -> usize {
155                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
156                    return size;
157                }
158                let tuple = <UnderlyingRustTuple<
159                    '_,
160                > as ::core::convert::From<Self>>::from(self.clone());
161                <UnderlyingSolTuple<
162                    '_,
163                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
164            }
165            #[inline]
166            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
167                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
168            }
169            #[inline]
170            fn stv_abi_encode_packed_to(
171                &self,
172                out: &mut alloy_sol_types::private::Vec<u8>,
173            ) {
174                let tuple = <UnderlyingRustTuple<
175                    '_,
176                > as ::core::convert::From<Self>>::from(self.clone());
177                <UnderlyingSolTuple<
178                    '_,
179                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
180            }
181            #[inline]
182            fn stv_abi_packed_encoded_size(&self) -> usize {
183                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
184                    return size;
185                }
186                let tuple = <UnderlyingRustTuple<
187                    '_,
188                > as ::core::convert::From<Self>>::from(self.clone());
189                <UnderlyingSolTuple<
190                    '_,
191                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
192            }
193        }
194        #[automatically_derived]
195        impl alloy_sol_types::SolType for OperatorDirectedRewardsSubmission {
196            type RustType = Self;
197            type Token<'a> = <UnderlyingSolTuple<
198                'a,
199            > as alloy_sol_types::SolType>::Token<'a>;
200            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
201            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
202                '_,
203            > as alloy_sol_types::SolType>::ENCODED_SIZE;
204            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
205                '_,
206            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
207            #[inline]
208            fn valid_token(token: &Self::Token<'_>) -> bool {
209                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
210            }
211            #[inline]
212            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
213                let tuple = <UnderlyingSolTuple<
214                    '_,
215                > as alloy_sol_types::SolType>::detokenize(token);
216                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
217            }
218        }
219        #[automatically_derived]
220        impl alloy_sol_types::SolStruct for OperatorDirectedRewardsSubmission {
221            const NAME: &'static str = "OperatorDirectedRewardsSubmission";
222            #[inline]
223            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
224                alloy_sol_types::private::Cow::Borrowed(
225                    "OperatorDirectedRewardsSubmission(StrategyAndMultiplier[] strategiesAndMultipliers,address token,OperatorReward[] operatorRewards,uint32 startTimestamp,uint32 duration,string description)",
226                )
227            }
228            #[inline]
229            fn eip712_components() -> alloy_sol_types::private::Vec<
230                alloy_sol_types::private::Cow<'static, str>,
231            > {
232                let mut components = alloy_sol_types::private::Vec::with_capacity(2);
233                components
234                    .push(
235                        <StrategyAndMultiplier as alloy_sol_types::SolStruct>::eip712_root_type(),
236                    );
237                components
238                    .extend(
239                        <StrategyAndMultiplier as alloy_sol_types::SolStruct>::eip712_components(),
240                    );
241                components
242                    .push(
243                        <OperatorReward as alloy_sol_types::SolStruct>::eip712_root_type(),
244                    );
245                components
246                    .extend(
247                        <OperatorReward as alloy_sol_types::SolStruct>::eip712_components(),
248                    );
249                components
250            }
251            #[inline]
252            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
253                [
254                    <alloy::sol_types::sol_data::Array<
255                        StrategyAndMultiplier,
256                    > as alloy_sol_types::SolType>::eip712_data_word(
257                            &self.strategiesAndMultipliers,
258                        )
259                        .0,
260                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::eip712_data_word(
261                            &self.token,
262                        )
263                        .0,
264                    <alloy::sol_types::sol_data::Array<
265                        OperatorReward,
266                    > as alloy_sol_types::SolType>::eip712_data_word(
267                            &self.operatorRewards,
268                        )
269                        .0,
270                    <alloy::sol_types::sol_data::Uint<
271                        32,
272                    > as alloy_sol_types::SolType>::eip712_data_word(
273                            &self.startTimestamp,
274                        )
275                        .0,
276                    <alloy::sol_types::sol_data::Uint<
277                        32,
278                    > as alloy_sol_types::SolType>::eip712_data_word(&self.duration)
279                        .0,
280                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::eip712_data_word(
281                            &self.description,
282                        )
283                        .0,
284                ]
285                    .concat()
286            }
287        }
288        #[automatically_derived]
289        impl alloy_sol_types::EventTopic for OperatorDirectedRewardsSubmission {
290            #[inline]
291            fn topic_preimage_length(rust: &Self::RustType) -> usize {
292                0usize
293                    + <alloy::sol_types::sol_data::Array<
294                        StrategyAndMultiplier,
295                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
296                        &rust.strategiesAndMultipliers,
297                    )
298                    + <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::topic_preimage_length(
299                        &rust.token,
300                    )
301                    + <alloy::sol_types::sol_data::Array<
302                        OperatorReward,
303                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
304                        &rust.operatorRewards,
305                    )
306                    + <alloy::sol_types::sol_data::Uint<
307                        32,
308                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
309                        &rust.startTimestamp,
310                    )
311                    + <alloy::sol_types::sol_data::Uint<
312                        32,
313                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
314                        &rust.duration,
315                    )
316                    + <alloy::sol_types::sol_data::String as alloy_sol_types::EventTopic>::topic_preimage_length(
317                        &rust.description,
318                    )
319            }
320            #[inline]
321            fn encode_topic_preimage(
322                rust: &Self::RustType,
323                out: &mut alloy_sol_types::private::Vec<u8>,
324            ) {
325                out.reserve(
326                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
327                );
328                <alloy::sol_types::sol_data::Array<
329                    StrategyAndMultiplier,
330                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
331                    &rust.strategiesAndMultipliers,
332                    out,
333                );
334                <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic_preimage(
335                    &rust.token,
336                    out,
337                );
338                <alloy::sol_types::sol_data::Array<
339                    OperatorReward,
340                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
341                    &rust.operatorRewards,
342                    out,
343                );
344                <alloy::sol_types::sol_data::Uint<
345                    32,
346                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
347                    &rust.startTimestamp,
348                    out,
349                );
350                <alloy::sol_types::sol_data::Uint<
351                    32,
352                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
353                    &rust.duration,
354                    out,
355                );
356                <alloy::sol_types::sol_data::String as alloy_sol_types::EventTopic>::encode_topic_preimage(
357                    &rust.description,
358                    out,
359                );
360            }
361            #[inline]
362            fn encode_topic(
363                rust: &Self::RustType,
364            ) -> alloy_sol_types::abi::token::WordToken {
365                let mut out = alloy_sol_types::private::Vec::new();
366                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
367                    rust,
368                    &mut out,
369                );
370                alloy_sol_types::abi::token::WordToken(
371                    alloy_sol_types::private::keccak256(out),
372                )
373            }
374        }
375    };
376    #[derive(serde::Serialize, serde::Deserialize)]
377    #[derive(Default, Debug, PartialEq, Eq, Hash)]
378    /**```solidity
379struct OperatorReward { address operator; uint256 amount; }
380```*/
381    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
382    #[derive(Clone)]
383    pub struct OperatorReward {
384        #[allow(missing_docs)]
385        pub operator: alloy::sol_types::private::Address,
386        #[allow(missing_docs)]
387        pub amount: alloy::sol_types::private::primitives::aliases::U256,
388    }
389    #[allow(
390        non_camel_case_types,
391        non_snake_case,
392        clippy::pub_underscore_fields,
393        clippy::style
394    )]
395    const _: () = {
396        use alloy::sol_types as alloy_sol_types;
397        #[doc(hidden)]
398        type UnderlyingSolTuple<'a> = (
399            alloy::sol_types::sol_data::Address,
400            alloy::sol_types::sol_data::Uint<256>,
401        );
402        #[doc(hidden)]
403        type UnderlyingRustTuple<'a> = (
404            alloy::sol_types::private::Address,
405            alloy::sol_types::private::primitives::aliases::U256,
406        );
407        #[cfg(test)]
408        #[allow(dead_code, unreachable_patterns)]
409        fn _type_assertion(
410            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
411        ) {
412            match _t {
413                alloy_sol_types::private::AssertTypeEq::<
414                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
415                >(_) => {}
416            }
417        }
418        #[automatically_derived]
419        #[doc(hidden)]
420        impl ::core::convert::From<OperatorReward> for UnderlyingRustTuple<'_> {
421            fn from(value: OperatorReward) -> Self {
422                (value.operator, value.amount)
423            }
424        }
425        #[automatically_derived]
426        #[doc(hidden)]
427        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OperatorReward {
428            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
429                Self {
430                    operator: tuple.0,
431                    amount: tuple.1,
432                }
433            }
434        }
435        #[automatically_derived]
436        impl alloy_sol_types::SolValue for OperatorReward {
437            type SolType = Self;
438        }
439        #[automatically_derived]
440        impl alloy_sol_types::private::SolTypeValue<Self> for OperatorReward {
441            #[inline]
442            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
443                (
444                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
445                        &self.operator,
446                    ),
447                    <alloy::sol_types::sol_data::Uint<
448                        256,
449                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
450                )
451            }
452            #[inline]
453            fn stv_abi_encoded_size(&self) -> usize {
454                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
455                    return size;
456                }
457                let tuple = <UnderlyingRustTuple<
458                    '_,
459                > as ::core::convert::From<Self>>::from(self.clone());
460                <UnderlyingSolTuple<
461                    '_,
462                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
463            }
464            #[inline]
465            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
466                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
467            }
468            #[inline]
469            fn stv_abi_encode_packed_to(
470                &self,
471                out: &mut alloy_sol_types::private::Vec<u8>,
472            ) {
473                let tuple = <UnderlyingRustTuple<
474                    '_,
475                > as ::core::convert::From<Self>>::from(self.clone());
476                <UnderlyingSolTuple<
477                    '_,
478                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
479            }
480            #[inline]
481            fn stv_abi_packed_encoded_size(&self) -> usize {
482                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
483                    return size;
484                }
485                let tuple = <UnderlyingRustTuple<
486                    '_,
487                > as ::core::convert::From<Self>>::from(self.clone());
488                <UnderlyingSolTuple<
489                    '_,
490                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
491            }
492        }
493        #[automatically_derived]
494        impl alloy_sol_types::SolType for OperatorReward {
495            type RustType = Self;
496            type Token<'a> = <UnderlyingSolTuple<
497                'a,
498            > as alloy_sol_types::SolType>::Token<'a>;
499            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
500            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
501                '_,
502            > as alloy_sol_types::SolType>::ENCODED_SIZE;
503            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
504                '_,
505            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
506            #[inline]
507            fn valid_token(token: &Self::Token<'_>) -> bool {
508                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
509            }
510            #[inline]
511            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
512                let tuple = <UnderlyingSolTuple<
513                    '_,
514                > as alloy_sol_types::SolType>::detokenize(token);
515                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
516            }
517        }
518        #[automatically_derived]
519        impl alloy_sol_types::SolStruct for OperatorReward {
520            const NAME: &'static str = "OperatorReward";
521            #[inline]
522            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
523                alloy_sol_types::private::Cow::Borrowed(
524                    "OperatorReward(address operator,uint256 amount)",
525                )
526            }
527            #[inline]
528            fn eip712_components() -> alloy_sol_types::private::Vec<
529                alloy_sol_types::private::Cow<'static, str>,
530            > {
531                alloy_sol_types::private::Vec::new()
532            }
533            #[inline]
534            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
535                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
536            }
537            #[inline]
538            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
539                [
540                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::eip712_data_word(
541                            &self.operator,
542                        )
543                        .0,
544                    <alloy::sol_types::sol_data::Uint<
545                        256,
546                    > as alloy_sol_types::SolType>::eip712_data_word(&self.amount)
547                        .0,
548                ]
549                    .concat()
550            }
551        }
552        #[automatically_derived]
553        impl alloy_sol_types::EventTopic for OperatorReward {
554            #[inline]
555            fn topic_preimage_length(rust: &Self::RustType) -> usize {
556                0usize
557                    + <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::topic_preimage_length(
558                        &rust.operator,
559                    )
560                    + <alloy::sol_types::sol_data::Uint<
561                        256,
562                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
563                        &rust.amount,
564                    )
565            }
566            #[inline]
567            fn encode_topic_preimage(
568                rust: &Self::RustType,
569                out: &mut alloy_sol_types::private::Vec<u8>,
570            ) {
571                out.reserve(
572                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
573                );
574                <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic_preimage(
575                    &rust.operator,
576                    out,
577                );
578                <alloy::sol_types::sol_data::Uint<
579                    256,
580                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
581                    &rust.amount,
582                    out,
583                );
584            }
585            #[inline]
586            fn encode_topic(
587                rust: &Self::RustType,
588            ) -> alloy_sol_types::abi::token::WordToken {
589                let mut out = alloy_sol_types::private::Vec::new();
590                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
591                    rust,
592                    &mut out,
593                );
594                alloy_sol_types::abi::token::WordToken(
595                    alloy_sol_types::private::keccak256(out),
596                )
597            }
598        }
599    };
600    #[derive(serde::Serialize, serde::Deserialize)]
601    #[derive(Default, Debug, PartialEq, Eq, Hash)]
602    /**```solidity
603struct RewardsSubmission { StrategyAndMultiplier[] strategiesAndMultipliers; address token; uint256 amount; uint32 startTimestamp; uint32 duration; }
604```*/
605    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
606    #[derive(Clone)]
607    pub struct RewardsSubmission {
608        #[allow(missing_docs)]
609        pub strategiesAndMultipliers: alloy::sol_types::private::Vec<
610            <StrategyAndMultiplier as alloy::sol_types::SolType>::RustType,
611        >,
612        #[allow(missing_docs)]
613        pub token: alloy::sol_types::private::Address,
614        #[allow(missing_docs)]
615        pub amount: alloy::sol_types::private::primitives::aliases::U256,
616        #[allow(missing_docs)]
617        pub startTimestamp: u32,
618        #[allow(missing_docs)]
619        pub duration: u32,
620    }
621    #[allow(
622        non_camel_case_types,
623        non_snake_case,
624        clippy::pub_underscore_fields,
625        clippy::style
626    )]
627    const _: () = {
628        use alloy::sol_types as alloy_sol_types;
629        #[doc(hidden)]
630        type UnderlyingSolTuple<'a> = (
631            alloy::sol_types::sol_data::Array<StrategyAndMultiplier>,
632            alloy::sol_types::sol_data::Address,
633            alloy::sol_types::sol_data::Uint<256>,
634            alloy::sol_types::sol_data::Uint<32>,
635            alloy::sol_types::sol_data::Uint<32>,
636        );
637        #[doc(hidden)]
638        type UnderlyingRustTuple<'a> = (
639            alloy::sol_types::private::Vec<
640                <StrategyAndMultiplier as alloy::sol_types::SolType>::RustType,
641            >,
642            alloy::sol_types::private::Address,
643            alloy::sol_types::private::primitives::aliases::U256,
644            u32,
645            u32,
646        );
647        #[cfg(test)]
648        #[allow(dead_code, unreachable_patterns)]
649        fn _type_assertion(
650            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
651        ) {
652            match _t {
653                alloy_sol_types::private::AssertTypeEq::<
654                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
655                >(_) => {}
656            }
657        }
658        #[automatically_derived]
659        #[doc(hidden)]
660        impl ::core::convert::From<RewardsSubmission> for UnderlyingRustTuple<'_> {
661            fn from(value: RewardsSubmission) -> Self {
662                (
663                    value.strategiesAndMultipliers,
664                    value.token,
665                    value.amount,
666                    value.startTimestamp,
667                    value.duration,
668                )
669            }
670        }
671        #[automatically_derived]
672        #[doc(hidden)]
673        impl ::core::convert::From<UnderlyingRustTuple<'_>> for RewardsSubmission {
674            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
675                Self {
676                    strategiesAndMultipliers: tuple.0,
677                    token: tuple.1,
678                    amount: tuple.2,
679                    startTimestamp: tuple.3,
680                    duration: tuple.4,
681                }
682            }
683        }
684        #[automatically_derived]
685        impl alloy_sol_types::SolValue for RewardsSubmission {
686            type SolType = Self;
687        }
688        #[automatically_derived]
689        impl alloy_sol_types::private::SolTypeValue<Self> for RewardsSubmission {
690            #[inline]
691            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
692                (
693                    <alloy::sol_types::sol_data::Array<
694                        StrategyAndMultiplier,
695                    > as alloy_sol_types::SolType>::tokenize(
696                        &self.strategiesAndMultipliers,
697                    ),
698                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
699                        &self.token,
700                    ),
701                    <alloy::sol_types::sol_data::Uint<
702                        256,
703                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
704                    <alloy::sol_types::sol_data::Uint<
705                        32,
706                    > as alloy_sol_types::SolType>::tokenize(&self.startTimestamp),
707                    <alloy::sol_types::sol_data::Uint<
708                        32,
709                    > as alloy_sol_types::SolType>::tokenize(&self.duration),
710                )
711            }
712            #[inline]
713            fn stv_abi_encoded_size(&self) -> usize {
714                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
715                    return size;
716                }
717                let tuple = <UnderlyingRustTuple<
718                    '_,
719                > as ::core::convert::From<Self>>::from(self.clone());
720                <UnderlyingSolTuple<
721                    '_,
722                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
723            }
724            #[inline]
725            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
726                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
727            }
728            #[inline]
729            fn stv_abi_encode_packed_to(
730                &self,
731                out: &mut alloy_sol_types::private::Vec<u8>,
732            ) {
733                let tuple = <UnderlyingRustTuple<
734                    '_,
735                > as ::core::convert::From<Self>>::from(self.clone());
736                <UnderlyingSolTuple<
737                    '_,
738                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
739            }
740            #[inline]
741            fn stv_abi_packed_encoded_size(&self) -> usize {
742                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
743                    return size;
744                }
745                let tuple = <UnderlyingRustTuple<
746                    '_,
747                > as ::core::convert::From<Self>>::from(self.clone());
748                <UnderlyingSolTuple<
749                    '_,
750                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
751            }
752        }
753        #[automatically_derived]
754        impl alloy_sol_types::SolType for RewardsSubmission {
755            type RustType = Self;
756            type Token<'a> = <UnderlyingSolTuple<
757                'a,
758            > as alloy_sol_types::SolType>::Token<'a>;
759            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
760            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
761                '_,
762            > as alloy_sol_types::SolType>::ENCODED_SIZE;
763            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
764                '_,
765            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
766            #[inline]
767            fn valid_token(token: &Self::Token<'_>) -> bool {
768                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
769            }
770            #[inline]
771            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
772                let tuple = <UnderlyingSolTuple<
773                    '_,
774                > as alloy_sol_types::SolType>::detokenize(token);
775                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
776            }
777        }
778        #[automatically_derived]
779        impl alloy_sol_types::SolStruct for RewardsSubmission {
780            const NAME: &'static str = "RewardsSubmission";
781            #[inline]
782            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
783                alloy_sol_types::private::Cow::Borrowed(
784                    "RewardsSubmission(StrategyAndMultiplier[] strategiesAndMultipliers,address token,uint256 amount,uint32 startTimestamp,uint32 duration)",
785                )
786            }
787            #[inline]
788            fn eip712_components() -> alloy_sol_types::private::Vec<
789                alloy_sol_types::private::Cow<'static, str>,
790            > {
791                let mut components = alloy_sol_types::private::Vec::with_capacity(1);
792                components
793                    .push(
794                        <StrategyAndMultiplier as alloy_sol_types::SolStruct>::eip712_root_type(),
795                    );
796                components
797                    .extend(
798                        <StrategyAndMultiplier as alloy_sol_types::SolStruct>::eip712_components(),
799                    );
800                components
801            }
802            #[inline]
803            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
804                [
805                    <alloy::sol_types::sol_data::Array<
806                        StrategyAndMultiplier,
807                    > as alloy_sol_types::SolType>::eip712_data_word(
808                            &self.strategiesAndMultipliers,
809                        )
810                        .0,
811                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::eip712_data_word(
812                            &self.token,
813                        )
814                        .0,
815                    <alloy::sol_types::sol_data::Uint<
816                        256,
817                    > as alloy_sol_types::SolType>::eip712_data_word(&self.amount)
818                        .0,
819                    <alloy::sol_types::sol_data::Uint<
820                        32,
821                    > as alloy_sol_types::SolType>::eip712_data_word(
822                            &self.startTimestamp,
823                        )
824                        .0,
825                    <alloy::sol_types::sol_data::Uint<
826                        32,
827                    > as alloy_sol_types::SolType>::eip712_data_word(&self.duration)
828                        .0,
829                ]
830                    .concat()
831            }
832        }
833        #[automatically_derived]
834        impl alloy_sol_types::EventTopic for RewardsSubmission {
835            #[inline]
836            fn topic_preimage_length(rust: &Self::RustType) -> usize {
837                0usize
838                    + <alloy::sol_types::sol_data::Array<
839                        StrategyAndMultiplier,
840                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
841                        &rust.strategiesAndMultipliers,
842                    )
843                    + <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::topic_preimage_length(
844                        &rust.token,
845                    )
846                    + <alloy::sol_types::sol_data::Uint<
847                        256,
848                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
849                        &rust.amount,
850                    )
851                    + <alloy::sol_types::sol_data::Uint<
852                        32,
853                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
854                        &rust.startTimestamp,
855                    )
856                    + <alloy::sol_types::sol_data::Uint<
857                        32,
858                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
859                        &rust.duration,
860                    )
861            }
862            #[inline]
863            fn encode_topic_preimage(
864                rust: &Self::RustType,
865                out: &mut alloy_sol_types::private::Vec<u8>,
866            ) {
867                out.reserve(
868                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
869                );
870                <alloy::sol_types::sol_data::Array<
871                    StrategyAndMultiplier,
872                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
873                    &rust.strategiesAndMultipliers,
874                    out,
875                );
876                <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic_preimage(
877                    &rust.token,
878                    out,
879                );
880                <alloy::sol_types::sol_data::Uint<
881                    256,
882                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
883                    &rust.amount,
884                    out,
885                );
886                <alloy::sol_types::sol_data::Uint<
887                    32,
888                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
889                    &rust.startTimestamp,
890                    out,
891                );
892                <alloy::sol_types::sol_data::Uint<
893                    32,
894                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
895                    &rust.duration,
896                    out,
897                );
898            }
899            #[inline]
900            fn encode_topic(
901                rust: &Self::RustType,
902            ) -> alloy_sol_types::abi::token::WordToken {
903                let mut out = alloy_sol_types::private::Vec::new();
904                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
905                    rust,
906                    &mut out,
907                );
908                alloy_sol_types::abi::token::WordToken(
909                    alloy_sol_types::private::keccak256(out),
910                )
911            }
912        }
913    };
914    #[derive(serde::Serialize, serde::Deserialize)]
915    #[derive(Default, Debug, PartialEq, Eq, Hash)]
916    /**```solidity
917struct StrategyAndMultiplier { address strategy; uint96 multiplier; }
918```*/
919    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
920    #[derive(Clone)]
921    pub struct StrategyAndMultiplier {
922        #[allow(missing_docs)]
923        pub strategy: alloy::sol_types::private::Address,
924        #[allow(missing_docs)]
925        pub multiplier: alloy::sol_types::private::primitives::aliases::U96,
926    }
927    #[allow(
928        non_camel_case_types,
929        non_snake_case,
930        clippy::pub_underscore_fields,
931        clippy::style
932    )]
933    const _: () = {
934        use alloy::sol_types as alloy_sol_types;
935        #[doc(hidden)]
936        type UnderlyingSolTuple<'a> = (
937            alloy::sol_types::sol_data::Address,
938            alloy::sol_types::sol_data::Uint<96>,
939        );
940        #[doc(hidden)]
941        type UnderlyingRustTuple<'a> = (
942            alloy::sol_types::private::Address,
943            alloy::sol_types::private::primitives::aliases::U96,
944        );
945        #[cfg(test)]
946        #[allow(dead_code, unreachable_patterns)]
947        fn _type_assertion(
948            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
949        ) {
950            match _t {
951                alloy_sol_types::private::AssertTypeEq::<
952                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
953                >(_) => {}
954            }
955        }
956        #[automatically_derived]
957        #[doc(hidden)]
958        impl ::core::convert::From<StrategyAndMultiplier> for UnderlyingRustTuple<'_> {
959            fn from(value: StrategyAndMultiplier) -> Self {
960                (value.strategy, value.multiplier)
961            }
962        }
963        #[automatically_derived]
964        #[doc(hidden)]
965        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StrategyAndMultiplier {
966            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
967                Self {
968                    strategy: tuple.0,
969                    multiplier: tuple.1,
970                }
971            }
972        }
973        #[automatically_derived]
974        impl alloy_sol_types::SolValue for StrategyAndMultiplier {
975            type SolType = Self;
976        }
977        #[automatically_derived]
978        impl alloy_sol_types::private::SolTypeValue<Self> for StrategyAndMultiplier {
979            #[inline]
980            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
981                (
982                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
983                        &self.strategy,
984                    ),
985                    <alloy::sol_types::sol_data::Uint<
986                        96,
987                    > as alloy_sol_types::SolType>::tokenize(&self.multiplier),
988                )
989            }
990            #[inline]
991            fn stv_abi_encoded_size(&self) -> usize {
992                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
993                    return size;
994                }
995                let tuple = <UnderlyingRustTuple<
996                    '_,
997                > as ::core::convert::From<Self>>::from(self.clone());
998                <UnderlyingSolTuple<
999                    '_,
1000                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
1001            }
1002            #[inline]
1003            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1004                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
1005            }
1006            #[inline]
1007            fn stv_abi_encode_packed_to(
1008                &self,
1009                out: &mut alloy_sol_types::private::Vec<u8>,
1010            ) {
1011                let tuple = <UnderlyingRustTuple<
1012                    '_,
1013                > as ::core::convert::From<Self>>::from(self.clone());
1014                <UnderlyingSolTuple<
1015                    '_,
1016                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
1017            }
1018            #[inline]
1019            fn stv_abi_packed_encoded_size(&self) -> usize {
1020                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
1021                    return size;
1022                }
1023                let tuple = <UnderlyingRustTuple<
1024                    '_,
1025                > as ::core::convert::From<Self>>::from(self.clone());
1026                <UnderlyingSolTuple<
1027                    '_,
1028                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
1029            }
1030        }
1031        #[automatically_derived]
1032        impl alloy_sol_types::SolType for StrategyAndMultiplier {
1033            type RustType = Self;
1034            type Token<'a> = <UnderlyingSolTuple<
1035                'a,
1036            > as alloy_sol_types::SolType>::Token<'a>;
1037            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
1038            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1039                '_,
1040            > as alloy_sol_types::SolType>::ENCODED_SIZE;
1041            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1042                '_,
1043            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1044            #[inline]
1045            fn valid_token(token: &Self::Token<'_>) -> bool {
1046                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
1047            }
1048            #[inline]
1049            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1050                let tuple = <UnderlyingSolTuple<
1051                    '_,
1052                > as alloy_sol_types::SolType>::detokenize(token);
1053                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
1054            }
1055        }
1056        #[automatically_derived]
1057        impl alloy_sol_types::SolStruct for StrategyAndMultiplier {
1058            const NAME: &'static str = "StrategyAndMultiplier";
1059            #[inline]
1060            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
1061                alloy_sol_types::private::Cow::Borrowed(
1062                    "StrategyAndMultiplier(address strategy,uint96 multiplier)",
1063                )
1064            }
1065            #[inline]
1066            fn eip712_components() -> alloy_sol_types::private::Vec<
1067                alloy_sol_types::private::Cow<'static, str>,
1068            > {
1069                alloy_sol_types::private::Vec::new()
1070            }
1071            #[inline]
1072            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
1073                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
1074            }
1075            #[inline]
1076            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1077                [
1078                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::eip712_data_word(
1079                            &self.strategy,
1080                        )
1081                        .0,
1082                    <alloy::sol_types::sol_data::Uint<
1083                        96,
1084                    > as alloy_sol_types::SolType>::eip712_data_word(&self.multiplier)
1085                        .0,
1086                ]
1087                    .concat()
1088            }
1089        }
1090        #[automatically_derived]
1091        impl alloy_sol_types::EventTopic for StrategyAndMultiplier {
1092            #[inline]
1093            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1094                0usize
1095                    + <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::topic_preimage_length(
1096                        &rust.strategy,
1097                    )
1098                    + <alloy::sol_types::sol_data::Uint<
1099                        96,
1100                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1101                        &rust.multiplier,
1102                    )
1103            }
1104            #[inline]
1105            fn encode_topic_preimage(
1106                rust: &Self::RustType,
1107                out: &mut alloy_sol_types::private::Vec<u8>,
1108            ) {
1109                out.reserve(
1110                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
1111                );
1112                <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic_preimage(
1113                    &rust.strategy,
1114                    out,
1115                );
1116                <alloy::sol_types::sol_data::Uint<
1117                    96,
1118                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1119                    &rust.multiplier,
1120                    out,
1121                );
1122            }
1123            #[inline]
1124            fn encode_topic(
1125                rust: &Self::RustType,
1126            ) -> alloy_sol_types::abi::token::WordToken {
1127                let mut out = alloy_sol_types::private::Vec::new();
1128                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
1129                    rust,
1130                    &mut out,
1131                );
1132                alloy_sol_types::abi::token::WordToken(
1133                    alloy_sol_types::private::keccak256(out),
1134                )
1135            }
1136        }
1137    };
1138    use alloy::contract as alloy_contract;
1139    /**Creates a new wrapper around an on-chain [`IRewardsCoordinatorTypes`](self) contract instance.
1140
1141See the [wrapper's documentation](`IRewardsCoordinatorTypesInstance`) for more details.*/
1142    #[inline]
1143    pub const fn new<
1144        P: alloy_contract::private::Provider<N>,
1145        N: alloy_contract::private::Network,
1146    >(
1147        address: alloy_sol_types::private::Address,
1148        provider: P,
1149    ) -> IRewardsCoordinatorTypesInstance<P, N> {
1150        IRewardsCoordinatorTypesInstance::<P, N>::new(address, provider)
1151    }
1152    /**A [`IRewardsCoordinatorTypes`](self) instance.
1153
1154Contains type-safe methods for interacting with an on-chain instance of the
1155[`IRewardsCoordinatorTypes`](self) contract located at a given `address`, using a given
1156provider `P`.
1157
1158If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
1159documentation on how to provide it), the `deploy` and `deploy_builder` methods can
1160be used to deploy a new instance of the contract.
1161
1162See the [module-level documentation](self) for all the available methods.*/
1163    #[derive(Clone)]
1164    pub struct IRewardsCoordinatorTypesInstance<
1165        P,
1166        N = alloy_contract::private::Ethereum,
1167    > {
1168        address: alloy_sol_types::private::Address,
1169        provider: P,
1170        _network: ::core::marker::PhantomData<N>,
1171    }
1172    #[automatically_derived]
1173    impl<P, N> ::core::fmt::Debug for IRewardsCoordinatorTypesInstance<P, N> {
1174        #[inline]
1175        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
1176            f.debug_tuple("IRewardsCoordinatorTypesInstance")
1177                .field(&self.address)
1178                .finish()
1179        }
1180    }
1181    /// Instantiation and getters/setters.
1182    #[automatically_derived]
1183    impl<
1184        P: alloy_contract::private::Provider<N>,
1185        N: alloy_contract::private::Network,
1186    > IRewardsCoordinatorTypesInstance<P, N> {
1187        /**Creates a new wrapper around an on-chain [`IRewardsCoordinatorTypes`](self) contract instance.
1188
1189See the [wrapper's documentation](`IRewardsCoordinatorTypesInstance`) for more details.*/
1190        #[inline]
1191        pub const fn new(
1192            address: alloy_sol_types::private::Address,
1193            provider: P,
1194        ) -> Self {
1195            Self {
1196                address,
1197                provider,
1198                _network: ::core::marker::PhantomData,
1199            }
1200        }
1201        /// Returns a reference to the address.
1202        #[inline]
1203        pub const fn address(&self) -> &alloy_sol_types::private::Address {
1204            &self.address
1205        }
1206        /// Sets the address.
1207        #[inline]
1208        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
1209            self.address = address;
1210        }
1211        /// Sets the address and returns `self`.
1212        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
1213            self.set_address(address);
1214            self
1215        }
1216        /// Returns a reference to the provider.
1217        #[inline]
1218        pub const fn provider(&self) -> &P {
1219            &self.provider
1220        }
1221    }
1222    impl<P: ::core::clone::Clone, N> IRewardsCoordinatorTypesInstance<&P, N> {
1223        /// Clones the provider and returns a new instance with the cloned provider.
1224        #[inline]
1225        pub fn with_cloned_provider(self) -> IRewardsCoordinatorTypesInstance<P, N> {
1226            IRewardsCoordinatorTypesInstance {
1227                address: self.address,
1228                provider: ::core::clone::Clone::clone(&self.provider),
1229                _network: ::core::marker::PhantomData,
1230            }
1231        }
1232    }
1233    /// Function calls.
1234    #[automatically_derived]
1235    impl<
1236        P: alloy_contract::private::Provider<N>,
1237        N: alloy_contract::private::Network,
1238    > IRewardsCoordinatorTypesInstance<P, N> {
1239        /// Creates a new call builder using this contract instance's provider and address.
1240        ///
1241        /// Note that the call can be any function call, not just those defined in this
1242        /// contract. Prefer using the other methods for building type-safe contract calls.
1243        pub fn call_builder<C: alloy_sol_types::SolCall>(
1244            &self,
1245            call: &C,
1246        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
1247            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
1248        }
1249    }
1250    /// Event filters.
1251    #[automatically_derived]
1252    impl<
1253        P: alloy_contract::private::Provider<N>,
1254        N: alloy_contract::private::Network,
1255    > IRewardsCoordinatorTypesInstance<P, N> {
1256        /// Creates a new event filter using this contract instance's provider and address.
1257        ///
1258        /// Note that the type can be any event, not just those defined in this contract.
1259        /// Prefer using the other methods for building type-safe event filters.
1260        pub fn event_filter<E: alloy_sol_types::SolEvent>(
1261            &self,
1262        ) -> alloy_contract::Event<&P, E, N> {
1263            alloy_contract::Event::new_sol(&self.provider, &self.address)
1264        }
1265    }
1266}
1267///Module containing a contract's types and functions.
1268/**
1269
1270```solidity
1271library ISignatureUtilsMixinTypes {
1272    struct SignatureWithSaltAndExpiry { bytes signature; bytes32 salt; uint256 expiry; }
1273}
1274```*/
1275#[allow(
1276    non_camel_case_types,
1277    non_snake_case,
1278    clippy::pub_underscore_fields,
1279    clippy::style,
1280    clippy::empty_structs_with_brackets
1281)]
1282pub mod ISignatureUtilsMixinTypes {
1283    use super::*;
1284    use alloy::sol_types as alloy_sol_types;
1285    #[derive(serde::Serialize, serde::Deserialize)]
1286    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1287    /**```solidity
1288struct SignatureWithSaltAndExpiry { bytes signature; bytes32 salt; uint256 expiry; }
1289```*/
1290    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1291    #[derive(Clone)]
1292    pub struct SignatureWithSaltAndExpiry {
1293        #[allow(missing_docs)]
1294        pub signature: alloy::sol_types::private::Bytes,
1295        #[allow(missing_docs)]
1296        pub salt: alloy::sol_types::private::FixedBytes<32>,
1297        #[allow(missing_docs)]
1298        pub expiry: alloy::sol_types::private::primitives::aliases::U256,
1299    }
1300    #[allow(
1301        non_camel_case_types,
1302        non_snake_case,
1303        clippy::pub_underscore_fields,
1304        clippy::style
1305    )]
1306    const _: () = {
1307        use alloy::sol_types as alloy_sol_types;
1308        #[doc(hidden)]
1309        type UnderlyingSolTuple<'a> = (
1310            alloy::sol_types::sol_data::Bytes,
1311            alloy::sol_types::sol_data::FixedBytes<32>,
1312            alloy::sol_types::sol_data::Uint<256>,
1313        );
1314        #[doc(hidden)]
1315        type UnderlyingRustTuple<'a> = (
1316            alloy::sol_types::private::Bytes,
1317            alloy::sol_types::private::FixedBytes<32>,
1318            alloy::sol_types::private::primitives::aliases::U256,
1319        );
1320        #[cfg(test)]
1321        #[allow(dead_code, unreachable_patterns)]
1322        fn _type_assertion(
1323            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1324        ) {
1325            match _t {
1326                alloy_sol_types::private::AssertTypeEq::<
1327                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1328                >(_) => {}
1329            }
1330        }
1331        #[automatically_derived]
1332        #[doc(hidden)]
1333        impl ::core::convert::From<SignatureWithSaltAndExpiry>
1334        for UnderlyingRustTuple<'_> {
1335            fn from(value: SignatureWithSaltAndExpiry) -> Self {
1336                (value.signature, value.salt, value.expiry)
1337            }
1338        }
1339        #[automatically_derived]
1340        #[doc(hidden)]
1341        impl ::core::convert::From<UnderlyingRustTuple<'_>>
1342        for SignatureWithSaltAndExpiry {
1343            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1344                Self {
1345                    signature: tuple.0,
1346                    salt: tuple.1,
1347                    expiry: tuple.2,
1348                }
1349            }
1350        }
1351        #[automatically_derived]
1352        impl alloy_sol_types::SolValue for SignatureWithSaltAndExpiry {
1353            type SolType = Self;
1354        }
1355        #[automatically_derived]
1356        impl alloy_sol_types::private::SolTypeValue<Self>
1357        for SignatureWithSaltAndExpiry {
1358            #[inline]
1359            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
1360                (
1361                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
1362                        &self.signature,
1363                    ),
1364                    <alloy::sol_types::sol_data::FixedBytes<
1365                        32,
1366                    > as alloy_sol_types::SolType>::tokenize(&self.salt),
1367                    <alloy::sol_types::sol_data::Uint<
1368                        256,
1369                    > as alloy_sol_types::SolType>::tokenize(&self.expiry),
1370                )
1371            }
1372            #[inline]
1373            fn stv_abi_encoded_size(&self) -> usize {
1374                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
1375                    return size;
1376                }
1377                let tuple = <UnderlyingRustTuple<
1378                    '_,
1379                > as ::core::convert::From<Self>>::from(self.clone());
1380                <UnderlyingSolTuple<
1381                    '_,
1382                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
1383            }
1384            #[inline]
1385            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1386                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
1387            }
1388            #[inline]
1389            fn stv_abi_encode_packed_to(
1390                &self,
1391                out: &mut alloy_sol_types::private::Vec<u8>,
1392            ) {
1393                let tuple = <UnderlyingRustTuple<
1394                    '_,
1395                > as ::core::convert::From<Self>>::from(self.clone());
1396                <UnderlyingSolTuple<
1397                    '_,
1398                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
1399            }
1400            #[inline]
1401            fn stv_abi_packed_encoded_size(&self) -> usize {
1402                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
1403                    return size;
1404                }
1405                let tuple = <UnderlyingRustTuple<
1406                    '_,
1407                > as ::core::convert::From<Self>>::from(self.clone());
1408                <UnderlyingSolTuple<
1409                    '_,
1410                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
1411            }
1412        }
1413        #[automatically_derived]
1414        impl alloy_sol_types::SolType for SignatureWithSaltAndExpiry {
1415            type RustType = Self;
1416            type Token<'a> = <UnderlyingSolTuple<
1417                'a,
1418            > as alloy_sol_types::SolType>::Token<'a>;
1419            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
1420            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1421                '_,
1422            > as alloy_sol_types::SolType>::ENCODED_SIZE;
1423            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1424                '_,
1425            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1426            #[inline]
1427            fn valid_token(token: &Self::Token<'_>) -> bool {
1428                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
1429            }
1430            #[inline]
1431            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1432                let tuple = <UnderlyingSolTuple<
1433                    '_,
1434                > as alloy_sol_types::SolType>::detokenize(token);
1435                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
1436            }
1437        }
1438        #[automatically_derived]
1439        impl alloy_sol_types::SolStruct for SignatureWithSaltAndExpiry {
1440            const NAME: &'static str = "SignatureWithSaltAndExpiry";
1441            #[inline]
1442            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
1443                alloy_sol_types::private::Cow::Borrowed(
1444                    "SignatureWithSaltAndExpiry(bytes signature,bytes32 salt,uint256 expiry)",
1445                )
1446            }
1447            #[inline]
1448            fn eip712_components() -> alloy_sol_types::private::Vec<
1449                alloy_sol_types::private::Cow<'static, str>,
1450            > {
1451                alloy_sol_types::private::Vec::new()
1452            }
1453            #[inline]
1454            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
1455                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
1456            }
1457            #[inline]
1458            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1459                [
1460                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::eip712_data_word(
1461                            &self.signature,
1462                        )
1463                        .0,
1464                    <alloy::sol_types::sol_data::FixedBytes<
1465                        32,
1466                    > as alloy_sol_types::SolType>::eip712_data_word(&self.salt)
1467                        .0,
1468                    <alloy::sol_types::sol_data::Uint<
1469                        256,
1470                    > as alloy_sol_types::SolType>::eip712_data_word(&self.expiry)
1471                        .0,
1472                ]
1473                    .concat()
1474            }
1475        }
1476        #[automatically_derived]
1477        impl alloy_sol_types::EventTopic for SignatureWithSaltAndExpiry {
1478            #[inline]
1479            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1480                0usize
1481                    + <alloy::sol_types::sol_data::Bytes as alloy_sol_types::EventTopic>::topic_preimage_length(
1482                        &rust.signature,
1483                    )
1484                    + <alloy::sol_types::sol_data::FixedBytes<
1485                        32,
1486                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.salt)
1487                    + <alloy::sol_types::sol_data::Uint<
1488                        256,
1489                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1490                        &rust.expiry,
1491                    )
1492            }
1493            #[inline]
1494            fn encode_topic_preimage(
1495                rust: &Self::RustType,
1496                out: &mut alloy_sol_types::private::Vec<u8>,
1497            ) {
1498                out.reserve(
1499                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
1500                );
1501                <alloy::sol_types::sol_data::Bytes as alloy_sol_types::EventTopic>::encode_topic_preimage(
1502                    &rust.signature,
1503                    out,
1504                );
1505                <alloy::sol_types::sol_data::FixedBytes<
1506                    32,
1507                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1508                    &rust.salt,
1509                    out,
1510                );
1511                <alloy::sol_types::sol_data::Uint<
1512                    256,
1513                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1514                    &rust.expiry,
1515                    out,
1516                );
1517            }
1518            #[inline]
1519            fn encode_topic(
1520                rust: &Self::RustType,
1521            ) -> alloy_sol_types::abi::token::WordToken {
1522                let mut out = alloy_sol_types::private::Vec::new();
1523                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
1524                    rust,
1525                    &mut out,
1526                );
1527                alloy_sol_types::abi::token::WordToken(
1528                    alloy_sol_types::private::keccak256(out),
1529                )
1530            }
1531        }
1532    };
1533    use alloy::contract as alloy_contract;
1534    /**Creates a new wrapper around an on-chain [`ISignatureUtilsMixinTypes`](self) contract instance.
1535
1536See the [wrapper's documentation](`ISignatureUtilsMixinTypesInstance`) for more details.*/
1537    #[inline]
1538    pub const fn new<
1539        P: alloy_contract::private::Provider<N>,
1540        N: alloy_contract::private::Network,
1541    >(
1542        address: alloy_sol_types::private::Address,
1543        provider: P,
1544    ) -> ISignatureUtilsMixinTypesInstance<P, N> {
1545        ISignatureUtilsMixinTypesInstance::<P, N>::new(address, provider)
1546    }
1547    /**A [`ISignatureUtilsMixinTypes`](self) instance.
1548
1549Contains type-safe methods for interacting with an on-chain instance of the
1550[`ISignatureUtilsMixinTypes`](self) contract located at a given `address`, using a given
1551provider `P`.
1552
1553If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
1554documentation on how to provide it), the `deploy` and `deploy_builder` methods can
1555be used to deploy a new instance of the contract.
1556
1557See the [module-level documentation](self) for all the available methods.*/
1558    #[derive(Clone)]
1559    pub struct ISignatureUtilsMixinTypesInstance<
1560        P,
1561        N = alloy_contract::private::Ethereum,
1562    > {
1563        address: alloy_sol_types::private::Address,
1564        provider: P,
1565        _network: ::core::marker::PhantomData<N>,
1566    }
1567    #[automatically_derived]
1568    impl<P, N> ::core::fmt::Debug for ISignatureUtilsMixinTypesInstance<P, N> {
1569        #[inline]
1570        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
1571            f.debug_tuple("ISignatureUtilsMixinTypesInstance")
1572                .field(&self.address)
1573                .finish()
1574        }
1575    }
1576    /// Instantiation and getters/setters.
1577    #[automatically_derived]
1578    impl<
1579        P: alloy_contract::private::Provider<N>,
1580        N: alloy_contract::private::Network,
1581    > ISignatureUtilsMixinTypesInstance<P, N> {
1582        /**Creates a new wrapper around an on-chain [`ISignatureUtilsMixinTypes`](self) contract instance.
1583
1584See the [wrapper's documentation](`ISignatureUtilsMixinTypesInstance`) for more details.*/
1585        #[inline]
1586        pub const fn new(
1587            address: alloy_sol_types::private::Address,
1588            provider: P,
1589        ) -> Self {
1590            Self {
1591                address,
1592                provider,
1593                _network: ::core::marker::PhantomData,
1594            }
1595        }
1596        /// Returns a reference to the address.
1597        #[inline]
1598        pub const fn address(&self) -> &alloy_sol_types::private::Address {
1599            &self.address
1600        }
1601        /// Sets the address.
1602        #[inline]
1603        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
1604            self.address = address;
1605        }
1606        /// Sets the address and returns `self`.
1607        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
1608            self.set_address(address);
1609            self
1610        }
1611        /// Returns a reference to the provider.
1612        #[inline]
1613        pub const fn provider(&self) -> &P {
1614            &self.provider
1615        }
1616    }
1617    impl<P: ::core::clone::Clone, N> ISignatureUtilsMixinTypesInstance<&P, N> {
1618        /// Clones the provider and returns a new instance with the cloned provider.
1619        #[inline]
1620        pub fn with_cloned_provider(self) -> ISignatureUtilsMixinTypesInstance<P, N> {
1621            ISignatureUtilsMixinTypesInstance {
1622                address: self.address,
1623                provider: ::core::clone::Clone::clone(&self.provider),
1624                _network: ::core::marker::PhantomData,
1625            }
1626        }
1627    }
1628    /// Function calls.
1629    #[automatically_derived]
1630    impl<
1631        P: alloy_contract::private::Provider<N>,
1632        N: alloy_contract::private::Network,
1633    > ISignatureUtilsMixinTypesInstance<P, N> {
1634        /// Creates a new call builder using this contract instance's provider and address.
1635        ///
1636        /// Note that the call can be any function call, not just those defined in this
1637        /// contract. Prefer using the other methods for building type-safe contract calls.
1638        pub fn call_builder<C: alloy_sol_types::SolCall>(
1639            &self,
1640            call: &C,
1641        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
1642            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
1643        }
1644    }
1645    /// Event filters.
1646    #[automatically_derived]
1647    impl<
1648        P: alloy_contract::private::Provider<N>,
1649        N: alloy_contract::private::Network,
1650    > ISignatureUtilsMixinTypesInstance<P, N> {
1651        /// Creates a new event filter using this contract instance's provider and address.
1652        ///
1653        /// Note that the type can be any event, not just those defined in this contract.
1654        /// Prefer using the other methods for building type-safe event filters.
1655        pub fn event_filter<E: alloy_sol_types::SolEvent>(
1656            &self,
1657        ) -> alloy_contract::Event<&P, E, N> {
1658            alloy_contract::Event::new_sol(&self.provider, &self.address)
1659        }
1660    }
1661}
1662/**
1663
1664Generated by the following Solidity interface...
1665```solidity
1666library IRewardsCoordinatorTypes {
1667    struct OperatorDirectedRewardsSubmission {
1668        StrategyAndMultiplier[] strategiesAndMultipliers;
1669        address token;
1670        OperatorReward[] operatorRewards;
1671        uint32 startTimestamp;
1672        uint32 duration;
1673        string description;
1674    }
1675    struct OperatorReward {
1676        address operator;
1677        uint256 amount;
1678    }
1679    struct RewardsSubmission {
1680        StrategyAndMultiplier[] strategiesAndMultipliers;
1681        address token;
1682        uint256 amount;
1683        uint32 startTimestamp;
1684        uint32 duration;
1685    }
1686    struct StrategyAndMultiplier {
1687        address strategy;
1688        uint96 multiplier;
1689    }
1690}
1691
1692library ISignatureUtilsMixinTypes {
1693    struct SignatureWithSaltAndExpiry {
1694        bytes signature;
1695        bytes32 salt;
1696        uint256 expiry;
1697    }
1698}
1699
1700interface SquaringServiceManager {
1701    error DelayPeriodNotPassed();
1702    error OnlyRegistryCoordinator();
1703    error OnlyRewardsInitiator();
1704    error OnlyStakeRegistry();
1705
1706    event Initialized(uint8 version);
1707    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
1708    event RewardsInitiatorUpdated(address prevRewardsInitiator, address newRewardsInitiator);
1709
1710    constructor(address _avsDirectory, address _registryCoordinator, address _stakeRegistry, address rewardsCoordinator, address _squaringTaskManager, address _permissionController, address _allocationManager);
1711
1712    function addPendingAdmin(address admin) external;
1713    function avsDirectory() external view returns (address);
1714    function createAVSRewardsSubmission(IRewardsCoordinatorTypes.RewardsSubmission[] memory rewardsSubmissions) external;
1715    function createOperatorDirectedAVSRewardsSubmission(IRewardsCoordinatorTypes.OperatorDirectedRewardsSubmission[] memory operatorDirectedRewardsSubmissions) external;
1716    function deregisterOperatorFromAVS(address operator) external;
1717    function deregisterOperatorFromOperatorSets(address operator, uint32[] memory operatorSetIds) external;
1718    function freezeOperator(address operatorAddr) external;
1719    function getOperatorRestakedStrategies(address operator) external view returns (address[] memory);
1720    function getRestakeableStrategies() external view returns (address[] memory);
1721    function initialize(address initialOwner, address rewardsInitiator) external;
1722    function owner() external view returns (address);
1723    function registerOperatorToAVS(address operator, ISignatureUtilsMixinTypes.SignatureWithSaltAndExpiry memory operatorSignature) external;
1724    function removeAdmin(address admin) external;
1725    function removeAppointee(address appointee, address target, bytes4 selector) external;
1726    function removePendingAdmin(address pendingAdmin) external;
1727    function renounceOwnership() external;
1728    function rewardsInitiator() external view returns (address);
1729    function setAppointee(address appointee, address target, bytes4 selector) external;
1730    function setClaimerFor(address claimer) external;
1731    function setRewardsInitiator(address newRewardsInitiator) external;
1732    function squaringTaskManager() external view returns (address);
1733    function transferOwnership(address newOwner) external;
1734    function updateAVSMetadataURI(string memory _metadataURI) external;
1735}
1736```
1737
1738...which was generated by the following JSON ABI:
1739```json
1740[
1741  {
1742    "type": "constructor",
1743    "inputs": [
1744      {
1745        "name": "_avsDirectory",
1746        "type": "address",
1747        "internalType": "contract IAVSDirectory"
1748      },
1749      {
1750        "name": "_registryCoordinator",
1751        "type": "address",
1752        "internalType": "contract IRegistryCoordinator"
1753      },
1754      {
1755        "name": "_stakeRegistry",
1756        "type": "address",
1757        "internalType": "contract IStakeRegistry"
1758      },
1759      {
1760        "name": "rewardsCoordinator",
1761        "type": "address",
1762        "internalType": "address"
1763      },
1764      {
1765        "name": "_squaringTaskManager",
1766        "type": "address",
1767        "internalType": "contract TaskManager"
1768      },
1769      {
1770        "name": "_permissionController",
1771        "type": "address",
1772        "internalType": "contract IPermissionController"
1773      },
1774      {
1775        "name": "_allocationManager",
1776        "type": "address",
1777        "internalType": "contract IAllocationManager"
1778      }
1779    ],
1780    "stateMutability": "nonpayable"
1781  },
1782  {
1783    "type": "function",
1784    "name": "addPendingAdmin",
1785    "inputs": [
1786      {
1787        "name": "admin",
1788        "type": "address",
1789        "internalType": "address"
1790      }
1791    ],
1792    "outputs": [],
1793    "stateMutability": "nonpayable"
1794  },
1795  {
1796    "type": "function",
1797    "name": "avsDirectory",
1798    "inputs": [],
1799    "outputs": [
1800      {
1801        "name": "",
1802        "type": "address",
1803        "internalType": "address"
1804      }
1805    ],
1806    "stateMutability": "view"
1807  },
1808  {
1809    "type": "function",
1810    "name": "createAVSRewardsSubmission",
1811    "inputs": [
1812      {
1813        "name": "rewardsSubmissions",
1814        "type": "tuple[]",
1815        "internalType": "struct IRewardsCoordinatorTypes.RewardsSubmission[]",
1816        "components": [
1817          {
1818            "name": "strategiesAndMultipliers",
1819            "type": "tuple[]",
1820            "internalType": "struct IRewardsCoordinatorTypes.StrategyAndMultiplier[]",
1821            "components": [
1822              {
1823                "name": "strategy",
1824                "type": "address",
1825                "internalType": "contract IStrategy"
1826              },
1827              {
1828                "name": "multiplier",
1829                "type": "uint96",
1830                "internalType": "uint96"
1831              }
1832            ]
1833          },
1834          {
1835            "name": "token",
1836            "type": "address",
1837            "internalType": "contract IERC20"
1838          },
1839          {
1840            "name": "amount",
1841            "type": "uint256",
1842            "internalType": "uint256"
1843          },
1844          {
1845            "name": "startTimestamp",
1846            "type": "uint32",
1847            "internalType": "uint32"
1848          },
1849          {
1850            "name": "duration",
1851            "type": "uint32",
1852            "internalType": "uint32"
1853          }
1854        ]
1855      }
1856    ],
1857    "outputs": [],
1858    "stateMutability": "nonpayable"
1859  },
1860  {
1861    "type": "function",
1862    "name": "createOperatorDirectedAVSRewardsSubmission",
1863    "inputs": [
1864      {
1865        "name": "operatorDirectedRewardsSubmissions",
1866        "type": "tuple[]",
1867        "internalType": "struct IRewardsCoordinatorTypes.OperatorDirectedRewardsSubmission[]",
1868        "components": [
1869          {
1870            "name": "strategiesAndMultipliers",
1871            "type": "tuple[]",
1872            "internalType": "struct IRewardsCoordinatorTypes.StrategyAndMultiplier[]",
1873            "components": [
1874              {
1875                "name": "strategy",
1876                "type": "address",
1877                "internalType": "contract IStrategy"
1878              },
1879              {
1880                "name": "multiplier",
1881                "type": "uint96",
1882                "internalType": "uint96"
1883              }
1884            ]
1885          },
1886          {
1887            "name": "token",
1888            "type": "address",
1889            "internalType": "contract IERC20"
1890          },
1891          {
1892            "name": "operatorRewards",
1893            "type": "tuple[]",
1894            "internalType": "struct IRewardsCoordinatorTypes.OperatorReward[]",
1895            "components": [
1896              {
1897                "name": "operator",
1898                "type": "address",
1899                "internalType": "address"
1900              },
1901              {
1902                "name": "amount",
1903                "type": "uint256",
1904                "internalType": "uint256"
1905              }
1906            ]
1907          },
1908          {
1909            "name": "startTimestamp",
1910            "type": "uint32",
1911            "internalType": "uint32"
1912          },
1913          {
1914            "name": "duration",
1915            "type": "uint32",
1916            "internalType": "uint32"
1917          },
1918          {
1919            "name": "description",
1920            "type": "string",
1921            "internalType": "string"
1922          }
1923        ]
1924      }
1925    ],
1926    "outputs": [],
1927    "stateMutability": "nonpayable"
1928  },
1929  {
1930    "type": "function",
1931    "name": "deregisterOperatorFromAVS",
1932    "inputs": [
1933      {
1934        "name": "operator",
1935        "type": "address",
1936        "internalType": "address"
1937      }
1938    ],
1939    "outputs": [],
1940    "stateMutability": "nonpayable"
1941  },
1942  {
1943    "type": "function",
1944    "name": "deregisterOperatorFromOperatorSets",
1945    "inputs": [
1946      {
1947        "name": "operator",
1948        "type": "address",
1949        "internalType": "address"
1950      },
1951      {
1952        "name": "operatorSetIds",
1953        "type": "uint32[]",
1954        "internalType": "uint32[]"
1955      }
1956    ],
1957    "outputs": [],
1958    "stateMutability": "nonpayable"
1959  },
1960  {
1961    "type": "function",
1962    "name": "freezeOperator",
1963    "inputs": [
1964      {
1965        "name": "operatorAddr",
1966        "type": "address",
1967        "internalType": "address"
1968      }
1969    ],
1970    "outputs": [],
1971    "stateMutability": "nonpayable"
1972  },
1973  {
1974    "type": "function",
1975    "name": "getOperatorRestakedStrategies",
1976    "inputs": [
1977      {
1978        "name": "operator",
1979        "type": "address",
1980        "internalType": "address"
1981      }
1982    ],
1983    "outputs": [
1984      {
1985        "name": "",
1986        "type": "address[]",
1987        "internalType": "address[]"
1988      }
1989    ],
1990    "stateMutability": "view"
1991  },
1992  {
1993    "type": "function",
1994    "name": "getRestakeableStrategies",
1995    "inputs": [],
1996    "outputs": [
1997      {
1998        "name": "",
1999        "type": "address[]",
2000        "internalType": "address[]"
2001      }
2002    ],
2003    "stateMutability": "view"
2004  },
2005  {
2006    "type": "function",
2007    "name": "initialize",
2008    "inputs": [
2009      {
2010        "name": "initialOwner",
2011        "type": "address",
2012        "internalType": "address"
2013      },
2014      {
2015        "name": "rewardsInitiator",
2016        "type": "address",
2017        "internalType": "address"
2018      }
2019    ],
2020    "outputs": [],
2021    "stateMutability": "nonpayable"
2022  },
2023  {
2024    "type": "function",
2025    "name": "owner",
2026    "inputs": [],
2027    "outputs": [
2028      {
2029        "name": "",
2030        "type": "address",
2031        "internalType": "address"
2032      }
2033    ],
2034    "stateMutability": "view"
2035  },
2036  {
2037    "type": "function",
2038    "name": "registerOperatorToAVS",
2039    "inputs": [
2040      {
2041        "name": "operator",
2042        "type": "address",
2043        "internalType": "address"
2044      },
2045      {
2046        "name": "operatorSignature",
2047        "type": "tuple",
2048        "internalType": "struct ISignatureUtilsMixinTypes.SignatureWithSaltAndExpiry",
2049        "components": [
2050          {
2051            "name": "signature",
2052            "type": "bytes",
2053            "internalType": "bytes"
2054          },
2055          {
2056            "name": "salt",
2057            "type": "bytes32",
2058            "internalType": "bytes32"
2059          },
2060          {
2061            "name": "expiry",
2062            "type": "uint256",
2063            "internalType": "uint256"
2064          }
2065        ]
2066      }
2067    ],
2068    "outputs": [],
2069    "stateMutability": "nonpayable"
2070  },
2071  {
2072    "type": "function",
2073    "name": "removeAdmin",
2074    "inputs": [
2075      {
2076        "name": "admin",
2077        "type": "address",
2078        "internalType": "address"
2079      }
2080    ],
2081    "outputs": [],
2082    "stateMutability": "nonpayable"
2083  },
2084  {
2085    "type": "function",
2086    "name": "removeAppointee",
2087    "inputs": [
2088      {
2089        "name": "appointee",
2090        "type": "address",
2091        "internalType": "address"
2092      },
2093      {
2094        "name": "target",
2095        "type": "address",
2096        "internalType": "address"
2097      },
2098      {
2099        "name": "selector",
2100        "type": "bytes4",
2101        "internalType": "bytes4"
2102      }
2103    ],
2104    "outputs": [],
2105    "stateMutability": "nonpayable"
2106  },
2107  {
2108    "type": "function",
2109    "name": "removePendingAdmin",
2110    "inputs": [
2111      {
2112        "name": "pendingAdmin",
2113        "type": "address",
2114        "internalType": "address"
2115      }
2116    ],
2117    "outputs": [],
2118    "stateMutability": "nonpayable"
2119  },
2120  {
2121    "type": "function",
2122    "name": "renounceOwnership",
2123    "inputs": [],
2124    "outputs": [],
2125    "stateMutability": "nonpayable"
2126  },
2127  {
2128    "type": "function",
2129    "name": "rewardsInitiator",
2130    "inputs": [],
2131    "outputs": [
2132      {
2133        "name": "",
2134        "type": "address",
2135        "internalType": "address"
2136      }
2137    ],
2138    "stateMutability": "view"
2139  },
2140  {
2141    "type": "function",
2142    "name": "setAppointee",
2143    "inputs": [
2144      {
2145        "name": "appointee",
2146        "type": "address",
2147        "internalType": "address"
2148      },
2149      {
2150        "name": "target",
2151        "type": "address",
2152        "internalType": "address"
2153      },
2154      {
2155        "name": "selector",
2156        "type": "bytes4",
2157        "internalType": "bytes4"
2158      }
2159    ],
2160    "outputs": [],
2161    "stateMutability": "nonpayable"
2162  },
2163  {
2164    "type": "function",
2165    "name": "setClaimerFor",
2166    "inputs": [
2167      {
2168        "name": "claimer",
2169        "type": "address",
2170        "internalType": "address"
2171      }
2172    ],
2173    "outputs": [],
2174    "stateMutability": "nonpayable"
2175  },
2176  {
2177    "type": "function",
2178    "name": "setRewardsInitiator",
2179    "inputs": [
2180      {
2181        "name": "newRewardsInitiator",
2182        "type": "address",
2183        "internalType": "address"
2184      }
2185    ],
2186    "outputs": [],
2187    "stateMutability": "nonpayable"
2188  },
2189  {
2190    "type": "function",
2191    "name": "squaringTaskManager",
2192    "inputs": [],
2193    "outputs": [
2194      {
2195        "name": "",
2196        "type": "address",
2197        "internalType": "contract TaskManager"
2198      }
2199    ],
2200    "stateMutability": "view"
2201  },
2202  {
2203    "type": "function",
2204    "name": "transferOwnership",
2205    "inputs": [
2206      {
2207        "name": "newOwner",
2208        "type": "address",
2209        "internalType": "address"
2210      }
2211    ],
2212    "outputs": [],
2213    "stateMutability": "nonpayable"
2214  },
2215  {
2216    "type": "function",
2217    "name": "updateAVSMetadataURI",
2218    "inputs": [
2219      {
2220        "name": "_metadataURI",
2221        "type": "string",
2222        "internalType": "string"
2223      }
2224    ],
2225    "outputs": [],
2226    "stateMutability": "nonpayable"
2227  },
2228  {
2229    "type": "event",
2230    "name": "Initialized",
2231    "inputs": [
2232      {
2233        "name": "version",
2234        "type": "uint8",
2235        "indexed": false,
2236        "internalType": "uint8"
2237      }
2238    ],
2239    "anonymous": false
2240  },
2241  {
2242    "type": "event",
2243    "name": "OwnershipTransferred",
2244    "inputs": [
2245      {
2246        "name": "previousOwner",
2247        "type": "address",
2248        "indexed": true,
2249        "internalType": "address"
2250      },
2251      {
2252        "name": "newOwner",
2253        "type": "address",
2254        "indexed": true,
2255        "internalType": "address"
2256      }
2257    ],
2258    "anonymous": false
2259  },
2260  {
2261    "type": "event",
2262    "name": "RewardsInitiatorUpdated",
2263    "inputs": [
2264      {
2265        "name": "prevRewardsInitiator",
2266        "type": "address",
2267        "indexed": false,
2268        "internalType": "address"
2269      },
2270      {
2271        "name": "newRewardsInitiator",
2272        "type": "address",
2273        "indexed": false,
2274        "internalType": "address"
2275      }
2276    ],
2277    "anonymous": false
2278  },
2279  {
2280    "type": "error",
2281    "name": "DelayPeriodNotPassed",
2282    "inputs": []
2283  },
2284  {
2285    "type": "error",
2286    "name": "OnlyRegistryCoordinator",
2287    "inputs": []
2288  },
2289  {
2290    "type": "error",
2291    "name": "OnlyRewardsInitiator",
2292    "inputs": []
2293  },
2294  {
2295    "type": "error",
2296    "name": "OnlyStakeRegistry",
2297    "inputs": []
2298  }
2299]
2300```*/
2301#[allow(
2302    non_camel_case_types,
2303    non_snake_case,
2304    clippy::pub_underscore_fields,
2305    clippy::style,
2306    clippy::empty_structs_with_brackets
2307)]
2308pub mod SquaringServiceManager {
2309    use super::*;
2310    use alloy::sol_types as alloy_sol_types;
2311    /// The creation / init bytecode of the contract.
2312    ///
2313    /// ```text
2314    ///0x610160604052348015610010575f5ffd5b506040516129af3803806129af83398101604081905261002f9161015e565b6001600160a01b0380881660805280851660c05280871660e0528086166101005280831661012052811660a05286848787858561006a61008b565b5050506001600160a01b0390951661014052506101f5975050505050505050565b5f54610100900460ff16156100f65760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff90811614610145575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461015b575f5ffd5b50565b5f5f5f5f5f5f5f60e0888a031215610174575f5ffd5b875161017f81610147565b602089015190975061019081610147565b60408901519096506101a181610147565b60608901519095506101b281610147565b60808901519094506101c381610147565b60a08901519093506101d481610147565b60c08901519092506101e581610147565b8091505092959891949750929550565b60805160a05160c05160e0516101005161012051610140516126c16102ee5f395f81816102ce015261093d01525f8181610350015281816103d60152818161046201528181610bf40152610f4901525f8181610689015281816107d401528181610868015281816110fa0152818161126c015261130801525f818161049e0152818161054a015281816105c801528181610b1801528181610e4c01528181610f8f0152818161103a01526111ca01525f8181610c4a01528181610d8201528181610e08015281816114ac015261153701525f61100001525f81816101eb01528181610b6d01528181610ea10152610ef501526126c15ff3fe608060405234801561000f575f5ffd5b5060043610610148575f3560e01c80639da16d8e116100bf578063c1a8e2c511610079578063c1a8e2c5146102b6578063c3fc91ea146102c9578063e481af9d146102f0578063f2fde38b146102f8578063fc299dee1461030b578063fce36c7d1461031e575f5ffd5b80639da16d8e14610244578063a0169ddd14610257578063a20b99bf1461026a578063a364f4da1461027d578063a98fb35514610290578063ba550880146102a3575f5ffd5b80633bc28c8c116101105780633bc28c8c146101c3578063485cc955146101d65780636b3aa72e146101e9578063715018a6146102185780638da5cb5b146102205780639926ee7d14610231575f5ffd5b80631785f53c1461014c5780631fdb0cfd14610161578063279432eb1461017457806333cfb7b71461018757806338c8ee64146101b0575b5f5ffd5b61015f61015a366004611ba6565b610331565b005b61015f61016f366004611bc8565b6103b7565b61015f610182366004611ba6565b610443565b61019a610195366004611ba6565b610499565b6040516101a79190611c1c565b60405180910390f35b61015f6101be366004611ba6565b610932565b61015f6101d1366004611ba6565b6109da565b61015f6101e4366004611c67565b6109eb565b7f00000000000000000000000000000000000000000000000000000000000000005b6040516101a79190611c9e565b61015f610afa565b6033546001600160a01b031661020b565b61015f61023f366004611d76565b610b0d565b61015f610252366004611ba6565b610bd5565b61015f610265366004611ba6565b610c2b565b61015f610278366004611e65565b610c7f565b61015f61028b366004611ba6565b610e41565b61015f61029e366004611ea3565b610ed6565b61015f6102b1366004611bc8565b610f2a565b61015f6102c4366004611eff565b610f84565b61020b7f000000000000000000000000000000000000000000000000000000000000000081565b61019a611035565b61015f610306366004611ba6565b6113ce565b60655461020b906001600160a01b031681565b61015f61032c366004611e65565b611444565b61033961156e565b60405163268959e560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063268959e5906103879030908590600401611fc1565b5f604051808303815f87803b15801561039e575f5ffd5b505af11580156103b0573d5f5f3e3d5ffd5b5050505050565b6103bf61156e565b604051634a86c03760e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063950d806e90610411903090879087908790600401611fdb565b5f604051808303815f87803b158015610428575f5ffd5b505af115801561043a573d5f5f3e3d5ffd5b50505050505050565b61044b61156e565b60405163eb5a4e8760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063eb5a4e87906103879030908590600401611fc1565b60605f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166313542a4e846040518263ffffffff1660e01b81526004016104e89190611c9e565b602060405180830381865afa158015610503573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610527919061200e565b60405163871ef04960e01b8152600481018290529091505f906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063871ef04990602401602060405180830381865afa15801561058f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105b39190612025565b90506001600160c01b038116158061064b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610622573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610646919061204b565b60ff16155b15610666575050604080515f81526020810190915292915050565b5f610679826001600160c01b03166115c8565b90505f805b8251811015610742577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633ca5a5f58483815181106106c8576106c861206b565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa15801561070a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061072e919061200e565b6107389083612093565b915060010161067e565b505f816001600160401b0381111561075c5761075c611cb2565b604051908082528060200260200182016040528015610785578160200160208202803683370190505b5090505f805b8451811015610925575f8582815181106107a7576107a761206b565b0160200151604051633ca5a5f560e01b815260f89190911c6004820181905291505f906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633ca5a5f590602401602060405180830381865afa158015610819573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061083d919061200e565b90505f5b8181101561091a576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa1580156108b4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108d891906120ba565b5f01518686815181106108ed576108ed61206b565b6001600160a01b03909216602092830291909101909101528461090f81612118565b955050600101610841565b50505060010161078b565b5090979650505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109d7576040805162461bcd60e51b81526020600482015260248101919091527f6f6e6c795371756172696e675461736b4d616e616765723a206e6f742066726f60448201527f6d206372656469626c65207371756172696e67207461736b206d616e6167657260648201526084015b60405180910390fd5b50565b6109e261156e565b6109d781611687565b5f54610100900460ff1615808015610a0957505f54600160ff909116105b80610a225750303b158015610a2257505f5460ff166001145b610a855760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016109ce565b5f805460ff191660011790558015610aa6575f805461ff0019166101001790555b610ab083836116f0565b8015610af5575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b610b0261156e565b610b0b5f611770565b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b5657604051634394dbdf60e11b815260040160405180910390fd5b604051639926ee7d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639926ee7d90610ba4908590859060040161217d565b5f604051808303815f87803b158015610bbb575f5ffd5b505af1158015610bcd573d5f5f3e3d5ffd5b505050505050565b610bdd61156e565b604051634f906cf960e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690634f906cf9906103879030908590600401611fc1565b610c3361156e565b60405163a0169ddd60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a0169ddd90610387908490600401611c9e565b610c876117c1565b5f5b81811015610df0575f805b848484818110610ca657610ca661206b565b9050602002810190610cb891906121c7565b610cc69060408101906121e5565b9050811015610d3057848484818110610ce157610ce161206b565b9050602002810190610cf391906121c7565b610d019060408101906121e5565b82818110610d1157610d1161206b565b9050604002016020013582610d269190612093565b9150600101610c94565b50610d7d333083878787818110610d4957610d4961206b565b9050602002810190610d5b91906121c7565b610d6c906040810190602001611ba6565b6001600160a01b03169291906117ec565b610de77f000000000000000000000000000000000000000000000000000000000000000082868686818110610db457610db461206b565b9050602002810190610dc691906121c7565b610dd7906040810190602001611ba6565b6001600160a01b0316919061185d565b50600101610c89565b50604051634e5cd2fd60e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639cb9a5fa90610ba49030908690869060040161233b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610e8a57604051634394dbdf60e11b815260040160405180910390fd5b6040516351b27a6d60e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da90610387908490600401611c9e565b610ede61156e565b60405163a98fb35560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a98fb355906103879084906004016124aa565b610f3261156e565b604051630664120160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690630664120190610411903090879087908790600401611fdb565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610fcd57604051634394dbdf60e11b815260040160405180910390fd5b604080516060810182526001600160a01b0380851682523060208301528183018490529151636e3492b560e01b815290917f00000000000000000000000000000000000000000000000000000000000000001690636e3492b5906104119084906004016124bc565b60605f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611094573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110b8919061204b565b60ff169050805f036110d7575050604080515f81526020810190915290565b5f805b8281101561117f57604051633ca5a5f560e01b815260ff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015611147573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061116b919061200e565b6111759083612093565b91506001016110da565b505f816001600160401b0381111561119957611199611cb2565b6040519080825280602002602001820160405280156111c2578160200160208202803683370190505b5090505f805b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611224573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611248919061204b565b60ff168110156113c457604051633ca5a5f560e01b815260ff821660048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa1580156112b9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112dd919061200e565b90505f5b818110156113ba576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa158015611354573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061137891906120ba565b5f015185858151811061138d5761138d61206b565b6001600160a01b0390921660209283029190910190910152836113af81612118565b9450506001016112e1565b50506001016111c8565b5090949350505050565b6113d661156e565b6001600160a01b03811661143b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109ce565b6109d781611770565b61144c6117c1565b5f5b8181101561151f576114a7333085858581811061146d5761146d61206b565b905060200281019061147f9190612534565b604001358686868181106114955761149561206b565b9050602002810190610d5b9190612534565b6115177f00000000000000000000000000000000000000000000000000000000000000008484848181106114dd576114dd61206b565b90506020028101906114ef9190612534565b604001358585858181106115055761150561206b565b9050602002810190610dc69190612534565b60010161144e565b5060405163fce36c7d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fce36c7d90610ba49085908590600401612548565b6033546001600160a01b03163314610b0b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109ce565b60605f5f6115d584611905565b61ffff166001600160401b038111156115f0576115f0611cb2565b6040519080825280601f01601f19166020018201604052801561161a576020820181803683370190505b5090505f805b825182108015611631575061010081105b156113c4576001811b935085841615611677578060f81b83838151811061165a5761165a61206b565b60200101906001600160f81b03191690815f1a9053508160010191505b61168081612118565b9050611620565b6065546040517fe11cddf1816a43318ca175bbc52cd0185436e9cbead7c83acc54a73e461717e3916116c6916001600160a01b03909116908490611fc1565b60405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b5f54610100900460ff1661175a5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016109ce565b61176382611770565b61176c81611687565b5050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6065546001600160a01b03163314610b0b57604051638e79fdb560e01b815260040160405180910390fd5b6040516001600160a01b03808516602483015283166044820152606481018290526118579085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611935565b50505050565b604051636eb1769f60e11b81525f906001600160a01b0385169063dd62ed3e9061188d9030908790600401611fc1565b602060405180830381865afa1580156118a8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118cc919061200e565b90506118578463095ea7b360e01b856118e58686612093565b6040516001600160a01b0390921660248301526044820152606401611820565b5f805b821561192f57611919600184612628565b90921691806119278161263b565b915050611908565b92915050565b5f611989826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611a089092919063ffffffff16565b905080515f14806119a95750808060200190518101906119a9919061265b565b610af55760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016109ce565b6060611a1684845f85611a1e565b949350505050565b606082471015611a7f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016109ce565b5f5f866001600160a01b03168587604051611a9a919061267a565b5f6040518083038185875af1925050503d805f8114611ad4576040519150601f19603f3d011682016040523d82523d5f602084013e611ad9565b606091505b5091509150611aea87838387611af5565b979650505050505050565b60608315611b635782515f03611b5c576001600160a01b0385163b611b5c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016109ce565b5081611a16565b611a168383815115611b785781518083602001fd5b8060405162461bcd60e51b81526004016109ce91906124aa565b6001600160a01b03811681146109d7575f5ffd5b5f60208284031215611bb6575f5ffd5b8135611bc181611b92565b9392505050565b5f5f5f60608486031215611bda575f5ffd5b8335611be581611b92565b92506020840135611bf581611b92565b915060408401356001600160e01b031981168114611c11575f5ffd5b809150509250925092565b602080825282518282018190525f918401906040840190835b81811015611c5c5783516001600160a01b0316835260209384019390920191600101611c35565b509095945050505050565b5f5f60408385031215611c78575f5ffd5b8235611c8381611b92565b91506020830135611c9381611b92565b809150509250929050565b6001600160a01b0391909116815260200190565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715611ce857611ce8611cb2565b60405290565b604051601f8201601f191681016001600160401b0381118282101715611d1657611d16611cb2565b604052919050565b5f5f6001600160401b03841115611d3757611d37611cb2565b50601f8301601f1916602001611d4c81611cee565b915050828152838383011115611d60575f5ffd5b828260208301375f602084830101529392505050565b5f5f60408385031215611d87575f5ffd5b8235611d9281611b92565b915060208301356001600160401b03811115611dac575f5ffd5b830160608186031215611dbd575f5ffd5b611dc5611cc6565b81356001600160401b03811115611dda575f5ffd5b8201601f81018713611dea575f5ffd5b611df987823560208401611d1e565b8252506020828101359082015260409182013591810191909152919491935090915050565b5f5f83601f840112611e2e575f5ffd5b5081356001600160401b03811115611e44575f5ffd5b6020830191508360208260051b8501011115611e5e575f5ffd5b9250929050565b5f5f60208385031215611e76575f5ffd5b82356001600160401b03811115611e8b575f5ffd5b611e9785828601611e1e565b90969095509350505050565b5f60208284031215611eb3575f5ffd5b81356001600160401b03811115611ec8575f5ffd5b8201601f81018413611ed8575f5ffd5b611a1684823560208401611d1e565b803563ffffffff81168114611efa575f5ffd5b919050565b5f5f60408385031215611f10575f5ffd5b8235611f1b81611b92565b915060208301356001600160401b03811115611f35575f5ffd5b8301601f81018513611f45575f5ffd5b80356001600160401b03811115611f5e57611f5e611cb2565b8060051b611f6e60208201611cee565b91825260208184018101929081019088841115611f89575f5ffd5b6020850194505b83851015611fb257611fa185611ee7565b825260209485019490910190611f90565b80955050505050509250929050565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b0394851681529284166020840152921660408201526001600160e01b0319909116606082015260800190565b5f6020828403121561201e575f5ffd5b5051919050565b5f60208284031215612035575f5ffd5b81516001600160c01b0381168114611bc1575f5ffd5b5f6020828403121561205b575f5ffd5b815160ff81168114611bc1575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b8082018082111561192f5761192f61207f565b6001600160601b03811681146109d7575f5ffd5b5f60408284031280156120cb575f5ffd5b50604080519081016001600160401b03811182821017156120ee576120ee611cb2565b60405282516120fc81611b92565b8152602083015161210c816120a6565b60208201529392505050565b5f600182016121295761212961207f565b5060010190565b5f5b8381101561214a578181015183820152602001612132565b50505f910152565b5f8151808452612169816020860160208601612130565b601f01601f19169290920160200192915050565b60018060a01b0383168152604060208201525f8251606060408401526121a660a0840182612152565b90506020840151606084015260408401516080840152809150509392505050565b5f823560be198336030181126121db575f5ffd5b9190910192915050565b5f5f8335601e198436030181126121fa575f5ffd5b8301803591506001600160401b03821115612213575f5ffd5b6020019150600681901b3603821315611e5e575f5ffd5b5f5f8335601e1984360301811261223f575f5ffd5b83016020810192503590506001600160401b0381111561225d575f5ffd5b8060061b3603821315611e5e575f5ffd5b8183526020830192505f815f5b848110156122c857813561228e81611b92565b6001600160a01b0316865260208201356122a7816120a6565b6001600160601b03166020870152604095860195919091019060010161227b565b5093949350505050565b5f5f8335601e198436030181126122e7575f5ffd5b83016020810192503590506001600160401b03811115612305575f5ffd5b803603821315611e5e575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6001600160a01b038416815260406020820181905281018290525f6060600584901b83018101908301858360be1936839003015b8782101561249c57868503605f19018452823581811261238d575f5ffd5b8901612399818061222a565b60c088526123ab60c08901828461226e565b91505060208201356123bc81611b92565b6001600160a01b031660208801526123d7604083018361222a565b88830360408a015280835290915f91906020015b818310156124265783356123fe81611b92565b6001600160a01b031681526020848101359082015260409384019360019390930192016123eb565b61243260608601611ee7565b63ffffffff811660608c0152935061244c60808601611ee7565b63ffffffff811660808c0152935061246760a08601866122d2565b9550935089810360a08b015261247e818686612313565b9950505050505060208301925060208401935060018201915061236f565b509298975050505050505050565b602081525f611bc16020830184612152565b602080825282516001600160a01b039081168383015283820151166040808401919091528301516060808401528051608084018190525f929190910190829060a08501905b8083101561252a5763ffffffff8451168252602082019150602084019350600183019250612501565b5095945050505050565b5f8235609e198336030181126121db575f5ffd5b602080825281018290525f6040600584901b830181019083018583609e1936839003015b8782101561261b57868503603f19018452823581811261258a575f5ffd5b8901612596818061222a565b60a088526125a860a08901828461226e565b91505060208201356125b981611b92565b6001600160a01b031660208801526040828101359088015263ffffffff6125e260608401611ee7565b16606088015263ffffffff6125f960808401611ee7565b166080880152809650505060208301925060208401935060018201915061256c565b5092979650505050505050565b8181038181111561192f5761192f61207f565b5f61ffff821661ffff81036126525761265261207f565b60010192915050565b5f6020828403121561266b575f5ffd5b81518015158114611bc1575f5ffd5b5f82516121db81846020870161213056fea26469706673582212201c3d8072cecc2ba18c70f34be2c879462d4e2370c926181653cc79e0dee4b2f264736f6c634300081b0033
2315    /// ```
2316    #[rustfmt::skip]
2317    #[allow(clippy::all)]
2318    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
2319        b"a\x01``@R4\x80\x15a\0\x10W__\xFD[P`@Qa)\xAF8\x03\x80a)\xAF\x839\x81\x01`@\x81\x90Ra\0/\x91a\x01^V[`\x01`\x01`\xA0\x1B\x03\x80\x88\x16`\x80R\x80\x85\x16`\xC0R\x80\x87\x16`\xE0R\x80\x86\x16a\x01\0R\x80\x83\x16a\x01 R\x81\x16`\xA0R\x86\x84\x87\x87\x85\x85a\0ja\0\x8BV[PPP`\x01`\x01`\xA0\x1B\x03\x90\x95\x16a\x01@RPa\x01\xF5\x97PPPPPPPPV[_Ta\x01\0\x90\x04`\xFF\x16\x15a\0\xF6W`@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[_T`\xFF\x90\x81\x16\x14a\x01EW_\x80T`\xFF\x19\x16`\xFF\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90` \x01`@Q\x80\x91\x03\x90\xA1[V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01[W__\xFD[PV[_______`\xE0\x88\x8A\x03\x12\x15a\x01tW__\xFD[\x87Qa\x01\x7F\x81a\x01GV[` \x89\x01Q\x90\x97Pa\x01\x90\x81a\x01GV[`@\x89\x01Q\x90\x96Pa\x01\xA1\x81a\x01GV[``\x89\x01Q\x90\x95Pa\x01\xB2\x81a\x01GV[`\x80\x89\x01Q\x90\x94Pa\x01\xC3\x81a\x01GV[`\xA0\x89\x01Q\x90\x93Pa\x01\xD4\x81a\x01GV[`\xC0\x89\x01Q\x90\x92Pa\x01\xE5\x81a\x01GV[\x80\x91PP\x92\x95\x98\x91\x94\x97P\x92\x95PV[`\x80Q`\xA0Q`\xC0Q`\xE0Qa\x01\0Qa\x01 Qa\x01@Qa&\xC1a\x02\xEE_9_\x81\x81a\x02\xCE\x01Ra\t=\x01R_\x81\x81a\x03P\x01R\x81\x81a\x03\xD6\x01R\x81\x81a\x04b\x01R\x81\x81a\x0B\xF4\x01Ra\x0FI\x01R_\x81\x81a\x06\x89\x01R\x81\x81a\x07\xD4\x01R\x81\x81a\x08h\x01R\x81\x81a\x10\xFA\x01R\x81\x81a\x12l\x01Ra\x13\x08\x01R_\x81\x81a\x04\x9E\x01R\x81\x81a\x05J\x01R\x81\x81a\x05\xC8\x01R\x81\x81a\x0B\x18\x01R\x81\x81a\x0EL\x01R\x81\x81a\x0F\x8F\x01R\x81\x81a\x10:\x01Ra\x11\xCA\x01R_\x81\x81a\x0CJ\x01R\x81\x81a\r\x82\x01R\x81\x81a\x0E\x08\x01R\x81\x81a\x14\xAC\x01Ra\x157\x01R_a\x10\0\x01R_\x81\x81a\x01\xEB\x01R\x81\x81a\x0Bm\x01R\x81\x81a\x0E\xA1\x01Ra\x0E\xF5\x01Ra&\xC1_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\x01HW_5`\xE0\x1C\x80c\x9D\xA1m\x8E\x11a\0\xBFW\x80c\xC1\xA8\xE2\xC5\x11a\0yW\x80c\xC1\xA8\xE2\xC5\x14a\x02\xB6W\x80c\xC3\xFC\x91\xEA\x14a\x02\xC9W\x80c\xE4\x81\xAF\x9D\x14a\x02\xF0W\x80c\xF2\xFD\xE3\x8B\x14a\x02\xF8W\x80c\xFC)\x9D\xEE\x14a\x03\x0BW\x80c\xFC\xE3l}\x14a\x03\x1EW__\xFD[\x80c\x9D\xA1m\x8E\x14a\x02DW\x80c\xA0\x16\x9D\xDD\x14a\x02WW\x80c\xA2\x0B\x99\xBF\x14a\x02jW\x80c\xA3d\xF4\xDA\x14a\x02}W\x80c\xA9\x8F\xB3U\x14a\x02\x90W\x80c\xBAU\x08\x80\x14a\x02\xA3W__\xFD[\x80c;\xC2\x8C\x8C\x11a\x01\x10W\x80c;\xC2\x8C\x8C\x14a\x01\xC3W\x80cH\\\xC9U\x14a\x01\xD6W\x80ck:\xA7.\x14a\x01\xE9W\x80cqP\x18\xA6\x14a\x02\x18W\x80c\x8D\xA5\xCB[\x14a\x02 W\x80c\x99&\xEE}\x14a\x021W__\xFD[\x80c\x17\x85\xF5<\x14a\x01LW\x80c\x1F\xDB\x0C\xFD\x14a\x01aW\x80c'\x942\xEB\x14a\x01tW\x80c3\xCF\xB7\xB7\x14a\x01\x87W\x80c8\xC8\xEEd\x14a\x01\xB0W[__\xFD[a\x01_a\x01Z6`\x04a\x1B\xA6V[a\x031V[\0[a\x01_a\x01o6`\x04a\x1B\xC8V[a\x03\xB7V[a\x01_a\x01\x826`\x04a\x1B\xA6V[a\x04CV[a\x01\x9Aa\x01\x956`\x04a\x1B\xA6V[a\x04\x99V[`@Qa\x01\xA7\x91\x90a\x1C\x1CV[`@Q\x80\x91\x03\x90\xF3[a\x01_a\x01\xBE6`\x04a\x1B\xA6V[a\t2V[a\x01_a\x01\xD16`\x04a\x1B\xA6V[a\t\xDAV[a\x01_a\x01\xE46`\x04a\x1CgV[a\t\xEBV[\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[`@Qa\x01\xA7\x91\x90a\x1C\x9EV[a\x01_a\n\xFAV[`3T`\x01`\x01`\xA0\x1B\x03\x16a\x02\x0BV[a\x01_a\x02?6`\x04a\x1DvV[a\x0B\rV[a\x01_a\x02R6`\x04a\x1B\xA6V[a\x0B\xD5V[a\x01_a\x02e6`\x04a\x1B\xA6V[a\x0C+V[a\x01_a\x02x6`\x04a\x1EeV[a\x0C\x7FV[a\x01_a\x02\x8B6`\x04a\x1B\xA6V[a\x0EAV[a\x01_a\x02\x9E6`\x04a\x1E\xA3V[a\x0E\xD6V[a\x01_a\x02\xB16`\x04a\x1B\xC8V[a\x0F*V[a\x01_a\x02\xC46`\x04a\x1E\xFFV[a\x0F\x84V[a\x02\x0B\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[a\x01\x9Aa\x105V[a\x01_a\x03\x066`\x04a\x1B\xA6V[a\x13\xCEV[`eTa\x02\x0B\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x01_a\x03,6`\x04a\x1EeV[a\x14DV[a\x039a\x15nV[`@Qc&\x89Y\xE5`\xE0\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\x90c&\x89Y\xE5\x90a\x03\x87\x900\x90\x85\x90`\x04\x01a\x1F\xC1V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03\x9EW__\xFD[PZ\xF1\x15\x80\x15a\x03\xB0W=__>=_\xFD[PPPPPV[a\x03\xBFa\x15nV[`@QcJ\x86\xC07`\xE1\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\x90c\x95\r\x80n\x90a\x04\x11\x900\x90\x87\x90\x87\x90\x87\x90`\x04\x01a\x1F\xDBV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x04(W__\xFD[PZ\xF1\x15\x80\x15a\x04:W=__>=_\xFD[PPPPPPPV[a\x04Ka\x15nV[`@Qc\xEBZN\x87`\xE0\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\x90c\xEBZN\x87\x90a\x03\x87\x900\x90\x85\x90`\x04\x01a\x1F\xC1V[``_\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\x13T*N\x84`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x04\xE8\x91\x90a\x1C\x9EV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05\x03W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05'\x91\x90a \x0EV[`@Qc\x87\x1E\xF0I`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R\x90\x91P_\x90`\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\x90c\x87\x1E\xF0I\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05\x8FW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xB3\x91\x90a %V[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16\x15\x80a\x06KWP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\x9A\xA1e=`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\"W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06F\x91\x90a KV[`\xFF\x16\x15[\x15a\x06fWPP`@\x80Q_\x81R` \x81\x01\x90\x91R\x92\x91PPV[_a\x06y\x82`\x01`\x01`\xC0\x1B\x03\x16a\x15\xC8V[\x90P_\x80[\x82Q\x81\x10\x15a\x07BW\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<\xA5\xA5\xF5\x84\x83\x81Q\x81\x10a\x06\xC8Wa\x06\xC8a kV[\x01` \x01Q`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x84\x90\x1B\x16\x81R`\xF8\x91\x90\x91\x1C`\x04\x82\x01R`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07\nW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07.\x91\x90a \x0EV[a\x078\x90\x83a \x93V[\x91P`\x01\x01a\x06~V[P_\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\x07\\Wa\x07\\a\x1C\xB2V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07\x85W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_\x80[\x84Q\x81\x10\x15a\t%W_\x85\x82\x81Q\x81\x10a\x07\xA7Wa\x07\xA7a kV[\x01` \x01Q`@Qc<\xA5\xA5\xF5`\xE0\x1B\x81R`\xF8\x91\x90\x91\x1C`\x04\x82\x01\x81\x90R\x91P_\x90`\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\x90c<\xA5\xA5\xF5\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x08\x19W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08=\x91\x90a \x0EV[\x90P_[\x81\x81\x10\x15a\t\x1AW`@QcV\xE4\x02m`\xE1\x1B\x81R`\xFF\x84\x16`\x04\x82\x01R`$\x81\x01\x82\x90R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x90c\xAD\xC8\x04\xDA\x90`D\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x08\xB4W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xD8\x91\x90a \xBAV[_\x01Q\x86\x86\x81Q\x81\x10a\x08\xEDWa\x08\xEDa kV[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x84a\t\x0F\x81a!\x18V[\x95PP`\x01\x01a\x08AV[PPP`\x01\x01a\x07\x8BV[P\x90\x97\x96PPPPPPPV[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\t\xD7W`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R\x7FonlySquaringTaskManager: not fro`D\x82\x01R\x7Fm credible squaring task manager`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[PV[a\t\xE2a\x15nV[a\t\xD7\x81a\x16\x87V[_Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\n\tWP_T`\x01`\xFF\x90\x91\x16\x10[\x80a\n\"WP0;\x15\x80\x15a\n\"WP_T`\xFF\x16`\x01\x14[a\n\x85W`@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\t\xCEV[_\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\n\xA6W_\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\n\xB0\x83\x83a\x16\xF0V[\x80\x15a\n\xF5W_\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[PPPV[a\x0B\x02a\x15nV[a\x0B\x0B_a\x17pV[V[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x0BVW`@QcC\x94\xDB\xDF`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Qc\x99&\xEE}`\xE0\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\x90c\x99&\xEE}\x90a\x0B\xA4\x90\x85\x90\x85\x90`\x04\x01a!}V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x0B\xBBW__\xFD[PZ\xF1\x15\x80\x15a\x0B\xCDW=__>=_\xFD[PPPPPPV[a\x0B\xDDa\x15nV[`@QcO\x90l\xF9`\xE0\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\x90cO\x90l\xF9\x90a\x03\x87\x900\x90\x85\x90`\x04\x01a\x1F\xC1V[a\x0C3a\x15nV[`@Qc\xA0\x16\x9D\xDD`\xE0\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\x90c\xA0\x16\x9D\xDD\x90a\x03\x87\x90\x84\x90`\x04\x01a\x1C\x9EV[a\x0C\x87a\x17\xC1V[_[\x81\x81\x10\x15a\r\xF0W_\x80[\x84\x84\x84\x81\x81\x10a\x0C\xA6Wa\x0C\xA6a kV[\x90P` \x02\x81\x01\x90a\x0C\xB8\x91\x90a!\xC7V[a\x0C\xC6\x90`@\x81\x01\x90a!\xE5V[\x90P\x81\x10\x15a\r0W\x84\x84\x84\x81\x81\x10a\x0C\xE1Wa\x0C\xE1a kV[\x90P` \x02\x81\x01\x90a\x0C\xF3\x91\x90a!\xC7V[a\r\x01\x90`@\x81\x01\x90a!\xE5V[\x82\x81\x81\x10a\r\x11Wa\r\x11a kV[\x90P`@\x02\x01` \x015\x82a\r&\x91\x90a \x93V[\x91P`\x01\x01a\x0C\x94V[Pa\r}30\x83\x87\x87\x87\x81\x81\x10a\rIWa\rIa kV[\x90P` \x02\x81\x01\x90a\r[\x91\x90a!\xC7V[a\rl\x90`@\x81\x01\x90` \x01a\x1B\xA6V[`\x01`\x01`\xA0\x1B\x03\x16\x92\x91\x90a\x17\xECV[a\r\xE7\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\x82\x86\x86\x86\x81\x81\x10a\r\xB4Wa\r\xB4a kV[\x90P` \x02\x81\x01\x90a\r\xC6\x91\x90a!\xC7V[a\r\xD7\x90`@\x81\x01\x90` \x01a\x1B\xA6V[`\x01`\x01`\xA0\x1B\x03\x16\x91\x90a\x18]V[P`\x01\x01a\x0C\x89V[P`@QcN\\\xD2\xFD`\xE1\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\x90c\x9C\xB9\xA5\xFA\x90a\x0B\xA4\x900\x90\x86\x90\x86\x90`\x04\x01a#;V[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x0E\x8AW`@QcC\x94\xDB\xDF`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@QcQ\xB2zm`\xE1\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\x90c\xA3d\xF4\xDA\x90a\x03\x87\x90\x84\x90`\x04\x01a\x1C\x9EV[a\x0E\xDEa\x15nV[`@Qc\xA9\x8F\xB3U`\xE0\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\x90c\xA9\x8F\xB3U\x90a\x03\x87\x90\x84\x90`\x04\x01a$\xAAV[a\x0F2a\x15nV[`@Qc\x06d\x12\x01`\xE0\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\x90c\x06d\x12\x01\x90a\x04\x11\x900\x90\x87\x90\x87\x90\x87\x90`\x04\x01a\x1F\xDBV[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x0F\xCDW`@QcC\x94\xDB\xDF`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q``\x81\x01\x82R`\x01`\x01`\xA0\x1B\x03\x80\x85\x16\x82R0` \x83\x01R\x81\x83\x01\x84\x90R\x91Qcn4\x92\xB5`\xE0\x1B\x81R\x90\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\x16\x90cn4\x92\xB5\x90a\x04\x11\x90\x84\x90`\x04\x01a$\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\x9A\xA1e=`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x10\x94W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x10\xB8\x91\x90a KV[`\xFF\x16\x90P\x80_\x03a\x10\xD7WPP`@\x80Q_\x81R` \x81\x01\x90\x91R\x90V[_\x80[\x82\x81\x10\x15a\x11\x7FW`@Qc<\xA5\xA5\xF5`\xE0\x1B\x81R`\xFF\x82\x16`\x04\x82\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`\x01`\x01`\xA0\x1B\x03\x16\x90c<\xA5\xA5\xF5\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11GW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11k\x91\x90a \x0EV[a\x11u\x90\x83a \x93V[\x91P`\x01\x01a\x10\xDAV[P_\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\x11\x99Wa\x11\x99a\x1C\xB2V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x11\xC2W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_\x80[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\x9A\xA1e=`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x12$W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x12H\x91\x90a KV[`\xFF\x16\x81\x10\x15a\x13\xC4W`@Qc<\xA5\xA5\xF5`\xE0\x1B\x81R`\xFF\x82\x16`\x04\x82\x01R_\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x90c<\xA5\xA5\xF5\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x12\xB9W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x12\xDD\x91\x90a \x0EV[\x90P_[\x81\x81\x10\x15a\x13\xBAW`@QcV\xE4\x02m`\xE1\x1B\x81R`\xFF\x84\x16`\x04\x82\x01R`$\x81\x01\x82\x90R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x90c\xAD\xC8\x04\xDA\x90`D\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x13TW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x13x\x91\x90a \xBAV[_\x01Q\x85\x85\x81Q\x81\x10a\x13\x8DWa\x13\x8Da kV[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x83a\x13\xAF\x81a!\x18V[\x94PP`\x01\x01a\x12\xE1V[PP`\x01\x01a\x11\xC8V[P\x90\x94\x93PPPPV[a\x13\xD6a\x15nV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x14;W`@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\t\xCEV[a\t\xD7\x81a\x17pV[a\x14La\x17\xC1V[_[\x81\x81\x10\x15a\x15\x1FWa\x14\xA730\x85\x85\x85\x81\x81\x10a\x14mWa\x14ma kV[\x90P` \x02\x81\x01\x90a\x14\x7F\x91\x90a%4V[`@\x015\x86\x86\x86\x81\x81\x10a\x14\x95Wa\x14\x95a kV[\x90P` \x02\x81\x01\x90a\r[\x91\x90a%4V[a\x15\x17\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\x84\x84\x84\x81\x81\x10a\x14\xDDWa\x14\xDDa kV[\x90P` \x02\x81\x01\x90a\x14\xEF\x91\x90a%4V[`@\x015\x85\x85\x85\x81\x81\x10a\x15\x05Wa\x15\x05a kV[\x90P` \x02\x81\x01\x90a\r\xC6\x91\x90a%4V[`\x01\x01a\x14NV[P`@Qc\xFC\xE3l}`\xE0\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\x90c\xFC\xE3l}\x90a\x0B\xA4\x90\x85\x90\x85\x90`\x04\x01a%HV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x0B\x0BW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\t\xCEV[``__a\x15\xD5\x84a\x19\x05V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a\x15\xF0Wa\x15\xF0a\x1C\xB2V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x16\x1AW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_\x80[\x82Q\x82\x10\x80\x15a\x161WPa\x01\0\x81\x10[\x15a\x13\xC4W`\x01\x81\x1B\x93P\x85\x84\x16\x15a\x16wW\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a\x16ZWa\x16Za kV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP\x81`\x01\x01\x91P[a\x16\x80\x81a!\x18V[\x90Pa\x16 V[`eT`@Q\x7F\xE1\x1C\xDD\xF1\x81jC1\x8C\xA1u\xBB\xC5,\xD0\x18T6\xE9\xCB\xEA\xD7\xC8:\xCCT\xA7>F\x17\x17\xE3\x91a\x16\xC6\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90\x84\x90a\x1F\xC1V[`@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[_Ta\x01\0\x90\x04`\xFF\x16a\x17ZW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`+`$\x82\x01R\x7FInitializable: contract is not i`D\x82\x01Rjnitializing`\xA8\x1B`d\x82\x01R`\x84\x01a\t\xCEV[a\x17c\x82a\x17pV[a\x17l\x81a\x16\x87V[PPV[`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_\x90\xA3PPV[`eT`\x01`\x01`\xA0\x1B\x03\x163\x14a\x0B\x0BW`@Qc\x8Ey\xFD\xB5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`$\x83\x01R\x83\x16`D\x82\x01R`d\x81\x01\x82\x90Ra\x18W\x90\x85\x90c#\xB8r\xDD`\xE0\x1B\x90`\x84\x01[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16`\x01`\x01`\xE0\x1B\x03\x19\x90\x93\x16\x92\x90\x92\x17\x90\x91Ra\x195V[PPPPV[`@Qcn\xB1v\x9F`\xE1\x1B\x81R_\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\xDDb\xED>\x90a\x18\x8D\x900\x90\x87\x90`\x04\x01a\x1F\xC1V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x18\xA8W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x18\xCC\x91\x90a \x0EV[\x90Pa\x18W\x84c\t^\xA7\xB3`\xE0\x1B\x85a\x18\xE5\x86\x86a \x93V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16`$\x83\x01R`D\x82\x01R`d\x01a\x18 V[_\x80[\x82\x15a\x19/Wa\x19\x19`\x01\x84a&(V[\x90\x92\x16\x91\x80a\x19'\x81a&;V[\x91PPa\x19\x08V[\x92\x91PPV[_a\x19\x89\x82`@Q\x80`@\x01`@R\x80` \x81R` \x01\x7FSafeERC20: low-level call failed\x81RP\x85`\x01`\x01`\xA0\x1B\x03\x16a\x1A\x08\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x90P\x80Q_\x14\x80a\x19\xA9WP\x80\x80` \x01\x90Q\x81\x01\x90a\x19\xA9\x91\x90a&[V[a\n\xF5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`*`$\x82\x01R\x7FSafeERC20: ERC20 operation did n`D\x82\x01Ri\x1B\xDD\x08\x1C\xDDX\xD8\xD9YY`\xB2\x1B`d\x82\x01R`\x84\x01a\t\xCEV[``a\x1A\x16\x84\x84_\x85a\x1A\x1EV[\x94\x93PPPPV[``\x82G\x10\x15a\x1A\x7FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FAddress: insufficient balance fo`D\x82\x01Re\x1C\x88\x18\xD8[\x1B`\xD2\x1B`d\x82\x01R`\x84\x01a\t\xCEV[__\x86`\x01`\x01`\xA0\x1B\x03\x16\x85\x87`@Qa\x1A\x9A\x91\x90a&zV[_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x1A\xD4W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1A\xD9V[``\x91P[P\x91P\x91Pa\x1A\xEA\x87\x83\x83\x87a\x1A\xF5V[\x97\x96PPPPPPPV[``\x83\x15a\x1BcW\x82Q_\x03a\x1B\\W`\x01`\x01`\xA0\x1B\x03\x85\x16;a\x1B\\W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: call to non-contract\0\0\0`D\x82\x01R`d\x01a\t\xCEV[P\x81a\x1A\x16V[a\x1A\x16\x83\x83\x81Q\x15a\x1BxW\x81Q\x80\x83` \x01\xFD[\x80`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\t\xCE\x91\x90a$\xAAV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\t\xD7W__\xFD[_` \x82\x84\x03\x12\x15a\x1B\xB6W__\xFD[\x815a\x1B\xC1\x81a\x1B\x92V[\x93\x92PPPV[___``\x84\x86\x03\x12\x15a\x1B\xDAW__\xFD[\x835a\x1B\xE5\x81a\x1B\x92V[\x92P` \x84\x015a\x1B\xF5\x81a\x1B\x92V[\x91P`@\x84\x015`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\x1C\x11W__\xFD[\x80\x91PP\x92P\x92P\x92V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x84\x01\x90`@\x84\x01\x90\x83[\x81\x81\x10\x15a\x1C\\W\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a\x1C5V[P\x90\x95\x94PPPPPV[__`@\x83\x85\x03\x12\x15a\x1CxW__\xFD[\x825a\x1C\x83\x81a\x1B\x92V[\x91P` \x83\x015a\x1C\x93\x81a\x1B\x92V[\x80\x91PP\x92P\x92\x90PV[`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x81R` \x01\x90V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x1C\xE8Wa\x1C\xE8a\x1C\xB2V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x1D\x16Wa\x1D\x16a\x1C\xB2V[`@R\x91\x90PV[__`\x01`\x01`@\x1B\x03\x84\x11\x15a\x1D7Wa\x1D7a\x1C\xB2V[P`\x1F\x83\x01`\x1F\x19\x16` \x01a\x1DL\x81a\x1C\xEEV[\x91PP\x82\x81R\x83\x83\x83\x01\x11\x15a\x1D`W__\xFD[\x82\x82` \x83\x017_` \x84\x83\x01\x01R\x93\x92PPPV[__`@\x83\x85\x03\x12\x15a\x1D\x87W__\xFD[\x825a\x1D\x92\x81a\x1B\x92V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1D\xACW__\xFD[\x83\x01``\x81\x86\x03\x12\x15a\x1D\xBDW__\xFD[a\x1D\xC5a\x1C\xC6V[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1D\xDAW__\xFD[\x82\x01`\x1F\x81\x01\x87\x13a\x1D\xEAW__\xFD[a\x1D\xF9\x87\x825` \x84\x01a\x1D\x1EV[\x82RP` \x82\x81\x015\x90\x82\x01R`@\x91\x82\x015\x91\x81\x01\x91\x90\x91R\x91\x94\x91\x93P\x90\x91PPV[__\x83`\x1F\x84\x01\x12a\x1E.W__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1EDW__\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x1E^W__\xFD[\x92P\x92\x90PV[__` \x83\x85\x03\x12\x15a\x1EvW__\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1E\x8BW__\xFD[a\x1E\x97\x85\x82\x86\x01a\x1E\x1EV[\x90\x96\x90\x95P\x93PPPPV[_` \x82\x84\x03\x12\x15a\x1E\xB3W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1E\xC8W__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a\x1E\xD8W__\xFD[a\x1A\x16\x84\x825` \x84\x01a\x1D\x1EV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1E\xFAW__\xFD[\x91\x90PV[__`@\x83\x85\x03\x12\x15a\x1F\x10W__\xFD[\x825a\x1F\x1B\x81a\x1B\x92V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1F5W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\x1FEW__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1F^Wa\x1F^a\x1C\xB2V[\x80`\x05\x1Ba\x1Fn` \x82\x01a\x1C\xEEV[\x91\x82R` \x81\x84\x01\x81\x01\x92\x90\x81\x01\x90\x88\x84\x11\x15a\x1F\x89W__\xFD[` \x85\x01\x94P[\x83\x85\x10\x15a\x1F\xB2Wa\x1F\xA1\x85a\x1E\xE7V[\x82R` \x94\x85\x01\x94\x90\x91\x01\x90a\x1F\x90V[\x80\x95PPPPPP\x92P\x92\x90PV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x16` \x82\x01R`@\x01\x90V[`\x01`\x01`\xA0\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x84\x01R\x92\x16`@\x82\x01R`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16``\x82\x01R`\x80\x01\x90V[_` \x82\x84\x03\x12\x15a \x1EW__\xFD[PQ\x91\x90PV[_` \x82\x84\x03\x12\x15a 5W__\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a\x1B\xC1W__\xFD[_` \x82\x84\x03\x12\x15a [W__\xFD[\x81Q`\xFF\x81\x16\x81\x14a\x1B\xC1W__\xFD[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x19/Wa\x19/a \x7FV[`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\t\xD7W__\xFD[_`@\x82\x84\x03\x12\x80\x15a \xCBW__\xFD[P`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a \xEEWa \xEEa\x1C\xB2V[`@R\x82Qa \xFC\x81a\x1B\x92V[\x81R` \x83\x01Qa!\x0C\x81a \xA6V[` \x82\x01R\x93\x92PPPV[_`\x01\x82\x01a!)Wa!)a \x7FV[P`\x01\x01\x90V[_[\x83\x81\x10\x15a!JW\x81\x81\x01Q\x83\x82\x01R` \x01a!2V[PP_\x91\x01RV[_\x81Q\x80\x84Ra!i\x81` \x86\x01` \x86\x01a!0V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x01\x80`\xA0\x1B\x03\x83\x16\x81R`@` \x82\x01R_\x82Q```@\x84\x01Ra!\xA6`\xA0\x84\x01\x82a!RV[\x90P` \x84\x01Q``\x84\x01R`@\x84\x01Q`\x80\x84\x01R\x80\x91PP\x93\x92PPPV[_\x825`\xBE\x19\x836\x03\x01\x81\x12a!\xDBW__\xFD[\x91\x90\x91\x01\x92\x91PPV[__\x835`\x1E\x19\x846\x03\x01\x81\x12a!\xFAW__\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15a\"\x13W__\xFD[` \x01\x91P`\x06\x81\x90\x1B6\x03\x82\x13\x15a\x1E^W__\xFD[__\x835`\x1E\x19\x846\x03\x01\x81\x12a\"?W__\xFD[\x83\x01` \x81\x01\x92P5\x90P`\x01`\x01`@\x1B\x03\x81\x11\x15a\"]W__\xFD[\x80`\x06\x1B6\x03\x82\x13\x15a\x1E^W__\xFD[\x81\x83R` \x83\x01\x92P_\x81_[\x84\x81\x10\x15a\"\xC8W\x815a\"\x8E\x81a\x1B\x92V[`\x01`\x01`\xA0\x1B\x03\x16\x86R` \x82\x015a\"\xA7\x81a \xA6V[`\x01`\x01``\x1B\x03\x16` \x87\x01R`@\x95\x86\x01\x95\x91\x90\x91\x01\x90`\x01\x01a\"{V[P\x93\x94\x93PPPPV[__\x835`\x1E\x19\x846\x03\x01\x81\x12a\"\xE7W__\xFD[\x83\x01` \x81\x01\x92P5\x90P`\x01`\x01`@\x1B\x03\x81\x11\x15a#\x05W__\xFD[\x806\x03\x82\x13\x15a\x1E^W__\xFD[\x81\x83R\x81\x81` \x85\x017P_\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1F\x90\x91\x01`\x1F\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xA0\x1B\x03\x84\x16\x81R`@` \x82\x01\x81\x90R\x81\x01\x82\x90R_```\x05\x84\x90\x1B\x83\x01\x81\x01\x90\x83\x01\x85\x83`\xBE\x196\x83\x90\x03\x01[\x87\x82\x10\x15a$\x9CW\x86\x85\x03`_\x19\x01\x84R\x825\x81\x81\x12a#\x8DW__\xFD[\x89\x01a#\x99\x81\x80a\"*V[`\xC0\x88Ra#\xAB`\xC0\x89\x01\x82\x84a\"nV[\x91PP` \x82\x015a#\xBC\x81a\x1B\x92V[`\x01`\x01`\xA0\x1B\x03\x16` \x88\x01Ra#\xD7`@\x83\x01\x83a\"*V[\x88\x83\x03`@\x8A\x01R\x80\x83R\x90\x91_\x91\x90` \x01[\x81\x83\x10\x15a$&W\x835a#\xFE\x81a\x1B\x92V[`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x84\x81\x015\x90\x82\x01R`@\x93\x84\x01\x93`\x01\x93\x90\x93\x01\x92\x01a#\xEBV[a$2``\x86\x01a\x1E\xE7V[c\xFF\xFF\xFF\xFF\x81\x16``\x8C\x01R\x93Pa$L`\x80\x86\x01a\x1E\xE7V[c\xFF\xFF\xFF\xFF\x81\x16`\x80\x8C\x01R\x93Pa$g`\xA0\x86\x01\x86a\"\xD2V[\x95P\x93P\x89\x81\x03`\xA0\x8B\x01Ra$~\x81\x86\x86a#\x13V[\x99PPPPPP` \x83\x01\x92P` \x84\x01\x93P`\x01\x82\x01\x91Pa#oV[P\x92\x98\x97PPPPPPPPV[` \x81R_a\x1B\xC1` \x83\x01\x84a!RV[` \x80\x82R\x82Q`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x83\x83\x01R\x83\x82\x01Q\x16`@\x80\x84\x01\x91\x90\x91R\x83\x01Q``\x80\x84\x01R\x80Q`\x80\x84\x01\x81\x90R_\x92\x91\x90\x91\x01\x90\x82\x90`\xA0\x85\x01\x90[\x80\x83\x10\x15a%*Wc\xFF\xFF\xFF\xFF\x84Q\x16\x82R` \x82\x01\x91P` \x84\x01\x93P`\x01\x83\x01\x92Pa%\x01V[P\x95\x94PPPPPV[_\x825`\x9E\x19\x836\x03\x01\x81\x12a!\xDBW__\xFD[` \x80\x82R\x81\x01\x82\x90R_`@`\x05\x84\x90\x1B\x83\x01\x81\x01\x90\x83\x01\x85\x83`\x9E\x196\x83\x90\x03\x01[\x87\x82\x10\x15a&\x1BW\x86\x85\x03`?\x19\x01\x84R\x825\x81\x81\x12a%\x8AW__\xFD[\x89\x01a%\x96\x81\x80a\"*V[`\xA0\x88Ra%\xA8`\xA0\x89\x01\x82\x84a\"nV[\x91PP` \x82\x015a%\xB9\x81a\x1B\x92V[`\x01`\x01`\xA0\x1B\x03\x16` \x88\x01R`@\x82\x81\x015\x90\x88\x01Rc\xFF\xFF\xFF\xFFa%\xE2``\x84\x01a\x1E\xE7V[\x16``\x88\x01Rc\xFF\xFF\xFF\xFFa%\xF9`\x80\x84\x01a\x1E\xE7V[\x16`\x80\x88\x01R\x80\x96PPP` \x83\x01\x92P` \x84\x01\x93P`\x01\x82\x01\x91Pa%lV[P\x92\x97\x96PPPPPPPV[\x81\x81\x03\x81\x81\x11\x15a\x19/Wa\x19/a \x7FV[_a\xFF\xFF\x82\x16a\xFF\xFF\x81\x03a&RWa&Ra \x7FV[`\x01\x01\x92\x91PPV[_` \x82\x84\x03\x12\x15a&kW__\xFD[\x81Q\x80\x15\x15\x81\x14a\x1B\xC1W__\xFD[_\x82Qa!\xDB\x81\x84` \x87\x01a!0V\xFE\xA2dipfsX\"\x12 \x1C=\x80r\xCE\xCC+\xA1\x8Cp\xF3K\xE2\xC8yF-N#p\xC9&\x18\x16S\xCCy\xE0\xDE\xE4\xB2\xF2dsolcC\0\x08\x1B\x003",
2320    );
2321    /// The runtime bytecode of the contract, as deployed on the network.
2322    ///
2323    /// ```text
2324    ///0x608060405234801561000f575f5ffd5b5060043610610148575f3560e01c80639da16d8e116100bf578063c1a8e2c511610079578063c1a8e2c5146102b6578063c3fc91ea146102c9578063e481af9d146102f0578063f2fde38b146102f8578063fc299dee1461030b578063fce36c7d1461031e575f5ffd5b80639da16d8e14610244578063a0169ddd14610257578063a20b99bf1461026a578063a364f4da1461027d578063a98fb35514610290578063ba550880146102a3575f5ffd5b80633bc28c8c116101105780633bc28c8c146101c3578063485cc955146101d65780636b3aa72e146101e9578063715018a6146102185780638da5cb5b146102205780639926ee7d14610231575f5ffd5b80631785f53c1461014c5780631fdb0cfd14610161578063279432eb1461017457806333cfb7b71461018757806338c8ee64146101b0575b5f5ffd5b61015f61015a366004611ba6565b610331565b005b61015f61016f366004611bc8565b6103b7565b61015f610182366004611ba6565b610443565b61019a610195366004611ba6565b610499565b6040516101a79190611c1c565b60405180910390f35b61015f6101be366004611ba6565b610932565b61015f6101d1366004611ba6565b6109da565b61015f6101e4366004611c67565b6109eb565b7f00000000000000000000000000000000000000000000000000000000000000005b6040516101a79190611c9e565b61015f610afa565b6033546001600160a01b031661020b565b61015f61023f366004611d76565b610b0d565b61015f610252366004611ba6565b610bd5565b61015f610265366004611ba6565b610c2b565b61015f610278366004611e65565b610c7f565b61015f61028b366004611ba6565b610e41565b61015f61029e366004611ea3565b610ed6565b61015f6102b1366004611bc8565b610f2a565b61015f6102c4366004611eff565b610f84565b61020b7f000000000000000000000000000000000000000000000000000000000000000081565b61019a611035565b61015f610306366004611ba6565b6113ce565b60655461020b906001600160a01b031681565b61015f61032c366004611e65565b611444565b61033961156e565b60405163268959e560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063268959e5906103879030908590600401611fc1565b5f604051808303815f87803b15801561039e575f5ffd5b505af11580156103b0573d5f5f3e3d5ffd5b5050505050565b6103bf61156e565b604051634a86c03760e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063950d806e90610411903090879087908790600401611fdb565b5f604051808303815f87803b158015610428575f5ffd5b505af115801561043a573d5f5f3e3d5ffd5b50505050505050565b61044b61156e565b60405163eb5a4e8760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063eb5a4e87906103879030908590600401611fc1565b60605f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166313542a4e846040518263ffffffff1660e01b81526004016104e89190611c9e565b602060405180830381865afa158015610503573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610527919061200e565b60405163871ef04960e01b8152600481018290529091505f906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063871ef04990602401602060405180830381865afa15801561058f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105b39190612025565b90506001600160c01b038116158061064b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610622573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610646919061204b565b60ff16155b15610666575050604080515f81526020810190915292915050565b5f610679826001600160c01b03166115c8565b90505f805b8251811015610742577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633ca5a5f58483815181106106c8576106c861206b565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa15801561070a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061072e919061200e565b6107389083612093565b915060010161067e565b505f816001600160401b0381111561075c5761075c611cb2565b604051908082528060200260200182016040528015610785578160200160208202803683370190505b5090505f805b8451811015610925575f8582815181106107a7576107a761206b565b0160200151604051633ca5a5f560e01b815260f89190911c6004820181905291505f906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633ca5a5f590602401602060405180830381865afa158015610819573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061083d919061200e565b90505f5b8181101561091a576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa1580156108b4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108d891906120ba565b5f01518686815181106108ed576108ed61206b565b6001600160a01b03909216602092830291909101909101528461090f81612118565b955050600101610841565b50505060010161078b565b5090979650505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109d7576040805162461bcd60e51b81526020600482015260248101919091527f6f6e6c795371756172696e675461736b4d616e616765723a206e6f742066726f60448201527f6d206372656469626c65207371756172696e67207461736b206d616e6167657260648201526084015b60405180910390fd5b50565b6109e261156e565b6109d781611687565b5f54610100900460ff1615808015610a0957505f54600160ff909116105b80610a225750303b158015610a2257505f5460ff166001145b610a855760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016109ce565b5f805460ff191660011790558015610aa6575f805461ff0019166101001790555b610ab083836116f0565b8015610af5575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b610b0261156e565b610b0b5f611770565b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b5657604051634394dbdf60e11b815260040160405180910390fd5b604051639926ee7d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639926ee7d90610ba4908590859060040161217d565b5f604051808303815f87803b158015610bbb575f5ffd5b505af1158015610bcd573d5f5f3e3d5ffd5b505050505050565b610bdd61156e565b604051634f906cf960e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690634f906cf9906103879030908590600401611fc1565b610c3361156e565b60405163a0169ddd60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a0169ddd90610387908490600401611c9e565b610c876117c1565b5f5b81811015610df0575f805b848484818110610ca657610ca661206b565b9050602002810190610cb891906121c7565b610cc69060408101906121e5565b9050811015610d3057848484818110610ce157610ce161206b565b9050602002810190610cf391906121c7565b610d019060408101906121e5565b82818110610d1157610d1161206b565b9050604002016020013582610d269190612093565b9150600101610c94565b50610d7d333083878787818110610d4957610d4961206b565b9050602002810190610d5b91906121c7565b610d6c906040810190602001611ba6565b6001600160a01b03169291906117ec565b610de77f000000000000000000000000000000000000000000000000000000000000000082868686818110610db457610db461206b565b9050602002810190610dc691906121c7565b610dd7906040810190602001611ba6565b6001600160a01b0316919061185d565b50600101610c89565b50604051634e5cd2fd60e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639cb9a5fa90610ba49030908690869060040161233b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610e8a57604051634394dbdf60e11b815260040160405180910390fd5b6040516351b27a6d60e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da90610387908490600401611c9e565b610ede61156e565b60405163a98fb35560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a98fb355906103879084906004016124aa565b610f3261156e565b604051630664120160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690630664120190610411903090879087908790600401611fdb565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610fcd57604051634394dbdf60e11b815260040160405180910390fd5b604080516060810182526001600160a01b0380851682523060208301528183018490529151636e3492b560e01b815290917f00000000000000000000000000000000000000000000000000000000000000001690636e3492b5906104119084906004016124bc565b60605f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611094573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110b8919061204b565b60ff169050805f036110d7575050604080515f81526020810190915290565b5f805b8281101561117f57604051633ca5a5f560e01b815260ff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015611147573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061116b919061200e565b6111759083612093565b91506001016110da565b505f816001600160401b0381111561119957611199611cb2565b6040519080825280602002602001820160405280156111c2578160200160208202803683370190505b5090505f805b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611224573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611248919061204b565b60ff168110156113c457604051633ca5a5f560e01b815260ff821660048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa1580156112b9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112dd919061200e565b90505f5b818110156113ba576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa158015611354573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061137891906120ba565b5f015185858151811061138d5761138d61206b565b6001600160a01b0390921660209283029190910190910152836113af81612118565b9450506001016112e1565b50506001016111c8565b5090949350505050565b6113d661156e565b6001600160a01b03811661143b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109ce565b6109d781611770565b61144c6117c1565b5f5b8181101561151f576114a7333085858581811061146d5761146d61206b565b905060200281019061147f9190612534565b604001358686868181106114955761149561206b565b9050602002810190610d5b9190612534565b6115177f00000000000000000000000000000000000000000000000000000000000000008484848181106114dd576114dd61206b565b90506020028101906114ef9190612534565b604001358585858181106115055761150561206b565b9050602002810190610dc69190612534565b60010161144e565b5060405163fce36c7d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fce36c7d90610ba49085908590600401612548565b6033546001600160a01b03163314610b0b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109ce565b60605f5f6115d584611905565b61ffff166001600160401b038111156115f0576115f0611cb2565b6040519080825280601f01601f19166020018201604052801561161a576020820181803683370190505b5090505f805b825182108015611631575061010081105b156113c4576001811b935085841615611677578060f81b83838151811061165a5761165a61206b565b60200101906001600160f81b03191690815f1a9053508160010191505b61168081612118565b9050611620565b6065546040517fe11cddf1816a43318ca175bbc52cd0185436e9cbead7c83acc54a73e461717e3916116c6916001600160a01b03909116908490611fc1565b60405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b5f54610100900460ff1661175a5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016109ce565b61176382611770565b61176c81611687565b5050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6065546001600160a01b03163314610b0b57604051638e79fdb560e01b815260040160405180910390fd5b6040516001600160a01b03808516602483015283166044820152606481018290526118579085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611935565b50505050565b604051636eb1769f60e11b81525f906001600160a01b0385169063dd62ed3e9061188d9030908790600401611fc1565b602060405180830381865afa1580156118a8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118cc919061200e565b90506118578463095ea7b360e01b856118e58686612093565b6040516001600160a01b0390921660248301526044820152606401611820565b5f805b821561192f57611919600184612628565b90921691806119278161263b565b915050611908565b92915050565b5f611989826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611a089092919063ffffffff16565b905080515f14806119a95750808060200190518101906119a9919061265b565b610af55760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016109ce565b6060611a1684845f85611a1e565b949350505050565b606082471015611a7f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016109ce565b5f5f866001600160a01b03168587604051611a9a919061267a565b5f6040518083038185875af1925050503d805f8114611ad4576040519150601f19603f3d011682016040523d82523d5f602084013e611ad9565b606091505b5091509150611aea87838387611af5565b979650505050505050565b60608315611b635782515f03611b5c576001600160a01b0385163b611b5c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016109ce565b5081611a16565b611a168383815115611b785781518083602001fd5b8060405162461bcd60e51b81526004016109ce91906124aa565b6001600160a01b03811681146109d7575f5ffd5b5f60208284031215611bb6575f5ffd5b8135611bc181611b92565b9392505050565b5f5f5f60608486031215611bda575f5ffd5b8335611be581611b92565b92506020840135611bf581611b92565b915060408401356001600160e01b031981168114611c11575f5ffd5b809150509250925092565b602080825282518282018190525f918401906040840190835b81811015611c5c5783516001600160a01b0316835260209384019390920191600101611c35565b509095945050505050565b5f5f60408385031215611c78575f5ffd5b8235611c8381611b92565b91506020830135611c9381611b92565b809150509250929050565b6001600160a01b0391909116815260200190565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715611ce857611ce8611cb2565b60405290565b604051601f8201601f191681016001600160401b0381118282101715611d1657611d16611cb2565b604052919050565b5f5f6001600160401b03841115611d3757611d37611cb2565b50601f8301601f1916602001611d4c81611cee565b915050828152838383011115611d60575f5ffd5b828260208301375f602084830101529392505050565b5f5f60408385031215611d87575f5ffd5b8235611d9281611b92565b915060208301356001600160401b03811115611dac575f5ffd5b830160608186031215611dbd575f5ffd5b611dc5611cc6565b81356001600160401b03811115611dda575f5ffd5b8201601f81018713611dea575f5ffd5b611df987823560208401611d1e565b8252506020828101359082015260409182013591810191909152919491935090915050565b5f5f83601f840112611e2e575f5ffd5b5081356001600160401b03811115611e44575f5ffd5b6020830191508360208260051b8501011115611e5e575f5ffd5b9250929050565b5f5f60208385031215611e76575f5ffd5b82356001600160401b03811115611e8b575f5ffd5b611e9785828601611e1e565b90969095509350505050565b5f60208284031215611eb3575f5ffd5b81356001600160401b03811115611ec8575f5ffd5b8201601f81018413611ed8575f5ffd5b611a1684823560208401611d1e565b803563ffffffff81168114611efa575f5ffd5b919050565b5f5f60408385031215611f10575f5ffd5b8235611f1b81611b92565b915060208301356001600160401b03811115611f35575f5ffd5b8301601f81018513611f45575f5ffd5b80356001600160401b03811115611f5e57611f5e611cb2565b8060051b611f6e60208201611cee565b91825260208184018101929081019088841115611f89575f5ffd5b6020850194505b83851015611fb257611fa185611ee7565b825260209485019490910190611f90565b80955050505050509250929050565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b0394851681529284166020840152921660408201526001600160e01b0319909116606082015260800190565b5f6020828403121561201e575f5ffd5b5051919050565b5f60208284031215612035575f5ffd5b81516001600160c01b0381168114611bc1575f5ffd5b5f6020828403121561205b575f5ffd5b815160ff81168114611bc1575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b8082018082111561192f5761192f61207f565b6001600160601b03811681146109d7575f5ffd5b5f60408284031280156120cb575f5ffd5b50604080519081016001600160401b03811182821017156120ee576120ee611cb2565b60405282516120fc81611b92565b8152602083015161210c816120a6565b60208201529392505050565b5f600182016121295761212961207f565b5060010190565b5f5b8381101561214a578181015183820152602001612132565b50505f910152565b5f8151808452612169816020860160208601612130565b601f01601f19169290920160200192915050565b60018060a01b0383168152604060208201525f8251606060408401526121a660a0840182612152565b90506020840151606084015260408401516080840152809150509392505050565b5f823560be198336030181126121db575f5ffd5b9190910192915050565b5f5f8335601e198436030181126121fa575f5ffd5b8301803591506001600160401b03821115612213575f5ffd5b6020019150600681901b3603821315611e5e575f5ffd5b5f5f8335601e1984360301811261223f575f5ffd5b83016020810192503590506001600160401b0381111561225d575f5ffd5b8060061b3603821315611e5e575f5ffd5b8183526020830192505f815f5b848110156122c857813561228e81611b92565b6001600160a01b0316865260208201356122a7816120a6565b6001600160601b03166020870152604095860195919091019060010161227b565b5093949350505050565b5f5f8335601e198436030181126122e7575f5ffd5b83016020810192503590506001600160401b03811115612305575f5ffd5b803603821315611e5e575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6001600160a01b038416815260406020820181905281018290525f6060600584901b83018101908301858360be1936839003015b8782101561249c57868503605f19018452823581811261238d575f5ffd5b8901612399818061222a565b60c088526123ab60c08901828461226e565b91505060208201356123bc81611b92565b6001600160a01b031660208801526123d7604083018361222a565b88830360408a015280835290915f91906020015b818310156124265783356123fe81611b92565b6001600160a01b031681526020848101359082015260409384019360019390930192016123eb565b61243260608601611ee7565b63ffffffff811660608c0152935061244c60808601611ee7565b63ffffffff811660808c0152935061246760a08601866122d2565b9550935089810360a08b015261247e818686612313565b9950505050505060208301925060208401935060018201915061236f565b509298975050505050505050565b602081525f611bc16020830184612152565b602080825282516001600160a01b039081168383015283820151166040808401919091528301516060808401528051608084018190525f929190910190829060a08501905b8083101561252a5763ffffffff8451168252602082019150602084019350600183019250612501565b5095945050505050565b5f8235609e198336030181126121db575f5ffd5b602080825281018290525f6040600584901b830181019083018583609e1936839003015b8782101561261b57868503603f19018452823581811261258a575f5ffd5b8901612596818061222a565b60a088526125a860a08901828461226e565b91505060208201356125b981611b92565b6001600160a01b031660208801526040828101359088015263ffffffff6125e260608401611ee7565b16606088015263ffffffff6125f960808401611ee7565b166080880152809650505060208301925060208401935060018201915061256c565b5092979650505050505050565b8181038181111561192f5761192f61207f565b5f61ffff821661ffff81036126525761265261207f565b60010192915050565b5f6020828403121561266b575f5ffd5b81518015158114611bc1575f5ffd5b5f82516121db81846020870161213056fea26469706673582212201c3d8072cecc2ba18c70f34be2c879462d4e2370c926181653cc79e0dee4b2f264736f6c634300081b0033
2325    /// ```
2326    #[rustfmt::skip]
2327    #[allow(clippy::all)]
2328    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
2329        b"`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\x01HW_5`\xE0\x1C\x80c\x9D\xA1m\x8E\x11a\0\xBFW\x80c\xC1\xA8\xE2\xC5\x11a\0yW\x80c\xC1\xA8\xE2\xC5\x14a\x02\xB6W\x80c\xC3\xFC\x91\xEA\x14a\x02\xC9W\x80c\xE4\x81\xAF\x9D\x14a\x02\xF0W\x80c\xF2\xFD\xE3\x8B\x14a\x02\xF8W\x80c\xFC)\x9D\xEE\x14a\x03\x0BW\x80c\xFC\xE3l}\x14a\x03\x1EW__\xFD[\x80c\x9D\xA1m\x8E\x14a\x02DW\x80c\xA0\x16\x9D\xDD\x14a\x02WW\x80c\xA2\x0B\x99\xBF\x14a\x02jW\x80c\xA3d\xF4\xDA\x14a\x02}W\x80c\xA9\x8F\xB3U\x14a\x02\x90W\x80c\xBAU\x08\x80\x14a\x02\xA3W__\xFD[\x80c;\xC2\x8C\x8C\x11a\x01\x10W\x80c;\xC2\x8C\x8C\x14a\x01\xC3W\x80cH\\\xC9U\x14a\x01\xD6W\x80ck:\xA7.\x14a\x01\xE9W\x80cqP\x18\xA6\x14a\x02\x18W\x80c\x8D\xA5\xCB[\x14a\x02 W\x80c\x99&\xEE}\x14a\x021W__\xFD[\x80c\x17\x85\xF5<\x14a\x01LW\x80c\x1F\xDB\x0C\xFD\x14a\x01aW\x80c'\x942\xEB\x14a\x01tW\x80c3\xCF\xB7\xB7\x14a\x01\x87W\x80c8\xC8\xEEd\x14a\x01\xB0W[__\xFD[a\x01_a\x01Z6`\x04a\x1B\xA6V[a\x031V[\0[a\x01_a\x01o6`\x04a\x1B\xC8V[a\x03\xB7V[a\x01_a\x01\x826`\x04a\x1B\xA6V[a\x04CV[a\x01\x9Aa\x01\x956`\x04a\x1B\xA6V[a\x04\x99V[`@Qa\x01\xA7\x91\x90a\x1C\x1CV[`@Q\x80\x91\x03\x90\xF3[a\x01_a\x01\xBE6`\x04a\x1B\xA6V[a\t2V[a\x01_a\x01\xD16`\x04a\x1B\xA6V[a\t\xDAV[a\x01_a\x01\xE46`\x04a\x1CgV[a\t\xEBV[\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[`@Qa\x01\xA7\x91\x90a\x1C\x9EV[a\x01_a\n\xFAV[`3T`\x01`\x01`\xA0\x1B\x03\x16a\x02\x0BV[a\x01_a\x02?6`\x04a\x1DvV[a\x0B\rV[a\x01_a\x02R6`\x04a\x1B\xA6V[a\x0B\xD5V[a\x01_a\x02e6`\x04a\x1B\xA6V[a\x0C+V[a\x01_a\x02x6`\x04a\x1EeV[a\x0C\x7FV[a\x01_a\x02\x8B6`\x04a\x1B\xA6V[a\x0EAV[a\x01_a\x02\x9E6`\x04a\x1E\xA3V[a\x0E\xD6V[a\x01_a\x02\xB16`\x04a\x1B\xC8V[a\x0F*V[a\x01_a\x02\xC46`\x04a\x1E\xFFV[a\x0F\x84V[a\x02\x0B\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[a\x01\x9Aa\x105V[a\x01_a\x03\x066`\x04a\x1B\xA6V[a\x13\xCEV[`eTa\x02\x0B\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x01_a\x03,6`\x04a\x1EeV[a\x14DV[a\x039a\x15nV[`@Qc&\x89Y\xE5`\xE0\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\x90c&\x89Y\xE5\x90a\x03\x87\x900\x90\x85\x90`\x04\x01a\x1F\xC1V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03\x9EW__\xFD[PZ\xF1\x15\x80\x15a\x03\xB0W=__>=_\xFD[PPPPPV[a\x03\xBFa\x15nV[`@QcJ\x86\xC07`\xE1\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\x90c\x95\r\x80n\x90a\x04\x11\x900\x90\x87\x90\x87\x90\x87\x90`\x04\x01a\x1F\xDBV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x04(W__\xFD[PZ\xF1\x15\x80\x15a\x04:W=__>=_\xFD[PPPPPPPV[a\x04Ka\x15nV[`@Qc\xEBZN\x87`\xE0\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\x90c\xEBZN\x87\x90a\x03\x87\x900\x90\x85\x90`\x04\x01a\x1F\xC1V[``_\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\x13T*N\x84`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x04\xE8\x91\x90a\x1C\x9EV[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05\x03W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05'\x91\x90a \x0EV[`@Qc\x87\x1E\xF0I`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R\x90\x91P_\x90`\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\x90c\x87\x1E\xF0I\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05\x8FW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xB3\x91\x90a %V[\x90P`\x01`\x01`\xC0\x1B\x03\x81\x16\x15\x80a\x06KWP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\x9A\xA1e=`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\"W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06F\x91\x90a KV[`\xFF\x16\x15[\x15a\x06fWPP`@\x80Q_\x81R` \x81\x01\x90\x91R\x92\x91PPV[_a\x06y\x82`\x01`\x01`\xC0\x1B\x03\x16a\x15\xC8V[\x90P_\x80[\x82Q\x81\x10\x15a\x07BW\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<\xA5\xA5\xF5\x84\x83\x81Q\x81\x10a\x06\xC8Wa\x06\xC8a kV[\x01` \x01Q`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x84\x90\x1B\x16\x81R`\xF8\x91\x90\x91\x1C`\x04\x82\x01R`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07\nW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07.\x91\x90a \x0EV[a\x078\x90\x83a \x93V[\x91P`\x01\x01a\x06~V[P_\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\x07\\Wa\x07\\a\x1C\xB2V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x07\x85W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_\x80[\x84Q\x81\x10\x15a\t%W_\x85\x82\x81Q\x81\x10a\x07\xA7Wa\x07\xA7a kV[\x01` \x01Q`@Qc<\xA5\xA5\xF5`\xE0\x1B\x81R`\xF8\x91\x90\x91\x1C`\x04\x82\x01\x81\x90R\x91P_\x90`\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\x90c<\xA5\xA5\xF5\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x08\x19W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08=\x91\x90a \x0EV[\x90P_[\x81\x81\x10\x15a\t\x1AW`@QcV\xE4\x02m`\xE1\x1B\x81R`\xFF\x84\x16`\x04\x82\x01R`$\x81\x01\x82\x90R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x90c\xAD\xC8\x04\xDA\x90`D\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x08\xB4W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xD8\x91\x90a \xBAV[_\x01Q\x86\x86\x81Q\x81\x10a\x08\xEDWa\x08\xEDa kV[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x84a\t\x0F\x81a!\x18V[\x95PP`\x01\x01a\x08AV[PPP`\x01\x01a\x07\x8BV[P\x90\x97\x96PPPPPPPV[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\t\xD7W`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R\x7FonlySquaringTaskManager: not fro`D\x82\x01R\x7Fm credible squaring task manager`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[PV[a\t\xE2a\x15nV[a\t\xD7\x81a\x16\x87V[_Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\n\tWP_T`\x01`\xFF\x90\x91\x16\x10[\x80a\n\"WP0;\x15\x80\x15a\n\"WP_T`\xFF\x16`\x01\x14[a\n\x85W`@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\t\xCEV[_\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\n\xA6W_\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\n\xB0\x83\x83a\x16\xF0V[\x80\x15a\n\xF5W_\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[PPPV[a\x0B\x02a\x15nV[a\x0B\x0B_a\x17pV[V[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x0BVW`@QcC\x94\xDB\xDF`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Qc\x99&\xEE}`\xE0\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\x90c\x99&\xEE}\x90a\x0B\xA4\x90\x85\x90\x85\x90`\x04\x01a!}V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x0B\xBBW__\xFD[PZ\xF1\x15\x80\x15a\x0B\xCDW=__>=_\xFD[PPPPPPV[a\x0B\xDDa\x15nV[`@QcO\x90l\xF9`\xE0\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\x90cO\x90l\xF9\x90a\x03\x87\x900\x90\x85\x90`\x04\x01a\x1F\xC1V[a\x0C3a\x15nV[`@Qc\xA0\x16\x9D\xDD`\xE0\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\x90c\xA0\x16\x9D\xDD\x90a\x03\x87\x90\x84\x90`\x04\x01a\x1C\x9EV[a\x0C\x87a\x17\xC1V[_[\x81\x81\x10\x15a\r\xF0W_\x80[\x84\x84\x84\x81\x81\x10a\x0C\xA6Wa\x0C\xA6a kV[\x90P` \x02\x81\x01\x90a\x0C\xB8\x91\x90a!\xC7V[a\x0C\xC6\x90`@\x81\x01\x90a!\xE5V[\x90P\x81\x10\x15a\r0W\x84\x84\x84\x81\x81\x10a\x0C\xE1Wa\x0C\xE1a kV[\x90P` \x02\x81\x01\x90a\x0C\xF3\x91\x90a!\xC7V[a\r\x01\x90`@\x81\x01\x90a!\xE5V[\x82\x81\x81\x10a\r\x11Wa\r\x11a kV[\x90P`@\x02\x01` \x015\x82a\r&\x91\x90a \x93V[\x91P`\x01\x01a\x0C\x94V[Pa\r}30\x83\x87\x87\x87\x81\x81\x10a\rIWa\rIa kV[\x90P` \x02\x81\x01\x90a\r[\x91\x90a!\xC7V[a\rl\x90`@\x81\x01\x90` \x01a\x1B\xA6V[`\x01`\x01`\xA0\x1B\x03\x16\x92\x91\x90a\x17\xECV[a\r\xE7\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\x82\x86\x86\x86\x81\x81\x10a\r\xB4Wa\r\xB4a kV[\x90P` \x02\x81\x01\x90a\r\xC6\x91\x90a!\xC7V[a\r\xD7\x90`@\x81\x01\x90` \x01a\x1B\xA6V[`\x01`\x01`\xA0\x1B\x03\x16\x91\x90a\x18]V[P`\x01\x01a\x0C\x89V[P`@QcN\\\xD2\xFD`\xE1\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\x90c\x9C\xB9\xA5\xFA\x90a\x0B\xA4\x900\x90\x86\x90\x86\x90`\x04\x01a#;V[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x0E\x8AW`@QcC\x94\xDB\xDF`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@QcQ\xB2zm`\xE1\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\x90c\xA3d\xF4\xDA\x90a\x03\x87\x90\x84\x90`\x04\x01a\x1C\x9EV[a\x0E\xDEa\x15nV[`@Qc\xA9\x8F\xB3U`\xE0\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\x90c\xA9\x8F\xB3U\x90a\x03\x87\x90\x84\x90`\x04\x01a$\xAAV[a\x0F2a\x15nV[`@Qc\x06d\x12\x01`\xE0\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\x90c\x06d\x12\x01\x90a\x04\x11\x900\x90\x87\x90\x87\x90\x87\x90`\x04\x01a\x1F\xDBV[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x0F\xCDW`@QcC\x94\xDB\xDF`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q``\x81\x01\x82R`\x01`\x01`\xA0\x1B\x03\x80\x85\x16\x82R0` \x83\x01R\x81\x83\x01\x84\x90R\x91Qcn4\x92\xB5`\xE0\x1B\x81R\x90\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\x16\x90cn4\x92\xB5\x90a\x04\x11\x90\x84\x90`\x04\x01a$\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\x9A\xA1e=`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x10\x94W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x10\xB8\x91\x90a KV[`\xFF\x16\x90P\x80_\x03a\x10\xD7WPP`@\x80Q_\x81R` \x81\x01\x90\x91R\x90V[_\x80[\x82\x81\x10\x15a\x11\x7FW`@Qc<\xA5\xA5\xF5`\xE0\x1B\x81R`\xFF\x82\x16`\x04\x82\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`\x01`\x01`\xA0\x1B\x03\x16\x90c<\xA5\xA5\xF5\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11GW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11k\x91\x90a \x0EV[a\x11u\x90\x83a \x93V[\x91P`\x01\x01a\x10\xDAV[P_\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\x11\x99Wa\x11\x99a\x1C\xB2V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x11\xC2W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_\x80[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\x9A\xA1e=`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x12$W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x12H\x91\x90a KV[`\xFF\x16\x81\x10\x15a\x13\xC4W`@Qc<\xA5\xA5\xF5`\xE0\x1B\x81R`\xFF\x82\x16`\x04\x82\x01R_\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x90c<\xA5\xA5\xF5\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x12\xB9W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x12\xDD\x91\x90a \x0EV[\x90P_[\x81\x81\x10\x15a\x13\xBAW`@QcV\xE4\x02m`\xE1\x1B\x81R`\xFF\x84\x16`\x04\x82\x01R`$\x81\x01\x82\x90R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x90c\xAD\xC8\x04\xDA\x90`D\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x13TW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x13x\x91\x90a \xBAV[_\x01Q\x85\x85\x81Q\x81\x10a\x13\x8DWa\x13\x8Da kV[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x83a\x13\xAF\x81a!\x18V[\x94PP`\x01\x01a\x12\xE1V[PP`\x01\x01a\x11\xC8V[P\x90\x94\x93PPPPV[a\x13\xD6a\x15nV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x14;W`@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\t\xCEV[a\t\xD7\x81a\x17pV[a\x14La\x17\xC1V[_[\x81\x81\x10\x15a\x15\x1FWa\x14\xA730\x85\x85\x85\x81\x81\x10a\x14mWa\x14ma kV[\x90P` \x02\x81\x01\x90a\x14\x7F\x91\x90a%4V[`@\x015\x86\x86\x86\x81\x81\x10a\x14\x95Wa\x14\x95a kV[\x90P` \x02\x81\x01\x90a\r[\x91\x90a%4V[a\x15\x17\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\x84\x84\x84\x81\x81\x10a\x14\xDDWa\x14\xDDa kV[\x90P` \x02\x81\x01\x90a\x14\xEF\x91\x90a%4V[`@\x015\x85\x85\x85\x81\x81\x10a\x15\x05Wa\x15\x05a kV[\x90P` \x02\x81\x01\x90a\r\xC6\x91\x90a%4V[`\x01\x01a\x14NV[P`@Qc\xFC\xE3l}`\xE0\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\x90c\xFC\xE3l}\x90a\x0B\xA4\x90\x85\x90\x85\x90`\x04\x01a%HV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x0B\x0BW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\t\xCEV[``__a\x15\xD5\x84a\x19\x05V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a\x15\xF0Wa\x15\xF0a\x1C\xB2V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x16\x1AW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_\x80[\x82Q\x82\x10\x80\x15a\x161WPa\x01\0\x81\x10[\x15a\x13\xC4W`\x01\x81\x1B\x93P\x85\x84\x16\x15a\x16wW\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a\x16ZWa\x16Za kV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP\x81`\x01\x01\x91P[a\x16\x80\x81a!\x18V[\x90Pa\x16 V[`eT`@Q\x7F\xE1\x1C\xDD\xF1\x81jC1\x8C\xA1u\xBB\xC5,\xD0\x18T6\xE9\xCB\xEA\xD7\xC8:\xCCT\xA7>F\x17\x17\xE3\x91a\x16\xC6\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90\x84\x90a\x1F\xC1V[`@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[_Ta\x01\0\x90\x04`\xFF\x16a\x17ZW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`+`$\x82\x01R\x7FInitializable: contract is not i`D\x82\x01Rjnitializing`\xA8\x1B`d\x82\x01R`\x84\x01a\t\xCEV[a\x17c\x82a\x17pV[a\x17l\x81a\x16\x87V[PPV[`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_\x90\xA3PPV[`eT`\x01`\x01`\xA0\x1B\x03\x163\x14a\x0B\x0BW`@Qc\x8Ey\xFD\xB5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`$\x83\x01R\x83\x16`D\x82\x01R`d\x81\x01\x82\x90Ra\x18W\x90\x85\x90c#\xB8r\xDD`\xE0\x1B\x90`\x84\x01[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16`\x01`\x01`\xE0\x1B\x03\x19\x90\x93\x16\x92\x90\x92\x17\x90\x91Ra\x195V[PPPPV[`@Qcn\xB1v\x9F`\xE1\x1B\x81R_\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\xDDb\xED>\x90a\x18\x8D\x900\x90\x87\x90`\x04\x01a\x1F\xC1V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x18\xA8W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x18\xCC\x91\x90a \x0EV[\x90Pa\x18W\x84c\t^\xA7\xB3`\xE0\x1B\x85a\x18\xE5\x86\x86a \x93V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16`$\x83\x01R`D\x82\x01R`d\x01a\x18 V[_\x80[\x82\x15a\x19/Wa\x19\x19`\x01\x84a&(V[\x90\x92\x16\x91\x80a\x19'\x81a&;V[\x91PPa\x19\x08V[\x92\x91PPV[_a\x19\x89\x82`@Q\x80`@\x01`@R\x80` \x81R` \x01\x7FSafeERC20: low-level call failed\x81RP\x85`\x01`\x01`\xA0\x1B\x03\x16a\x1A\x08\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x90P\x80Q_\x14\x80a\x19\xA9WP\x80\x80` \x01\x90Q\x81\x01\x90a\x19\xA9\x91\x90a&[V[a\n\xF5W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`*`$\x82\x01R\x7FSafeERC20: ERC20 operation did n`D\x82\x01Ri\x1B\xDD\x08\x1C\xDDX\xD8\xD9YY`\xB2\x1B`d\x82\x01R`\x84\x01a\t\xCEV[``a\x1A\x16\x84\x84_\x85a\x1A\x1EV[\x94\x93PPPPV[``\x82G\x10\x15a\x1A\x7FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FAddress: insufficient balance fo`D\x82\x01Re\x1C\x88\x18\xD8[\x1B`\xD2\x1B`d\x82\x01R`\x84\x01a\t\xCEV[__\x86`\x01`\x01`\xA0\x1B\x03\x16\x85\x87`@Qa\x1A\x9A\x91\x90a&zV[_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x1A\xD4W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1A\xD9V[``\x91P[P\x91P\x91Pa\x1A\xEA\x87\x83\x83\x87a\x1A\xF5V[\x97\x96PPPPPPPV[``\x83\x15a\x1BcW\x82Q_\x03a\x1B\\W`\x01`\x01`\xA0\x1B\x03\x85\x16;a\x1B\\W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: call to non-contract\0\0\0`D\x82\x01R`d\x01a\t\xCEV[P\x81a\x1A\x16V[a\x1A\x16\x83\x83\x81Q\x15a\x1BxW\x81Q\x80\x83` \x01\xFD[\x80`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\t\xCE\x91\x90a$\xAAV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\t\xD7W__\xFD[_` \x82\x84\x03\x12\x15a\x1B\xB6W__\xFD[\x815a\x1B\xC1\x81a\x1B\x92V[\x93\x92PPPV[___``\x84\x86\x03\x12\x15a\x1B\xDAW__\xFD[\x835a\x1B\xE5\x81a\x1B\x92V[\x92P` \x84\x015a\x1B\xF5\x81a\x1B\x92V[\x91P`@\x84\x015`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\x1C\x11W__\xFD[\x80\x91PP\x92P\x92P\x92V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x84\x01\x90`@\x84\x01\x90\x83[\x81\x81\x10\x15a\x1C\\W\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a\x1C5V[P\x90\x95\x94PPPPPV[__`@\x83\x85\x03\x12\x15a\x1CxW__\xFD[\x825a\x1C\x83\x81a\x1B\x92V[\x91P` \x83\x015a\x1C\x93\x81a\x1B\x92V[\x80\x91PP\x92P\x92\x90PV[`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x81R` \x01\x90V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x1C\xE8Wa\x1C\xE8a\x1C\xB2V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x1D\x16Wa\x1D\x16a\x1C\xB2V[`@R\x91\x90PV[__`\x01`\x01`@\x1B\x03\x84\x11\x15a\x1D7Wa\x1D7a\x1C\xB2V[P`\x1F\x83\x01`\x1F\x19\x16` \x01a\x1DL\x81a\x1C\xEEV[\x91PP\x82\x81R\x83\x83\x83\x01\x11\x15a\x1D`W__\xFD[\x82\x82` \x83\x017_` \x84\x83\x01\x01R\x93\x92PPPV[__`@\x83\x85\x03\x12\x15a\x1D\x87W__\xFD[\x825a\x1D\x92\x81a\x1B\x92V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1D\xACW__\xFD[\x83\x01``\x81\x86\x03\x12\x15a\x1D\xBDW__\xFD[a\x1D\xC5a\x1C\xC6V[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1D\xDAW__\xFD[\x82\x01`\x1F\x81\x01\x87\x13a\x1D\xEAW__\xFD[a\x1D\xF9\x87\x825` \x84\x01a\x1D\x1EV[\x82RP` \x82\x81\x015\x90\x82\x01R`@\x91\x82\x015\x91\x81\x01\x91\x90\x91R\x91\x94\x91\x93P\x90\x91PPV[__\x83`\x1F\x84\x01\x12a\x1E.W__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1EDW__\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x1E^W__\xFD[\x92P\x92\x90PV[__` \x83\x85\x03\x12\x15a\x1EvW__\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1E\x8BW__\xFD[a\x1E\x97\x85\x82\x86\x01a\x1E\x1EV[\x90\x96\x90\x95P\x93PPPPV[_` \x82\x84\x03\x12\x15a\x1E\xB3W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1E\xC8W__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a\x1E\xD8W__\xFD[a\x1A\x16\x84\x825` \x84\x01a\x1D\x1EV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1E\xFAW__\xFD[\x91\x90PV[__`@\x83\x85\x03\x12\x15a\x1F\x10W__\xFD[\x825a\x1F\x1B\x81a\x1B\x92V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1F5W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\x1FEW__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1F^Wa\x1F^a\x1C\xB2V[\x80`\x05\x1Ba\x1Fn` \x82\x01a\x1C\xEEV[\x91\x82R` \x81\x84\x01\x81\x01\x92\x90\x81\x01\x90\x88\x84\x11\x15a\x1F\x89W__\xFD[` \x85\x01\x94P[\x83\x85\x10\x15a\x1F\xB2Wa\x1F\xA1\x85a\x1E\xE7V[\x82R` \x94\x85\x01\x94\x90\x91\x01\x90a\x1F\x90V[\x80\x95PPPPPP\x92P\x92\x90PV[`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x16` \x82\x01R`@\x01\x90V[`\x01`\x01`\xA0\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x84\x01R\x92\x16`@\x82\x01R`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16``\x82\x01R`\x80\x01\x90V[_` \x82\x84\x03\x12\x15a \x1EW__\xFD[PQ\x91\x90PV[_` \x82\x84\x03\x12\x15a 5W__\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a\x1B\xC1W__\xFD[_` \x82\x84\x03\x12\x15a [W__\xFD[\x81Q`\xFF\x81\x16\x81\x14a\x1B\xC1W__\xFD[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x19/Wa\x19/a \x7FV[`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\t\xD7W__\xFD[_`@\x82\x84\x03\x12\x80\x15a \xCBW__\xFD[P`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a \xEEWa \xEEa\x1C\xB2V[`@R\x82Qa \xFC\x81a\x1B\x92V[\x81R` \x83\x01Qa!\x0C\x81a \xA6V[` \x82\x01R\x93\x92PPPV[_`\x01\x82\x01a!)Wa!)a \x7FV[P`\x01\x01\x90V[_[\x83\x81\x10\x15a!JW\x81\x81\x01Q\x83\x82\x01R` \x01a!2V[PP_\x91\x01RV[_\x81Q\x80\x84Ra!i\x81` \x86\x01` \x86\x01a!0V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\x01\x80`\xA0\x1B\x03\x83\x16\x81R`@` \x82\x01R_\x82Q```@\x84\x01Ra!\xA6`\xA0\x84\x01\x82a!RV[\x90P` \x84\x01Q``\x84\x01R`@\x84\x01Q`\x80\x84\x01R\x80\x91PP\x93\x92PPPV[_\x825`\xBE\x19\x836\x03\x01\x81\x12a!\xDBW__\xFD[\x91\x90\x91\x01\x92\x91PPV[__\x835`\x1E\x19\x846\x03\x01\x81\x12a!\xFAW__\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15a\"\x13W__\xFD[` \x01\x91P`\x06\x81\x90\x1B6\x03\x82\x13\x15a\x1E^W__\xFD[__\x835`\x1E\x19\x846\x03\x01\x81\x12a\"?W__\xFD[\x83\x01` \x81\x01\x92P5\x90P`\x01`\x01`@\x1B\x03\x81\x11\x15a\"]W__\xFD[\x80`\x06\x1B6\x03\x82\x13\x15a\x1E^W__\xFD[\x81\x83R` \x83\x01\x92P_\x81_[\x84\x81\x10\x15a\"\xC8W\x815a\"\x8E\x81a\x1B\x92V[`\x01`\x01`\xA0\x1B\x03\x16\x86R` \x82\x015a\"\xA7\x81a \xA6V[`\x01`\x01``\x1B\x03\x16` \x87\x01R`@\x95\x86\x01\x95\x91\x90\x91\x01\x90`\x01\x01a\"{V[P\x93\x94\x93PPPPV[__\x835`\x1E\x19\x846\x03\x01\x81\x12a\"\xE7W__\xFD[\x83\x01` \x81\x01\x92P5\x90P`\x01`\x01`@\x1B\x03\x81\x11\x15a#\x05W__\xFD[\x806\x03\x82\x13\x15a\x1E^W__\xFD[\x81\x83R\x81\x81` \x85\x017P_\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1F\x90\x91\x01`\x1F\x19\x16\x90\x91\x01\x01\x90V[`\x01`\x01`\xA0\x1B\x03\x84\x16\x81R`@` \x82\x01\x81\x90R\x81\x01\x82\x90R_```\x05\x84\x90\x1B\x83\x01\x81\x01\x90\x83\x01\x85\x83`\xBE\x196\x83\x90\x03\x01[\x87\x82\x10\x15a$\x9CW\x86\x85\x03`_\x19\x01\x84R\x825\x81\x81\x12a#\x8DW__\xFD[\x89\x01a#\x99\x81\x80a\"*V[`\xC0\x88Ra#\xAB`\xC0\x89\x01\x82\x84a\"nV[\x91PP` \x82\x015a#\xBC\x81a\x1B\x92V[`\x01`\x01`\xA0\x1B\x03\x16` \x88\x01Ra#\xD7`@\x83\x01\x83a\"*V[\x88\x83\x03`@\x8A\x01R\x80\x83R\x90\x91_\x91\x90` \x01[\x81\x83\x10\x15a$&W\x835a#\xFE\x81a\x1B\x92V[`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x84\x81\x015\x90\x82\x01R`@\x93\x84\x01\x93`\x01\x93\x90\x93\x01\x92\x01a#\xEBV[a$2``\x86\x01a\x1E\xE7V[c\xFF\xFF\xFF\xFF\x81\x16``\x8C\x01R\x93Pa$L`\x80\x86\x01a\x1E\xE7V[c\xFF\xFF\xFF\xFF\x81\x16`\x80\x8C\x01R\x93Pa$g`\xA0\x86\x01\x86a\"\xD2V[\x95P\x93P\x89\x81\x03`\xA0\x8B\x01Ra$~\x81\x86\x86a#\x13V[\x99PPPPPP` \x83\x01\x92P` \x84\x01\x93P`\x01\x82\x01\x91Pa#oV[P\x92\x98\x97PPPPPPPPV[` \x81R_a\x1B\xC1` \x83\x01\x84a!RV[` \x80\x82R\x82Q`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x83\x83\x01R\x83\x82\x01Q\x16`@\x80\x84\x01\x91\x90\x91R\x83\x01Q``\x80\x84\x01R\x80Q`\x80\x84\x01\x81\x90R_\x92\x91\x90\x91\x01\x90\x82\x90`\xA0\x85\x01\x90[\x80\x83\x10\x15a%*Wc\xFF\xFF\xFF\xFF\x84Q\x16\x82R` \x82\x01\x91P` \x84\x01\x93P`\x01\x83\x01\x92Pa%\x01V[P\x95\x94PPPPPV[_\x825`\x9E\x19\x836\x03\x01\x81\x12a!\xDBW__\xFD[` \x80\x82R\x81\x01\x82\x90R_`@`\x05\x84\x90\x1B\x83\x01\x81\x01\x90\x83\x01\x85\x83`\x9E\x196\x83\x90\x03\x01[\x87\x82\x10\x15a&\x1BW\x86\x85\x03`?\x19\x01\x84R\x825\x81\x81\x12a%\x8AW__\xFD[\x89\x01a%\x96\x81\x80a\"*V[`\xA0\x88Ra%\xA8`\xA0\x89\x01\x82\x84a\"nV[\x91PP` \x82\x015a%\xB9\x81a\x1B\x92V[`\x01`\x01`\xA0\x1B\x03\x16` \x88\x01R`@\x82\x81\x015\x90\x88\x01Rc\xFF\xFF\xFF\xFFa%\xE2``\x84\x01a\x1E\xE7V[\x16``\x88\x01Rc\xFF\xFF\xFF\xFFa%\xF9`\x80\x84\x01a\x1E\xE7V[\x16`\x80\x88\x01R\x80\x96PPP` \x83\x01\x92P` \x84\x01\x93P`\x01\x82\x01\x91Pa%lV[P\x92\x97\x96PPPPPPPV[\x81\x81\x03\x81\x81\x11\x15a\x19/Wa\x19/a \x7FV[_a\xFF\xFF\x82\x16a\xFF\xFF\x81\x03a&RWa&Ra \x7FV[`\x01\x01\x92\x91PPV[_` \x82\x84\x03\x12\x15a&kW__\xFD[\x81Q\x80\x15\x15\x81\x14a\x1B\xC1W__\xFD[_\x82Qa!\xDB\x81\x84` \x87\x01a!0V\xFE\xA2dipfsX\"\x12 \x1C=\x80r\xCE\xCC+\xA1\x8Cp\xF3K\xE2\xC8yF-N#p\xC9&\x18\x16S\xCCy\xE0\xDE\xE4\xB2\xF2dsolcC\0\x08\x1B\x003",
2330    );
2331    #[derive(serde::Serialize, serde::Deserialize)]
2332    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2333    /**Custom error with signature `DelayPeriodNotPassed()` and selector `0xfb623b04`.
2334```solidity
2335error DelayPeriodNotPassed();
2336```*/
2337    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2338    #[derive(Clone)]
2339    pub struct DelayPeriodNotPassed;
2340    #[allow(
2341        non_camel_case_types,
2342        non_snake_case,
2343        clippy::pub_underscore_fields,
2344        clippy::style
2345    )]
2346    const _: () = {
2347        use alloy::sol_types as alloy_sol_types;
2348        #[doc(hidden)]
2349        type UnderlyingSolTuple<'a> = ();
2350        #[doc(hidden)]
2351        type UnderlyingRustTuple<'a> = ();
2352        #[cfg(test)]
2353        #[allow(dead_code, unreachable_patterns)]
2354        fn _type_assertion(
2355            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2356        ) {
2357            match _t {
2358                alloy_sol_types::private::AssertTypeEq::<
2359                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2360                >(_) => {}
2361            }
2362        }
2363        #[automatically_derived]
2364        #[doc(hidden)]
2365        impl ::core::convert::From<DelayPeriodNotPassed> for UnderlyingRustTuple<'_> {
2366            fn from(value: DelayPeriodNotPassed) -> Self {
2367                ()
2368            }
2369        }
2370        #[automatically_derived]
2371        #[doc(hidden)]
2372        impl ::core::convert::From<UnderlyingRustTuple<'_>> for DelayPeriodNotPassed {
2373            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2374                Self
2375            }
2376        }
2377        #[automatically_derived]
2378        impl alloy_sol_types::SolError for DelayPeriodNotPassed {
2379            type Parameters<'a> = UnderlyingSolTuple<'a>;
2380            type Token<'a> = <Self::Parameters<
2381                'a,
2382            > as alloy_sol_types::SolType>::Token<'a>;
2383            const SIGNATURE: &'static str = "DelayPeriodNotPassed()";
2384            const SELECTOR: [u8; 4] = [251u8, 98u8, 59u8, 4u8];
2385            #[inline]
2386            fn new<'a>(
2387                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2388            ) -> Self {
2389                tuple.into()
2390            }
2391            #[inline]
2392            fn tokenize(&self) -> Self::Token<'_> {
2393                ()
2394            }
2395            #[inline]
2396            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2397                <Self::Parameters<
2398                    '_,
2399                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2400                    .map(Self::new)
2401            }
2402        }
2403    };
2404    #[derive(serde::Serialize, serde::Deserialize)]
2405    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2406    /**Custom error with signature `OnlyRegistryCoordinator()` and selector `0x8729b7be`.
2407```solidity
2408error OnlyRegistryCoordinator();
2409```*/
2410    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2411    #[derive(Clone)]
2412    pub struct OnlyRegistryCoordinator;
2413    #[allow(
2414        non_camel_case_types,
2415        non_snake_case,
2416        clippy::pub_underscore_fields,
2417        clippy::style
2418    )]
2419    const _: () = {
2420        use alloy::sol_types as alloy_sol_types;
2421        #[doc(hidden)]
2422        type UnderlyingSolTuple<'a> = ();
2423        #[doc(hidden)]
2424        type UnderlyingRustTuple<'a> = ();
2425        #[cfg(test)]
2426        #[allow(dead_code, unreachable_patterns)]
2427        fn _type_assertion(
2428            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2429        ) {
2430            match _t {
2431                alloy_sol_types::private::AssertTypeEq::<
2432                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2433                >(_) => {}
2434            }
2435        }
2436        #[automatically_derived]
2437        #[doc(hidden)]
2438        impl ::core::convert::From<OnlyRegistryCoordinator> for UnderlyingRustTuple<'_> {
2439            fn from(value: OnlyRegistryCoordinator) -> Self {
2440                ()
2441            }
2442        }
2443        #[automatically_derived]
2444        #[doc(hidden)]
2445        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OnlyRegistryCoordinator {
2446            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2447                Self
2448            }
2449        }
2450        #[automatically_derived]
2451        impl alloy_sol_types::SolError for OnlyRegistryCoordinator {
2452            type Parameters<'a> = UnderlyingSolTuple<'a>;
2453            type Token<'a> = <Self::Parameters<
2454                'a,
2455            > as alloy_sol_types::SolType>::Token<'a>;
2456            const SIGNATURE: &'static str = "OnlyRegistryCoordinator()";
2457            const SELECTOR: [u8; 4] = [135u8, 41u8, 183u8, 190u8];
2458            #[inline]
2459            fn new<'a>(
2460                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2461            ) -> Self {
2462                tuple.into()
2463            }
2464            #[inline]
2465            fn tokenize(&self) -> Self::Token<'_> {
2466                ()
2467            }
2468            #[inline]
2469            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2470                <Self::Parameters<
2471                    '_,
2472                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2473                    .map(Self::new)
2474            }
2475        }
2476    };
2477    #[derive(serde::Serialize, serde::Deserialize)]
2478    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2479    /**Custom error with signature `OnlyRewardsInitiator()` and selector `0x8e79fdb5`.
2480```solidity
2481error OnlyRewardsInitiator();
2482```*/
2483    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2484    #[derive(Clone)]
2485    pub struct OnlyRewardsInitiator;
2486    #[allow(
2487        non_camel_case_types,
2488        non_snake_case,
2489        clippy::pub_underscore_fields,
2490        clippy::style
2491    )]
2492    const _: () = {
2493        use alloy::sol_types as alloy_sol_types;
2494        #[doc(hidden)]
2495        type UnderlyingSolTuple<'a> = ();
2496        #[doc(hidden)]
2497        type UnderlyingRustTuple<'a> = ();
2498        #[cfg(test)]
2499        #[allow(dead_code, unreachable_patterns)]
2500        fn _type_assertion(
2501            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2502        ) {
2503            match _t {
2504                alloy_sol_types::private::AssertTypeEq::<
2505                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2506                >(_) => {}
2507            }
2508        }
2509        #[automatically_derived]
2510        #[doc(hidden)]
2511        impl ::core::convert::From<OnlyRewardsInitiator> for UnderlyingRustTuple<'_> {
2512            fn from(value: OnlyRewardsInitiator) -> Self {
2513                ()
2514            }
2515        }
2516        #[automatically_derived]
2517        #[doc(hidden)]
2518        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OnlyRewardsInitiator {
2519            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2520                Self
2521            }
2522        }
2523        #[automatically_derived]
2524        impl alloy_sol_types::SolError for OnlyRewardsInitiator {
2525            type Parameters<'a> = UnderlyingSolTuple<'a>;
2526            type Token<'a> = <Self::Parameters<
2527                'a,
2528            > as alloy_sol_types::SolType>::Token<'a>;
2529            const SIGNATURE: &'static str = "OnlyRewardsInitiator()";
2530            const SELECTOR: [u8; 4] = [142u8, 121u8, 253u8, 181u8];
2531            #[inline]
2532            fn new<'a>(
2533                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2534            ) -> Self {
2535                tuple.into()
2536            }
2537            #[inline]
2538            fn tokenize(&self) -> Self::Token<'_> {
2539                ()
2540            }
2541            #[inline]
2542            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2543                <Self::Parameters<
2544                    '_,
2545                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2546                    .map(Self::new)
2547            }
2548        }
2549    };
2550    #[derive(serde::Serialize, serde::Deserialize)]
2551    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2552    /**Custom error with signature `OnlyStakeRegistry()` and selector `0x46bf2281`.
2553```solidity
2554error OnlyStakeRegistry();
2555```*/
2556    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2557    #[derive(Clone)]
2558    pub struct OnlyStakeRegistry;
2559    #[allow(
2560        non_camel_case_types,
2561        non_snake_case,
2562        clippy::pub_underscore_fields,
2563        clippy::style
2564    )]
2565    const _: () = {
2566        use alloy::sol_types as alloy_sol_types;
2567        #[doc(hidden)]
2568        type UnderlyingSolTuple<'a> = ();
2569        #[doc(hidden)]
2570        type UnderlyingRustTuple<'a> = ();
2571        #[cfg(test)]
2572        #[allow(dead_code, unreachable_patterns)]
2573        fn _type_assertion(
2574            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2575        ) {
2576            match _t {
2577                alloy_sol_types::private::AssertTypeEq::<
2578                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2579                >(_) => {}
2580            }
2581        }
2582        #[automatically_derived]
2583        #[doc(hidden)]
2584        impl ::core::convert::From<OnlyStakeRegistry> for UnderlyingRustTuple<'_> {
2585            fn from(value: OnlyStakeRegistry) -> Self {
2586                ()
2587            }
2588        }
2589        #[automatically_derived]
2590        #[doc(hidden)]
2591        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OnlyStakeRegistry {
2592            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2593                Self
2594            }
2595        }
2596        #[automatically_derived]
2597        impl alloy_sol_types::SolError for OnlyStakeRegistry {
2598            type Parameters<'a> = UnderlyingSolTuple<'a>;
2599            type Token<'a> = <Self::Parameters<
2600                'a,
2601            > as alloy_sol_types::SolType>::Token<'a>;
2602            const SIGNATURE: &'static str = "OnlyStakeRegistry()";
2603            const SELECTOR: [u8; 4] = [70u8, 191u8, 34u8, 129u8];
2604            #[inline]
2605            fn new<'a>(
2606                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2607            ) -> Self {
2608                tuple.into()
2609            }
2610            #[inline]
2611            fn tokenize(&self) -> Self::Token<'_> {
2612                ()
2613            }
2614            #[inline]
2615            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2616                <Self::Parameters<
2617                    '_,
2618                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2619                    .map(Self::new)
2620            }
2621        }
2622    };
2623    #[derive(serde::Serialize, serde::Deserialize)]
2624    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2625    /**Event with signature `Initialized(uint8)` and selector `0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498`.
2626```solidity
2627event Initialized(uint8 version);
2628```*/
2629    #[allow(
2630        non_camel_case_types,
2631        non_snake_case,
2632        clippy::pub_underscore_fields,
2633        clippy::style
2634    )]
2635    #[derive(Clone)]
2636    pub struct Initialized {
2637        #[allow(missing_docs)]
2638        pub version: u8,
2639    }
2640    #[allow(
2641        non_camel_case_types,
2642        non_snake_case,
2643        clippy::pub_underscore_fields,
2644        clippy::style
2645    )]
2646    const _: () = {
2647        use alloy::sol_types as alloy_sol_types;
2648        #[automatically_derived]
2649        impl alloy_sol_types::SolEvent for Initialized {
2650            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,);
2651            type DataToken<'a> = <Self::DataTuple<
2652                'a,
2653            > as alloy_sol_types::SolType>::Token<'a>;
2654            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
2655            const SIGNATURE: &'static str = "Initialized(uint8)";
2656            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
2657                127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8,
2658                19u8, 56u8, 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8,
2659                146u8, 20u8, 96u8, 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8,
2660            ]);
2661            const ANONYMOUS: bool = false;
2662            #[allow(unused_variables)]
2663            #[inline]
2664            fn new(
2665                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2666                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2667            ) -> Self {
2668                Self { version: data.0 }
2669            }
2670            #[inline]
2671            fn check_signature(
2672                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2673            ) -> alloy_sol_types::Result<()> {
2674                if topics.0 != Self::SIGNATURE_HASH {
2675                    return Err(
2676                        alloy_sol_types::Error::invalid_event_signature_hash(
2677                            Self::SIGNATURE,
2678                            topics.0,
2679                            Self::SIGNATURE_HASH,
2680                        ),
2681                    );
2682                }
2683                Ok(())
2684            }
2685            #[inline]
2686            fn tokenize_body(&self) -> Self::DataToken<'_> {
2687                (
2688                    <alloy::sol_types::sol_data::Uint<
2689                        8,
2690                    > as alloy_sol_types::SolType>::tokenize(&self.version),
2691                )
2692            }
2693            #[inline]
2694            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2695                (Self::SIGNATURE_HASH.into(),)
2696            }
2697            #[inline]
2698            fn encode_topics_raw(
2699                &self,
2700                out: &mut [alloy_sol_types::abi::token::WordToken],
2701            ) -> alloy_sol_types::Result<()> {
2702                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2703                    return Err(alloy_sol_types::Error::Overrun);
2704                }
2705                out[0usize] = alloy_sol_types::abi::token::WordToken(
2706                    Self::SIGNATURE_HASH,
2707                );
2708                Ok(())
2709            }
2710        }
2711        #[automatically_derived]
2712        impl alloy_sol_types::private::IntoLogData for Initialized {
2713            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2714                From::from(self)
2715            }
2716            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2717                From::from(&self)
2718            }
2719        }
2720        #[automatically_derived]
2721        impl From<&Initialized> for alloy_sol_types::private::LogData {
2722            #[inline]
2723            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
2724                alloy_sol_types::SolEvent::encode_log_data(this)
2725            }
2726        }
2727    };
2728    #[derive(serde::Serialize, serde::Deserialize)]
2729    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2730    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
2731```solidity
2732event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
2733```*/
2734    #[allow(
2735        non_camel_case_types,
2736        non_snake_case,
2737        clippy::pub_underscore_fields,
2738        clippy::style
2739    )]
2740    #[derive(Clone)]
2741    pub struct OwnershipTransferred {
2742        #[allow(missing_docs)]
2743        pub previousOwner: alloy::sol_types::private::Address,
2744        #[allow(missing_docs)]
2745        pub newOwner: alloy::sol_types::private::Address,
2746    }
2747    #[allow(
2748        non_camel_case_types,
2749        non_snake_case,
2750        clippy::pub_underscore_fields,
2751        clippy::style
2752    )]
2753    const _: () = {
2754        use alloy::sol_types as alloy_sol_types;
2755        #[automatically_derived]
2756        impl alloy_sol_types::SolEvent for OwnershipTransferred {
2757            type DataTuple<'a> = ();
2758            type DataToken<'a> = <Self::DataTuple<
2759                'a,
2760            > as alloy_sol_types::SolType>::Token<'a>;
2761            type TopicList = (
2762                alloy_sol_types::sol_data::FixedBytes<32>,
2763                alloy::sol_types::sol_data::Address,
2764                alloy::sol_types::sol_data::Address,
2765            );
2766            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
2767            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
2768                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
2769                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
2770                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
2771            ]);
2772            const ANONYMOUS: bool = false;
2773            #[allow(unused_variables)]
2774            #[inline]
2775            fn new(
2776                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2777                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2778            ) -> Self {
2779                Self {
2780                    previousOwner: topics.1,
2781                    newOwner: topics.2,
2782                }
2783            }
2784            #[inline]
2785            fn check_signature(
2786                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2787            ) -> alloy_sol_types::Result<()> {
2788                if topics.0 != Self::SIGNATURE_HASH {
2789                    return Err(
2790                        alloy_sol_types::Error::invalid_event_signature_hash(
2791                            Self::SIGNATURE,
2792                            topics.0,
2793                            Self::SIGNATURE_HASH,
2794                        ),
2795                    );
2796                }
2797                Ok(())
2798            }
2799            #[inline]
2800            fn tokenize_body(&self) -> Self::DataToken<'_> {
2801                ()
2802            }
2803            #[inline]
2804            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2805                (
2806                    Self::SIGNATURE_HASH.into(),
2807                    self.previousOwner.clone(),
2808                    self.newOwner.clone(),
2809                )
2810            }
2811            #[inline]
2812            fn encode_topics_raw(
2813                &self,
2814                out: &mut [alloy_sol_types::abi::token::WordToken],
2815            ) -> alloy_sol_types::Result<()> {
2816                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2817                    return Err(alloy_sol_types::Error::Overrun);
2818                }
2819                out[0usize] = alloy_sol_types::abi::token::WordToken(
2820                    Self::SIGNATURE_HASH,
2821                );
2822                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
2823                    &self.previousOwner,
2824                );
2825                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
2826                    &self.newOwner,
2827                );
2828                Ok(())
2829            }
2830        }
2831        #[automatically_derived]
2832        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
2833            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2834                From::from(self)
2835            }
2836            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2837                From::from(&self)
2838            }
2839        }
2840        #[automatically_derived]
2841        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
2842            #[inline]
2843            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
2844                alloy_sol_types::SolEvent::encode_log_data(this)
2845            }
2846        }
2847    };
2848    #[derive(serde::Serialize, serde::Deserialize)]
2849    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2850    /**Event with signature `RewardsInitiatorUpdated(address,address)` and selector `0xe11cddf1816a43318ca175bbc52cd0185436e9cbead7c83acc54a73e461717e3`.
2851```solidity
2852event RewardsInitiatorUpdated(address prevRewardsInitiator, address newRewardsInitiator);
2853```*/
2854    #[allow(
2855        non_camel_case_types,
2856        non_snake_case,
2857        clippy::pub_underscore_fields,
2858        clippy::style
2859    )]
2860    #[derive(Clone)]
2861    pub struct RewardsInitiatorUpdated {
2862        #[allow(missing_docs)]
2863        pub prevRewardsInitiator: alloy::sol_types::private::Address,
2864        #[allow(missing_docs)]
2865        pub newRewardsInitiator: alloy::sol_types::private::Address,
2866    }
2867    #[allow(
2868        non_camel_case_types,
2869        non_snake_case,
2870        clippy::pub_underscore_fields,
2871        clippy::style
2872    )]
2873    const _: () = {
2874        use alloy::sol_types as alloy_sol_types;
2875        #[automatically_derived]
2876        impl alloy_sol_types::SolEvent for RewardsInitiatorUpdated {
2877            type DataTuple<'a> = (
2878                alloy::sol_types::sol_data::Address,
2879                alloy::sol_types::sol_data::Address,
2880            );
2881            type DataToken<'a> = <Self::DataTuple<
2882                'a,
2883            > as alloy_sol_types::SolType>::Token<'a>;
2884            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
2885            const SIGNATURE: &'static str = "RewardsInitiatorUpdated(address,address)";
2886            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
2887                225u8, 28u8, 221u8, 241u8, 129u8, 106u8, 67u8, 49u8, 140u8, 161u8, 117u8,
2888                187u8, 197u8, 44u8, 208u8, 24u8, 84u8, 54u8, 233u8, 203u8, 234u8, 215u8,
2889                200u8, 58u8, 204u8, 84u8, 167u8, 62u8, 70u8, 23u8, 23u8, 227u8,
2890            ]);
2891            const ANONYMOUS: bool = false;
2892            #[allow(unused_variables)]
2893            #[inline]
2894            fn new(
2895                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2896                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2897            ) -> Self {
2898                Self {
2899                    prevRewardsInitiator: data.0,
2900                    newRewardsInitiator: data.1,
2901                }
2902            }
2903            #[inline]
2904            fn check_signature(
2905                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2906            ) -> alloy_sol_types::Result<()> {
2907                if topics.0 != Self::SIGNATURE_HASH {
2908                    return Err(
2909                        alloy_sol_types::Error::invalid_event_signature_hash(
2910                            Self::SIGNATURE,
2911                            topics.0,
2912                            Self::SIGNATURE_HASH,
2913                        ),
2914                    );
2915                }
2916                Ok(())
2917            }
2918            #[inline]
2919            fn tokenize_body(&self) -> Self::DataToken<'_> {
2920                (
2921                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
2922                        &self.prevRewardsInitiator,
2923                    ),
2924                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
2925                        &self.newRewardsInitiator,
2926                    ),
2927                )
2928            }
2929            #[inline]
2930            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2931                (Self::SIGNATURE_HASH.into(),)
2932            }
2933            #[inline]
2934            fn encode_topics_raw(
2935                &self,
2936                out: &mut [alloy_sol_types::abi::token::WordToken],
2937            ) -> alloy_sol_types::Result<()> {
2938                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2939                    return Err(alloy_sol_types::Error::Overrun);
2940                }
2941                out[0usize] = alloy_sol_types::abi::token::WordToken(
2942                    Self::SIGNATURE_HASH,
2943                );
2944                Ok(())
2945            }
2946        }
2947        #[automatically_derived]
2948        impl alloy_sol_types::private::IntoLogData for RewardsInitiatorUpdated {
2949            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2950                From::from(self)
2951            }
2952            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2953                From::from(&self)
2954            }
2955        }
2956        #[automatically_derived]
2957        impl From<&RewardsInitiatorUpdated> for alloy_sol_types::private::LogData {
2958            #[inline]
2959            fn from(
2960                this: &RewardsInitiatorUpdated,
2961            ) -> alloy_sol_types::private::LogData {
2962                alloy_sol_types::SolEvent::encode_log_data(this)
2963            }
2964        }
2965    };
2966    /**Constructor`.
2967```solidity
2968constructor(address _avsDirectory, address _registryCoordinator, address _stakeRegistry, address rewardsCoordinator, address _squaringTaskManager, address _permissionController, address _allocationManager);
2969```*/
2970    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2971    #[derive(Clone)]
2972    pub struct constructorCall {
2973        #[allow(missing_docs)]
2974        pub _avsDirectory: alloy::sol_types::private::Address,
2975        #[allow(missing_docs)]
2976        pub _registryCoordinator: alloy::sol_types::private::Address,
2977        #[allow(missing_docs)]
2978        pub _stakeRegistry: alloy::sol_types::private::Address,
2979        #[allow(missing_docs)]
2980        pub rewardsCoordinator: alloy::sol_types::private::Address,
2981        #[allow(missing_docs)]
2982        pub _squaringTaskManager: alloy::sol_types::private::Address,
2983        #[allow(missing_docs)]
2984        pub _permissionController: alloy::sol_types::private::Address,
2985        #[allow(missing_docs)]
2986        pub _allocationManager: alloy::sol_types::private::Address,
2987    }
2988    const _: () = {
2989        use alloy::sol_types as alloy_sol_types;
2990        {
2991            #[doc(hidden)]
2992            type UnderlyingSolTuple<'a> = (
2993                alloy::sol_types::sol_data::Address,
2994                alloy::sol_types::sol_data::Address,
2995                alloy::sol_types::sol_data::Address,
2996                alloy::sol_types::sol_data::Address,
2997                alloy::sol_types::sol_data::Address,
2998                alloy::sol_types::sol_data::Address,
2999                alloy::sol_types::sol_data::Address,
3000            );
3001            #[doc(hidden)]
3002            type UnderlyingRustTuple<'a> = (
3003                alloy::sol_types::private::Address,
3004                alloy::sol_types::private::Address,
3005                alloy::sol_types::private::Address,
3006                alloy::sol_types::private::Address,
3007                alloy::sol_types::private::Address,
3008                alloy::sol_types::private::Address,
3009                alloy::sol_types::private::Address,
3010            );
3011            #[cfg(test)]
3012            #[allow(dead_code, unreachable_patterns)]
3013            fn _type_assertion(
3014                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3015            ) {
3016                match _t {
3017                    alloy_sol_types::private::AssertTypeEq::<
3018                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3019                    >(_) => {}
3020                }
3021            }
3022            #[automatically_derived]
3023            #[doc(hidden)]
3024            impl ::core::convert::From<constructorCall> for UnderlyingRustTuple<'_> {
3025                fn from(value: constructorCall) -> Self {
3026                    (
3027                        value._avsDirectory,
3028                        value._registryCoordinator,
3029                        value._stakeRegistry,
3030                        value.rewardsCoordinator,
3031                        value._squaringTaskManager,
3032                        value._permissionController,
3033                        value._allocationManager,
3034                    )
3035                }
3036            }
3037            #[automatically_derived]
3038            #[doc(hidden)]
3039            impl ::core::convert::From<UnderlyingRustTuple<'_>> for constructorCall {
3040                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3041                    Self {
3042                        _avsDirectory: tuple.0,
3043                        _registryCoordinator: tuple.1,
3044                        _stakeRegistry: tuple.2,
3045                        rewardsCoordinator: tuple.3,
3046                        _squaringTaskManager: tuple.4,
3047                        _permissionController: tuple.5,
3048                        _allocationManager: tuple.6,
3049                    }
3050                }
3051            }
3052        }
3053        #[automatically_derived]
3054        impl alloy_sol_types::SolConstructor for constructorCall {
3055            type Parameters<'a> = (
3056                alloy::sol_types::sol_data::Address,
3057                alloy::sol_types::sol_data::Address,
3058                alloy::sol_types::sol_data::Address,
3059                alloy::sol_types::sol_data::Address,
3060                alloy::sol_types::sol_data::Address,
3061                alloy::sol_types::sol_data::Address,
3062                alloy::sol_types::sol_data::Address,
3063            );
3064            type Token<'a> = <Self::Parameters<
3065                'a,
3066            > as alloy_sol_types::SolType>::Token<'a>;
3067            #[inline]
3068            fn new<'a>(
3069                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3070            ) -> Self {
3071                tuple.into()
3072            }
3073            #[inline]
3074            fn tokenize(&self) -> Self::Token<'_> {
3075                (
3076                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3077                        &self._avsDirectory,
3078                    ),
3079                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3080                        &self._registryCoordinator,
3081                    ),
3082                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3083                        &self._stakeRegistry,
3084                    ),
3085                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3086                        &self.rewardsCoordinator,
3087                    ),
3088                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3089                        &self._squaringTaskManager,
3090                    ),
3091                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3092                        &self._permissionController,
3093                    ),
3094                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3095                        &self._allocationManager,
3096                    ),
3097                )
3098            }
3099        }
3100    };
3101    #[derive(serde::Serialize, serde::Deserialize)]
3102    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3103    /**Function with signature `addPendingAdmin(address)` and selector `0x279432eb`.
3104```solidity
3105function addPendingAdmin(address admin) external;
3106```*/
3107    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3108    #[derive(Clone)]
3109    pub struct addPendingAdminCall {
3110        #[allow(missing_docs)]
3111        pub admin: alloy::sol_types::private::Address,
3112    }
3113    ///Container type for the return parameters of the [`addPendingAdmin(address)`](addPendingAdminCall) function.
3114    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3115    #[derive(Clone)]
3116    pub struct addPendingAdminReturn {}
3117    #[allow(
3118        non_camel_case_types,
3119        non_snake_case,
3120        clippy::pub_underscore_fields,
3121        clippy::style
3122    )]
3123    const _: () = {
3124        use alloy::sol_types as alloy_sol_types;
3125        {
3126            #[doc(hidden)]
3127            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
3128            #[doc(hidden)]
3129            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
3130            #[cfg(test)]
3131            #[allow(dead_code, unreachable_patterns)]
3132            fn _type_assertion(
3133                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3134            ) {
3135                match _t {
3136                    alloy_sol_types::private::AssertTypeEq::<
3137                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3138                    >(_) => {}
3139                }
3140            }
3141            #[automatically_derived]
3142            #[doc(hidden)]
3143            impl ::core::convert::From<addPendingAdminCall> for UnderlyingRustTuple<'_> {
3144                fn from(value: addPendingAdminCall) -> Self {
3145                    (value.admin,)
3146                }
3147            }
3148            #[automatically_derived]
3149            #[doc(hidden)]
3150            impl ::core::convert::From<UnderlyingRustTuple<'_>> for addPendingAdminCall {
3151                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3152                    Self { admin: tuple.0 }
3153                }
3154            }
3155        }
3156        {
3157            #[doc(hidden)]
3158            type UnderlyingSolTuple<'a> = ();
3159            #[doc(hidden)]
3160            type UnderlyingRustTuple<'a> = ();
3161            #[cfg(test)]
3162            #[allow(dead_code, unreachable_patterns)]
3163            fn _type_assertion(
3164                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3165            ) {
3166                match _t {
3167                    alloy_sol_types::private::AssertTypeEq::<
3168                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3169                    >(_) => {}
3170                }
3171            }
3172            #[automatically_derived]
3173            #[doc(hidden)]
3174            impl ::core::convert::From<addPendingAdminReturn>
3175            for UnderlyingRustTuple<'_> {
3176                fn from(value: addPendingAdminReturn) -> Self {
3177                    ()
3178                }
3179            }
3180            #[automatically_derived]
3181            #[doc(hidden)]
3182            impl ::core::convert::From<UnderlyingRustTuple<'_>>
3183            for addPendingAdminReturn {
3184                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3185                    Self {}
3186                }
3187            }
3188        }
3189        impl addPendingAdminReturn {
3190            fn _tokenize(
3191                &self,
3192            ) -> <addPendingAdminCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
3193                ()
3194            }
3195        }
3196        #[automatically_derived]
3197        impl alloy_sol_types::SolCall for addPendingAdminCall {
3198            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
3199            type Token<'a> = <Self::Parameters<
3200                'a,
3201            > as alloy_sol_types::SolType>::Token<'a>;
3202            type Return = addPendingAdminReturn;
3203            type ReturnTuple<'a> = ();
3204            type ReturnToken<'a> = <Self::ReturnTuple<
3205                'a,
3206            > as alloy_sol_types::SolType>::Token<'a>;
3207            const SIGNATURE: &'static str = "addPendingAdmin(address)";
3208            const SELECTOR: [u8; 4] = [39u8, 148u8, 50u8, 235u8];
3209            #[inline]
3210            fn new<'a>(
3211                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3212            ) -> Self {
3213                tuple.into()
3214            }
3215            #[inline]
3216            fn tokenize(&self) -> Self::Token<'_> {
3217                (
3218                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3219                        &self.admin,
3220                    ),
3221                )
3222            }
3223            #[inline]
3224            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
3225                addPendingAdminReturn::_tokenize(ret)
3226            }
3227            #[inline]
3228            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
3229                <Self::ReturnTuple<
3230                    '_,
3231                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
3232                    .map(Into::into)
3233            }
3234            #[inline]
3235            fn abi_decode_returns_validate(
3236                data: &[u8],
3237            ) -> alloy_sol_types::Result<Self::Return> {
3238                <Self::ReturnTuple<
3239                    '_,
3240                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3241                    .map(Into::into)
3242            }
3243        }
3244    };
3245    #[derive(serde::Serialize, serde::Deserialize)]
3246    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3247    /**Function with signature `avsDirectory()` and selector `0x6b3aa72e`.
3248```solidity
3249function avsDirectory() external view returns (address);
3250```*/
3251    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3252    #[derive(Clone)]
3253    pub struct avsDirectoryCall;
3254    #[derive(serde::Serialize, serde::Deserialize)]
3255    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3256    ///Container type for the return parameters of the [`avsDirectory()`](avsDirectoryCall) function.
3257    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3258    #[derive(Clone)]
3259    pub struct avsDirectoryReturn {
3260        #[allow(missing_docs)]
3261        pub _0: alloy::sol_types::private::Address,
3262    }
3263    #[allow(
3264        non_camel_case_types,
3265        non_snake_case,
3266        clippy::pub_underscore_fields,
3267        clippy::style
3268    )]
3269    const _: () = {
3270        use alloy::sol_types as alloy_sol_types;
3271        {
3272            #[doc(hidden)]
3273            type UnderlyingSolTuple<'a> = ();
3274            #[doc(hidden)]
3275            type UnderlyingRustTuple<'a> = ();
3276            #[cfg(test)]
3277            #[allow(dead_code, unreachable_patterns)]
3278            fn _type_assertion(
3279                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3280            ) {
3281                match _t {
3282                    alloy_sol_types::private::AssertTypeEq::<
3283                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3284                    >(_) => {}
3285                }
3286            }
3287            #[automatically_derived]
3288            #[doc(hidden)]
3289            impl ::core::convert::From<avsDirectoryCall> for UnderlyingRustTuple<'_> {
3290                fn from(value: avsDirectoryCall) -> Self {
3291                    ()
3292                }
3293            }
3294            #[automatically_derived]
3295            #[doc(hidden)]
3296            impl ::core::convert::From<UnderlyingRustTuple<'_>> for avsDirectoryCall {
3297                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3298                    Self
3299                }
3300            }
3301        }
3302        {
3303            #[doc(hidden)]
3304            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
3305            #[doc(hidden)]
3306            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
3307            #[cfg(test)]
3308            #[allow(dead_code, unreachable_patterns)]
3309            fn _type_assertion(
3310                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3311            ) {
3312                match _t {
3313                    alloy_sol_types::private::AssertTypeEq::<
3314                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3315                    >(_) => {}
3316                }
3317            }
3318            #[automatically_derived]
3319            #[doc(hidden)]
3320            impl ::core::convert::From<avsDirectoryReturn> for UnderlyingRustTuple<'_> {
3321                fn from(value: avsDirectoryReturn) -> Self {
3322                    (value._0,)
3323                }
3324            }
3325            #[automatically_derived]
3326            #[doc(hidden)]
3327            impl ::core::convert::From<UnderlyingRustTuple<'_>> for avsDirectoryReturn {
3328                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3329                    Self { _0: tuple.0 }
3330                }
3331            }
3332        }
3333        #[automatically_derived]
3334        impl alloy_sol_types::SolCall for avsDirectoryCall {
3335            type Parameters<'a> = ();
3336            type Token<'a> = <Self::Parameters<
3337                'a,
3338            > as alloy_sol_types::SolType>::Token<'a>;
3339            type Return = alloy::sol_types::private::Address;
3340            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
3341            type ReturnToken<'a> = <Self::ReturnTuple<
3342                'a,
3343            > as alloy_sol_types::SolType>::Token<'a>;
3344            const SIGNATURE: &'static str = "avsDirectory()";
3345            const SELECTOR: [u8; 4] = [107u8, 58u8, 167u8, 46u8];
3346            #[inline]
3347            fn new<'a>(
3348                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3349            ) -> Self {
3350                tuple.into()
3351            }
3352            #[inline]
3353            fn tokenize(&self) -> Self::Token<'_> {
3354                ()
3355            }
3356            #[inline]
3357            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
3358                (
3359                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3360                        ret,
3361                    ),
3362                )
3363            }
3364            #[inline]
3365            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
3366                <Self::ReturnTuple<
3367                    '_,
3368                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
3369                    .map(|r| {
3370                        let r: avsDirectoryReturn = r.into();
3371                        r._0
3372                    })
3373            }
3374            #[inline]
3375            fn abi_decode_returns_validate(
3376                data: &[u8],
3377            ) -> alloy_sol_types::Result<Self::Return> {
3378                <Self::ReturnTuple<
3379                    '_,
3380                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3381                    .map(|r| {
3382                        let r: avsDirectoryReturn = r.into();
3383                        r._0
3384                    })
3385            }
3386        }
3387    };
3388    #[derive(serde::Serialize, serde::Deserialize)]
3389    #[derive()]
3390    /**Function with signature `createAVSRewardsSubmission(((address,uint96)[],address,uint256,uint32,uint32)[])` and selector `0xfce36c7d`.
3391```solidity
3392function createAVSRewardsSubmission(IRewardsCoordinatorTypes.RewardsSubmission[] memory rewardsSubmissions) external;
3393```*/
3394    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3395    #[derive(Clone)]
3396    pub struct createAVSRewardsSubmissionCall {
3397        #[allow(missing_docs)]
3398        pub rewardsSubmissions: alloy::sol_types::private::Vec<
3399            <IRewardsCoordinatorTypes::RewardsSubmission as alloy::sol_types::SolType>::RustType,
3400        >,
3401    }
3402    ///Container type for the return parameters of the [`createAVSRewardsSubmission(((address,uint96)[],address,uint256,uint32,uint32)[])`](createAVSRewardsSubmissionCall) function.
3403    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3404    #[derive(Clone)]
3405    pub struct createAVSRewardsSubmissionReturn {}
3406    #[allow(
3407        non_camel_case_types,
3408        non_snake_case,
3409        clippy::pub_underscore_fields,
3410        clippy::style
3411    )]
3412    const _: () = {
3413        use alloy::sol_types as alloy_sol_types;
3414        {
3415            #[doc(hidden)]
3416            type UnderlyingSolTuple<'a> = (
3417                alloy::sol_types::sol_data::Array<
3418                    IRewardsCoordinatorTypes::RewardsSubmission,
3419                >,
3420            );
3421            #[doc(hidden)]
3422            type UnderlyingRustTuple<'a> = (
3423                alloy::sol_types::private::Vec<
3424                    <IRewardsCoordinatorTypes::RewardsSubmission as alloy::sol_types::SolType>::RustType,
3425                >,
3426            );
3427            #[cfg(test)]
3428            #[allow(dead_code, unreachable_patterns)]
3429            fn _type_assertion(
3430                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3431            ) {
3432                match _t {
3433                    alloy_sol_types::private::AssertTypeEq::<
3434                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3435                    >(_) => {}
3436                }
3437            }
3438            #[automatically_derived]
3439            #[doc(hidden)]
3440            impl ::core::convert::From<createAVSRewardsSubmissionCall>
3441            for UnderlyingRustTuple<'_> {
3442                fn from(value: createAVSRewardsSubmissionCall) -> Self {
3443                    (value.rewardsSubmissions,)
3444                }
3445            }
3446            #[automatically_derived]
3447            #[doc(hidden)]
3448            impl ::core::convert::From<UnderlyingRustTuple<'_>>
3449            for createAVSRewardsSubmissionCall {
3450                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3451                    Self {
3452                        rewardsSubmissions: tuple.0,
3453                    }
3454                }
3455            }
3456        }
3457        {
3458            #[doc(hidden)]
3459            type UnderlyingSolTuple<'a> = ();
3460            #[doc(hidden)]
3461            type UnderlyingRustTuple<'a> = ();
3462            #[cfg(test)]
3463            #[allow(dead_code, unreachable_patterns)]
3464            fn _type_assertion(
3465                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3466            ) {
3467                match _t {
3468                    alloy_sol_types::private::AssertTypeEq::<
3469                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3470                    >(_) => {}
3471                }
3472            }
3473            #[automatically_derived]
3474            #[doc(hidden)]
3475            impl ::core::convert::From<createAVSRewardsSubmissionReturn>
3476            for UnderlyingRustTuple<'_> {
3477                fn from(value: createAVSRewardsSubmissionReturn) -> Self {
3478                    ()
3479                }
3480            }
3481            #[automatically_derived]
3482            #[doc(hidden)]
3483            impl ::core::convert::From<UnderlyingRustTuple<'_>>
3484            for createAVSRewardsSubmissionReturn {
3485                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3486                    Self {}
3487                }
3488            }
3489        }
3490        impl createAVSRewardsSubmissionReturn {
3491            fn _tokenize(
3492                &self,
3493            ) -> <createAVSRewardsSubmissionCall as alloy_sol_types::SolCall>::ReturnToken<
3494                '_,
3495            > {
3496                ()
3497            }
3498        }
3499        #[automatically_derived]
3500        impl alloy_sol_types::SolCall for createAVSRewardsSubmissionCall {
3501            type Parameters<'a> = (
3502                alloy::sol_types::sol_data::Array<
3503                    IRewardsCoordinatorTypes::RewardsSubmission,
3504                >,
3505            );
3506            type Token<'a> = <Self::Parameters<
3507                'a,
3508            > as alloy_sol_types::SolType>::Token<'a>;
3509            type Return = createAVSRewardsSubmissionReturn;
3510            type ReturnTuple<'a> = ();
3511            type ReturnToken<'a> = <Self::ReturnTuple<
3512                'a,
3513            > as alloy_sol_types::SolType>::Token<'a>;
3514            const SIGNATURE: &'static str = "createAVSRewardsSubmission(((address,uint96)[],address,uint256,uint32,uint32)[])";
3515            const SELECTOR: [u8; 4] = [252u8, 227u8, 108u8, 125u8];
3516            #[inline]
3517            fn new<'a>(
3518                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3519            ) -> Self {
3520                tuple.into()
3521            }
3522            #[inline]
3523            fn tokenize(&self) -> Self::Token<'_> {
3524                (
3525                    <alloy::sol_types::sol_data::Array<
3526                        IRewardsCoordinatorTypes::RewardsSubmission,
3527                    > as alloy_sol_types::SolType>::tokenize(&self.rewardsSubmissions),
3528                )
3529            }
3530            #[inline]
3531            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
3532                createAVSRewardsSubmissionReturn::_tokenize(ret)
3533            }
3534            #[inline]
3535            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
3536                <Self::ReturnTuple<
3537                    '_,
3538                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
3539                    .map(Into::into)
3540            }
3541            #[inline]
3542            fn abi_decode_returns_validate(
3543                data: &[u8],
3544            ) -> alloy_sol_types::Result<Self::Return> {
3545                <Self::ReturnTuple<
3546                    '_,
3547                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3548                    .map(Into::into)
3549            }
3550        }
3551    };
3552    #[derive(serde::Serialize, serde::Deserialize)]
3553    #[derive()]
3554    /**Function with signature `createOperatorDirectedAVSRewardsSubmission(((address,uint96)[],address,(address,uint256)[],uint32,uint32,string)[])` and selector `0xa20b99bf`.
3555```solidity
3556function createOperatorDirectedAVSRewardsSubmission(IRewardsCoordinatorTypes.OperatorDirectedRewardsSubmission[] memory operatorDirectedRewardsSubmissions) external;
3557```*/
3558    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3559    #[derive(Clone)]
3560    pub struct createOperatorDirectedAVSRewardsSubmissionCall {
3561        #[allow(missing_docs)]
3562        pub operatorDirectedRewardsSubmissions: alloy::sol_types::private::Vec<
3563            <IRewardsCoordinatorTypes::OperatorDirectedRewardsSubmission as alloy::sol_types::SolType>::RustType,
3564        >,
3565    }
3566    ///Container type for the return parameters of the [`createOperatorDirectedAVSRewardsSubmission(((address,uint96)[],address,(address,uint256)[],uint32,uint32,string)[])`](createOperatorDirectedAVSRewardsSubmissionCall) function.
3567    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3568    #[derive(Clone)]
3569    pub struct createOperatorDirectedAVSRewardsSubmissionReturn {}
3570    #[allow(
3571        non_camel_case_types,
3572        non_snake_case,
3573        clippy::pub_underscore_fields,
3574        clippy::style
3575    )]
3576    const _: () = {
3577        use alloy::sol_types as alloy_sol_types;
3578        {
3579            #[doc(hidden)]
3580            type UnderlyingSolTuple<'a> = (
3581                alloy::sol_types::sol_data::Array<
3582                    IRewardsCoordinatorTypes::OperatorDirectedRewardsSubmission,
3583                >,
3584            );
3585            #[doc(hidden)]
3586            type UnderlyingRustTuple<'a> = (
3587                alloy::sol_types::private::Vec<
3588                    <IRewardsCoordinatorTypes::OperatorDirectedRewardsSubmission as alloy::sol_types::SolType>::RustType,
3589                >,
3590            );
3591            #[cfg(test)]
3592            #[allow(dead_code, unreachable_patterns)]
3593            fn _type_assertion(
3594                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3595            ) {
3596                match _t {
3597                    alloy_sol_types::private::AssertTypeEq::<
3598                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3599                    >(_) => {}
3600                }
3601            }
3602            #[automatically_derived]
3603            #[doc(hidden)]
3604            impl ::core::convert::From<createOperatorDirectedAVSRewardsSubmissionCall>
3605            for UnderlyingRustTuple<'_> {
3606                fn from(value: createOperatorDirectedAVSRewardsSubmissionCall) -> Self {
3607                    (value.operatorDirectedRewardsSubmissions,)
3608                }
3609            }
3610            #[automatically_derived]
3611            #[doc(hidden)]
3612            impl ::core::convert::From<UnderlyingRustTuple<'_>>
3613            for createOperatorDirectedAVSRewardsSubmissionCall {
3614                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3615                    Self {
3616                        operatorDirectedRewardsSubmissions: tuple.0,
3617                    }
3618                }
3619            }
3620        }
3621        {
3622            #[doc(hidden)]
3623            type UnderlyingSolTuple<'a> = ();
3624            #[doc(hidden)]
3625            type UnderlyingRustTuple<'a> = ();
3626            #[cfg(test)]
3627            #[allow(dead_code, unreachable_patterns)]
3628            fn _type_assertion(
3629                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3630            ) {
3631                match _t {
3632                    alloy_sol_types::private::AssertTypeEq::<
3633                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3634                    >(_) => {}
3635                }
3636            }
3637            #[automatically_derived]
3638            #[doc(hidden)]
3639            impl ::core::convert::From<createOperatorDirectedAVSRewardsSubmissionReturn>
3640            for UnderlyingRustTuple<'_> {
3641                fn from(
3642                    value: createOperatorDirectedAVSRewardsSubmissionReturn,
3643                ) -> Self {
3644                    ()
3645                }
3646            }
3647            #[automatically_derived]
3648            #[doc(hidden)]
3649            impl ::core::convert::From<UnderlyingRustTuple<'_>>
3650            for createOperatorDirectedAVSRewardsSubmissionReturn {
3651                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3652                    Self {}
3653                }
3654            }
3655        }
3656        impl createOperatorDirectedAVSRewardsSubmissionReturn {
3657            fn _tokenize(
3658                &self,
3659            ) -> <createOperatorDirectedAVSRewardsSubmissionCall as alloy_sol_types::SolCall>::ReturnToken<
3660                '_,
3661            > {
3662                ()
3663            }
3664        }
3665        #[automatically_derived]
3666        impl alloy_sol_types::SolCall
3667        for createOperatorDirectedAVSRewardsSubmissionCall {
3668            type Parameters<'a> = (
3669                alloy::sol_types::sol_data::Array<
3670                    IRewardsCoordinatorTypes::OperatorDirectedRewardsSubmission,
3671                >,
3672            );
3673            type Token<'a> = <Self::Parameters<
3674                'a,
3675            > as alloy_sol_types::SolType>::Token<'a>;
3676            type Return = createOperatorDirectedAVSRewardsSubmissionReturn;
3677            type ReturnTuple<'a> = ();
3678            type ReturnToken<'a> = <Self::ReturnTuple<
3679                'a,
3680            > as alloy_sol_types::SolType>::Token<'a>;
3681            const SIGNATURE: &'static str = "createOperatorDirectedAVSRewardsSubmission(((address,uint96)[],address,(address,uint256)[],uint32,uint32,string)[])";
3682            const SELECTOR: [u8; 4] = [162u8, 11u8, 153u8, 191u8];
3683            #[inline]
3684            fn new<'a>(
3685                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3686            ) -> Self {
3687                tuple.into()
3688            }
3689            #[inline]
3690            fn tokenize(&self) -> Self::Token<'_> {
3691                (
3692                    <alloy::sol_types::sol_data::Array<
3693                        IRewardsCoordinatorTypes::OperatorDirectedRewardsSubmission,
3694                    > as alloy_sol_types::SolType>::tokenize(
3695                        &self.operatorDirectedRewardsSubmissions,
3696                    ),
3697                )
3698            }
3699            #[inline]
3700            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
3701                createOperatorDirectedAVSRewardsSubmissionReturn::_tokenize(ret)
3702            }
3703            #[inline]
3704            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
3705                <Self::ReturnTuple<
3706                    '_,
3707                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
3708                    .map(Into::into)
3709            }
3710            #[inline]
3711            fn abi_decode_returns_validate(
3712                data: &[u8],
3713            ) -> alloy_sol_types::Result<Self::Return> {
3714                <Self::ReturnTuple<
3715                    '_,
3716                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3717                    .map(Into::into)
3718            }
3719        }
3720    };
3721    #[derive(serde::Serialize, serde::Deserialize)]
3722    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3723    /**Function with signature `deregisterOperatorFromAVS(address)` and selector `0xa364f4da`.
3724```solidity
3725function deregisterOperatorFromAVS(address operator) external;
3726```*/
3727    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3728    #[derive(Clone)]
3729    pub struct deregisterOperatorFromAVSCall {
3730        #[allow(missing_docs)]
3731        pub operator: alloy::sol_types::private::Address,
3732    }
3733    ///Container type for the return parameters of the [`deregisterOperatorFromAVS(address)`](deregisterOperatorFromAVSCall) function.
3734    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3735    #[derive(Clone)]
3736    pub struct deregisterOperatorFromAVSReturn {}
3737    #[allow(
3738        non_camel_case_types,
3739        non_snake_case,
3740        clippy::pub_underscore_fields,
3741        clippy::style
3742    )]
3743    const _: () = {
3744        use alloy::sol_types as alloy_sol_types;
3745        {
3746            #[doc(hidden)]
3747            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
3748            #[doc(hidden)]
3749            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
3750            #[cfg(test)]
3751            #[allow(dead_code, unreachable_patterns)]
3752            fn _type_assertion(
3753                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3754            ) {
3755                match _t {
3756                    alloy_sol_types::private::AssertTypeEq::<
3757                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3758                    >(_) => {}
3759                }
3760            }
3761            #[automatically_derived]
3762            #[doc(hidden)]
3763            impl ::core::convert::From<deregisterOperatorFromAVSCall>
3764            for UnderlyingRustTuple<'_> {
3765                fn from(value: deregisterOperatorFromAVSCall) -> Self {
3766                    (value.operator,)
3767                }
3768            }
3769            #[automatically_derived]
3770            #[doc(hidden)]
3771            impl ::core::convert::From<UnderlyingRustTuple<'_>>
3772            for deregisterOperatorFromAVSCall {
3773                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3774                    Self { operator: tuple.0 }
3775                }
3776            }
3777        }
3778        {
3779            #[doc(hidden)]
3780            type UnderlyingSolTuple<'a> = ();
3781            #[doc(hidden)]
3782            type UnderlyingRustTuple<'a> = ();
3783            #[cfg(test)]
3784            #[allow(dead_code, unreachable_patterns)]
3785            fn _type_assertion(
3786                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3787            ) {
3788                match _t {
3789                    alloy_sol_types::private::AssertTypeEq::<
3790                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3791                    >(_) => {}
3792                }
3793            }
3794            #[automatically_derived]
3795            #[doc(hidden)]
3796            impl ::core::convert::From<deregisterOperatorFromAVSReturn>
3797            for UnderlyingRustTuple<'_> {
3798                fn from(value: deregisterOperatorFromAVSReturn) -> Self {
3799                    ()
3800                }
3801            }
3802            #[automatically_derived]
3803            #[doc(hidden)]
3804            impl ::core::convert::From<UnderlyingRustTuple<'_>>
3805            for deregisterOperatorFromAVSReturn {
3806                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3807                    Self {}
3808                }
3809            }
3810        }
3811        impl deregisterOperatorFromAVSReturn {
3812            fn _tokenize(
3813                &self,
3814            ) -> <deregisterOperatorFromAVSCall as alloy_sol_types::SolCall>::ReturnToken<
3815                '_,
3816            > {
3817                ()
3818            }
3819        }
3820        #[automatically_derived]
3821        impl alloy_sol_types::SolCall for deregisterOperatorFromAVSCall {
3822            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
3823            type Token<'a> = <Self::Parameters<
3824                'a,
3825            > as alloy_sol_types::SolType>::Token<'a>;
3826            type Return = deregisterOperatorFromAVSReturn;
3827            type ReturnTuple<'a> = ();
3828            type ReturnToken<'a> = <Self::ReturnTuple<
3829                'a,
3830            > as alloy_sol_types::SolType>::Token<'a>;
3831            const SIGNATURE: &'static str = "deregisterOperatorFromAVS(address)";
3832            const SELECTOR: [u8; 4] = [163u8, 100u8, 244u8, 218u8];
3833            #[inline]
3834            fn new<'a>(
3835                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3836            ) -> Self {
3837                tuple.into()
3838            }
3839            #[inline]
3840            fn tokenize(&self) -> Self::Token<'_> {
3841                (
3842                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3843                        &self.operator,
3844                    ),
3845                )
3846            }
3847            #[inline]
3848            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
3849                deregisterOperatorFromAVSReturn::_tokenize(ret)
3850            }
3851            #[inline]
3852            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
3853                <Self::ReturnTuple<
3854                    '_,
3855                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
3856                    .map(Into::into)
3857            }
3858            #[inline]
3859            fn abi_decode_returns_validate(
3860                data: &[u8],
3861            ) -> alloy_sol_types::Result<Self::Return> {
3862                <Self::ReturnTuple<
3863                    '_,
3864                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3865                    .map(Into::into)
3866            }
3867        }
3868    };
3869    #[derive(serde::Serialize, serde::Deserialize)]
3870    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3871    /**Function with signature `deregisterOperatorFromOperatorSets(address,uint32[])` and selector `0xc1a8e2c5`.
3872```solidity
3873function deregisterOperatorFromOperatorSets(address operator, uint32[] memory operatorSetIds) external;
3874```*/
3875    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3876    #[derive(Clone)]
3877    pub struct deregisterOperatorFromOperatorSetsCall {
3878        #[allow(missing_docs)]
3879        pub operator: alloy::sol_types::private::Address,
3880        #[allow(missing_docs)]
3881        pub operatorSetIds: alloy::sol_types::private::Vec<u32>,
3882    }
3883    ///Container type for the return parameters of the [`deregisterOperatorFromOperatorSets(address,uint32[])`](deregisterOperatorFromOperatorSetsCall) function.
3884    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3885    #[derive(Clone)]
3886    pub struct deregisterOperatorFromOperatorSetsReturn {}
3887    #[allow(
3888        non_camel_case_types,
3889        non_snake_case,
3890        clippy::pub_underscore_fields,
3891        clippy::style
3892    )]
3893    const _: () = {
3894        use alloy::sol_types as alloy_sol_types;
3895        {
3896            #[doc(hidden)]
3897            type UnderlyingSolTuple<'a> = (
3898                alloy::sol_types::sol_data::Address,
3899                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<32>>,
3900            );
3901            #[doc(hidden)]
3902            type UnderlyingRustTuple<'a> = (
3903                alloy::sol_types::private::Address,
3904                alloy::sol_types::private::Vec<u32>,
3905            );
3906            #[cfg(test)]
3907            #[allow(dead_code, unreachable_patterns)]
3908            fn _type_assertion(
3909                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3910            ) {
3911                match _t {
3912                    alloy_sol_types::private::AssertTypeEq::<
3913                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3914                    >(_) => {}
3915                }
3916            }
3917            #[automatically_derived]
3918            #[doc(hidden)]
3919            impl ::core::convert::From<deregisterOperatorFromOperatorSetsCall>
3920            for UnderlyingRustTuple<'_> {
3921                fn from(value: deregisterOperatorFromOperatorSetsCall) -> Self {
3922                    (value.operator, value.operatorSetIds)
3923                }
3924            }
3925            #[automatically_derived]
3926            #[doc(hidden)]
3927            impl ::core::convert::From<UnderlyingRustTuple<'_>>
3928            for deregisterOperatorFromOperatorSetsCall {
3929                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3930                    Self {
3931                        operator: tuple.0,
3932                        operatorSetIds: tuple.1,
3933                    }
3934                }
3935            }
3936        }
3937        {
3938            #[doc(hidden)]
3939            type UnderlyingSolTuple<'a> = ();
3940            #[doc(hidden)]
3941            type UnderlyingRustTuple<'a> = ();
3942            #[cfg(test)]
3943            #[allow(dead_code, unreachable_patterns)]
3944            fn _type_assertion(
3945                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3946            ) {
3947                match _t {
3948                    alloy_sol_types::private::AssertTypeEq::<
3949                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3950                    >(_) => {}
3951                }
3952            }
3953            #[automatically_derived]
3954            #[doc(hidden)]
3955            impl ::core::convert::From<deregisterOperatorFromOperatorSetsReturn>
3956            for UnderlyingRustTuple<'_> {
3957                fn from(value: deregisterOperatorFromOperatorSetsReturn) -> Self {
3958                    ()
3959                }
3960            }
3961            #[automatically_derived]
3962            #[doc(hidden)]
3963            impl ::core::convert::From<UnderlyingRustTuple<'_>>
3964            for deregisterOperatorFromOperatorSetsReturn {
3965                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3966                    Self {}
3967                }
3968            }
3969        }
3970        impl deregisterOperatorFromOperatorSetsReturn {
3971            fn _tokenize(
3972                &self,
3973            ) -> <deregisterOperatorFromOperatorSetsCall as alloy_sol_types::SolCall>::ReturnToken<
3974                '_,
3975            > {
3976                ()
3977            }
3978        }
3979        #[automatically_derived]
3980        impl alloy_sol_types::SolCall for deregisterOperatorFromOperatorSetsCall {
3981            type Parameters<'a> = (
3982                alloy::sol_types::sol_data::Address,
3983                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<32>>,
3984            );
3985            type Token<'a> = <Self::Parameters<
3986                'a,
3987            > as alloy_sol_types::SolType>::Token<'a>;
3988            type Return = deregisterOperatorFromOperatorSetsReturn;
3989            type ReturnTuple<'a> = ();
3990            type ReturnToken<'a> = <Self::ReturnTuple<
3991                'a,
3992            > as alloy_sol_types::SolType>::Token<'a>;
3993            const SIGNATURE: &'static str = "deregisterOperatorFromOperatorSets(address,uint32[])";
3994            const SELECTOR: [u8; 4] = [193u8, 168u8, 226u8, 197u8];
3995            #[inline]
3996            fn new<'a>(
3997                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3998            ) -> Self {
3999                tuple.into()
4000            }
4001            #[inline]
4002            fn tokenize(&self) -> Self::Token<'_> {
4003                (
4004                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4005                        &self.operator,
4006                    ),
4007                    <alloy::sol_types::sol_data::Array<
4008                        alloy::sol_types::sol_data::Uint<32>,
4009                    > as alloy_sol_types::SolType>::tokenize(&self.operatorSetIds),
4010                )
4011            }
4012            #[inline]
4013            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4014                deregisterOperatorFromOperatorSetsReturn::_tokenize(ret)
4015            }
4016            #[inline]
4017            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4018                <Self::ReturnTuple<
4019                    '_,
4020                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4021                    .map(Into::into)
4022            }
4023            #[inline]
4024            fn abi_decode_returns_validate(
4025                data: &[u8],
4026            ) -> alloy_sol_types::Result<Self::Return> {
4027                <Self::ReturnTuple<
4028                    '_,
4029                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4030                    .map(Into::into)
4031            }
4032        }
4033    };
4034    #[derive(serde::Serialize, serde::Deserialize)]
4035    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4036    /**Function with signature `freezeOperator(address)` and selector `0x38c8ee64`.
4037```solidity
4038function freezeOperator(address operatorAddr) external;
4039```*/
4040    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4041    #[derive(Clone)]
4042    pub struct freezeOperatorCall {
4043        #[allow(missing_docs)]
4044        pub operatorAddr: alloy::sol_types::private::Address,
4045    }
4046    ///Container type for the return parameters of the [`freezeOperator(address)`](freezeOperatorCall) function.
4047    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4048    #[derive(Clone)]
4049    pub struct freezeOperatorReturn {}
4050    #[allow(
4051        non_camel_case_types,
4052        non_snake_case,
4053        clippy::pub_underscore_fields,
4054        clippy::style
4055    )]
4056    const _: () = {
4057        use alloy::sol_types as alloy_sol_types;
4058        {
4059            #[doc(hidden)]
4060            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4061            #[doc(hidden)]
4062            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4063            #[cfg(test)]
4064            #[allow(dead_code, unreachable_patterns)]
4065            fn _type_assertion(
4066                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4067            ) {
4068                match _t {
4069                    alloy_sol_types::private::AssertTypeEq::<
4070                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4071                    >(_) => {}
4072                }
4073            }
4074            #[automatically_derived]
4075            #[doc(hidden)]
4076            impl ::core::convert::From<freezeOperatorCall> for UnderlyingRustTuple<'_> {
4077                fn from(value: freezeOperatorCall) -> Self {
4078                    (value.operatorAddr,)
4079                }
4080            }
4081            #[automatically_derived]
4082            #[doc(hidden)]
4083            impl ::core::convert::From<UnderlyingRustTuple<'_>> for freezeOperatorCall {
4084                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4085                    Self { operatorAddr: tuple.0 }
4086                }
4087            }
4088        }
4089        {
4090            #[doc(hidden)]
4091            type UnderlyingSolTuple<'a> = ();
4092            #[doc(hidden)]
4093            type UnderlyingRustTuple<'a> = ();
4094            #[cfg(test)]
4095            #[allow(dead_code, unreachable_patterns)]
4096            fn _type_assertion(
4097                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4098            ) {
4099                match _t {
4100                    alloy_sol_types::private::AssertTypeEq::<
4101                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4102                    >(_) => {}
4103                }
4104            }
4105            #[automatically_derived]
4106            #[doc(hidden)]
4107            impl ::core::convert::From<freezeOperatorReturn>
4108            for UnderlyingRustTuple<'_> {
4109                fn from(value: freezeOperatorReturn) -> Self {
4110                    ()
4111                }
4112            }
4113            #[automatically_derived]
4114            #[doc(hidden)]
4115            impl ::core::convert::From<UnderlyingRustTuple<'_>>
4116            for freezeOperatorReturn {
4117                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4118                    Self {}
4119                }
4120            }
4121        }
4122        impl freezeOperatorReturn {
4123            fn _tokenize(
4124                &self,
4125            ) -> <freezeOperatorCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
4126                ()
4127            }
4128        }
4129        #[automatically_derived]
4130        impl alloy_sol_types::SolCall for freezeOperatorCall {
4131            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
4132            type Token<'a> = <Self::Parameters<
4133                'a,
4134            > as alloy_sol_types::SolType>::Token<'a>;
4135            type Return = freezeOperatorReturn;
4136            type ReturnTuple<'a> = ();
4137            type ReturnToken<'a> = <Self::ReturnTuple<
4138                'a,
4139            > as alloy_sol_types::SolType>::Token<'a>;
4140            const SIGNATURE: &'static str = "freezeOperator(address)";
4141            const SELECTOR: [u8; 4] = [56u8, 200u8, 238u8, 100u8];
4142            #[inline]
4143            fn new<'a>(
4144                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4145            ) -> Self {
4146                tuple.into()
4147            }
4148            #[inline]
4149            fn tokenize(&self) -> Self::Token<'_> {
4150                (
4151                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4152                        &self.operatorAddr,
4153                    ),
4154                )
4155            }
4156            #[inline]
4157            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4158                freezeOperatorReturn::_tokenize(ret)
4159            }
4160            #[inline]
4161            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4162                <Self::ReturnTuple<
4163                    '_,
4164                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4165                    .map(Into::into)
4166            }
4167            #[inline]
4168            fn abi_decode_returns_validate(
4169                data: &[u8],
4170            ) -> alloy_sol_types::Result<Self::Return> {
4171                <Self::ReturnTuple<
4172                    '_,
4173                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4174                    .map(Into::into)
4175            }
4176        }
4177    };
4178    #[derive(serde::Serialize, serde::Deserialize)]
4179    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4180    /**Function with signature `getOperatorRestakedStrategies(address)` and selector `0x33cfb7b7`.
4181```solidity
4182function getOperatorRestakedStrategies(address operator) external view returns (address[] memory);
4183```*/
4184    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4185    #[derive(Clone)]
4186    pub struct getOperatorRestakedStrategiesCall {
4187        #[allow(missing_docs)]
4188        pub operator: alloy::sol_types::private::Address,
4189    }
4190    #[derive(serde::Serialize, serde::Deserialize)]
4191    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4192    ///Container type for the return parameters of the [`getOperatorRestakedStrategies(address)`](getOperatorRestakedStrategiesCall) function.
4193    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4194    #[derive(Clone)]
4195    pub struct getOperatorRestakedStrategiesReturn {
4196        #[allow(missing_docs)]
4197        pub _0: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
4198    }
4199    #[allow(
4200        non_camel_case_types,
4201        non_snake_case,
4202        clippy::pub_underscore_fields,
4203        clippy::style
4204    )]
4205    const _: () = {
4206        use alloy::sol_types as alloy_sol_types;
4207        {
4208            #[doc(hidden)]
4209            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4210            #[doc(hidden)]
4211            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4212            #[cfg(test)]
4213            #[allow(dead_code, unreachable_patterns)]
4214            fn _type_assertion(
4215                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4216            ) {
4217                match _t {
4218                    alloy_sol_types::private::AssertTypeEq::<
4219                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4220                    >(_) => {}
4221                }
4222            }
4223            #[automatically_derived]
4224            #[doc(hidden)]
4225            impl ::core::convert::From<getOperatorRestakedStrategiesCall>
4226            for UnderlyingRustTuple<'_> {
4227                fn from(value: getOperatorRestakedStrategiesCall) -> Self {
4228                    (value.operator,)
4229                }
4230            }
4231            #[automatically_derived]
4232            #[doc(hidden)]
4233            impl ::core::convert::From<UnderlyingRustTuple<'_>>
4234            for getOperatorRestakedStrategiesCall {
4235                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4236                    Self { operator: tuple.0 }
4237                }
4238            }
4239        }
4240        {
4241            #[doc(hidden)]
4242            type UnderlyingSolTuple<'a> = (
4243                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
4244            );
4245            #[doc(hidden)]
4246            type UnderlyingRustTuple<'a> = (
4247                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
4248            );
4249            #[cfg(test)]
4250            #[allow(dead_code, unreachable_patterns)]
4251            fn _type_assertion(
4252                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4253            ) {
4254                match _t {
4255                    alloy_sol_types::private::AssertTypeEq::<
4256                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4257                    >(_) => {}
4258                }
4259            }
4260            #[automatically_derived]
4261            #[doc(hidden)]
4262            impl ::core::convert::From<getOperatorRestakedStrategiesReturn>
4263            for UnderlyingRustTuple<'_> {
4264                fn from(value: getOperatorRestakedStrategiesReturn) -> Self {
4265                    (value._0,)
4266                }
4267            }
4268            #[automatically_derived]
4269            #[doc(hidden)]
4270            impl ::core::convert::From<UnderlyingRustTuple<'_>>
4271            for getOperatorRestakedStrategiesReturn {
4272                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4273                    Self { _0: tuple.0 }
4274                }
4275            }
4276        }
4277        #[automatically_derived]
4278        impl alloy_sol_types::SolCall for getOperatorRestakedStrategiesCall {
4279            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
4280            type Token<'a> = <Self::Parameters<
4281                'a,
4282            > as alloy_sol_types::SolType>::Token<'a>;
4283            type Return = alloy::sol_types::private::Vec<
4284                alloy::sol_types::private::Address,
4285            >;
4286            type ReturnTuple<'a> = (
4287                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
4288            );
4289            type ReturnToken<'a> = <Self::ReturnTuple<
4290                'a,
4291            > as alloy_sol_types::SolType>::Token<'a>;
4292            const SIGNATURE: &'static str = "getOperatorRestakedStrategies(address)";
4293            const SELECTOR: [u8; 4] = [51u8, 207u8, 183u8, 183u8];
4294            #[inline]
4295            fn new<'a>(
4296                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4297            ) -> Self {
4298                tuple.into()
4299            }
4300            #[inline]
4301            fn tokenize(&self) -> Self::Token<'_> {
4302                (
4303                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4304                        &self.operator,
4305                    ),
4306                )
4307            }
4308            #[inline]
4309            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4310                (
4311                    <alloy::sol_types::sol_data::Array<
4312                        alloy::sol_types::sol_data::Address,
4313                    > as alloy_sol_types::SolType>::tokenize(ret),
4314                )
4315            }
4316            #[inline]
4317            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4318                <Self::ReturnTuple<
4319                    '_,
4320                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4321                    .map(|r| {
4322                        let r: getOperatorRestakedStrategiesReturn = r.into();
4323                        r._0
4324                    })
4325            }
4326            #[inline]
4327            fn abi_decode_returns_validate(
4328                data: &[u8],
4329            ) -> alloy_sol_types::Result<Self::Return> {
4330                <Self::ReturnTuple<
4331                    '_,
4332                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4333                    .map(|r| {
4334                        let r: getOperatorRestakedStrategiesReturn = r.into();
4335                        r._0
4336                    })
4337            }
4338        }
4339    };
4340    #[derive(serde::Serialize, serde::Deserialize)]
4341    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4342    /**Function with signature `getRestakeableStrategies()` and selector `0xe481af9d`.
4343```solidity
4344function getRestakeableStrategies() external view returns (address[] memory);
4345```*/
4346    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4347    #[derive(Clone)]
4348    pub struct getRestakeableStrategiesCall;
4349    #[derive(serde::Serialize, serde::Deserialize)]
4350    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4351    ///Container type for the return parameters of the [`getRestakeableStrategies()`](getRestakeableStrategiesCall) function.
4352    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4353    #[derive(Clone)]
4354    pub struct getRestakeableStrategiesReturn {
4355        #[allow(missing_docs)]
4356        pub _0: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
4357    }
4358    #[allow(
4359        non_camel_case_types,
4360        non_snake_case,
4361        clippy::pub_underscore_fields,
4362        clippy::style
4363    )]
4364    const _: () = {
4365        use alloy::sol_types as alloy_sol_types;
4366        {
4367            #[doc(hidden)]
4368            type UnderlyingSolTuple<'a> = ();
4369            #[doc(hidden)]
4370            type UnderlyingRustTuple<'a> = ();
4371            #[cfg(test)]
4372            #[allow(dead_code, unreachable_patterns)]
4373            fn _type_assertion(
4374                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4375            ) {
4376                match _t {
4377                    alloy_sol_types::private::AssertTypeEq::<
4378                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4379                    >(_) => {}
4380                }
4381            }
4382            #[automatically_derived]
4383            #[doc(hidden)]
4384            impl ::core::convert::From<getRestakeableStrategiesCall>
4385            for UnderlyingRustTuple<'_> {
4386                fn from(value: getRestakeableStrategiesCall) -> Self {
4387                    ()
4388                }
4389            }
4390            #[automatically_derived]
4391            #[doc(hidden)]
4392            impl ::core::convert::From<UnderlyingRustTuple<'_>>
4393            for getRestakeableStrategiesCall {
4394                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4395                    Self
4396                }
4397            }
4398        }
4399        {
4400            #[doc(hidden)]
4401            type UnderlyingSolTuple<'a> = (
4402                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
4403            );
4404            #[doc(hidden)]
4405            type UnderlyingRustTuple<'a> = (
4406                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
4407            );
4408            #[cfg(test)]
4409            #[allow(dead_code, unreachable_patterns)]
4410            fn _type_assertion(
4411                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4412            ) {
4413                match _t {
4414                    alloy_sol_types::private::AssertTypeEq::<
4415                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4416                    >(_) => {}
4417                }
4418            }
4419            #[automatically_derived]
4420            #[doc(hidden)]
4421            impl ::core::convert::From<getRestakeableStrategiesReturn>
4422            for UnderlyingRustTuple<'_> {
4423                fn from(value: getRestakeableStrategiesReturn) -> Self {
4424                    (value._0,)
4425                }
4426            }
4427            #[automatically_derived]
4428            #[doc(hidden)]
4429            impl ::core::convert::From<UnderlyingRustTuple<'_>>
4430            for getRestakeableStrategiesReturn {
4431                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4432                    Self { _0: tuple.0 }
4433                }
4434            }
4435        }
4436        #[automatically_derived]
4437        impl alloy_sol_types::SolCall for getRestakeableStrategiesCall {
4438            type Parameters<'a> = ();
4439            type Token<'a> = <Self::Parameters<
4440                'a,
4441            > as alloy_sol_types::SolType>::Token<'a>;
4442            type Return = alloy::sol_types::private::Vec<
4443                alloy::sol_types::private::Address,
4444            >;
4445            type ReturnTuple<'a> = (
4446                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
4447            );
4448            type ReturnToken<'a> = <Self::ReturnTuple<
4449                'a,
4450            > as alloy_sol_types::SolType>::Token<'a>;
4451            const SIGNATURE: &'static str = "getRestakeableStrategies()";
4452            const SELECTOR: [u8; 4] = [228u8, 129u8, 175u8, 157u8];
4453            #[inline]
4454            fn new<'a>(
4455                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4456            ) -> Self {
4457                tuple.into()
4458            }
4459            #[inline]
4460            fn tokenize(&self) -> Self::Token<'_> {
4461                ()
4462            }
4463            #[inline]
4464            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4465                (
4466                    <alloy::sol_types::sol_data::Array<
4467                        alloy::sol_types::sol_data::Address,
4468                    > as alloy_sol_types::SolType>::tokenize(ret),
4469                )
4470            }
4471            #[inline]
4472            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4473                <Self::ReturnTuple<
4474                    '_,
4475                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4476                    .map(|r| {
4477                        let r: getRestakeableStrategiesReturn = r.into();
4478                        r._0
4479                    })
4480            }
4481            #[inline]
4482            fn abi_decode_returns_validate(
4483                data: &[u8],
4484            ) -> alloy_sol_types::Result<Self::Return> {
4485                <Self::ReturnTuple<
4486                    '_,
4487                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4488                    .map(|r| {
4489                        let r: getRestakeableStrategiesReturn = r.into();
4490                        r._0
4491                    })
4492            }
4493        }
4494    };
4495    #[derive(serde::Serialize, serde::Deserialize)]
4496    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4497    /**Function with signature `initialize(address,address)` and selector `0x485cc955`.
4498```solidity
4499function initialize(address initialOwner, address rewardsInitiator) external;
4500```*/
4501    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4502    #[derive(Clone)]
4503    pub struct initializeCall {
4504        #[allow(missing_docs)]
4505        pub initialOwner: alloy::sol_types::private::Address,
4506        #[allow(missing_docs)]
4507        pub rewardsInitiator: alloy::sol_types::private::Address,
4508    }
4509    ///Container type for the return parameters of the [`initialize(address,address)`](initializeCall) function.
4510    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4511    #[derive(Clone)]
4512    pub struct initializeReturn {}
4513    #[allow(
4514        non_camel_case_types,
4515        non_snake_case,
4516        clippy::pub_underscore_fields,
4517        clippy::style
4518    )]
4519    const _: () = {
4520        use alloy::sol_types as alloy_sol_types;
4521        {
4522            #[doc(hidden)]
4523            type UnderlyingSolTuple<'a> = (
4524                alloy::sol_types::sol_data::Address,
4525                alloy::sol_types::sol_data::Address,
4526            );
4527            #[doc(hidden)]
4528            type UnderlyingRustTuple<'a> = (
4529                alloy::sol_types::private::Address,
4530                alloy::sol_types::private::Address,
4531            );
4532            #[cfg(test)]
4533            #[allow(dead_code, unreachable_patterns)]
4534            fn _type_assertion(
4535                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4536            ) {
4537                match _t {
4538                    alloy_sol_types::private::AssertTypeEq::<
4539                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4540                    >(_) => {}
4541                }
4542            }
4543            #[automatically_derived]
4544            #[doc(hidden)]
4545            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
4546                fn from(value: initializeCall) -> Self {
4547                    (value.initialOwner, value.rewardsInitiator)
4548                }
4549            }
4550            #[automatically_derived]
4551            #[doc(hidden)]
4552            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
4553                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4554                    Self {
4555                        initialOwner: tuple.0,
4556                        rewardsInitiator: tuple.1,
4557                    }
4558                }
4559            }
4560        }
4561        {
4562            #[doc(hidden)]
4563            type UnderlyingSolTuple<'a> = ();
4564            #[doc(hidden)]
4565            type UnderlyingRustTuple<'a> = ();
4566            #[cfg(test)]
4567            #[allow(dead_code, unreachable_patterns)]
4568            fn _type_assertion(
4569                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4570            ) {
4571                match _t {
4572                    alloy_sol_types::private::AssertTypeEq::<
4573                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4574                    >(_) => {}
4575                }
4576            }
4577            #[automatically_derived]
4578            #[doc(hidden)]
4579            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
4580                fn from(value: initializeReturn) -> Self {
4581                    ()
4582                }
4583            }
4584            #[automatically_derived]
4585            #[doc(hidden)]
4586            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
4587                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4588                    Self {}
4589                }
4590            }
4591        }
4592        impl initializeReturn {
4593            fn _tokenize(
4594                &self,
4595            ) -> <initializeCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
4596                ()
4597            }
4598        }
4599        #[automatically_derived]
4600        impl alloy_sol_types::SolCall for initializeCall {
4601            type Parameters<'a> = (
4602                alloy::sol_types::sol_data::Address,
4603                alloy::sol_types::sol_data::Address,
4604            );
4605            type Token<'a> = <Self::Parameters<
4606                'a,
4607            > as alloy_sol_types::SolType>::Token<'a>;
4608            type Return = initializeReturn;
4609            type ReturnTuple<'a> = ();
4610            type ReturnToken<'a> = <Self::ReturnTuple<
4611                'a,
4612            > as alloy_sol_types::SolType>::Token<'a>;
4613            const SIGNATURE: &'static str = "initialize(address,address)";
4614            const SELECTOR: [u8; 4] = [72u8, 92u8, 201u8, 85u8];
4615            #[inline]
4616            fn new<'a>(
4617                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4618            ) -> Self {
4619                tuple.into()
4620            }
4621            #[inline]
4622            fn tokenize(&self) -> Self::Token<'_> {
4623                (
4624                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4625                        &self.initialOwner,
4626                    ),
4627                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4628                        &self.rewardsInitiator,
4629                    ),
4630                )
4631            }
4632            #[inline]
4633            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4634                initializeReturn::_tokenize(ret)
4635            }
4636            #[inline]
4637            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4638                <Self::ReturnTuple<
4639                    '_,
4640                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4641                    .map(Into::into)
4642            }
4643            #[inline]
4644            fn abi_decode_returns_validate(
4645                data: &[u8],
4646            ) -> alloy_sol_types::Result<Self::Return> {
4647                <Self::ReturnTuple<
4648                    '_,
4649                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4650                    .map(Into::into)
4651            }
4652        }
4653    };
4654    #[derive(serde::Serialize, serde::Deserialize)]
4655    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4656    /**Function with signature `owner()` and selector `0x8da5cb5b`.
4657```solidity
4658function owner() external view returns (address);
4659```*/
4660    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4661    #[derive(Clone)]
4662    pub struct ownerCall;
4663    #[derive(serde::Serialize, serde::Deserialize)]
4664    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4665    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
4666    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4667    #[derive(Clone)]
4668    pub struct ownerReturn {
4669        #[allow(missing_docs)]
4670        pub _0: alloy::sol_types::private::Address,
4671    }
4672    #[allow(
4673        non_camel_case_types,
4674        non_snake_case,
4675        clippy::pub_underscore_fields,
4676        clippy::style
4677    )]
4678    const _: () = {
4679        use alloy::sol_types as alloy_sol_types;
4680        {
4681            #[doc(hidden)]
4682            type UnderlyingSolTuple<'a> = ();
4683            #[doc(hidden)]
4684            type UnderlyingRustTuple<'a> = ();
4685            #[cfg(test)]
4686            #[allow(dead_code, unreachable_patterns)]
4687            fn _type_assertion(
4688                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4689            ) {
4690                match _t {
4691                    alloy_sol_types::private::AssertTypeEq::<
4692                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4693                    >(_) => {}
4694                }
4695            }
4696            #[automatically_derived]
4697            #[doc(hidden)]
4698            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
4699                fn from(value: ownerCall) -> Self {
4700                    ()
4701                }
4702            }
4703            #[automatically_derived]
4704            #[doc(hidden)]
4705            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
4706                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4707                    Self
4708                }
4709            }
4710        }
4711        {
4712            #[doc(hidden)]
4713            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4714            #[doc(hidden)]
4715            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4716            #[cfg(test)]
4717            #[allow(dead_code, unreachable_patterns)]
4718            fn _type_assertion(
4719                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4720            ) {
4721                match _t {
4722                    alloy_sol_types::private::AssertTypeEq::<
4723                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4724                    >(_) => {}
4725                }
4726            }
4727            #[automatically_derived]
4728            #[doc(hidden)]
4729            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
4730                fn from(value: ownerReturn) -> Self {
4731                    (value._0,)
4732                }
4733            }
4734            #[automatically_derived]
4735            #[doc(hidden)]
4736            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
4737                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4738                    Self { _0: tuple.0 }
4739                }
4740            }
4741        }
4742        #[automatically_derived]
4743        impl alloy_sol_types::SolCall for ownerCall {
4744            type Parameters<'a> = ();
4745            type Token<'a> = <Self::Parameters<
4746                'a,
4747            > as alloy_sol_types::SolType>::Token<'a>;
4748            type Return = alloy::sol_types::private::Address;
4749            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
4750            type ReturnToken<'a> = <Self::ReturnTuple<
4751                'a,
4752            > as alloy_sol_types::SolType>::Token<'a>;
4753            const SIGNATURE: &'static str = "owner()";
4754            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
4755            #[inline]
4756            fn new<'a>(
4757                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4758            ) -> Self {
4759                tuple.into()
4760            }
4761            #[inline]
4762            fn tokenize(&self) -> Self::Token<'_> {
4763                ()
4764            }
4765            #[inline]
4766            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4767                (
4768                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4769                        ret,
4770                    ),
4771                )
4772            }
4773            #[inline]
4774            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4775                <Self::ReturnTuple<
4776                    '_,
4777                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4778                    .map(|r| {
4779                        let r: ownerReturn = r.into();
4780                        r._0
4781                    })
4782            }
4783            #[inline]
4784            fn abi_decode_returns_validate(
4785                data: &[u8],
4786            ) -> alloy_sol_types::Result<Self::Return> {
4787                <Self::ReturnTuple<
4788                    '_,
4789                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4790                    .map(|r| {
4791                        let r: ownerReturn = r.into();
4792                        r._0
4793                    })
4794            }
4795        }
4796    };
4797    #[derive(serde::Serialize, serde::Deserialize)]
4798    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4799    /**Function with signature `registerOperatorToAVS(address,(bytes,bytes32,uint256))` and selector `0x9926ee7d`.
4800```solidity
4801function registerOperatorToAVS(address operator, ISignatureUtilsMixinTypes.SignatureWithSaltAndExpiry memory operatorSignature) external;
4802```*/
4803    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4804    #[derive(Clone)]
4805    pub struct registerOperatorToAVSCall {
4806        #[allow(missing_docs)]
4807        pub operator: alloy::sol_types::private::Address,
4808        #[allow(missing_docs)]
4809        pub operatorSignature: <ISignatureUtilsMixinTypes::SignatureWithSaltAndExpiry as alloy::sol_types::SolType>::RustType,
4810    }
4811    ///Container type for the return parameters of the [`registerOperatorToAVS(address,(bytes,bytes32,uint256))`](registerOperatorToAVSCall) function.
4812    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4813    #[derive(Clone)]
4814    pub struct registerOperatorToAVSReturn {}
4815    #[allow(
4816        non_camel_case_types,
4817        non_snake_case,
4818        clippy::pub_underscore_fields,
4819        clippy::style
4820    )]
4821    const _: () = {
4822        use alloy::sol_types as alloy_sol_types;
4823        {
4824            #[doc(hidden)]
4825            type UnderlyingSolTuple<'a> = (
4826                alloy::sol_types::sol_data::Address,
4827                ISignatureUtilsMixinTypes::SignatureWithSaltAndExpiry,
4828            );
4829            #[doc(hidden)]
4830            type UnderlyingRustTuple<'a> = (
4831                alloy::sol_types::private::Address,
4832                <ISignatureUtilsMixinTypes::SignatureWithSaltAndExpiry as alloy::sol_types::SolType>::RustType,
4833            );
4834            #[cfg(test)]
4835            #[allow(dead_code, unreachable_patterns)]
4836            fn _type_assertion(
4837                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4838            ) {
4839                match _t {
4840                    alloy_sol_types::private::AssertTypeEq::<
4841                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4842                    >(_) => {}
4843                }
4844            }
4845            #[automatically_derived]
4846            #[doc(hidden)]
4847            impl ::core::convert::From<registerOperatorToAVSCall>
4848            for UnderlyingRustTuple<'_> {
4849                fn from(value: registerOperatorToAVSCall) -> Self {
4850                    (value.operator, value.operatorSignature)
4851                }
4852            }
4853            #[automatically_derived]
4854            #[doc(hidden)]
4855            impl ::core::convert::From<UnderlyingRustTuple<'_>>
4856            for registerOperatorToAVSCall {
4857                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4858                    Self {
4859                        operator: tuple.0,
4860                        operatorSignature: tuple.1,
4861                    }
4862                }
4863            }
4864        }
4865        {
4866            #[doc(hidden)]
4867            type UnderlyingSolTuple<'a> = ();
4868            #[doc(hidden)]
4869            type UnderlyingRustTuple<'a> = ();
4870            #[cfg(test)]
4871            #[allow(dead_code, unreachable_patterns)]
4872            fn _type_assertion(
4873                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4874            ) {
4875                match _t {
4876                    alloy_sol_types::private::AssertTypeEq::<
4877                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4878                    >(_) => {}
4879                }
4880            }
4881            #[automatically_derived]
4882            #[doc(hidden)]
4883            impl ::core::convert::From<registerOperatorToAVSReturn>
4884            for UnderlyingRustTuple<'_> {
4885                fn from(value: registerOperatorToAVSReturn) -> Self {
4886                    ()
4887                }
4888            }
4889            #[automatically_derived]
4890            #[doc(hidden)]
4891            impl ::core::convert::From<UnderlyingRustTuple<'_>>
4892            for registerOperatorToAVSReturn {
4893                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4894                    Self {}
4895                }
4896            }
4897        }
4898        impl registerOperatorToAVSReturn {
4899            fn _tokenize(
4900                &self,
4901            ) -> <registerOperatorToAVSCall as alloy_sol_types::SolCall>::ReturnToken<
4902                '_,
4903            > {
4904                ()
4905            }
4906        }
4907        #[automatically_derived]
4908        impl alloy_sol_types::SolCall for registerOperatorToAVSCall {
4909            type Parameters<'a> = (
4910                alloy::sol_types::sol_data::Address,
4911                ISignatureUtilsMixinTypes::SignatureWithSaltAndExpiry,
4912            );
4913            type Token<'a> = <Self::Parameters<
4914                'a,
4915            > as alloy_sol_types::SolType>::Token<'a>;
4916            type Return = registerOperatorToAVSReturn;
4917            type ReturnTuple<'a> = ();
4918            type ReturnToken<'a> = <Self::ReturnTuple<
4919                'a,
4920            > as alloy_sol_types::SolType>::Token<'a>;
4921            const SIGNATURE: &'static str = "registerOperatorToAVS(address,(bytes,bytes32,uint256))";
4922            const SELECTOR: [u8; 4] = [153u8, 38u8, 238u8, 125u8];
4923            #[inline]
4924            fn new<'a>(
4925                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4926            ) -> Self {
4927                tuple.into()
4928            }
4929            #[inline]
4930            fn tokenize(&self) -> Self::Token<'_> {
4931                (
4932                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4933                        &self.operator,
4934                    ),
4935                    <ISignatureUtilsMixinTypes::SignatureWithSaltAndExpiry as alloy_sol_types::SolType>::tokenize(
4936                        &self.operatorSignature,
4937                    ),
4938                )
4939            }
4940            #[inline]
4941            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4942                registerOperatorToAVSReturn::_tokenize(ret)
4943            }
4944            #[inline]
4945            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4946                <Self::ReturnTuple<
4947                    '_,
4948                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4949                    .map(Into::into)
4950            }
4951            #[inline]
4952            fn abi_decode_returns_validate(
4953                data: &[u8],
4954            ) -> alloy_sol_types::Result<Self::Return> {
4955                <Self::ReturnTuple<
4956                    '_,
4957                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4958                    .map(Into::into)
4959            }
4960        }
4961    };
4962    #[derive(serde::Serialize, serde::Deserialize)]
4963    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4964    /**Function with signature `removeAdmin(address)` and selector `0x1785f53c`.
4965```solidity
4966function removeAdmin(address admin) external;
4967```*/
4968    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4969    #[derive(Clone)]
4970    pub struct removeAdminCall {
4971        #[allow(missing_docs)]
4972        pub admin: alloy::sol_types::private::Address,
4973    }
4974    ///Container type for the return parameters of the [`removeAdmin(address)`](removeAdminCall) function.
4975    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4976    #[derive(Clone)]
4977    pub struct removeAdminReturn {}
4978    #[allow(
4979        non_camel_case_types,
4980        non_snake_case,
4981        clippy::pub_underscore_fields,
4982        clippy::style
4983    )]
4984    const _: () = {
4985        use alloy::sol_types as alloy_sol_types;
4986        {
4987            #[doc(hidden)]
4988            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4989            #[doc(hidden)]
4990            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4991            #[cfg(test)]
4992            #[allow(dead_code, unreachable_patterns)]
4993            fn _type_assertion(
4994                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4995            ) {
4996                match _t {
4997                    alloy_sol_types::private::AssertTypeEq::<
4998                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4999                    >(_) => {}
5000                }
5001            }
5002            #[automatically_derived]
5003            #[doc(hidden)]
5004            impl ::core::convert::From<removeAdminCall> for UnderlyingRustTuple<'_> {
5005                fn from(value: removeAdminCall) -> Self {
5006                    (value.admin,)
5007                }
5008            }
5009            #[automatically_derived]
5010            #[doc(hidden)]
5011            impl ::core::convert::From<UnderlyingRustTuple<'_>> for removeAdminCall {
5012                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5013                    Self { admin: tuple.0 }
5014                }
5015            }
5016        }
5017        {
5018            #[doc(hidden)]
5019            type UnderlyingSolTuple<'a> = ();
5020            #[doc(hidden)]
5021            type UnderlyingRustTuple<'a> = ();
5022            #[cfg(test)]
5023            #[allow(dead_code, unreachable_patterns)]
5024            fn _type_assertion(
5025                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5026            ) {
5027                match _t {
5028                    alloy_sol_types::private::AssertTypeEq::<
5029                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5030                    >(_) => {}
5031                }
5032            }
5033            #[automatically_derived]
5034            #[doc(hidden)]
5035            impl ::core::convert::From<removeAdminReturn> for UnderlyingRustTuple<'_> {
5036                fn from(value: removeAdminReturn) -> Self {
5037                    ()
5038                }
5039            }
5040            #[automatically_derived]
5041            #[doc(hidden)]
5042            impl ::core::convert::From<UnderlyingRustTuple<'_>> for removeAdminReturn {
5043                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5044                    Self {}
5045                }
5046            }
5047        }
5048        impl removeAdminReturn {
5049            fn _tokenize(
5050                &self,
5051            ) -> <removeAdminCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
5052                ()
5053            }
5054        }
5055        #[automatically_derived]
5056        impl alloy_sol_types::SolCall for removeAdminCall {
5057            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
5058            type Token<'a> = <Self::Parameters<
5059                'a,
5060            > as alloy_sol_types::SolType>::Token<'a>;
5061            type Return = removeAdminReturn;
5062            type ReturnTuple<'a> = ();
5063            type ReturnToken<'a> = <Self::ReturnTuple<
5064                'a,
5065            > as alloy_sol_types::SolType>::Token<'a>;
5066            const SIGNATURE: &'static str = "removeAdmin(address)";
5067            const SELECTOR: [u8; 4] = [23u8, 133u8, 245u8, 60u8];
5068            #[inline]
5069            fn new<'a>(
5070                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5071            ) -> Self {
5072                tuple.into()
5073            }
5074            #[inline]
5075            fn tokenize(&self) -> Self::Token<'_> {
5076                (
5077                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5078                        &self.admin,
5079                    ),
5080                )
5081            }
5082            #[inline]
5083            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5084                removeAdminReturn::_tokenize(ret)
5085            }
5086            #[inline]
5087            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5088                <Self::ReturnTuple<
5089                    '_,
5090                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5091                    .map(Into::into)
5092            }
5093            #[inline]
5094            fn abi_decode_returns_validate(
5095                data: &[u8],
5096            ) -> alloy_sol_types::Result<Self::Return> {
5097                <Self::ReturnTuple<
5098                    '_,
5099                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5100                    .map(Into::into)
5101            }
5102        }
5103    };
5104    #[derive(serde::Serialize, serde::Deserialize)]
5105    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5106    /**Function with signature `removeAppointee(address,address,bytes4)` and selector `0xba550880`.
5107```solidity
5108function removeAppointee(address appointee, address target, bytes4 selector) external;
5109```*/
5110    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5111    #[derive(Clone)]
5112    pub struct removeAppointeeCall {
5113        #[allow(missing_docs)]
5114        pub appointee: alloy::sol_types::private::Address,
5115        #[allow(missing_docs)]
5116        pub target: alloy::sol_types::private::Address,
5117        #[allow(missing_docs)]
5118        pub selector: alloy::sol_types::private::FixedBytes<4>,
5119    }
5120    ///Container type for the return parameters of the [`removeAppointee(address,address,bytes4)`](removeAppointeeCall) function.
5121    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5122    #[derive(Clone)]
5123    pub struct removeAppointeeReturn {}
5124    #[allow(
5125        non_camel_case_types,
5126        non_snake_case,
5127        clippy::pub_underscore_fields,
5128        clippy::style
5129    )]
5130    const _: () = {
5131        use alloy::sol_types as alloy_sol_types;
5132        {
5133            #[doc(hidden)]
5134            type UnderlyingSolTuple<'a> = (
5135                alloy::sol_types::sol_data::Address,
5136                alloy::sol_types::sol_data::Address,
5137                alloy::sol_types::sol_data::FixedBytes<4>,
5138            );
5139            #[doc(hidden)]
5140            type UnderlyingRustTuple<'a> = (
5141                alloy::sol_types::private::Address,
5142                alloy::sol_types::private::Address,
5143                alloy::sol_types::private::FixedBytes<4>,
5144            );
5145            #[cfg(test)]
5146            #[allow(dead_code, unreachable_patterns)]
5147            fn _type_assertion(
5148                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5149            ) {
5150                match _t {
5151                    alloy_sol_types::private::AssertTypeEq::<
5152                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5153                    >(_) => {}
5154                }
5155            }
5156            #[automatically_derived]
5157            #[doc(hidden)]
5158            impl ::core::convert::From<removeAppointeeCall> for UnderlyingRustTuple<'_> {
5159                fn from(value: removeAppointeeCall) -> Self {
5160                    (value.appointee, value.target, value.selector)
5161                }
5162            }
5163            #[automatically_derived]
5164            #[doc(hidden)]
5165            impl ::core::convert::From<UnderlyingRustTuple<'_>> for removeAppointeeCall {
5166                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5167                    Self {
5168                        appointee: tuple.0,
5169                        target: tuple.1,
5170                        selector: tuple.2,
5171                    }
5172                }
5173            }
5174        }
5175        {
5176            #[doc(hidden)]
5177            type UnderlyingSolTuple<'a> = ();
5178            #[doc(hidden)]
5179            type UnderlyingRustTuple<'a> = ();
5180            #[cfg(test)]
5181            #[allow(dead_code, unreachable_patterns)]
5182            fn _type_assertion(
5183                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5184            ) {
5185                match _t {
5186                    alloy_sol_types::private::AssertTypeEq::<
5187                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5188                    >(_) => {}
5189                }
5190            }
5191            #[automatically_derived]
5192            #[doc(hidden)]
5193            impl ::core::convert::From<removeAppointeeReturn>
5194            for UnderlyingRustTuple<'_> {
5195                fn from(value: removeAppointeeReturn) -> Self {
5196                    ()
5197                }
5198            }
5199            #[automatically_derived]
5200            #[doc(hidden)]
5201            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5202            for removeAppointeeReturn {
5203                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5204                    Self {}
5205                }
5206            }
5207        }
5208        impl removeAppointeeReturn {
5209            fn _tokenize(
5210                &self,
5211            ) -> <removeAppointeeCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
5212                ()
5213            }
5214        }
5215        #[automatically_derived]
5216        impl alloy_sol_types::SolCall for removeAppointeeCall {
5217            type Parameters<'a> = (
5218                alloy::sol_types::sol_data::Address,
5219                alloy::sol_types::sol_data::Address,
5220                alloy::sol_types::sol_data::FixedBytes<4>,
5221            );
5222            type Token<'a> = <Self::Parameters<
5223                'a,
5224            > as alloy_sol_types::SolType>::Token<'a>;
5225            type Return = removeAppointeeReturn;
5226            type ReturnTuple<'a> = ();
5227            type ReturnToken<'a> = <Self::ReturnTuple<
5228                'a,
5229            > as alloy_sol_types::SolType>::Token<'a>;
5230            const SIGNATURE: &'static str = "removeAppointee(address,address,bytes4)";
5231            const SELECTOR: [u8; 4] = [186u8, 85u8, 8u8, 128u8];
5232            #[inline]
5233            fn new<'a>(
5234                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5235            ) -> Self {
5236                tuple.into()
5237            }
5238            #[inline]
5239            fn tokenize(&self) -> Self::Token<'_> {
5240                (
5241                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5242                        &self.appointee,
5243                    ),
5244                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5245                        &self.target,
5246                    ),
5247                    <alloy::sol_types::sol_data::FixedBytes<
5248                        4,
5249                    > as alloy_sol_types::SolType>::tokenize(&self.selector),
5250                )
5251            }
5252            #[inline]
5253            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5254                removeAppointeeReturn::_tokenize(ret)
5255            }
5256            #[inline]
5257            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5258                <Self::ReturnTuple<
5259                    '_,
5260                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5261                    .map(Into::into)
5262            }
5263            #[inline]
5264            fn abi_decode_returns_validate(
5265                data: &[u8],
5266            ) -> alloy_sol_types::Result<Self::Return> {
5267                <Self::ReturnTuple<
5268                    '_,
5269                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5270                    .map(Into::into)
5271            }
5272        }
5273    };
5274    #[derive(serde::Serialize, serde::Deserialize)]
5275    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5276    /**Function with signature `removePendingAdmin(address)` and selector `0x9da16d8e`.
5277```solidity
5278function removePendingAdmin(address pendingAdmin) external;
5279```*/
5280    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5281    #[derive(Clone)]
5282    pub struct removePendingAdminCall {
5283        #[allow(missing_docs)]
5284        pub pendingAdmin: alloy::sol_types::private::Address,
5285    }
5286    ///Container type for the return parameters of the [`removePendingAdmin(address)`](removePendingAdminCall) function.
5287    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5288    #[derive(Clone)]
5289    pub struct removePendingAdminReturn {}
5290    #[allow(
5291        non_camel_case_types,
5292        non_snake_case,
5293        clippy::pub_underscore_fields,
5294        clippy::style
5295    )]
5296    const _: () = {
5297        use alloy::sol_types as alloy_sol_types;
5298        {
5299            #[doc(hidden)]
5300            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5301            #[doc(hidden)]
5302            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5303            #[cfg(test)]
5304            #[allow(dead_code, unreachable_patterns)]
5305            fn _type_assertion(
5306                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5307            ) {
5308                match _t {
5309                    alloy_sol_types::private::AssertTypeEq::<
5310                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5311                    >(_) => {}
5312                }
5313            }
5314            #[automatically_derived]
5315            #[doc(hidden)]
5316            impl ::core::convert::From<removePendingAdminCall>
5317            for UnderlyingRustTuple<'_> {
5318                fn from(value: removePendingAdminCall) -> Self {
5319                    (value.pendingAdmin,)
5320                }
5321            }
5322            #[automatically_derived]
5323            #[doc(hidden)]
5324            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5325            for removePendingAdminCall {
5326                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5327                    Self { pendingAdmin: tuple.0 }
5328                }
5329            }
5330        }
5331        {
5332            #[doc(hidden)]
5333            type UnderlyingSolTuple<'a> = ();
5334            #[doc(hidden)]
5335            type UnderlyingRustTuple<'a> = ();
5336            #[cfg(test)]
5337            #[allow(dead_code, unreachable_patterns)]
5338            fn _type_assertion(
5339                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5340            ) {
5341                match _t {
5342                    alloy_sol_types::private::AssertTypeEq::<
5343                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5344                    >(_) => {}
5345                }
5346            }
5347            #[automatically_derived]
5348            #[doc(hidden)]
5349            impl ::core::convert::From<removePendingAdminReturn>
5350            for UnderlyingRustTuple<'_> {
5351                fn from(value: removePendingAdminReturn) -> Self {
5352                    ()
5353                }
5354            }
5355            #[automatically_derived]
5356            #[doc(hidden)]
5357            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5358            for removePendingAdminReturn {
5359                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5360                    Self {}
5361                }
5362            }
5363        }
5364        impl removePendingAdminReturn {
5365            fn _tokenize(
5366                &self,
5367            ) -> <removePendingAdminCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
5368                ()
5369            }
5370        }
5371        #[automatically_derived]
5372        impl alloy_sol_types::SolCall for removePendingAdminCall {
5373            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
5374            type Token<'a> = <Self::Parameters<
5375                'a,
5376            > as alloy_sol_types::SolType>::Token<'a>;
5377            type Return = removePendingAdminReturn;
5378            type ReturnTuple<'a> = ();
5379            type ReturnToken<'a> = <Self::ReturnTuple<
5380                'a,
5381            > as alloy_sol_types::SolType>::Token<'a>;
5382            const SIGNATURE: &'static str = "removePendingAdmin(address)";
5383            const SELECTOR: [u8; 4] = [157u8, 161u8, 109u8, 142u8];
5384            #[inline]
5385            fn new<'a>(
5386                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5387            ) -> Self {
5388                tuple.into()
5389            }
5390            #[inline]
5391            fn tokenize(&self) -> Self::Token<'_> {
5392                (
5393                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5394                        &self.pendingAdmin,
5395                    ),
5396                )
5397            }
5398            #[inline]
5399            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5400                removePendingAdminReturn::_tokenize(ret)
5401            }
5402            #[inline]
5403            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5404                <Self::ReturnTuple<
5405                    '_,
5406                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5407                    .map(Into::into)
5408            }
5409            #[inline]
5410            fn abi_decode_returns_validate(
5411                data: &[u8],
5412            ) -> alloy_sol_types::Result<Self::Return> {
5413                <Self::ReturnTuple<
5414                    '_,
5415                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5416                    .map(Into::into)
5417            }
5418        }
5419    };
5420    #[derive(serde::Serialize, serde::Deserialize)]
5421    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5422    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
5423```solidity
5424function renounceOwnership() external;
5425```*/
5426    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5427    #[derive(Clone)]
5428    pub struct renounceOwnershipCall;
5429    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
5430    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5431    #[derive(Clone)]
5432    pub struct renounceOwnershipReturn {}
5433    #[allow(
5434        non_camel_case_types,
5435        non_snake_case,
5436        clippy::pub_underscore_fields,
5437        clippy::style
5438    )]
5439    const _: () = {
5440        use alloy::sol_types as alloy_sol_types;
5441        {
5442            #[doc(hidden)]
5443            type UnderlyingSolTuple<'a> = ();
5444            #[doc(hidden)]
5445            type UnderlyingRustTuple<'a> = ();
5446            #[cfg(test)]
5447            #[allow(dead_code, unreachable_patterns)]
5448            fn _type_assertion(
5449                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5450            ) {
5451                match _t {
5452                    alloy_sol_types::private::AssertTypeEq::<
5453                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5454                    >(_) => {}
5455                }
5456            }
5457            #[automatically_derived]
5458            #[doc(hidden)]
5459            impl ::core::convert::From<renounceOwnershipCall>
5460            for UnderlyingRustTuple<'_> {
5461                fn from(value: renounceOwnershipCall) -> Self {
5462                    ()
5463                }
5464            }
5465            #[automatically_derived]
5466            #[doc(hidden)]
5467            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5468            for renounceOwnershipCall {
5469                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5470                    Self
5471                }
5472            }
5473        }
5474        {
5475            #[doc(hidden)]
5476            type UnderlyingSolTuple<'a> = ();
5477            #[doc(hidden)]
5478            type UnderlyingRustTuple<'a> = ();
5479            #[cfg(test)]
5480            #[allow(dead_code, unreachable_patterns)]
5481            fn _type_assertion(
5482                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5483            ) {
5484                match _t {
5485                    alloy_sol_types::private::AssertTypeEq::<
5486                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5487                    >(_) => {}
5488                }
5489            }
5490            #[automatically_derived]
5491            #[doc(hidden)]
5492            impl ::core::convert::From<renounceOwnershipReturn>
5493            for UnderlyingRustTuple<'_> {
5494                fn from(value: renounceOwnershipReturn) -> Self {
5495                    ()
5496                }
5497            }
5498            #[automatically_derived]
5499            #[doc(hidden)]
5500            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5501            for renounceOwnershipReturn {
5502                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5503                    Self {}
5504                }
5505            }
5506        }
5507        impl renounceOwnershipReturn {
5508            fn _tokenize(
5509                &self,
5510            ) -> <renounceOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
5511                ()
5512            }
5513        }
5514        #[automatically_derived]
5515        impl alloy_sol_types::SolCall for renounceOwnershipCall {
5516            type Parameters<'a> = ();
5517            type Token<'a> = <Self::Parameters<
5518                'a,
5519            > as alloy_sol_types::SolType>::Token<'a>;
5520            type Return = renounceOwnershipReturn;
5521            type ReturnTuple<'a> = ();
5522            type ReturnToken<'a> = <Self::ReturnTuple<
5523                'a,
5524            > as alloy_sol_types::SolType>::Token<'a>;
5525            const SIGNATURE: &'static str = "renounceOwnership()";
5526            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
5527            #[inline]
5528            fn new<'a>(
5529                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5530            ) -> Self {
5531                tuple.into()
5532            }
5533            #[inline]
5534            fn tokenize(&self) -> Self::Token<'_> {
5535                ()
5536            }
5537            #[inline]
5538            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5539                renounceOwnershipReturn::_tokenize(ret)
5540            }
5541            #[inline]
5542            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5543                <Self::ReturnTuple<
5544                    '_,
5545                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5546                    .map(Into::into)
5547            }
5548            #[inline]
5549            fn abi_decode_returns_validate(
5550                data: &[u8],
5551            ) -> alloy_sol_types::Result<Self::Return> {
5552                <Self::ReturnTuple<
5553                    '_,
5554                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5555                    .map(Into::into)
5556            }
5557        }
5558    };
5559    #[derive(serde::Serialize, serde::Deserialize)]
5560    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5561    /**Function with signature `rewardsInitiator()` and selector `0xfc299dee`.
5562```solidity
5563function rewardsInitiator() external view returns (address);
5564```*/
5565    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5566    #[derive(Clone)]
5567    pub struct rewardsInitiatorCall;
5568    #[derive(serde::Serialize, serde::Deserialize)]
5569    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5570    ///Container type for the return parameters of the [`rewardsInitiator()`](rewardsInitiatorCall) function.
5571    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5572    #[derive(Clone)]
5573    pub struct rewardsInitiatorReturn {
5574        #[allow(missing_docs)]
5575        pub _0: alloy::sol_types::private::Address,
5576    }
5577    #[allow(
5578        non_camel_case_types,
5579        non_snake_case,
5580        clippy::pub_underscore_fields,
5581        clippy::style
5582    )]
5583    const _: () = {
5584        use alloy::sol_types as alloy_sol_types;
5585        {
5586            #[doc(hidden)]
5587            type UnderlyingSolTuple<'a> = ();
5588            #[doc(hidden)]
5589            type UnderlyingRustTuple<'a> = ();
5590            #[cfg(test)]
5591            #[allow(dead_code, unreachable_patterns)]
5592            fn _type_assertion(
5593                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5594            ) {
5595                match _t {
5596                    alloy_sol_types::private::AssertTypeEq::<
5597                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5598                    >(_) => {}
5599                }
5600            }
5601            #[automatically_derived]
5602            #[doc(hidden)]
5603            impl ::core::convert::From<rewardsInitiatorCall>
5604            for UnderlyingRustTuple<'_> {
5605                fn from(value: rewardsInitiatorCall) -> Self {
5606                    ()
5607                }
5608            }
5609            #[automatically_derived]
5610            #[doc(hidden)]
5611            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5612            for rewardsInitiatorCall {
5613                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5614                    Self
5615                }
5616            }
5617        }
5618        {
5619            #[doc(hidden)]
5620            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5621            #[doc(hidden)]
5622            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5623            #[cfg(test)]
5624            #[allow(dead_code, unreachable_patterns)]
5625            fn _type_assertion(
5626                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5627            ) {
5628                match _t {
5629                    alloy_sol_types::private::AssertTypeEq::<
5630                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5631                    >(_) => {}
5632                }
5633            }
5634            #[automatically_derived]
5635            #[doc(hidden)]
5636            impl ::core::convert::From<rewardsInitiatorReturn>
5637            for UnderlyingRustTuple<'_> {
5638                fn from(value: rewardsInitiatorReturn) -> Self {
5639                    (value._0,)
5640                }
5641            }
5642            #[automatically_derived]
5643            #[doc(hidden)]
5644            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5645            for rewardsInitiatorReturn {
5646                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5647                    Self { _0: tuple.0 }
5648                }
5649            }
5650        }
5651        #[automatically_derived]
5652        impl alloy_sol_types::SolCall for rewardsInitiatorCall {
5653            type Parameters<'a> = ();
5654            type Token<'a> = <Self::Parameters<
5655                'a,
5656            > as alloy_sol_types::SolType>::Token<'a>;
5657            type Return = alloy::sol_types::private::Address;
5658            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
5659            type ReturnToken<'a> = <Self::ReturnTuple<
5660                'a,
5661            > as alloy_sol_types::SolType>::Token<'a>;
5662            const SIGNATURE: &'static str = "rewardsInitiator()";
5663            const SELECTOR: [u8; 4] = [252u8, 41u8, 157u8, 238u8];
5664            #[inline]
5665            fn new<'a>(
5666                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5667            ) -> Self {
5668                tuple.into()
5669            }
5670            #[inline]
5671            fn tokenize(&self) -> Self::Token<'_> {
5672                ()
5673            }
5674            #[inline]
5675            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5676                (
5677                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5678                        ret,
5679                    ),
5680                )
5681            }
5682            #[inline]
5683            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5684                <Self::ReturnTuple<
5685                    '_,
5686                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5687                    .map(|r| {
5688                        let r: rewardsInitiatorReturn = r.into();
5689                        r._0
5690                    })
5691            }
5692            #[inline]
5693            fn abi_decode_returns_validate(
5694                data: &[u8],
5695            ) -> alloy_sol_types::Result<Self::Return> {
5696                <Self::ReturnTuple<
5697                    '_,
5698                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5699                    .map(|r| {
5700                        let r: rewardsInitiatorReturn = r.into();
5701                        r._0
5702                    })
5703            }
5704        }
5705    };
5706    #[derive(serde::Serialize, serde::Deserialize)]
5707    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5708    /**Function with signature `setAppointee(address,address,bytes4)` and selector `0x1fdb0cfd`.
5709```solidity
5710function setAppointee(address appointee, address target, bytes4 selector) external;
5711```*/
5712    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5713    #[derive(Clone)]
5714    pub struct setAppointeeCall {
5715        #[allow(missing_docs)]
5716        pub appointee: alloy::sol_types::private::Address,
5717        #[allow(missing_docs)]
5718        pub target: alloy::sol_types::private::Address,
5719        #[allow(missing_docs)]
5720        pub selector: alloy::sol_types::private::FixedBytes<4>,
5721    }
5722    ///Container type for the return parameters of the [`setAppointee(address,address,bytes4)`](setAppointeeCall) function.
5723    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5724    #[derive(Clone)]
5725    pub struct setAppointeeReturn {}
5726    #[allow(
5727        non_camel_case_types,
5728        non_snake_case,
5729        clippy::pub_underscore_fields,
5730        clippy::style
5731    )]
5732    const _: () = {
5733        use alloy::sol_types as alloy_sol_types;
5734        {
5735            #[doc(hidden)]
5736            type UnderlyingSolTuple<'a> = (
5737                alloy::sol_types::sol_data::Address,
5738                alloy::sol_types::sol_data::Address,
5739                alloy::sol_types::sol_data::FixedBytes<4>,
5740            );
5741            #[doc(hidden)]
5742            type UnderlyingRustTuple<'a> = (
5743                alloy::sol_types::private::Address,
5744                alloy::sol_types::private::Address,
5745                alloy::sol_types::private::FixedBytes<4>,
5746            );
5747            #[cfg(test)]
5748            #[allow(dead_code, unreachable_patterns)]
5749            fn _type_assertion(
5750                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5751            ) {
5752                match _t {
5753                    alloy_sol_types::private::AssertTypeEq::<
5754                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5755                    >(_) => {}
5756                }
5757            }
5758            #[automatically_derived]
5759            #[doc(hidden)]
5760            impl ::core::convert::From<setAppointeeCall> for UnderlyingRustTuple<'_> {
5761                fn from(value: setAppointeeCall) -> Self {
5762                    (value.appointee, value.target, value.selector)
5763                }
5764            }
5765            #[automatically_derived]
5766            #[doc(hidden)]
5767            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setAppointeeCall {
5768                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5769                    Self {
5770                        appointee: tuple.0,
5771                        target: tuple.1,
5772                        selector: tuple.2,
5773                    }
5774                }
5775            }
5776        }
5777        {
5778            #[doc(hidden)]
5779            type UnderlyingSolTuple<'a> = ();
5780            #[doc(hidden)]
5781            type UnderlyingRustTuple<'a> = ();
5782            #[cfg(test)]
5783            #[allow(dead_code, unreachable_patterns)]
5784            fn _type_assertion(
5785                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5786            ) {
5787                match _t {
5788                    alloy_sol_types::private::AssertTypeEq::<
5789                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5790                    >(_) => {}
5791                }
5792            }
5793            #[automatically_derived]
5794            #[doc(hidden)]
5795            impl ::core::convert::From<setAppointeeReturn> for UnderlyingRustTuple<'_> {
5796                fn from(value: setAppointeeReturn) -> Self {
5797                    ()
5798                }
5799            }
5800            #[automatically_derived]
5801            #[doc(hidden)]
5802            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setAppointeeReturn {
5803                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5804                    Self {}
5805                }
5806            }
5807        }
5808        impl setAppointeeReturn {
5809            fn _tokenize(
5810                &self,
5811            ) -> <setAppointeeCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
5812                ()
5813            }
5814        }
5815        #[automatically_derived]
5816        impl alloy_sol_types::SolCall for setAppointeeCall {
5817            type Parameters<'a> = (
5818                alloy::sol_types::sol_data::Address,
5819                alloy::sol_types::sol_data::Address,
5820                alloy::sol_types::sol_data::FixedBytes<4>,
5821            );
5822            type Token<'a> = <Self::Parameters<
5823                'a,
5824            > as alloy_sol_types::SolType>::Token<'a>;
5825            type Return = setAppointeeReturn;
5826            type ReturnTuple<'a> = ();
5827            type ReturnToken<'a> = <Self::ReturnTuple<
5828                'a,
5829            > as alloy_sol_types::SolType>::Token<'a>;
5830            const SIGNATURE: &'static str = "setAppointee(address,address,bytes4)";
5831            const SELECTOR: [u8; 4] = [31u8, 219u8, 12u8, 253u8];
5832            #[inline]
5833            fn new<'a>(
5834                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5835            ) -> Self {
5836                tuple.into()
5837            }
5838            #[inline]
5839            fn tokenize(&self) -> Self::Token<'_> {
5840                (
5841                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5842                        &self.appointee,
5843                    ),
5844                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5845                        &self.target,
5846                    ),
5847                    <alloy::sol_types::sol_data::FixedBytes<
5848                        4,
5849                    > as alloy_sol_types::SolType>::tokenize(&self.selector),
5850                )
5851            }
5852            #[inline]
5853            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5854                setAppointeeReturn::_tokenize(ret)
5855            }
5856            #[inline]
5857            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5858                <Self::ReturnTuple<
5859                    '_,
5860                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5861                    .map(Into::into)
5862            }
5863            #[inline]
5864            fn abi_decode_returns_validate(
5865                data: &[u8],
5866            ) -> alloy_sol_types::Result<Self::Return> {
5867                <Self::ReturnTuple<
5868                    '_,
5869                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5870                    .map(Into::into)
5871            }
5872        }
5873    };
5874    #[derive(serde::Serialize, serde::Deserialize)]
5875    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5876    /**Function with signature `setClaimerFor(address)` and selector `0xa0169ddd`.
5877```solidity
5878function setClaimerFor(address claimer) external;
5879```*/
5880    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5881    #[derive(Clone)]
5882    pub struct setClaimerForCall {
5883        #[allow(missing_docs)]
5884        pub claimer: alloy::sol_types::private::Address,
5885    }
5886    ///Container type for the return parameters of the [`setClaimerFor(address)`](setClaimerForCall) function.
5887    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5888    #[derive(Clone)]
5889    pub struct setClaimerForReturn {}
5890    #[allow(
5891        non_camel_case_types,
5892        non_snake_case,
5893        clippy::pub_underscore_fields,
5894        clippy::style
5895    )]
5896    const _: () = {
5897        use alloy::sol_types as alloy_sol_types;
5898        {
5899            #[doc(hidden)]
5900            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5901            #[doc(hidden)]
5902            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5903            #[cfg(test)]
5904            #[allow(dead_code, unreachable_patterns)]
5905            fn _type_assertion(
5906                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5907            ) {
5908                match _t {
5909                    alloy_sol_types::private::AssertTypeEq::<
5910                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5911                    >(_) => {}
5912                }
5913            }
5914            #[automatically_derived]
5915            #[doc(hidden)]
5916            impl ::core::convert::From<setClaimerForCall> for UnderlyingRustTuple<'_> {
5917                fn from(value: setClaimerForCall) -> Self {
5918                    (value.claimer,)
5919                }
5920            }
5921            #[automatically_derived]
5922            #[doc(hidden)]
5923            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setClaimerForCall {
5924                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5925                    Self { claimer: tuple.0 }
5926                }
5927            }
5928        }
5929        {
5930            #[doc(hidden)]
5931            type UnderlyingSolTuple<'a> = ();
5932            #[doc(hidden)]
5933            type UnderlyingRustTuple<'a> = ();
5934            #[cfg(test)]
5935            #[allow(dead_code, unreachable_patterns)]
5936            fn _type_assertion(
5937                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5938            ) {
5939                match _t {
5940                    alloy_sol_types::private::AssertTypeEq::<
5941                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5942                    >(_) => {}
5943                }
5944            }
5945            #[automatically_derived]
5946            #[doc(hidden)]
5947            impl ::core::convert::From<setClaimerForReturn> for UnderlyingRustTuple<'_> {
5948                fn from(value: setClaimerForReturn) -> Self {
5949                    ()
5950                }
5951            }
5952            #[automatically_derived]
5953            #[doc(hidden)]
5954            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setClaimerForReturn {
5955                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5956                    Self {}
5957                }
5958            }
5959        }
5960        impl setClaimerForReturn {
5961            fn _tokenize(
5962                &self,
5963            ) -> <setClaimerForCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
5964                ()
5965            }
5966        }
5967        #[automatically_derived]
5968        impl alloy_sol_types::SolCall for setClaimerForCall {
5969            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
5970            type Token<'a> = <Self::Parameters<
5971                'a,
5972            > as alloy_sol_types::SolType>::Token<'a>;
5973            type Return = setClaimerForReturn;
5974            type ReturnTuple<'a> = ();
5975            type ReturnToken<'a> = <Self::ReturnTuple<
5976                'a,
5977            > as alloy_sol_types::SolType>::Token<'a>;
5978            const SIGNATURE: &'static str = "setClaimerFor(address)";
5979            const SELECTOR: [u8; 4] = [160u8, 22u8, 157u8, 221u8];
5980            #[inline]
5981            fn new<'a>(
5982                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5983            ) -> Self {
5984                tuple.into()
5985            }
5986            #[inline]
5987            fn tokenize(&self) -> Self::Token<'_> {
5988                (
5989                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5990                        &self.claimer,
5991                    ),
5992                )
5993            }
5994            #[inline]
5995            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5996                setClaimerForReturn::_tokenize(ret)
5997            }
5998            #[inline]
5999            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6000                <Self::ReturnTuple<
6001                    '_,
6002                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6003                    .map(Into::into)
6004            }
6005            #[inline]
6006            fn abi_decode_returns_validate(
6007                data: &[u8],
6008            ) -> alloy_sol_types::Result<Self::Return> {
6009                <Self::ReturnTuple<
6010                    '_,
6011                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6012                    .map(Into::into)
6013            }
6014        }
6015    };
6016    #[derive(serde::Serialize, serde::Deserialize)]
6017    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6018    /**Function with signature `setRewardsInitiator(address)` and selector `0x3bc28c8c`.
6019```solidity
6020function setRewardsInitiator(address newRewardsInitiator) external;
6021```*/
6022    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6023    #[derive(Clone)]
6024    pub struct setRewardsInitiatorCall {
6025        #[allow(missing_docs)]
6026        pub newRewardsInitiator: alloy::sol_types::private::Address,
6027    }
6028    ///Container type for the return parameters of the [`setRewardsInitiator(address)`](setRewardsInitiatorCall) function.
6029    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6030    #[derive(Clone)]
6031    pub struct setRewardsInitiatorReturn {}
6032    #[allow(
6033        non_camel_case_types,
6034        non_snake_case,
6035        clippy::pub_underscore_fields,
6036        clippy::style
6037    )]
6038    const _: () = {
6039        use alloy::sol_types as alloy_sol_types;
6040        {
6041            #[doc(hidden)]
6042            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6043            #[doc(hidden)]
6044            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6045            #[cfg(test)]
6046            #[allow(dead_code, unreachable_patterns)]
6047            fn _type_assertion(
6048                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6049            ) {
6050                match _t {
6051                    alloy_sol_types::private::AssertTypeEq::<
6052                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6053                    >(_) => {}
6054                }
6055            }
6056            #[automatically_derived]
6057            #[doc(hidden)]
6058            impl ::core::convert::From<setRewardsInitiatorCall>
6059            for UnderlyingRustTuple<'_> {
6060                fn from(value: setRewardsInitiatorCall) -> Self {
6061                    (value.newRewardsInitiator,)
6062                }
6063            }
6064            #[automatically_derived]
6065            #[doc(hidden)]
6066            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6067            for setRewardsInitiatorCall {
6068                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6069                    Self {
6070                        newRewardsInitiator: tuple.0,
6071                    }
6072                }
6073            }
6074        }
6075        {
6076            #[doc(hidden)]
6077            type UnderlyingSolTuple<'a> = ();
6078            #[doc(hidden)]
6079            type UnderlyingRustTuple<'a> = ();
6080            #[cfg(test)]
6081            #[allow(dead_code, unreachable_patterns)]
6082            fn _type_assertion(
6083                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6084            ) {
6085                match _t {
6086                    alloy_sol_types::private::AssertTypeEq::<
6087                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6088                    >(_) => {}
6089                }
6090            }
6091            #[automatically_derived]
6092            #[doc(hidden)]
6093            impl ::core::convert::From<setRewardsInitiatorReturn>
6094            for UnderlyingRustTuple<'_> {
6095                fn from(value: setRewardsInitiatorReturn) -> Self {
6096                    ()
6097                }
6098            }
6099            #[automatically_derived]
6100            #[doc(hidden)]
6101            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6102            for setRewardsInitiatorReturn {
6103                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6104                    Self {}
6105                }
6106            }
6107        }
6108        impl setRewardsInitiatorReturn {
6109            fn _tokenize(
6110                &self,
6111            ) -> <setRewardsInitiatorCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
6112                ()
6113            }
6114        }
6115        #[automatically_derived]
6116        impl alloy_sol_types::SolCall for setRewardsInitiatorCall {
6117            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
6118            type Token<'a> = <Self::Parameters<
6119                'a,
6120            > as alloy_sol_types::SolType>::Token<'a>;
6121            type Return = setRewardsInitiatorReturn;
6122            type ReturnTuple<'a> = ();
6123            type ReturnToken<'a> = <Self::ReturnTuple<
6124                'a,
6125            > as alloy_sol_types::SolType>::Token<'a>;
6126            const SIGNATURE: &'static str = "setRewardsInitiator(address)";
6127            const SELECTOR: [u8; 4] = [59u8, 194u8, 140u8, 140u8];
6128            #[inline]
6129            fn new<'a>(
6130                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6131            ) -> Self {
6132                tuple.into()
6133            }
6134            #[inline]
6135            fn tokenize(&self) -> Self::Token<'_> {
6136                (
6137                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6138                        &self.newRewardsInitiator,
6139                    ),
6140                )
6141            }
6142            #[inline]
6143            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6144                setRewardsInitiatorReturn::_tokenize(ret)
6145            }
6146            #[inline]
6147            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6148                <Self::ReturnTuple<
6149                    '_,
6150                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6151                    .map(Into::into)
6152            }
6153            #[inline]
6154            fn abi_decode_returns_validate(
6155                data: &[u8],
6156            ) -> alloy_sol_types::Result<Self::Return> {
6157                <Self::ReturnTuple<
6158                    '_,
6159                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6160                    .map(Into::into)
6161            }
6162        }
6163    };
6164    #[derive(serde::Serialize, serde::Deserialize)]
6165    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6166    /**Function with signature `squaringTaskManager()` and selector `0xc3fc91ea`.
6167```solidity
6168function squaringTaskManager() external view returns (address);
6169```*/
6170    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6171    #[derive(Clone)]
6172    pub struct squaringTaskManagerCall;
6173    #[derive(serde::Serialize, serde::Deserialize)]
6174    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6175    ///Container type for the return parameters of the [`squaringTaskManager()`](squaringTaskManagerCall) function.
6176    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6177    #[derive(Clone)]
6178    pub struct squaringTaskManagerReturn {
6179        #[allow(missing_docs)]
6180        pub _0: alloy::sol_types::private::Address,
6181    }
6182    #[allow(
6183        non_camel_case_types,
6184        non_snake_case,
6185        clippy::pub_underscore_fields,
6186        clippy::style
6187    )]
6188    const _: () = {
6189        use alloy::sol_types as alloy_sol_types;
6190        {
6191            #[doc(hidden)]
6192            type UnderlyingSolTuple<'a> = ();
6193            #[doc(hidden)]
6194            type UnderlyingRustTuple<'a> = ();
6195            #[cfg(test)]
6196            #[allow(dead_code, unreachable_patterns)]
6197            fn _type_assertion(
6198                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6199            ) {
6200                match _t {
6201                    alloy_sol_types::private::AssertTypeEq::<
6202                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6203                    >(_) => {}
6204                }
6205            }
6206            #[automatically_derived]
6207            #[doc(hidden)]
6208            impl ::core::convert::From<squaringTaskManagerCall>
6209            for UnderlyingRustTuple<'_> {
6210                fn from(value: squaringTaskManagerCall) -> Self {
6211                    ()
6212                }
6213            }
6214            #[automatically_derived]
6215            #[doc(hidden)]
6216            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6217            for squaringTaskManagerCall {
6218                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6219                    Self
6220                }
6221            }
6222        }
6223        {
6224            #[doc(hidden)]
6225            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6226            #[doc(hidden)]
6227            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6228            #[cfg(test)]
6229            #[allow(dead_code, unreachable_patterns)]
6230            fn _type_assertion(
6231                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6232            ) {
6233                match _t {
6234                    alloy_sol_types::private::AssertTypeEq::<
6235                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6236                    >(_) => {}
6237                }
6238            }
6239            #[automatically_derived]
6240            #[doc(hidden)]
6241            impl ::core::convert::From<squaringTaskManagerReturn>
6242            for UnderlyingRustTuple<'_> {
6243                fn from(value: squaringTaskManagerReturn) -> Self {
6244                    (value._0,)
6245                }
6246            }
6247            #[automatically_derived]
6248            #[doc(hidden)]
6249            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6250            for squaringTaskManagerReturn {
6251                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6252                    Self { _0: tuple.0 }
6253                }
6254            }
6255        }
6256        #[automatically_derived]
6257        impl alloy_sol_types::SolCall for squaringTaskManagerCall {
6258            type Parameters<'a> = ();
6259            type Token<'a> = <Self::Parameters<
6260                'a,
6261            > as alloy_sol_types::SolType>::Token<'a>;
6262            type Return = alloy::sol_types::private::Address;
6263            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
6264            type ReturnToken<'a> = <Self::ReturnTuple<
6265                'a,
6266            > as alloy_sol_types::SolType>::Token<'a>;
6267            const SIGNATURE: &'static str = "squaringTaskManager()";
6268            const SELECTOR: [u8; 4] = [195u8, 252u8, 145u8, 234u8];
6269            #[inline]
6270            fn new<'a>(
6271                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6272            ) -> Self {
6273                tuple.into()
6274            }
6275            #[inline]
6276            fn tokenize(&self) -> Self::Token<'_> {
6277                ()
6278            }
6279            #[inline]
6280            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6281                (
6282                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6283                        ret,
6284                    ),
6285                )
6286            }
6287            #[inline]
6288            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6289                <Self::ReturnTuple<
6290                    '_,
6291                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6292                    .map(|r| {
6293                        let r: squaringTaskManagerReturn = r.into();
6294                        r._0
6295                    })
6296            }
6297            #[inline]
6298            fn abi_decode_returns_validate(
6299                data: &[u8],
6300            ) -> alloy_sol_types::Result<Self::Return> {
6301                <Self::ReturnTuple<
6302                    '_,
6303                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6304                    .map(|r| {
6305                        let r: squaringTaskManagerReturn = r.into();
6306                        r._0
6307                    })
6308            }
6309        }
6310    };
6311    #[derive(serde::Serialize, serde::Deserialize)]
6312    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6313    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
6314```solidity
6315function transferOwnership(address newOwner) external;
6316```*/
6317    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6318    #[derive(Clone)]
6319    pub struct transferOwnershipCall {
6320        #[allow(missing_docs)]
6321        pub newOwner: alloy::sol_types::private::Address,
6322    }
6323    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
6324    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6325    #[derive(Clone)]
6326    pub struct transferOwnershipReturn {}
6327    #[allow(
6328        non_camel_case_types,
6329        non_snake_case,
6330        clippy::pub_underscore_fields,
6331        clippy::style
6332    )]
6333    const _: () = {
6334        use alloy::sol_types as alloy_sol_types;
6335        {
6336            #[doc(hidden)]
6337            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6338            #[doc(hidden)]
6339            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6340            #[cfg(test)]
6341            #[allow(dead_code, unreachable_patterns)]
6342            fn _type_assertion(
6343                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6344            ) {
6345                match _t {
6346                    alloy_sol_types::private::AssertTypeEq::<
6347                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6348                    >(_) => {}
6349                }
6350            }
6351            #[automatically_derived]
6352            #[doc(hidden)]
6353            impl ::core::convert::From<transferOwnershipCall>
6354            for UnderlyingRustTuple<'_> {
6355                fn from(value: transferOwnershipCall) -> Self {
6356                    (value.newOwner,)
6357                }
6358            }
6359            #[automatically_derived]
6360            #[doc(hidden)]
6361            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6362            for transferOwnershipCall {
6363                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6364                    Self { newOwner: tuple.0 }
6365                }
6366            }
6367        }
6368        {
6369            #[doc(hidden)]
6370            type UnderlyingSolTuple<'a> = ();
6371            #[doc(hidden)]
6372            type UnderlyingRustTuple<'a> = ();
6373            #[cfg(test)]
6374            #[allow(dead_code, unreachable_patterns)]
6375            fn _type_assertion(
6376                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6377            ) {
6378                match _t {
6379                    alloy_sol_types::private::AssertTypeEq::<
6380                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6381                    >(_) => {}
6382                }
6383            }
6384            #[automatically_derived]
6385            #[doc(hidden)]
6386            impl ::core::convert::From<transferOwnershipReturn>
6387            for UnderlyingRustTuple<'_> {
6388                fn from(value: transferOwnershipReturn) -> Self {
6389                    ()
6390                }
6391            }
6392            #[automatically_derived]
6393            #[doc(hidden)]
6394            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6395            for transferOwnershipReturn {
6396                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6397                    Self {}
6398                }
6399            }
6400        }
6401        impl transferOwnershipReturn {
6402            fn _tokenize(
6403                &self,
6404            ) -> <transferOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
6405                ()
6406            }
6407        }
6408        #[automatically_derived]
6409        impl alloy_sol_types::SolCall for transferOwnershipCall {
6410            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
6411            type Token<'a> = <Self::Parameters<
6412                'a,
6413            > as alloy_sol_types::SolType>::Token<'a>;
6414            type Return = transferOwnershipReturn;
6415            type ReturnTuple<'a> = ();
6416            type ReturnToken<'a> = <Self::ReturnTuple<
6417                'a,
6418            > as alloy_sol_types::SolType>::Token<'a>;
6419            const SIGNATURE: &'static str = "transferOwnership(address)";
6420            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
6421            #[inline]
6422            fn new<'a>(
6423                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6424            ) -> Self {
6425                tuple.into()
6426            }
6427            #[inline]
6428            fn tokenize(&self) -> Self::Token<'_> {
6429                (
6430                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6431                        &self.newOwner,
6432                    ),
6433                )
6434            }
6435            #[inline]
6436            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6437                transferOwnershipReturn::_tokenize(ret)
6438            }
6439            #[inline]
6440            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6441                <Self::ReturnTuple<
6442                    '_,
6443                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6444                    .map(Into::into)
6445            }
6446            #[inline]
6447            fn abi_decode_returns_validate(
6448                data: &[u8],
6449            ) -> alloy_sol_types::Result<Self::Return> {
6450                <Self::ReturnTuple<
6451                    '_,
6452                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6453                    .map(Into::into)
6454            }
6455        }
6456    };
6457    #[derive(serde::Serialize, serde::Deserialize)]
6458    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6459    /**Function with signature `updateAVSMetadataURI(string)` and selector `0xa98fb355`.
6460```solidity
6461function updateAVSMetadataURI(string memory _metadataURI) external;
6462```*/
6463    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6464    #[derive(Clone)]
6465    pub struct updateAVSMetadataURICall {
6466        #[allow(missing_docs)]
6467        pub _metadataURI: alloy::sol_types::private::String,
6468    }
6469    ///Container type for the return parameters of the [`updateAVSMetadataURI(string)`](updateAVSMetadataURICall) function.
6470    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6471    #[derive(Clone)]
6472    pub struct updateAVSMetadataURIReturn {}
6473    #[allow(
6474        non_camel_case_types,
6475        non_snake_case,
6476        clippy::pub_underscore_fields,
6477        clippy::style
6478    )]
6479    const _: () = {
6480        use alloy::sol_types as alloy_sol_types;
6481        {
6482            #[doc(hidden)]
6483            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
6484            #[doc(hidden)]
6485            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
6486            #[cfg(test)]
6487            #[allow(dead_code, unreachable_patterns)]
6488            fn _type_assertion(
6489                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6490            ) {
6491                match _t {
6492                    alloy_sol_types::private::AssertTypeEq::<
6493                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6494                    >(_) => {}
6495                }
6496            }
6497            #[automatically_derived]
6498            #[doc(hidden)]
6499            impl ::core::convert::From<updateAVSMetadataURICall>
6500            for UnderlyingRustTuple<'_> {
6501                fn from(value: updateAVSMetadataURICall) -> Self {
6502                    (value._metadataURI,)
6503                }
6504            }
6505            #[automatically_derived]
6506            #[doc(hidden)]
6507            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6508            for updateAVSMetadataURICall {
6509                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6510                    Self { _metadataURI: tuple.0 }
6511                }
6512            }
6513        }
6514        {
6515            #[doc(hidden)]
6516            type UnderlyingSolTuple<'a> = ();
6517            #[doc(hidden)]
6518            type UnderlyingRustTuple<'a> = ();
6519            #[cfg(test)]
6520            #[allow(dead_code, unreachable_patterns)]
6521            fn _type_assertion(
6522                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6523            ) {
6524                match _t {
6525                    alloy_sol_types::private::AssertTypeEq::<
6526                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6527                    >(_) => {}
6528                }
6529            }
6530            #[automatically_derived]
6531            #[doc(hidden)]
6532            impl ::core::convert::From<updateAVSMetadataURIReturn>
6533            for UnderlyingRustTuple<'_> {
6534                fn from(value: updateAVSMetadataURIReturn) -> Self {
6535                    ()
6536                }
6537            }
6538            #[automatically_derived]
6539            #[doc(hidden)]
6540            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6541            for updateAVSMetadataURIReturn {
6542                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6543                    Self {}
6544                }
6545            }
6546        }
6547        impl updateAVSMetadataURIReturn {
6548            fn _tokenize(
6549                &self,
6550            ) -> <updateAVSMetadataURICall as alloy_sol_types::SolCall>::ReturnToken<
6551                '_,
6552            > {
6553                ()
6554            }
6555        }
6556        #[automatically_derived]
6557        impl alloy_sol_types::SolCall for updateAVSMetadataURICall {
6558            type Parameters<'a> = (alloy::sol_types::sol_data::String,);
6559            type Token<'a> = <Self::Parameters<
6560                'a,
6561            > as alloy_sol_types::SolType>::Token<'a>;
6562            type Return = updateAVSMetadataURIReturn;
6563            type ReturnTuple<'a> = ();
6564            type ReturnToken<'a> = <Self::ReturnTuple<
6565                'a,
6566            > as alloy_sol_types::SolType>::Token<'a>;
6567            const SIGNATURE: &'static str = "updateAVSMetadataURI(string)";
6568            const SELECTOR: [u8; 4] = [169u8, 143u8, 179u8, 85u8];
6569            #[inline]
6570            fn new<'a>(
6571                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6572            ) -> Self {
6573                tuple.into()
6574            }
6575            #[inline]
6576            fn tokenize(&self) -> Self::Token<'_> {
6577                (
6578                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
6579                        &self._metadataURI,
6580                    ),
6581                )
6582            }
6583            #[inline]
6584            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6585                updateAVSMetadataURIReturn::_tokenize(ret)
6586            }
6587            #[inline]
6588            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6589                <Self::ReturnTuple<
6590                    '_,
6591                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6592                    .map(Into::into)
6593            }
6594            #[inline]
6595            fn abi_decode_returns_validate(
6596                data: &[u8],
6597            ) -> alloy_sol_types::Result<Self::Return> {
6598                <Self::ReturnTuple<
6599                    '_,
6600                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6601                    .map(Into::into)
6602            }
6603        }
6604    };
6605    ///Container for all the [`SquaringServiceManager`](self) function calls.
6606    #[derive(serde::Serialize, serde::Deserialize)]
6607    #[derive()]
6608    pub enum SquaringServiceManagerCalls {
6609        #[allow(missing_docs)]
6610        addPendingAdmin(addPendingAdminCall),
6611        #[allow(missing_docs)]
6612        avsDirectory(avsDirectoryCall),
6613        #[allow(missing_docs)]
6614        createAVSRewardsSubmission(createAVSRewardsSubmissionCall),
6615        #[allow(missing_docs)]
6616        createOperatorDirectedAVSRewardsSubmission(
6617            createOperatorDirectedAVSRewardsSubmissionCall,
6618        ),
6619        #[allow(missing_docs)]
6620        deregisterOperatorFromAVS(deregisterOperatorFromAVSCall),
6621        #[allow(missing_docs)]
6622        deregisterOperatorFromOperatorSets(deregisterOperatorFromOperatorSetsCall),
6623        #[allow(missing_docs)]
6624        freezeOperator(freezeOperatorCall),
6625        #[allow(missing_docs)]
6626        getOperatorRestakedStrategies(getOperatorRestakedStrategiesCall),
6627        #[allow(missing_docs)]
6628        getRestakeableStrategies(getRestakeableStrategiesCall),
6629        #[allow(missing_docs)]
6630        initialize(initializeCall),
6631        #[allow(missing_docs)]
6632        owner(ownerCall),
6633        #[allow(missing_docs)]
6634        registerOperatorToAVS(registerOperatorToAVSCall),
6635        #[allow(missing_docs)]
6636        removeAdmin(removeAdminCall),
6637        #[allow(missing_docs)]
6638        removeAppointee(removeAppointeeCall),
6639        #[allow(missing_docs)]
6640        removePendingAdmin(removePendingAdminCall),
6641        #[allow(missing_docs)]
6642        renounceOwnership(renounceOwnershipCall),
6643        #[allow(missing_docs)]
6644        rewardsInitiator(rewardsInitiatorCall),
6645        #[allow(missing_docs)]
6646        setAppointee(setAppointeeCall),
6647        #[allow(missing_docs)]
6648        setClaimerFor(setClaimerForCall),
6649        #[allow(missing_docs)]
6650        setRewardsInitiator(setRewardsInitiatorCall),
6651        #[allow(missing_docs)]
6652        squaringTaskManager(squaringTaskManagerCall),
6653        #[allow(missing_docs)]
6654        transferOwnership(transferOwnershipCall),
6655        #[allow(missing_docs)]
6656        updateAVSMetadataURI(updateAVSMetadataURICall),
6657    }
6658    #[automatically_derived]
6659    impl SquaringServiceManagerCalls {
6660        /// All the selectors of this enum.
6661        ///
6662        /// Note that the selectors might not be in the same order as the variants.
6663        /// No guarantees are made about the order of the selectors.
6664        ///
6665        /// Prefer using `SolInterface` methods instead.
6666        pub const SELECTORS: &'static [[u8; 4usize]] = &[
6667            [23u8, 133u8, 245u8, 60u8],
6668            [31u8, 219u8, 12u8, 253u8],
6669            [39u8, 148u8, 50u8, 235u8],
6670            [51u8, 207u8, 183u8, 183u8],
6671            [56u8, 200u8, 238u8, 100u8],
6672            [59u8, 194u8, 140u8, 140u8],
6673            [72u8, 92u8, 201u8, 85u8],
6674            [107u8, 58u8, 167u8, 46u8],
6675            [113u8, 80u8, 24u8, 166u8],
6676            [141u8, 165u8, 203u8, 91u8],
6677            [153u8, 38u8, 238u8, 125u8],
6678            [157u8, 161u8, 109u8, 142u8],
6679            [160u8, 22u8, 157u8, 221u8],
6680            [162u8, 11u8, 153u8, 191u8],
6681            [163u8, 100u8, 244u8, 218u8],
6682            [169u8, 143u8, 179u8, 85u8],
6683            [186u8, 85u8, 8u8, 128u8],
6684            [193u8, 168u8, 226u8, 197u8],
6685            [195u8, 252u8, 145u8, 234u8],
6686            [228u8, 129u8, 175u8, 157u8],
6687            [242u8, 253u8, 227u8, 139u8],
6688            [252u8, 41u8, 157u8, 238u8],
6689            [252u8, 227u8, 108u8, 125u8],
6690        ];
6691    }
6692    #[automatically_derived]
6693    impl alloy_sol_types::SolInterface for SquaringServiceManagerCalls {
6694        const NAME: &'static str = "SquaringServiceManagerCalls";
6695        const MIN_DATA_LENGTH: usize = 0usize;
6696        const COUNT: usize = 23usize;
6697        #[inline]
6698        fn selector(&self) -> [u8; 4] {
6699            match self {
6700                Self::addPendingAdmin(_) => {
6701                    <addPendingAdminCall as alloy_sol_types::SolCall>::SELECTOR
6702                }
6703                Self::avsDirectory(_) => {
6704                    <avsDirectoryCall as alloy_sol_types::SolCall>::SELECTOR
6705                }
6706                Self::createAVSRewardsSubmission(_) => {
6707                    <createAVSRewardsSubmissionCall as alloy_sol_types::SolCall>::SELECTOR
6708                }
6709                Self::createOperatorDirectedAVSRewardsSubmission(_) => {
6710                    <createOperatorDirectedAVSRewardsSubmissionCall as alloy_sol_types::SolCall>::SELECTOR
6711                }
6712                Self::deregisterOperatorFromAVS(_) => {
6713                    <deregisterOperatorFromAVSCall as alloy_sol_types::SolCall>::SELECTOR
6714                }
6715                Self::deregisterOperatorFromOperatorSets(_) => {
6716                    <deregisterOperatorFromOperatorSetsCall as alloy_sol_types::SolCall>::SELECTOR
6717                }
6718                Self::freezeOperator(_) => {
6719                    <freezeOperatorCall as alloy_sol_types::SolCall>::SELECTOR
6720                }
6721                Self::getOperatorRestakedStrategies(_) => {
6722                    <getOperatorRestakedStrategiesCall as alloy_sol_types::SolCall>::SELECTOR
6723                }
6724                Self::getRestakeableStrategies(_) => {
6725                    <getRestakeableStrategiesCall as alloy_sol_types::SolCall>::SELECTOR
6726                }
6727                Self::initialize(_) => {
6728                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
6729                }
6730                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
6731                Self::registerOperatorToAVS(_) => {
6732                    <registerOperatorToAVSCall as alloy_sol_types::SolCall>::SELECTOR
6733                }
6734                Self::removeAdmin(_) => {
6735                    <removeAdminCall as alloy_sol_types::SolCall>::SELECTOR
6736                }
6737                Self::removeAppointee(_) => {
6738                    <removeAppointeeCall as alloy_sol_types::SolCall>::SELECTOR
6739                }
6740                Self::removePendingAdmin(_) => {
6741                    <removePendingAdminCall as alloy_sol_types::SolCall>::SELECTOR
6742                }
6743                Self::renounceOwnership(_) => {
6744                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
6745                }
6746                Self::rewardsInitiator(_) => {
6747                    <rewardsInitiatorCall as alloy_sol_types::SolCall>::SELECTOR
6748                }
6749                Self::setAppointee(_) => {
6750                    <setAppointeeCall as alloy_sol_types::SolCall>::SELECTOR
6751                }
6752                Self::setClaimerFor(_) => {
6753                    <setClaimerForCall as alloy_sol_types::SolCall>::SELECTOR
6754                }
6755                Self::setRewardsInitiator(_) => {
6756                    <setRewardsInitiatorCall as alloy_sol_types::SolCall>::SELECTOR
6757                }
6758                Self::squaringTaskManager(_) => {
6759                    <squaringTaskManagerCall as alloy_sol_types::SolCall>::SELECTOR
6760                }
6761                Self::transferOwnership(_) => {
6762                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
6763                }
6764                Self::updateAVSMetadataURI(_) => {
6765                    <updateAVSMetadataURICall as alloy_sol_types::SolCall>::SELECTOR
6766                }
6767            }
6768        }
6769        #[inline]
6770        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
6771            Self::SELECTORS.get(i).copied()
6772        }
6773        #[inline]
6774        fn valid_selector(selector: [u8; 4]) -> bool {
6775            Self::SELECTORS.binary_search(&selector).is_ok()
6776        }
6777        #[inline]
6778        #[allow(non_snake_case)]
6779        fn abi_decode_raw(
6780            selector: [u8; 4],
6781            data: &[u8],
6782        ) -> alloy_sol_types::Result<Self> {
6783            static DECODE_SHIMS: &[fn(
6784                &[u8],
6785            ) -> alloy_sol_types::Result<SquaringServiceManagerCalls>] = &[
6786                {
6787                    fn removeAdmin(
6788                        data: &[u8],
6789                    ) -> alloy_sol_types::Result<SquaringServiceManagerCalls> {
6790                        <removeAdminCall as alloy_sol_types::SolCall>::abi_decode_raw(
6791                                data,
6792                            )
6793                            .map(SquaringServiceManagerCalls::removeAdmin)
6794                    }
6795                    removeAdmin
6796                },
6797                {
6798                    fn setAppointee(
6799                        data: &[u8],
6800                    ) -> alloy_sol_types::Result<SquaringServiceManagerCalls> {
6801                        <setAppointeeCall as alloy_sol_types::SolCall>::abi_decode_raw(
6802                                data,
6803                            )
6804                            .map(SquaringServiceManagerCalls::setAppointee)
6805                    }
6806                    setAppointee
6807                },
6808                {
6809                    fn addPendingAdmin(
6810                        data: &[u8],
6811                    ) -> alloy_sol_types::Result<SquaringServiceManagerCalls> {
6812                        <addPendingAdminCall as alloy_sol_types::SolCall>::abi_decode_raw(
6813                                data,
6814                            )
6815                            .map(SquaringServiceManagerCalls::addPendingAdmin)
6816                    }
6817                    addPendingAdmin
6818                },
6819                {
6820                    fn getOperatorRestakedStrategies(
6821                        data: &[u8],
6822                    ) -> alloy_sol_types::Result<SquaringServiceManagerCalls> {
6823                        <getOperatorRestakedStrategiesCall as alloy_sol_types::SolCall>::abi_decode_raw(
6824                                data,
6825                            )
6826                            .map(
6827                                SquaringServiceManagerCalls::getOperatorRestakedStrategies,
6828                            )
6829                    }
6830                    getOperatorRestakedStrategies
6831                },
6832                {
6833                    fn freezeOperator(
6834                        data: &[u8],
6835                    ) -> alloy_sol_types::Result<SquaringServiceManagerCalls> {
6836                        <freezeOperatorCall as alloy_sol_types::SolCall>::abi_decode_raw(
6837                                data,
6838                            )
6839                            .map(SquaringServiceManagerCalls::freezeOperator)
6840                    }
6841                    freezeOperator
6842                },
6843                {
6844                    fn setRewardsInitiator(
6845                        data: &[u8],
6846                    ) -> alloy_sol_types::Result<SquaringServiceManagerCalls> {
6847                        <setRewardsInitiatorCall as alloy_sol_types::SolCall>::abi_decode_raw(
6848                                data,
6849                            )
6850                            .map(SquaringServiceManagerCalls::setRewardsInitiator)
6851                    }
6852                    setRewardsInitiator
6853                },
6854                {
6855                    fn initialize(
6856                        data: &[u8],
6857                    ) -> alloy_sol_types::Result<SquaringServiceManagerCalls> {
6858                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(
6859                                data,
6860                            )
6861                            .map(SquaringServiceManagerCalls::initialize)
6862                    }
6863                    initialize
6864                },
6865                {
6866                    fn avsDirectory(
6867                        data: &[u8],
6868                    ) -> alloy_sol_types::Result<SquaringServiceManagerCalls> {
6869                        <avsDirectoryCall as alloy_sol_types::SolCall>::abi_decode_raw(
6870                                data,
6871                            )
6872                            .map(SquaringServiceManagerCalls::avsDirectory)
6873                    }
6874                    avsDirectory
6875                },
6876                {
6877                    fn renounceOwnership(
6878                        data: &[u8],
6879                    ) -> alloy_sol_types::Result<SquaringServiceManagerCalls> {
6880                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
6881                                data,
6882                            )
6883                            .map(SquaringServiceManagerCalls::renounceOwnership)
6884                    }
6885                    renounceOwnership
6886                },
6887                {
6888                    fn owner(
6889                        data: &[u8],
6890                    ) -> alloy_sol_types::Result<SquaringServiceManagerCalls> {
6891                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
6892                            .map(SquaringServiceManagerCalls::owner)
6893                    }
6894                    owner
6895                },
6896                {
6897                    fn registerOperatorToAVS(
6898                        data: &[u8],
6899                    ) -> alloy_sol_types::Result<SquaringServiceManagerCalls> {
6900                        <registerOperatorToAVSCall as alloy_sol_types::SolCall>::abi_decode_raw(
6901                                data,
6902                            )
6903                            .map(SquaringServiceManagerCalls::registerOperatorToAVS)
6904                    }
6905                    registerOperatorToAVS
6906                },
6907                {
6908                    fn removePendingAdmin(
6909                        data: &[u8],
6910                    ) -> alloy_sol_types::Result<SquaringServiceManagerCalls> {
6911                        <removePendingAdminCall as alloy_sol_types::SolCall>::abi_decode_raw(
6912                                data,
6913                            )
6914                            .map(SquaringServiceManagerCalls::removePendingAdmin)
6915                    }
6916                    removePendingAdmin
6917                },
6918                {
6919                    fn setClaimerFor(
6920                        data: &[u8],
6921                    ) -> alloy_sol_types::Result<SquaringServiceManagerCalls> {
6922                        <setClaimerForCall as alloy_sol_types::SolCall>::abi_decode_raw(
6923                                data,
6924                            )
6925                            .map(SquaringServiceManagerCalls::setClaimerFor)
6926                    }
6927                    setClaimerFor
6928                },
6929                {
6930                    fn createOperatorDirectedAVSRewardsSubmission(
6931                        data: &[u8],
6932                    ) -> alloy_sol_types::Result<SquaringServiceManagerCalls> {
6933                        <createOperatorDirectedAVSRewardsSubmissionCall as alloy_sol_types::SolCall>::abi_decode_raw(
6934                                data,
6935                            )
6936                            .map(
6937                                SquaringServiceManagerCalls::createOperatorDirectedAVSRewardsSubmission,
6938                            )
6939                    }
6940                    createOperatorDirectedAVSRewardsSubmission
6941                },
6942                {
6943                    fn deregisterOperatorFromAVS(
6944                        data: &[u8],
6945                    ) -> alloy_sol_types::Result<SquaringServiceManagerCalls> {
6946                        <deregisterOperatorFromAVSCall as alloy_sol_types::SolCall>::abi_decode_raw(
6947                                data,
6948                            )
6949                            .map(SquaringServiceManagerCalls::deregisterOperatorFromAVS)
6950                    }
6951                    deregisterOperatorFromAVS
6952                },
6953                {
6954                    fn updateAVSMetadataURI(
6955                        data: &[u8],
6956                    ) -> alloy_sol_types::Result<SquaringServiceManagerCalls> {
6957                        <updateAVSMetadataURICall as alloy_sol_types::SolCall>::abi_decode_raw(
6958                                data,
6959                            )
6960                            .map(SquaringServiceManagerCalls::updateAVSMetadataURI)
6961                    }
6962                    updateAVSMetadataURI
6963                },
6964                {
6965                    fn removeAppointee(
6966                        data: &[u8],
6967                    ) -> alloy_sol_types::Result<SquaringServiceManagerCalls> {
6968                        <removeAppointeeCall as alloy_sol_types::SolCall>::abi_decode_raw(
6969                                data,
6970                            )
6971                            .map(SquaringServiceManagerCalls::removeAppointee)
6972                    }
6973                    removeAppointee
6974                },
6975                {
6976                    fn deregisterOperatorFromOperatorSets(
6977                        data: &[u8],
6978                    ) -> alloy_sol_types::Result<SquaringServiceManagerCalls> {
6979                        <deregisterOperatorFromOperatorSetsCall as alloy_sol_types::SolCall>::abi_decode_raw(
6980                                data,
6981                            )
6982                            .map(
6983                                SquaringServiceManagerCalls::deregisterOperatorFromOperatorSets,
6984                            )
6985                    }
6986                    deregisterOperatorFromOperatorSets
6987                },
6988                {
6989                    fn squaringTaskManager(
6990                        data: &[u8],
6991                    ) -> alloy_sol_types::Result<SquaringServiceManagerCalls> {
6992                        <squaringTaskManagerCall as alloy_sol_types::SolCall>::abi_decode_raw(
6993                                data,
6994                            )
6995                            .map(SquaringServiceManagerCalls::squaringTaskManager)
6996                    }
6997                    squaringTaskManager
6998                },
6999                {
7000                    fn getRestakeableStrategies(
7001                        data: &[u8],
7002                    ) -> alloy_sol_types::Result<SquaringServiceManagerCalls> {
7003                        <getRestakeableStrategiesCall as alloy_sol_types::SolCall>::abi_decode_raw(
7004                                data,
7005                            )
7006                            .map(SquaringServiceManagerCalls::getRestakeableStrategies)
7007                    }
7008                    getRestakeableStrategies
7009                },
7010                {
7011                    fn transferOwnership(
7012                        data: &[u8],
7013                    ) -> alloy_sol_types::Result<SquaringServiceManagerCalls> {
7014                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
7015                                data,
7016                            )
7017                            .map(SquaringServiceManagerCalls::transferOwnership)
7018                    }
7019                    transferOwnership
7020                },
7021                {
7022                    fn rewardsInitiator(
7023                        data: &[u8],
7024                    ) -> alloy_sol_types::Result<SquaringServiceManagerCalls> {
7025                        <rewardsInitiatorCall as alloy_sol_types::SolCall>::abi_decode_raw(
7026                                data,
7027                            )
7028                            .map(SquaringServiceManagerCalls::rewardsInitiator)
7029                    }
7030                    rewardsInitiator
7031                },
7032                {
7033                    fn createAVSRewardsSubmission(
7034                        data: &[u8],
7035                    ) -> alloy_sol_types::Result<SquaringServiceManagerCalls> {
7036                        <createAVSRewardsSubmissionCall as alloy_sol_types::SolCall>::abi_decode_raw(
7037                                data,
7038                            )
7039                            .map(SquaringServiceManagerCalls::createAVSRewardsSubmission)
7040                    }
7041                    createAVSRewardsSubmission
7042                },
7043            ];
7044            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
7045                return Err(
7046                    alloy_sol_types::Error::unknown_selector(
7047                        <Self as alloy_sol_types::SolInterface>::NAME,
7048                        selector,
7049                    ),
7050                );
7051            };
7052            DECODE_SHIMS[idx](data)
7053        }
7054        #[inline]
7055        #[allow(non_snake_case)]
7056        fn abi_decode_raw_validate(
7057            selector: [u8; 4],
7058            data: &[u8],
7059        ) -> alloy_sol_types::Result<Self> {
7060            static DECODE_VALIDATE_SHIMS: &[fn(
7061                &[u8],
7062            ) -> alloy_sol_types::Result<SquaringServiceManagerCalls>] = &[
7063                {
7064                    fn removeAdmin(
7065                        data: &[u8],
7066                    ) -> alloy_sol_types::Result<SquaringServiceManagerCalls> {
7067                        <removeAdminCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
7068                                data,
7069                            )
7070                            .map(SquaringServiceManagerCalls::removeAdmin)
7071                    }
7072                    removeAdmin
7073                },
7074                {
7075                    fn setAppointee(
7076                        data: &[u8],
7077                    ) -> alloy_sol_types::Result<SquaringServiceManagerCalls> {
7078                        <setAppointeeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
7079                                data,
7080                            )
7081                            .map(SquaringServiceManagerCalls::setAppointee)
7082                    }
7083                    setAppointee
7084                },
7085                {
7086                    fn addPendingAdmin(
7087                        data: &[u8],
7088                    ) -> alloy_sol_types::Result<SquaringServiceManagerCalls> {
7089                        <addPendingAdminCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
7090                                data,
7091                            )
7092                            .map(SquaringServiceManagerCalls::addPendingAdmin)
7093                    }
7094                    addPendingAdmin
7095                },
7096                {
7097                    fn getOperatorRestakedStrategies(
7098                        data: &[u8],
7099                    ) -> alloy_sol_types::Result<SquaringServiceManagerCalls> {
7100                        <getOperatorRestakedStrategiesCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
7101                                data,
7102                            )
7103                            .map(
7104                                SquaringServiceManagerCalls::getOperatorRestakedStrategies,
7105                            )
7106                    }
7107                    getOperatorRestakedStrategies
7108                },
7109                {
7110                    fn freezeOperator(
7111                        data: &[u8],
7112                    ) -> alloy_sol_types::Result<SquaringServiceManagerCalls> {
7113                        <freezeOperatorCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
7114                                data,
7115                            )
7116                            .map(SquaringServiceManagerCalls::freezeOperator)
7117                    }
7118                    freezeOperator
7119                },
7120                {
7121                    fn setRewardsInitiator(
7122                        data: &[u8],
7123                    ) -> alloy_sol_types::Result<SquaringServiceManagerCalls> {
7124                        <setRewardsInitiatorCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
7125                                data,
7126                            )
7127                            .map(SquaringServiceManagerCalls::setRewardsInitiator)
7128                    }
7129                    setRewardsInitiator
7130                },
7131                {
7132                    fn initialize(
7133                        data: &[u8],
7134                    ) -> alloy_sol_types::Result<SquaringServiceManagerCalls> {
7135                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
7136                                data,
7137                            )
7138                            .map(SquaringServiceManagerCalls::initialize)
7139                    }
7140                    initialize
7141                },
7142                {
7143                    fn avsDirectory(
7144                        data: &[u8],
7145                    ) -> alloy_sol_types::Result<SquaringServiceManagerCalls> {
7146                        <avsDirectoryCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
7147                                data,
7148                            )
7149                            .map(SquaringServiceManagerCalls::avsDirectory)
7150                    }
7151                    avsDirectory
7152                },
7153                {
7154                    fn renounceOwnership(
7155                        data: &[u8],
7156                    ) -> alloy_sol_types::Result<SquaringServiceManagerCalls> {
7157                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
7158                                data,
7159                            )
7160                            .map(SquaringServiceManagerCalls::renounceOwnership)
7161                    }
7162                    renounceOwnership
7163                },
7164                {
7165                    fn owner(
7166                        data: &[u8],
7167                    ) -> alloy_sol_types::Result<SquaringServiceManagerCalls> {
7168                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
7169                                data,
7170                            )
7171                            .map(SquaringServiceManagerCalls::owner)
7172                    }
7173                    owner
7174                },
7175                {
7176                    fn registerOperatorToAVS(
7177                        data: &[u8],
7178                    ) -> alloy_sol_types::Result<SquaringServiceManagerCalls> {
7179                        <registerOperatorToAVSCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
7180                                data,
7181                            )
7182                            .map(SquaringServiceManagerCalls::registerOperatorToAVS)
7183                    }
7184                    registerOperatorToAVS
7185                },
7186                {
7187                    fn removePendingAdmin(
7188                        data: &[u8],
7189                    ) -> alloy_sol_types::Result<SquaringServiceManagerCalls> {
7190                        <removePendingAdminCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
7191                                data,
7192                            )
7193                            .map(SquaringServiceManagerCalls::removePendingAdmin)
7194                    }
7195                    removePendingAdmin
7196                },
7197                {
7198                    fn setClaimerFor(
7199                        data: &[u8],
7200                    ) -> alloy_sol_types::Result<SquaringServiceManagerCalls> {
7201                        <setClaimerForCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
7202                                data,
7203                            )
7204                            .map(SquaringServiceManagerCalls::setClaimerFor)
7205                    }
7206                    setClaimerFor
7207                },
7208                {
7209                    fn createOperatorDirectedAVSRewardsSubmission(
7210                        data: &[u8],
7211                    ) -> alloy_sol_types::Result<SquaringServiceManagerCalls> {
7212                        <createOperatorDirectedAVSRewardsSubmissionCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
7213                                data,
7214                            )
7215                            .map(
7216                                SquaringServiceManagerCalls::createOperatorDirectedAVSRewardsSubmission,
7217                            )
7218                    }
7219                    createOperatorDirectedAVSRewardsSubmission
7220                },
7221                {
7222                    fn deregisterOperatorFromAVS(
7223                        data: &[u8],
7224                    ) -> alloy_sol_types::Result<SquaringServiceManagerCalls> {
7225                        <deregisterOperatorFromAVSCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
7226                                data,
7227                            )
7228                            .map(SquaringServiceManagerCalls::deregisterOperatorFromAVS)
7229                    }
7230                    deregisterOperatorFromAVS
7231                },
7232                {
7233                    fn updateAVSMetadataURI(
7234                        data: &[u8],
7235                    ) -> alloy_sol_types::Result<SquaringServiceManagerCalls> {
7236                        <updateAVSMetadataURICall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
7237                                data,
7238                            )
7239                            .map(SquaringServiceManagerCalls::updateAVSMetadataURI)
7240                    }
7241                    updateAVSMetadataURI
7242                },
7243                {
7244                    fn removeAppointee(
7245                        data: &[u8],
7246                    ) -> alloy_sol_types::Result<SquaringServiceManagerCalls> {
7247                        <removeAppointeeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
7248                                data,
7249                            )
7250                            .map(SquaringServiceManagerCalls::removeAppointee)
7251                    }
7252                    removeAppointee
7253                },
7254                {
7255                    fn deregisterOperatorFromOperatorSets(
7256                        data: &[u8],
7257                    ) -> alloy_sol_types::Result<SquaringServiceManagerCalls> {
7258                        <deregisterOperatorFromOperatorSetsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
7259                                data,
7260                            )
7261                            .map(
7262                                SquaringServiceManagerCalls::deregisterOperatorFromOperatorSets,
7263                            )
7264                    }
7265                    deregisterOperatorFromOperatorSets
7266                },
7267                {
7268                    fn squaringTaskManager(
7269                        data: &[u8],
7270                    ) -> alloy_sol_types::Result<SquaringServiceManagerCalls> {
7271                        <squaringTaskManagerCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
7272                                data,
7273                            )
7274                            .map(SquaringServiceManagerCalls::squaringTaskManager)
7275                    }
7276                    squaringTaskManager
7277                },
7278                {
7279                    fn getRestakeableStrategies(
7280                        data: &[u8],
7281                    ) -> alloy_sol_types::Result<SquaringServiceManagerCalls> {
7282                        <getRestakeableStrategiesCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
7283                                data,
7284                            )
7285                            .map(SquaringServiceManagerCalls::getRestakeableStrategies)
7286                    }
7287                    getRestakeableStrategies
7288                },
7289                {
7290                    fn transferOwnership(
7291                        data: &[u8],
7292                    ) -> alloy_sol_types::Result<SquaringServiceManagerCalls> {
7293                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
7294                                data,
7295                            )
7296                            .map(SquaringServiceManagerCalls::transferOwnership)
7297                    }
7298                    transferOwnership
7299                },
7300                {
7301                    fn rewardsInitiator(
7302                        data: &[u8],
7303                    ) -> alloy_sol_types::Result<SquaringServiceManagerCalls> {
7304                        <rewardsInitiatorCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
7305                                data,
7306                            )
7307                            .map(SquaringServiceManagerCalls::rewardsInitiator)
7308                    }
7309                    rewardsInitiator
7310                },
7311                {
7312                    fn createAVSRewardsSubmission(
7313                        data: &[u8],
7314                    ) -> alloy_sol_types::Result<SquaringServiceManagerCalls> {
7315                        <createAVSRewardsSubmissionCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
7316                                data,
7317                            )
7318                            .map(SquaringServiceManagerCalls::createAVSRewardsSubmission)
7319                    }
7320                    createAVSRewardsSubmission
7321                },
7322            ];
7323            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
7324                return Err(
7325                    alloy_sol_types::Error::unknown_selector(
7326                        <Self as alloy_sol_types::SolInterface>::NAME,
7327                        selector,
7328                    ),
7329                );
7330            };
7331            DECODE_VALIDATE_SHIMS[idx](data)
7332        }
7333        #[inline]
7334        fn abi_encoded_size(&self) -> usize {
7335            match self {
7336                Self::addPendingAdmin(inner) => {
7337                    <addPendingAdminCall as alloy_sol_types::SolCall>::abi_encoded_size(
7338                        inner,
7339                    )
7340                }
7341                Self::avsDirectory(inner) => {
7342                    <avsDirectoryCall as alloy_sol_types::SolCall>::abi_encoded_size(
7343                        inner,
7344                    )
7345                }
7346                Self::createAVSRewardsSubmission(inner) => {
7347                    <createAVSRewardsSubmissionCall as alloy_sol_types::SolCall>::abi_encoded_size(
7348                        inner,
7349                    )
7350                }
7351                Self::createOperatorDirectedAVSRewardsSubmission(inner) => {
7352                    <createOperatorDirectedAVSRewardsSubmissionCall as alloy_sol_types::SolCall>::abi_encoded_size(
7353                        inner,
7354                    )
7355                }
7356                Self::deregisterOperatorFromAVS(inner) => {
7357                    <deregisterOperatorFromAVSCall as alloy_sol_types::SolCall>::abi_encoded_size(
7358                        inner,
7359                    )
7360                }
7361                Self::deregisterOperatorFromOperatorSets(inner) => {
7362                    <deregisterOperatorFromOperatorSetsCall as alloy_sol_types::SolCall>::abi_encoded_size(
7363                        inner,
7364                    )
7365                }
7366                Self::freezeOperator(inner) => {
7367                    <freezeOperatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
7368                        inner,
7369                    )
7370                }
7371                Self::getOperatorRestakedStrategies(inner) => {
7372                    <getOperatorRestakedStrategiesCall as alloy_sol_types::SolCall>::abi_encoded_size(
7373                        inner,
7374                    )
7375                }
7376                Self::getRestakeableStrategies(inner) => {
7377                    <getRestakeableStrategiesCall as alloy_sol_types::SolCall>::abi_encoded_size(
7378                        inner,
7379                    )
7380                }
7381                Self::initialize(inner) => {
7382                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
7383                }
7384                Self::owner(inner) => {
7385                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
7386                }
7387                Self::registerOperatorToAVS(inner) => {
7388                    <registerOperatorToAVSCall as alloy_sol_types::SolCall>::abi_encoded_size(
7389                        inner,
7390                    )
7391                }
7392                Self::removeAdmin(inner) => {
7393                    <removeAdminCall as alloy_sol_types::SolCall>::abi_encoded_size(
7394                        inner,
7395                    )
7396                }
7397                Self::removeAppointee(inner) => {
7398                    <removeAppointeeCall as alloy_sol_types::SolCall>::abi_encoded_size(
7399                        inner,
7400                    )
7401                }
7402                Self::removePendingAdmin(inner) => {
7403                    <removePendingAdminCall as alloy_sol_types::SolCall>::abi_encoded_size(
7404                        inner,
7405                    )
7406                }
7407                Self::renounceOwnership(inner) => {
7408                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
7409                        inner,
7410                    )
7411                }
7412                Self::rewardsInitiator(inner) => {
7413                    <rewardsInitiatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
7414                        inner,
7415                    )
7416                }
7417                Self::setAppointee(inner) => {
7418                    <setAppointeeCall as alloy_sol_types::SolCall>::abi_encoded_size(
7419                        inner,
7420                    )
7421                }
7422                Self::setClaimerFor(inner) => {
7423                    <setClaimerForCall as alloy_sol_types::SolCall>::abi_encoded_size(
7424                        inner,
7425                    )
7426                }
7427                Self::setRewardsInitiator(inner) => {
7428                    <setRewardsInitiatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
7429                        inner,
7430                    )
7431                }
7432                Self::squaringTaskManager(inner) => {
7433                    <squaringTaskManagerCall as alloy_sol_types::SolCall>::abi_encoded_size(
7434                        inner,
7435                    )
7436                }
7437                Self::transferOwnership(inner) => {
7438                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
7439                        inner,
7440                    )
7441                }
7442                Self::updateAVSMetadataURI(inner) => {
7443                    <updateAVSMetadataURICall as alloy_sol_types::SolCall>::abi_encoded_size(
7444                        inner,
7445                    )
7446                }
7447            }
7448        }
7449        #[inline]
7450        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
7451            match self {
7452                Self::addPendingAdmin(inner) => {
7453                    <addPendingAdminCall as alloy_sol_types::SolCall>::abi_encode_raw(
7454                        inner,
7455                        out,
7456                    )
7457                }
7458                Self::avsDirectory(inner) => {
7459                    <avsDirectoryCall as alloy_sol_types::SolCall>::abi_encode_raw(
7460                        inner,
7461                        out,
7462                    )
7463                }
7464                Self::createAVSRewardsSubmission(inner) => {
7465                    <createAVSRewardsSubmissionCall as alloy_sol_types::SolCall>::abi_encode_raw(
7466                        inner,
7467                        out,
7468                    )
7469                }
7470                Self::createOperatorDirectedAVSRewardsSubmission(inner) => {
7471                    <createOperatorDirectedAVSRewardsSubmissionCall as alloy_sol_types::SolCall>::abi_encode_raw(
7472                        inner,
7473                        out,
7474                    )
7475                }
7476                Self::deregisterOperatorFromAVS(inner) => {
7477                    <deregisterOperatorFromAVSCall as alloy_sol_types::SolCall>::abi_encode_raw(
7478                        inner,
7479                        out,
7480                    )
7481                }
7482                Self::deregisterOperatorFromOperatorSets(inner) => {
7483                    <deregisterOperatorFromOperatorSetsCall as alloy_sol_types::SolCall>::abi_encode_raw(
7484                        inner,
7485                        out,
7486                    )
7487                }
7488                Self::freezeOperator(inner) => {
7489                    <freezeOperatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
7490                        inner,
7491                        out,
7492                    )
7493                }
7494                Self::getOperatorRestakedStrategies(inner) => {
7495                    <getOperatorRestakedStrategiesCall as alloy_sol_types::SolCall>::abi_encode_raw(
7496                        inner,
7497                        out,
7498                    )
7499                }
7500                Self::getRestakeableStrategies(inner) => {
7501                    <getRestakeableStrategiesCall as alloy_sol_types::SolCall>::abi_encode_raw(
7502                        inner,
7503                        out,
7504                    )
7505                }
7506                Self::initialize(inner) => {
7507                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
7508                        inner,
7509                        out,
7510                    )
7511                }
7512                Self::owner(inner) => {
7513                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
7514                }
7515                Self::registerOperatorToAVS(inner) => {
7516                    <registerOperatorToAVSCall as alloy_sol_types::SolCall>::abi_encode_raw(
7517                        inner,
7518                        out,
7519                    )
7520                }
7521                Self::removeAdmin(inner) => {
7522                    <removeAdminCall as alloy_sol_types::SolCall>::abi_encode_raw(
7523                        inner,
7524                        out,
7525                    )
7526                }
7527                Self::removeAppointee(inner) => {
7528                    <removeAppointeeCall as alloy_sol_types::SolCall>::abi_encode_raw(
7529                        inner,
7530                        out,
7531                    )
7532                }
7533                Self::removePendingAdmin(inner) => {
7534                    <removePendingAdminCall as alloy_sol_types::SolCall>::abi_encode_raw(
7535                        inner,
7536                        out,
7537                    )
7538                }
7539                Self::renounceOwnership(inner) => {
7540                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
7541                        inner,
7542                        out,
7543                    )
7544                }
7545                Self::rewardsInitiator(inner) => {
7546                    <rewardsInitiatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
7547                        inner,
7548                        out,
7549                    )
7550                }
7551                Self::setAppointee(inner) => {
7552                    <setAppointeeCall as alloy_sol_types::SolCall>::abi_encode_raw(
7553                        inner,
7554                        out,
7555                    )
7556                }
7557                Self::setClaimerFor(inner) => {
7558                    <setClaimerForCall as alloy_sol_types::SolCall>::abi_encode_raw(
7559                        inner,
7560                        out,
7561                    )
7562                }
7563                Self::setRewardsInitiator(inner) => {
7564                    <setRewardsInitiatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
7565                        inner,
7566                        out,
7567                    )
7568                }
7569                Self::squaringTaskManager(inner) => {
7570                    <squaringTaskManagerCall as alloy_sol_types::SolCall>::abi_encode_raw(
7571                        inner,
7572                        out,
7573                    )
7574                }
7575                Self::transferOwnership(inner) => {
7576                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
7577                        inner,
7578                        out,
7579                    )
7580                }
7581                Self::updateAVSMetadataURI(inner) => {
7582                    <updateAVSMetadataURICall as alloy_sol_types::SolCall>::abi_encode_raw(
7583                        inner,
7584                        out,
7585                    )
7586                }
7587            }
7588        }
7589    }
7590    ///Container for all the [`SquaringServiceManager`](self) custom errors.
7591    #[derive(serde::Serialize, serde::Deserialize)]
7592    #[derive(Debug, PartialEq, Eq, Hash)]
7593    pub enum SquaringServiceManagerErrors {
7594        #[allow(missing_docs)]
7595        DelayPeriodNotPassed(DelayPeriodNotPassed),
7596        #[allow(missing_docs)]
7597        OnlyRegistryCoordinator(OnlyRegistryCoordinator),
7598        #[allow(missing_docs)]
7599        OnlyRewardsInitiator(OnlyRewardsInitiator),
7600        #[allow(missing_docs)]
7601        OnlyStakeRegistry(OnlyStakeRegistry),
7602    }
7603    #[automatically_derived]
7604    impl SquaringServiceManagerErrors {
7605        /// All the selectors of this enum.
7606        ///
7607        /// Note that the selectors might not be in the same order as the variants.
7608        /// No guarantees are made about the order of the selectors.
7609        ///
7610        /// Prefer using `SolInterface` methods instead.
7611        pub const SELECTORS: &'static [[u8; 4usize]] = &[
7612            [70u8, 191u8, 34u8, 129u8],
7613            [135u8, 41u8, 183u8, 190u8],
7614            [142u8, 121u8, 253u8, 181u8],
7615            [251u8, 98u8, 59u8, 4u8],
7616        ];
7617    }
7618    #[automatically_derived]
7619    impl alloy_sol_types::SolInterface for SquaringServiceManagerErrors {
7620        const NAME: &'static str = "SquaringServiceManagerErrors";
7621        const MIN_DATA_LENGTH: usize = 0usize;
7622        const COUNT: usize = 4usize;
7623        #[inline]
7624        fn selector(&self) -> [u8; 4] {
7625            match self {
7626                Self::DelayPeriodNotPassed(_) => {
7627                    <DelayPeriodNotPassed as alloy_sol_types::SolError>::SELECTOR
7628                }
7629                Self::OnlyRegistryCoordinator(_) => {
7630                    <OnlyRegistryCoordinator as alloy_sol_types::SolError>::SELECTOR
7631                }
7632                Self::OnlyRewardsInitiator(_) => {
7633                    <OnlyRewardsInitiator as alloy_sol_types::SolError>::SELECTOR
7634                }
7635                Self::OnlyStakeRegistry(_) => {
7636                    <OnlyStakeRegistry as alloy_sol_types::SolError>::SELECTOR
7637                }
7638            }
7639        }
7640        #[inline]
7641        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
7642            Self::SELECTORS.get(i).copied()
7643        }
7644        #[inline]
7645        fn valid_selector(selector: [u8; 4]) -> bool {
7646            Self::SELECTORS.binary_search(&selector).is_ok()
7647        }
7648        #[inline]
7649        #[allow(non_snake_case)]
7650        fn abi_decode_raw(
7651            selector: [u8; 4],
7652            data: &[u8],
7653        ) -> alloy_sol_types::Result<Self> {
7654            static DECODE_SHIMS: &[fn(
7655                &[u8],
7656            ) -> alloy_sol_types::Result<SquaringServiceManagerErrors>] = &[
7657                {
7658                    fn OnlyStakeRegistry(
7659                        data: &[u8],
7660                    ) -> alloy_sol_types::Result<SquaringServiceManagerErrors> {
7661                        <OnlyStakeRegistry as alloy_sol_types::SolError>::abi_decode_raw(
7662                                data,
7663                            )
7664                            .map(SquaringServiceManagerErrors::OnlyStakeRegistry)
7665                    }
7666                    OnlyStakeRegistry
7667                },
7668                {
7669                    fn OnlyRegistryCoordinator(
7670                        data: &[u8],
7671                    ) -> alloy_sol_types::Result<SquaringServiceManagerErrors> {
7672                        <OnlyRegistryCoordinator as alloy_sol_types::SolError>::abi_decode_raw(
7673                                data,
7674                            )
7675                            .map(SquaringServiceManagerErrors::OnlyRegistryCoordinator)
7676                    }
7677                    OnlyRegistryCoordinator
7678                },
7679                {
7680                    fn OnlyRewardsInitiator(
7681                        data: &[u8],
7682                    ) -> alloy_sol_types::Result<SquaringServiceManagerErrors> {
7683                        <OnlyRewardsInitiator as alloy_sol_types::SolError>::abi_decode_raw(
7684                                data,
7685                            )
7686                            .map(SquaringServiceManagerErrors::OnlyRewardsInitiator)
7687                    }
7688                    OnlyRewardsInitiator
7689                },
7690                {
7691                    fn DelayPeriodNotPassed(
7692                        data: &[u8],
7693                    ) -> alloy_sol_types::Result<SquaringServiceManagerErrors> {
7694                        <DelayPeriodNotPassed as alloy_sol_types::SolError>::abi_decode_raw(
7695                                data,
7696                            )
7697                            .map(SquaringServiceManagerErrors::DelayPeriodNotPassed)
7698                    }
7699                    DelayPeriodNotPassed
7700                },
7701            ];
7702            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
7703                return Err(
7704                    alloy_sol_types::Error::unknown_selector(
7705                        <Self as alloy_sol_types::SolInterface>::NAME,
7706                        selector,
7707                    ),
7708                );
7709            };
7710            DECODE_SHIMS[idx](data)
7711        }
7712        #[inline]
7713        #[allow(non_snake_case)]
7714        fn abi_decode_raw_validate(
7715            selector: [u8; 4],
7716            data: &[u8],
7717        ) -> alloy_sol_types::Result<Self> {
7718            static DECODE_VALIDATE_SHIMS: &[fn(
7719                &[u8],
7720            ) -> alloy_sol_types::Result<SquaringServiceManagerErrors>] = &[
7721                {
7722                    fn OnlyStakeRegistry(
7723                        data: &[u8],
7724                    ) -> alloy_sol_types::Result<SquaringServiceManagerErrors> {
7725                        <OnlyStakeRegistry as alloy_sol_types::SolError>::abi_decode_raw_validate(
7726                                data,
7727                            )
7728                            .map(SquaringServiceManagerErrors::OnlyStakeRegistry)
7729                    }
7730                    OnlyStakeRegistry
7731                },
7732                {
7733                    fn OnlyRegistryCoordinator(
7734                        data: &[u8],
7735                    ) -> alloy_sol_types::Result<SquaringServiceManagerErrors> {
7736                        <OnlyRegistryCoordinator as alloy_sol_types::SolError>::abi_decode_raw_validate(
7737                                data,
7738                            )
7739                            .map(SquaringServiceManagerErrors::OnlyRegistryCoordinator)
7740                    }
7741                    OnlyRegistryCoordinator
7742                },
7743                {
7744                    fn OnlyRewardsInitiator(
7745                        data: &[u8],
7746                    ) -> alloy_sol_types::Result<SquaringServiceManagerErrors> {
7747                        <OnlyRewardsInitiator as alloy_sol_types::SolError>::abi_decode_raw_validate(
7748                                data,
7749                            )
7750                            .map(SquaringServiceManagerErrors::OnlyRewardsInitiator)
7751                    }
7752                    OnlyRewardsInitiator
7753                },
7754                {
7755                    fn DelayPeriodNotPassed(
7756                        data: &[u8],
7757                    ) -> alloy_sol_types::Result<SquaringServiceManagerErrors> {
7758                        <DelayPeriodNotPassed as alloy_sol_types::SolError>::abi_decode_raw_validate(
7759                                data,
7760                            )
7761                            .map(SquaringServiceManagerErrors::DelayPeriodNotPassed)
7762                    }
7763                    DelayPeriodNotPassed
7764                },
7765            ];
7766            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
7767                return Err(
7768                    alloy_sol_types::Error::unknown_selector(
7769                        <Self as alloy_sol_types::SolInterface>::NAME,
7770                        selector,
7771                    ),
7772                );
7773            };
7774            DECODE_VALIDATE_SHIMS[idx](data)
7775        }
7776        #[inline]
7777        fn abi_encoded_size(&self) -> usize {
7778            match self {
7779                Self::DelayPeriodNotPassed(inner) => {
7780                    <DelayPeriodNotPassed as alloy_sol_types::SolError>::abi_encoded_size(
7781                        inner,
7782                    )
7783                }
7784                Self::OnlyRegistryCoordinator(inner) => {
7785                    <OnlyRegistryCoordinator as alloy_sol_types::SolError>::abi_encoded_size(
7786                        inner,
7787                    )
7788                }
7789                Self::OnlyRewardsInitiator(inner) => {
7790                    <OnlyRewardsInitiator as alloy_sol_types::SolError>::abi_encoded_size(
7791                        inner,
7792                    )
7793                }
7794                Self::OnlyStakeRegistry(inner) => {
7795                    <OnlyStakeRegistry as alloy_sol_types::SolError>::abi_encoded_size(
7796                        inner,
7797                    )
7798                }
7799            }
7800        }
7801        #[inline]
7802        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
7803            match self {
7804                Self::DelayPeriodNotPassed(inner) => {
7805                    <DelayPeriodNotPassed as alloy_sol_types::SolError>::abi_encode_raw(
7806                        inner,
7807                        out,
7808                    )
7809                }
7810                Self::OnlyRegistryCoordinator(inner) => {
7811                    <OnlyRegistryCoordinator as alloy_sol_types::SolError>::abi_encode_raw(
7812                        inner,
7813                        out,
7814                    )
7815                }
7816                Self::OnlyRewardsInitiator(inner) => {
7817                    <OnlyRewardsInitiator as alloy_sol_types::SolError>::abi_encode_raw(
7818                        inner,
7819                        out,
7820                    )
7821                }
7822                Self::OnlyStakeRegistry(inner) => {
7823                    <OnlyStakeRegistry as alloy_sol_types::SolError>::abi_encode_raw(
7824                        inner,
7825                        out,
7826                    )
7827                }
7828            }
7829        }
7830    }
7831    ///Container for all the [`SquaringServiceManager`](self) events.
7832    #[derive(serde::Serialize, serde::Deserialize)]
7833    #[derive(Debug, PartialEq, Eq, Hash)]
7834    pub enum SquaringServiceManagerEvents {
7835        #[allow(missing_docs)]
7836        Initialized(Initialized),
7837        #[allow(missing_docs)]
7838        OwnershipTransferred(OwnershipTransferred),
7839        #[allow(missing_docs)]
7840        RewardsInitiatorUpdated(RewardsInitiatorUpdated),
7841    }
7842    #[automatically_derived]
7843    impl SquaringServiceManagerEvents {
7844        /// All the selectors of this enum.
7845        ///
7846        /// Note that the selectors might not be in the same order as the variants.
7847        /// No guarantees are made about the order of the selectors.
7848        ///
7849        /// Prefer using `SolInterface` methods instead.
7850        pub const SELECTORS: &'static [[u8; 32usize]] = &[
7851            [
7852                127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8,
7853                19u8, 56u8, 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8,
7854                146u8, 20u8, 96u8, 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8,
7855            ],
7856            [
7857                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
7858                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
7859                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
7860            ],
7861            [
7862                225u8, 28u8, 221u8, 241u8, 129u8, 106u8, 67u8, 49u8, 140u8, 161u8, 117u8,
7863                187u8, 197u8, 44u8, 208u8, 24u8, 84u8, 54u8, 233u8, 203u8, 234u8, 215u8,
7864                200u8, 58u8, 204u8, 84u8, 167u8, 62u8, 70u8, 23u8, 23u8, 227u8,
7865            ],
7866        ];
7867    }
7868    #[automatically_derived]
7869    impl alloy_sol_types::SolEventInterface for SquaringServiceManagerEvents {
7870        const NAME: &'static str = "SquaringServiceManagerEvents";
7871        const COUNT: usize = 3usize;
7872        fn decode_raw_log(
7873            topics: &[alloy_sol_types::Word],
7874            data: &[u8],
7875        ) -> alloy_sol_types::Result<Self> {
7876            match topics.first().copied() {
7877                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
7878                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(
7879                            topics,
7880                            data,
7881                        )
7882                        .map(Self::Initialized)
7883                }
7884                Some(
7885                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
7886                ) => {
7887                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
7888                            topics,
7889                            data,
7890                        )
7891                        .map(Self::OwnershipTransferred)
7892                }
7893                Some(
7894                    <RewardsInitiatorUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
7895                ) => {
7896                    <RewardsInitiatorUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
7897                            topics,
7898                            data,
7899                        )
7900                        .map(Self::RewardsInitiatorUpdated)
7901                }
7902                _ => {
7903                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
7904                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
7905                        log: alloy_sol_types::private::Box::new(
7906                            alloy_sol_types::private::LogData::new_unchecked(
7907                                topics.to_vec(),
7908                                data.to_vec().into(),
7909                            ),
7910                        ),
7911                    })
7912                }
7913            }
7914        }
7915    }
7916    #[automatically_derived]
7917    impl alloy_sol_types::private::IntoLogData for SquaringServiceManagerEvents {
7918        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7919            match self {
7920                Self::Initialized(inner) => {
7921                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
7922                }
7923                Self::OwnershipTransferred(inner) => {
7924                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
7925                }
7926                Self::RewardsInitiatorUpdated(inner) => {
7927                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
7928                }
7929            }
7930        }
7931        fn into_log_data(self) -> alloy_sol_types::private::LogData {
7932            match self {
7933                Self::Initialized(inner) => {
7934                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
7935                }
7936                Self::OwnershipTransferred(inner) => {
7937                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
7938                }
7939                Self::RewardsInitiatorUpdated(inner) => {
7940                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
7941                }
7942            }
7943        }
7944    }
7945    use alloy::contract as alloy_contract;
7946    /**Creates a new wrapper around an on-chain [`SquaringServiceManager`](self) contract instance.
7947
7948See the [wrapper's documentation](`SquaringServiceManagerInstance`) for more details.*/
7949    #[inline]
7950    pub const fn new<
7951        P: alloy_contract::private::Provider<N>,
7952        N: alloy_contract::private::Network,
7953    >(
7954        address: alloy_sol_types::private::Address,
7955        provider: P,
7956    ) -> SquaringServiceManagerInstance<P, N> {
7957        SquaringServiceManagerInstance::<P, N>::new(address, provider)
7958    }
7959    /**Deploys this contract using the given `provider` and constructor arguments, if any.
7960
7961Returns a new instance of the contract, if the deployment was successful.
7962
7963For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
7964    #[inline]
7965    pub fn deploy<
7966        P: alloy_contract::private::Provider<N>,
7967        N: alloy_contract::private::Network,
7968    >(
7969        provider: P,
7970        _avsDirectory: alloy::sol_types::private::Address,
7971        _registryCoordinator: alloy::sol_types::private::Address,
7972        _stakeRegistry: alloy::sol_types::private::Address,
7973        rewardsCoordinator: alloy::sol_types::private::Address,
7974        _squaringTaskManager: alloy::sol_types::private::Address,
7975        _permissionController: alloy::sol_types::private::Address,
7976        _allocationManager: alloy::sol_types::private::Address,
7977    ) -> impl ::core::future::Future<
7978        Output = alloy_contract::Result<SquaringServiceManagerInstance<P, N>>,
7979    > {
7980        SquaringServiceManagerInstance::<
7981            P,
7982            N,
7983        >::deploy(
7984            provider,
7985            _avsDirectory,
7986            _registryCoordinator,
7987            _stakeRegistry,
7988            rewardsCoordinator,
7989            _squaringTaskManager,
7990            _permissionController,
7991            _allocationManager,
7992        )
7993    }
7994    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
7995and constructor arguments, if any.
7996
7997This is a simple wrapper around creating a `RawCallBuilder` with the data set to
7998the bytecode concatenated with the constructor's ABI-encoded arguments.*/
7999    #[inline]
8000    pub fn deploy_builder<
8001        P: alloy_contract::private::Provider<N>,
8002        N: alloy_contract::private::Network,
8003    >(
8004        provider: P,
8005        _avsDirectory: alloy::sol_types::private::Address,
8006        _registryCoordinator: alloy::sol_types::private::Address,
8007        _stakeRegistry: alloy::sol_types::private::Address,
8008        rewardsCoordinator: alloy::sol_types::private::Address,
8009        _squaringTaskManager: alloy::sol_types::private::Address,
8010        _permissionController: alloy::sol_types::private::Address,
8011        _allocationManager: alloy::sol_types::private::Address,
8012    ) -> alloy_contract::RawCallBuilder<P, N> {
8013        SquaringServiceManagerInstance::<
8014            P,
8015            N,
8016        >::deploy_builder(
8017            provider,
8018            _avsDirectory,
8019            _registryCoordinator,
8020            _stakeRegistry,
8021            rewardsCoordinator,
8022            _squaringTaskManager,
8023            _permissionController,
8024            _allocationManager,
8025        )
8026    }
8027    /**A [`SquaringServiceManager`](self) instance.
8028
8029Contains type-safe methods for interacting with an on-chain instance of the
8030[`SquaringServiceManager`](self) contract located at a given `address`, using a given
8031provider `P`.
8032
8033If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
8034documentation on how to provide it), the `deploy` and `deploy_builder` methods can
8035be used to deploy a new instance of the contract.
8036
8037See the [module-level documentation](self) for all the available methods.*/
8038    #[derive(Clone)]
8039    pub struct SquaringServiceManagerInstance<P, N = alloy_contract::private::Ethereum> {
8040        address: alloy_sol_types::private::Address,
8041        provider: P,
8042        _network: ::core::marker::PhantomData<N>,
8043    }
8044    #[automatically_derived]
8045    impl<P, N> ::core::fmt::Debug for SquaringServiceManagerInstance<P, N> {
8046        #[inline]
8047        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
8048            f.debug_tuple("SquaringServiceManagerInstance").field(&self.address).finish()
8049        }
8050    }
8051    /// Instantiation and getters/setters.
8052    #[automatically_derived]
8053    impl<
8054        P: alloy_contract::private::Provider<N>,
8055        N: alloy_contract::private::Network,
8056    > SquaringServiceManagerInstance<P, N> {
8057        /**Creates a new wrapper around an on-chain [`SquaringServiceManager`](self) contract instance.
8058
8059See the [wrapper's documentation](`SquaringServiceManagerInstance`) for more details.*/
8060        #[inline]
8061        pub const fn new(
8062            address: alloy_sol_types::private::Address,
8063            provider: P,
8064        ) -> Self {
8065            Self {
8066                address,
8067                provider,
8068                _network: ::core::marker::PhantomData,
8069            }
8070        }
8071        /**Deploys this contract using the given `provider` and constructor arguments, if any.
8072
8073Returns a new instance of the contract, if the deployment was successful.
8074
8075For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
8076        #[inline]
8077        pub async fn deploy(
8078            provider: P,
8079            _avsDirectory: alloy::sol_types::private::Address,
8080            _registryCoordinator: alloy::sol_types::private::Address,
8081            _stakeRegistry: alloy::sol_types::private::Address,
8082            rewardsCoordinator: alloy::sol_types::private::Address,
8083            _squaringTaskManager: alloy::sol_types::private::Address,
8084            _permissionController: alloy::sol_types::private::Address,
8085            _allocationManager: alloy::sol_types::private::Address,
8086        ) -> alloy_contract::Result<SquaringServiceManagerInstance<P, N>> {
8087            let call_builder = Self::deploy_builder(
8088                provider,
8089                _avsDirectory,
8090                _registryCoordinator,
8091                _stakeRegistry,
8092                rewardsCoordinator,
8093                _squaringTaskManager,
8094                _permissionController,
8095                _allocationManager,
8096            );
8097            let contract_address = call_builder.deploy().await?;
8098            Ok(Self::new(contract_address, call_builder.provider))
8099        }
8100        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
8101and constructor arguments, if any.
8102
8103This is a simple wrapper around creating a `RawCallBuilder` with the data set to
8104the bytecode concatenated with the constructor's ABI-encoded arguments.*/
8105        #[inline]
8106        pub fn deploy_builder(
8107            provider: P,
8108            _avsDirectory: alloy::sol_types::private::Address,
8109            _registryCoordinator: alloy::sol_types::private::Address,
8110            _stakeRegistry: alloy::sol_types::private::Address,
8111            rewardsCoordinator: alloy::sol_types::private::Address,
8112            _squaringTaskManager: alloy::sol_types::private::Address,
8113            _permissionController: alloy::sol_types::private::Address,
8114            _allocationManager: alloy::sol_types::private::Address,
8115        ) -> alloy_contract::RawCallBuilder<P, N> {
8116            alloy_contract::RawCallBuilder::new_raw_deploy(
8117                provider,
8118                [
8119                    &BYTECODE[..],
8120                    &alloy_sol_types::SolConstructor::abi_encode(
8121                        &constructorCall {
8122                            _avsDirectory,
8123                            _registryCoordinator,
8124                            _stakeRegistry,
8125                            rewardsCoordinator,
8126                            _squaringTaskManager,
8127                            _permissionController,
8128                            _allocationManager,
8129                        },
8130                    )[..],
8131                ]
8132                    .concat()
8133                    .into(),
8134            )
8135        }
8136        /// Returns a reference to the address.
8137        #[inline]
8138        pub const fn address(&self) -> &alloy_sol_types::private::Address {
8139            &self.address
8140        }
8141        /// Sets the address.
8142        #[inline]
8143        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
8144            self.address = address;
8145        }
8146        /// Sets the address and returns `self`.
8147        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
8148            self.set_address(address);
8149            self
8150        }
8151        /// Returns a reference to the provider.
8152        #[inline]
8153        pub const fn provider(&self) -> &P {
8154            &self.provider
8155        }
8156    }
8157    impl<P: ::core::clone::Clone, N> SquaringServiceManagerInstance<&P, N> {
8158        /// Clones the provider and returns a new instance with the cloned provider.
8159        #[inline]
8160        pub fn with_cloned_provider(self) -> SquaringServiceManagerInstance<P, N> {
8161            SquaringServiceManagerInstance {
8162                address: self.address,
8163                provider: ::core::clone::Clone::clone(&self.provider),
8164                _network: ::core::marker::PhantomData,
8165            }
8166        }
8167    }
8168    /// Function calls.
8169    #[automatically_derived]
8170    impl<
8171        P: alloy_contract::private::Provider<N>,
8172        N: alloy_contract::private::Network,
8173    > SquaringServiceManagerInstance<P, N> {
8174        /// Creates a new call builder using this contract instance's provider and address.
8175        ///
8176        /// Note that the call can be any function call, not just those defined in this
8177        /// contract. Prefer using the other methods for building type-safe contract calls.
8178        pub fn call_builder<C: alloy_sol_types::SolCall>(
8179            &self,
8180            call: &C,
8181        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
8182            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
8183        }
8184        ///Creates a new call builder for the [`addPendingAdmin`] function.
8185        pub fn addPendingAdmin(
8186            &self,
8187            admin: alloy::sol_types::private::Address,
8188        ) -> alloy_contract::SolCallBuilder<&P, addPendingAdminCall, N> {
8189            self.call_builder(&addPendingAdminCall { admin })
8190        }
8191        ///Creates a new call builder for the [`avsDirectory`] function.
8192        pub fn avsDirectory(
8193            &self,
8194        ) -> alloy_contract::SolCallBuilder<&P, avsDirectoryCall, N> {
8195            self.call_builder(&avsDirectoryCall)
8196        }
8197        ///Creates a new call builder for the [`createAVSRewardsSubmission`] function.
8198        pub fn createAVSRewardsSubmission(
8199            &self,
8200            rewardsSubmissions: alloy::sol_types::private::Vec<
8201                <IRewardsCoordinatorTypes::RewardsSubmission as alloy::sol_types::SolType>::RustType,
8202            >,
8203        ) -> alloy_contract::SolCallBuilder<&P, createAVSRewardsSubmissionCall, N> {
8204            self.call_builder(
8205                &createAVSRewardsSubmissionCall {
8206                    rewardsSubmissions,
8207                },
8208            )
8209        }
8210        ///Creates a new call builder for the [`createOperatorDirectedAVSRewardsSubmission`] function.
8211        pub fn createOperatorDirectedAVSRewardsSubmission(
8212            &self,
8213            operatorDirectedRewardsSubmissions: alloy::sol_types::private::Vec<
8214                <IRewardsCoordinatorTypes::OperatorDirectedRewardsSubmission as alloy::sol_types::SolType>::RustType,
8215            >,
8216        ) -> alloy_contract::SolCallBuilder<
8217            &P,
8218            createOperatorDirectedAVSRewardsSubmissionCall,
8219            N,
8220        > {
8221            self.call_builder(
8222                &createOperatorDirectedAVSRewardsSubmissionCall {
8223                    operatorDirectedRewardsSubmissions,
8224                },
8225            )
8226        }
8227        ///Creates a new call builder for the [`deregisterOperatorFromAVS`] function.
8228        pub fn deregisterOperatorFromAVS(
8229            &self,
8230            operator: alloy::sol_types::private::Address,
8231        ) -> alloy_contract::SolCallBuilder<&P, deregisterOperatorFromAVSCall, N> {
8232            self.call_builder(
8233                &deregisterOperatorFromAVSCall {
8234                    operator,
8235                },
8236            )
8237        }
8238        ///Creates a new call builder for the [`deregisterOperatorFromOperatorSets`] function.
8239        pub fn deregisterOperatorFromOperatorSets(
8240            &self,
8241            operator: alloy::sol_types::private::Address,
8242            operatorSetIds: alloy::sol_types::private::Vec<u32>,
8243        ) -> alloy_contract::SolCallBuilder<
8244            &P,
8245            deregisterOperatorFromOperatorSetsCall,
8246            N,
8247        > {
8248            self.call_builder(
8249                &deregisterOperatorFromOperatorSetsCall {
8250                    operator,
8251                    operatorSetIds,
8252                },
8253            )
8254        }
8255        ///Creates a new call builder for the [`freezeOperator`] function.
8256        pub fn freezeOperator(
8257            &self,
8258            operatorAddr: alloy::sol_types::private::Address,
8259        ) -> alloy_contract::SolCallBuilder<&P, freezeOperatorCall, N> {
8260            self.call_builder(&freezeOperatorCall { operatorAddr })
8261        }
8262        ///Creates a new call builder for the [`getOperatorRestakedStrategies`] function.
8263        pub fn getOperatorRestakedStrategies(
8264            &self,
8265            operator: alloy::sol_types::private::Address,
8266        ) -> alloy_contract::SolCallBuilder<&P, getOperatorRestakedStrategiesCall, N> {
8267            self.call_builder(
8268                &getOperatorRestakedStrategiesCall {
8269                    operator,
8270                },
8271            )
8272        }
8273        ///Creates a new call builder for the [`getRestakeableStrategies`] function.
8274        pub fn getRestakeableStrategies(
8275            &self,
8276        ) -> alloy_contract::SolCallBuilder<&P, getRestakeableStrategiesCall, N> {
8277            self.call_builder(&getRestakeableStrategiesCall)
8278        }
8279        ///Creates a new call builder for the [`initialize`] function.
8280        pub fn initialize(
8281            &self,
8282            initialOwner: alloy::sol_types::private::Address,
8283            rewardsInitiator: alloy::sol_types::private::Address,
8284        ) -> alloy_contract::SolCallBuilder<&P, initializeCall, N> {
8285            self.call_builder(
8286                &initializeCall {
8287                    initialOwner,
8288                    rewardsInitiator,
8289                },
8290            )
8291        }
8292        ///Creates a new call builder for the [`owner`] function.
8293        pub fn owner(&self) -> alloy_contract::SolCallBuilder<&P, ownerCall, N> {
8294            self.call_builder(&ownerCall)
8295        }
8296        ///Creates a new call builder for the [`registerOperatorToAVS`] function.
8297        pub fn registerOperatorToAVS(
8298            &self,
8299            operator: alloy::sol_types::private::Address,
8300            operatorSignature: <ISignatureUtilsMixinTypes::SignatureWithSaltAndExpiry as alloy::sol_types::SolType>::RustType,
8301        ) -> alloy_contract::SolCallBuilder<&P, registerOperatorToAVSCall, N> {
8302            self.call_builder(
8303                &registerOperatorToAVSCall {
8304                    operator,
8305                    operatorSignature,
8306                },
8307            )
8308        }
8309        ///Creates a new call builder for the [`removeAdmin`] function.
8310        pub fn removeAdmin(
8311            &self,
8312            admin: alloy::sol_types::private::Address,
8313        ) -> alloy_contract::SolCallBuilder<&P, removeAdminCall, N> {
8314            self.call_builder(&removeAdminCall { admin })
8315        }
8316        ///Creates a new call builder for the [`removeAppointee`] function.
8317        pub fn removeAppointee(
8318            &self,
8319            appointee: alloy::sol_types::private::Address,
8320            target: alloy::sol_types::private::Address,
8321            selector: alloy::sol_types::private::FixedBytes<4>,
8322        ) -> alloy_contract::SolCallBuilder<&P, removeAppointeeCall, N> {
8323            self.call_builder(
8324                &removeAppointeeCall {
8325                    appointee,
8326                    target,
8327                    selector,
8328                },
8329            )
8330        }
8331        ///Creates a new call builder for the [`removePendingAdmin`] function.
8332        pub fn removePendingAdmin(
8333            &self,
8334            pendingAdmin: alloy::sol_types::private::Address,
8335        ) -> alloy_contract::SolCallBuilder<&P, removePendingAdminCall, N> {
8336            self.call_builder(
8337                &removePendingAdminCall {
8338                    pendingAdmin,
8339                },
8340            )
8341        }
8342        ///Creates a new call builder for the [`renounceOwnership`] function.
8343        pub fn renounceOwnership(
8344            &self,
8345        ) -> alloy_contract::SolCallBuilder<&P, renounceOwnershipCall, N> {
8346            self.call_builder(&renounceOwnershipCall)
8347        }
8348        ///Creates a new call builder for the [`rewardsInitiator`] function.
8349        pub fn rewardsInitiator(
8350            &self,
8351        ) -> alloy_contract::SolCallBuilder<&P, rewardsInitiatorCall, N> {
8352            self.call_builder(&rewardsInitiatorCall)
8353        }
8354        ///Creates a new call builder for the [`setAppointee`] function.
8355        pub fn setAppointee(
8356            &self,
8357            appointee: alloy::sol_types::private::Address,
8358            target: alloy::sol_types::private::Address,
8359            selector: alloy::sol_types::private::FixedBytes<4>,
8360        ) -> alloy_contract::SolCallBuilder<&P, setAppointeeCall, N> {
8361            self.call_builder(
8362                &setAppointeeCall {
8363                    appointee,
8364                    target,
8365                    selector,
8366                },
8367            )
8368        }
8369        ///Creates a new call builder for the [`setClaimerFor`] function.
8370        pub fn setClaimerFor(
8371            &self,
8372            claimer: alloy::sol_types::private::Address,
8373        ) -> alloy_contract::SolCallBuilder<&P, setClaimerForCall, N> {
8374            self.call_builder(&setClaimerForCall { claimer })
8375        }
8376        ///Creates a new call builder for the [`setRewardsInitiator`] function.
8377        pub fn setRewardsInitiator(
8378            &self,
8379            newRewardsInitiator: alloy::sol_types::private::Address,
8380        ) -> alloy_contract::SolCallBuilder<&P, setRewardsInitiatorCall, N> {
8381            self.call_builder(
8382                &setRewardsInitiatorCall {
8383                    newRewardsInitiator,
8384                },
8385            )
8386        }
8387        ///Creates a new call builder for the [`squaringTaskManager`] function.
8388        pub fn squaringTaskManager(
8389            &self,
8390        ) -> alloy_contract::SolCallBuilder<&P, squaringTaskManagerCall, N> {
8391            self.call_builder(&squaringTaskManagerCall)
8392        }
8393        ///Creates a new call builder for the [`transferOwnership`] function.
8394        pub fn transferOwnership(
8395            &self,
8396            newOwner: alloy::sol_types::private::Address,
8397        ) -> alloy_contract::SolCallBuilder<&P, transferOwnershipCall, N> {
8398            self.call_builder(&transferOwnershipCall { newOwner })
8399        }
8400        ///Creates a new call builder for the [`updateAVSMetadataURI`] function.
8401        pub fn updateAVSMetadataURI(
8402            &self,
8403            _metadataURI: alloy::sol_types::private::String,
8404        ) -> alloy_contract::SolCallBuilder<&P, updateAVSMetadataURICall, N> {
8405            self.call_builder(
8406                &updateAVSMetadataURICall {
8407                    _metadataURI,
8408                },
8409            )
8410        }
8411    }
8412    /// Event filters.
8413    #[automatically_derived]
8414    impl<
8415        P: alloy_contract::private::Provider<N>,
8416        N: alloy_contract::private::Network,
8417    > SquaringServiceManagerInstance<P, N> {
8418        /// Creates a new event filter using this contract instance's provider and address.
8419        ///
8420        /// Note that the type can be any event, not just those defined in this contract.
8421        /// Prefer using the other methods for building type-safe event filters.
8422        pub fn event_filter<E: alloy_sol_types::SolEvent>(
8423            &self,
8424        ) -> alloy_contract::Event<&P, E, N> {
8425            alloy_contract::Event::new_sol(&self.provider, &self.address)
8426        }
8427        ///Creates a new event filter for the [`Initialized`] event.
8428        pub fn Initialized_filter(&self) -> alloy_contract::Event<&P, Initialized, N> {
8429            self.event_filter::<Initialized>()
8430        }
8431        ///Creates a new event filter for the [`OwnershipTransferred`] event.
8432        pub fn OwnershipTransferred_filter(
8433            &self,
8434        ) -> alloy_contract::Event<&P, OwnershipTransferred, N> {
8435            self.event_filter::<OwnershipTransferred>()
8436        }
8437        ///Creates a new event filter for the [`RewardsInitiatorUpdated`] event.
8438        pub fn RewardsInitiatorUpdated_filter(
8439            &self,
8440        ) -> alloy_contract::Event<&P, RewardsInitiatorUpdated, N> {
8441            self.event_filter::<RewardsInitiatorUpdated>()
8442        }
8443    }
8444}