eigenlayer_contract_deployer/bindings/core/
strategy_manager.rs

1#![allow(clippy::all, clippy::pedantic, clippy::nursery, warnings, unknown_lints, rustdoc::all, elided_lifetimes_in_paths)]
2use StrategyManager::*;
3
4/**
5
6Generated by the following Solidity interface...
7```solidity
8interface StrategyManager {
9    error CurrentlyPaused();
10    error InputAddressZero();
11    error InvalidNewPausedStatus();
12    error InvalidShortString();
13    error InvalidSignature();
14    error MaxStrategiesExceeded();
15    error OnlyDelegationManager();
16    error OnlyPauser();
17    error OnlyStrategyWhitelister();
18    error OnlyUnpauser();
19    error SharesAmountTooHigh();
20    error SharesAmountZero();
21    error SignatureExpired();
22    error StakerAddressZero();
23    error StrategyNotFound();
24    error StrategyNotWhitelisted();
25    error StringTooLong(string str);
26
27    event BurnableSharesDecreased(address strategy, uint256 shares);
28    event BurnableSharesIncreased(address strategy, uint256 shares);
29    event Deposit(address staker, address strategy, uint256 shares);
30    event Initialized(uint8 version);
31    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
32    event Paused(address indexed account, uint256 newPausedStatus);
33    event StrategyAddedToDepositWhitelist(address strategy);
34    event StrategyRemovedFromDepositWhitelist(address strategy);
35    event StrategyWhitelisterChanged(address previousAddress, address newAddress);
36    event Unpaused(address indexed account, uint256 newPausedStatus);
37
38    constructor(address _delegation, address _pauserRegistry, string _version);
39
40    function DEFAULT_BURN_ADDRESS() external view returns (address);
41    function DEPOSIT_TYPEHASH() external view returns (bytes32);
42    function addShares(address staker, address strategy, uint256 shares) external returns (uint256, uint256);
43    function addStrategiesToDepositWhitelist(address[] memory strategiesToWhitelist) external;
44    function burnShares(address strategy) external;
45    function calculateStrategyDepositDigestHash(address staker, address strategy, address token, uint256 amount, uint256 nonce, uint256 expiry) external view returns (bytes32);
46    function delegation() external view returns (address);
47    function depositIntoStrategy(address strategy, address token, uint256 amount) external returns (uint256 depositShares);
48    function depositIntoStrategyWithSignature(address strategy, address token, uint256 amount, address staker, uint256 expiry, bytes memory signature) external returns (uint256 depositShares);
49    function domainSeparator() external view returns (bytes32);
50    function getBurnableShares(address strategy) external view returns (uint256);
51    function getDeposits(address staker) external view returns (address[] memory, uint256[] memory);
52    function getStakerStrategyList(address staker) external view returns (address[] memory);
53    function getStrategiesWithBurnableShares() external view returns (address[] memory, uint256[] memory);
54    function increaseBurnableShares(address strategy, uint256 addedSharesToBurn) external;
55    function initialize(address initialOwner, address initialStrategyWhitelister, uint256 initialPausedStatus) external;
56    function nonces(address signer) external view returns (uint256 nonce);
57    function owner() external view returns (address);
58    function pause(uint256 newPausedStatus) external;
59    function pauseAll() external;
60    function paused(uint8 index) external view returns (bool);
61    function paused() external view returns (uint256);
62    function pauserRegistry() external view returns (address);
63    function removeDepositShares(address staker, address strategy, uint256 depositSharesToRemove) external returns (uint256);
64    function removeStrategiesFromDepositWhitelist(address[] memory strategiesToRemoveFromWhitelist) external;
65    function renounceOwnership() external;
66    function setStrategyWhitelister(address newStrategyWhitelister) external;
67    function stakerDepositShares(address staker, address strategy) external view returns (uint256 shares);
68    function stakerStrategyList(address staker, uint256) external view returns (address strategies);
69    function stakerStrategyListLength(address staker) external view returns (uint256);
70    function strategyIsWhitelistedForDeposit(address strategy) external view returns (bool whitelisted);
71    function strategyWhitelister() external view returns (address);
72    function transferOwnership(address newOwner) external;
73    function unpause(uint256 newPausedStatus) external;
74    function version() external view returns (string memory);
75    function withdrawSharesAsTokens(address staker, address strategy, address token, uint256 shares) external;
76}
77```
78
79...which was generated by the following JSON ABI:
80```json
81[
82  {
83    "type": "constructor",
84    "inputs": [
85      {
86        "name": "_delegation",
87        "type": "address",
88        "internalType": "contract IDelegationManager"
89      },
90      {
91        "name": "_pauserRegistry",
92        "type": "address",
93        "internalType": "contract IPauserRegistry"
94      },
95      {
96        "name": "_version",
97        "type": "string",
98        "internalType": "string"
99      }
100    ],
101    "stateMutability": "nonpayable"
102  },
103  {
104    "type": "function",
105    "name": "DEFAULT_BURN_ADDRESS",
106    "inputs": [],
107    "outputs": [
108      {
109        "name": "",
110        "type": "address",
111        "internalType": "address"
112      }
113    ],
114    "stateMutability": "view"
115  },
116  {
117    "type": "function",
118    "name": "DEPOSIT_TYPEHASH",
119    "inputs": [],
120    "outputs": [
121      {
122        "name": "",
123        "type": "bytes32",
124        "internalType": "bytes32"
125      }
126    ],
127    "stateMutability": "view"
128  },
129  {
130    "type": "function",
131    "name": "addShares",
132    "inputs": [
133      {
134        "name": "staker",
135        "type": "address",
136        "internalType": "address"
137      },
138      {
139        "name": "strategy",
140        "type": "address",
141        "internalType": "contract IStrategy"
142      },
143      {
144        "name": "shares",
145        "type": "uint256",
146        "internalType": "uint256"
147      }
148    ],
149    "outputs": [
150      {
151        "name": "",
152        "type": "uint256",
153        "internalType": "uint256"
154      },
155      {
156        "name": "",
157        "type": "uint256",
158        "internalType": "uint256"
159      }
160    ],
161    "stateMutability": "nonpayable"
162  },
163  {
164    "type": "function",
165    "name": "addStrategiesToDepositWhitelist",
166    "inputs": [
167      {
168        "name": "strategiesToWhitelist",
169        "type": "address[]",
170        "internalType": "contract IStrategy[]"
171      }
172    ],
173    "outputs": [],
174    "stateMutability": "nonpayable"
175  },
176  {
177    "type": "function",
178    "name": "burnShares",
179    "inputs": [
180      {
181        "name": "strategy",
182        "type": "address",
183        "internalType": "contract IStrategy"
184      }
185    ],
186    "outputs": [],
187    "stateMutability": "nonpayable"
188  },
189  {
190    "type": "function",
191    "name": "calculateStrategyDepositDigestHash",
192    "inputs": [
193      {
194        "name": "staker",
195        "type": "address",
196        "internalType": "address"
197      },
198      {
199        "name": "strategy",
200        "type": "address",
201        "internalType": "contract IStrategy"
202      },
203      {
204        "name": "token",
205        "type": "address",
206        "internalType": "contract IERC20"
207      },
208      {
209        "name": "amount",
210        "type": "uint256",
211        "internalType": "uint256"
212      },
213      {
214        "name": "nonce",
215        "type": "uint256",
216        "internalType": "uint256"
217      },
218      {
219        "name": "expiry",
220        "type": "uint256",
221        "internalType": "uint256"
222      }
223    ],
224    "outputs": [
225      {
226        "name": "",
227        "type": "bytes32",
228        "internalType": "bytes32"
229      }
230    ],
231    "stateMutability": "view"
232  },
233  {
234    "type": "function",
235    "name": "delegation",
236    "inputs": [],
237    "outputs": [
238      {
239        "name": "",
240        "type": "address",
241        "internalType": "contract IDelegationManager"
242      }
243    ],
244    "stateMutability": "view"
245  },
246  {
247    "type": "function",
248    "name": "depositIntoStrategy",
249    "inputs": [
250      {
251        "name": "strategy",
252        "type": "address",
253        "internalType": "contract IStrategy"
254      },
255      {
256        "name": "token",
257        "type": "address",
258        "internalType": "contract IERC20"
259      },
260      {
261        "name": "amount",
262        "type": "uint256",
263        "internalType": "uint256"
264      }
265    ],
266    "outputs": [
267      {
268        "name": "depositShares",
269        "type": "uint256",
270        "internalType": "uint256"
271      }
272    ],
273    "stateMutability": "nonpayable"
274  },
275  {
276    "type": "function",
277    "name": "depositIntoStrategyWithSignature",
278    "inputs": [
279      {
280        "name": "strategy",
281        "type": "address",
282        "internalType": "contract IStrategy"
283      },
284      {
285        "name": "token",
286        "type": "address",
287        "internalType": "contract IERC20"
288      },
289      {
290        "name": "amount",
291        "type": "uint256",
292        "internalType": "uint256"
293      },
294      {
295        "name": "staker",
296        "type": "address",
297        "internalType": "address"
298      },
299      {
300        "name": "expiry",
301        "type": "uint256",
302        "internalType": "uint256"
303      },
304      {
305        "name": "signature",
306        "type": "bytes",
307        "internalType": "bytes"
308      }
309    ],
310    "outputs": [
311      {
312        "name": "depositShares",
313        "type": "uint256",
314        "internalType": "uint256"
315      }
316    ],
317    "stateMutability": "nonpayable"
318  },
319  {
320    "type": "function",
321    "name": "domainSeparator",
322    "inputs": [],
323    "outputs": [
324      {
325        "name": "",
326        "type": "bytes32",
327        "internalType": "bytes32"
328      }
329    ],
330    "stateMutability": "view"
331  },
332  {
333    "type": "function",
334    "name": "getBurnableShares",
335    "inputs": [
336      {
337        "name": "strategy",
338        "type": "address",
339        "internalType": "contract IStrategy"
340      }
341    ],
342    "outputs": [
343      {
344        "name": "",
345        "type": "uint256",
346        "internalType": "uint256"
347      }
348    ],
349    "stateMutability": "view"
350  },
351  {
352    "type": "function",
353    "name": "getDeposits",
354    "inputs": [
355      {
356        "name": "staker",
357        "type": "address",
358        "internalType": "address"
359      }
360    ],
361    "outputs": [
362      {
363        "name": "",
364        "type": "address[]",
365        "internalType": "contract IStrategy[]"
366      },
367      {
368        "name": "",
369        "type": "uint256[]",
370        "internalType": "uint256[]"
371      }
372    ],
373    "stateMutability": "view"
374  },
375  {
376    "type": "function",
377    "name": "getStakerStrategyList",
378    "inputs": [
379      {
380        "name": "staker",
381        "type": "address",
382        "internalType": "address"
383      }
384    ],
385    "outputs": [
386      {
387        "name": "",
388        "type": "address[]",
389        "internalType": "contract IStrategy[]"
390      }
391    ],
392    "stateMutability": "view"
393  },
394  {
395    "type": "function",
396    "name": "getStrategiesWithBurnableShares",
397    "inputs": [],
398    "outputs": [
399      {
400        "name": "",
401        "type": "address[]",
402        "internalType": "address[]"
403      },
404      {
405        "name": "",
406        "type": "uint256[]",
407        "internalType": "uint256[]"
408      }
409    ],
410    "stateMutability": "view"
411  },
412  {
413    "type": "function",
414    "name": "increaseBurnableShares",
415    "inputs": [
416      {
417        "name": "strategy",
418        "type": "address",
419        "internalType": "contract IStrategy"
420      },
421      {
422        "name": "addedSharesToBurn",
423        "type": "uint256",
424        "internalType": "uint256"
425      }
426    ],
427    "outputs": [],
428    "stateMutability": "nonpayable"
429  },
430  {
431    "type": "function",
432    "name": "initialize",
433    "inputs": [
434      {
435        "name": "initialOwner",
436        "type": "address",
437        "internalType": "address"
438      },
439      {
440        "name": "initialStrategyWhitelister",
441        "type": "address",
442        "internalType": "address"
443      },
444      {
445        "name": "initialPausedStatus",
446        "type": "uint256",
447        "internalType": "uint256"
448      }
449    ],
450    "outputs": [],
451    "stateMutability": "nonpayable"
452  },
453  {
454    "type": "function",
455    "name": "nonces",
456    "inputs": [
457      {
458        "name": "signer",
459        "type": "address",
460        "internalType": "address"
461      }
462    ],
463    "outputs": [
464      {
465        "name": "nonce",
466        "type": "uint256",
467        "internalType": "uint256"
468      }
469    ],
470    "stateMutability": "view"
471  },
472  {
473    "type": "function",
474    "name": "owner",
475    "inputs": [],
476    "outputs": [
477      {
478        "name": "",
479        "type": "address",
480        "internalType": "address"
481      }
482    ],
483    "stateMutability": "view"
484  },
485  {
486    "type": "function",
487    "name": "pause",
488    "inputs": [
489      {
490        "name": "newPausedStatus",
491        "type": "uint256",
492        "internalType": "uint256"
493      }
494    ],
495    "outputs": [],
496    "stateMutability": "nonpayable"
497  },
498  {
499    "type": "function",
500    "name": "pauseAll",
501    "inputs": [],
502    "outputs": [],
503    "stateMutability": "nonpayable"
504  },
505  {
506    "type": "function",
507    "name": "paused",
508    "inputs": [
509      {
510        "name": "index",
511        "type": "uint8",
512        "internalType": "uint8"
513      }
514    ],
515    "outputs": [
516      {
517        "name": "",
518        "type": "bool",
519        "internalType": "bool"
520      }
521    ],
522    "stateMutability": "view"
523  },
524  {
525    "type": "function",
526    "name": "paused",
527    "inputs": [],
528    "outputs": [
529      {
530        "name": "",
531        "type": "uint256",
532        "internalType": "uint256"
533      }
534    ],
535    "stateMutability": "view"
536  },
537  {
538    "type": "function",
539    "name": "pauserRegistry",
540    "inputs": [],
541    "outputs": [
542      {
543        "name": "",
544        "type": "address",
545        "internalType": "contract IPauserRegistry"
546      }
547    ],
548    "stateMutability": "view"
549  },
550  {
551    "type": "function",
552    "name": "removeDepositShares",
553    "inputs": [
554      {
555        "name": "staker",
556        "type": "address",
557        "internalType": "address"
558      },
559      {
560        "name": "strategy",
561        "type": "address",
562        "internalType": "contract IStrategy"
563      },
564      {
565        "name": "depositSharesToRemove",
566        "type": "uint256",
567        "internalType": "uint256"
568      }
569    ],
570    "outputs": [
571      {
572        "name": "",
573        "type": "uint256",
574        "internalType": "uint256"
575      }
576    ],
577    "stateMutability": "nonpayable"
578  },
579  {
580    "type": "function",
581    "name": "removeStrategiesFromDepositWhitelist",
582    "inputs": [
583      {
584        "name": "strategiesToRemoveFromWhitelist",
585        "type": "address[]",
586        "internalType": "contract IStrategy[]"
587      }
588    ],
589    "outputs": [],
590    "stateMutability": "nonpayable"
591  },
592  {
593    "type": "function",
594    "name": "renounceOwnership",
595    "inputs": [],
596    "outputs": [],
597    "stateMutability": "nonpayable"
598  },
599  {
600    "type": "function",
601    "name": "setStrategyWhitelister",
602    "inputs": [
603      {
604        "name": "newStrategyWhitelister",
605        "type": "address",
606        "internalType": "address"
607      }
608    ],
609    "outputs": [],
610    "stateMutability": "nonpayable"
611  },
612  {
613    "type": "function",
614    "name": "stakerDepositShares",
615    "inputs": [
616      {
617        "name": "staker",
618        "type": "address",
619        "internalType": "address"
620      },
621      {
622        "name": "strategy",
623        "type": "address",
624        "internalType": "contract IStrategy"
625      }
626    ],
627    "outputs": [
628      {
629        "name": "shares",
630        "type": "uint256",
631        "internalType": "uint256"
632      }
633    ],
634    "stateMutability": "view"
635  },
636  {
637    "type": "function",
638    "name": "stakerStrategyList",
639    "inputs": [
640      {
641        "name": "staker",
642        "type": "address",
643        "internalType": "address"
644      },
645      {
646        "name": "",
647        "type": "uint256",
648        "internalType": "uint256"
649      }
650    ],
651    "outputs": [
652      {
653        "name": "strategies",
654        "type": "address",
655        "internalType": "contract IStrategy"
656      }
657    ],
658    "stateMutability": "view"
659  },
660  {
661    "type": "function",
662    "name": "stakerStrategyListLength",
663    "inputs": [
664      {
665        "name": "staker",
666        "type": "address",
667        "internalType": "address"
668      }
669    ],
670    "outputs": [
671      {
672        "name": "",
673        "type": "uint256",
674        "internalType": "uint256"
675      }
676    ],
677    "stateMutability": "view"
678  },
679  {
680    "type": "function",
681    "name": "strategyIsWhitelistedForDeposit",
682    "inputs": [
683      {
684        "name": "strategy",
685        "type": "address",
686        "internalType": "contract IStrategy"
687      }
688    ],
689    "outputs": [
690      {
691        "name": "whitelisted",
692        "type": "bool",
693        "internalType": "bool"
694      }
695    ],
696    "stateMutability": "view"
697  },
698  {
699    "type": "function",
700    "name": "strategyWhitelister",
701    "inputs": [],
702    "outputs": [
703      {
704        "name": "",
705        "type": "address",
706        "internalType": "address"
707      }
708    ],
709    "stateMutability": "view"
710  },
711  {
712    "type": "function",
713    "name": "transferOwnership",
714    "inputs": [
715      {
716        "name": "newOwner",
717        "type": "address",
718        "internalType": "address"
719      }
720    ],
721    "outputs": [],
722    "stateMutability": "nonpayable"
723  },
724  {
725    "type": "function",
726    "name": "unpause",
727    "inputs": [
728      {
729        "name": "newPausedStatus",
730        "type": "uint256",
731        "internalType": "uint256"
732      }
733    ],
734    "outputs": [],
735    "stateMutability": "nonpayable"
736  },
737  {
738    "type": "function",
739    "name": "version",
740    "inputs": [],
741    "outputs": [
742      {
743        "name": "",
744        "type": "string",
745        "internalType": "string"
746      }
747    ],
748    "stateMutability": "view"
749  },
750  {
751    "type": "function",
752    "name": "withdrawSharesAsTokens",
753    "inputs": [
754      {
755        "name": "staker",
756        "type": "address",
757        "internalType": "address"
758      },
759      {
760        "name": "strategy",
761        "type": "address",
762        "internalType": "contract IStrategy"
763      },
764      {
765        "name": "token",
766        "type": "address",
767        "internalType": "contract IERC20"
768      },
769      {
770        "name": "shares",
771        "type": "uint256",
772        "internalType": "uint256"
773      }
774    ],
775    "outputs": [],
776    "stateMutability": "nonpayable"
777  },
778  {
779    "type": "event",
780    "name": "BurnableSharesDecreased",
781    "inputs": [
782      {
783        "name": "strategy",
784        "type": "address",
785        "indexed": false,
786        "internalType": "contract IStrategy"
787      },
788      {
789        "name": "shares",
790        "type": "uint256",
791        "indexed": false,
792        "internalType": "uint256"
793      }
794    ],
795    "anonymous": false
796  },
797  {
798    "type": "event",
799    "name": "BurnableSharesIncreased",
800    "inputs": [
801      {
802        "name": "strategy",
803        "type": "address",
804        "indexed": false,
805        "internalType": "contract IStrategy"
806      },
807      {
808        "name": "shares",
809        "type": "uint256",
810        "indexed": false,
811        "internalType": "uint256"
812      }
813    ],
814    "anonymous": false
815  },
816  {
817    "type": "event",
818    "name": "Deposit",
819    "inputs": [
820      {
821        "name": "staker",
822        "type": "address",
823        "indexed": false,
824        "internalType": "address"
825      },
826      {
827        "name": "strategy",
828        "type": "address",
829        "indexed": false,
830        "internalType": "contract IStrategy"
831      },
832      {
833        "name": "shares",
834        "type": "uint256",
835        "indexed": false,
836        "internalType": "uint256"
837      }
838    ],
839    "anonymous": false
840  },
841  {
842    "type": "event",
843    "name": "Initialized",
844    "inputs": [
845      {
846        "name": "version",
847        "type": "uint8",
848        "indexed": false,
849        "internalType": "uint8"
850      }
851    ],
852    "anonymous": false
853  },
854  {
855    "type": "event",
856    "name": "OwnershipTransferred",
857    "inputs": [
858      {
859        "name": "previousOwner",
860        "type": "address",
861        "indexed": true,
862        "internalType": "address"
863      },
864      {
865        "name": "newOwner",
866        "type": "address",
867        "indexed": true,
868        "internalType": "address"
869      }
870    ],
871    "anonymous": false
872  },
873  {
874    "type": "event",
875    "name": "Paused",
876    "inputs": [
877      {
878        "name": "account",
879        "type": "address",
880        "indexed": true,
881        "internalType": "address"
882      },
883      {
884        "name": "newPausedStatus",
885        "type": "uint256",
886        "indexed": false,
887        "internalType": "uint256"
888      }
889    ],
890    "anonymous": false
891  },
892  {
893    "type": "event",
894    "name": "StrategyAddedToDepositWhitelist",
895    "inputs": [
896      {
897        "name": "strategy",
898        "type": "address",
899        "indexed": false,
900        "internalType": "contract IStrategy"
901      }
902    ],
903    "anonymous": false
904  },
905  {
906    "type": "event",
907    "name": "StrategyRemovedFromDepositWhitelist",
908    "inputs": [
909      {
910        "name": "strategy",
911        "type": "address",
912        "indexed": false,
913        "internalType": "contract IStrategy"
914      }
915    ],
916    "anonymous": false
917  },
918  {
919    "type": "event",
920    "name": "StrategyWhitelisterChanged",
921    "inputs": [
922      {
923        "name": "previousAddress",
924        "type": "address",
925        "indexed": false,
926        "internalType": "address"
927      },
928      {
929        "name": "newAddress",
930        "type": "address",
931        "indexed": false,
932        "internalType": "address"
933      }
934    ],
935    "anonymous": false
936  },
937  {
938    "type": "event",
939    "name": "Unpaused",
940    "inputs": [
941      {
942        "name": "account",
943        "type": "address",
944        "indexed": true,
945        "internalType": "address"
946      },
947      {
948        "name": "newPausedStatus",
949        "type": "uint256",
950        "indexed": false,
951        "internalType": "uint256"
952      }
953    ],
954    "anonymous": false
955  },
956  {
957    "type": "error",
958    "name": "CurrentlyPaused",
959    "inputs": []
960  },
961  {
962    "type": "error",
963    "name": "InputAddressZero",
964    "inputs": []
965  },
966  {
967    "type": "error",
968    "name": "InvalidNewPausedStatus",
969    "inputs": []
970  },
971  {
972    "type": "error",
973    "name": "InvalidShortString",
974    "inputs": []
975  },
976  {
977    "type": "error",
978    "name": "InvalidSignature",
979    "inputs": []
980  },
981  {
982    "type": "error",
983    "name": "MaxStrategiesExceeded",
984    "inputs": []
985  },
986  {
987    "type": "error",
988    "name": "OnlyDelegationManager",
989    "inputs": []
990  },
991  {
992    "type": "error",
993    "name": "OnlyPauser",
994    "inputs": []
995  },
996  {
997    "type": "error",
998    "name": "OnlyStrategyWhitelister",
999    "inputs": []
1000  },
1001  {
1002    "type": "error",
1003    "name": "OnlyUnpauser",
1004    "inputs": []
1005  },
1006  {
1007    "type": "error",
1008    "name": "SharesAmountTooHigh",
1009    "inputs": []
1010  },
1011  {
1012    "type": "error",
1013    "name": "SharesAmountZero",
1014    "inputs": []
1015  },
1016  {
1017    "type": "error",
1018    "name": "SignatureExpired",
1019    "inputs": []
1020  },
1021  {
1022    "type": "error",
1023    "name": "StakerAddressZero",
1024    "inputs": []
1025  },
1026  {
1027    "type": "error",
1028    "name": "StrategyNotFound",
1029    "inputs": []
1030  },
1031  {
1032    "type": "error",
1033    "name": "StrategyNotWhitelisted",
1034    "inputs": []
1035  },
1036  {
1037    "type": "error",
1038    "name": "StringTooLong",
1039    "inputs": [
1040      {
1041        "name": "str",
1042        "type": "string",
1043        "internalType": "string"
1044      }
1045    ]
1046  }
1047]
1048```*/
1049#[allow(
1050    non_camel_case_types,
1051    non_snake_case,
1052    clippy::pub_underscore_fields,
1053    clippy::style,
1054    clippy::empty_structs_with_brackets
1055)]
1056pub mod StrategyManager {
1057    use super::*;
1058    use alloy::sol_types as alloy_sol_types;
1059    /// The creation / init bytecode of the contract.
1060    ///
1061    /// ```text
1062    ///0x60e060405234801561000f575f5ffd5b50604051612f3b380380612f3b83398101604081905261002e916101d5565b808084846001600160a01b038116610059576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b039081166080521660a0526100748161008a565b60c0525061008290506100d0565b505050610302565b5f5f829050601f815111156100bd578260405163305a27a960e01b81526004016100b491906102aa565b60405180910390fd5b80516100c8826102dc565b179392505050565b5f54610100900460ff16156101375760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100b4565b5f5460ff90811614610186575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461019c575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5b838110156101cd5781810151838201526020016101b5565b50505f910152565b5f5f5f606084860312156101e7575f5ffd5b83516101f281610188565b602085015190935061020381610188565b60408501519092506001600160401b0381111561021e575f5ffd5b8401601f8101861361022e575f5ffd5b80516001600160401b038111156102475761024761019f565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102755761027561019f565b60405281815282820160200188101561028c575f5ffd5b61029d8260208301602086016101b3565b8093505050509250925092565b602081525f82518060208401526102c88160408501602087016101b3565b601f01601f19169190910160400192915050565b805160208083015191908110156102fc575f198160200360031b1b821691505b50919050565b60805160a05160c051612bd061036b5f395f8181610bb90152611c8101525f81816104e70152818161079701528181610b4b01528181610e010152818161128d015261189d01525f81816103bc015281816105a601528181610bf701526114c90152612bd05ff3fe608060405234801561000f575f5ffd5b5060043610610213575f3560e01c80638b8aac3c1161011f578063debe1eab116100a9578063f3b4a00011610079578063f3b4a0001461052f578063f698da2514610539578063fabc1cbc14610541578063fd98042314610554578063fe243a1714610567575f5ffd5b8063debe1eab146104cf578063df5cf723146104e2578063e7a050aa14610509578063f2fde38b1461051c575f5ffd5b80639ac01d61116100ef5780639ac01d6114610463578063b5d8b5b814610476578063c665670214610489578063cbc2bd621461049c578063de44acb6146104af575f5ffd5b80638b8aac3c146103f65780638da5cb5b1461041e57806394f649dd1461042f578063967fc0d214610450575f5ffd5b8063595c6a67116101a0578063663c1de411610170578063663c1de41461035b578063715018a61461037d578063724af423146103855780637ecebe0014610398578063886f1195146103b7575f5ffd5b8063595c6a67146103055780635ac86ab71461030d5780635c975abb146103405780635de08ff214610348575f5ffd5b806336a8c500116101e657806336a8c5001461027857806348825e941461028e5780634b6d5d6e146102b557806350ff7225146102c857806354fd4d50146102f0575f5ffd5b8063136439dd146102175780631794bb3c1461022c5780632eae418c1461023f57806332e89ace14610252575b5f5ffd5b61022a6102253660046125e1565b610591565b005b61022a61023a36600461260c565b610666565b61022a61024d36600461264a565b61078c565b6102656102603660046126ac565b610844565b6040519081526020015b60405180910390f35b6102806108e8565b60405161026f9291906127e1565b6102657f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61022a6102c3366004612837565b610a05565b6102db6102d636600461260c565b610b3e565b6040805192835260208301919091520161026f565b6102f8610bb2565b60405161026f919061289f565b61022a610be2565b61033061031b3660046128b1565b609854600160ff9092169190911b9081161490565b604051901515815260200161026f565b609854610265565b61022a6103563660046128d1565b610c91565b610330610369366004612837565b60d16020525f908152604090205460ff1681565b61022a610de4565b61026561039336600461260c565b610df5565b6102656103a6366004612837565b60ca6020525f908152604090205481565b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161026f565b610265610404366004612837565b6001600160a01b03165f90815260ce602052604090205490565b6033546001600160a01b03166103de565b61044261043d366004612837565b610e68565b60405161026f92919061297b565b60cb546103de906001600160a01b031681565b6102656104713660046129a8565b610fe0565b61022a6104843660046128d1565b611071565b61022a610497366004612837565b6111b8565b6103de6104aa366004612a09565b6111db565b6104c26104bd366004612837565b61120f565b60405161026f9190612a33565b61022a6104dd366004612a09565b611282565b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b61026561051736600461260c565b611346565b61022a61052a366004612837565b611398565b6103de620e16e481565b61026561140e565b61022a61054f3660046125e1565b6114c7565b610265610562366004612837565b6115dd565b610265610575366004612a45565b60cd60209081525f928352604080842090915290825290205481565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156105f3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106179190612a7c565b61063457604051631d77d47760e21b815260040160405180910390fd5b60985481811681146106595760405163c61dca5d60e01b815260040160405180910390fd5b610662826115f2565b5050565b5f54610100900460ff161580801561068457505f54600160ff909116105b8061069d5750303b15801561069d57505f5460ff166001145b6107055760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610726575f805461ff0019166101001790555b61072f826115f2565b6107388461162f565b61074183611680565b8015610786575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107d55760405163f739589b60e01b815260040160405180910390fd5b6107dd6116e9565b604051636ce5768960e11b81526001600160a01b0384169063d9caed129061080d90879086908690600401612a9b565b5f604051808303815f87803b158015610824575f5ffd5b505af1158015610836573d5f5f3e3d5ffd5b505050506107866001606555565b6098545f90819060019081160361086e5760405163840a48d560e01b815260040160405180910390fd5b6108766116e9565b6001600160a01b0385165f90815260ca60205260409020546108a7866108a0818c8c8c878c610fe0565b8688611742565b6001600160a01b0386165f90815260ca602052604090206001820190556108d0868a8a8a611794565b9250506108dd6001606555565b509695505050505050565b6060805f6108f660d4611901565b90505f8167ffffffffffffffff81111561091257610912612698565b60405190808252806020026020018201604052801561093b578160200160208202803683370190505b5090505f8267ffffffffffffffff81111561095857610958612698565b604051908082528060200260200182016040528015610981578160200160208202803683370190505b5090505f5b838110156109fa575f5f61099b60d484611911565b91509150818584815181106109b2576109b2612abf565b60200260200101906001600160a01b031690816001600160a01b031681525050808484815181106109e5576109e5612abf565b60209081029190910101525050600101610986565b509094909350915050565b610a0d6116e9565b5f610a1960d48361192e565b915050610a2760d483611945565b50604080516001600160a01b0384168152602081018390527fd9d082c3ec4f3a3ffa55c324939a06407f5fbcb87d5e0ce3b9508c92c84ed839910160405180910390a18015610b3057816001600160a01b031663d9caed12620e16e4846001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa158015610abf573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae39190612ad3565b846040518463ffffffff1660e01b8152600401610b0293929190612a9b565b5f604051808303815f87803b158015610b19575f5ffd5b505af1158015610b2b573d5f5f3e3d5ffd5b505050505b50610b3b6001606555565b50565b5f80336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b895760405163f739589b60e01b815260040160405180910390fd5b610b916116e9565b610b9c858585611959565b91509150610baa6001606555565b935093915050565b6060610bdd7f0000000000000000000000000000000000000000000000000000000000000000611ac1565b905090565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610c44573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c689190612a7c565b610c8557604051631d77d47760e21b815260040160405180910390fd5b610c8f5f196115f2565b565b60cb546001600160a01b03163314610cbc576040516320ba3ff960e21b815260040160405180910390fd5b610cc46116e9565b805f5b81811015610dd85760d15f858584818110610ce457610ce4612abf565b9050602002016020810190610cf99190612837565b6001600160a01b0316815260208101919091526040015f205460ff16610dd057600160d15f868685818110610d3057610d30612abf565b9050602002016020810190610d459190612837565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe848483818110610d9f57610d9f612abf565b9050602002016020810190610db49190612837565b6040516001600160a01b03909116815260200160405180910390a15b600101610cc7565b50506106626001606555565b610dec611afe565b610c8f5f61162f565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610e3f5760405163f739589b60e01b815260040160405180910390fd5b610e476116e9565b5f610e53858585611b58565b92505050610e616001606555565b9392505050565b6001600160a01b0381165f90815260ce60205260408120546060918291908167ffffffffffffffff811115610e9f57610e9f612698565b604051908082528060200260200182016040528015610ec8578160200160208202803683370190505b5090505f5b82811015610f56576001600160a01b0386165f90815260cd6020908152604080832060ce9092528220805491929184908110610f0b57610f0b612abf565b5f9182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610f4357610f43612abf565b6020908102919091010152600101610ecd565b5060ce5f866001600160a01b03166001600160a01b031681526020019081526020015f208181805480602002602001604051908101604052809291908181526020018280548015610fce57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610fb0575b50505050509150935093505050915091565b604080517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922460208201526001600160a01b03808916928201929092528187166060820152908516608082015260a0810184905260c0810183905260e081018290525f90611066906101000160405160208183030381529060405280519060200120611c1e565b979650505050505050565b60cb546001600160a01b0316331461109c576040516320ba3ff960e21b815260040160405180910390fd5b6110a46116e9565b805f5b81811015610dd85760d15f8585848181106110c4576110c4612abf565b90506020020160208101906110d99190612837565b6001600160a01b0316815260208101919091526040015f205460ff16156111b0575f60d15f86868581811061111057611110612abf565b90506020020160208101906111259190612837565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba03084848381811061117f5761117f612abf565b90506020020160208101906111949190612837565b6040516001600160a01b03909116815260200160405180910390a15b6001016110a7565b6111c0611afe565b6111c86116e9565b6111d181611680565b610b3b6001606555565b60ce602052815f5260405f2081815481106111f4575f80fd5b5f918252602090912001546001600160a01b03169150829050565b6001600160a01b0381165f90815260ce602090815260409182902080548351818402810184019094528084526060939283018282801561127657602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611258575b50505050509050919050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146112cb5760405163f739589b60e01b815260040160405180910390fd5b6112d36116e9565b5f6112df60d48461192e565b91506112f8905060d4846112f38585612b02565b611c64565b50604080516001600160a01b0385168152602081018490527fca3e02a4ab7ad3c47a8e36e5a624c30170791726ab720f1babfef21046d953ff910160405180910390a1506106626001606555565b6098545f9081906001908116036113705760405163840a48d560e01b815260040160405180910390fd5b6113786116e9565b61138433868686611794565b91506113906001606555565b509392505050565b6113a0611afe565b6001600160a01b0381166114055760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106fc565b610b3b8161162f565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea61147b611c79565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611523573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115479190612ad3565b6001600160a01b0316336001600160a01b0316146115785760405163794821ff60e01b815260040160405180910390fd5b6098548019821981161461159f5760405163c61dca5d60e01b815260040160405180910390fd5b609882905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f5f6115ea60d48461192e565b949350505050565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b60026065540361173b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106fc565b6002606555565b4281101561176357604051630819bdcd60e01b815260040160405180910390fd5b6117776001600160a01b0385168484611d15565b61078657604051638baa579f60e01b815260040160405180910390fd5b6001600160a01b0383165f90815260d16020526040812054849060ff166117ce57604051632efd965160e11b815260040160405180910390fd5b6117e36001600160a01b038516338786611d73565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303815f875af115801561182f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118539190612b15565b91505f5f611862888886611959565b604051631e328e7960e11b81526001600160a01b038b811660048301528a8116602483015260448201849052606482018390529294509092507f000000000000000000000000000000000000000000000000000000000000000090911690633c651cf2906084015f604051808303815f87803b1580156118e0575f5ffd5b505af11580156118f2573d5f5f3e3d5ffd5b50505050505050949350505050565b5f61190b82611dcb565b92915050565b5f80808061191f8686611dd5565b909450925050505b9250929050565b5f80808061191f866001600160a01b038716611dfe565b5f610e61836001600160a01b038416611e36565b5f806001600160a01b038516611982576040516316f2ccc960e01b815260040160405180910390fd5b825f036119a2576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038086165f90815260cd6020908152604080832093881683529290529081205490819003611a48576001600160a01b0386165f90815260ce602090815260409091205410611a0a576040516301a1443960e31b815260040160405180910390fd5b6001600160a01b038681165f90815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169187169190911790555b611a528482612b02565b6001600160a01b038088165f90815260cd60209081526040808320938a16835292905281902091909155517f5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f6290611aae90889088908890612a9b565b60405180910390a1959294509192505050565b60605f611acd83611e52565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6033546001600160a01b03163314610c8f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106fc565b5f5f825f03611b7a576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038086165f90815260cd602090815260408083209388168352929052205480841115611bc057604051634b18b19360e01b815260040160405180910390fd5b611bca8482612b2c565b6001600160a01b038088165f90815260cd60209081526040808320938a168352929052908120829055909150819003611c1257611c078686611e79565b600192509050610baa565b5f969095509350505050565b5f611c2761140e565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b5f6115ea846001600160a01b03851684611ff7565b60605f611ca57f0000000000000000000000000000000000000000000000000000000000000000611ac1565b9050805f81518110611cb957611cb9612abf565b602001015160f81c60f81b81600181518110611cd757611cd7612abf565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b5f5f5f611d228585612013565b90925090505f816004811115611d3a57611d3a612b3f565b148015611d585750856001600160a01b0316826001600160a01b0316145b80611d695750611d69868686612052565b9695505050505050565b610786846323b872dd60e01b858585604051602401611d9493929190612a9b565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612139565b5f61190b82612211565b5f8080611de2858561221a565b5f81815260029690960160205260409095205494959350505050565b5f818152600283016020526040812054819080611e2b57611e1f8585612225565b92505f91506119279050565b600192509050611927565b5f8181526002830160205260408120819055610e618383612230565b5f60ff8216601f81111561190b57604051632cd44ac360e21b815260040160405180910390fd5b6001600160a01b0382165f90815260ce6020526040812054905b81811015611f8b576001600160a01b038481165f90815260ce6020526040902080549185169183908110611ec957611ec9612abf565b5f918252602090912001546001600160a01b031603611f83576001600160a01b0384165f90815260ce602052604090208054611f0790600190612b2c565b81548110611f1757611f17612abf565b5f9182526020808320909101546001600160a01b03878116845260ce9092526040909220805491909216919083908110611f5357611f53612abf565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550611f8b565b600101611e93565b818103611fab57604051632df15a4160e11b815260040160405180910390fd5b6001600160a01b0384165f90815260ce60205260409020805480611fd157611fd1612b53565b5f8281526020902081015f1990810180546001600160a01b031916905501905550505050565b5f82815260028401602052604081208290556115ea848461223b565b5f5f8251604103612047576020830151604084015160608501515f1a61203b87828585612246565b94509450505050611927565b505f90506002611927565b5f5f5f856001600160a01b0316631626ba7e60e01b868660405160240161207a929190612b67565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516120b89190612b7f565b5f60405180830381855afa9150503d805f81146120f0576040519150601f19603f3d011682016040523d82523d5f602084013e6120f5565b606091505b509150915081801561210957506020815110155b8015611d6957508051630b135d3f60e11b9061212e9083016020908101908401612b15565b149695505050505050565b5f61218d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166123039092919063ffffffff16565b905080515f14806121ad5750808060200190518101906121ad9190612a7c565b61220c5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106fc565b505050565b5f61190b825490565b5f610e618383612311565b5f610e618383612337565b5f610e61838361234e565b5f610e618383612431565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561227b57505f905060036122fa565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156122cc573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b0381166122f4575f600192509250506122fa565b91505f90505b94509492505050565b60606115ea84845f8561247d565b5f825f01828154811061232657612326612abf565b905f5260205f200154905092915050565b5f8181526001830160205260408120541515610e61565b5f8181526001830160205260408120548015612428575f612370600183612b2c565b85549091505f9061238390600190612b2c565b90508181146123e2575f865f0182815481106123a1576123a1612abf565b905f5260205f200154905080875f0184815481106123c1576123c1612abf565b5f918252602080832090910192909255918252600188019052604090208390555b85548690806123f3576123f3612b53565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061190b565b5f91505061190b565b5f81815260018301602052604081205461247657508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561190b565b505f61190b565b6060824710156124de5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106fc565b5f5f866001600160a01b031685876040516124f99190612b7f565b5f6040518083038185875af1925050503d805f8114612533576040519150601f19603f3d011682016040523d82523d5f602084013e612538565b606091505b509150915061106687838387606083156125b25782515f036125ab576001600160a01b0385163b6125ab5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106fc565b50816115ea565b6115ea83838151156125c75781518083602001fd5b8060405162461bcd60e51b81526004016106fc919061289f565b5f602082840312156125f1575f5ffd5b5035919050565b6001600160a01b0381168114610b3b575f5ffd5b5f5f5f6060848603121561261e575f5ffd5b8335612629816125f8565b92506020840135612639816125f8565b929592945050506040919091013590565b5f5f5f5f6080858703121561265d575f5ffd5b8435612668816125f8565b93506020850135612678816125f8565b92506040850135612688816125f8565b9396929550929360600135925050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f5f60c087890312156126c1575f5ffd5b86356126cc816125f8565b955060208701356126dc816125f8565b94506040870135935060608701356126f3816125f8565b92506080870135915060a087013567ffffffffffffffff811115612715575f5ffd5b8701601f81018913612725575f5ffd5b803567ffffffffffffffff81111561273f5761273f612698565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561276e5761276e612698565b6040528181528282016020018b1015612785575f5ffd5b816020840160208301375f602083830101528093505050509295509295509295565b5f8151808452602084019350602083015f5b828110156127d75781518652602095860195909101906001016127b9565b5093949350505050565b604080825283519082018190525f9060208501906060840190835b818110156128235783516001600160a01b03168352602093840193909201916001016127fc565b50508381036020850152611d6981866127a7565b5f60208284031215612847575f5ffd5b8135610e61816125f8565b5f5b8381101561286c578181015183820152602001612854565b50505f910152565b5f815180845261288b816020860160208601612852565b601f01601f19169290920160200192915050565b602081525f610e616020830184612874565b5f602082840312156128c1575f5ffd5b813560ff81168114610e61575f5ffd5b5f5f602083850312156128e2575f5ffd5b823567ffffffffffffffff8111156128f8575f5ffd5b8301601f81018513612908575f5ffd5b803567ffffffffffffffff81111561291e575f5ffd5b8560208260051b8401011115612932575f5ffd5b6020919091019590945092505050565b5f8151808452602084019350602083015f5b828110156127d75781516001600160a01b0316865260209586019590910190600101612954565b604081525f61298d6040830185612942565b828103602084015261299f81856127a7565b95945050505050565b5f5f5f5f5f5f60c087890312156129bd575f5ffd5b86356129c8816125f8565b955060208701356129d8816125f8565b945060408701356129e8816125f8565b959894975094956060810135955060808101359460a0909101359350915050565b5f5f60408385031215612a1a575f5ffd5b8235612a25816125f8565b946020939093013593505050565b602081525f610e616020830184612942565b5f5f60408385031215612a56575f5ffd5b8235612a61816125f8565b91506020830135612a71816125f8565b809150509250929050565b5f60208284031215612a8c575f5ffd5b81518015158114610e61575f5ffd5b6001600160a01b039384168152919092166020820152604081019190915260600190565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612ae3575f5ffd5b8151610e61816125f8565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561190b5761190b612aee565b5f60208284031215612b25575f5ffd5b5051919050565b8181038181111561190b5761190b612aee565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f6115ea6040830184612874565b5f8251612b90818460208701612852565b919091019291505056fea264697066735822122007790e4a374e2dfc7971ddb448979d7176792110a3a5369707629a163f269ab964736f6c634300081b0033
1063    /// ```
1064    #[rustfmt::skip]
1065    #[allow(clippy::all)]
1066    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
1067        b"`\xE0`@R4\x80\x15a\0\x0FW__\xFD[P`@Qa/;8\x03\x80a/;\x839\x81\x01`@\x81\x90Ra\0.\x91a\x01\xD5V[\x80\x80\x84\x84`\x01`\x01`\xA0\x1B\x03\x81\x16a\0YW`@Qc9\xB1\x90\xBB`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16`\x80R\x16`\xA0Ra\0t\x81a\0\x8AV[`\xC0RPa\0\x82\x90Pa\0\xD0V[PPPa\x03\x02V[__\x82\x90P`\x1F\x81Q\x11\x15a\0\xBDW\x82`@Qc0Z'\xA9`\xE0\x1B\x81R`\x04\x01a\0\xB4\x91\x90a\x02\xAAV[`@Q\x80\x91\x03\x90\xFD[\x80Qa\0\xC8\x82a\x02\xDCV[\x17\x93\x92PPPV[_Ta\x01\0\x90\x04`\xFF\x16\x15a\x017W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`'`$\x82\x01R\x7FInitializable: contract is initi`D\x82\x01Rfalizing`\xC8\x1B`d\x82\x01R`\x84\x01a\0\xB4V[_T`\xFF\x90\x81\x16\x14a\x01\x86W_\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\x9CW__\xFD[PV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[_[\x83\x81\x10\x15a\x01\xCDW\x81\x81\x01Q\x83\x82\x01R` \x01a\x01\xB5V[PP_\x91\x01RV[___``\x84\x86\x03\x12\x15a\x01\xE7W__\xFD[\x83Qa\x01\xF2\x81a\x01\x88V[` \x85\x01Q\x90\x93Pa\x02\x03\x81a\x01\x88V[`@\x85\x01Q\x90\x92P`\x01`\x01`@\x1B\x03\x81\x11\x15a\x02\x1EW__\xFD[\x84\x01`\x1F\x81\x01\x86\x13a\x02.W__\xFD[\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x02GWa\x02Ga\x01\x9FV[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x02uWa\x02ua\x01\x9FV[`@R\x81\x81R\x82\x82\x01` \x01\x88\x10\x15a\x02\x8CW__\xFD[a\x02\x9D\x82` \x83\x01` \x86\x01a\x01\xB3V[\x80\x93PPPP\x92P\x92P\x92V[` \x81R_\x82Q\x80` \x84\x01Ra\x02\xC8\x81`@\x85\x01` \x87\x01a\x01\xB3V[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[\x80Q` \x80\x83\x01Q\x91\x90\x81\x10\x15a\x02\xFCW_\x19\x81` \x03`\x03\x1B\x1B\x82\x16\x91P[P\x91\x90PV[`\x80Q`\xA0Q`\xC0Qa+\xD0a\x03k_9_\x81\x81a\x0B\xB9\x01Ra\x1C\x81\x01R_\x81\x81a\x04\xE7\x01R\x81\x81a\x07\x97\x01R\x81\x81a\x0BK\x01R\x81\x81a\x0E\x01\x01R\x81\x81a\x12\x8D\x01Ra\x18\x9D\x01R_\x81\x81a\x03\xBC\x01R\x81\x81a\x05\xA6\x01R\x81\x81a\x0B\xF7\x01Ra\x14\xC9\x01Ra+\xD0_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\x02\x13W_5`\xE0\x1C\x80c\x8B\x8A\xAC<\x11a\x01\x1FW\x80c\xDE\xBE\x1E\xAB\x11a\0\xA9W\x80c\xF3\xB4\xA0\0\x11a\0yW\x80c\xF3\xB4\xA0\0\x14a\x05/W\x80c\xF6\x98\xDA%\x14a\x059W\x80c\xFA\xBC\x1C\xBC\x14a\x05AW\x80c\xFD\x98\x04#\x14a\x05TW\x80c\xFE$:\x17\x14a\x05gW__\xFD[\x80c\xDE\xBE\x1E\xAB\x14a\x04\xCFW\x80c\xDF\\\xF7#\x14a\x04\xE2W\x80c\xE7\xA0P\xAA\x14a\x05\tW\x80c\xF2\xFD\xE3\x8B\x14a\x05\x1CW__\xFD[\x80c\x9A\xC0\x1Da\x11a\0\xEFW\x80c\x9A\xC0\x1Da\x14a\x04cW\x80c\xB5\xD8\xB5\xB8\x14a\x04vW\x80c\xC6eg\x02\x14a\x04\x89W\x80c\xCB\xC2\xBDb\x14a\x04\x9CW\x80c\xDED\xAC\xB6\x14a\x04\xAFW__\xFD[\x80c\x8B\x8A\xAC<\x14a\x03\xF6W\x80c\x8D\xA5\xCB[\x14a\x04\x1EW\x80c\x94\xF6I\xDD\x14a\x04/W\x80c\x96\x7F\xC0\xD2\x14a\x04PW__\xFD[\x80cY\\jg\x11a\x01\xA0W\x80cf<\x1D\xE4\x11a\x01pW\x80cf<\x1D\xE4\x14a\x03[W\x80cqP\x18\xA6\x14a\x03}W\x80crJ\xF4#\x14a\x03\x85W\x80c~\xCE\xBE\0\x14a\x03\x98W\x80c\x88o\x11\x95\x14a\x03\xB7W__\xFD[\x80cY\\jg\x14a\x03\x05W\x80cZ\xC8j\xB7\x14a\x03\rW\x80c\\\x97Z\xBB\x14a\x03@W\x80c]\xE0\x8F\xF2\x14a\x03HW__\xFD[\x80c6\xA8\xC5\0\x11a\x01\xE6W\x80c6\xA8\xC5\0\x14a\x02xW\x80cH\x82^\x94\x14a\x02\x8EW\x80cKm]n\x14a\x02\xB5W\x80cP\xFFr%\x14a\x02\xC8W\x80cT\xFDMP\x14a\x02\xF0W__\xFD[\x80c\x13d9\xDD\x14a\x02\x17W\x80c\x17\x94\xBB<\x14a\x02,W\x80c.\xAEA\x8C\x14a\x02?W\x80c2\xE8\x9A\xCE\x14a\x02RW[__\xFD[a\x02*a\x02%6`\x04a%\xE1V[a\x05\x91V[\0[a\x02*a\x02:6`\x04a&\x0CV[a\x06fV[a\x02*a\x02M6`\x04a&JV[a\x07\x8CV[a\x02ea\x02`6`\x04a&\xACV[a\x08DV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x02\x80a\x08\xE8V[`@Qa\x02o\x92\x91\x90a'\xE1V[a\x02e\x7FC7\xF8-\x14.A\xF2\xA8\xC1\x05G\xCD\x8C\x85\x9B\xDD\xB9\"b\xA6\x10X\xE7xB\xE2M\x9D\xEA\x92$\x81V[a\x02*a\x02\xC36`\x04a(7V[a\n\x05V[a\x02\xDBa\x02\xD66`\x04a&\x0CV[a\x0B>V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x02oV[a\x02\xF8a\x0B\xB2V[`@Qa\x02o\x91\x90a(\x9FV[a\x02*a\x0B\xE2V[a\x030a\x03\x1B6`\x04a(\xB1V[`\x98T`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`@Q\x90\x15\x15\x81R` \x01a\x02oV[`\x98Ta\x02eV[a\x02*a\x03V6`\x04a(\xD1V[a\x0C\x91V[a\x030a\x03i6`\x04a(7V[`\xD1` R_\x90\x81R`@\x90 T`\xFF\x16\x81V[a\x02*a\r\xE4V[a\x02ea\x03\x936`\x04a&\x0CV[a\r\xF5V[a\x02ea\x03\xA66`\x04a(7V[`\xCA` R_\x90\x81R`@\x90 T\x81V[a\x03\xDE\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02oV[a\x02ea\x04\x046`\x04a(7V[`\x01`\x01`\xA0\x1B\x03\x16_\x90\x81R`\xCE` R`@\x90 T\x90V[`3T`\x01`\x01`\xA0\x1B\x03\x16a\x03\xDEV[a\x04Ba\x04=6`\x04a(7V[a\x0EhV[`@Qa\x02o\x92\x91\x90a){V[`\xCBTa\x03\xDE\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x02ea\x04q6`\x04a)\xA8V[a\x0F\xE0V[a\x02*a\x04\x846`\x04a(\xD1V[a\x10qV[a\x02*a\x04\x976`\x04a(7V[a\x11\xB8V[a\x03\xDEa\x04\xAA6`\x04a*\tV[a\x11\xDBV[a\x04\xC2a\x04\xBD6`\x04a(7V[a\x12\x0FV[`@Qa\x02o\x91\x90a*3V[a\x02*a\x04\xDD6`\x04a*\tV[a\x12\x82V[a\x03\xDE\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\x02ea\x05\x176`\x04a&\x0CV[a\x13FV[a\x02*a\x05*6`\x04a(7V[a\x13\x98V[a\x03\xDEb\x0E\x16\xE4\x81V[a\x02ea\x14\x0EV[a\x02*a\x05O6`\x04a%\xE1V[a\x14\xC7V[a\x02ea\x05b6`\x04a(7V[a\x15\xDDV[a\x02ea\x05u6`\x04a*EV[`\xCD` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[`@Qc#}\xFBG`\xE1\x1B\x81R3`\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\x90cF\xFB\xF6\x8E\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05\xF3W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\x17\x91\x90a*|V[a\x064W`@Qc\x1Dw\xD4w`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x98T\x81\x81\x16\x81\x14a\x06YW`@Qc\xC6\x1D\xCA]`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x06b\x82a\x15\xF2V[PPV[_Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x06\x84WP_T`\x01`\xFF\x90\x91\x16\x10[\x80a\x06\x9DWP0;\x15\x80\x15a\x06\x9DWP_T`\xFF\x16`\x01\x14[a\x07\x05W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`.`$\x82\x01R\x7FInitializable: contract is alrea`D\x82\x01Rm\x19\x1EH\x1A[\x9A]\x1AX[\x1A^\x99Y`\x92\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[_\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x07&W_\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x07/\x82a\x15\xF2V[a\x078\x84a\x16/V[a\x07A\x83a\x16\x80V[\x80\x15a\x07\x86W_\x80Ta\xFF\0\x19\x16\x90U`@Q`\x01\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPV[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\x07\xD5W`@Qc\xF79X\x9B`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x07\xDDa\x16\xE9V[`@Qcl\xE5v\x89`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x16\x90c\xD9\xCA\xED\x12\x90a\x08\r\x90\x87\x90\x86\x90\x86\x90`\x04\x01a*\x9BV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x08$W__\xFD[PZ\xF1\x15\x80\x15a\x086W=__>=_\xFD[PPPPa\x07\x86`\x01`eUV[`\x98T_\x90\x81\x90`\x01\x90\x81\x16\x03a\x08nW`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x08va\x16\xE9V[`\x01`\x01`\xA0\x1B\x03\x85\x16_\x90\x81R`\xCA` R`@\x90 Ta\x08\xA7\x86a\x08\xA0\x81\x8C\x8C\x8C\x87\x8Ca\x0F\xE0V[\x86\x88a\x17BV[`\x01`\x01`\xA0\x1B\x03\x86\x16_\x90\x81R`\xCA` R`@\x90 `\x01\x82\x01\x90Ua\x08\xD0\x86\x8A\x8A\x8Aa\x17\x94V[\x92PPa\x08\xDD`\x01`eUV[P\x96\x95PPPPPPV[``\x80_a\x08\xF6`\xD4a\x19\x01V[\x90P_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\t\x12Wa\t\x12a&\x98V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\t;W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_\x82g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\tXWa\tXa&\x98V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\t\x81W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x83\x81\x10\x15a\t\xFAW__a\t\x9B`\xD4\x84a\x19\x11V[\x91P\x91P\x81\x85\x84\x81Q\x81\x10a\t\xB2Wa\t\xB2a*\xBFV[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x80\x84\x84\x81Q\x81\x10a\t\xE5Wa\t\xE5a*\xBFV[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\t\x86V[P\x90\x94\x90\x93P\x91PPV[a\n\ra\x16\xE9V[_a\n\x19`\xD4\x83a\x19.V[\x91PPa\n'`\xD4\x83a\x19EV[P`@\x80Q`\x01`\x01`\xA0\x1B\x03\x84\x16\x81R` \x81\x01\x83\x90R\x7F\xD9\xD0\x82\xC3\xECO:?\xFAU\xC3$\x93\x9A\x06@\x7F_\xBC\xB8}^\x0C\xE3\xB9P\x8C\x92\xC8N\xD89\x91\x01`@Q\x80\x91\x03\x90\xA1\x80\x15a\x0B0W\x81`\x01`\x01`\xA0\x1B\x03\x16c\xD9\xCA\xED\x12b\x0E\x16\xE4\x84`\x01`\x01`\xA0\x1B\x03\x16c$\x95\xA5\x99`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\n\xBFW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xE3\x91\x90a*\xD3V[\x84`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0B\x02\x93\x92\x91\x90a*\x9BV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x0B\x19W__\xFD[PZ\xF1\x15\x80\x15a\x0B+W=__>=_\xFD[PPPP[Pa\x0B;`\x01`eUV[PV[_\x803`\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\x0B\x89W`@Qc\xF79X\x9B`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0B\x91a\x16\xE9V[a\x0B\x9C\x85\x85\x85a\x19YV[\x91P\x91Pa\x0B\xAA`\x01`eUV[\x93P\x93\x91PPV[``a\x0B\xDD\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\x1A\xC1V[\x90P\x90V[`@Qc#}\xFBG`\xE1\x1B\x81R3`\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\x90cF\xFB\xF6\x8E\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0CDW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0Ch\x91\x90a*|V[a\x0C\x85W`@Qc\x1Dw\xD4w`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0C\x8F_\x19a\x15\xF2V[V[`\xCBT`\x01`\x01`\xA0\x1B\x03\x163\x14a\x0C\xBCW`@Qc \xBA?\xF9`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0C\xC4a\x16\xE9V[\x80_[\x81\x81\x10\x15a\r\xD8W`\xD1_\x85\x85\x84\x81\x81\x10a\x0C\xE4Wa\x0C\xE4a*\xBFV[\x90P` \x02\x01` \x81\x01\x90a\x0C\xF9\x91\x90a(7V[`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x81\x01\x91\x90\x91R`@\x01_ T`\xFF\x16a\r\xD0W`\x01`\xD1_\x86\x86\x85\x81\x81\x10a\r0Wa\r0a*\xBFV[\x90P` \x02\x01` \x81\x01\x90a\rE\x91\x90a(7V[`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x81\x01\x91\x90\x91R`@\x01_ \x80T`\xFF\x19\x16\x91\x15\x15\x91\x90\x91\x17\x90U\x7F\x0C5\xB1}\x91\xC9n\xB2u\x1C\xD4V\xE1%/B\xA3\x86\xE5$\xEF\x9F\xF2n\xCC\x99P\x85\x9F\xDC\x04\xFE\x84\x84\x83\x81\x81\x10a\r\x9FWa\r\x9Fa*\xBFV[\x90P` \x02\x01` \x81\x01\x90a\r\xB4\x91\x90a(7V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1[`\x01\x01a\x0C\xC7V[PPa\x06b`\x01`eUV[a\r\xECa\x1A\xFEV[a\x0C\x8F_a\x16/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?W`@Qc\xF79X\x9B`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0EGa\x16\xE9V[_a\x0ES\x85\x85\x85a\x1BXV[\x92PPPa\x0Ea`\x01`eUV[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\xCE` R`@\x81 T``\x91\x82\x91\x90\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\x9FWa\x0E\x9Fa&\x98V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0E\xC8W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x82\x81\x10\x15a\x0FVW`\x01`\x01`\xA0\x1B\x03\x86\x16_\x90\x81R`\xCD` \x90\x81R`@\x80\x83 `\xCE\x90\x92R\x82 \x80T\x91\x92\x91\x84\x90\x81\x10a\x0F\x0BWa\x0F\x0Ba*\xBFV[_\x91\x82R` \x80\x83 \x90\x91\x01T`\x01`\x01`\xA0\x1B\x03\x16\x83R\x82\x01\x92\x90\x92R`@\x01\x90 T\x82Q\x83\x90\x83\x90\x81\x10a\x0FCWa\x0FCa*\xBFV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x0E\xCDV[P`\xCE_\x86`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01_ \x81\x81\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x0F\xCEW` \x02\x82\x01\x91\x90_R` _ \x90[\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x0F\xB0W[PPPPP\x91P\x93P\x93PPP\x91P\x91V[`@\x80Q\x7FC7\xF8-\x14.A\xF2\xA8\xC1\x05G\xCD\x8C\x85\x9B\xDD\xB9\"b\xA6\x10X\xE7xB\xE2M\x9D\xEA\x92$` \x82\x01R`\x01`\x01`\xA0\x1B\x03\x80\x89\x16\x92\x82\x01\x92\x90\x92R\x81\x87\x16``\x82\x01R\x90\x85\x16`\x80\x82\x01R`\xA0\x81\x01\x84\x90R`\xC0\x81\x01\x83\x90R`\xE0\x81\x01\x82\x90R_\x90a\x10f\x90a\x01\0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x1C\x1EV[\x97\x96PPPPPPPV[`\xCBT`\x01`\x01`\xA0\x1B\x03\x163\x14a\x10\x9CW`@Qc \xBA?\xF9`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x10\xA4a\x16\xE9V[\x80_[\x81\x81\x10\x15a\r\xD8W`\xD1_\x85\x85\x84\x81\x81\x10a\x10\xC4Wa\x10\xC4a*\xBFV[\x90P` \x02\x01` \x81\x01\x90a\x10\xD9\x91\x90a(7V[`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x81\x01\x91\x90\x91R`@\x01_ T`\xFF\x16\x15a\x11\xB0W_`\xD1_\x86\x86\x85\x81\x81\x10a\x11\x10Wa\x11\x10a*\xBFV[\x90P` \x02\x01` \x81\x01\x90a\x11%\x91\x90a(7V[`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x81\x01\x91\x90\x91R`@\x01_ \x80T`\xFF\x19\x16\x91\x15\x15\x91\x90\x91\x17\x90U\x7F@tA;KD>NX\x01\x9F(U\xA8vQ\x135\x8C|r\xE3\x95\t\xC6\xAFE\xFC\x0F[\xA00\x84\x84\x83\x81\x81\x10a\x11\x7FWa\x11\x7Fa*\xBFV[\x90P` \x02\x01` \x81\x01\x90a\x11\x94\x91\x90a(7V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1[`\x01\x01a\x10\xA7V[a\x11\xC0a\x1A\xFEV[a\x11\xC8a\x16\xE9V[a\x11\xD1\x81a\x16\x80V[a\x0B;`\x01`eUV[`\xCE` R\x81_R`@_ \x81\x81T\x81\x10a\x11\xF4W_\x80\xFD[_\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x91P\x82\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\xCE` \x90\x81R`@\x91\x82\x90 \x80T\x83Q\x81\x84\x02\x81\x01\x84\x01\x90\x94R\x80\x84R``\x93\x92\x83\x01\x82\x82\x80\x15a\x12vW` \x02\x82\x01\x91\x90_R` _ \x90[\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x12XW[PPPPP\x90P\x91\x90PV[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\x12\xCBW`@Qc\xF79X\x9B`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x12\xD3a\x16\xE9V[_a\x12\xDF`\xD4\x84a\x19.V[\x91Pa\x12\xF8\x90P`\xD4\x84a\x12\xF3\x85\x85a+\x02V[a\x1CdV[P`@\x80Q`\x01`\x01`\xA0\x1B\x03\x85\x16\x81R` \x81\x01\x84\x90R\x7F\xCA>\x02\xA4\xABz\xD3\xC4z\x8E6\xE5\xA6$\xC3\x01py\x17&\xABr\x0F\x1B\xAB\xFE\xF2\x10F\xD9S\xFF\x91\x01`@Q\x80\x91\x03\x90\xA1Pa\x06b`\x01`eUV[`\x98T_\x90\x81\x90`\x01\x90\x81\x16\x03a\x13pW`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x13xa\x16\xE9V[a\x13\x843\x86\x86\x86a\x17\x94V[\x91Pa\x13\x90`\x01`eUV[P\x93\x92PPPV[a\x13\xA0a\x1A\xFEV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x14\x05W`@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\x06\xFCV[a\x0B;\x81a\x16/V[`@\x80Q\x80\x82\x01\x90\x91R`\n\x81Ri\"\xB4\xB3\xB2\xB7&0\xBC\xB2\xB9`\xB1\x1B` \x90\x91\x01R_\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F\x7Fq\xB6%\xCF\xADD\xBA\xC6;\x13\xDB\xA0\x7F.\x1D`\x84\xEE\x04\xB6\xF8u!\x01\xEC\xE6\x12mXN\xE6\xEAa\x14{a\x1CyV[\x80Q` \x91\x82\x01 `@\x80Q\x92\x83\x01\x94\x90\x94R\x92\x81\x01\x91\x90\x91R``\x81\x01\x91\x90\x91RF`\x80\x82\x01R0`\xA0\x82\x01R`\xC0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x90V[\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\xEA\xB6mz`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x15#W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15G\x91\x90a*\xD3V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x15xW`@QcyH!\xFF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x98T\x80\x19\x82\x19\x81\x16\x14a\x15\x9FW`@Qc\xC6\x1D\xCA]`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x98\x82\x90U`@Q\x82\x81R3\x90\x7F5\x82\xD1\x82\x8E&\xBFV\xBD\x80\x15\x02\xBC\x02\x1A\xC0\xBC\x8A\xFBW\xC8&\xE4\x98kEY<\x8F\xAD8\x9C\x90` \x01`@Q\x80\x91\x03\x90\xA2PPV[__a\x15\xEA`\xD4\x84a\x19.V[\x94\x93PPPPV[`\x98\x81\x90U`@Q\x81\x81R3\x90\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=\x90` \x01`@Q\x80\x91\x03\x90\xA2PV[`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[`\xCBT`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x83\x16` \x83\x01R\x7FBd'^Y9U\xFF\x9DaF\xA5\x1AE%\xF6\xDD\xAC\xE2\xE8\x1D\xB99\x1A\xBC\xC9\xD1\xCAH\x04})\x91\x01`@Q\x80\x91\x03\x90\xA1`\xCB\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\x02`eT\x03a\x17;W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x06\xFCV[`\x02`eUV[B\x81\x10\x15a\x17cW`@Qc\x08\x19\xBD\xCD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x17w`\x01`\x01`\xA0\x1B\x03\x85\x16\x84\x84a\x1D\x15V[a\x07\x86W`@Qc\x8B\xAAW\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x83\x16_\x90\x81R`\xD1` R`@\x81 T\x84\x90`\xFF\x16a\x17\xCEW`@Qc.\xFD\x96Q`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x17\xE3`\x01`\x01`\xA0\x1B\x03\x85\x163\x87\x86a\x1DsV[`@Qc\x11\xF9\xFB\xC9`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x81\x16`\x04\x83\x01R`$\x82\x01\x85\x90R\x86\x16\x90cG\xE7\xEF$\x90`D\x01` `@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\x18/W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x18S\x91\x90a+\x15V[\x91P__a\x18b\x88\x88\x86a\x19YV[`@Qc\x1E2\x8Ey`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x8B\x81\x16`\x04\x83\x01R\x8A\x81\x16`$\x83\x01R`D\x82\x01\x84\x90R`d\x82\x01\x83\x90R\x92\x94P\x90\x92P\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x91\x16\x90c<e\x1C\xF2\x90`\x84\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x18\xE0W__\xFD[PZ\xF1\x15\x80\x15a\x18\xF2W=__>=_\xFD[PPPPPPP\x94\x93PPPPV[_a\x19\x0B\x82a\x1D\xCBV[\x92\x91PPV[_\x80\x80\x80a\x19\x1F\x86\x86a\x1D\xD5V[\x90\x94P\x92PPP[\x92P\x92\x90PV[_\x80\x80\x80a\x19\x1F\x86`\x01`\x01`\xA0\x1B\x03\x87\x16a\x1D\xFEV[_a\x0Ea\x83`\x01`\x01`\xA0\x1B\x03\x84\x16a\x1E6V[_\x80`\x01`\x01`\xA0\x1B\x03\x85\x16a\x19\x82W`@Qc\x16\xF2\xCC\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82_\x03a\x19\xA2W`@QcB\x06\x1B%`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x86\x16_\x90\x81R`\xCD` \x90\x81R`@\x80\x83 \x93\x88\x16\x83R\x92\x90R\x90\x81 T\x90\x81\x90\x03a\x1AHW`\x01`\x01`\xA0\x1B\x03\x86\x16_\x90\x81R`\xCE` \x90\x81R`@\x90\x91 T\x10a\x1A\nW`@Qc\x01\xA1D9`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x86\x81\x16_\x90\x81R`\xCE` \x90\x81R`@\x82 \x80T`\x01\x81\x01\x82U\x90\x83R\x91 \x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x91\x87\x16\x91\x90\x91\x17\x90U[a\x1AR\x84\x82a+\x02V[`\x01`\x01`\xA0\x1B\x03\x80\x88\x16_\x90\x81R`\xCD` \x90\x81R`@\x80\x83 \x93\x8A\x16\x83R\x92\x90R\x81\x90 \x91\x90\x91UQ\x7FUH\xC87\xAB\x06\x8C\xF5j,$y\xDF\x08\x82\xA4\x92/\xD2\x03\xED\xB7Qs!\x83\x1D\x95\x07\x8C_b\x90a\x1A\xAE\x90\x88\x90\x88\x90\x88\x90a*\x9BV[`@Q\x80\x91\x03\x90\xA1\x95\x92\x94P\x91\x92PPPV[``_a\x1A\xCD\x83a\x1ERV[`@\x80Q` \x80\x82R\x81\x83\x01\x90\x92R\x91\x92P_\x91\x90` \x82\x01\x81\x806\x837PPP\x91\x82RP` \x81\x01\x92\x90\x92RP\x90V[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x0C\x8FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x06\xFCV[__\x82_\x03a\x1BzW`@QcB\x06\x1B%`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x86\x16_\x90\x81R`\xCD` \x90\x81R`@\x80\x83 \x93\x88\x16\x83R\x92\x90R T\x80\x84\x11\x15a\x1B\xC0W`@QcK\x18\xB1\x93`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1B\xCA\x84\x82a+,V[`\x01`\x01`\xA0\x1B\x03\x80\x88\x16_\x90\x81R`\xCD` \x90\x81R`@\x80\x83 \x93\x8A\x16\x83R\x92\x90R\x90\x81 \x82\x90U\x90\x91P\x81\x90\x03a\x1C\x12Wa\x1C\x07\x86\x86a\x1EyV[`\x01\x92P\x90Pa\x0B\xAAV[_\x96\x90\x95P\x93PPPPV[_a\x1C'a\x14\x0EV[`@Qa\x19\x01`\xF0\x1B` \x82\x01R`\"\x81\x01\x91\x90\x91R`B\x81\x01\x83\x90R`b\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[_a\x15\xEA\x84`\x01`\x01`\xA0\x1B\x03\x85\x16\x84a\x1F\xF7V[``_a\x1C\xA5\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\x1A\xC1V[\x90P\x80_\x81Q\x81\x10a\x1C\xB9Wa\x1C\xB9a*\xBFV[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x81`\x01\x81Q\x81\x10a\x1C\xD7Wa\x1C\xD7a*\xBFV[\x01` \x90\x81\x01Q`@Q`\x01`\x01`\xF8\x1B\x03\x19\x93\x84\x16\x92\x81\x01\x92\x90\x92R\x91\x90\x91\x16`!\x82\x01R`\"\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91PP\x90V[___a\x1D\"\x85\x85a \x13V[\x90\x92P\x90P_\x81`\x04\x81\x11\x15a\x1D:Wa\x1D:a+?V[\x14\x80\x15a\x1DXWP\x85`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x14[\x80a\x1DiWPa\x1Di\x86\x86\x86a RV[\x96\x95PPPPPPV[a\x07\x86\x84c#\xB8r\xDD`\xE0\x1B\x85\x85\x85`@Q`$\x01a\x1D\x94\x93\x92\x91\x90a*\x9BV[`@\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!9V[_a\x19\x0B\x82a\"\x11V[_\x80\x80a\x1D\xE2\x85\x85a\"\x1AV[_\x81\x81R`\x02\x96\x90\x96\x01` R`@\x90\x95 T\x94\x95\x93PPPPV[_\x81\x81R`\x02\x83\x01` R`@\x81 T\x81\x90\x80a\x1E+Wa\x1E\x1F\x85\x85a\"%V[\x92P_\x91Pa\x19'\x90PV[`\x01\x92P\x90Pa\x19'V[_\x81\x81R`\x02\x83\x01` R`@\x81 \x81\x90Ua\x0Ea\x83\x83a\"0V[_`\xFF\x82\x16`\x1F\x81\x11\x15a\x19\x0BW`@Qc,\xD4J\xC3`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x82\x16_\x90\x81R`\xCE` R`@\x81 T\x90[\x81\x81\x10\x15a\x1F\x8BW`\x01`\x01`\xA0\x1B\x03\x84\x81\x16_\x90\x81R`\xCE` R`@\x90 \x80T\x91\x85\x16\x91\x83\x90\x81\x10a\x1E\xC9Wa\x1E\xC9a*\xBFV[_\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x03a\x1F\x83W`\x01`\x01`\xA0\x1B\x03\x84\x16_\x90\x81R`\xCE` R`@\x90 \x80Ta\x1F\x07\x90`\x01\x90a+,V[\x81T\x81\x10a\x1F\x17Wa\x1F\x17a*\xBFV[_\x91\x82R` \x80\x83 \x90\x91\x01T`\x01`\x01`\xA0\x1B\x03\x87\x81\x16\x84R`\xCE\x90\x92R`@\x90\x92 \x80T\x91\x90\x92\x16\x91\x90\x83\x90\x81\x10a\x1FSWa\x1FSa*\xBFV[\x90_R` _ \x01_a\x01\0\n\x81T\x81`\x01`\x01`\xA0\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`\xA0\x1B\x03\x16\x02\x17\x90UPa\x1F\x8BV[`\x01\x01a\x1E\x93V[\x81\x81\x03a\x1F\xABW`@Qc-\xF1ZA`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x84\x16_\x90\x81R`\xCE` R`@\x90 \x80T\x80a\x1F\xD1Wa\x1F\xD1a+SV[_\x82\x81R` \x90 \x81\x01_\x19\x90\x81\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U\x01\x90UPPPPV[_\x82\x81R`\x02\x84\x01` R`@\x81 \x82\x90Ua\x15\xEA\x84\x84a\";V[__\x82Q`A\x03a GW` \x83\x01Q`@\x84\x01Q``\x85\x01Q_\x1Aa ;\x87\x82\x85\x85a\"FV[\x94P\x94PPPPa\x19'V[P_\x90P`\x02a\x19'V[___\x85`\x01`\x01`\xA0\x1B\x03\x16c\x16&\xBA~`\xE0\x1B\x86\x86`@Q`$\x01a z\x92\x91\x90a+gV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x81R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16`\x01`\x01`\xE0\x1B\x03\x19\x90\x94\x16\x93\x90\x93\x17\x90\x92R\x90Qa \xB8\x91\x90a+\x7FV[_`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80_\x81\x14a \xF0W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a \xF5V[``\x91P[P\x91P\x91P\x81\x80\x15a!\tWP` \x81Q\x10\x15[\x80\x15a\x1DiWP\x80Qc\x0B\x13]?`\xE1\x1B\x90a!.\x90\x83\x01` \x90\x81\x01\x90\x84\x01a+\x15V[\x14\x96\x95PPPPPPV[_a!\x8D\x82`@Q\x80`@\x01`@R\x80` \x81R` \x01\x7FSafeERC20: low-level call failed\x81RP\x85`\x01`\x01`\xA0\x1B\x03\x16a#\x03\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x90P\x80Q_\x14\x80a!\xADWP\x80\x80` \x01\x90Q\x81\x01\x90a!\xAD\x91\x90a*|V[a\"\x0CW`@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\x06\xFCV[PPPV[_a\x19\x0B\x82T\x90V[_a\x0Ea\x83\x83a#\x11V[_a\x0Ea\x83\x83a#7V[_a\x0Ea\x83\x83a#NV[_a\x0Ea\x83\x83a$1V[_\x80\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF]WnsW\xA4P\x1D\xDF\xE9/Fh\x1B \xA0\x83\x11\x15a\"{WP_\x90P`\x03a\"\xFAV[`@\x80Q_\x80\x82R` \x82\x01\x80\x84R\x89\x90R`\xFF\x88\x16\x92\x82\x01\x92\x90\x92R``\x81\x01\x86\x90R`\x80\x81\x01\x85\x90R`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a\"\xCCW=__>=_\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16a\"\xF4W_`\x01\x92P\x92PPa\"\xFAV[\x91P_\x90P[\x94P\x94\x92PPPV[``a\x15\xEA\x84\x84_\x85a$}V[_\x82_\x01\x82\x81T\x81\x10a#&Wa#&a*\xBFV[\x90_R` _ \x01T\x90P\x92\x91PPV[_\x81\x81R`\x01\x83\x01` R`@\x81 T\x15\x15a\x0EaV[_\x81\x81R`\x01\x83\x01` R`@\x81 T\x80\x15a$(W_a#p`\x01\x83a+,V[\x85T\x90\x91P_\x90a#\x83\x90`\x01\x90a+,V[\x90P\x81\x81\x14a#\xE2W_\x86_\x01\x82\x81T\x81\x10a#\xA1Wa#\xA1a*\xBFV[\x90_R` _ \x01T\x90P\x80\x87_\x01\x84\x81T\x81\x10a#\xC1Wa#\xC1a*\xBFV[_\x91\x82R` \x80\x83 \x90\x91\x01\x92\x90\x92U\x91\x82R`\x01\x88\x01\x90R`@\x90 \x83\x90U[\x85T\x86\x90\x80a#\xF3Wa#\xF3a+SV[`\x01\x90\x03\x81\x81\x90_R` _ \x01_\x90U\x90U\x85`\x01\x01_\x86\x81R` \x01\x90\x81R` \x01_ _\x90U`\x01\x93PPPPa\x19\x0BV[_\x91PPa\x19\x0BV[_\x81\x81R`\x01\x83\x01` R`@\x81 Ta$vWP\x81T`\x01\x81\x81\x01\x84U_\x84\x81R` \x80\x82 \x90\x93\x01\x84\x90U\x84T\x84\x82R\x82\x86\x01\x90\x93R`@\x90 \x91\x90\x91Ua\x19\x0BV[P_a\x19\x0BV[``\x82G\x10\x15a$\xDEW`@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\x06\xFCV[__\x86`\x01`\x01`\xA0\x1B\x03\x16\x85\x87`@Qa$\xF9\x91\x90a+\x7FV[_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a%3W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a%8V[``\x91P[P\x91P\x91Pa\x10f\x87\x83\x83\x87``\x83\x15a%\xB2W\x82Q_\x03a%\xABW`\x01`\x01`\xA0\x1B\x03\x85\x16;a%\xABW`@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\x06\xFCV[P\x81a\x15\xEAV[a\x15\xEA\x83\x83\x81Q\x15a%\xC7W\x81Q\x80\x83` \x01\xFD[\x80`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xFC\x91\x90a(\x9FV[_` \x82\x84\x03\x12\x15a%\xF1W__\xFD[P5\x91\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x0B;W__\xFD[___``\x84\x86\x03\x12\x15a&\x1EW__\xFD[\x835a&)\x81a%\xF8V[\x92P` \x84\x015a&9\x81a%\xF8V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[____`\x80\x85\x87\x03\x12\x15a&]W__\xFD[\x845a&h\x81a%\xF8V[\x93P` \x85\x015a&x\x81a%\xF8V[\x92P`@\x85\x015a&\x88\x81a%\xF8V[\x93\x96\x92\x95P\x92\x93``\x015\x92PPV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[______`\xC0\x87\x89\x03\x12\x15a&\xC1W__\xFD[\x865a&\xCC\x81a%\xF8V[\x95P` \x87\x015a&\xDC\x81a%\xF8V[\x94P`@\x87\x015\x93P``\x87\x015a&\xF3\x81a%\xF8V[\x92P`\x80\x87\x015\x91P`\xA0\x87\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a'\x15W__\xFD[\x87\x01`\x1F\x81\x01\x89\x13a'%W__\xFD[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a'?Wa'?a&\x98V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'nWa'na&\x98V[`@R\x81\x81R\x82\x82\x01` \x01\x8B\x10\x15a'\x85W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92\x95P\x92\x95P\x92\x95V[_\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01_[\x82\x81\x10\x15a'\xD7W\x81Q\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a'\xB9V[P\x93\x94\x93PPPPV[`@\x80\x82R\x83Q\x90\x82\x01\x81\x90R_\x90` \x85\x01\x90``\x84\x01\x90\x83[\x81\x81\x10\x15a(#W\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a'\xFCV[PP\x83\x81\x03` \x85\x01Ra\x1Di\x81\x86a'\xA7V[_` \x82\x84\x03\x12\x15a(GW__\xFD[\x815a\x0Ea\x81a%\xF8V[_[\x83\x81\x10\x15a(lW\x81\x81\x01Q\x83\x82\x01R` \x01a(TV[PP_\x91\x01RV[_\x81Q\x80\x84Ra(\x8B\x81` \x86\x01` \x86\x01a(RV[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x81R_a\x0Ea` \x83\x01\x84a(tV[_` \x82\x84\x03\x12\x15a(\xC1W__\xFD[\x815`\xFF\x81\x16\x81\x14a\x0EaW__\xFD[__` \x83\x85\x03\x12\x15a(\xE2W__\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a(\xF8W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a)\x08W__\xFD[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a)\x1EW__\xFD[\x85` \x82`\x05\x1B\x84\x01\x01\x11\x15a)2W__\xFD[` \x91\x90\x91\x01\x95\x90\x94P\x92PPPV[_\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01_[\x82\x81\x10\x15a'\xD7W\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a)TV[`@\x81R_a)\x8D`@\x83\x01\x85a)BV[\x82\x81\x03` \x84\x01Ra)\x9F\x81\x85a'\xA7V[\x95\x94PPPPPV[______`\xC0\x87\x89\x03\x12\x15a)\xBDW__\xFD[\x865a)\xC8\x81a%\xF8V[\x95P` \x87\x015a)\xD8\x81a%\xF8V[\x94P`@\x87\x015a)\xE8\x81a%\xF8V[\x95\x98\x94\x97P\x94\x95``\x81\x015\x95P`\x80\x81\x015\x94`\xA0\x90\x91\x015\x93P\x91PPV[__`@\x83\x85\x03\x12\x15a*\x1AW__\xFD[\x825a*%\x81a%\xF8V[\x94` \x93\x90\x93\x015\x93PPPV[` \x81R_a\x0Ea` \x83\x01\x84a)BV[__`@\x83\x85\x03\x12\x15a*VW__\xFD[\x825a*a\x81a%\xF8V[\x91P` \x83\x015a*q\x81a%\xF8V[\x80\x91PP\x92P\x92\x90PV[_` \x82\x84\x03\x12\x15a*\x8CW__\xFD[\x81Q\x80\x15\x15\x81\x14a\x0EaW__\xFD[`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x91\x90\x92\x16` \x82\x01R`@\x81\x01\x91\x90\x91R``\x01\x90V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_` \x82\x84\x03\x12\x15a*\xE3W__\xFD[\x81Qa\x0Ea\x81a%\xF8V[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x19\x0BWa\x19\x0Ba*\xEEV[_` \x82\x84\x03\x12\x15a+%W__\xFD[PQ\x91\x90PV[\x81\x81\x03\x81\x81\x11\x15a\x19\x0BWa\x19\x0Ba*\xEEV[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[cNH{q`\xE0\x1B_R`1`\x04R`$_\xFD[\x82\x81R`@` \x82\x01R_a\x15\xEA`@\x83\x01\x84a(tV[_\x82Qa+\x90\x81\x84` \x87\x01a(RV[\x91\x90\x91\x01\x92\x91PPV\xFE\xA2dipfsX\"\x12 \x07y\x0EJ7N-\xFCyq\xDD\xB4H\x97\x9Dqvy!\x10\xA3\xA56\x97\x07b\x9A\x16?&\x9A\xB9dsolcC\0\x08\x1B\x003",
1068    );
1069    /// The runtime bytecode of the contract, as deployed on the network.
1070    ///
1071    /// ```text
1072    ///0x608060405234801561000f575f5ffd5b5060043610610213575f3560e01c80638b8aac3c1161011f578063debe1eab116100a9578063f3b4a00011610079578063f3b4a0001461052f578063f698da2514610539578063fabc1cbc14610541578063fd98042314610554578063fe243a1714610567575f5ffd5b8063debe1eab146104cf578063df5cf723146104e2578063e7a050aa14610509578063f2fde38b1461051c575f5ffd5b80639ac01d61116100ef5780639ac01d6114610463578063b5d8b5b814610476578063c665670214610489578063cbc2bd621461049c578063de44acb6146104af575f5ffd5b80638b8aac3c146103f65780638da5cb5b1461041e57806394f649dd1461042f578063967fc0d214610450575f5ffd5b8063595c6a67116101a0578063663c1de411610170578063663c1de41461035b578063715018a61461037d578063724af423146103855780637ecebe0014610398578063886f1195146103b7575f5ffd5b8063595c6a67146103055780635ac86ab71461030d5780635c975abb146103405780635de08ff214610348575f5ffd5b806336a8c500116101e657806336a8c5001461027857806348825e941461028e5780634b6d5d6e146102b557806350ff7225146102c857806354fd4d50146102f0575f5ffd5b8063136439dd146102175780631794bb3c1461022c5780632eae418c1461023f57806332e89ace14610252575b5f5ffd5b61022a6102253660046125e1565b610591565b005b61022a61023a36600461260c565b610666565b61022a61024d36600461264a565b61078c565b6102656102603660046126ac565b610844565b6040519081526020015b60405180910390f35b6102806108e8565b60405161026f9291906127e1565b6102657f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61022a6102c3366004612837565b610a05565b6102db6102d636600461260c565b610b3e565b6040805192835260208301919091520161026f565b6102f8610bb2565b60405161026f919061289f565b61022a610be2565b61033061031b3660046128b1565b609854600160ff9092169190911b9081161490565b604051901515815260200161026f565b609854610265565b61022a6103563660046128d1565b610c91565b610330610369366004612837565b60d16020525f908152604090205460ff1681565b61022a610de4565b61026561039336600461260c565b610df5565b6102656103a6366004612837565b60ca6020525f908152604090205481565b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161026f565b610265610404366004612837565b6001600160a01b03165f90815260ce602052604090205490565b6033546001600160a01b03166103de565b61044261043d366004612837565b610e68565b60405161026f92919061297b565b60cb546103de906001600160a01b031681565b6102656104713660046129a8565b610fe0565b61022a6104843660046128d1565b611071565b61022a610497366004612837565b6111b8565b6103de6104aa366004612a09565b6111db565b6104c26104bd366004612837565b61120f565b60405161026f9190612a33565b61022a6104dd366004612a09565b611282565b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b61026561051736600461260c565b611346565b61022a61052a366004612837565b611398565b6103de620e16e481565b61026561140e565b61022a61054f3660046125e1565b6114c7565b610265610562366004612837565b6115dd565b610265610575366004612a45565b60cd60209081525f928352604080842090915290825290205481565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156105f3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106179190612a7c565b61063457604051631d77d47760e21b815260040160405180910390fd5b60985481811681146106595760405163c61dca5d60e01b815260040160405180910390fd5b610662826115f2565b5050565b5f54610100900460ff161580801561068457505f54600160ff909116105b8061069d5750303b15801561069d57505f5460ff166001145b6107055760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610726575f805461ff0019166101001790555b61072f826115f2565b6107388461162f565b61074183611680565b8015610786575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107d55760405163f739589b60e01b815260040160405180910390fd5b6107dd6116e9565b604051636ce5768960e11b81526001600160a01b0384169063d9caed129061080d90879086908690600401612a9b565b5f604051808303815f87803b158015610824575f5ffd5b505af1158015610836573d5f5f3e3d5ffd5b505050506107866001606555565b6098545f90819060019081160361086e5760405163840a48d560e01b815260040160405180910390fd5b6108766116e9565b6001600160a01b0385165f90815260ca60205260409020546108a7866108a0818c8c8c878c610fe0565b8688611742565b6001600160a01b0386165f90815260ca602052604090206001820190556108d0868a8a8a611794565b9250506108dd6001606555565b509695505050505050565b6060805f6108f660d4611901565b90505f8167ffffffffffffffff81111561091257610912612698565b60405190808252806020026020018201604052801561093b578160200160208202803683370190505b5090505f8267ffffffffffffffff81111561095857610958612698565b604051908082528060200260200182016040528015610981578160200160208202803683370190505b5090505f5b838110156109fa575f5f61099b60d484611911565b91509150818584815181106109b2576109b2612abf565b60200260200101906001600160a01b031690816001600160a01b031681525050808484815181106109e5576109e5612abf565b60209081029190910101525050600101610986565b509094909350915050565b610a0d6116e9565b5f610a1960d48361192e565b915050610a2760d483611945565b50604080516001600160a01b0384168152602081018390527fd9d082c3ec4f3a3ffa55c324939a06407f5fbcb87d5e0ce3b9508c92c84ed839910160405180910390a18015610b3057816001600160a01b031663d9caed12620e16e4846001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa158015610abf573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae39190612ad3565b846040518463ffffffff1660e01b8152600401610b0293929190612a9b565b5f604051808303815f87803b158015610b19575f5ffd5b505af1158015610b2b573d5f5f3e3d5ffd5b505050505b50610b3b6001606555565b50565b5f80336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b895760405163f739589b60e01b815260040160405180910390fd5b610b916116e9565b610b9c858585611959565b91509150610baa6001606555565b935093915050565b6060610bdd7f0000000000000000000000000000000000000000000000000000000000000000611ac1565b905090565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610c44573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c689190612a7c565b610c8557604051631d77d47760e21b815260040160405180910390fd5b610c8f5f196115f2565b565b60cb546001600160a01b03163314610cbc576040516320ba3ff960e21b815260040160405180910390fd5b610cc46116e9565b805f5b81811015610dd85760d15f858584818110610ce457610ce4612abf565b9050602002016020810190610cf99190612837565b6001600160a01b0316815260208101919091526040015f205460ff16610dd057600160d15f868685818110610d3057610d30612abf565b9050602002016020810190610d459190612837565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe848483818110610d9f57610d9f612abf565b9050602002016020810190610db49190612837565b6040516001600160a01b03909116815260200160405180910390a15b600101610cc7565b50506106626001606555565b610dec611afe565b610c8f5f61162f565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610e3f5760405163f739589b60e01b815260040160405180910390fd5b610e476116e9565b5f610e53858585611b58565b92505050610e616001606555565b9392505050565b6001600160a01b0381165f90815260ce60205260408120546060918291908167ffffffffffffffff811115610e9f57610e9f612698565b604051908082528060200260200182016040528015610ec8578160200160208202803683370190505b5090505f5b82811015610f56576001600160a01b0386165f90815260cd6020908152604080832060ce9092528220805491929184908110610f0b57610f0b612abf565b5f9182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610f4357610f43612abf565b6020908102919091010152600101610ecd565b5060ce5f866001600160a01b03166001600160a01b031681526020019081526020015f208181805480602002602001604051908101604052809291908181526020018280548015610fce57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610fb0575b50505050509150935093505050915091565b604080517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922460208201526001600160a01b03808916928201929092528187166060820152908516608082015260a0810184905260c0810183905260e081018290525f90611066906101000160405160208183030381529060405280519060200120611c1e565b979650505050505050565b60cb546001600160a01b0316331461109c576040516320ba3ff960e21b815260040160405180910390fd5b6110a46116e9565b805f5b81811015610dd85760d15f8585848181106110c4576110c4612abf565b90506020020160208101906110d99190612837565b6001600160a01b0316815260208101919091526040015f205460ff16156111b0575f60d15f86868581811061111057611110612abf565b90506020020160208101906111259190612837565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba03084848381811061117f5761117f612abf565b90506020020160208101906111949190612837565b6040516001600160a01b03909116815260200160405180910390a15b6001016110a7565b6111c0611afe565b6111c86116e9565b6111d181611680565b610b3b6001606555565b60ce602052815f5260405f2081815481106111f4575f80fd5b5f918252602090912001546001600160a01b03169150829050565b6001600160a01b0381165f90815260ce602090815260409182902080548351818402810184019094528084526060939283018282801561127657602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611258575b50505050509050919050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146112cb5760405163f739589b60e01b815260040160405180910390fd5b6112d36116e9565b5f6112df60d48461192e565b91506112f8905060d4846112f38585612b02565b611c64565b50604080516001600160a01b0385168152602081018490527fca3e02a4ab7ad3c47a8e36e5a624c30170791726ab720f1babfef21046d953ff910160405180910390a1506106626001606555565b6098545f9081906001908116036113705760405163840a48d560e01b815260040160405180910390fd5b6113786116e9565b61138433868686611794565b91506113906001606555565b509392505050565b6113a0611afe565b6001600160a01b0381166114055760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106fc565b610b3b8161162f565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea61147b611c79565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611523573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115479190612ad3565b6001600160a01b0316336001600160a01b0316146115785760405163794821ff60e01b815260040160405180910390fd5b6098548019821981161461159f5760405163c61dca5d60e01b815260040160405180910390fd5b609882905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f5f6115ea60d48461192e565b949350505050565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b60026065540361173b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106fc565b6002606555565b4281101561176357604051630819bdcd60e01b815260040160405180910390fd5b6117776001600160a01b0385168484611d15565b61078657604051638baa579f60e01b815260040160405180910390fd5b6001600160a01b0383165f90815260d16020526040812054849060ff166117ce57604051632efd965160e11b815260040160405180910390fd5b6117e36001600160a01b038516338786611d73565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303815f875af115801561182f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118539190612b15565b91505f5f611862888886611959565b604051631e328e7960e11b81526001600160a01b038b811660048301528a8116602483015260448201849052606482018390529294509092507f000000000000000000000000000000000000000000000000000000000000000090911690633c651cf2906084015f604051808303815f87803b1580156118e0575f5ffd5b505af11580156118f2573d5f5f3e3d5ffd5b50505050505050949350505050565b5f61190b82611dcb565b92915050565b5f80808061191f8686611dd5565b909450925050505b9250929050565b5f80808061191f866001600160a01b038716611dfe565b5f610e61836001600160a01b038416611e36565b5f806001600160a01b038516611982576040516316f2ccc960e01b815260040160405180910390fd5b825f036119a2576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038086165f90815260cd6020908152604080832093881683529290529081205490819003611a48576001600160a01b0386165f90815260ce602090815260409091205410611a0a576040516301a1443960e31b815260040160405180910390fd5b6001600160a01b038681165f90815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169187169190911790555b611a528482612b02565b6001600160a01b038088165f90815260cd60209081526040808320938a16835292905281902091909155517f5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f6290611aae90889088908890612a9b565b60405180910390a1959294509192505050565b60605f611acd83611e52565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6033546001600160a01b03163314610c8f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106fc565b5f5f825f03611b7a576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038086165f90815260cd602090815260408083209388168352929052205480841115611bc057604051634b18b19360e01b815260040160405180910390fd5b611bca8482612b2c565b6001600160a01b038088165f90815260cd60209081526040808320938a168352929052908120829055909150819003611c1257611c078686611e79565b600192509050610baa565b5f969095509350505050565b5f611c2761140e565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b5f6115ea846001600160a01b03851684611ff7565b60605f611ca57f0000000000000000000000000000000000000000000000000000000000000000611ac1565b9050805f81518110611cb957611cb9612abf565b602001015160f81c60f81b81600181518110611cd757611cd7612abf565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b5f5f5f611d228585612013565b90925090505f816004811115611d3a57611d3a612b3f565b148015611d585750856001600160a01b0316826001600160a01b0316145b80611d695750611d69868686612052565b9695505050505050565b610786846323b872dd60e01b858585604051602401611d9493929190612a9b565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612139565b5f61190b82612211565b5f8080611de2858561221a565b5f81815260029690960160205260409095205494959350505050565b5f818152600283016020526040812054819080611e2b57611e1f8585612225565b92505f91506119279050565b600192509050611927565b5f8181526002830160205260408120819055610e618383612230565b5f60ff8216601f81111561190b57604051632cd44ac360e21b815260040160405180910390fd5b6001600160a01b0382165f90815260ce6020526040812054905b81811015611f8b576001600160a01b038481165f90815260ce6020526040902080549185169183908110611ec957611ec9612abf565b5f918252602090912001546001600160a01b031603611f83576001600160a01b0384165f90815260ce602052604090208054611f0790600190612b2c565b81548110611f1757611f17612abf565b5f9182526020808320909101546001600160a01b03878116845260ce9092526040909220805491909216919083908110611f5357611f53612abf565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550611f8b565b600101611e93565b818103611fab57604051632df15a4160e11b815260040160405180910390fd5b6001600160a01b0384165f90815260ce60205260409020805480611fd157611fd1612b53565b5f8281526020902081015f1990810180546001600160a01b031916905501905550505050565b5f82815260028401602052604081208290556115ea848461223b565b5f5f8251604103612047576020830151604084015160608501515f1a61203b87828585612246565b94509450505050611927565b505f90506002611927565b5f5f5f856001600160a01b0316631626ba7e60e01b868660405160240161207a929190612b67565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516120b89190612b7f565b5f60405180830381855afa9150503d805f81146120f0576040519150601f19603f3d011682016040523d82523d5f602084013e6120f5565b606091505b509150915081801561210957506020815110155b8015611d6957508051630b135d3f60e11b9061212e9083016020908101908401612b15565b149695505050505050565b5f61218d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166123039092919063ffffffff16565b905080515f14806121ad5750808060200190518101906121ad9190612a7c565b61220c5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106fc565b505050565b5f61190b825490565b5f610e618383612311565b5f610e618383612337565b5f610e61838361234e565b5f610e618383612431565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561227b57505f905060036122fa565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156122cc573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b0381166122f4575f600192509250506122fa565b91505f90505b94509492505050565b60606115ea84845f8561247d565b5f825f01828154811061232657612326612abf565b905f5260205f200154905092915050565b5f8181526001830160205260408120541515610e61565b5f8181526001830160205260408120548015612428575f612370600183612b2c565b85549091505f9061238390600190612b2c565b90508181146123e2575f865f0182815481106123a1576123a1612abf565b905f5260205f200154905080875f0184815481106123c1576123c1612abf565b5f918252602080832090910192909255918252600188019052604090208390555b85548690806123f3576123f3612b53565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061190b565b5f91505061190b565b5f81815260018301602052604081205461247657508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561190b565b505f61190b565b6060824710156124de5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106fc565b5f5f866001600160a01b031685876040516124f99190612b7f565b5f6040518083038185875af1925050503d805f8114612533576040519150601f19603f3d011682016040523d82523d5f602084013e612538565b606091505b509150915061106687838387606083156125b25782515f036125ab576001600160a01b0385163b6125ab5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106fc565b50816115ea565b6115ea83838151156125c75781518083602001fd5b8060405162461bcd60e51b81526004016106fc919061289f565b5f602082840312156125f1575f5ffd5b5035919050565b6001600160a01b0381168114610b3b575f5ffd5b5f5f5f6060848603121561261e575f5ffd5b8335612629816125f8565b92506020840135612639816125f8565b929592945050506040919091013590565b5f5f5f5f6080858703121561265d575f5ffd5b8435612668816125f8565b93506020850135612678816125f8565b92506040850135612688816125f8565b9396929550929360600135925050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f5f60c087890312156126c1575f5ffd5b86356126cc816125f8565b955060208701356126dc816125f8565b94506040870135935060608701356126f3816125f8565b92506080870135915060a087013567ffffffffffffffff811115612715575f5ffd5b8701601f81018913612725575f5ffd5b803567ffffffffffffffff81111561273f5761273f612698565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561276e5761276e612698565b6040528181528282016020018b1015612785575f5ffd5b816020840160208301375f602083830101528093505050509295509295509295565b5f8151808452602084019350602083015f5b828110156127d75781518652602095860195909101906001016127b9565b5093949350505050565b604080825283519082018190525f9060208501906060840190835b818110156128235783516001600160a01b03168352602093840193909201916001016127fc565b50508381036020850152611d6981866127a7565b5f60208284031215612847575f5ffd5b8135610e61816125f8565b5f5b8381101561286c578181015183820152602001612854565b50505f910152565b5f815180845261288b816020860160208601612852565b601f01601f19169290920160200192915050565b602081525f610e616020830184612874565b5f602082840312156128c1575f5ffd5b813560ff81168114610e61575f5ffd5b5f5f602083850312156128e2575f5ffd5b823567ffffffffffffffff8111156128f8575f5ffd5b8301601f81018513612908575f5ffd5b803567ffffffffffffffff81111561291e575f5ffd5b8560208260051b8401011115612932575f5ffd5b6020919091019590945092505050565b5f8151808452602084019350602083015f5b828110156127d75781516001600160a01b0316865260209586019590910190600101612954565b604081525f61298d6040830185612942565b828103602084015261299f81856127a7565b95945050505050565b5f5f5f5f5f5f60c087890312156129bd575f5ffd5b86356129c8816125f8565b955060208701356129d8816125f8565b945060408701356129e8816125f8565b959894975094956060810135955060808101359460a0909101359350915050565b5f5f60408385031215612a1a575f5ffd5b8235612a25816125f8565b946020939093013593505050565b602081525f610e616020830184612942565b5f5f60408385031215612a56575f5ffd5b8235612a61816125f8565b91506020830135612a71816125f8565b809150509250929050565b5f60208284031215612a8c575f5ffd5b81518015158114610e61575f5ffd5b6001600160a01b039384168152919092166020820152604081019190915260600190565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612ae3575f5ffd5b8151610e61816125f8565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561190b5761190b612aee565b5f60208284031215612b25575f5ffd5b5051919050565b8181038181111561190b5761190b612aee565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f6115ea6040830184612874565b5f8251612b90818460208701612852565b919091019291505056fea264697066735822122007790e4a374e2dfc7971ddb448979d7176792110a3a5369707629a163f269ab964736f6c634300081b0033
1073    /// ```
1074    #[rustfmt::skip]
1075    #[allow(clippy::all)]
1076    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
1077        b"`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\x02\x13W_5`\xE0\x1C\x80c\x8B\x8A\xAC<\x11a\x01\x1FW\x80c\xDE\xBE\x1E\xAB\x11a\0\xA9W\x80c\xF3\xB4\xA0\0\x11a\0yW\x80c\xF3\xB4\xA0\0\x14a\x05/W\x80c\xF6\x98\xDA%\x14a\x059W\x80c\xFA\xBC\x1C\xBC\x14a\x05AW\x80c\xFD\x98\x04#\x14a\x05TW\x80c\xFE$:\x17\x14a\x05gW__\xFD[\x80c\xDE\xBE\x1E\xAB\x14a\x04\xCFW\x80c\xDF\\\xF7#\x14a\x04\xE2W\x80c\xE7\xA0P\xAA\x14a\x05\tW\x80c\xF2\xFD\xE3\x8B\x14a\x05\x1CW__\xFD[\x80c\x9A\xC0\x1Da\x11a\0\xEFW\x80c\x9A\xC0\x1Da\x14a\x04cW\x80c\xB5\xD8\xB5\xB8\x14a\x04vW\x80c\xC6eg\x02\x14a\x04\x89W\x80c\xCB\xC2\xBDb\x14a\x04\x9CW\x80c\xDED\xAC\xB6\x14a\x04\xAFW__\xFD[\x80c\x8B\x8A\xAC<\x14a\x03\xF6W\x80c\x8D\xA5\xCB[\x14a\x04\x1EW\x80c\x94\xF6I\xDD\x14a\x04/W\x80c\x96\x7F\xC0\xD2\x14a\x04PW__\xFD[\x80cY\\jg\x11a\x01\xA0W\x80cf<\x1D\xE4\x11a\x01pW\x80cf<\x1D\xE4\x14a\x03[W\x80cqP\x18\xA6\x14a\x03}W\x80crJ\xF4#\x14a\x03\x85W\x80c~\xCE\xBE\0\x14a\x03\x98W\x80c\x88o\x11\x95\x14a\x03\xB7W__\xFD[\x80cY\\jg\x14a\x03\x05W\x80cZ\xC8j\xB7\x14a\x03\rW\x80c\\\x97Z\xBB\x14a\x03@W\x80c]\xE0\x8F\xF2\x14a\x03HW__\xFD[\x80c6\xA8\xC5\0\x11a\x01\xE6W\x80c6\xA8\xC5\0\x14a\x02xW\x80cH\x82^\x94\x14a\x02\x8EW\x80cKm]n\x14a\x02\xB5W\x80cP\xFFr%\x14a\x02\xC8W\x80cT\xFDMP\x14a\x02\xF0W__\xFD[\x80c\x13d9\xDD\x14a\x02\x17W\x80c\x17\x94\xBB<\x14a\x02,W\x80c.\xAEA\x8C\x14a\x02?W\x80c2\xE8\x9A\xCE\x14a\x02RW[__\xFD[a\x02*a\x02%6`\x04a%\xE1V[a\x05\x91V[\0[a\x02*a\x02:6`\x04a&\x0CV[a\x06fV[a\x02*a\x02M6`\x04a&JV[a\x07\x8CV[a\x02ea\x02`6`\x04a&\xACV[a\x08DV[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x02\x80a\x08\xE8V[`@Qa\x02o\x92\x91\x90a'\xE1V[a\x02e\x7FC7\xF8-\x14.A\xF2\xA8\xC1\x05G\xCD\x8C\x85\x9B\xDD\xB9\"b\xA6\x10X\xE7xB\xE2M\x9D\xEA\x92$\x81V[a\x02*a\x02\xC36`\x04a(7V[a\n\x05V[a\x02\xDBa\x02\xD66`\x04a&\x0CV[a\x0B>V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x02oV[a\x02\xF8a\x0B\xB2V[`@Qa\x02o\x91\x90a(\x9FV[a\x02*a\x0B\xE2V[a\x030a\x03\x1B6`\x04a(\xB1V[`\x98T`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`@Q\x90\x15\x15\x81R` \x01a\x02oV[`\x98Ta\x02eV[a\x02*a\x03V6`\x04a(\xD1V[a\x0C\x91V[a\x030a\x03i6`\x04a(7V[`\xD1` R_\x90\x81R`@\x90 T`\xFF\x16\x81V[a\x02*a\r\xE4V[a\x02ea\x03\x936`\x04a&\x0CV[a\r\xF5V[a\x02ea\x03\xA66`\x04a(7V[`\xCA` R_\x90\x81R`@\x90 T\x81V[a\x03\xDE\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02oV[a\x02ea\x04\x046`\x04a(7V[`\x01`\x01`\xA0\x1B\x03\x16_\x90\x81R`\xCE` R`@\x90 T\x90V[`3T`\x01`\x01`\xA0\x1B\x03\x16a\x03\xDEV[a\x04Ba\x04=6`\x04a(7V[a\x0EhV[`@Qa\x02o\x92\x91\x90a){V[`\xCBTa\x03\xDE\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x02ea\x04q6`\x04a)\xA8V[a\x0F\xE0V[a\x02*a\x04\x846`\x04a(\xD1V[a\x10qV[a\x02*a\x04\x976`\x04a(7V[a\x11\xB8V[a\x03\xDEa\x04\xAA6`\x04a*\tV[a\x11\xDBV[a\x04\xC2a\x04\xBD6`\x04a(7V[a\x12\x0FV[`@Qa\x02o\x91\x90a*3V[a\x02*a\x04\xDD6`\x04a*\tV[a\x12\x82V[a\x03\xDE\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\x02ea\x05\x176`\x04a&\x0CV[a\x13FV[a\x02*a\x05*6`\x04a(7V[a\x13\x98V[a\x03\xDEb\x0E\x16\xE4\x81V[a\x02ea\x14\x0EV[a\x02*a\x05O6`\x04a%\xE1V[a\x14\xC7V[a\x02ea\x05b6`\x04a(7V[a\x15\xDDV[a\x02ea\x05u6`\x04a*EV[`\xCD` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[`@Qc#}\xFBG`\xE1\x1B\x81R3`\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\x90cF\xFB\xF6\x8E\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05\xF3W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\x17\x91\x90a*|V[a\x064W`@Qc\x1Dw\xD4w`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x98T\x81\x81\x16\x81\x14a\x06YW`@Qc\xC6\x1D\xCA]`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x06b\x82a\x15\xF2V[PPV[_Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x06\x84WP_T`\x01`\xFF\x90\x91\x16\x10[\x80a\x06\x9DWP0;\x15\x80\x15a\x06\x9DWP_T`\xFF\x16`\x01\x14[a\x07\x05W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`.`$\x82\x01R\x7FInitializable: contract is alrea`D\x82\x01Rm\x19\x1EH\x1A[\x9A]\x1AX[\x1A^\x99Y`\x92\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[_\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x07&W_\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x07/\x82a\x15\xF2V[a\x078\x84a\x16/V[a\x07A\x83a\x16\x80V[\x80\x15a\x07\x86W_\x80Ta\xFF\0\x19\x16\x90U`@Q`\x01\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPV[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\x07\xD5W`@Qc\xF79X\x9B`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x07\xDDa\x16\xE9V[`@Qcl\xE5v\x89`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x16\x90c\xD9\xCA\xED\x12\x90a\x08\r\x90\x87\x90\x86\x90\x86\x90`\x04\x01a*\x9BV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x08$W__\xFD[PZ\xF1\x15\x80\x15a\x086W=__>=_\xFD[PPPPa\x07\x86`\x01`eUV[`\x98T_\x90\x81\x90`\x01\x90\x81\x16\x03a\x08nW`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x08va\x16\xE9V[`\x01`\x01`\xA0\x1B\x03\x85\x16_\x90\x81R`\xCA` R`@\x90 Ta\x08\xA7\x86a\x08\xA0\x81\x8C\x8C\x8C\x87\x8Ca\x0F\xE0V[\x86\x88a\x17BV[`\x01`\x01`\xA0\x1B\x03\x86\x16_\x90\x81R`\xCA` R`@\x90 `\x01\x82\x01\x90Ua\x08\xD0\x86\x8A\x8A\x8Aa\x17\x94V[\x92PPa\x08\xDD`\x01`eUV[P\x96\x95PPPPPPV[``\x80_a\x08\xF6`\xD4a\x19\x01V[\x90P_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\t\x12Wa\t\x12a&\x98V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\t;W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_\x82g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\tXWa\tXa&\x98V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\t\x81W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x83\x81\x10\x15a\t\xFAW__a\t\x9B`\xD4\x84a\x19\x11V[\x91P\x91P\x81\x85\x84\x81Q\x81\x10a\t\xB2Wa\t\xB2a*\xBFV[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x80\x84\x84\x81Q\x81\x10a\t\xE5Wa\t\xE5a*\xBFV[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\t\x86V[P\x90\x94\x90\x93P\x91PPV[a\n\ra\x16\xE9V[_a\n\x19`\xD4\x83a\x19.V[\x91PPa\n'`\xD4\x83a\x19EV[P`@\x80Q`\x01`\x01`\xA0\x1B\x03\x84\x16\x81R` \x81\x01\x83\x90R\x7F\xD9\xD0\x82\xC3\xECO:?\xFAU\xC3$\x93\x9A\x06@\x7F_\xBC\xB8}^\x0C\xE3\xB9P\x8C\x92\xC8N\xD89\x91\x01`@Q\x80\x91\x03\x90\xA1\x80\x15a\x0B0W\x81`\x01`\x01`\xA0\x1B\x03\x16c\xD9\xCA\xED\x12b\x0E\x16\xE4\x84`\x01`\x01`\xA0\x1B\x03\x16c$\x95\xA5\x99`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\n\xBFW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xE3\x91\x90a*\xD3V[\x84`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0B\x02\x93\x92\x91\x90a*\x9BV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x0B\x19W__\xFD[PZ\xF1\x15\x80\x15a\x0B+W=__>=_\xFD[PPPP[Pa\x0B;`\x01`eUV[PV[_\x803`\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\x0B\x89W`@Qc\xF79X\x9B`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0B\x91a\x16\xE9V[a\x0B\x9C\x85\x85\x85a\x19YV[\x91P\x91Pa\x0B\xAA`\x01`eUV[\x93P\x93\x91PPV[``a\x0B\xDD\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\x1A\xC1V[\x90P\x90V[`@Qc#}\xFBG`\xE1\x1B\x81R3`\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\x90cF\xFB\xF6\x8E\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0CDW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0Ch\x91\x90a*|V[a\x0C\x85W`@Qc\x1Dw\xD4w`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0C\x8F_\x19a\x15\xF2V[V[`\xCBT`\x01`\x01`\xA0\x1B\x03\x163\x14a\x0C\xBCW`@Qc \xBA?\xF9`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0C\xC4a\x16\xE9V[\x80_[\x81\x81\x10\x15a\r\xD8W`\xD1_\x85\x85\x84\x81\x81\x10a\x0C\xE4Wa\x0C\xE4a*\xBFV[\x90P` \x02\x01` \x81\x01\x90a\x0C\xF9\x91\x90a(7V[`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x81\x01\x91\x90\x91R`@\x01_ T`\xFF\x16a\r\xD0W`\x01`\xD1_\x86\x86\x85\x81\x81\x10a\r0Wa\r0a*\xBFV[\x90P` \x02\x01` \x81\x01\x90a\rE\x91\x90a(7V[`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x81\x01\x91\x90\x91R`@\x01_ \x80T`\xFF\x19\x16\x91\x15\x15\x91\x90\x91\x17\x90U\x7F\x0C5\xB1}\x91\xC9n\xB2u\x1C\xD4V\xE1%/B\xA3\x86\xE5$\xEF\x9F\xF2n\xCC\x99P\x85\x9F\xDC\x04\xFE\x84\x84\x83\x81\x81\x10a\r\x9FWa\r\x9Fa*\xBFV[\x90P` \x02\x01` \x81\x01\x90a\r\xB4\x91\x90a(7V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1[`\x01\x01a\x0C\xC7V[PPa\x06b`\x01`eUV[a\r\xECa\x1A\xFEV[a\x0C\x8F_a\x16/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?W`@Qc\xF79X\x9B`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0EGa\x16\xE9V[_a\x0ES\x85\x85\x85a\x1BXV[\x92PPPa\x0Ea`\x01`eUV[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\xCE` R`@\x81 T``\x91\x82\x91\x90\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\x9FWa\x0E\x9Fa&\x98V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0E\xC8W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x82\x81\x10\x15a\x0FVW`\x01`\x01`\xA0\x1B\x03\x86\x16_\x90\x81R`\xCD` \x90\x81R`@\x80\x83 `\xCE\x90\x92R\x82 \x80T\x91\x92\x91\x84\x90\x81\x10a\x0F\x0BWa\x0F\x0Ba*\xBFV[_\x91\x82R` \x80\x83 \x90\x91\x01T`\x01`\x01`\xA0\x1B\x03\x16\x83R\x82\x01\x92\x90\x92R`@\x01\x90 T\x82Q\x83\x90\x83\x90\x81\x10a\x0FCWa\x0FCa*\xBFV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x0E\xCDV[P`\xCE_\x86`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01_ \x81\x81\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x0F\xCEW` \x02\x82\x01\x91\x90_R` _ \x90[\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x0F\xB0W[PPPPP\x91P\x93P\x93PPP\x91P\x91V[`@\x80Q\x7FC7\xF8-\x14.A\xF2\xA8\xC1\x05G\xCD\x8C\x85\x9B\xDD\xB9\"b\xA6\x10X\xE7xB\xE2M\x9D\xEA\x92$` \x82\x01R`\x01`\x01`\xA0\x1B\x03\x80\x89\x16\x92\x82\x01\x92\x90\x92R\x81\x87\x16``\x82\x01R\x90\x85\x16`\x80\x82\x01R`\xA0\x81\x01\x84\x90R`\xC0\x81\x01\x83\x90R`\xE0\x81\x01\x82\x90R_\x90a\x10f\x90a\x01\0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x1C\x1EV[\x97\x96PPPPPPPV[`\xCBT`\x01`\x01`\xA0\x1B\x03\x163\x14a\x10\x9CW`@Qc \xBA?\xF9`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x10\xA4a\x16\xE9V[\x80_[\x81\x81\x10\x15a\r\xD8W`\xD1_\x85\x85\x84\x81\x81\x10a\x10\xC4Wa\x10\xC4a*\xBFV[\x90P` \x02\x01` \x81\x01\x90a\x10\xD9\x91\x90a(7V[`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x81\x01\x91\x90\x91R`@\x01_ T`\xFF\x16\x15a\x11\xB0W_`\xD1_\x86\x86\x85\x81\x81\x10a\x11\x10Wa\x11\x10a*\xBFV[\x90P` \x02\x01` \x81\x01\x90a\x11%\x91\x90a(7V[`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x81\x01\x91\x90\x91R`@\x01_ \x80T`\xFF\x19\x16\x91\x15\x15\x91\x90\x91\x17\x90U\x7F@tA;KD>NX\x01\x9F(U\xA8vQ\x135\x8C|r\xE3\x95\t\xC6\xAFE\xFC\x0F[\xA00\x84\x84\x83\x81\x81\x10a\x11\x7FWa\x11\x7Fa*\xBFV[\x90P` \x02\x01` \x81\x01\x90a\x11\x94\x91\x90a(7V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1[`\x01\x01a\x10\xA7V[a\x11\xC0a\x1A\xFEV[a\x11\xC8a\x16\xE9V[a\x11\xD1\x81a\x16\x80V[a\x0B;`\x01`eUV[`\xCE` R\x81_R`@_ \x81\x81T\x81\x10a\x11\xF4W_\x80\xFD[_\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x91P\x82\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\xCE` \x90\x81R`@\x91\x82\x90 \x80T\x83Q\x81\x84\x02\x81\x01\x84\x01\x90\x94R\x80\x84R``\x93\x92\x83\x01\x82\x82\x80\x15a\x12vW` \x02\x82\x01\x91\x90_R` _ \x90[\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x12XW[PPPPP\x90P\x91\x90PV[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\x12\xCBW`@Qc\xF79X\x9B`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x12\xD3a\x16\xE9V[_a\x12\xDF`\xD4\x84a\x19.V[\x91Pa\x12\xF8\x90P`\xD4\x84a\x12\xF3\x85\x85a+\x02V[a\x1CdV[P`@\x80Q`\x01`\x01`\xA0\x1B\x03\x85\x16\x81R` \x81\x01\x84\x90R\x7F\xCA>\x02\xA4\xABz\xD3\xC4z\x8E6\xE5\xA6$\xC3\x01py\x17&\xABr\x0F\x1B\xAB\xFE\xF2\x10F\xD9S\xFF\x91\x01`@Q\x80\x91\x03\x90\xA1Pa\x06b`\x01`eUV[`\x98T_\x90\x81\x90`\x01\x90\x81\x16\x03a\x13pW`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x13xa\x16\xE9V[a\x13\x843\x86\x86\x86a\x17\x94V[\x91Pa\x13\x90`\x01`eUV[P\x93\x92PPPV[a\x13\xA0a\x1A\xFEV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x14\x05W`@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\x06\xFCV[a\x0B;\x81a\x16/V[`@\x80Q\x80\x82\x01\x90\x91R`\n\x81Ri\"\xB4\xB3\xB2\xB7&0\xBC\xB2\xB9`\xB1\x1B` \x90\x91\x01R_\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F\x7Fq\xB6%\xCF\xADD\xBA\xC6;\x13\xDB\xA0\x7F.\x1D`\x84\xEE\x04\xB6\xF8u!\x01\xEC\xE6\x12mXN\xE6\xEAa\x14{a\x1CyV[\x80Q` \x91\x82\x01 `@\x80Q\x92\x83\x01\x94\x90\x94R\x92\x81\x01\x91\x90\x91R``\x81\x01\x91\x90\x91RF`\x80\x82\x01R0`\xA0\x82\x01R`\xC0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x90V[\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\xEA\xB6mz`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x15#W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15G\x91\x90a*\xD3V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x15xW`@QcyH!\xFF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x98T\x80\x19\x82\x19\x81\x16\x14a\x15\x9FW`@Qc\xC6\x1D\xCA]`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x98\x82\x90U`@Q\x82\x81R3\x90\x7F5\x82\xD1\x82\x8E&\xBFV\xBD\x80\x15\x02\xBC\x02\x1A\xC0\xBC\x8A\xFBW\xC8&\xE4\x98kEY<\x8F\xAD8\x9C\x90` \x01`@Q\x80\x91\x03\x90\xA2PPV[__a\x15\xEA`\xD4\x84a\x19.V[\x94\x93PPPPV[`\x98\x81\x90U`@Q\x81\x81R3\x90\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=\x90` \x01`@Q\x80\x91\x03\x90\xA2PV[`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[`\xCBT`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x83\x16` \x83\x01R\x7FBd'^Y9U\xFF\x9DaF\xA5\x1AE%\xF6\xDD\xAC\xE2\xE8\x1D\xB99\x1A\xBC\xC9\xD1\xCAH\x04})\x91\x01`@Q\x80\x91\x03\x90\xA1`\xCB\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\x02`eT\x03a\x17;W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x06\xFCV[`\x02`eUV[B\x81\x10\x15a\x17cW`@Qc\x08\x19\xBD\xCD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x17w`\x01`\x01`\xA0\x1B\x03\x85\x16\x84\x84a\x1D\x15V[a\x07\x86W`@Qc\x8B\xAAW\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x83\x16_\x90\x81R`\xD1` R`@\x81 T\x84\x90`\xFF\x16a\x17\xCEW`@Qc.\xFD\x96Q`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x17\xE3`\x01`\x01`\xA0\x1B\x03\x85\x163\x87\x86a\x1DsV[`@Qc\x11\xF9\xFB\xC9`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x81\x16`\x04\x83\x01R`$\x82\x01\x85\x90R\x86\x16\x90cG\xE7\xEF$\x90`D\x01` `@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\x18/W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x18S\x91\x90a+\x15V[\x91P__a\x18b\x88\x88\x86a\x19YV[`@Qc\x1E2\x8Ey`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x8B\x81\x16`\x04\x83\x01R\x8A\x81\x16`$\x83\x01R`D\x82\x01\x84\x90R`d\x82\x01\x83\x90R\x92\x94P\x90\x92P\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x91\x16\x90c<e\x1C\xF2\x90`\x84\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x18\xE0W__\xFD[PZ\xF1\x15\x80\x15a\x18\xF2W=__>=_\xFD[PPPPPPP\x94\x93PPPPV[_a\x19\x0B\x82a\x1D\xCBV[\x92\x91PPV[_\x80\x80\x80a\x19\x1F\x86\x86a\x1D\xD5V[\x90\x94P\x92PPP[\x92P\x92\x90PV[_\x80\x80\x80a\x19\x1F\x86`\x01`\x01`\xA0\x1B\x03\x87\x16a\x1D\xFEV[_a\x0Ea\x83`\x01`\x01`\xA0\x1B\x03\x84\x16a\x1E6V[_\x80`\x01`\x01`\xA0\x1B\x03\x85\x16a\x19\x82W`@Qc\x16\xF2\xCC\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82_\x03a\x19\xA2W`@QcB\x06\x1B%`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x86\x16_\x90\x81R`\xCD` \x90\x81R`@\x80\x83 \x93\x88\x16\x83R\x92\x90R\x90\x81 T\x90\x81\x90\x03a\x1AHW`\x01`\x01`\xA0\x1B\x03\x86\x16_\x90\x81R`\xCE` \x90\x81R`@\x90\x91 T\x10a\x1A\nW`@Qc\x01\xA1D9`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x86\x81\x16_\x90\x81R`\xCE` \x90\x81R`@\x82 \x80T`\x01\x81\x01\x82U\x90\x83R\x91 \x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x91\x87\x16\x91\x90\x91\x17\x90U[a\x1AR\x84\x82a+\x02V[`\x01`\x01`\xA0\x1B\x03\x80\x88\x16_\x90\x81R`\xCD` \x90\x81R`@\x80\x83 \x93\x8A\x16\x83R\x92\x90R\x81\x90 \x91\x90\x91UQ\x7FUH\xC87\xAB\x06\x8C\xF5j,$y\xDF\x08\x82\xA4\x92/\xD2\x03\xED\xB7Qs!\x83\x1D\x95\x07\x8C_b\x90a\x1A\xAE\x90\x88\x90\x88\x90\x88\x90a*\x9BV[`@Q\x80\x91\x03\x90\xA1\x95\x92\x94P\x91\x92PPPV[``_a\x1A\xCD\x83a\x1ERV[`@\x80Q` \x80\x82R\x81\x83\x01\x90\x92R\x91\x92P_\x91\x90` \x82\x01\x81\x806\x837PPP\x91\x82RP` \x81\x01\x92\x90\x92RP\x90V[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x0C\x8FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x06\xFCV[__\x82_\x03a\x1BzW`@QcB\x06\x1B%`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x86\x16_\x90\x81R`\xCD` \x90\x81R`@\x80\x83 \x93\x88\x16\x83R\x92\x90R T\x80\x84\x11\x15a\x1B\xC0W`@QcK\x18\xB1\x93`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1B\xCA\x84\x82a+,V[`\x01`\x01`\xA0\x1B\x03\x80\x88\x16_\x90\x81R`\xCD` \x90\x81R`@\x80\x83 \x93\x8A\x16\x83R\x92\x90R\x90\x81 \x82\x90U\x90\x91P\x81\x90\x03a\x1C\x12Wa\x1C\x07\x86\x86a\x1EyV[`\x01\x92P\x90Pa\x0B\xAAV[_\x96\x90\x95P\x93PPPPV[_a\x1C'a\x14\x0EV[`@Qa\x19\x01`\xF0\x1B` \x82\x01R`\"\x81\x01\x91\x90\x91R`B\x81\x01\x83\x90R`b\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[_a\x15\xEA\x84`\x01`\x01`\xA0\x1B\x03\x85\x16\x84a\x1F\xF7V[``_a\x1C\xA5\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\x1A\xC1V[\x90P\x80_\x81Q\x81\x10a\x1C\xB9Wa\x1C\xB9a*\xBFV[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x81`\x01\x81Q\x81\x10a\x1C\xD7Wa\x1C\xD7a*\xBFV[\x01` \x90\x81\x01Q`@Q`\x01`\x01`\xF8\x1B\x03\x19\x93\x84\x16\x92\x81\x01\x92\x90\x92R\x91\x90\x91\x16`!\x82\x01R`\"\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91PP\x90V[___a\x1D\"\x85\x85a \x13V[\x90\x92P\x90P_\x81`\x04\x81\x11\x15a\x1D:Wa\x1D:a+?V[\x14\x80\x15a\x1DXWP\x85`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x14[\x80a\x1DiWPa\x1Di\x86\x86\x86a RV[\x96\x95PPPPPPV[a\x07\x86\x84c#\xB8r\xDD`\xE0\x1B\x85\x85\x85`@Q`$\x01a\x1D\x94\x93\x92\x91\x90a*\x9BV[`@\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!9V[_a\x19\x0B\x82a\"\x11V[_\x80\x80a\x1D\xE2\x85\x85a\"\x1AV[_\x81\x81R`\x02\x96\x90\x96\x01` R`@\x90\x95 T\x94\x95\x93PPPPV[_\x81\x81R`\x02\x83\x01` R`@\x81 T\x81\x90\x80a\x1E+Wa\x1E\x1F\x85\x85a\"%V[\x92P_\x91Pa\x19'\x90PV[`\x01\x92P\x90Pa\x19'V[_\x81\x81R`\x02\x83\x01` R`@\x81 \x81\x90Ua\x0Ea\x83\x83a\"0V[_`\xFF\x82\x16`\x1F\x81\x11\x15a\x19\x0BW`@Qc,\xD4J\xC3`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x82\x16_\x90\x81R`\xCE` R`@\x81 T\x90[\x81\x81\x10\x15a\x1F\x8BW`\x01`\x01`\xA0\x1B\x03\x84\x81\x16_\x90\x81R`\xCE` R`@\x90 \x80T\x91\x85\x16\x91\x83\x90\x81\x10a\x1E\xC9Wa\x1E\xC9a*\xBFV[_\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x03a\x1F\x83W`\x01`\x01`\xA0\x1B\x03\x84\x16_\x90\x81R`\xCE` R`@\x90 \x80Ta\x1F\x07\x90`\x01\x90a+,V[\x81T\x81\x10a\x1F\x17Wa\x1F\x17a*\xBFV[_\x91\x82R` \x80\x83 \x90\x91\x01T`\x01`\x01`\xA0\x1B\x03\x87\x81\x16\x84R`\xCE\x90\x92R`@\x90\x92 \x80T\x91\x90\x92\x16\x91\x90\x83\x90\x81\x10a\x1FSWa\x1FSa*\xBFV[\x90_R` _ \x01_a\x01\0\n\x81T\x81`\x01`\x01`\xA0\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`\xA0\x1B\x03\x16\x02\x17\x90UPa\x1F\x8BV[`\x01\x01a\x1E\x93V[\x81\x81\x03a\x1F\xABW`@Qc-\xF1ZA`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x84\x16_\x90\x81R`\xCE` R`@\x90 \x80T\x80a\x1F\xD1Wa\x1F\xD1a+SV[_\x82\x81R` \x90 \x81\x01_\x19\x90\x81\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U\x01\x90UPPPPV[_\x82\x81R`\x02\x84\x01` R`@\x81 \x82\x90Ua\x15\xEA\x84\x84a\";V[__\x82Q`A\x03a GW` \x83\x01Q`@\x84\x01Q``\x85\x01Q_\x1Aa ;\x87\x82\x85\x85a\"FV[\x94P\x94PPPPa\x19'V[P_\x90P`\x02a\x19'V[___\x85`\x01`\x01`\xA0\x1B\x03\x16c\x16&\xBA~`\xE0\x1B\x86\x86`@Q`$\x01a z\x92\x91\x90a+gV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x81R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16`\x01`\x01`\xE0\x1B\x03\x19\x90\x94\x16\x93\x90\x93\x17\x90\x92R\x90Qa \xB8\x91\x90a+\x7FV[_`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80_\x81\x14a \xF0W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a \xF5V[``\x91P[P\x91P\x91P\x81\x80\x15a!\tWP` \x81Q\x10\x15[\x80\x15a\x1DiWP\x80Qc\x0B\x13]?`\xE1\x1B\x90a!.\x90\x83\x01` \x90\x81\x01\x90\x84\x01a+\x15V[\x14\x96\x95PPPPPPV[_a!\x8D\x82`@Q\x80`@\x01`@R\x80` \x81R` \x01\x7FSafeERC20: low-level call failed\x81RP\x85`\x01`\x01`\xA0\x1B\x03\x16a#\x03\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x90P\x80Q_\x14\x80a!\xADWP\x80\x80` \x01\x90Q\x81\x01\x90a!\xAD\x91\x90a*|V[a\"\x0CW`@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\x06\xFCV[PPPV[_a\x19\x0B\x82T\x90V[_a\x0Ea\x83\x83a#\x11V[_a\x0Ea\x83\x83a#7V[_a\x0Ea\x83\x83a#NV[_a\x0Ea\x83\x83a$1V[_\x80\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF]WnsW\xA4P\x1D\xDF\xE9/Fh\x1B \xA0\x83\x11\x15a\"{WP_\x90P`\x03a\"\xFAV[`@\x80Q_\x80\x82R` \x82\x01\x80\x84R\x89\x90R`\xFF\x88\x16\x92\x82\x01\x92\x90\x92R``\x81\x01\x86\x90R`\x80\x81\x01\x85\x90R`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a\"\xCCW=__>=_\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16a\"\xF4W_`\x01\x92P\x92PPa\"\xFAV[\x91P_\x90P[\x94P\x94\x92PPPV[``a\x15\xEA\x84\x84_\x85a$}V[_\x82_\x01\x82\x81T\x81\x10a#&Wa#&a*\xBFV[\x90_R` _ \x01T\x90P\x92\x91PPV[_\x81\x81R`\x01\x83\x01` R`@\x81 T\x15\x15a\x0EaV[_\x81\x81R`\x01\x83\x01` R`@\x81 T\x80\x15a$(W_a#p`\x01\x83a+,V[\x85T\x90\x91P_\x90a#\x83\x90`\x01\x90a+,V[\x90P\x81\x81\x14a#\xE2W_\x86_\x01\x82\x81T\x81\x10a#\xA1Wa#\xA1a*\xBFV[\x90_R` _ \x01T\x90P\x80\x87_\x01\x84\x81T\x81\x10a#\xC1Wa#\xC1a*\xBFV[_\x91\x82R` \x80\x83 \x90\x91\x01\x92\x90\x92U\x91\x82R`\x01\x88\x01\x90R`@\x90 \x83\x90U[\x85T\x86\x90\x80a#\xF3Wa#\xF3a+SV[`\x01\x90\x03\x81\x81\x90_R` _ \x01_\x90U\x90U\x85`\x01\x01_\x86\x81R` \x01\x90\x81R` \x01_ _\x90U`\x01\x93PPPPa\x19\x0BV[_\x91PPa\x19\x0BV[_\x81\x81R`\x01\x83\x01` R`@\x81 Ta$vWP\x81T`\x01\x81\x81\x01\x84U_\x84\x81R` \x80\x82 \x90\x93\x01\x84\x90U\x84T\x84\x82R\x82\x86\x01\x90\x93R`@\x90 \x91\x90\x91Ua\x19\x0BV[P_a\x19\x0BV[``\x82G\x10\x15a$\xDEW`@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\x06\xFCV[__\x86`\x01`\x01`\xA0\x1B\x03\x16\x85\x87`@Qa$\xF9\x91\x90a+\x7FV[_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a%3W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a%8V[``\x91P[P\x91P\x91Pa\x10f\x87\x83\x83\x87``\x83\x15a%\xB2W\x82Q_\x03a%\xABW`\x01`\x01`\xA0\x1B\x03\x85\x16;a%\xABW`@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\x06\xFCV[P\x81a\x15\xEAV[a\x15\xEA\x83\x83\x81Q\x15a%\xC7W\x81Q\x80\x83` \x01\xFD[\x80`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xFC\x91\x90a(\x9FV[_` \x82\x84\x03\x12\x15a%\xF1W__\xFD[P5\x91\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x0B;W__\xFD[___``\x84\x86\x03\x12\x15a&\x1EW__\xFD[\x835a&)\x81a%\xF8V[\x92P` \x84\x015a&9\x81a%\xF8V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[____`\x80\x85\x87\x03\x12\x15a&]W__\xFD[\x845a&h\x81a%\xF8V[\x93P` \x85\x015a&x\x81a%\xF8V[\x92P`@\x85\x015a&\x88\x81a%\xF8V[\x93\x96\x92\x95P\x92\x93``\x015\x92PPV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[______`\xC0\x87\x89\x03\x12\x15a&\xC1W__\xFD[\x865a&\xCC\x81a%\xF8V[\x95P` \x87\x015a&\xDC\x81a%\xF8V[\x94P`@\x87\x015\x93P``\x87\x015a&\xF3\x81a%\xF8V[\x92P`\x80\x87\x015\x91P`\xA0\x87\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a'\x15W__\xFD[\x87\x01`\x1F\x81\x01\x89\x13a'%W__\xFD[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a'?Wa'?a&\x98V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'nWa'na&\x98V[`@R\x81\x81R\x82\x82\x01` \x01\x8B\x10\x15a'\x85W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92\x95P\x92\x95P\x92\x95V[_\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01_[\x82\x81\x10\x15a'\xD7W\x81Q\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a'\xB9V[P\x93\x94\x93PPPPV[`@\x80\x82R\x83Q\x90\x82\x01\x81\x90R_\x90` \x85\x01\x90``\x84\x01\x90\x83[\x81\x81\x10\x15a(#W\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a'\xFCV[PP\x83\x81\x03` \x85\x01Ra\x1Di\x81\x86a'\xA7V[_` \x82\x84\x03\x12\x15a(GW__\xFD[\x815a\x0Ea\x81a%\xF8V[_[\x83\x81\x10\x15a(lW\x81\x81\x01Q\x83\x82\x01R` \x01a(TV[PP_\x91\x01RV[_\x81Q\x80\x84Ra(\x8B\x81` \x86\x01` \x86\x01a(RV[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x81R_a\x0Ea` \x83\x01\x84a(tV[_` \x82\x84\x03\x12\x15a(\xC1W__\xFD[\x815`\xFF\x81\x16\x81\x14a\x0EaW__\xFD[__` \x83\x85\x03\x12\x15a(\xE2W__\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a(\xF8W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a)\x08W__\xFD[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a)\x1EW__\xFD[\x85` \x82`\x05\x1B\x84\x01\x01\x11\x15a)2W__\xFD[` \x91\x90\x91\x01\x95\x90\x94P\x92PPPV[_\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01_[\x82\x81\x10\x15a'\xD7W\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a)TV[`@\x81R_a)\x8D`@\x83\x01\x85a)BV[\x82\x81\x03` \x84\x01Ra)\x9F\x81\x85a'\xA7V[\x95\x94PPPPPV[______`\xC0\x87\x89\x03\x12\x15a)\xBDW__\xFD[\x865a)\xC8\x81a%\xF8V[\x95P` \x87\x015a)\xD8\x81a%\xF8V[\x94P`@\x87\x015a)\xE8\x81a%\xF8V[\x95\x98\x94\x97P\x94\x95``\x81\x015\x95P`\x80\x81\x015\x94`\xA0\x90\x91\x015\x93P\x91PPV[__`@\x83\x85\x03\x12\x15a*\x1AW__\xFD[\x825a*%\x81a%\xF8V[\x94` \x93\x90\x93\x015\x93PPPV[` \x81R_a\x0Ea` \x83\x01\x84a)BV[__`@\x83\x85\x03\x12\x15a*VW__\xFD[\x825a*a\x81a%\xF8V[\x91P` \x83\x015a*q\x81a%\xF8V[\x80\x91PP\x92P\x92\x90PV[_` \x82\x84\x03\x12\x15a*\x8CW__\xFD[\x81Q\x80\x15\x15\x81\x14a\x0EaW__\xFD[`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x91\x90\x92\x16` \x82\x01R`@\x81\x01\x91\x90\x91R``\x01\x90V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_` \x82\x84\x03\x12\x15a*\xE3W__\xFD[\x81Qa\x0Ea\x81a%\xF8V[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x19\x0BWa\x19\x0Ba*\xEEV[_` \x82\x84\x03\x12\x15a+%W__\xFD[PQ\x91\x90PV[\x81\x81\x03\x81\x81\x11\x15a\x19\x0BWa\x19\x0Ba*\xEEV[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[cNH{q`\xE0\x1B_R`1`\x04R`$_\xFD[\x82\x81R`@` \x82\x01R_a\x15\xEA`@\x83\x01\x84a(tV[_\x82Qa+\x90\x81\x84` \x87\x01a(RV[\x91\x90\x91\x01\x92\x91PPV\xFE\xA2dipfsX\"\x12 \x07y\x0EJ7N-\xFCyq\xDD\xB4H\x97\x9Dqvy!\x10\xA3\xA56\x97\x07b\x9A\x16?&\x9A\xB9dsolcC\0\x08\x1B\x003",
1078    );
1079    #[derive(serde::Serialize, serde::Deserialize)]
1080    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1081    /**Custom error with signature `CurrentlyPaused()` and selector `0x840a48d5`.
1082```solidity
1083error CurrentlyPaused();
1084```*/
1085    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1086    #[derive(Clone)]
1087    pub struct CurrentlyPaused;
1088    #[allow(
1089        non_camel_case_types,
1090        non_snake_case,
1091        clippy::pub_underscore_fields,
1092        clippy::style
1093    )]
1094    const _: () = {
1095        use alloy::sol_types as alloy_sol_types;
1096        #[doc(hidden)]
1097        type UnderlyingSolTuple<'a> = ();
1098        #[doc(hidden)]
1099        type UnderlyingRustTuple<'a> = ();
1100        #[cfg(test)]
1101        #[allow(dead_code, unreachable_patterns)]
1102        fn _type_assertion(
1103            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1104        ) {
1105            match _t {
1106                alloy_sol_types::private::AssertTypeEq::<
1107                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1108                >(_) => {}
1109            }
1110        }
1111        #[automatically_derived]
1112        #[doc(hidden)]
1113        impl ::core::convert::From<CurrentlyPaused> for UnderlyingRustTuple<'_> {
1114            fn from(value: CurrentlyPaused) -> Self {
1115                ()
1116            }
1117        }
1118        #[automatically_derived]
1119        #[doc(hidden)]
1120        impl ::core::convert::From<UnderlyingRustTuple<'_>> for CurrentlyPaused {
1121            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1122                Self
1123            }
1124        }
1125        #[automatically_derived]
1126        impl alloy_sol_types::SolError for CurrentlyPaused {
1127            type Parameters<'a> = UnderlyingSolTuple<'a>;
1128            type Token<'a> = <Self::Parameters<
1129                'a,
1130            > as alloy_sol_types::SolType>::Token<'a>;
1131            const SIGNATURE: &'static str = "CurrentlyPaused()";
1132            const SELECTOR: [u8; 4] = [132u8, 10u8, 72u8, 213u8];
1133            #[inline]
1134            fn new<'a>(
1135                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1136            ) -> Self {
1137                tuple.into()
1138            }
1139            #[inline]
1140            fn tokenize(&self) -> Self::Token<'_> {
1141                ()
1142            }
1143            #[inline]
1144            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1145                <Self::Parameters<
1146                    '_,
1147                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1148                    .map(Self::new)
1149            }
1150        }
1151    };
1152    #[derive(serde::Serialize, serde::Deserialize)]
1153    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1154    /**Custom error with signature `InputAddressZero()` and selector `0x73632176`.
1155```solidity
1156error InputAddressZero();
1157```*/
1158    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1159    #[derive(Clone)]
1160    pub struct InputAddressZero;
1161    #[allow(
1162        non_camel_case_types,
1163        non_snake_case,
1164        clippy::pub_underscore_fields,
1165        clippy::style
1166    )]
1167    const _: () = {
1168        use alloy::sol_types as alloy_sol_types;
1169        #[doc(hidden)]
1170        type UnderlyingSolTuple<'a> = ();
1171        #[doc(hidden)]
1172        type UnderlyingRustTuple<'a> = ();
1173        #[cfg(test)]
1174        #[allow(dead_code, unreachable_patterns)]
1175        fn _type_assertion(
1176            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1177        ) {
1178            match _t {
1179                alloy_sol_types::private::AssertTypeEq::<
1180                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1181                >(_) => {}
1182            }
1183        }
1184        #[automatically_derived]
1185        #[doc(hidden)]
1186        impl ::core::convert::From<InputAddressZero> for UnderlyingRustTuple<'_> {
1187            fn from(value: InputAddressZero) -> Self {
1188                ()
1189            }
1190        }
1191        #[automatically_derived]
1192        #[doc(hidden)]
1193        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InputAddressZero {
1194            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1195                Self
1196            }
1197        }
1198        #[automatically_derived]
1199        impl alloy_sol_types::SolError for InputAddressZero {
1200            type Parameters<'a> = UnderlyingSolTuple<'a>;
1201            type Token<'a> = <Self::Parameters<
1202                'a,
1203            > as alloy_sol_types::SolType>::Token<'a>;
1204            const SIGNATURE: &'static str = "InputAddressZero()";
1205            const SELECTOR: [u8; 4] = [115u8, 99u8, 33u8, 118u8];
1206            #[inline]
1207            fn new<'a>(
1208                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1209            ) -> Self {
1210                tuple.into()
1211            }
1212            #[inline]
1213            fn tokenize(&self) -> Self::Token<'_> {
1214                ()
1215            }
1216            #[inline]
1217            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1218                <Self::Parameters<
1219                    '_,
1220                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1221                    .map(Self::new)
1222            }
1223        }
1224    };
1225    #[derive(serde::Serialize, serde::Deserialize)]
1226    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1227    /**Custom error with signature `InvalidNewPausedStatus()` and selector `0xc61dca5d`.
1228```solidity
1229error InvalidNewPausedStatus();
1230```*/
1231    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1232    #[derive(Clone)]
1233    pub struct InvalidNewPausedStatus;
1234    #[allow(
1235        non_camel_case_types,
1236        non_snake_case,
1237        clippy::pub_underscore_fields,
1238        clippy::style
1239    )]
1240    const _: () = {
1241        use alloy::sol_types as alloy_sol_types;
1242        #[doc(hidden)]
1243        type UnderlyingSolTuple<'a> = ();
1244        #[doc(hidden)]
1245        type UnderlyingRustTuple<'a> = ();
1246        #[cfg(test)]
1247        #[allow(dead_code, unreachable_patterns)]
1248        fn _type_assertion(
1249            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1250        ) {
1251            match _t {
1252                alloy_sol_types::private::AssertTypeEq::<
1253                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1254                >(_) => {}
1255            }
1256        }
1257        #[automatically_derived]
1258        #[doc(hidden)]
1259        impl ::core::convert::From<InvalidNewPausedStatus> for UnderlyingRustTuple<'_> {
1260            fn from(value: InvalidNewPausedStatus) -> Self {
1261                ()
1262            }
1263        }
1264        #[automatically_derived]
1265        #[doc(hidden)]
1266        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidNewPausedStatus {
1267            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1268                Self
1269            }
1270        }
1271        #[automatically_derived]
1272        impl alloy_sol_types::SolError for InvalidNewPausedStatus {
1273            type Parameters<'a> = UnderlyingSolTuple<'a>;
1274            type Token<'a> = <Self::Parameters<
1275                'a,
1276            > as alloy_sol_types::SolType>::Token<'a>;
1277            const SIGNATURE: &'static str = "InvalidNewPausedStatus()";
1278            const SELECTOR: [u8; 4] = [198u8, 29u8, 202u8, 93u8];
1279            #[inline]
1280            fn new<'a>(
1281                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1282            ) -> Self {
1283                tuple.into()
1284            }
1285            #[inline]
1286            fn tokenize(&self) -> Self::Token<'_> {
1287                ()
1288            }
1289            #[inline]
1290            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1291                <Self::Parameters<
1292                    '_,
1293                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1294                    .map(Self::new)
1295            }
1296        }
1297    };
1298    #[derive(serde::Serialize, serde::Deserialize)]
1299    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1300    /**Custom error with signature `InvalidShortString()` and selector `0xb3512b0c`.
1301```solidity
1302error InvalidShortString();
1303```*/
1304    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1305    #[derive(Clone)]
1306    pub struct InvalidShortString;
1307    #[allow(
1308        non_camel_case_types,
1309        non_snake_case,
1310        clippy::pub_underscore_fields,
1311        clippy::style
1312    )]
1313    const _: () = {
1314        use alloy::sol_types as alloy_sol_types;
1315        #[doc(hidden)]
1316        type UnderlyingSolTuple<'a> = ();
1317        #[doc(hidden)]
1318        type UnderlyingRustTuple<'a> = ();
1319        #[cfg(test)]
1320        #[allow(dead_code, unreachable_patterns)]
1321        fn _type_assertion(
1322            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1323        ) {
1324            match _t {
1325                alloy_sol_types::private::AssertTypeEq::<
1326                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1327                >(_) => {}
1328            }
1329        }
1330        #[automatically_derived]
1331        #[doc(hidden)]
1332        impl ::core::convert::From<InvalidShortString> for UnderlyingRustTuple<'_> {
1333            fn from(value: InvalidShortString) -> Self {
1334                ()
1335            }
1336        }
1337        #[automatically_derived]
1338        #[doc(hidden)]
1339        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidShortString {
1340            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1341                Self
1342            }
1343        }
1344        #[automatically_derived]
1345        impl alloy_sol_types::SolError for InvalidShortString {
1346            type Parameters<'a> = UnderlyingSolTuple<'a>;
1347            type Token<'a> = <Self::Parameters<
1348                'a,
1349            > as alloy_sol_types::SolType>::Token<'a>;
1350            const SIGNATURE: &'static str = "InvalidShortString()";
1351            const SELECTOR: [u8; 4] = [179u8, 81u8, 43u8, 12u8];
1352            #[inline]
1353            fn new<'a>(
1354                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1355            ) -> Self {
1356                tuple.into()
1357            }
1358            #[inline]
1359            fn tokenize(&self) -> Self::Token<'_> {
1360                ()
1361            }
1362            #[inline]
1363            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1364                <Self::Parameters<
1365                    '_,
1366                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1367                    .map(Self::new)
1368            }
1369        }
1370    };
1371    #[derive(serde::Serialize, serde::Deserialize)]
1372    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1373    /**Custom error with signature `InvalidSignature()` and selector `0x8baa579f`.
1374```solidity
1375error InvalidSignature();
1376```*/
1377    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1378    #[derive(Clone)]
1379    pub struct InvalidSignature;
1380    #[allow(
1381        non_camel_case_types,
1382        non_snake_case,
1383        clippy::pub_underscore_fields,
1384        clippy::style
1385    )]
1386    const _: () = {
1387        use alloy::sol_types as alloy_sol_types;
1388        #[doc(hidden)]
1389        type UnderlyingSolTuple<'a> = ();
1390        #[doc(hidden)]
1391        type UnderlyingRustTuple<'a> = ();
1392        #[cfg(test)]
1393        #[allow(dead_code, unreachable_patterns)]
1394        fn _type_assertion(
1395            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1396        ) {
1397            match _t {
1398                alloy_sol_types::private::AssertTypeEq::<
1399                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1400                >(_) => {}
1401            }
1402        }
1403        #[automatically_derived]
1404        #[doc(hidden)]
1405        impl ::core::convert::From<InvalidSignature> for UnderlyingRustTuple<'_> {
1406            fn from(value: InvalidSignature) -> Self {
1407                ()
1408            }
1409        }
1410        #[automatically_derived]
1411        #[doc(hidden)]
1412        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidSignature {
1413            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1414                Self
1415            }
1416        }
1417        #[automatically_derived]
1418        impl alloy_sol_types::SolError for InvalidSignature {
1419            type Parameters<'a> = UnderlyingSolTuple<'a>;
1420            type Token<'a> = <Self::Parameters<
1421                'a,
1422            > as alloy_sol_types::SolType>::Token<'a>;
1423            const SIGNATURE: &'static str = "InvalidSignature()";
1424            const SELECTOR: [u8; 4] = [139u8, 170u8, 87u8, 159u8];
1425            #[inline]
1426            fn new<'a>(
1427                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1428            ) -> Self {
1429                tuple.into()
1430            }
1431            #[inline]
1432            fn tokenize(&self) -> Self::Token<'_> {
1433                ()
1434            }
1435            #[inline]
1436            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1437                <Self::Parameters<
1438                    '_,
1439                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1440                    .map(Self::new)
1441            }
1442        }
1443    };
1444    #[derive(serde::Serialize, serde::Deserialize)]
1445    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1446    /**Custom error with signature `MaxStrategiesExceeded()` and selector `0x0d0a21c8`.
1447```solidity
1448error MaxStrategiesExceeded();
1449```*/
1450    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1451    #[derive(Clone)]
1452    pub struct MaxStrategiesExceeded;
1453    #[allow(
1454        non_camel_case_types,
1455        non_snake_case,
1456        clippy::pub_underscore_fields,
1457        clippy::style
1458    )]
1459    const _: () = {
1460        use alloy::sol_types as alloy_sol_types;
1461        #[doc(hidden)]
1462        type UnderlyingSolTuple<'a> = ();
1463        #[doc(hidden)]
1464        type UnderlyingRustTuple<'a> = ();
1465        #[cfg(test)]
1466        #[allow(dead_code, unreachable_patterns)]
1467        fn _type_assertion(
1468            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1469        ) {
1470            match _t {
1471                alloy_sol_types::private::AssertTypeEq::<
1472                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1473                >(_) => {}
1474            }
1475        }
1476        #[automatically_derived]
1477        #[doc(hidden)]
1478        impl ::core::convert::From<MaxStrategiesExceeded> for UnderlyingRustTuple<'_> {
1479            fn from(value: MaxStrategiesExceeded) -> Self {
1480                ()
1481            }
1482        }
1483        #[automatically_derived]
1484        #[doc(hidden)]
1485        impl ::core::convert::From<UnderlyingRustTuple<'_>> for MaxStrategiesExceeded {
1486            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1487                Self
1488            }
1489        }
1490        #[automatically_derived]
1491        impl alloy_sol_types::SolError for MaxStrategiesExceeded {
1492            type Parameters<'a> = UnderlyingSolTuple<'a>;
1493            type Token<'a> = <Self::Parameters<
1494                'a,
1495            > as alloy_sol_types::SolType>::Token<'a>;
1496            const SIGNATURE: &'static str = "MaxStrategiesExceeded()";
1497            const SELECTOR: [u8; 4] = [13u8, 10u8, 33u8, 200u8];
1498            #[inline]
1499            fn new<'a>(
1500                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1501            ) -> Self {
1502                tuple.into()
1503            }
1504            #[inline]
1505            fn tokenize(&self) -> Self::Token<'_> {
1506                ()
1507            }
1508            #[inline]
1509            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1510                <Self::Parameters<
1511                    '_,
1512                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1513                    .map(Self::new)
1514            }
1515        }
1516    };
1517    #[derive(serde::Serialize, serde::Deserialize)]
1518    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1519    /**Custom error with signature `OnlyDelegationManager()` and selector `0xf739589b`.
1520```solidity
1521error OnlyDelegationManager();
1522```*/
1523    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1524    #[derive(Clone)]
1525    pub struct OnlyDelegationManager;
1526    #[allow(
1527        non_camel_case_types,
1528        non_snake_case,
1529        clippy::pub_underscore_fields,
1530        clippy::style
1531    )]
1532    const _: () = {
1533        use alloy::sol_types as alloy_sol_types;
1534        #[doc(hidden)]
1535        type UnderlyingSolTuple<'a> = ();
1536        #[doc(hidden)]
1537        type UnderlyingRustTuple<'a> = ();
1538        #[cfg(test)]
1539        #[allow(dead_code, unreachable_patterns)]
1540        fn _type_assertion(
1541            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1542        ) {
1543            match _t {
1544                alloy_sol_types::private::AssertTypeEq::<
1545                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1546                >(_) => {}
1547            }
1548        }
1549        #[automatically_derived]
1550        #[doc(hidden)]
1551        impl ::core::convert::From<OnlyDelegationManager> for UnderlyingRustTuple<'_> {
1552            fn from(value: OnlyDelegationManager) -> Self {
1553                ()
1554            }
1555        }
1556        #[automatically_derived]
1557        #[doc(hidden)]
1558        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OnlyDelegationManager {
1559            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1560                Self
1561            }
1562        }
1563        #[automatically_derived]
1564        impl alloy_sol_types::SolError for OnlyDelegationManager {
1565            type Parameters<'a> = UnderlyingSolTuple<'a>;
1566            type Token<'a> = <Self::Parameters<
1567                'a,
1568            > as alloy_sol_types::SolType>::Token<'a>;
1569            const SIGNATURE: &'static str = "OnlyDelegationManager()";
1570            const SELECTOR: [u8; 4] = [247u8, 57u8, 88u8, 155u8];
1571            #[inline]
1572            fn new<'a>(
1573                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1574            ) -> Self {
1575                tuple.into()
1576            }
1577            #[inline]
1578            fn tokenize(&self) -> Self::Token<'_> {
1579                ()
1580            }
1581            #[inline]
1582            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1583                <Self::Parameters<
1584                    '_,
1585                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1586                    .map(Self::new)
1587            }
1588        }
1589    };
1590    #[derive(serde::Serialize, serde::Deserialize)]
1591    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1592    /**Custom error with signature `OnlyPauser()` and selector `0x75df51dc`.
1593```solidity
1594error OnlyPauser();
1595```*/
1596    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1597    #[derive(Clone)]
1598    pub struct OnlyPauser;
1599    #[allow(
1600        non_camel_case_types,
1601        non_snake_case,
1602        clippy::pub_underscore_fields,
1603        clippy::style
1604    )]
1605    const _: () = {
1606        use alloy::sol_types as alloy_sol_types;
1607        #[doc(hidden)]
1608        type UnderlyingSolTuple<'a> = ();
1609        #[doc(hidden)]
1610        type UnderlyingRustTuple<'a> = ();
1611        #[cfg(test)]
1612        #[allow(dead_code, unreachable_patterns)]
1613        fn _type_assertion(
1614            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1615        ) {
1616            match _t {
1617                alloy_sol_types::private::AssertTypeEq::<
1618                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1619                >(_) => {}
1620            }
1621        }
1622        #[automatically_derived]
1623        #[doc(hidden)]
1624        impl ::core::convert::From<OnlyPauser> for UnderlyingRustTuple<'_> {
1625            fn from(value: OnlyPauser) -> Self {
1626                ()
1627            }
1628        }
1629        #[automatically_derived]
1630        #[doc(hidden)]
1631        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OnlyPauser {
1632            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1633                Self
1634            }
1635        }
1636        #[automatically_derived]
1637        impl alloy_sol_types::SolError for OnlyPauser {
1638            type Parameters<'a> = UnderlyingSolTuple<'a>;
1639            type Token<'a> = <Self::Parameters<
1640                'a,
1641            > as alloy_sol_types::SolType>::Token<'a>;
1642            const SIGNATURE: &'static str = "OnlyPauser()";
1643            const SELECTOR: [u8; 4] = [117u8, 223u8, 81u8, 220u8];
1644            #[inline]
1645            fn new<'a>(
1646                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1647            ) -> Self {
1648                tuple.into()
1649            }
1650            #[inline]
1651            fn tokenize(&self) -> Self::Token<'_> {
1652                ()
1653            }
1654            #[inline]
1655            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1656                <Self::Parameters<
1657                    '_,
1658                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1659                    .map(Self::new)
1660            }
1661        }
1662    };
1663    #[derive(serde::Serialize, serde::Deserialize)]
1664    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1665    /**Custom error with signature `OnlyStrategyWhitelister()` and selector `0x82e8ffe4`.
1666```solidity
1667error OnlyStrategyWhitelister();
1668```*/
1669    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1670    #[derive(Clone)]
1671    pub struct OnlyStrategyWhitelister;
1672    #[allow(
1673        non_camel_case_types,
1674        non_snake_case,
1675        clippy::pub_underscore_fields,
1676        clippy::style
1677    )]
1678    const _: () = {
1679        use alloy::sol_types as alloy_sol_types;
1680        #[doc(hidden)]
1681        type UnderlyingSolTuple<'a> = ();
1682        #[doc(hidden)]
1683        type UnderlyingRustTuple<'a> = ();
1684        #[cfg(test)]
1685        #[allow(dead_code, unreachable_patterns)]
1686        fn _type_assertion(
1687            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1688        ) {
1689            match _t {
1690                alloy_sol_types::private::AssertTypeEq::<
1691                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1692                >(_) => {}
1693            }
1694        }
1695        #[automatically_derived]
1696        #[doc(hidden)]
1697        impl ::core::convert::From<OnlyStrategyWhitelister> for UnderlyingRustTuple<'_> {
1698            fn from(value: OnlyStrategyWhitelister) -> Self {
1699                ()
1700            }
1701        }
1702        #[automatically_derived]
1703        #[doc(hidden)]
1704        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OnlyStrategyWhitelister {
1705            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1706                Self
1707            }
1708        }
1709        #[automatically_derived]
1710        impl alloy_sol_types::SolError for OnlyStrategyWhitelister {
1711            type Parameters<'a> = UnderlyingSolTuple<'a>;
1712            type Token<'a> = <Self::Parameters<
1713                'a,
1714            > as alloy_sol_types::SolType>::Token<'a>;
1715            const SIGNATURE: &'static str = "OnlyStrategyWhitelister()";
1716            const SELECTOR: [u8; 4] = [130u8, 232u8, 255u8, 228u8];
1717            #[inline]
1718            fn new<'a>(
1719                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1720            ) -> Self {
1721                tuple.into()
1722            }
1723            #[inline]
1724            fn tokenize(&self) -> Self::Token<'_> {
1725                ()
1726            }
1727            #[inline]
1728            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1729                <Self::Parameters<
1730                    '_,
1731                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1732                    .map(Self::new)
1733            }
1734        }
1735    };
1736    #[derive(serde::Serialize, serde::Deserialize)]
1737    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1738    /**Custom error with signature `OnlyUnpauser()` and selector `0x794821ff`.
1739```solidity
1740error OnlyUnpauser();
1741```*/
1742    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1743    #[derive(Clone)]
1744    pub struct OnlyUnpauser;
1745    #[allow(
1746        non_camel_case_types,
1747        non_snake_case,
1748        clippy::pub_underscore_fields,
1749        clippy::style
1750    )]
1751    const _: () = {
1752        use alloy::sol_types as alloy_sol_types;
1753        #[doc(hidden)]
1754        type UnderlyingSolTuple<'a> = ();
1755        #[doc(hidden)]
1756        type UnderlyingRustTuple<'a> = ();
1757        #[cfg(test)]
1758        #[allow(dead_code, unreachable_patterns)]
1759        fn _type_assertion(
1760            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1761        ) {
1762            match _t {
1763                alloy_sol_types::private::AssertTypeEq::<
1764                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1765                >(_) => {}
1766            }
1767        }
1768        #[automatically_derived]
1769        #[doc(hidden)]
1770        impl ::core::convert::From<OnlyUnpauser> for UnderlyingRustTuple<'_> {
1771            fn from(value: OnlyUnpauser) -> Self {
1772                ()
1773            }
1774        }
1775        #[automatically_derived]
1776        #[doc(hidden)]
1777        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OnlyUnpauser {
1778            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1779                Self
1780            }
1781        }
1782        #[automatically_derived]
1783        impl alloy_sol_types::SolError for OnlyUnpauser {
1784            type Parameters<'a> = UnderlyingSolTuple<'a>;
1785            type Token<'a> = <Self::Parameters<
1786                'a,
1787            > as alloy_sol_types::SolType>::Token<'a>;
1788            const SIGNATURE: &'static str = "OnlyUnpauser()";
1789            const SELECTOR: [u8; 4] = [121u8, 72u8, 33u8, 255u8];
1790            #[inline]
1791            fn new<'a>(
1792                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1793            ) -> Self {
1794                tuple.into()
1795            }
1796            #[inline]
1797            fn tokenize(&self) -> Self::Token<'_> {
1798                ()
1799            }
1800            #[inline]
1801            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1802                <Self::Parameters<
1803                    '_,
1804                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1805                    .map(Self::new)
1806            }
1807        }
1808    };
1809    #[derive(serde::Serialize, serde::Deserialize)]
1810    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1811    /**Custom error with signature `SharesAmountTooHigh()` and selector `0x4b18b193`.
1812```solidity
1813error SharesAmountTooHigh();
1814```*/
1815    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1816    #[derive(Clone)]
1817    pub struct SharesAmountTooHigh;
1818    #[allow(
1819        non_camel_case_types,
1820        non_snake_case,
1821        clippy::pub_underscore_fields,
1822        clippy::style
1823    )]
1824    const _: () = {
1825        use alloy::sol_types as alloy_sol_types;
1826        #[doc(hidden)]
1827        type UnderlyingSolTuple<'a> = ();
1828        #[doc(hidden)]
1829        type UnderlyingRustTuple<'a> = ();
1830        #[cfg(test)]
1831        #[allow(dead_code, unreachable_patterns)]
1832        fn _type_assertion(
1833            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1834        ) {
1835            match _t {
1836                alloy_sol_types::private::AssertTypeEq::<
1837                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1838                >(_) => {}
1839            }
1840        }
1841        #[automatically_derived]
1842        #[doc(hidden)]
1843        impl ::core::convert::From<SharesAmountTooHigh> for UnderlyingRustTuple<'_> {
1844            fn from(value: SharesAmountTooHigh) -> Self {
1845                ()
1846            }
1847        }
1848        #[automatically_derived]
1849        #[doc(hidden)]
1850        impl ::core::convert::From<UnderlyingRustTuple<'_>> for SharesAmountTooHigh {
1851            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1852                Self
1853            }
1854        }
1855        #[automatically_derived]
1856        impl alloy_sol_types::SolError for SharesAmountTooHigh {
1857            type Parameters<'a> = UnderlyingSolTuple<'a>;
1858            type Token<'a> = <Self::Parameters<
1859                'a,
1860            > as alloy_sol_types::SolType>::Token<'a>;
1861            const SIGNATURE: &'static str = "SharesAmountTooHigh()";
1862            const SELECTOR: [u8; 4] = [75u8, 24u8, 177u8, 147u8];
1863            #[inline]
1864            fn new<'a>(
1865                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1866            ) -> Self {
1867                tuple.into()
1868            }
1869            #[inline]
1870            fn tokenize(&self) -> Self::Token<'_> {
1871                ()
1872            }
1873            #[inline]
1874            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1875                <Self::Parameters<
1876                    '_,
1877                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1878                    .map(Self::new)
1879            }
1880        }
1881    };
1882    #[derive(serde::Serialize, serde::Deserialize)]
1883    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1884    /**Custom error with signature `SharesAmountZero()` and selector `0x840c364a`.
1885```solidity
1886error SharesAmountZero();
1887```*/
1888    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1889    #[derive(Clone)]
1890    pub struct SharesAmountZero;
1891    #[allow(
1892        non_camel_case_types,
1893        non_snake_case,
1894        clippy::pub_underscore_fields,
1895        clippy::style
1896    )]
1897    const _: () = {
1898        use alloy::sol_types as alloy_sol_types;
1899        #[doc(hidden)]
1900        type UnderlyingSolTuple<'a> = ();
1901        #[doc(hidden)]
1902        type UnderlyingRustTuple<'a> = ();
1903        #[cfg(test)]
1904        #[allow(dead_code, unreachable_patterns)]
1905        fn _type_assertion(
1906            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1907        ) {
1908            match _t {
1909                alloy_sol_types::private::AssertTypeEq::<
1910                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1911                >(_) => {}
1912            }
1913        }
1914        #[automatically_derived]
1915        #[doc(hidden)]
1916        impl ::core::convert::From<SharesAmountZero> for UnderlyingRustTuple<'_> {
1917            fn from(value: SharesAmountZero) -> Self {
1918                ()
1919            }
1920        }
1921        #[automatically_derived]
1922        #[doc(hidden)]
1923        impl ::core::convert::From<UnderlyingRustTuple<'_>> for SharesAmountZero {
1924            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1925                Self
1926            }
1927        }
1928        #[automatically_derived]
1929        impl alloy_sol_types::SolError for SharesAmountZero {
1930            type Parameters<'a> = UnderlyingSolTuple<'a>;
1931            type Token<'a> = <Self::Parameters<
1932                'a,
1933            > as alloy_sol_types::SolType>::Token<'a>;
1934            const SIGNATURE: &'static str = "SharesAmountZero()";
1935            const SELECTOR: [u8; 4] = [132u8, 12u8, 54u8, 74u8];
1936            #[inline]
1937            fn new<'a>(
1938                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1939            ) -> Self {
1940                tuple.into()
1941            }
1942            #[inline]
1943            fn tokenize(&self) -> Self::Token<'_> {
1944                ()
1945            }
1946            #[inline]
1947            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1948                <Self::Parameters<
1949                    '_,
1950                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1951                    .map(Self::new)
1952            }
1953        }
1954    };
1955    #[derive(serde::Serialize, serde::Deserialize)]
1956    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1957    /**Custom error with signature `SignatureExpired()` and selector `0x0819bdcd`.
1958```solidity
1959error SignatureExpired();
1960```*/
1961    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1962    #[derive(Clone)]
1963    pub struct SignatureExpired;
1964    #[allow(
1965        non_camel_case_types,
1966        non_snake_case,
1967        clippy::pub_underscore_fields,
1968        clippy::style
1969    )]
1970    const _: () = {
1971        use alloy::sol_types as alloy_sol_types;
1972        #[doc(hidden)]
1973        type UnderlyingSolTuple<'a> = ();
1974        #[doc(hidden)]
1975        type UnderlyingRustTuple<'a> = ();
1976        #[cfg(test)]
1977        #[allow(dead_code, unreachable_patterns)]
1978        fn _type_assertion(
1979            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1980        ) {
1981            match _t {
1982                alloy_sol_types::private::AssertTypeEq::<
1983                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1984                >(_) => {}
1985            }
1986        }
1987        #[automatically_derived]
1988        #[doc(hidden)]
1989        impl ::core::convert::From<SignatureExpired> for UnderlyingRustTuple<'_> {
1990            fn from(value: SignatureExpired) -> Self {
1991                ()
1992            }
1993        }
1994        #[automatically_derived]
1995        #[doc(hidden)]
1996        impl ::core::convert::From<UnderlyingRustTuple<'_>> for SignatureExpired {
1997            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1998                Self
1999            }
2000        }
2001        #[automatically_derived]
2002        impl alloy_sol_types::SolError for SignatureExpired {
2003            type Parameters<'a> = UnderlyingSolTuple<'a>;
2004            type Token<'a> = <Self::Parameters<
2005                'a,
2006            > as alloy_sol_types::SolType>::Token<'a>;
2007            const SIGNATURE: &'static str = "SignatureExpired()";
2008            const SELECTOR: [u8; 4] = [8u8, 25u8, 189u8, 205u8];
2009            #[inline]
2010            fn new<'a>(
2011                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2012            ) -> Self {
2013                tuple.into()
2014            }
2015            #[inline]
2016            fn tokenize(&self) -> Self::Token<'_> {
2017                ()
2018            }
2019            #[inline]
2020            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2021                <Self::Parameters<
2022                    '_,
2023                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2024                    .map(Self::new)
2025            }
2026        }
2027    };
2028    #[derive(serde::Serialize, serde::Deserialize)]
2029    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2030    /**Custom error with signature `StakerAddressZero()` and selector `0x16f2ccc9`.
2031```solidity
2032error StakerAddressZero();
2033```*/
2034    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2035    #[derive(Clone)]
2036    pub struct StakerAddressZero;
2037    #[allow(
2038        non_camel_case_types,
2039        non_snake_case,
2040        clippy::pub_underscore_fields,
2041        clippy::style
2042    )]
2043    const _: () = {
2044        use alloy::sol_types as alloy_sol_types;
2045        #[doc(hidden)]
2046        type UnderlyingSolTuple<'a> = ();
2047        #[doc(hidden)]
2048        type UnderlyingRustTuple<'a> = ();
2049        #[cfg(test)]
2050        #[allow(dead_code, unreachable_patterns)]
2051        fn _type_assertion(
2052            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2053        ) {
2054            match _t {
2055                alloy_sol_types::private::AssertTypeEq::<
2056                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2057                >(_) => {}
2058            }
2059        }
2060        #[automatically_derived]
2061        #[doc(hidden)]
2062        impl ::core::convert::From<StakerAddressZero> for UnderlyingRustTuple<'_> {
2063            fn from(value: StakerAddressZero) -> Self {
2064                ()
2065            }
2066        }
2067        #[automatically_derived]
2068        #[doc(hidden)]
2069        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StakerAddressZero {
2070            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2071                Self
2072            }
2073        }
2074        #[automatically_derived]
2075        impl alloy_sol_types::SolError for StakerAddressZero {
2076            type Parameters<'a> = UnderlyingSolTuple<'a>;
2077            type Token<'a> = <Self::Parameters<
2078                'a,
2079            > as alloy_sol_types::SolType>::Token<'a>;
2080            const SIGNATURE: &'static str = "StakerAddressZero()";
2081            const SELECTOR: [u8; 4] = [22u8, 242u8, 204u8, 201u8];
2082            #[inline]
2083            fn new<'a>(
2084                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2085            ) -> Self {
2086                tuple.into()
2087            }
2088            #[inline]
2089            fn tokenize(&self) -> Self::Token<'_> {
2090                ()
2091            }
2092            #[inline]
2093            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2094                <Self::Parameters<
2095                    '_,
2096                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2097                    .map(Self::new)
2098            }
2099        }
2100    };
2101    #[derive(serde::Serialize, serde::Deserialize)]
2102    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2103    /**Custom error with signature `StrategyNotFound()` and selector `0x5be2b482`.
2104```solidity
2105error StrategyNotFound();
2106```*/
2107    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2108    #[derive(Clone)]
2109    pub struct StrategyNotFound;
2110    #[allow(
2111        non_camel_case_types,
2112        non_snake_case,
2113        clippy::pub_underscore_fields,
2114        clippy::style
2115    )]
2116    const _: () = {
2117        use alloy::sol_types as alloy_sol_types;
2118        #[doc(hidden)]
2119        type UnderlyingSolTuple<'a> = ();
2120        #[doc(hidden)]
2121        type UnderlyingRustTuple<'a> = ();
2122        #[cfg(test)]
2123        #[allow(dead_code, unreachable_patterns)]
2124        fn _type_assertion(
2125            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2126        ) {
2127            match _t {
2128                alloy_sol_types::private::AssertTypeEq::<
2129                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2130                >(_) => {}
2131            }
2132        }
2133        #[automatically_derived]
2134        #[doc(hidden)]
2135        impl ::core::convert::From<StrategyNotFound> for UnderlyingRustTuple<'_> {
2136            fn from(value: StrategyNotFound) -> Self {
2137                ()
2138            }
2139        }
2140        #[automatically_derived]
2141        #[doc(hidden)]
2142        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StrategyNotFound {
2143            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2144                Self
2145            }
2146        }
2147        #[automatically_derived]
2148        impl alloy_sol_types::SolError for StrategyNotFound {
2149            type Parameters<'a> = UnderlyingSolTuple<'a>;
2150            type Token<'a> = <Self::Parameters<
2151                'a,
2152            > as alloy_sol_types::SolType>::Token<'a>;
2153            const SIGNATURE: &'static str = "StrategyNotFound()";
2154            const SELECTOR: [u8; 4] = [91u8, 226u8, 180u8, 130u8];
2155            #[inline]
2156            fn new<'a>(
2157                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2158            ) -> Self {
2159                tuple.into()
2160            }
2161            #[inline]
2162            fn tokenize(&self) -> Self::Token<'_> {
2163                ()
2164            }
2165            #[inline]
2166            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2167                <Self::Parameters<
2168                    '_,
2169                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2170                    .map(Self::new)
2171            }
2172        }
2173    };
2174    #[derive(serde::Serialize, serde::Deserialize)]
2175    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2176    /**Custom error with signature `StrategyNotWhitelisted()` and selector `0x5dfb2ca2`.
2177```solidity
2178error StrategyNotWhitelisted();
2179```*/
2180    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2181    #[derive(Clone)]
2182    pub struct StrategyNotWhitelisted;
2183    #[allow(
2184        non_camel_case_types,
2185        non_snake_case,
2186        clippy::pub_underscore_fields,
2187        clippy::style
2188    )]
2189    const _: () = {
2190        use alloy::sol_types as alloy_sol_types;
2191        #[doc(hidden)]
2192        type UnderlyingSolTuple<'a> = ();
2193        #[doc(hidden)]
2194        type UnderlyingRustTuple<'a> = ();
2195        #[cfg(test)]
2196        #[allow(dead_code, unreachable_patterns)]
2197        fn _type_assertion(
2198            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2199        ) {
2200            match _t {
2201                alloy_sol_types::private::AssertTypeEq::<
2202                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2203                >(_) => {}
2204            }
2205        }
2206        #[automatically_derived]
2207        #[doc(hidden)]
2208        impl ::core::convert::From<StrategyNotWhitelisted> for UnderlyingRustTuple<'_> {
2209            fn from(value: StrategyNotWhitelisted) -> Self {
2210                ()
2211            }
2212        }
2213        #[automatically_derived]
2214        #[doc(hidden)]
2215        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StrategyNotWhitelisted {
2216            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2217                Self
2218            }
2219        }
2220        #[automatically_derived]
2221        impl alloy_sol_types::SolError for StrategyNotWhitelisted {
2222            type Parameters<'a> = UnderlyingSolTuple<'a>;
2223            type Token<'a> = <Self::Parameters<
2224                'a,
2225            > as alloy_sol_types::SolType>::Token<'a>;
2226            const SIGNATURE: &'static str = "StrategyNotWhitelisted()";
2227            const SELECTOR: [u8; 4] = [93u8, 251u8, 44u8, 162u8];
2228            #[inline]
2229            fn new<'a>(
2230                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2231            ) -> Self {
2232                tuple.into()
2233            }
2234            #[inline]
2235            fn tokenize(&self) -> Self::Token<'_> {
2236                ()
2237            }
2238            #[inline]
2239            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2240                <Self::Parameters<
2241                    '_,
2242                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2243                    .map(Self::new)
2244            }
2245        }
2246    };
2247    #[derive(serde::Serialize, serde::Deserialize)]
2248    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2249    /**Custom error with signature `StringTooLong(string)` and selector `0x305a27a9`.
2250```solidity
2251error StringTooLong(string str);
2252```*/
2253    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2254    #[derive(Clone)]
2255    pub struct StringTooLong {
2256        #[allow(missing_docs)]
2257        pub str: alloy::sol_types::private::String,
2258    }
2259    #[allow(
2260        non_camel_case_types,
2261        non_snake_case,
2262        clippy::pub_underscore_fields,
2263        clippy::style
2264    )]
2265    const _: () = {
2266        use alloy::sol_types as alloy_sol_types;
2267        #[doc(hidden)]
2268        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
2269        #[doc(hidden)]
2270        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
2271        #[cfg(test)]
2272        #[allow(dead_code, unreachable_patterns)]
2273        fn _type_assertion(
2274            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2275        ) {
2276            match _t {
2277                alloy_sol_types::private::AssertTypeEq::<
2278                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2279                >(_) => {}
2280            }
2281        }
2282        #[automatically_derived]
2283        #[doc(hidden)]
2284        impl ::core::convert::From<StringTooLong> for UnderlyingRustTuple<'_> {
2285            fn from(value: StringTooLong) -> Self {
2286                (value.str,)
2287            }
2288        }
2289        #[automatically_derived]
2290        #[doc(hidden)]
2291        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StringTooLong {
2292            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2293                Self { str: tuple.0 }
2294            }
2295        }
2296        #[automatically_derived]
2297        impl alloy_sol_types::SolError for StringTooLong {
2298            type Parameters<'a> = UnderlyingSolTuple<'a>;
2299            type Token<'a> = <Self::Parameters<
2300                'a,
2301            > as alloy_sol_types::SolType>::Token<'a>;
2302            const SIGNATURE: &'static str = "StringTooLong(string)";
2303            const SELECTOR: [u8; 4] = [48u8, 90u8, 39u8, 169u8];
2304            #[inline]
2305            fn new<'a>(
2306                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2307            ) -> Self {
2308                tuple.into()
2309            }
2310            #[inline]
2311            fn tokenize(&self) -> Self::Token<'_> {
2312                (
2313                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
2314                        &self.str,
2315                    ),
2316                )
2317            }
2318            #[inline]
2319            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2320                <Self::Parameters<
2321                    '_,
2322                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2323                    .map(Self::new)
2324            }
2325        }
2326    };
2327    #[derive(serde::Serialize, serde::Deserialize)]
2328    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2329    /**Event with signature `BurnableSharesDecreased(address,uint256)` and selector `0xd9d082c3ec4f3a3ffa55c324939a06407f5fbcb87d5e0ce3b9508c92c84ed839`.
2330```solidity
2331event BurnableSharesDecreased(address strategy, uint256 shares);
2332```*/
2333    #[allow(
2334        non_camel_case_types,
2335        non_snake_case,
2336        clippy::pub_underscore_fields,
2337        clippy::style
2338    )]
2339    #[derive(Clone)]
2340    pub struct BurnableSharesDecreased {
2341        #[allow(missing_docs)]
2342        pub strategy: alloy::sol_types::private::Address,
2343        #[allow(missing_docs)]
2344        pub shares: alloy::sol_types::private::primitives::aliases::U256,
2345    }
2346    #[allow(
2347        non_camel_case_types,
2348        non_snake_case,
2349        clippy::pub_underscore_fields,
2350        clippy::style
2351    )]
2352    const _: () = {
2353        use alloy::sol_types as alloy_sol_types;
2354        #[automatically_derived]
2355        impl alloy_sol_types::SolEvent for BurnableSharesDecreased {
2356            type DataTuple<'a> = (
2357                alloy::sol_types::sol_data::Address,
2358                alloy::sol_types::sol_data::Uint<256>,
2359            );
2360            type DataToken<'a> = <Self::DataTuple<
2361                'a,
2362            > as alloy_sol_types::SolType>::Token<'a>;
2363            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
2364            const SIGNATURE: &'static str = "BurnableSharesDecreased(address,uint256)";
2365            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
2366                217u8, 208u8, 130u8, 195u8, 236u8, 79u8, 58u8, 63u8, 250u8, 85u8, 195u8,
2367                36u8, 147u8, 154u8, 6u8, 64u8, 127u8, 95u8, 188u8, 184u8, 125u8, 94u8,
2368                12u8, 227u8, 185u8, 80u8, 140u8, 146u8, 200u8, 78u8, 216u8, 57u8,
2369            ]);
2370            const ANONYMOUS: bool = false;
2371            #[allow(unused_variables)]
2372            #[inline]
2373            fn new(
2374                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2375                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2376            ) -> Self {
2377                Self {
2378                    strategy: data.0,
2379                    shares: data.1,
2380                }
2381            }
2382            #[inline]
2383            fn check_signature(
2384                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2385            ) -> alloy_sol_types::Result<()> {
2386                if topics.0 != Self::SIGNATURE_HASH {
2387                    return Err(
2388                        alloy_sol_types::Error::invalid_event_signature_hash(
2389                            Self::SIGNATURE,
2390                            topics.0,
2391                            Self::SIGNATURE_HASH,
2392                        ),
2393                    );
2394                }
2395                Ok(())
2396            }
2397            #[inline]
2398            fn tokenize_body(&self) -> Self::DataToken<'_> {
2399                (
2400                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
2401                        &self.strategy,
2402                    ),
2403                    <alloy::sol_types::sol_data::Uint<
2404                        256,
2405                    > as alloy_sol_types::SolType>::tokenize(&self.shares),
2406                )
2407            }
2408            #[inline]
2409            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2410                (Self::SIGNATURE_HASH.into(),)
2411            }
2412            #[inline]
2413            fn encode_topics_raw(
2414                &self,
2415                out: &mut [alloy_sol_types::abi::token::WordToken],
2416            ) -> alloy_sol_types::Result<()> {
2417                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2418                    return Err(alloy_sol_types::Error::Overrun);
2419                }
2420                out[0usize] = alloy_sol_types::abi::token::WordToken(
2421                    Self::SIGNATURE_HASH,
2422                );
2423                Ok(())
2424            }
2425        }
2426        #[automatically_derived]
2427        impl alloy_sol_types::private::IntoLogData for BurnableSharesDecreased {
2428            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2429                From::from(self)
2430            }
2431            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2432                From::from(&self)
2433            }
2434        }
2435        #[automatically_derived]
2436        impl From<&BurnableSharesDecreased> for alloy_sol_types::private::LogData {
2437            #[inline]
2438            fn from(
2439                this: &BurnableSharesDecreased,
2440            ) -> alloy_sol_types::private::LogData {
2441                alloy_sol_types::SolEvent::encode_log_data(this)
2442            }
2443        }
2444    };
2445    #[derive(serde::Serialize, serde::Deserialize)]
2446    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2447    /**Event with signature `BurnableSharesIncreased(address,uint256)` and selector `0xca3e02a4ab7ad3c47a8e36e5a624c30170791726ab720f1babfef21046d953ff`.
2448```solidity
2449event BurnableSharesIncreased(address strategy, uint256 shares);
2450```*/
2451    #[allow(
2452        non_camel_case_types,
2453        non_snake_case,
2454        clippy::pub_underscore_fields,
2455        clippy::style
2456    )]
2457    #[derive(Clone)]
2458    pub struct BurnableSharesIncreased {
2459        #[allow(missing_docs)]
2460        pub strategy: alloy::sol_types::private::Address,
2461        #[allow(missing_docs)]
2462        pub shares: alloy::sol_types::private::primitives::aliases::U256,
2463    }
2464    #[allow(
2465        non_camel_case_types,
2466        non_snake_case,
2467        clippy::pub_underscore_fields,
2468        clippy::style
2469    )]
2470    const _: () = {
2471        use alloy::sol_types as alloy_sol_types;
2472        #[automatically_derived]
2473        impl alloy_sol_types::SolEvent for BurnableSharesIncreased {
2474            type DataTuple<'a> = (
2475                alloy::sol_types::sol_data::Address,
2476                alloy::sol_types::sol_data::Uint<256>,
2477            );
2478            type DataToken<'a> = <Self::DataTuple<
2479                'a,
2480            > as alloy_sol_types::SolType>::Token<'a>;
2481            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
2482            const SIGNATURE: &'static str = "BurnableSharesIncreased(address,uint256)";
2483            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
2484                202u8, 62u8, 2u8, 164u8, 171u8, 122u8, 211u8, 196u8, 122u8, 142u8, 54u8,
2485                229u8, 166u8, 36u8, 195u8, 1u8, 112u8, 121u8, 23u8, 38u8, 171u8, 114u8,
2486                15u8, 27u8, 171u8, 254u8, 242u8, 16u8, 70u8, 217u8, 83u8, 255u8,
2487            ]);
2488            const ANONYMOUS: bool = false;
2489            #[allow(unused_variables)]
2490            #[inline]
2491            fn new(
2492                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2493                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2494            ) -> Self {
2495                Self {
2496                    strategy: data.0,
2497                    shares: data.1,
2498                }
2499            }
2500            #[inline]
2501            fn check_signature(
2502                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2503            ) -> alloy_sol_types::Result<()> {
2504                if topics.0 != Self::SIGNATURE_HASH {
2505                    return Err(
2506                        alloy_sol_types::Error::invalid_event_signature_hash(
2507                            Self::SIGNATURE,
2508                            topics.0,
2509                            Self::SIGNATURE_HASH,
2510                        ),
2511                    );
2512                }
2513                Ok(())
2514            }
2515            #[inline]
2516            fn tokenize_body(&self) -> Self::DataToken<'_> {
2517                (
2518                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
2519                        &self.strategy,
2520                    ),
2521                    <alloy::sol_types::sol_data::Uint<
2522                        256,
2523                    > as alloy_sol_types::SolType>::tokenize(&self.shares),
2524                )
2525            }
2526            #[inline]
2527            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2528                (Self::SIGNATURE_HASH.into(),)
2529            }
2530            #[inline]
2531            fn encode_topics_raw(
2532                &self,
2533                out: &mut [alloy_sol_types::abi::token::WordToken],
2534            ) -> alloy_sol_types::Result<()> {
2535                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2536                    return Err(alloy_sol_types::Error::Overrun);
2537                }
2538                out[0usize] = alloy_sol_types::abi::token::WordToken(
2539                    Self::SIGNATURE_HASH,
2540                );
2541                Ok(())
2542            }
2543        }
2544        #[automatically_derived]
2545        impl alloy_sol_types::private::IntoLogData for BurnableSharesIncreased {
2546            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2547                From::from(self)
2548            }
2549            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2550                From::from(&self)
2551            }
2552        }
2553        #[automatically_derived]
2554        impl From<&BurnableSharesIncreased> for alloy_sol_types::private::LogData {
2555            #[inline]
2556            fn from(
2557                this: &BurnableSharesIncreased,
2558            ) -> alloy_sol_types::private::LogData {
2559                alloy_sol_types::SolEvent::encode_log_data(this)
2560            }
2561        }
2562    };
2563    #[derive(serde::Serialize, serde::Deserialize)]
2564    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2565    /**Event with signature `Deposit(address,address,uint256)` and selector `0x5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f62`.
2566```solidity
2567event Deposit(address staker, address strategy, uint256 shares);
2568```*/
2569    #[allow(
2570        non_camel_case_types,
2571        non_snake_case,
2572        clippy::pub_underscore_fields,
2573        clippy::style
2574    )]
2575    #[derive(Clone)]
2576    pub struct Deposit {
2577        #[allow(missing_docs)]
2578        pub staker: alloy::sol_types::private::Address,
2579        #[allow(missing_docs)]
2580        pub strategy: alloy::sol_types::private::Address,
2581        #[allow(missing_docs)]
2582        pub shares: alloy::sol_types::private::primitives::aliases::U256,
2583    }
2584    #[allow(
2585        non_camel_case_types,
2586        non_snake_case,
2587        clippy::pub_underscore_fields,
2588        clippy::style
2589    )]
2590    const _: () = {
2591        use alloy::sol_types as alloy_sol_types;
2592        #[automatically_derived]
2593        impl alloy_sol_types::SolEvent for Deposit {
2594            type DataTuple<'a> = (
2595                alloy::sol_types::sol_data::Address,
2596                alloy::sol_types::sol_data::Address,
2597                alloy::sol_types::sol_data::Uint<256>,
2598            );
2599            type DataToken<'a> = <Self::DataTuple<
2600                'a,
2601            > as alloy_sol_types::SolType>::Token<'a>;
2602            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
2603            const SIGNATURE: &'static str = "Deposit(address,address,uint256)";
2604            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
2605                85u8, 72u8, 200u8, 55u8, 171u8, 6u8, 140u8, 245u8, 106u8, 44u8, 36u8,
2606                121u8, 223u8, 8u8, 130u8, 164u8, 146u8, 47u8, 210u8, 3u8, 237u8, 183u8,
2607                81u8, 115u8, 33u8, 131u8, 29u8, 149u8, 7u8, 140u8, 95u8, 98u8,
2608            ]);
2609            const ANONYMOUS: bool = false;
2610            #[allow(unused_variables)]
2611            #[inline]
2612            fn new(
2613                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2614                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2615            ) -> Self {
2616                Self {
2617                    staker: data.0,
2618                    strategy: data.1,
2619                    shares: data.2,
2620                }
2621            }
2622            #[inline]
2623            fn check_signature(
2624                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2625            ) -> alloy_sol_types::Result<()> {
2626                if topics.0 != Self::SIGNATURE_HASH {
2627                    return Err(
2628                        alloy_sol_types::Error::invalid_event_signature_hash(
2629                            Self::SIGNATURE,
2630                            topics.0,
2631                            Self::SIGNATURE_HASH,
2632                        ),
2633                    );
2634                }
2635                Ok(())
2636            }
2637            #[inline]
2638            fn tokenize_body(&self) -> Self::DataToken<'_> {
2639                (
2640                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
2641                        &self.staker,
2642                    ),
2643                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
2644                        &self.strategy,
2645                    ),
2646                    <alloy::sol_types::sol_data::Uint<
2647                        256,
2648                    > as alloy_sol_types::SolType>::tokenize(&self.shares),
2649                )
2650            }
2651            #[inline]
2652            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2653                (Self::SIGNATURE_HASH.into(),)
2654            }
2655            #[inline]
2656            fn encode_topics_raw(
2657                &self,
2658                out: &mut [alloy_sol_types::abi::token::WordToken],
2659            ) -> alloy_sol_types::Result<()> {
2660                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2661                    return Err(alloy_sol_types::Error::Overrun);
2662                }
2663                out[0usize] = alloy_sol_types::abi::token::WordToken(
2664                    Self::SIGNATURE_HASH,
2665                );
2666                Ok(())
2667            }
2668        }
2669        #[automatically_derived]
2670        impl alloy_sol_types::private::IntoLogData for Deposit {
2671            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2672                From::from(self)
2673            }
2674            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2675                From::from(&self)
2676            }
2677        }
2678        #[automatically_derived]
2679        impl From<&Deposit> for alloy_sol_types::private::LogData {
2680            #[inline]
2681            fn from(this: &Deposit) -> alloy_sol_types::private::LogData {
2682                alloy_sol_types::SolEvent::encode_log_data(this)
2683            }
2684        }
2685    };
2686    #[derive(serde::Serialize, serde::Deserialize)]
2687    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2688    /**Event with signature `Initialized(uint8)` and selector `0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498`.
2689```solidity
2690event Initialized(uint8 version);
2691```*/
2692    #[allow(
2693        non_camel_case_types,
2694        non_snake_case,
2695        clippy::pub_underscore_fields,
2696        clippy::style
2697    )]
2698    #[derive(Clone)]
2699    pub struct Initialized {
2700        #[allow(missing_docs)]
2701        pub version: u8,
2702    }
2703    #[allow(
2704        non_camel_case_types,
2705        non_snake_case,
2706        clippy::pub_underscore_fields,
2707        clippy::style
2708    )]
2709    const _: () = {
2710        use alloy::sol_types as alloy_sol_types;
2711        #[automatically_derived]
2712        impl alloy_sol_types::SolEvent for Initialized {
2713            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,);
2714            type DataToken<'a> = <Self::DataTuple<
2715                'a,
2716            > as alloy_sol_types::SolType>::Token<'a>;
2717            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
2718            const SIGNATURE: &'static str = "Initialized(uint8)";
2719            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
2720                127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8,
2721                19u8, 56u8, 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8,
2722                146u8, 20u8, 96u8, 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8,
2723            ]);
2724            const ANONYMOUS: bool = false;
2725            #[allow(unused_variables)]
2726            #[inline]
2727            fn new(
2728                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2729                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2730            ) -> Self {
2731                Self { version: data.0 }
2732            }
2733            #[inline]
2734            fn check_signature(
2735                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2736            ) -> alloy_sol_types::Result<()> {
2737                if topics.0 != Self::SIGNATURE_HASH {
2738                    return Err(
2739                        alloy_sol_types::Error::invalid_event_signature_hash(
2740                            Self::SIGNATURE,
2741                            topics.0,
2742                            Self::SIGNATURE_HASH,
2743                        ),
2744                    );
2745                }
2746                Ok(())
2747            }
2748            #[inline]
2749            fn tokenize_body(&self) -> Self::DataToken<'_> {
2750                (
2751                    <alloy::sol_types::sol_data::Uint<
2752                        8,
2753                    > as alloy_sol_types::SolType>::tokenize(&self.version),
2754                )
2755            }
2756            #[inline]
2757            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2758                (Self::SIGNATURE_HASH.into(),)
2759            }
2760            #[inline]
2761            fn encode_topics_raw(
2762                &self,
2763                out: &mut [alloy_sol_types::abi::token::WordToken],
2764            ) -> alloy_sol_types::Result<()> {
2765                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2766                    return Err(alloy_sol_types::Error::Overrun);
2767                }
2768                out[0usize] = alloy_sol_types::abi::token::WordToken(
2769                    Self::SIGNATURE_HASH,
2770                );
2771                Ok(())
2772            }
2773        }
2774        #[automatically_derived]
2775        impl alloy_sol_types::private::IntoLogData for Initialized {
2776            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2777                From::from(self)
2778            }
2779            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2780                From::from(&self)
2781            }
2782        }
2783        #[automatically_derived]
2784        impl From<&Initialized> for alloy_sol_types::private::LogData {
2785            #[inline]
2786            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
2787                alloy_sol_types::SolEvent::encode_log_data(this)
2788            }
2789        }
2790    };
2791    #[derive(serde::Serialize, serde::Deserialize)]
2792    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2793    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
2794```solidity
2795event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
2796```*/
2797    #[allow(
2798        non_camel_case_types,
2799        non_snake_case,
2800        clippy::pub_underscore_fields,
2801        clippy::style
2802    )]
2803    #[derive(Clone)]
2804    pub struct OwnershipTransferred {
2805        #[allow(missing_docs)]
2806        pub previousOwner: alloy::sol_types::private::Address,
2807        #[allow(missing_docs)]
2808        pub newOwner: alloy::sol_types::private::Address,
2809    }
2810    #[allow(
2811        non_camel_case_types,
2812        non_snake_case,
2813        clippy::pub_underscore_fields,
2814        clippy::style
2815    )]
2816    const _: () = {
2817        use alloy::sol_types as alloy_sol_types;
2818        #[automatically_derived]
2819        impl alloy_sol_types::SolEvent for OwnershipTransferred {
2820            type DataTuple<'a> = ();
2821            type DataToken<'a> = <Self::DataTuple<
2822                'a,
2823            > as alloy_sol_types::SolType>::Token<'a>;
2824            type TopicList = (
2825                alloy_sol_types::sol_data::FixedBytes<32>,
2826                alloy::sol_types::sol_data::Address,
2827                alloy::sol_types::sol_data::Address,
2828            );
2829            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
2830            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
2831                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
2832                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
2833                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
2834            ]);
2835            const ANONYMOUS: bool = false;
2836            #[allow(unused_variables)]
2837            #[inline]
2838            fn new(
2839                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2840                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2841            ) -> Self {
2842                Self {
2843                    previousOwner: topics.1,
2844                    newOwner: topics.2,
2845                }
2846            }
2847            #[inline]
2848            fn check_signature(
2849                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2850            ) -> alloy_sol_types::Result<()> {
2851                if topics.0 != Self::SIGNATURE_HASH {
2852                    return Err(
2853                        alloy_sol_types::Error::invalid_event_signature_hash(
2854                            Self::SIGNATURE,
2855                            topics.0,
2856                            Self::SIGNATURE_HASH,
2857                        ),
2858                    );
2859                }
2860                Ok(())
2861            }
2862            #[inline]
2863            fn tokenize_body(&self) -> Self::DataToken<'_> {
2864                ()
2865            }
2866            #[inline]
2867            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2868                (
2869                    Self::SIGNATURE_HASH.into(),
2870                    self.previousOwner.clone(),
2871                    self.newOwner.clone(),
2872                )
2873            }
2874            #[inline]
2875            fn encode_topics_raw(
2876                &self,
2877                out: &mut [alloy_sol_types::abi::token::WordToken],
2878            ) -> alloy_sol_types::Result<()> {
2879                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2880                    return Err(alloy_sol_types::Error::Overrun);
2881                }
2882                out[0usize] = alloy_sol_types::abi::token::WordToken(
2883                    Self::SIGNATURE_HASH,
2884                );
2885                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
2886                    &self.previousOwner,
2887                );
2888                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
2889                    &self.newOwner,
2890                );
2891                Ok(())
2892            }
2893        }
2894        #[automatically_derived]
2895        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
2896            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2897                From::from(self)
2898            }
2899            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2900                From::from(&self)
2901            }
2902        }
2903        #[automatically_derived]
2904        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
2905            #[inline]
2906            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
2907                alloy_sol_types::SolEvent::encode_log_data(this)
2908            }
2909        }
2910    };
2911    #[derive(serde::Serialize, serde::Deserialize)]
2912    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2913    /**Event with signature `Paused(address,uint256)` and selector `0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d`.
2914```solidity
2915event Paused(address indexed account, uint256 newPausedStatus);
2916```*/
2917    #[allow(
2918        non_camel_case_types,
2919        non_snake_case,
2920        clippy::pub_underscore_fields,
2921        clippy::style
2922    )]
2923    #[derive(Clone)]
2924    pub struct Paused {
2925        #[allow(missing_docs)]
2926        pub account: alloy::sol_types::private::Address,
2927        #[allow(missing_docs)]
2928        pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256,
2929    }
2930    #[allow(
2931        non_camel_case_types,
2932        non_snake_case,
2933        clippy::pub_underscore_fields,
2934        clippy::style
2935    )]
2936    const _: () = {
2937        use alloy::sol_types as alloy_sol_types;
2938        #[automatically_derived]
2939        impl alloy_sol_types::SolEvent for Paused {
2940            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
2941            type DataToken<'a> = <Self::DataTuple<
2942                'a,
2943            > as alloy_sol_types::SolType>::Token<'a>;
2944            type TopicList = (
2945                alloy_sol_types::sol_data::FixedBytes<32>,
2946                alloy::sol_types::sol_data::Address,
2947            );
2948            const SIGNATURE: &'static str = "Paused(address,uint256)";
2949            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
2950                171u8, 64u8, 163u8, 116u8, 188u8, 81u8, 222u8, 55u8, 34u8, 0u8, 168u8,
2951                188u8, 152u8, 26u8, 248u8, 201u8, 236u8, 220u8, 8u8, 223u8, 218u8, 239u8,
2952                11u8, 182u8, 224u8, 159u8, 136u8, 243u8, 198u8, 22u8, 239u8, 61u8,
2953            ]);
2954            const ANONYMOUS: bool = false;
2955            #[allow(unused_variables)]
2956            #[inline]
2957            fn new(
2958                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2959                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2960            ) -> Self {
2961                Self {
2962                    account: topics.1,
2963                    newPausedStatus: data.0,
2964                }
2965            }
2966            #[inline]
2967            fn check_signature(
2968                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2969            ) -> alloy_sol_types::Result<()> {
2970                if topics.0 != Self::SIGNATURE_HASH {
2971                    return Err(
2972                        alloy_sol_types::Error::invalid_event_signature_hash(
2973                            Self::SIGNATURE,
2974                            topics.0,
2975                            Self::SIGNATURE_HASH,
2976                        ),
2977                    );
2978                }
2979                Ok(())
2980            }
2981            #[inline]
2982            fn tokenize_body(&self) -> Self::DataToken<'_> {
2983                (
2984                    <alloy::sol_types::sol_data::Uint<
2985                        256,
2986                    > as alloy_sol_types::SolType>::tokenize(&self.newPausedStatus),
2987                )
2988            }
2989            #[inline]
2990            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2991                (Self::SIGNATURE_HASH.into(), self.account.clone())
2992            }
2993            #[inline]
2994            fn encode_topics_raw(
2995                &self,
2996                out: &mut [alloy_sol_types::abi::token::WordToken],
2997            ) -> alloy_sol_types::Result<()> {
2998                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2999                    return Err(alloy_sol_types::Error::Overrun);
3000                }
3001                out[0usize] = alloy_sol_types::abi::token::WordToken(
3002                    Self::SIGNATURE_HASH,
3003                );
3004                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
3005                    &self.account,
3006                );
3007                Ok(())
3008            }
3009        }
3010        #[automatically_derived]
3011        impl alloy_sol_types::private::IntoLogData for Paused {
3012            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3013                From::from(self)
3014            }
3015            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3016                From::from(&self)
3017            }
3018        }
3019        #[automatically_derived]
3020        impl From<&Paused> for alloy_sol_types::private::LogData {
3021            #[inline]
3022            fn from(this: &Paused) -> alloy_sol_types::private::LogData {
3023                alloy_sol_types::SolEvent::encode_log_data(this)
3024            }
3025        }
3026    };
3027    #[derive(serde::Serialize, serde::Deserialize)]
3028    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3029    /**Event with signature `StrategyAddedToDepositWhitelist(address)` and selector `0x0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe`.
3030```solidity
3031event StrategyAddedToDepositWhitelist(address strategy);
3032```*/
3033    #[allow(
3034        non_camel_case_types,
3035        non_snake_case,
3036        clippy::pub_underscore_fields,
3037        clippy::style
3038    )]
3039    #[derive(Clone)]
3040    pub struct StrategyAddedToDepositWhitelist {
3041        #[allow(missing_docs)]
3042        pub strategy: alloy::sol_types::private::Address,
3043    }
3044    #[allow(
3045        non_camel_case_types,
3046        non_snake_case,
3047        clippy::pub_underscore_fields,
3048        clippy::style
3049    )]
3050    const _: () = {
3051        use alloy::sol_types as alloy_sol_types;
3052        #[automatically_derived]
3053        impl alloy_sol_types::SolEvent for StrategyAddedToDepositWhitelist {
3054            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
3055            type DataToken<'a> = <Self::DataTuple<
3056                'a,
3057            > as alloy_sol_types::SolType>::Token<'a>;
3058            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
3059            const SIGNATURE: &'static str = "StrategyAddedToDepositWhitelist(address)";
3060            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
3061                12u8, 53u8, 177u8, 125u8, 145u8, 201u8, 110u8, 178u8, 117u8, 28u8, 212u8,
3062                86u8, 225u8, 37u8, 47u8, 66u8, 163u8, 134u8, 229u8, 36u8, 239u8, 159u8,
3063                242u8, 110u8, 204u8, 153u8, 80u8, 133u8, 159u8, 220u8, 4u8, 254u8,
3064            ]);
3065            const ANONYMOUS: bool = false;
3066            #[allow(unused_variables)]
3067            #[inline]
3068            fn new(
3069                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
3070                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
3071            ) -> Self {
3072                Self { strategy: data.0 }
3073            }
3074            #[inline]
3075            fn check_signature(
3076                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
3077            ) -> alloy_sol_types::Result<()> {
3078                if topics.0 != Self::SIGNATURE_HASH {
3079                    return Err(
3080                        alloy_sol_types::Error::invalid_event_signature_hash(
3081                            Self::SIGNATURE,
3082                            topics.0,
3083                            Self::SIGNATURE_HASH,
3084                        ),
3085                    );
3086                }
3087                Ok(())
3088            }
3089            #[inline]
3090            fn tokenize_body(&self) -> Self::DataToken<'_> {
3091                (
3092                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3093                        &self.strategy,
3094                    ),
3095                )
3096            }
3097            #[inline]
3098            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
3099                (Self::SIGNATURE_HASH.into(),)
3100            }
3101            #[inline]
3102            fn encode_topics_raw(
3103                &self,
3104                out: &mut [alloy_sol_types::abi::token::WordToken],
3105            ) -> alloy_sol_types::Result<()> {
3106                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
3107                    return Err(alloy_sol_types::Error::Overrun);
3108                }
3109                out[0usize] = alloy_sol_types::abi::token::WordToken(
3110                    Self::SIGNATURE_HASH,
3111                );
3112                Ok(())
3113            }
3114        }
3115        #[automatically_derived]
3116        impl alloy_sol_types::private::IntoLogData for StrategyAddedToDepositWhitelist {
3117            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3118                From::from(self)
3119            }
3120            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3121                From::from(&self)
3122            }
3123        }
3124        #[automatically_derived]
3125        impl From<&StrategyAddedToDepositWhitelist>
3126        for alloy_sol_types::private::LogData {
3127            #[inline]
3128            fn from(
3129                this: &StrategyAddedToDepositWhitelist,
3130            ) -> alloy_sol_types::private::LogData {
3131                alloy_sol_types::SolEvent::encode_log_data(this)
3132            }
3133        }
3134    };
3135    #[derive(serde::Serialize, serde::Deserialize)]
3136    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3137    /**Event with signature `StrategyRemovedFromDepositWhitelist(address)` and selector `0x4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030`.
3138```solidity
3139event StrategyRemovedFromDepositWhitelist(address strategy);
3140```*/
3141    #[allow(
3142        non_camel_case_types,
3143        non_snake_case,
3144        clippy::pub_underscore_fields,
3145        clippy::style
3146    )]
3147    #[derive(Clone)]
3148    pub struct StrategyRemovedFromDepositWhitelist {
3149        #[allow(missing_docs)]
3150        pub strategy: alloy::sol_types::private::Address,
3151    }
3152    #[allow(
3153        non_camel_case_types,
3154        non_snake_case,
3155        clippy::pub_underscore_fields,
3156        clippy::style
3157    )]
3158    const _: () = {
3159        use alloy::sol_types as alloy_sol_types;
3160        #[automatically_derived]
3161        impl alloy_sol_types::SolEvent for StrategyRemovedFromDepositWhitelist {
3162            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
3163            type DataToken<'a> = <Self::DataTuple<
3164                'a,
3165            > as alloy_sol_types::SolType>::Token<'a>;
3166            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
3167            const SIGNATURE: &'static str = "StrategyRemovedFromDepositWhitelist(address)";
3168            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
3169                64u8, 116u8, 65u8, 59u8, 75u8, 68u8, 62u8, 78u8, 88u8, 1u8, 159u8, 40u8,
3170                85u8, 168u8, 118u8, 81u8, 19u8, 53u8, 140u8, 124u8, 114u8, 227u8, 149u8,
3171                9u8, 198u8, 175u8, 69u8, 252u8, 15u8, 91u8, 160u8, 48u8,
3172            ]);
3173            const ANONYMOUS: bool = false;
3174            #[allow(unused_variables)]
3175            #[inline]
3176            fn new(
3177                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
3178                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
3179            ) -> Self {
3180                Self { strategy: data.0 }
3181            }
3182            #[inline]
3183            fn check_signature(
3184                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
3185            ) -> alloy_sol_types::Result<()> {
3186                if topics.0 != Self::SIGNATURE_HASH {
3187                    return Err(
3188                        alloy_sol_types::Error::invalid_event_signature_hash(
3189                            Self::SIGNATURE,
3190                            topics.0,
3191                            Self::SIGNATURE_HASH,
3192                        ),
3193                    );
3194                }
3195                Ok(())
3196            }
3197            #[inline]
3198            fn tokenize_body(&self) -> Self::DataToken<'_> {
3199                (
3200                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3201                        &self.strategy,
3202                    ),
3203                )
3204            }
3205            #[inline]
3206            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
3207                (Self::SIGNATURE_HASH.into(),)
3208            }
3209            #[inline]
3210            fn encode_topics_raw(
3211                &self,
3212                out: &mut [alloy_sol_types::abi::token::WordToken],
3213            ) -> alloy_sol_types::Result<()> {
3214                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
3215                    return Err(alloy_sol_types::Error::Overrun);
3216                }
3217                out[0usize] = alloy_sol_types::abi::token::WordToken(
3218                    Self::SIGNATURE_HASH,
3219                );
3220                Ok(())
3221            }
3222        }
3223        #[automatically_derived]
3224        impl alloy_sol_types::private::IntoLogData
3225        for StrategyRemovedFromDepositWhitelist {
3226            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3227                From::from(self)
3228            }
3229            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3230                From::from(&self)
3231            }
3232        }
3233        #[automatically_derived]
3234        impl From<&StrategyRemovedFromDepositWhitelist>
3235        for alloy_sol_types::private::LogData {
3236            #[inline]
3237            fn from(
3238                this: &StrategyRemovedFromDepositWhitelist,
3239            ) -> alloy_sol_types::private::LogData {
3240                alloy_sol_types::SolEvent::encode_log_data(this)
3241            }
3242        }
3243    };
3244    #[derive(serde::Serialize, serde::Deserialize)]
3245    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3246    /**Event with signature `StrategyWhitelisterChanged(address,address)` and selector `0x4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29`.
3247```solidity
3248event StrategyWhitelisterChanged(address previousAddress, address newAddress);
3249```*/
3250    #[allow(
3251        non_camel_case_types,
3252        non_snake_case,
3253        clippy::pub_underscore_fields,
3254        clippy::style
3255    )]
3256    #[derive(Clone)]
3257    pub struct StrategyWhitelisterChanged {
3258        #[allow(missing_docs)]
3259        pub previousAddress: alloy::sol_types::private::Address,
3260        #[allow(missing_docs)]
3261        pub newAddress: 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        #[automatically_derived]
3272        impl alloy_sol_types::SolEvent for StrategyWhitelisterChanged {
3273            type DataTuple<'a> = (
3274                alloy::sol_types::sol_data::Address,
3275                alloy::sol_types::sol_data::Address,
3276            );
3277            type DataToken<'a> = <Self::DataTuple<
3278                'a,
3279            > as alloy_sol_types::SolType>::Token<'a>;
3280            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
3281            const SIGNATURE: &'static str = "StrategyWhitelisterChanged(address,address)";
3282            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
3283                66u8, 100u8, 39u8, 94u8, 89u8, 57u8, 85u8, 255u8, 157u8, 97u8, 70u8,
3284                165u8, 26u8, 69u8, 37u8, 246u8, 221u8, 172u8, 226u8, 232u8, 29u8, 185u8,
3285                57u8, 26u8, 188u8, 201u8, 209u8, 202u8, 72u8, 4u8, 125u8, 41u8,
3286            ]);
3287            const ANONYMOUS: bool = false;
3288            #[allow(unused_variables)]
3289            #[inline]
3290            fn new(
3291                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
3292                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
3293            ) -> Self {
3294                Self {
3295                    previousAddress: data.0,
3296                    newAddress: data.1,
3297                }
3298            }
3299            #[inline]
3300            fn check_signature(
3301                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
3302            ) -> alloy_sol_types::Result<()> {
3303                if topics.0 != Self::SIGNATURE_HASH {
3304                    return Err(
3305                        alloy_sol_types::Error::invalid_event_signature_hash(
3306                            Self::SIGNATURE,
3307                            topics.0,
3308                            Self::SIGNATURE_HASH,
3309                        ),
3310                    );
3311                }
3312                Ok(())
3313            }
3314            #[inline]
3315            fn tokenize_body(&self) -> Self::DataToken<'_> {
3316                (
3317                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3318                        &self.previousAddress,
3319                    ),
3320                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3321                        &self.newAddress,
3322                    ),
3323                )
3324            }
3325            #[inline]
3326            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
3327                (Self::SIGNATURE_HASH.into(),)
3328            }
3329            #[inline]
3330            fn encode_topics_raw(
3331                &self,
3332                out: &mut [alloy_sol_types::abi::token::WordToken],
3333            ) -> alloy_sol_types::Result<()> {
3334                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
3335                    return Err(alloy_sol_types::Error::Overrun);
3336                }
3337                out[0usize] = alloy_sol_types::abi::token::WordToken(
3338                    Self::SIGNATURE_HASH,
3339                );
3340                Ok(())
3341            }
3342        }
3343        #[automatically_derived]
3344        impl alloy_sol_types::private::IntoLogData for StrategyWhitelisterChanged {
3345            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3346                From::from(self)
3347            }
3348            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3349                From::from(&self)
3350            }
3351        }
3352        #[automatically_derived]
3353        impl From<&StrategyWhitelisterChanged> for alloy_sol_types::private::LogData {
3354            #[inline]
3355            fn from(
3356                this: &StrategyWhitelisterChanged,
3357            ) -> alloy_sol_types::private::LogData {
3358                alloy_sol_types::SolEvent::encode_log_data(this)
3359            }
3360        }
3361    };
3362    #[derive(serde::Serialize, serde::Deserialize)]
3363    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3364    /**Event with signature `Unpaused(address,uint256)` and selector `0x3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c`.
3365```solidity
3366event Unpaused(address indexed account, uint256 newPausedStatus);
3367```*/
3368    #[allow(
3369        non_camel_case_types,
3370        non_snake_case,
3371        clippy::pub_underscore_fields,
3372        clippy::style
3373    )]
3374    #[derive(Clone)]
3375    pub struct Unpaused {
3376        #[allow(missing_docs)]
3377        pub account: alloy::sol_types::private::Address,
3378        #[allow(missing_docs)]
3379        pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256,
3380    }
3381    #[allow(
3382        non_camel_case_types,
3383        non_snake_case,
3384        clippy::pub_underscore_fields,
3385        clippy::style
3386    )]
3387    const _: () = {
3388        use alloy::sol_types as alloy_sol_types;
3389        #[automatically_derived]
3390        impl alloy_sol_types::SolEvent for Unpaused {
3391            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
3392            type DataToken<'a> = <Self::DataTuple<
3393                'a,
3394            > as alloy_sol_types::SolType>::Token<'a>;
3395            type TopicList = (
3396                alloy_sol_types::sol_data::FixedBytes<32>,
3397                alloy::sol_types::sol_data::Address,
3398            );
3399            const SIGNATURE: &'static str = "Unpaused(address,uint256)";
3400            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
3401                53u8, 130u8, 209u8, 130u8, 142u8, 38u8, 191u8, 86u8, 189u8, 128u8, 21u8,
3402                2u8, 188u8, 2u8, 26u8, 192u8, 188u8, 138u8, 251u8, 87u8, 200u8, 38u8,
3403                228u8, 152u8, 107u8, 69u8, 89u8, 60u8, 143u8, 173u8, 56u8, 156u8,
3404            ]);
3405            const ANONYMOUS: bool = false;
3406            #[allow(unused_variables)]
3407            #[inline]
3408            fn new(
3409                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
3410                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
3411            ) -> Self {
3412                Self {
3413                    account: topics.1,
3414                    newPausedStatus: data.0,
3415                }
3416            }
3417            #[inline]
3418            fn check_signature(
3419                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
3420            ) -> alloy_sol_types::Result<()> {
3421                if topics.0 != Self::SIGNATURE_HASH {
3422                    return Err(
3423                        alloy_sol_types::Error::invalid_event_signature_hash(
3424                            Self::SIGNATURE,
3425                            topics.0,
3426                            Self::SIGNATURE_HASH,
3427                        ),
3428                    );
3429                }
3430                Ok(())
3431            }
3432            #[inline]
3433            fn tokenize_body(&self) -> Self::DataToken<'_> {
3434                (
3435                    <alloy::sol_types::sol_data::Uint<
3436                        256,
3437                    > as alloy_sol_types::SolType>::tokenize(&self.newPausedStatus),
3438                )
3439            }
3440            #[inline]
3441            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
3442                (Self::SIGNATURE_HASH.into(), self.account.clone())
3443            }
3444            #[inline]
3445            fn encode_topics_raw(
3446                &self,
3447                out: &mut [alloy_sol_types::abi::token::WordToken],
3448            ) -> alloy_sol_types::Result<()> {
3449                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
3450                    return Err(alloy_sol_types::Error::Overrun);
3451                }
3452                out[0usize] = alloy_sol_types::abi::token::WordToken(
3453                    Self::SIGNATURE_HASH,
3454                );
3455                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
3456                    &self.account,
3457                );
3458                Ok(())
3459            }
3460        }
3461        #[automatically_derived]
3462        impl alloy_sol_types::private::IntoLogData for Unpaused {
3463            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3464                From::from(self)
3465            }
3466            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3467                From::from(&self)
3468            }
3469        }
3470        #[automatically_derived]
3471        impl From<&Unpaused> for alloy_sol_types::private::LogData {
3472            #[inline]
3473            fn from(this: &Unpaused) -> alloy_sol_types::private::LogData {
3474                alloy_sol_types::SolEvent::encode_log_data(this)
3475            }
3476        }
3477    };
3478    /**Constructor`.
3479```solidity
3480constructor(address _delegation, address _pauserRegistry, string _version);
3481```*/
3482    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3483    #[derive(Clone)]
3484    pub struct constructorCall {
3485        #[allow(missing_docs)]
3486        pub _delegation: alloy::sol_types::private::Address,
3487        #[allow(missing_docs)]
3488        pub _pauserRegistry: alloy::sol_types::private::Address,
3489        #[allow(missing_docs)]
3490        pub _version: alloy::sol_types::private::String,
3491    }
3492    const _: () = {
3493        use alloy::sol_types as alloy_sol_types;
3494        {
3495            #[doc(hidden)]
3496            type UnderlyingSolTuple<'a> = (
3497                alloy::sol_types::sol_data::Address,
3498                alloy::sol_types::sol_data::Address,
3499                alloy::sol_types::sol_data::String,
3500            );
3501            #[doc(hidden)]
3502            type UnderlyingRustTuple<'a> = (
3503                alloy::sol_types::private::Address,
3504                alloy::sol_types::private::Address,
3505                alloy::sol_types::private::String,
3506            );
3507            #[cfg(test)]
3508            #[allow(dead_code, unreachable_patterns)]
3509            fn _type_assertion(
3510                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3511            ) {
3512                match _t {
3513                    alloy_sol_types::private::AssertTypeEq::<
3514                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3515                    >(_) => {}
3516                }
3517            }
3518            #[automatically_derived]
3519            #[doc(hidden)]
3520            impl ::core::convert::From<constructorCall> for UnderlyingRustTuple<'_> {
3521                fn from(value: constructorCall) -> Self {
3522                    (value._delegation, value._pauserRegistry, value._version)
3523                }
3524            }
3525            #[automatically_derived]
3526            #[doc(hidden)]
3527            impl ::core::convert::From<UnderlyingRustTuple<'_>> for constructorCall {
3528                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3529                    Self {
3530                        _delegation: tuple.0,
3531                        _pauserRegistry: tuple.1,
3532                        _version: tuple.2,
3533                    }
3534                }
3535            }
3536        }
3537        #[automatically_derived]
3538        impl alloy_sol_types::SolConstructor for constructorCall {
3539            type Parameters<'a> = (
3540                alloy::sol_types::sol_data::Address,
3541                alloy::sol_types::sol_data::Address,
3542                alloy::sol_types::sol_data::String,
3543            );
3544            type Token<'a> = <Self::Parameters<
3545                'a,
3546            > as alloy_sol_types::SolType>::Token<'a>;
3547            #[inline]
3548            fn new<'a>(
3549                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3550            ) -> Self {
3551                tuple.into()
3552            }
3553            #[inline]
3554            fn tokenize(&self) -> Self::Token<'_> {
3555                (
3556                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3557                        &self._delegation,
3558                    ),
3559                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3560                        &self._pauserRegistry,
3561                    ),
3562                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
3563                        &self._version,
3564                    ),
3565                )
3566            }
3567        }
3568    };
3569    #[derive(serde::Serialize, serde::Deserialize)]
3570    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3571    /**Function with signature `DEFAULT_BURN_ADDRESS()` and selector `0xf3b4a000`.
3572```solidity
3573function DEFAULT_BURN_ADDRESS() external view returns (address);
3574```*/
3575    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3576    #[derive(Clone)]
3577    pub struct DEFAULT_BURN_ADDRESSCall;
3578    #[derive(serde::Serialize, serde::Deserialize)]
3579    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3580    ///Container type for the return parameters of the [`DEFAULT_BURN_ADDRESS()`](DEFAULT_BURN_ADDRESSCall) function.
3581    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3582    #[derive(Clone)]
3583    pub struct DEFAULT_BURN_ADDRESSReturn {
3584        #[allow(missing_docs)]
3585        pub _0: alloy::sol_types::private::Address,
3586    }
3587    #[allow(
3588        non_camel_case_types,
3589        non_snake_case,
3590        clippy::pub_underscore_fields,
3591        clippy::style
3592    )]
3593    const _: () = {
3594        use alloy::sol_types as alloy_sol_types;
3595        {
3596            #[doc(hidden)]
3597            type UnderlyingSolTuple<'a> = ();
3598            #[doc(hidden)]
3599            type UnderlyingRustTuple<'a> = ();
3600            #[cfg(test)]
3601            #[allow(dead_code, unreachable_patterns)]
3602            fn _type_assertion(
3603                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3604            ) {
3605                match _t {
3606                    alloy_sol_types::private::AssertTypeEq::<
3607                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3608                    >(_) => {}
3609                }
3610            }
3611            #[automatically_derived]
3612            #[doc(hidden)]
3613            impl ::core::convert::From<DEFAULT_BURN_ADDRESSCall>
3614            for UnderlyingRustTuple<'_> {
3615                fn from(value: DEFAULT_BURN_ADDRESSCall) -> Self {
3616                    ()
3617                }
3618            }
3619            #[automatically_derived]
3620            #[doc(hidden)]
3621            impl ::core::convert::From<UnderlyingRustTuple<'_>>
3622            for DEFAULT_BURN_ADDRESSCall {
3623                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3624                    Self
3625                }
3626            }
3627        }
3628        {
3629            #[doc(hidden)]
3630            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
3631            #[doc(hidden)]
3632            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
3633            #[cfg(test)]
3634            #[allow(dead_code, unreachable_patterns)]
3635            fn _type_assertion(
3636                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3637            ) {
3638                match _t {
3639                    alloy_sol_types::private::AssertTypeEq::<
3640                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3641                    >(_) => {}
3642                }
3643            }
3644            #[automatically_derived]
3645            #[doc(hidden)]
3646            impl ::core::convert::From<DEFAULT_BURN_ADDRESSReturn>
3647            for UnderlyingRustTuple<'_> {
3648                fn from(value: DEFAULT_BURN_ADDRESSReturn) -> Self {
3649                    (value._0,)
3650                }
3651            }
3652            #[automatically_derived]
3653            #[doc(hidden)]
3654            impl ::core::convert::From<UnderlyingRustTuple<'_>>
3655            for DEFAULT_BURN_ADDRESSReturn {
3656                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3657                    Self { _0: tuple.0 }
3658                }
3659            }
3660        }
3661        #[automatically_derived]
3662        impl alloy_sol_types::SolCall for DEFAULT_BURN_ADDRESSCall {
3663            type Parameters<'a> = ();
3664            type Token<'a> = <Self::Parameters<
3665                'a,
3666            > as alloy_sol_types::SolType>::Token<'a>;
3667            type Return = alloy::sol_types::private::Address;
3668            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
3669            type ReturnToken<'a> = <Self::ReturnTuple<
3670                'a,
3671            > as alloy_sol_types::SolType>::Token<'a>;
3672            const SIGNATURE: &'static str = "DEFAULT_BURN_ADDRESS()";
3673            const SELECTOR: [u8; 4] = [243u8, 180u8, 160u8, 0u8];
3674            #[inline]
3675            fn new<'a>(
3676                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3677            ) -> Self {
3678                tuple.into()
3679            }
3680            #[inline]
3681            fn tokenize(&self) -> Self::Token<'_> {
3682                ()
3683            }
3684            #[inline]
3685            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
3686                (
3687                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3688                        ret,
3689                    ),
3690                )
3691            }
3692            #[inline]
3693            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
3694                <Self::ReturnTuple<
3695                    '_,
3696                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
3697                    .map(|r| {
3698                        let r: DEFAULT_BURN_ADDRESSReturn = r.into();
3699                        r._0
3700                    })
3701            }
3702            #[inline]
3703            fn abi_decode_returns_validate(
3704                data: &[u8],
3705            ) -> alloy_sol_types::Result<Self::Return> {
3706                <Self::ReturnTuple<
3707                    '_,
3708                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3709                    .map(|r| {
3710                        let r: DEFAULT_BURN_ADDRESSReturn = r.into();
3711                        r._0
3712                    })
3713            }
3714        }
3715    };
3716    #[derive(serde::Serialize, serde::Deserialize)]
3717    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3718    /**Function with signature `DEPOSIT_TYPEHASH()` and selector `0x48825e94`.
3719```solidity
3720function DEPOSIT_TYPEHASH() external view returns (bytes32);
3721```*/
3722    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3723    #[derive(Clone)]
3724    pub struct DEPOSIT_TYPEHASHCall;
3725    #[derive(serde::Serialize, serde::Deserialize)]
3726    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3727    ///Container type for the return parameters of the [`DEPOSIT_TYPEHASH()`](DEPOSIT_TYPEHASHCall) function.
3728    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3729    #[derive(Clone)]
3730    pub struct DEPOSIT_TYPEHASHReturn {
3731        #[allow(missing_docs)]
3732        pub _0: alloy::sol_types::private::FixedBytes<32>,
3733    }
3734    #[allow(
3735        non_camel_case_types,
3736        non_snake_case,
3737        clippy::pub_underscore_fields,
3738        clippy::style
3739    )]
3740    const _: () = {
3741        use alloy::sol_types as alloy_sol_types;
3742        {
3743            #[doc(hidden)]
3744            type UnderlyingSolTuple<'a> = ();
3745            #[doc(hidden)]
3746            type UnderlyingRustTuple<'a> = ();
3747            #[cfg(test)]
3748            #[allow(dead_code, unreachable_patterns)]
3749            fn _type_assertion(
3750                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3751            ) {
3752                match _t {
3753                    alloy_sol_types::private::AssertTypeEq::<
3754                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3755                    >(_) => {}
3756                }
3757            }
3758            #[automatically_derived]
3759            #[doc(hidden)]
3760            impl ::core::convert::From<DEPOSIT_TYPEHASHCall>
3761            for UnderlyingRustTuple<'_> {
3762                fn from(value: DEPOSIT_TYPEHASHCall) -> Self {
3763                    ()
3764                }
3765            }
3766            #[automatically_derived]
3767            #[doc(hidden)]
3768            impl ::core::convert::From<UnderlyingRustTuple<'_>>
3769            for DEPOSIT_TYPEHASHCall {
3770                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3771                    Self
3772                }
3773            }
3774        }
3775        {
3776            #[doc(hidden)]
3777            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
3778            #[doc(hidden)]
3779            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
3780            #[cfg(test)]
3781            #[allow(dead_code, unreachable_patterns)]
3782            fn _type_assertion(
3783                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3784            ) {
3785                match _t {
3786                    alloy_sol_types::private::AssertTypeEq::<
3787                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3788                    >(_) => {}
3789                }
3790            }
3791            #[automatically_derived]
3792            #[doc(hidden)]
3793            impl ::core::convert::From<DEPOSIT_TYPEHASHReturn>
3794            for UnderlyingRustTuple<'_> {
3795                fn from(value: DEPOSIT_TYPEHASHReturn) -> Self {
3796                    (value._0,)
3797                }
3798            }
3799            #[automatically_derived]
3800            #[doc(hidden)]
3801            impl ::core::convert::From<UnderlyingRustTuple<'_>>
3802            for DEPOSIT_TYPEHASHReturn {
3803                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3804                    Self { _0: tuple.0 }
3805                }
3806            }
3807        }
3808        #[automatically_derived]
3809        impl alloy_sol_types::SolCall for DEPOSIT_TYPEHASHCall {
3810            type Parameters<'a> = ();
3811            type Token<'a> = <Self::Parameters<
3812                'a,
3813            > as alloy_sol_types::SolType>::Token<'a>;
3814            type Return = alloy::sol_types::private::FixedBytes<32>;
3815            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
3816            type ReturnToken<'a> = <Self::ReturnTuple<
3817                'a,
3818            > as alloy_sol_types::SolType>::Token<'a>;
3819            const SIGNATURE: &'static str = "DEPOSIT_TYPEHASH()";
3820            const SELECTOR: [u8; 4] = [72u8, 130u8, 94u8, 148u8];
3821            #[inline]
3822            fn new<'a>(
3823                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3824            ) -> Self {
3825                tuple.into()
3826            }
3827            #[inline]
3828            fn tokenize(&self) -> Self::Token<'_> {
3829                ()
3830            }
3831            #[inline]
3832            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
3833                (
3834                    <alloy::sol_types::sol_data::FixedBytes<
3835                        32,
3836                    > as alloy_sol_types::SolType>::tokenize(ret),
3837                )
3838            }
3839            #[inline]
3840            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
3841                <Self::ReturnTuple<
3842                    '_,
3843                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
3844                    .map(|r| {
3845                        let r: DEPOSIT_TYPEHASHReturn = r.into();
3846                        r._0
3847                    })
3848            }
3849            #[inline]
3850            fn abi_decode_returns_validate(
3851                data: &[u8],
3852            ) -> alloy_sol_types::Result<Self::Return> {
3853                <Self::ReturnTuple<
3854                    '_,
3855                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3856                    .map(|r| {
3857                        let r: DEPOSIT_TYPEHASHReturn = r.into();
3858                        r._0
3859                    })
3860            }
3861        }
3862    };
3863    #[derive(serde::Serialize, serde::Deserialize)]
3864    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3865    /**Function with signature `addShares(address,address,uint256)` and selector `0x50ff7225`.
3866```solidity
3867function addShares(address staker, address strategy, uint256 shares) external returns (uint256, uint256);
3868```*/
3869    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3870    #[derive(Clone)]
3871    pub struct addSharesCall {
3872        #[allow(missing_docs)]
3873        pub staker: alloy::sol_types::private::Address,
3874        #[allow(missing_docs)]
3875        pub strategy: alloy::sol_types::private::Address,
3876        #[allow(missing_docs)]
3877        pub shares: alloy::sol_types::private::primitives::aliases::U256,
3878    }
3879    #[derive(serde::Serialize, serde::Deserialize)]
3880    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3881    ///Container type for the return parameters of the [`addShares(address,address,uint256)`](addSharesCall) function.
3882    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3883    #[derive(Clone)]
3884    pub struct addSharesReturn {
3885        #[allow(missing_docs)]
3886        pub _0: alloy::sol_types::private::primitives::aliases::U256,
3887        #[allow(missing_docs)]
3888        pub _1: alloy::sol_types::private::primitives::aliases::U256,
3889    }
3890    #[allow(
3891        non_camel_case_types,
3892        non_snake_case,
3893        clippy::pub_underscore_fields,
3894        clippy::style
3895    )]
3896    const _: () = {
3897        use alloy::sol_types as alloy_sol_types;
3898        {
3899            #[doc(hidden)]
3900            type UnderlyingSolTuple<'a> = (
3901                alloy::sol_types::sol_data::Address,
3902                alloy::sol_types::sol_data::Address,
3903                alloy::sol_types::sol_data::Uint<256>,
3904            );
3905            #[doc(hidden)]
3906            type UnderlyingRustTuple<'a> = (
3907                alloy::sol_types::private::Address,
3908                alloy::sol_types::private::Address,
3909                alloy::sol_types::private::primitives::aliases::U256,
3910            );
3911            #[cfg(test)]
3912            #[allow(dead_code, unreachable_patterns)]
3913            fn _type_assertion(
3914                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3915            ) {
3916                match _t {
3917                    alloy_sol_types::private::AssertTypeEq::<
3918                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3919                    >(_) => {}
3920                }
3921            }
3922            #[automatically_derived]
3923            #[doc(hidden)]
3924            impl ::core::convert::From<addSharesCall> for UnderlyingRustTuple<'_> {
3925                fn from(value: addSharesCall) -> Self {
3926                    (value.staker, value.strategy, value.shares)
3927                }
3928            }
3929            #[automatically_derived]
3930            #[doc(hidden)]
3931            impl ::core::convert::From<UnderlyingRustTuple<'_>> for addSharesCall {
3932                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3933                    Self {
3934                        staker: tuple.0,
3935                        strategy: tuple.1,
3936                        shares: tuple.2,
3937                    }
3938                }
3939            }
3940        }
3941        {
3942            #[doc(hidden)]
3943            type UnderlyingSolTuple<'a> = (
3944                alloy::sol_types::sol_data::Uint<256>,
3945                alloy::sol_types::sol_data::Uint<256>,
3946            );
3947            #[doc(hidden)]
3948            type UnderlyingRustTuple<'a> = (
3949                alloy::sol_types::private::primitives::aliases::U256,
3950                alloy::sol_types::private::primitives::aliases::U256,
3951            );
3952            #[cfg(test)]
3953            #[allow(dead_code, unreachable_patterns)]
3954            fn _type_assertion(
3955                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3956            ) {
3957                match _t {
3958                    alloy_sol_types::private::AssertTypeEq::<
3959                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3960                    >(_) => {}
3961                }
3962            }
3963            #[automatically_derived]
3964            #[doc(hidden)]
3965            impl ::core::convert::From<addSharesReturn> for UnderlyingRustTuple<'_> {
3966                fn from(value: addSharesReturn) -> Self {
3967                    (value._0, value._1)
3968                }
3969            }
3970            #[automatically_derived]
3971            #[doc(hidden)]
3972            impl ::core::convert::From<UnderlyingRustTuple<'_>> for addSharesReturn {
3973                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3974                    Self { _0: tuple.0, _1: tuple.1 }
3975                }
3976            }
3977        }
3978        impl addSharesReturn {
3979            fn _tokenize(
3980                &self,
3981            ) -> <addSharesCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
3982                (
3983                    <alloy::sol_types::sol_data::Uint<
3984                        256,
3985                    > as alloy_sol_types::SolType>::tokenize(&self._0),
3986                    <alloy::sol_types::sol_data::Uint<
3987                        256,
3988                    > as alloy_sol_types::SolType>::tokenize(&self._1),
3989                )
3990            }
3991        }
3992        #[automatically_derived]
3993        impl alloy_sol_types::SolCall for addSharesCall {
3994            type Parameters<'a> = (
3995                alloy::sol_types::sol_data::Address,
3996                alloy::sol_types::sol_data::Address,
3997                alloy::sol_types::sol_data::Uint<256>,
3998            );
3999            type Token<'a> = <Self::Parameters<
4000                'a,
4001            > as alloy_sol_types::SolType>::Token<'a>;
4002            type Return = addSharesReturn;
4003            type ReturnTuple<'a> = (
4004                alloy::sol_types::sol_data::Uint<256>,
4005                alloy::sol_types::sol_data::Uint<256>,
4006            );
4007            type ReturnToken<'a> = <Self::ReturnTuple<
4008                'a,
4009            > as alloy_sol_types::SolType>::Token<'a>;
4010            const SIGNATURE: &'static str = "addShares(address,address,uint256)";
4011            const SELECTOR: [u8; 4] = [80u8, 255u8, 114u8, 37u8];
4012            #[inline]
4013            fn new<'a>(
4014                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4015            ) -> Self {
4016                tuple.into()
4017            }
4018            #[inline]
4019            fn tokenize(&self) -> Self::Token<'_> {
4020                (
4021                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4022                        &self.staker,
4023                    ),
4024                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4025                        &self.strategy,
4026                    ),
4027                    <alloy::sol_types::sol_data::Uint<
4028                        256,
4029                    > as alloy_sol_types::SolType>::tokenize(&self.shares),
4030                )
4031            }
4032            #[inline]
4033            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4034                addSharesReturn::_tokenize(ret)
4035            }
4036            #[inline]
4037            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4038                <Self::ReturnTuple<
4039                    '_,
4040                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4041                    .map(Into::into)
4042            }
4043            #[inline]
4044            fn abi_decode_returns_validate(
4045                data: &[u8],
4046            ) -> alloy_sol_types::Result<Self::Return> {
4047                <Self::ReturnTuple<
4048                    '_,
4049                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4050                    .map(Into::into)
4051            }
4052        }
4053    };
4054    #[derive(serde::Serialize, serde::Deserialize)]
4055    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4056    /**Function with signature `addStrategiesToDepositWhitelist(address[])` and selector `0x5de08ff2`.
4057```solidity
4058function addStrategiesToDepositWhitelist(address[] memory strategiesToWhitelist) external;
4059```*/
4060    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4061    #[derive(Clone)]
4062    pub struct addStrategiesToDepositWhitelistCall {
4063        #[allow(missing_docs)]
4064        pub strategiesToWhitelist: alloy::sol_types::private::Vec<
4065            alloy::sol_types::private::Address,
4066        >,
4067    }
4068    ///Container type for the return parameters of the [`addStrategiesToDepositWhitelist(address[])`](addStrategiesToDepositWhitelistCall) function.
4069    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4070    #[derive(Clone)]
4071    pub struct addStrategiesToDepositWhitelistReturn {}
4072    #[allow(
4073        non_camel_case_types,
4074        non_snake_case,
4075        clippy::pub_underscore_fields,
4076        clippy::style
4077    )]
4078    const _: () = {
4079        use alloy::sol_types as alloy_sol_types;
4080        {
4081            #[doc(hidden)]
4082            type UnderlyingSolTuple<'a> = (
4083                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
4084            );
4085            #[doc(hidden)]
4086            type UnderlyingRustTuple<'a> = (
4087                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
4088            );
4089            #[cfg(test)]
4090            #[allow(dead_code, unreachable_patterns)]
4091            fn _type_assertion(
4092                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4093            ) {
4094                match _t {
4095                    alloy_sol_types::private::AssertTypeEq::<
4096                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4097                    >(_) => {}
4098                }
4099            }
4100            #[automatically_derived]
4101            #[doc(hidden)]
4102            impl ::core::convert::From<addStrategiesToDepositWhitelistCall>
4103            for UnderlyingRustTuple<'_> {
4104                fn from(value: addStrategiesToDepositWhitelistCall) -> Self {
4105                    (value.strategiesToWhitelist,)
4106                }
4107            }
4108            #[automatically_derived]
4109            #[doc(hidden)]
4110            impl ::core::convert::From<UnderlyingRustTuple<'_>>
4111            for addStrategiesToDepositWhitelistCall {
4112                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4113                    Self {
4114                        strategiesToWhitelist: tuple.0,
4115                    }
4116                }
4117            }
4118        }
4119        {
4120            #[doc(hidden)]
4121            type UnderlyingSolTuple<'a> = ();
4122            #[doc(hidden)]
4123            type UnderlyingRustTuple<'a> = ();
4124            #[cfg(test)]
4125            #[allow(dead_code, unreachable_patterns)]
4126            fn _type_assertion(
4127                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4128            ) {
4129                match _t {
4130                    alloy_sol_types::private::AssertTypeEq::<
4131                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4132                    >(_) => {}
4133                }
4134            }
4135            #[automatically_derived]
4136            #[doc(hidden)]
4137            impl ::core::convert::From<addStrategiesToDepositWhitelistReturn>
4138            for UnderlyingRustTuple<'_> {
4139                fn from(value: addStrategiesToDepositWhitelistReturn) -> Self {
4140                    ()
4141                }
4142            }
4143            #[automatically_derived]
4144            #[doc(hidden)]
4145            impl ::core::convert::From<UnderlyingRustTuple<'_>>
4146            for addStrategiesToDepositWhitelistReturn {
4147                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4148                    Self {}
4149                }
4150            }
4151        }
4152        impl addStrategiesToDepositWhitelistReturn {
4153            fn _tokenize(
4154                &self,
4155            ) -> <addStrategiesToDepositWhitelistCall as alloy_sol_types::SolCall>::ReturnToken<
4156                '_,
4157            > {
4158                ()
4159            }
4160        }
4161        #[automatically_derived]
4162        impl alloy_sol_types::SolCall for addStrategiesToDepositWhitelistCall {
4163            type Parameters<'a> = (
4164                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
4165            );
4166            type Token<'a> = <Self::Parameters<
4167                'a,
4168            > as alloy_sol_types::SolType>::Token<'a>;
4169            type Return = addStrategiesToDepositWhitelistReturn;
4170            type ReturnTuple<'a> = ();
4171            type ReturnToken<'a> = <Self::ReturnTuple<
4172                'a,
4173            > as alloy_sol_types::SolType>::Token<'a>;
4174            const SIGNATURE: &'static str = "addStrategiesToDepositWhitelist(address[])";
4175            const SELECTOR: [u8; 4] = [93u8, 224u8, 143u8, 242u8];
4176            #[inline]
4177            fn new<'a>(
4178                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4179            ) -> Self {
4180                tuple.into()
4181            }
4182            #[inline]
4183            fn tokenize(&self) -> Self::Token<'_> {
4184                (
4185                    <alloy::sol_types::sol_data::Array<
4186                        alloy::sol_types::sol_data::Address,
4187                    > as alloy_sol_types::SolType>::tokenize(
4188                        &self.strategiesToWhitelist,
4189                    ),
4190                )
4191            }
4192            #[inline]
4193            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4194                addStrategiesToDepositWhitelistReturn::_tokenize(ret)
4195            }
4196            #[inline]
4197            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4198                <Self::ReturnTuple<
4199                    '_,
4200                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4201                    .map(Into::into)
4202            }
4203            #[inline]
4204            fn abi_decode_returns_validate(
4205                data: &[u8],
4206            ) -> alloy_sol_types::Result<Self::Return> {
4207                <Self::ReturnTuple<
4208                    '_,
4209                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4210                    .map(Into::into)
4211            }
4212        }
4213    };
4214    #[derive(serde::Serialize, serde::Deserialize)]
4215    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4216    /**Function with signature `burnShares(address)` and selector `0x4b6d5d6e`.
4217```solidity
4218function burnShares(address strategy) external;
4219```*/
4220    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4221    #[derive(Clone)]
4222    pub struct burnSharesCall {
4223        #[allow(missing_docs)]
4224        pub strategy: alloy::sol_types::private::Address,
4225    }
4226    ///Container type for the return parameters of the [`burnShares(address)`](burnSharesCall) function.
4227    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4228    #[derive(Clone)]
4229    pub struct burnSharesReturn {}
4230    #[allow(
4231        non_camel_case_types,
4232        non_snake_case,
4233        clippy::pub_underscore_fields,
4234        clippy::style
4235    )]
4236    const _: () = {
4237        use alloy::sol_types as alloy_sol_types;
4238        {
4239            #[doc(hidden)]
4240            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4241            #[doc(hidden)]
4242            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4243            #[cfg(test)]
4244            #[allow(dead_code, unreachable_patterns)]
4245            fn _type_assertion(
4246                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4247            ) {
4248                match _t {
4249                    alloy_sol_types::private::AssertTypeEq::<
4250                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4251                    >(_) => {}
4252                }
4253            }
4254            #[automatically_derived]
4255            #[doc(hidden)]
4256            impl ::core::convert::From<burnSharesCall> for UnderlyingRustTuple<'_> {
4257                fn from(value: burnSharesCall) -> Self {
4258                    (value.strategy,)
4259                }
4260            }
4261            #[automatically_derived]
4262            #[doc(hidden)]
4263            impl ::core::convert::From<UnderlyingRustTuple<'_>> for burnSharesCall {
4264                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4265                    Self { strategy: tuple.0 }
4266                }
4267            }
4268        }
4269        {
4270            #[doc(hidden)]
4271            type UnderlyingSolTuple<'a> = ();
4272            #[doc(hidden)]
4273            type UnderlyingRustTuple<'a> = ();
4274            #[cfg(test)]
4275            #[allow(dead_code, unreachable_patterns)]
4276            fn _type_assertion(
4277                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4278            ) {
4279                match _t {
4280                    alloy_sol_types::private::AssertTypeEq::<
4281                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4282                    >(_) => {}
4283                }
4284            }
4285            #[automatically_derived]
4286            #[doc(hidden)]
4287            impl ::core::convert::From<burnSharesReturn> for UnderlyingRustTuple<'_> {
4288                fn from(value: burnSharesReturn) -> Self {
4289                    ()
4290                }
4291            }
4292            #[automatically_derived]
4293            #[doc(hidden)]
4294            impl ::core::convert::From<UnderlyingRustTuple<'_>> for burnSharesReturn {
4295                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4296                    Self {}
4297                }
4298            }
4299        }
4300        impl burnSharesReturn {
4301            fn _tokenize(
4302                &self,
4303            ) -> <burnSharesCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
4304                ()
4305            }
4306        }
4307        #[automatically_derived]
4308        impl alloy_sol_types::SolCall for burnSharesCall {
4309            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
4310            type Token<'a> = <Self::Parameters<
4311                'a,
4312            > as alloy_sol_types::SolType>::Token<'a>;
4313            type Return = burnSharesReturn;
4314            type ReturnTuple<'a> = ();
4315            type ReturnToken<'a> = <Self::ReturnTuple<
4316                'a,
4317            > as alloy_sol_types::SolType>::Token<'a>;
4318            const SIGNATURE: &'static str = "burnShares(address)";
4319            const SELECTOR: [u8; 4] = [75u8, 109u8, 93u8, 110u8];
4320            #[inline]
4321            fn new<'a>(
4322                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4323            ) -> Self {
4324                tuple.into()
4325            }
4326            #[inline]
4327            fn tokenize(&self) -> Self::Token<'_> {
4328                (
4329                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4330                        &self.strategy,
4331                    ),
4332                )
4333            }
4334            #[inline]
4335            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4336                burnSharesReturn::_tokenize(ret)
4337            }
4338            #[inline]
4339            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4340                <Self::ReturnTuple<
4341                    '_,
4342                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4343                    .map(Into::into)
4344            }
4345            #[inline]
4346            fn abi_decode_returns_validate(
4347                data: &[u8],
4348            ) -> alloy_sol_types::Result<Self::Return> {
4349                <Self::ReturnTuple<
4350                    '_,
4351                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4352                    .map(Into::into)
4353            }
4354        }
4355    };
4356    #[derive(serde::Serialize, serde::Deserialize)]
4357    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4358    /**Function with signature `calculateStrategyDepositDigestHash(address,address,address,uint256,uint256,uint256)` and selector `0x9ac01d61`.
4359```solidity
4360function calculateStrategyDepositDigestHash(address staker, address strategy, address token, uint256 amount, uint256 nonce, uint256 expiry) external view returns (bytes32);
4361```*/
4362    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4363    #[derive(Clone)]
4364    pub struct calculateStrategyDepositDigestHashCall {
4365        #[allow(missing_docs)]
4366        pub staker: alloy::sol_types::private::Address,
4367        #[allow(missing_docs)]
4368        pub strategy: alloy::sol_types::private::Address,
4369        #[allow(missing_docs)]
4370        pub token: alloy::sol_types::private::Address,
4371        #[allow(missing_docs)]
4372        pub amount: alloy::sol_types::private::primitives::aliases::U256,
4373        #[allow(missing_docs)]
4374        pub nonce: alloy::sol_types::private::primitives::aliases::U256,
4375        #[allow(missing_docs)]
4376        pub expiry: alloy::sol_types::private::primitives::aliases::U256,
4377    }
4378    #[derive(serde::Serialize, serde::Deserialize)]
4379    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4380    ///Container type for the return parameters of the [`calculateStrategyDepositDigestHash(address,address,address,uint256,uint256,uint256)`](calculateStrategyDepositDigestHashCall) function.
4381    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4382    #[derive(Clone)]
4383    pub struct calculateStrategyDepositDigestHashReturn {
4384        #[allow(missing_docs)]
4385        pub _0: alloy::sol_types::private::FixedBytes<32>,
4386    }
4387    #[allow(
4388        non_camel_case_types,
4389        non_snake_case,
4390        clippy::pub_underscore_fields,
4391        clippy::style
4392    )]
4393    const _: () = {
4394        use alloy::sol_types as alloy_sol_types;
4395        {
4396            #[doc(hidden)]
4397            type UnderlyingSolTuple<'a> = (
4398                alloy::sol_types::sol_data::Address,
4399                alloy::sol_types::sol_data::Address,
4400                alloy::sol_types::sol_data::Address,
4401                alloy::sol_types::sol_data::Uint<256>,
4402                alloy::sol_types::sol_data::Uint<256>,
4403                alloy::sol_types::sol_data::Uint<256>,
4404            );
4405            #[doc(hidden)]
4406            type UnderlyingRustTuple<'a> = (
4407                alloy::sol_types::private::Address,
4408                alloy::sol_types::private::Address,
4409                alloy::sol_types::private::Address,
4410                alloy::sol_types::private::primitives::aliases::U256,
4411                alloy::sol_types::private::primitives::aliases::U256,
4412                alloy::sol_types::private::primitives::aliases::U256,
4413            );
4414            #[cfg(test)]
4415            #[allow(dead_code, unreachable_patterns)]
4416            fn _type_assertion(
4417                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4418            ) {
4419                match _t {
4420                    alloy_sol_types::private::AssertTypeEq::<
4421                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4422                    >(_) => {}
4423                }
4424            }
4425            #[automatically_derived]
4426            #[doc(hidden)]
4427            impl ::core::convert::From<calculateStrategyDepositDigestHashCall>
4428            for UnderlyingRustTuple<'_> {
4429                fn from(value: calculateStrategyDepositDigestHashCall) -> Self {
4430                    (
4431                        value.staker,
4432                        value.strategy,
4433                        value.token,
4434                        value.amount,
4435                        value.nonce,
4436                        value.expiry,
4437                    )
4438                }
4439            }
4440            #[automatically_derived]
4441            #[doc(hidden)]
4442            impl ::core::convert::From<UnderlyingRustTuple<'_>>
4443            for calculateStrategyDepositDigestHashCall {
4444                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4445                    Self {
4446                        staker: tuple.0,
4447                        strategy: tuple.1,
4448                        token: tuple.2,
4449                        amount: tuple.3,
4450                        nonce: tuple.4,
4451                        expiry: tuple.5,
4452                    }
4453                }
4454            }
4455        }
4456        {
4457            #[doc(hidden)]
4458            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4459            #[doc(hidden)]
4460            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
4461            #[cfg(test)]
4462            #[allow(dead_code, unreachable_patterns)]
4463            fn _type_assertion(
4464                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4465            ) {
4466                match _t {
4467                    alloy_sol_types::private::AssertTypeEq::<
4468                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4469                    >(_) => {}
4470                }
4471            }
4472            #[automatically_derived]
4473            #[doc(hidden)]
4474            impl ::core::convert::From<calculateStrategyDepositDigestHashReturn>
4475            for UnderlyingRustTuple<'_> {
4476                fn from(value: calculateStrategyDepositDigestHashReturn) -> Self {
4477                    (value._0,)
4478                }
4479            }
4480            #[automatically_derived]
4481            #[doc(hidden)]
4482            impl ::core::convert::From<UnderlyingRustTuple<'_>>
4483            for calculateStrategyDepositDigestHashReturn {
4484                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4485                    Self { _0: tuple.0 }
4486                }
4487            }
4488        }
4489        #[automatically_derived]
4490        impl alloy_sol_types::SolCall for calculateStrategyDepositDigestHashCall {
4491            type Parameters<'a> = (
4492                alloy::sol_types::sol_data::Address,
4493                alloy::sol_types::sol_data::Address,
4494                alloy::sol_types::sol_data::Address,
4495                alloy::sol_types::sol_data::Uint<256>,
4496                alloy::sol_types::sol_data::Uint<256>,
4497                alloy::sol_types::sol_data::Uint<256>,
4498            );
4499            type Token<'a> = <Self::Parameters<
4500                'a,
4501            > as alloy_sol_types::SolType>::Token<'a>;
4502            type Return = alloy::sol_types::private::FixedBytes<32>;
4503            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4504            type ReturnToken<'a> = <Self::ReturnTuple<
4505                'a,
4506            > as alloy_sol_types::SolType>::Token<'a>;
4507            const SIGNATURE: &'static str = "calculateStrategyDepositDigestHash(address,address,address,uint256,uint256,uint256)";
4508            const SELECTOR: [u8; 4] = [154u8, 192u8, 29u8, 97u8];
4509            #[inline]
4510            fn new<'a>(
4511                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4512            ) -> Self {
4513                tuple.into()
4514            }
4515            #[inline]
4516            fn tokenize(&self) -> Self::Token<'_> {
4517                (
4518                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4519                        &self.staker,
4520                    ),
4521                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4522                        &self.strategy,
4523                    ),
4524                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4525                        &self.token,
4526                    ),
4527                    <alloy::sol_types::sol_data::Uint<
4528                        256,
4529                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
4530                    <alloy::sol_types::sol_data::Uint<
4531                        256,
4532                    > as alloy_sol_types::SolType>::tokenize(&self.nonce),
4533                    <alloy::sol_types::sol_data::Uint<
4534                        256,
4535                    > as alloy_sol_types::SolType>::tokenize(&self.expiry),
4536                )
4537            }
4538            #[inline]
4539            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4540                (
4541                    <alloy::sol_types::sol_data::FixedBytes<
4542                        32,
4543                    > as alloy_sol_types::SolType>::tokenize(ret),
4544                )
4545            }
4546            #[inline]
4547            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4548                <Self::ReturnTuple<
4549                    '_,
4550                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4551                    .map(|r| {
4552                        let r: calculateStrategyDepositDigestHashReturn = r.into();
4553                        r._0
4554                    })
4555            }
4556            #[inline]
4557            fn abi_decode_returns_validate(
4558                data: &[u8],
4559            ) -> alloy_sol_types::Result<Self::Return> {
4560                <Self::ReturnTuple<
4561                    '_,
4562                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4563                    .map(|r| {
4564                        let r: calculateStrategyDepositDigestHashReturn = r.into();
4565                        r._0
4566                    })
4567            }
4568        }
4569    };
4570    #[derive(serde::Serialize, serde::Deserialize)]
4571    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4572    /**Function with signature `delegation()` and selector `0xdf5cf723`.
4573```solidity
4574function delegation() external view returns (address);
4575```*/
4576    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4577    #[derive(Clone)]
4578    pub struct delegationCall;
4579    #[derive(serde::Serialize, serde::Deserialize)]
4580    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4581    ///Container type for the return parameters of the [`delegation()`](delegationCall) function.
4582    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4583    #[derive(Clone)]
4584    pub struct delegationReturn {
4585        #[allow(missing_docs)]
4586        pub _0: alloy::sol_types::private::Address,
4587    }
4588    #[allow(
4589        non_camel_case_types,
4590        non_snake_case,
4591        clippy::pub_underscore_fields,
4592        clippy::style
4593    )]
4594    const _: () = {
4595        use alloy::sol_types as alloy_sol_types;
4596        {
4597            #[doc(hidden)]
4598            type UnderlyingSolTuple<'a> = ();
4599            #[doc(hidden)]
4600            type UnderlyingRustTuple<'a> = ();
4601            #[cfg(test)]
4602            #[allow(dead_code, unreachable_patterns)]
4603            fn _type_assertion(
4604                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4605            ) {
4606                match _t {
4607                    alloy_sol_types::private::AssertTypeEq::<
4608                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4609                    >(_) => {}
4610                }
4611            }
4612            #[automatically_derived]
4613            #[doc(hidden)]
4614            impl ::core::convert::From<delegationCall> for UnderlyingRustTuple<'_> {
4615                fn from(value: delegationCall) -> Self {
4616                    ()
4617                }
4618            }
4619            #[automatically_derived]
4620            #[doc(hidden)]
4621            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegationCall {
4622                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4623                    Self
4624                }
4625            }
4626        }
4627        {
4628            #[doc(hidden)]
4629            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4630            #[doc(hidden)]
4631            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4632            #[cfg(test)]
4633            #[allow(dead_code, unreachable_patterns)]
4634            fn _type_assertion(
4635                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4636            ) {
4637                match _t {
4638                    alloy_sol_types::private::AssertTypeEq::<
4639                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4640                    >(_) => {}
4641                }
4642            }
4643            #[automatically_derived]
4644            #[doc(hidden)]
4645            impl ::core::convert::From<delegationReturn> for UnderlyingRustTuple<'_> {
4646                fn from(value: delegationReturn) -> Self {
4647                    (value._0,)
4648                }
4649            }
4650            #[automatically_derived]
4651            #[doc(hidden)]
4652            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegationReturn {
4653                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4654                    Self { _0: tuple.0 }
4655                }
4656            }
4657        }
4658        #[automatically_derived]
4659        impl alloy_sol_types::SolCall for delegationCall {
4660            type Parameters<'a> = ();
4661            type Token<'a> = <Self::Parameters<
4662                'a,
4663            > as alloy_sol_types::SolType>::Token<'a>;
4664            type Return = alloy::sol_types::private::Address;
4665            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
4666            type ReturnToken<'a> = <Self::ReturnTuple<
4667                'a,
4668            > as alloy_sol_types::SolType>::Token<'a>;
4669            const SIGNATURE: &'static str = "delegation()";
4670            const SELECTOR: [u8; 4] = [223u8, 92u8, 247u8, 35u8];
4671            #[inline]
4672            fn new<'a>(
4673                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4674            ) -> Self {
4675                tuple.into()
4676            }
4677            #[inline]
4678            fn tokenize(&self) -> Self::Token<'_> {
4679                ()
4680            }
4681            #[inline]
4682            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4683                (
4684                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4685                        ret,
4686                    ),
4687                )
4688            }
4689            #[inline]
4690            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4691                <Self::ReturnTuple<
4692                    '_,
4693                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4694                    .map(|r| {
4695                        let r: delegationReturn = r.into();
4696                        r._0
4697                    })
4698            }
4699            #[inline]
4700            fn abi_decode_returns_validate(
4701                data: &[u8],
4702            ) -> alloy_sol_types::Result<Self::Return> {
4703                <Self::ReturnTuple<
4704                    '_,
4705                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4706                    .map(|r| {
4707                        let r: delegationReturn = r.into();
4708                        r._0
4709                    })
4710            }
4711        }
4712    };
4713    #[derive(serde::Serialize, serde::Deserialize)]
4714    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4715    /**Function with signature `depositIntoStrategy(address,address,uint256)` and selector `0xe7a050aa`.
4716```solidity
4717function depositIntoStrategy(address strategy, address token, uint256 amount) external returns (uint256 depositShares);
4718```*/
4719    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4720    #[derive(Clone)]
4721    pub struct depositIntoStrategyCall {
4722        #[allow(missing_docs)]
4723        pub strategy: alloy::sol_types::private::Address,
4724        #[allow(missing_docs)]
4725        pub token: alloy::sol_types::private::Address,
4726        #[allow(missing_docs)]
4727        pub amount: alloy::sol_types::private::primitives::aliases::U256,
4728    }
4729    #[derive(serde::Serialize, serde::Deserialize)]
4730    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4731    ///Container type for the return parameters of the [`depositIntoStrategy(address,address,uint256)`](depositIntoStrategyCall) function.
4732    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4733    #[derive(Clone)]
4734    pub struct depositIntoStrategyReturn {
4735        #[allow(missing_docs)]
4736        pub depositShares: alloy::sol_types::private::primitives::aliases::U256,
4737    }
4738    #[allow(
4739        non_camel_case_types,
4740        non_snake_case,
4741        clippy::pub_underscore_fields,
4742        clippy::style
4743    )]
4744    const _: () = {
4745        use alloy::sol_types as alloy_sol_types;
4746        {
4747            #[doc(hidden)]
4748            type UnderlyingSolTuple<'a> = (
4749                alloy::sol_types::sol_data::Address,
4750                alloy::sol_types::sol_data::Address,
4751                alloy::sol_types::sol_data::Uint<256>,
4752            );
4753            #[doc(hidden)]
4754            type UnderlyingRustTuple<'a> = (
4755                alloy::sol_types::private::Address,
4756                alloy::sol_types::private::Address,
4757                alloy::sol_types::private::primitives::aliases::U256,
4758            );
4759            #[cfg(test)]
4760            #[allow(dead_code, unreachable_patterns)]
4761            fn _type_assertion(
4762                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4763            ) {
4764                match _t {
4765                    alloy_sol_types::private::AssertTypeEq::<
4766                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4767                    >(_) => {}
4768                }
4769            }
4770            #[automatically_derived]
4771            #[doc(hidden)]
4772            impl ::core::convert::From<depositIntoStrategyCall>
4773            for UnderlyingRustTuple<'_> {
4774                fn from(value: depositIntoStrategyCall) -> Self {
4775                    (value.strategy, value.token, value.amount)
4776                }
4777            }
4778            #[automatically_derived]
4779            #[doc(hidden)]
4780            impl ::core::convert::From<UnderlyingRustTuple<'_>>
4781            for depositIntoStrategyCall {
4782                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4783                    Self {
4784                        strategy: tuple.0,
4785                        token: tuple.1,
4786                        amount: tuple.2,
4787                    }
4788                }
4789            }
4790        }
4791        {
4792            #[doc(hidden)]
4793            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4794            #[doc(hidden)]
4795            type UnderlyingRustTuple<'a> = (
4796                alloy::sol_types::private::primitives::aliases::U256,
4797            );
4798            #[cfg(test)]
4799            #[allow(dead_code, unreachable_patterns)]
4800            fn _type_assertion(
4801                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4802            ) {
4803                match _t {
4804                    alloy_sol_types::private::AssertTypeEq::<
4805                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4806                    >(_) => {}
4807                }
4808            }
4809            #[automatically_derived]
4810            #[doc(hidden)]
4811            impl ::core::convert::From<depositIntoStrategyReturn>
4812            for UnderlyingRustTuple<'_> {
4813                fn from(value: depositIntoStrategyReturn) -> Self {
4814                    (value.depositShares,)
4815                }
4816            }
4817            #[automatically_derived]
4818            #[doc(hidden)]
4819            impl ::core::convert::From<UnderlyingRustTuple<'_>>
4820            for depositIntoStrategyReturn {
4821                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4822                    Self { depositShares: tuple.0 }
4823                }
4824            }
4825        }
4826        #[automatically_derived]
4827        impl alloy_sol_types::SolCall for depositIntoStrategyCall {
4828            type Parameters<'a> = (
4829                alloy::sol_types::sol_data::Address,
4830                alloy::sol_types::sol_data::Address,
4831                alloy::sol_types::sol_data::Uint<256>,
4832            );
4833            type Token<'a> = <Self::Parameters<
4834                'a,
4835            > as alloy_sol_types::SolType>::Token<'a>;
4836            type Return = alloy::sol_types::private::primitives::aliases::U256;
4837            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4838            type ReturnToken<'a> = <Self::ReturnTuple<
4839                'a,
4840            > as alloy_sol_types::SolType>::Token<'a>;
4841            const SIGNATURE: &'static str = "depositIntoStrategy(address,address,uint256)";
4842            const SELECTOR: [u8; 4] = [231u8, 160u8, 80u8, 170u8];
4843            #[inline]
4844            fn new<'a>(
4845                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4846            ) -> Self {
4847                tuple.into()
4848            }
4849            #[inline]
4850            fn tokenize(&self) -> Self::Token<'_> {
4851                (
4852                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4853                        &self.strategy,
4854                    ),
4855                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4856                        &self.token,
4857                    ),
4858                    <alloy::sol_types::sol_data::Uint<
4859                        256,
4860                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
4861                )
4862            }
4863            #[inline]
4864            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4865                (
4866                    <alloy::sol_types::sol_data::Uint<
4867                        256,
4868                    > as alloy_sol_types::SolType>::tokenize(ret),
4869                )
4870            }
4871            #[inline]
4872            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4873                <Self::ReturnTuple<
4874                    '_,
4875                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4876                    .map(|r| {
4877                        let r: depositIntoStrategyReturn = r.into();
4878                        r.depositShares
4879                    })
4880            }
4881            #[inline]
4882            fn abi_decode_returns_validate(
4883                data: &[u8],
4884            ) -> alloy_sol_types::Result<Self::Return> {
4885                <Self::ReturnTuple<
4886                    '_,
4887                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4888                    .map(|r| {
4889                        let r: depositIntoStrategyReturn = r.into();
4890                        r.depositShares
4891                    })
4892            }
4893        }
4894    };
4895    #[derive(serde::Serialize, serde::Deserialize)]
4896    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4897    /**Function with signature `depositIntoStrategyWithSignature(address,address,uint256,address,uint256,bytes)` and selector `0x32e89ace`.
4898```solidity
4899function depositIntoStrategyWithSignature(address strategy, address token, uint256 amount, address staker, uint256 expiry, bytes memory signature) external returns (uint256 depositShares);
4900```*/
4901    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4902    #[derive(Clone)]
4903    pub struct depositIntoStrategyWithSignatureCall {
4904        #[allow(missing_docs)]
4905        pub strategy: alloy::sol_types::private::Address,
4906        #[allow(missing_docs)]
4907        pub token: alloy::sol_types::private::Address,
4908        #[allow(missing_docs)]
4909        pub amount: alloy::sol_types::private::primitives::aliases::U256,
4910        #[allow(missing_docs)]
4911        pub staker: alloy::sol_types::private::Address,
4912        #[allow(missing_docs)]
4913        pub expiry: alloy::sol_types::private::primitives::aliases::U256,
4914        #[allow(missing_docs)]
4915        pub signature: alloy::sol_types::private::Bytes,
4916    }
4917    #[derive(serde::Serialize, serde::Deserialize)]
4918    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4919    ///Container type for the return parameters of the [`depositIntoStrategyWithSignature(address,address,uint256,address,uint256,bytes)`](depositIntoStrategyWithSignatureCall) function.
4920    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4921    #[derive(Clone)]
4922    pub struct depositIntoStrategyWithSignatureReturn {
4923        #[allow(missing_docs)]
4924        pub depositShares: alloy::sol_types::private::primitives::aliases::U256,
4925    }
4926    #[allow(
4927        non_camel_case_types,
4928        non_snake_case,
4929        clippy::pub_underscore_fields,
4930        clippy::style
4931    )]
4932    const _: () = {
4933        use alloy::sol_types as alloy_sol_types;
4934        {
4935            #[doc(hidden)]
4936            type UnderlyingSolTuple<'a> = (
4937                alloy::sol_types::sol_data::Address,
4938                alloy::sol_types::sol_data::Address,
4939                alloy::sol_types::sol_data::Uint<256>,
4940                alloy::sol_types::sol_data::Address,
4941                alloy::sol_types::sol_data::Uint<256>,
4942                alloy::sol_types::sol_data::Bytes,
4943            );
4944            #[doc(hidden)]
4945            type UnderlyingRustTuple<'a> = (
4946                alloy::sol_types::private::Address,
4947                alloy::sol_types::private::Address,
4948                alloy::sol_types::private::primitives::aliases::U256,
4949                alloy::sol_types::private::Address,
4950                alloy::sol_types::private::primitives::aliases::U256,
4951                alloy::sol_types::private::Bytes,
4952            );
4953            #[cfg(test)]
4954            #[allow(dead_code, unreachable_patterns)]
4955            fn _type_assertion(
4956                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4957            ) {
4958                match _t {
4959                    alloy_sol_types::private::AssertTypeEq::<
4960                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4961                    >(_) => {}
4962                }
4963            }
4964            #[automatically_derived]
4965            #[doc(hidden)]
4966            impl ::core::convert::From<depositIntoStrategyWithSignatureCall>
4967            for UnderlyingRustTuple<'_> {
4968                fn from(value: depositIntoStrategyWithSignatureCall) -> Self {
4969                    (
4970                        value.strategy,
4971                        value.token,
4972                        value.amount,
4973                        value.staker,
4974                        value.expiry,
4975                        value.signature,
4976                    )
4977                }
4978            }
4979            #[automatically_derived]
4980            #[doc(hidden)]
4981            impl ::core::convert::From<UnderlyingRustTuple<'_>>
4982            for depositIntoStrategyWithSignatureCall {
4983                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4984                    Self {
4985                        strategy: tuple.0,
4986                        token: tuple.1,
4987                        amount: tuple.2,
4988                        staker: tuple.3,
4989                        expiry: tuple.4,
4990                        signature: tuple.5,
4991                    }
4992                }
4993            }
4994        }
4995        {
4996            #[doc(hidden)]
4997            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4998            #[doc(hidden)]
4999            type UnderlyingRustTuple<'a> = (
5000                alloy::sol_types::private::primitives::aliases::U256,
5001            );
5002            #[cfg(test)]
5003            #[allow(dead_code, unreachable_patterns)]
5004            fn _type_assertion(
5005                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5006            ) {
5007                match _t {
5008                    alloy_sol_types::private::AssertTypeEq::<
5009                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5010                    >(_) => {}
5011                }
5012            }
5013            #[automatically_derived]
5014            #[doc(hidden)]
5015            impl ::core::convert::From<depositIntoStrategyWithSignatureReturn>
5016            for UnderlyingRustTuple<'_> {
5017                fn from(value: depositIntoStrategyWithSignatureReturn) -> Self {
5018                    (value.depositShares,)
5019                }
5020            }
5021            #[automatically_derived]
5022            #[doc(hidden)]
5023            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5024            for depositIntoStrategyWithSignatureReturn {
5025                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5026                    Self { depositShares: tuple.0 }
5027                }
5028            }
5029        }
5030        #[automatically_derived]
5031        impl alloy_sol_types::SolCall for depositIntoStrategyWithSignatureCall {
5032            type Parameters<'a> = (
5033                alloy::sol_types::sol_data::Address,
5034                alloy::sol_types::sol_data::Address,
5035                alloy::sol_types::sol_data::Uint<256>,
5036                alloy::sol_types::sol_data::Address,
5037                alloy::sol_types::sol_data::Uint<256>,
5038                alloy::sol_types::sol_data::Bytes,
5039            );
5040            type Token<'a> = <Self::Parameters<
5041                'a,
5042            > as alloy_sol_types::SolType>::Token<'a>;
5043            type Return = alloy::sol_types::private::primitives::aliases::U256;
5044            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
5045            type ReturnToken<'a> = <Self::ReturnTuple<
5046                'a,
5047            > as alloy_sol_types::SolType>::Token<'a>;
5048            const SIGNATURE: &'static str = "depositIntoStrategyWithSignature(address,address,uint256,address,uint256,bytes)";
5049            const SELECTOR: [u8; 4] = [50u8, 232u8, 154u8, 206u8];
5050            #[inline]
5051            fn new<'a>(
5052                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5053            ) -> Self {
5054                tuple.into()
5055            }
5056            #[inline]
5057            fn tokenize(&self) -> Self::Token<'_> {
5058                (
5059                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5060                        &self.strategy,
5061                    ),
5062                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5063                        &self.token,
5064                    ),
5065                    <alloy::sol_types::sol_data::Uint<
5066                        256,
5067                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
5068                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5069                        &self.staker,
5070                    ),
5071                    <alloy::sol_types::sol_data::Uint<
5072                        256,
5073                    > as alloy_sol_types::SolType>::tokenize(&self.expiry),
5074                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
5075                        &self.signature,
5076                    ),
5077                )
5078            }
5079            #[inline]
5080            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5081                (
5082                    <alloy::sol_types::sol_data::Uint<
5083                        256,
5084                    > as alloy_sol_types::SolType>::tokenize(ret),
5085                )
5086            }
5087            #[inline]
5088            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5089                <Self::ReturnTuple<
5090                    '_,
5091                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5092                    .map(|r| {
5093                        let r: depositIntoStrategyWithSignatureReturn = r.into();
5094                        r.depositShares
5095                    })
5096            }
5097            #[inline]
5098            fn abi_decode_returns_validate(
5099                data: &[u8],
5100            ) -> alloy_sol_types::Result<Self::Return> {
5101                <Self::ReturnTuple<
5102                    '_,
5103                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5104                    .map(|r| {
5105                        let r: depositIntoStrategyWithSignatureReturn = r.into();
5106                        r.depositShares
5107                    })
5108            }
5109        }
5110    };
5111    #[derive(serde::Serialize, serde::Deserialize)]
5112    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5113    /**Function with signature `domainSeparator()` and selector `0xf698da25`.
5114```solidity
5115function domainSeparator() external view returns (bytes32);
5116```*/
5117    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5118    #[derive(Clone)]
5119    pub struct domainSeparatorCall;
5120    #[derive(serde::Serialize, serde::Deserialize)]
5121    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5122    ///Container type for the return parameters of the [`domainSeparator()`](domainSeparatorCall) function.
5123    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5124    #[derive(Clone)]
5125    pub struct domainSeparatorReturn {
5126        #[allow(missing_docs)]
5127        pub _0: alloy::sol_types::private::FixedBytes<32>,
5128    }
5129    #[allow(
5130        non_camel_case_types,
5131        non_snake_case,
5132        clippy::pub_underscore_fields,
5133        clippy::style
5134    )]
5135    const _: () = {
5136        use alloy::sol_types as alloy_sol_types;
5137        {
5138            #[doc(hidden)]
5139            type UnderlyingSolTuple<'a> = ();
5140            #[doc(hidden)]
5141            type UnderlyingRustTuple<'a> = ();
5142            #[cfg(test)]
5143            #[allow(dead_code, unreachable_patterns)]
5144            fn _type_assertion(
5145                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5146            ) {
5147                match _t {
5148                    alloy_sol_types::private::AssertTypeEq::<
5149                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5150                    >(_) => {}
5151                }
5152            }
5153            #[automatically_derived]
5154            #[doc(hidden)]
5155            impl ::core::convert::From<domainSeparatorCall> for UnderlyingRustTuple<'_> {
5156                fn from(value: domainSeparatorCall) -> Self {
5157                    ()
5158                }
5159            }
5160            #[automatically_derived]
5161            #[doc(hidden)]
5162            impl ::core::convert::From<UnderlyingRustTuple<'_>> for domainSeparatorCall {
5163                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5164                    Self
5165                }
5166            }
5167        }
5168        {
5169            #[doc(hidden)]
5170            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5171            #[doc(hidden)]
5172            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
5173            #[cfg(test)]
5174            #[allow(dead_code, unreachable_patterns)]
5175            fn _type_assertion(
5176                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5177            ) {
5178                match _t {
5179                    alloy_sol_types::private::AssertTypeEq::<
5180                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5181                    >(_) => {}
5182                }
5183            }
5184            #[automatically_derived]
5185            #[doc(hidden)]
5186            impl ::core::convert::From<domainSeparatorReturn>
5187            for UnderlyingRustTuple<'_> {
5188                fn from(value: domainSeparatorReturn) -> Self {
5189                    (value._0,)
5190                }
5191            }
5192            #[automatically_derived]
5193            #[doc(hidden)]
5194            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5195            for domainSeparatorReturn {
5196                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5197                    Self { _0: tuple.0 }
5198                }
5199            }
5200        }
5201        #[automatically_derived]
5202        impl alloy_sol_types::SolCall for domainSeparatorCall {
5203            type Parameters<'a> = ();
5204            type Token<'a> = <Self::Parameters<
5205                'a,
5206            > as alloy_sol_types::SolType>::Token<'a>;
5207            type Return = alloy::sol_types::private::FixedBytes<32>;
5208            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5209            type ReturnToken<'a> = <Self::ReturnTuple<
5210                'a,
5211            > as alloy_sol_types::SolType>::Token<'a>;
5212            const SIGNATURE: &'static str = "domainSeparator()";
5213            const SELECTOR: [u8; 4] = [246u8, 152u8, 218u8, 37u8];
5214            #[inline]
5215            fn new<'a>(
5216                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5217            ) -> Self {
5218                tuple.into()
5219            }
5220            #[inline]
5221            fn tokenize(&self) -> Self::Token<'_> {
5222                ()
5223            }
5224            #[inline]
5225            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5226                (
5227                    <alloy::sol_types::sol_data::FixedBytes<
5228                        32,
5229                    > as alloy_sol_types::SolType>::tokenize(ret),
5230                )
5231            }
5232            #[inline]
5233            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5234                <Self::ReturnTuple<
5235                    '_,
5236                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5237                    .map(|r| {
5238                        let r: domainSeparatorReturn = r.into();
5239                        r._0
5240                    })
5241            }
5242            #[inline]
5243            fn abi_decode_returns_validate(
5244                data: &[u8],
5245            ) -> alloy_sol_types::Result<Self::Return> {
5246                <Self::ReturnTuple<
5247                    '_,
5248                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5249                    .map(|r| {
5250                        let r: domainSeparatorReturn = r.into();
5251                        r._0
5252                    })
5253            }
5254        }
5255    };
5256    #[derive(serde::Serialize, serde::Deserialize)]
5257    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5258    /**Function with signature `getBurnableShares(address)` and selector `0xfd980423`.
5259```solidity
5260function getBurnableShares(address strategy) external view returns (uint256);
5261```*/
5262    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5263    #[derive(Clone)]
5264    pub struct getBurnableSharesCall {
5265        #[allow(missing_docs)]
5266        pub strategy: alloy::sol_types::private::Address,
5267    }
5268    #[derive(serde::Serialize, serde::Deserialize)]
5269    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5270    ///Container type for the return parameters of the [`getBurnableShares(address)`](getBurnableSharesCall) function.
5271    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5272    #[derive(Clone)]
5273    pub struct getBurnableSharesReturn {
5274        #[allow(missing_docs)]
5275        pub _0: alloy::sol_types::private::primitives::aliases::U256,
5276    }
5277    #[allow(
5278        non_camel_case_types,
5279        non_snake_case,
5280        clippy::pub_underscore_fields,
5281        clippy::style
5282    )]
5283    const _: () = {
5284        use alloy::sol_types as alloy_sol_types;
5285        {
5286            #[doc(hidden)]
5287            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5288            #[doc(hidden)]
5289            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5290            #[cfg(test)]
5291            #[allow(dead_code, unreachable_patterns)]
5292            fn _type_assertion(
5293                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5294            ) {
5295                match _t {
5296                    alloy_sol_types::private::AssertTypeEq::<
5297                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5298                    >(_) => {}
5299                }
5300            }
5301            #[automatically_derived]
5302            #[doc(hidden)]
5303            impl ::core::convert::From<getBurnableSharesCall>
5304            for UnderlyingRustTuple<'_> {
5305                fn from(value: getBurnableSharesCall) -> Self {
5306                    (value.strategy,)
5307                }
5308            }
5309            #[automatically_derived]
5310            #[doc(hidden)]
5311            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5312            for getBurnableSharesCall {
5313                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5314                    Self { strategy: tuple.0 }
5315                }
5316            }
5317        }
5318        {
5319            #[doc(hidden)]
5320            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
5321            #[doc(hidden)]
5322            type UnderlyingRustTuple<'a> = (
5323                alloy::sol_types::private::primitives::aliases::U256,
5324            );
5325            #[cfg(test)]
5326            #[allow(dead_code, unreachable_patterns)]
5327            fn _type_assertion(
5328                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5329            ) {
5330                match _t {
5331                    alloy_sol_types::private::AssertTypeEq::<
5332                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5333                    >(_) => {}
5334                }
5335            }
5336            #[automatically_derived]
5337            #[doc(hidden)]
5338            impl ::core::convert::From<getBurnableSharesReturn>
5339            for UnderlyingRustTuple<'_> {
5340                fn from(value: getBurnableSharesReturn) -> Self {
5341                    (value._0,)
5342                }
5343            }
5344            #[automatically_derived]
5345            #[doc(hidden)]
5346            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5347            for getBurnableSharesReturn {
5348                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5349                    Self { _0: tuple.0 }
5350                }
5351            }
5352        }
5353        #[automatically_derived]
5354        impl alloy_sol_types::SolCall for getBurnableSharesCall {
5355            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
5356            type Token<'a> = <Self::Parameters<
5357                'a,
5358            > as alloy_sol_types::SolType>::Token<'a>;
5359            type Return = alloy::sol_types::private::primitives::aliases::U256;
5360            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
5361            type ReturnToken<'a> = <Self::ReturnTuple<
5362                'a,
5363            > as alloy_sol_types::SolType>::Token<'a>;
5364            const SIGNATURE: &'static str = "getBurnableShares(address)";
5365            const SELECTOR: [u8; 4] = [253u8, 152u8, 4u8, 35u8];
5366            #[inline]
5367            fn new<'a>(
5368                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5369            ) -> Self {
5370                tuple.into()
5371            }
5372            #[inline]
5373            fn tokenize(&self) -> Self::Token<'_> {
5374                (
5375                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5376                        &self.strategy,
5377                    ),
5378                )
5379            }
5380            #[inline]
5381            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5382                (
5383                    <alloy::sol_types::sol_data::Uint<
5384                        256,
5385                    > as alloy_sol_types::SolType>::tokenize(ret),
5386                )
5387            }
5388            #[inline]
5389            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5390                <Self::ReturnTuple<
5391                    '_,
5392                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5393                    .map(|r| {
5394                        let r: getBurnableSharesReturn = r.into();
5395                        r._0
5396                    })
5397            }
5398            #[inline]
5399            fn abi_decode_returns_validate(
5400                data: &[u8],
5401            ) -> alloy_sol_types::Result<Self::Return> {
5402                <Self::ReturnTuple<
5403                    '_,
5404                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5405                    .map(|r| {
5406                        let r: getBurnableSharesReturn = r.into();
5407                        r._0
5408                    })
5409            }
5410        }
5411    };
5412    #[derive(serde::Serialize, serde::Deserialize)]
5413    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5414    /**Function with signature `getDeposits(address)` and selector `0x94f649dd`.
5415```solidity
5416function getDeposits(address staker) external view returns (address[] memory, uint256[] memory);
5417```*/
5418    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5419    #[derive(Clone)]
5420    pub struct getDepositsCall {
5421        #[allow(missing_docs)]
5422        pub staker: alloy::sol_types::private::Address,
5423    }
5424    #[derive(serde::Serialize, serde::Deserialize)]
5425    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5426    ///Container type for the return parameters of the [`getDeposits(address)`](getDepositsCall) function.
5427    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5428    #[derive(Clone)]
5429    pub struct getDepositsReturn {
5430        #[allow(missing_docs)]
5431        pub _0: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
5432        #[allow(missing_docs)]
5433        pub _1: alloy::sol_types::private::Vec<
5434            alloy::sol_types::private::primitives::aliases::U256,
5435        >,
5436    }
5437    #[allow(
5438        non_camel_case_types,
5439        non_snake_case,
5440        clippy::pub_underscore_fields,
5441        clippy::style
5442    )]
5443    const _: () = {
5444        use alloy::sol_types as alloy_sol_types;
5445        {
5446            #[doc(hidden)]
5447            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5448            #[doc(hidden)]
5449            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5450            #[cfg(test)]
5451            #[allow(dead_code, unreachable_patterns)]
5452            fn _type_assertion(
5453                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5454            ) {
5455                match _t {
5456                    alloy_sol_types::private::AssertTypeEq::<
5457                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5458                    >(_) => {}
5459                }
5460            }
5461            #[automatically_derived]
5462            #[doc(hidden)]
5463            impl ::core::convert::From<getDepositsCall> for UnderlyingRustTuple<'_> {
5464                fn from(value: getDepositsCall) -> Self {
5465                    (value.staker,)
5466                }
5467            }
5468            #[automatically_derived]
5469            #[doc(hidden)]
5470            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getDepositsCall {
5471                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5472                    Self { staker: tuple.0 }
5473                }
5474            }
5475        }
5476        {
5477            #[doc(hidden)]
5478            type UnderlyingSolTuple<'a> = (
5479                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
5480                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
5481            );
5482            #[doc(hidden)]
5483            type UnderlyingRustTuple<'a> = (
5484                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
5485                alloy::sol_types::private::Vec<
5486                    alloy::sol_types::private::primitives::aliases::U256,
5487                >,
5488            );
5489            #[cfg(test)]
5490            #[allow(dead_code, unreachable_patterns)]
5491            fn _type_assertion(
5492                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5493            ) {
5494                match _t {
5495                    alloy_sol_types::private::AssertTypeEq::<
5496                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5497                    >(_) => {}
5498                }
5499            }
5500            #[automatically_derived]
5501            #[doc(hidden)]
5502            impl ::core::convert::From<getDepositsReturn> for UnderlyingRustTuple<'_> {
5503                fn from(value: getDepositsReturn) -> Self {
5504                    (value._0, value._1)
5505                }
5506            }
5507            #[automatically_derived]
5508            #[doc(hidden)]
5509            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getDepositsReturn {
5510                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5511                    Self { _0: tuple.0, _1: tuple.1 }
5512                }
5513            }
5514        }
5515        impl getDepositsReturn {
5516            fn _tokenize(
5517                &self,
5518            ) -> <getDepositsCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
5519                (
5520                    <alloy::sol_types::sol_data::Array<
5521                        alloy::sol_types::sol_data::Address,
5522                    > as alloy_sol_types::SolType>::tokenize(&self._0),
5523                    <alloy::sol_types::sol_data::Array<
5524                        alloy::sol_types::sol_data::Uint<256>,
5525                    > as alloy_sol_types::SolType>::tokenize(&self._1),
5526                )
5527            }
5528        }
5529        #[automatically_derived]
5530        impl alloy_sol_types::SolCall for getDepositsCall {
5531            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
5532            type Token<'a> = <Self::Parameters<
5533                'a,
5534            > as alloy_sol_types::SolType>::Token<'a>;
5535            type Return = getDepositsReturn;
5536            type ReturnTuple<'a> = (
5537                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
5538                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
5539            );
5540            type ReturnToken<'a> = <Self::ReturnTuple<
5541                'a,
5542            > as alloy_sol_types::SolType>::Token<'a>;
5543            const SIGNATURE: &'static str = "getDeposits(address)";
5544            const SELECTOR: [u8; 4] = [148u8, 246u8, 73u8, 221u8];
5545            #[inline]
5546            fn new<'a>(
5547                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5548            ) -> Self {
5549                tuple.into()
5550            }
5551            #[inline]
5552            fn tokenize(&self) -> Self::Token<'_> {
5553                (
5554                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5555                        &self.staker,
5556                    ),
5557                )
5558            }
5559            #[inline]
5560            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5561                getDepositsReturn::_tokenize(ret)
5562            }
5563            #[inline]
5564            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5565                <Self::ReturnTuple<
5566                    '_,
5567                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5568                    .map(Into::into)
5569            }
5570            #[inline]
5571            fn abi_decode_returns_validate(
5572                data: &[u8],
5573            ) -> alloy_sol_types::Result<Self::Return> {
5574                <Self::ReturnTuple<
5575                    '_,
5576                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5577                    .map(Into::into)
5578            }
5579        }
5580    };
5581    #[derive(serde::Serialize, serde::Deserialize)]
5582    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5583    /**Function with signature `getStakerStrategyList(address)` and selector `0xde44acb6`.
5584```solidity
5585function getStakerStrategyList(address staker) external view returns (address[] memory);
5586```*/
5587    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5588    #[derive(Clone)]
5589    pub struct getStakerStrategyListCall {
5590        #[allow(missing_docs)]
5591        pub staker: alloy::sol_types::private::Address,
5592    }
5593    #[derive(serde::Serialize, serde::Deserialize)]
5594    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5595    ///Container type for the return parameters of the [`getStakerStrategyList(address)`](getStakerStrategyListCall) function.
5596    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5597    #[derive(Clone)]
5598    pub struct getStakerStrategyListReturn {
5599        #[allow(missing_docs)]
5600        pub _0: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
5601    }
5602    #[allow(
5603        non_camel_case_types,
5604        non_snake_case,
5605        clippy::pub_underscore_fields,
5606        clippy::style
5607    )]
5608    const _: () = {
5609        use alloy::sol_types as alloy_sol_types;
5610        {
5611            #[doc(hidden)]
5612            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5613            #[doc(hidden)]
5614            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5615            #[cfg(test)]
5616            #[allow(dead_code, unreachable_patterns)]
5617            fn _type_assertion(
5618                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5619            ) {
5620                match _t {
5621                    alloy_sol_types::private::AssertTypeEq::<
5622                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5623                    >(_) => {}
5624                }
5625            }
5626            #[automatically_derived]
5627            #[doc(hidden)]
5628            impl ::core::convert::From<getStakerStrategyListCall>
5629            for UnderlyingRustTuple<'_> {
5630                fn from(value: getStakerStrategyListCall) -> Self {
5631                    (value.staker,)
5632                }
5633            }
5634            #[automatically_derived]
5635            #[doc(hidden)]
5636            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5637            for getStakerStrategyListCall {
5638                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5639                    Self { staker: tuple.0 }
5640                }
5641            }
5642        }
5643        {
5644            #[doc(hidden)]
5645            type UnderlyingSolTuple<'a> = (
5646                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
5647            );
5648            #[doc(hidden)]
5649            type UnderlyingRustTuple<'a> = (
5650                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
5651            );
5652            #[cfg(test)]
5653            #[allow(dead_code, unreachable_patterns)]
5654            fn _type_assertion(
5655                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5656            ) {
5657                match _t {
5658                    alloy_sol_types::private::AssertTypeEq::<
5659                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5660                    >(_) => {}
5661                }
5662            }
5663            #[automatically_derived]
5664            #[doc(hidden)]
5665            impl ::core::convert::From<getStakerStrategyListReturn>
5666            for UnderlyingRustTuple<'_> {
5667                fn from(value: getStakerStrategyListReturn) -> Self {
5668                    (value._0,)
5669                }
5670            }
5671            #[automatically_derived]
5672            #[doc(hidden)]
5673            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5674            for getStakerStrategyListReturn {
5675                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5676                    Self { _0: tuple.0 }
5677                }
5678            }
5679        }
5680        #[automatically_derived]
5681        impl alloy_sol_types::SolCall for getStakerStrategyListCall {
5682            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
5683            type Token<'a> = <Self::Parameters<
5684                'a,
5685            > as alloy_sol_types::SolType>::Token<'a>;
5686            type Return = alloy::sol_types::private::Vec<
5687                alloy::sol_types::private::Address,
5688            >;
5689            type ReturnTuple<'a> = (
5690                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
5691            );
5692            type ReturnToken<'a> = <Self::ReturnTuple<
5693                'a,
5694            > as alloy_sol_types::SolType>::Token<'a>;
5695            const SIGNATURE: &'static str = "getStakerStrategyList(address)";
5696            const SELECTOR: [u8; 4] = [222u8, 68u8, 172u8, 182u8];
5697            #[inline]
5698            fn new<'a>(
5699                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5700            ) -> Self {
5701                tuple.into()
5702            }
5703            #[inline]
5704            fn tokenize(&self) -> Self::Token<'_> {
5705                (
5706                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5707                        &self.staker,
5708                    ),
5709                )
5710            }
5711            #[inline]
5712            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5713                (
5714                    <alloy::sol_types::sol_data::Array<
5715                        alloy::sol_types::sol_data::Address,
5716                    > as alloy_sol_types::SolType>::tokenize(ret),
5717                )
5718            }
5719            #[inline]
5720            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5721                <Self::ReturnTuple<
5722                    '_,
5723                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5724                    .map(|r| {
5725                        let r: getStakerStrategyListReturn = r.into();
5726                        r._0
5727                    })
5728            }
5729            #[inline]
5730            fn abi_decode_returns_validate(
5731                data: &[u8],
5732            ) -> alloy_sol_types::Result<Self::Return> {
5733                <Self::ReturnTuple<
5734                    '_,
5735                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5736                    .map(|r| {
5737                        let r: getStakerStrategyListReturn = r.into();
5738                        r._0
5739                    })
5740            }
5741        }
5742    };
5743    #[derive(serde::Serialize, serde::Deserialize)]
5744    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5745    /**Function with signature `getStrategiesWithBurnableShares()` and selector `0x36a8c500`.
5746```solidity
5747function getStrategiesWithBurnableShares() external view returns (address[] memory, uint256[] memory);
5748```*/
5749    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5750    #[derive(Clone)]
5751    pub struct getStrategiesWithBurnableSharesCall;
5752    #[derive(serde::Serialize, serde::Deserialize)]
5753    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5754    ///Container type for the return parameters of the [`getStrategiesWithBurnableShares()`](getStrategiesWithBurnableSharesCall) function.
5755    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5756    #[derive(Clone)]
5757    pub struct getStrategiesWithBurnableSharesReturn {
5758        #[allow(missing_docs)]
5759        pub _0: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
5760        #[allow(missing_docs)]
5761        pub _1: alloy::sol_types::private::Vec<
5762            alloy::sol_types::private::primitives::aliases::U256,
5763        >,
5764    }
5765    #[allow(
5766        non_camel_case_types,
5767        non_snake_case,
5768        clippy::pub_underscore_fields,
5769        clippy::style
5770    )]
5771    const _: () = {
5772        use alloy::sol_types as alloy_sol_types;
5773        {
5774            #[doc(hidden)]
5775            type UnderlyingSolTuple<'a> = ();
5776            #[doc(hidden)]
5777            type UnderlyingRustTuple<'a> = ();
5778            #[cfg(test)]
5779            #[allow(dead_code, unreachable_patterns)]
5780            fn _type_assertion(
5781                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5782            ) {
5783                match _t {
5784                    alloy_sol_types::private::AssertTypeEq::<
5785                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5786                    >(_) => {}
5787                }
5788            }
5789            #[automatically_derived]
5790            #[doc(hidden)]
5791            impl ::core::convert::From<getStrategiesWithBurnableSharesCall>
5792            for UnderlyingRustTuple<'_> {
5793                fn from(value: getStrategiesWithBurnableSharesCall) -> Self {
5794                    ()
5795                }
5796            }
5797            #[automatically_derived]
5798            #[doc(hidden)]
5799            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5800            for getStrategiesWithBurnableSharesCall {
5801                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5802                    Self
5803                }
5804            }
5805        }
5806        {
5807            #[doc(hidden)]
5808            type UnderlyingSolTuple<'a> = (
5809                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
5810                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
5811            );
5812            #[doc(hidden)]
5813            type UnderlyingRustTuple<'a> = (
5814                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
5815                alloy::sol_types::private::Vec<
5816                    alloy::sol_types::private::primitives::aliases::U256,
5817                >,
5818            );
5819            #[cfg(test)]
5820            #[allow(dead_code, unreachable_patterns)]
5821            fn _type_assertion(
5822                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5823            ) {
5824                match _t {
5825                    alloy_sol_types::private::AssertTypeEq::<
5826                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5827                    >(_) => {}
5828                }
5829            }
5830            #[automatically_derived]
5831            #[doc(hidden)]
5832            impl ::core::convert::From<getStrategiesWithBurnableSharesReturn>
5833            for UnderlyingRustTuple<'_> {
5834                fn from(value: getStrategiesWithBurnableSharesReturn) -> Self {
5835                    (value._0, value._1)
5836                }
5837            }
5838            #[automatically_derived]
5839            #[doc(hidden)]
5840            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5841            for getStrategiesWithBurnableSharesReturn {
5842                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5843                    Self { _0: tuple.0, _1: tuple.1 }
5844                }
5845            }
5846        }
5847        impl getStrategiesWithBurnableSharesReturn {
5848            fn _tokenize(
5849                &self,
5850            ) -> <getStrategiesWithBurnableSharesCall as alloy_sol_types::SolCall>::ReturnToken<
5851                '_,
5852            > {
5853                (
5854                    <alloy::sol_types::sol_data::Array<
5855                        alloy::sol_types::sol_data::Address,
5856                    > as alloy_sol_types::SolType>::tokenize(&self._0),
5857                    <alloy::sol_types::sol_data::Array<
5858                        alloy::sol_types::sol_data::Uint<256>,
5859                    > as alloy_sol_types::SolType>::tokenize(&self._1),
5860                )
5861            }
5862        }
5863        #[automatically_derived]
5864        impl alloy_sol_types::SolCall for getStrategiesWithBurnableSharesCall {
5865            type Parameters<'a> = ();
5866            type Token<'a> = <Self::Parameters<
5867                'a,
5868            > as alloy_sol_types::SolType>::Token<'a>;
5869            type Return = getStrategiesWithBurnableSharesReturn;
5870            type ReturnTuple<'a> = (
5871                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
5872                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
5873            );
5874            type ReturnToken<'a> = <Self::ReturnTuple<
5875                'a,
5876            > as alloy_sol_types::SolType>::Token<'a>;
5877            const SIGNATURE: &'static str = "getStrategiesWithBurnableShares()";
5878            const SELECTOR: [u8; 4] = [54u8, 168u8, 197u8, 0u8];
5879            #[inline]
5880            fn new<'a>(
5881                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5882            ) -> Self {
5883                tuple.into()
5884            }
5885            #[inline]
5886            fn tokenize(&self) -> Self::Token<'_> {
5887                ()
5888            }
5889            #[inline]
5890            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5891                getStrategiesWithBurnableSharesReturn::_tokenize(ret)
5892            }
5893            #[inline]
5894            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5895                <Self::ReturnTuple<
5896                    '_,
5897                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5898                    .map(Into::into)
5899            }
5900            #[inline]
5901            fn abi_decode_returns_validate(
5902                data: &[u8],
5903            ) -> alloy_sol_types::Result<Self::Return> {
5904                <Self::ReturnTuple<
5905                    '_,
5906                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5907                    .map(Into::into)
5908            }
5909        }
5910    };
5911    #[derive(serde::Serialize, serde::Deserialize)]
5912    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5913    /**Function with signature `increaseBurnableShares(address,uint256)` and selector `0xdebe1eab`.
5914```solidity
5915function increaseBurnableShares(address strategy, uint256 addedSharesToBurn) external;
5916```*/
5917    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5918    #[derive(Clone)]
5919    pub struct increaseBurnableSharesCall {
5920        #[allow(missing_docs)]
5921        pub strategy: alloy::sol_types::private::Address,
5922        #[allow(missing_docs)]
5923        pub addedSharesToBurn: alloy::sol_types::private::primitives::aliases::U256,
5924    }
5925    ///Container type for the return parameters of the [`increaseBurnableShares(address,uint256)`](increaseBurnableSharesCall) function.
5926    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5927    #[derive(Clone)]
5928    pub struct increaseBurnableSharesReturn {}
5929    #[allow(
5930        non_camel_case_types,
5931        non_snake_case,
5932        clippy::pub_underscore_fields,
5933        clippy::style
5934    )]
5935    const _: () = {
5936        use alloy::sol_types as alloy_sol_types;
5937        {
5938            #[doc(hidden)]
5939            type UnderlyingSolTuple<'a> = (
5940                alloy::sol_types::sol_data::Address,
5941                alloy::sol_types::sol_data::Uint<256>,
5942            );
5943            #[doc(hidden)]
5944            type UnderlyingRustTuple<'a> = (
5945                alloy::sol_types::private::Address,
5946                alloy::sol_types::private::primitives::aliases::U256,
5947            );
5948            #[cfg(test)]
5949            #[allow(dead_code, unreachable_patterns)]
5950            fn _type_assertion(
5951                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5952            ) {
5953                match _t {
5954                    alloy_sol_types::private::AssertTypeEq::<
5955                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5956                    >(_) => {}
5957                }
5958            }
5959            #[automatically_derived]
5960            #[doc(hidden)]
5961            impl ::core::convert::From<increaseBurnableSharesCall>
5962            for UnderlyingRustTuple<'_> {
5963                fn from(value: increaseBurnableSharesCall) -> Self {
5964                    (value.strategy, value.addedSharesToBurn)
5965                }
5966            }
5967            #[automatically_derived]
5968            #[doc(hidden)]
5969            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5970            for increaseBurnableSharesCall {
5971                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5972                    Self {
5973                        strategy: tuple.0,
5974                        addedSharesToBurn: tuple.1,
5975                    }
5976                }
5977            }
5978        }
5979        {
5980            #[doc(hidden)]
5981            type UnderlyingSolTuple<'a> = ();
5982            #[doc(hidden)]
5983            type UnderlyingRustTuple<'a> = ();
5984            #[cfg(test)]
5985            #[allow(dead_code, unreachable_patterns)]
5986            fn _type_assertion(
5987                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5988            ) {
5989                match _t {
5990                    alloy_sol_types::private::AssertTypeEq::<
5991                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5992                    >(_) => {}
5993                }
5994            }
5995            #[automatically_derived]
5996            #[doc(hidden)]
5997            impl ::core::convert::From<increaseBurnableSharesReturn>
5998            for UnderlyingRustTuple<'_> {
5999                fn from(value: increaseBurnableSharesReturn) -> Self {
6000                    ()
6001                }
6002            }
6003            #[automatically_derived]
6004            #[doc(hidden)]
6005            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6006            for increaseBurnableSharesReturn {
6007                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6008                    Self {}
6009                }
6010            }
6011        }
6012        impl increaseBurnableSharesReturn {
6013            fn _tokenize(
6014                &self,
6015            ) -> <increaseBurnableSharesCall as alloy_sol_types::SolCall>::ReturnToken<
6016                '_,
6017            > {
6018                ()
6019            }
6020        }
6021        #[automatically_derived]
6022        impl alloy_sol_types::SolCall for increaseBurnableSharesCall {
6023            type Parameters<'a> = (
6024                alloy::sol_types::sol_data::Address,
6025                alloy::sol_types::sol_data::Uint<256>,
6026            );
6027            type Token<'a> = <Self::Parameters<
6028                'a,
6029            > as alloy_sol_types::SolType>::Token<'a>;
6030            type Return = increaseBurnableSharesReturn;
6031            type ReturnTuple<'a> = ();
6032            type ReturnToken<'a> = <Self::ReturnTuple<
6033                'a,
6034            > as alloy_sol_types::SolType>::Token<'a>;
6035            const SIGNATURE: &'static str = "increaseBurnableShares(address,uint256)";
6036            const SELECTOR: [u8; 4] = [222u8, 190u8, 30u8, 171u8];
6037            #[inline]
6038            fn new<'a>(
6039                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6040            ) -> Self {
6041                tuple.into()
6042            }
6043            #[inline]
6044            fn tokenize(&self) -> Self::Token<'_> {
6045                (
6046                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6047                        &self.strategy,
6048                    ),
6049                    <alloy::sol_types::sol_data::Uint<
6050                        256,
6051                    > as alloy_sol_types::SolType>::tokenize(&self.addedSharesToBurn),
6052                )
6053            }
6054            #[inline]
6055            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6056                increaseBurnableSharesReturn::_tokenize(ret)
6057            }
6058            #[inline]
6059            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6060                <Self::ReturnTuple<
6061                    '_,
6062                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6063                    .map(Into::into)
6064            }
6065            #[inline]
6066            fn abi_decode_returns_validate(
6067                data: &[u8],
6068            ) -> alloy_sol_types::Result<Self::Return> {
6069                <Self::ReturnTuple<
6070                    '_,
6071                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6072                    .map(Into::into)
6073            }
6074        }
6075    };
6076    #[derive(serde::Serialize, serde::Deserialize)]
6077    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6078    /**Function with signature `initialize(address,address,uint256)` and selector `0x1794bb3c`.
6079```solidity
6080function initialize(address initialOwner, address initialStrategyWhitelister, uint256 initialPausedStatus) external;
6081```*/
6082    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6083    #[derive(Clone)]
6084    pub struct initializeCall {
6085        #[allow(missing_docs)]
6086        pub initialOwner: alloy::sol_types::private::Address,
6087        #[allow(missing_docs)]
6088        pub initialStrategyWhitelister: alloy::sol_types::private::Address,
6089        #[allow(missing_docs)]
6090        pub initialPausedStatus: alloy::sol_types::private::primitives::aliases::U256,
6091    }
6092    ///Container type for the return parameters of the [`initialize(address,address,uint256)`](initializeCall) function.
6093    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6094    #[derive(Clone)]
6095    pub struct initializeReturn {}
6096    #[allow(
6097        non_camel_case_types,
6098        non_snake_case,
6099        clippy::pub_underscore_fields,
6100        clippy::style
6101    )]
6102    const _: () = {
6103        use alloy::sol_types as alloy_sol_types;
6104        {
6105            #[doc(hidden)]
6106            type UnderlyingSolTuple<'a> = (
6107                alloy::sol_types::sol_data::Address,
6108                alloy::sol_types::sol_data::Address,
6109                alloy::sol_types::sol_data::Uint<256>,
6110            );
6111            #[doc(hidden)]
6112            type UnderlyingRustTuple<'a> = (
6113                alloy::sol_types::private::Address,
6114                alloy::sol_types::private::Address,
6115                alloy::sol_types::private::primitives::aliases::U256,
6116            );
6117            #[cfg(test)]
6118            #[allow(dead_code, unreachable_patterns)]
6119            fn _type_assertion(
6120                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6121            ) {
6122                match _t {
6123                    alloy_sol_types::private::AssertTypeEq::<
6124                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6125                    >(_) => {}
6126                }
6127            }
6128            #[automatically_derived]
6129            #[doc(hidden)]
6130            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
6131                fn from(value: initializeCall) -> Self {
6132                    (
6133                        value.initialOwner,
6134                        value.initialStrategyWhitelister,
6135                        value.initialPausedStatus,
6136                    )
6137                }
6138            }
6139            #[automatically_derived]
6140            #[doc(hidden)]
6141            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
6142                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6143                    Self {
6144                        initialOwner: tuple.0,
6145                        initialStrategyWhitelister: tuple.1,
6146                        initialPausedStatus: tuple.2,
6147                    }
6148                }
6149            }
6150        }
6151        {
6152            #[doc(hidden)]
6153            type UnderlyingSolTuple<'a> = ();
6154            #[doc(hidden)]
6155            type UnderlyingRustTuple<'a> = ();
6156            #[cfg(test)]
6157            #[allow(dead_code, unreachable_patterns)]
6158            fn _type_assertion(
6159                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6160            ) {
6161                match _t {
6162                    alloy_sol_types::private::AssertTypeEq::<
6163                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6164                    >(_) => {}
6165                }
6166            }
6167            #[automatically_derived]
6168            #[doc(hidden)]
6169            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
6170                fn from(value: initializeReturn) -> Self {
6171                    ()
6172                }
6173            }
6174            #[automatically_derived]
6175            #[doc(hidden)]
6176            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
6177                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6178                    Self {}
6179                }
6180            }
6181        }
6182        impl initializeReturn {
6183            fn _tokenize(
6184                &self,
6185            ) -> <initializeCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
6186                ()
6187            }
6188        }
6189        #[automatically_derived]
6190        impl alloy_sol_types::SolCall for initializeCall {
6191            type Parameters<'a> = (
6192                alloy::sol_types::sol_data::Address,
6193                alloy::sol_types::sol_data::Address,
6194                alloy::sol_types::sol_data::Uint<256>,
6195            );
6196            type Token<'a> = <Self::Parameters<
6197                'a,
6198            > as alloy_sol_types::SolType>::Token<'a>;
6199            type Return = initializeReturn;
6200            type ReturnTuple<'a> = ();
6201            type ReturnToken<'a> = <Self::ReturnTuple<
6202                'a,
6203            > as alloy_sol_types::SolType>::Token<'a>;
6204            const SIGNATURE: &'static str = "initialize(address,address,uint256)";
6205            const SELECTOR: [u8; 4] = [23u8, 148u8, 187u8, 60u8];
6206            #[inline]
6207            fn new<'a>(
6208                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6209            ) -> Self {
6210                tuple.into()
6211            }
6212            #[inline]
6213            fn tokenize(&self) -> Self::Token<'_> {
6214                (
6215                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6216                        &self.initialOwner,
6217                    ),
6218                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6219                        &self.initialStrategyWhitelister,
6220                    ),
6221                    <alloy::sol_types::sol_data::Uint<
6222                        256,
6223                    > as alloy_sol_types::SolType>::tokenize(&self.initialPausedStatus),
6224                )
6225            }
6226            #[inline]
6227            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6228                initializeReturn::_tokenize(ret)
6229            }
6230            #[inline]
6231            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6232                <Self::ReturnTuple<
6233                    '_,
6234                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6235                    .map(Into::into)
6236            }
6237            #[inline]
6238            fn abi_decode_returns_validate(
6239                data: &[u8],
6240            ) -> alloy_sol_types::Result<Self::Return> {
6241                <Self::ReturnTuple<
6242                    '_,
6243                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6244                    .map(Into::into)
6245            }
6246        }
6247    };
6248    #[derive(serde::Serialize, serde::Deserialize)]
6249    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6250    /**Function with signature `nonces(address)` and selector `0x7ecebe00`.
6251```solidity
6252function nonces(address signer) external view returns (uint256 nonce);
6253```*/
6254    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6255    #[derive(Clone)]
6256    pub struct noncesCall {
6257        #[allow(missing_docs)]
6258        pub signer: alloy::sol_types::private::Address,
6259    }
6260    #[derive(serde::Serialize, serde::Deserialize)]
6261    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6262    ///Container type for the return parameters of the [`nonces(address)`](noncesCall) function.
6263    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6264    #[derive(Clone)]
6265    pub struct noncesReturn {
6266        #[allow(missing_docs)]
6267        pub nonce: alloy::sol_types::private::primitives::aliases::U256,
6268    }
6269    #[allow(
6270        non_camel_case_types,
6271        non_snake_case,
6272        clippy::pub_underscore_fields,
6273        clippy::style
6274    )]
6275    const _: () = {
6276        use alloy::sol_types as alloy_sol_types;
6277        {
6278            #[doc(hidden)]
6279            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6280            #[doc(hidden)]
6281            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6282            #[cfg(test)]
6283            #[allow(dead_code, unreachable_patterns)]
6284            fn _type_assertion(
6285                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6286            ) {
6287                match _t {
6288                    alloy_sol_types::private::AssertTypeEq::<
6289                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6290                    >(_) => {}
6291                }
6292            }
6293            #[automatically_derived]
6294            #[doc(hidden)]
6295            impl ::core::convert::From<noncesCall> for UnderlyingRustTuple<'_> {
6296                fn from(value: noncesCall) -> Self {
6297                    (value.signer,)
6298                }
6299            }
6300            #[automatically_derived]
6301            #[doc(hidden)]
6302            impl ::core::convert::From<UnderlyingRustTuple<'_>> for noncesCall {
6303                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6304                    Self { signer: tuple.0 }
6305                }
6306            }
6307        }
6308        {
6309            #[doc(hidden)]
6310            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6311            #[doc(hidden)]
6312            type UnderlyingRustTuple<'a> = (
6313                alloy::sol_types::private::primitives::aliases::U256,
6314            );
6315            #[cfg(test)]
6316            #[allow(dead_code, unreachable_patterns)]
6317            fn _type_assertion(
6318                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6319            ) {
6320                match _t {
6321                    alloy_sol_types::private::AssertTypeEq::<
6322                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6323                    >(_) => {}
6324                }
6325            }
6326            #[automatically_derived]
6327            #[doc(hidden)]
6328            impl ::core::convert::From<noncesReturn> for UnderlyingRustTuple<'_> {
6329                fn from(value: noncesReturn) -> Self {
6330                    (value.nonce,)
6331                }
6332            }
6333            #[automatically_derived]
6334            #[doc(hidden)]
6335            impl ::core::convert::From<UnderlyingRustTuple<'_>> for noncesReturn {
6336                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6337                    Self { nonce: tuple.0 }
6338                }
6339            }
6340        }
6341        #[automatically_derived]
6342        impl alloy_sol_types::SolCall for noncesCall {
6343            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
6344            type Token<'a> = <Self::Parameters<
6345                'a,
6346            > as alloy_sol_types::SolType>::Token<'a>;
6347            type Return = alloy::sol_types::private::primitives::aliases::U256;
6348            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6349            type ReturnToken<'a> = <Self::ReturnTuple<
6350                'a,
6351            > as alloy_sol_types::SolType>::Token<'a>;
6352            const SIGNATURE: &'static str = "nonces(address)";
6353            const SELECTOR: [u8; 4] = [126u8, 206u8, 190u8, 0u8];
6354            #[inline]
6355            fn new<'a>(
6356                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6357            ) -> Self {
6358                tuple.into()
6359            }
6360            #[inline]
6361            fn tokenize(&self) -> Self::Token<'_> {
6362                (
6363                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6364                        &self.signer,
6365                    ),
6366                )
6367            }
6368            #[inline]
6369            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6370                (
6371                    <alloy::sol_types::sol_data::Uint<
6372                        256,
6373                    > as alloy_sol_types::SolType>::tokenize(ret),
6374                )
6375            }
6376            #[inline]
6377            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6378                <Self::ReturnTuple<
6379                    '_,
6380                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6381                    .map(|r| {
6382                        let r: noncesReturn = r.into();
6383                        r.nonce
6384                    })
6385            }
6386            #[inline]
6387            fn abi_decode_returns_validate(
6388                data: &[u8],
6389            ) -> alloy_sol_types::Result<Self::Return> {
6390                <Self::ReturnTuple<
6391                    '_,
6392                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6393                    .map(|r| {
6394                        let r: noncesReturn = r.into();
6395                        r.nonce
6396                    })
6397            }
6398        }
6399    };
6400    #[derive(serde::Serialize, serde::Deserialize)]
6401    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6402    /**Function with signature `owner()` and selector `0x8da5cb5b`.
6403```solidity
6404function owner() external view returns (address);
6405```*/
6406    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6407    #[derive(Clone)]
6408    pub struct ownerCall;
6409    #[derive(serde::Serialize, serde::Deserialize)]
6410    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6411    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
6412    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6413    #[derive(Clone)]
6414    pub struct ownerReturn {
6415        #[allow(missing_docs)]
6416        pub _0: alloy::sol_types::private::Address,
6417    }
6418    #[allow(
6419        non_camel_case_types,
6420        non_snake_case,
6421        clippy::pub_underscore_fields,
6422        clippy::style
6423    )]
6424    const _: () = {
6425        use alloy::sol_types as alloy_sol_types;
6426        {
6427            #[doc(hidden)]
6428            type UnderlyingSolTuple<'a> = ();
6429            #[doc(hidden)]
6430            type UnderlyingRustTuple<'a> = ();
6431            #[cfg(test)]
6432            #[allow(dead_code, unreachable_patterns)]
6433            fn _type_assertion(
6434                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6435            ) {
6436                match _t {
6437                    alloy_sol_types::private::AssertTypeEq::<
6438                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6439                    >(_) => {}
6440                }
6441            }
6442            #[automatically_derived]
6443            #[doc(hidden)]
6444            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
6445                fn from(value: ownerCall) -> Self {
6446                    ()
6447                }
6448            }
6449            #[automatically_derived]
6450            #[doc(hidden)]
6451            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
6452                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6453                    Self
6454                }
6455            }
6456        }
6457        {
6458            #[doc(hidden)]
6459            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6460            #[doc(hidden)]
6461            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6462            #[cfg(test)]
6463            #[allow(dead_code, unreachable_patterns)]
6464            fn _type_assertion(
6465                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6466            ) {
6467                match _t {
6468                    alloy_sol_types::private::AssertTypeEq::<
6469                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6470                    >(_) => {}
6471                }
6472            }
6473            #[automatically_derived]
6474            #[doc(hidden)]
6475            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
6476                fn from(value: ownerReturn) -> Self {
6477                    (value._0,)
6478                }
6479            }
6480            #[automatically_derived]
6481            #[doc(hidden)]
6482            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
6483                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6484                    Self { _0: tuple.0 }
6485                }
6486            }
6487        }
6488        #[automatically_derived]
6489        impl alloy_sol_types::SolCall for ownerCall {
6490            type Parameters<'a> = ();
6491            type Token<'a> = <Self::Parameters<
6492                'a,
6493            > as alloy_sol_types::SolType>::Token<'a>;
6494            type Return = alloy::sol_types::private::Address;
6495            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
6496            type ReturnToken<'a> = <Self::ReturnTuple<
6497                'a,
6498            > as alloy_sol_types::SolType>::Token<'a>;
6499            const SIGNATURE: &'static str = "owner()";
6500            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
6501            #[inline]
6502            fn new<'a>(
6503                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6504            ) -> Self {
6505                tuple.into()
6506            }
6507            #[inline]
6508            fn tokenize(&self) -> Self::Token<'_> {
6509                ()
6510            }
6511            #[inline]
6512            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6513                (
6514                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6515                        ret,
6516                    ),
6517                )
6518            }
6519            #[inline]
6520            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6521                <Self::ReturnTuple<
6522                    '_,
6523                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6524                    .map(|r| {
6525                        let r: ownerReturn = r.into();
6526                        r._0
6527                    })
6528            }
6529            #[inline]
6530            fn abi_decode_returns_validate(
6531                data: &[u8],
6532            ) -> alloy_sol_types::Result<Self::Return> {
6533                <Self::ReturnTuple<
6534                    '_,
6535                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6536                    .map(|r| {
6537                        let r: ownerReturn = r.into();
6538                        r._0
6539                    })
6540            }
6541        }
6542    };
6543    #[derive(serde::Serialize, serde::Deserialize)]
6544    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6545    /**Function with signature `pause(uint256)` and selector `0x136439dd`.
6546```solidity
6547function pause(uint256 newPausedStatus) external;
6548```*/
6549    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6550    #[derive(Clone)]
6551    pub struct pauseCall {
6552        #[allow(missing_docs)]
6553        pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256,
6554    }
6555    ///Container type for the return parameters of the [`pause(uint256)`](pauseCall) function.
6556    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6557    #[derive(Clone)]
6558    pub struct pauseReturn {}
6559    #[allow(
6560        non_camel_case_types,
6561        non_snake_case,
6562        clippy::pub_underscore_fields,
6563        clippy::style
6564    )]
6565    const _: () = {
6566        use alloy::sol_types as alloy_sol_types;
6567        {
6568            #[doc(hidden)]
6569            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6570            #[doc(hidden)]
6571            type UnderlyingRustTuple<'a> = (
6572                alloy::sol_types::private::primitives::aliases::U256,
6573            );
6574            #[cfg(test)]
6575            #[allow(dead_code, unreachable_patterns)]
6576            fn _type_assertion(
6577                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6578            ) {
6579                match _t {
6580                    alloy_sol_types::private::AssertTypeEq::<
6581                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6582                    >(_) => {}
6583                }
6584            }
6585            #[automatically_derived]
6586            #[doc(hidden)]
6587            impl ::core::convert::From<pauseCall> for UnderlyingRustTuple<'_> {
6588                fn from(value: pauseCall) -> Self {
6589                    (value.newPausedStatus,)
6590                }
6591            }
6592            #[automatically_derived]
6593            #[doc(hidden)]
6594            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauseCall {
6595                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6596                    Self { newPausedStatus: tuple.0 }
6597                }
6598            }
6599        }
6600        {
6601            #[doc(hidden)]
6602            type UnderlyingSolTuple<'a> = ();
6603            #[doc(hidden)]
6604            type UnderlyingRustTuple<'a> = ();
6605            #[cfg(test)]
6606            #[allow(dead_code, unreachable_patterns)]
6607            fn _type_assertion(
6608                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6609            ) {
6610                match _t {
6611                    alloy_sol_types::private::AssertTypeEq::<
6612                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6613                    >(_) => {}
6614                }
6615            }
6616            #[automatically_derived]
6617            #[doc(hidden)]
6618            impl ::core::convert::From<pauseReturn> for UnderlyingRustTuple<'_> {
6619                fn from(value: pauseReturn) -> Self {
6620                    ()
6621                }
6622            }
6623            #[automatically_derived]
6624            #[doc(hidden)]
6625            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauseReturn {
6626                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6627                    Self {}
6628                }
6629            }
6630        }
6631        impl pauseReturn {
6632            fn _tokenize(
6633                &self,
6634            ) -> <pauseCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
6635                ()
6636            }
6637        }
6638        #[automatically_derived]
6639        impl alloy_sol_types::SolCall for pauseCall {
6640            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6641            type Token<'a> = <Self::Parameters<
6642                'a,
6643            > as alloy_sol_types::SolType>::Token<'a>;
6644            type Return = pauseReturn;
6645            type ReturnTuple<'a> = ();
6646            type ReturnToken<'a> = <Self::ReturnTuple<
6647                'a,
6648            > as alloy_sol_types::SolType>::Token<'a>;
6649            const SIGNATURE: &'static str = "pause(uint256)";
6650            const SELECTOR: [u8; 4] = [19u8, 100u8, 57u8, 221u8];
6651            #[inline]
6652            fn new<'a>(
6653                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6654            ) -> Self {
6655                tuple.into()
6656            }
6657            #[inline]
6658            fn tokenize(&self) -> Self::Token<'_> {
6659                (
6660                    <alloy::sol_types::sol_data::Uint<
6661                        256,
6662                    > as alloy_sol_types::SolType>::tokenize(&self.newPausedStatus),
6663                )
6664            }
6665            #[inline]
6666            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6667                pauseReturn::_tokenize(ret)
6668            }
6669            #[inline]
6670            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6671                <Self::ReturnTuple<
6672                    '_,
6673                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6674                    .map(Into::into)
6675            }
6676            #[inline]
6677            fn abi_decode_returns_validate(
6678                data: &[u8],
6679            ) -> alloy_sol_types::Result<Self::Return> {
6680                <Self::ReturnTuple<
6681                    '_,
6682                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6683                    .map(Into::into)
6684            }
6685        }
6686    };
6687    #[derive(serde::Serialize, serde::Deserialize)]
6688    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6689    /**Function with signature `pauseAll()` and selector `0x595c6a67`.
6690```solidity
6691function pauseAll() external;
6692```*/
6693    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6694    #[derive(Clone)]
6695    pub struct pauseAllCall;
6696    ///Container type for the return parameters of the [`pauseAll()`](pauseAllCall) function.
6697    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6698    #[derive(Clone)]
6699    pub struct pauseAllReturn {}
6700    #[allow(
6701        non_camel_case_types,
6702        non_snake_case,
6703        clippy::pub_underscore_fields,
6704        clippy::style
6705    )]
6706    const _: () = {
6707        use alloy::sol_types as alloy_sol_types;
6708        {
6709            #[doc(hidden)]
6710            type UnderlyingSolTuple<'a> = ();
6711            #[doc(hidden)]
6712            type UnderlyingRustTuple<'a> = ();
6713            #[cfg(test)]
6714            #[allow(dead_code, unreachable_patterns)]
6715            fn _type_assertion(
6716                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6717            ) {
6718                match _t {
6719                    alloy_sol_types::private::AssertTypeEq::<
6720                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6721                    >(_) => {}
6722                }
6723            }
6724            #[automatically_derived]
6725            #[doc(hidden)]
6726            impl ::core::convert::From<pauseAllCall> for UnderlyingRustTuple<'_> {
6727                fn from(value: pauseAllCall) -> Self {
6728                    ()
6729                }
6730            }
6731            #[automatically_derived]
6732            #[doc(hidden)]
6733            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauseAllCall {
6734                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6735                    Self
6736                }
6737            }
6738        }
6739        {
6740            #[doc(hidden)]
6741            type UnderlyingSolTuple<'a> = ();
6742            #[doc(hidden)]
6743            type UnderlyingRustTuple<'a> = ();
6744            #[cfg(test)]
6745            #[allow(dead_code, unreachable_patterns)]
6746            fn _type_assertion(
6747                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6748            ) {
6749                match _t {
6750                    alloy_sol_types::private::AssertTypeEq::<
6751                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6752                    >(_) => {}
6753                }
6754            }
6755            #[automatically_derived]
6756            #[doc(hidden)]
6757            impl ::core::convert::From<pauseAllReturn> for UnderlyingRustTuple<'_> {
6758                fn from(value: pauseAllReturn) -> Self {
6759                    ()
6760                }
6761            }
6762            #[automatically_derived]
6763            #[doc(hidden)]
6764            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauseAllReturn {
6765                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6766                    Self {}
6767                }
6768            }
6769        }
6770        impl pauseAllReturn {
6771            fn _tokenize(
6772                &self,
6773            ) -> <pauseAllCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
6774                ()
6775            }
6776        }
6777        #[automatically_derived]
6778        impl alloy_sol_types::SolCall for pauseAllCall {
6779            type Parameters<'a> = ();
6780            type Token<'a> = <Self::Parameters<
6781                'a,
6782            > as alloy_sol_types::SolType>::Token<'a>;
6783            type Return = pauseAllReturn;
6784            type ReturnTuple<'a> = ();
6785            type ReturnToken<'a> = <Self::ReturnTuple<
6786                'a,
6787            > as alloy_sol_types::SolType>::Token<'a>;
6788            const SIGNATURE: &'static str = "pauseAll()";
6789            const SELECTOR: [u8; 4] = [89u8, 92u8, 106u8, 103u8];
6790            #[inline]
6791            fn new<'a>(
6792                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6793            ) -> Self {
6794                tuple.into()
6795            }
6796            #[inline]
6797            fn tokenize(&self) -> Self::Token<'_> {
6798                ()
6799            }
6800            #[inline]
6801            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6802                pauseAllReturn::_tokenize(ret)
6803            }
6804            #[inline]
6805            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6806                <Self::ReturnTuple<
6807                    '_,
6808                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6809                    .map(Into::into)
6810            }
6811            #[inline]
6812            fn abi_decode_returns_validate(
6813                data: &[u8],
6814            ) -> alloy_sol_types::Result<Self::Return> {
6815                <Self::ReturnTuple<
6816                    '_,
6817                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6818                    .map(Into::into)
6819            }
6820        }
6821    };
6822    #[derive(serde::Serialize, serde::Deserialize)]
6823    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6824    /**Function with signature `paused(uint8)` and selector `0x5ac86ab7`.
6825```solidity
6826function paused(uint8 index) external view returns (bool);
6827```*/
6828    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6829    #[derive(Clone)]
6830    pub struct paused_0Call {
6831        #[allow(missing_docs)]
6832        pub index: u8,
6833    }
6834    #[derive(serde::Serialize, serde::Deserialize)]
6835    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6836    ///Container type for the return parameters of the [`paused(uint8)`](paused_0Call) function.
6837    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6838    #[derive(Clone)]
6839    pub struct paused_0Return {
6840        #[allow(missing_docs)]
6841        pub _0: bool,
6842    }
6843    #[allow(
6844        non_camel_case_types,
6845        non_snake_case,
6846        clippy::pub_underscore_fields,
6847        clippy::style
6848    )]
6849    const _: () = {
6850        use alloy::sol_types as alloy_sol_types;
6851        {
6852            #[doc(hidden)]
6853            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,);
6854            #[doc(hidden)]
6855            type UnderlyingRustTuple<'a> = (u8,);
6856            #[cfg(test)]
6857            #[allow(dead_code, unreachable_patterns)]
6858            fn _type_assertion(
6859                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6860            ) {
6861                match _t {
6862                    alloy_sol_types::private::AssertTypeEq::<
6863                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6864                    >(_) => {}
6865                }
6866            }
6867            #[automatically_derived]
6868            #[doc(hidden)]
6869            impl ::core::convert::From<paused_0Call> for UnderlyingRustTuple<'_> {
6870                fn from(value: paused_0Call) -> Self {
6871                    (value.index,)
6872                }
6873            }
6874            #[automatically_derived]
6875            #[doc(hidden)]
6876            impl ::core::convert::From<UnderlyingRustTuple<'_>> for paused_0Call {
6877                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6878                    Self { index: tuple.0 }
6879                }
6880            }
6881        }
6882        {
6883            #[doc(hidden)]
6884            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
6885            #[doc(hidden)]
6886            type UnderlyingRustTuple<'a> = (bool,);
6887            #[cfg(test)]
6888            #[allow(dead_code, unreachable_patterns)]
6889            fn _type_assertion(
6890                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6891            ) {
6892                match _t {
6893                    alloy_sol_types::private::AssertTypeEq::<
6894                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6895                    >(_) => {}
6896                }
6897            }
6898            #[automatically_derived]
6899            #[doc(hidden)]
6900            impl ::core::convert::From<paused_0Return> for UnderlyingRustTuple<'_> {
6901                fn from(value: paused_0Return) -> Self {
6902                    (value._0,)
6903                }
6904            }
6905            #[automatically_derived]
6906            #[doc(hidden)]
6907            impl ::core::convert::From<UnderlyingRustTuple<'_>> for paused_0Return {
6908                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6909                    Self { _0: tuple.0 }
6910                }
6911            }
6912        }
6913        #[automatically_derived]
6914        impl alloy_sol_types::SolCall for paused_0Call {
6915            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,);
6916            type Token<'a> = <Self::Parameters<
6917                'a,
6918            > as alloy_sol_types::SolType>::Token<'a>;
6919            type Return = bool;
6920            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
6921            type ReturnToken<'a> = <Self::ReturnTuple<
6922                'a,
6923            > as alloy_sol_types::SolType>::Token<'a>;
6924            const SIGNATURE: &'static str = "paused(uint8)";
6925            const SELECTOR: [u8; 4] = [90u8, 200u8, 106u8, 183u8];
6926            #[inline]
6927            fn new<'a>(
6928                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6929            ) -> Self {
6930                tuple.into()
6931            }
6932            #[inline]
6933            fn tokenize(&self) -> Self::Token<'_> {
6934                (
6935                    <alloy::sol_types::sol_data::Uint<
6936                        8,
6937                    > as alloy_sol_types::SolType>::tokenize(&self.index),
6938                )
6939            }
6940            #[inline]
6941            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6942                (
6943                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
6944                        ret,
6945                    ),
6946                )
6947            }
6948            #[inline]
6949            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6950                <Self::ReturnTuple<
6951                    '_,
6952                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6953                    .map(|r| {
6954                        let r: paused_0Return = r.into();
6955                        r._0
6956                    })
6957            }
6958            #[inline]
6959            fn abi_decode_returns_validate(
6960                data: &[u8],
6961            ) -> alloy_sol_types::Result<Self::Return> {
6962                <Self::ReturnTuple<
6963                    '_,
6964                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6965                    .map(|r| {
6966                        let r: paused_0Return = r.into();
6967                        r._0
6968                    })
6969            }
6970        }
6971    };
6972    #[derive(serde::Serialize, serde::Deserialize)]
6973    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6974    /**Function with signature `paused()` and selector `0x5c975abb`.
6975```solidity
6976function paused() external view returns (uint256);
6977```*/
6978    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6979    #[derive(Clone)]
6980    pub struct paused_1Call;
6981    #[derive(serde::Serialize, serde::Deserialize)]
6982    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6983    ///Container type for the return parameters of the [`paused()`](paused_1Call) function.
6984    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6985    #[derive(Clone)]
6986    pub struct paused_1Return {
6987        #[allow(missing_docs)]
6988        pub _0: alloy::sol_types::private::primitives::aliases::U256,
6989    }
6990    #[allow(
6991        non_camel_case_types,
6992        non_snake_case,
6993        clippy::pub_underscore_fields,
6994        clippy::style
6995    )]
6996    const _: () = {
6997        use alloy::sol_types as alloy_sol_types;
6998        {
6999            #[doc(hidden)]
7000            type UnderlyingSolTuple<'a> = ();
7001            #[doc(hidden)]
7002            type UnderlyingRustTuple<'a> = ();
7003            #[cfg(test)]
7004            #[allow(dead_code, unreachable_patterns)]
7005            fn _type_assertion(
7006                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7007            ) {
7008                match _t {
7009                    alloy_sol_types::private::AssertTypeEq::<
7010                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7011                    >(_) => {}
7012                }
7013            }
7014            #[automatically_derived]
7015            #[doc(hidden)]
7016            impl ::core::convert::From<paused_1Call> for UnderlyingRustTuple<'_> {
7017                fn from(value: paused_1Call) -> Self {
7018                    ()
7019                }
7020            }
7021            #[automatically_derived]
7022            #[doc(hidden)]
7023            impl ::core::convert::From<UnderlyingRustTuple<'_>> for paused_1Call {
7024                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7025                    Self
7026                }
7027            }
7028        }
7029        {
7030            #[doc(hidden)]
7031            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7032            #[doc(hidden)]
7033            type UnderlyingRustTuple<'a> = (
7034                alloy::sol_types::private::primitives::aliases::U256,
7035            );
7036            #[cfg(test)]
7037            #[allow(dead_code, unreachable_patterns)]
7038            fn _type_assertion(
7039                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7040            ) {
7041                match _t {
7042                    alloy_sol_types::private::AssertTypeEq::<
7043                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7044                    >(_) => {}
7045                }
7046            }
7047            #[automatically_derived]
7048            #[doc(hidden)]
7049            impl ::core::convert::From<paused_1Return> for UnderlyingRustTuple<'_> {
7050                fn from(value: paused_1Return) -> Self {
7051                    (value._0,)
7052                }
7053            }
7054            #[automatically_derived]
7055            #[doc(hidden)]
7056            impl ::core::convert::From<UnderlyingRustTuple<'_>> for paused_1Return {
7057                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7058                    Self { _0: tuple.0 }
7059                }
7060            }
7061        }
7062        #[automatically_derived]
7063        impl alloy_sol_types::SolCall for paused_1Call {
7064            type Parameters<'a> = ();
7065            type Token<'a> = <Self::Parameters<
7066                'a,
7067            > as alloy_sol_types::SolType>::Token<'a>;
7068            type Return = alloy::sol_types::private::primitives::aliases::U256;
7069            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7070            type ReturnToken<'a> = <Self::ReturnTuple<
7071                'a,
7072            > as alloy_sol_types::SolType>::Token<'a>;
7073            const SIGNATURE: &'static str = "paused()";
7074            const SELECTOR: [u8; 4] = [92u8, 151u8, 90u8, 187u8];
7075            #[inline]
7076            fn new<'a>(
7077                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7078            ) -> Self {
7079                tuple.into()
7080            }
7081            #[inline]
7082            fn tokenize(&self) -> Self::Token<'_> {
7083                ()
7084            }
7085            #[inline]
7086            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7087                (
7088                    <alloy::sol_types::sol_data::Uint<
7089                        256,
7090                    > as alloy_sol_types::SolType>::tokenize(ret),
7091                )
7092            }
7093            #[inline]
7094            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7095                <Self::ReturnTuple<
7096                    '_,
7097                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7098                    .map(|r| {
7099                        let r: paused_1Return = r.into();
7100                        r._0
7101                    })
7102            }
7103            #[inline]
7104            fn abi_decode_returns_validate(
7105                data: &[u8],
7106            ) -> alloy_sol_types::Result<Self::Return> {
7107                <Self::ReturnTuple<
7108                    '_,
7109                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7110                    .map(|r| {
7111                        let r: paused_1Return = r.into();
7112                        r._0
7113                    })
7114            }
7115        }
7116    };
7117    #[derive(serde::Serialize, serde::Deserialize)]
7118    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7119    /**Function with signature `pauserRegistry()` and selector `0x886f1195`.
7120```solidity
7121function pauserRegistry() external view returns (address);
7122```*/
7123    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7124    #[derive(Clone)]
7125    pub struct pauserRegistryCall;
7126    #[derive(serde::Serialize, serde::Deserialize)]
7127    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7128    ///Container type for the return parameters of the [`pauserRegistry()`](pauserRegistryCall) function.
7129    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7130    #[derive(Clone)]
7131    pub struct pauserRegistryReturn {
7132        #[allow(missing_docs)]
7133        pub _0: alloy::sol_types::private::Address,
7134    }
7135    #[allow(
7136        non_camel_case_types,
7137        non_snake_case,
7138        clippy::pub_underscore_fields,
7139        clippy::style
7140    )]
7141    const _: () = {
7142        use alloy::sol_types as alloy_sol_types;
7143        {
7144            #[doc(hidden)]
7145            type UnderlyingSolTuple<'a> = ();
7146            #[doc(hidden)]
7147            type UnderlyingRustTuple<'a> = ();
7148            #[cfg(test)]
7149            #[allow(dead_code, unreachable_patterns)]
7150            fn _type_assertion(
7151                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7152            ) {
7153                match _t {
7154                    alloy_sol_types::private::AssertTypeEq::<
7155                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7156                    >(_) => {}
7157                }
7158            }
7159            #[automatically_derived]
7160            #[doc(hidden)]
7161            impl ::core::convert::From<pauserRegistryCall> for UnderlyingRustTuple<'_> {
7162                fn from(value: pauserRegistryCall) -> Self {
7163                    ()
7164                }
7165            }
7166            #[automatically_derived]
7167            #[doc(hidden)]
7168            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauserRegistryCall {
7169                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7170                    Self
7171                }
7172            }
7173        }
7174        {
7175            #[doc(hidden)]
7176            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7177            #[doc(hidden)]
7178            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7179            #[cfg(test)]
7180            #[allow(dead_code, unreachable_patterns)]
7181            fn _type_assertion(
7182                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7183            ) {
7184                match _t {
7185                    alloy_sol_types::private::AssertTypeEq::<
7186                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7187                    >(_) => {}
7188                }
7189            }
7190            #[automatically_derived]
7191            #[doc(hidden)]
7192            impl ::core::convert::From<pauserRegistryReturn>
7193            for UnderlyingRustTuple<'_> {
7194                fn from(value: pauserRegistryReturn) -> Self {
7195                    (value._0,)
7196                }
7197            }
7198            #[automatically_derived]
7199            #[doc(hidden)]
7200            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7201            for pauserRegistryReturn {
7202                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7203                    Self { _0: tuple.0 }
7204                }
7205            }
7206        }
7207        #[automatically_derived]
7208        impl alloy_sol_types::SolCall for pauserRegistryCall {
7209            type Parameters<'a> = ();
7210            type Token<'a> = <Self::Parameters<
7211                'a,
7212            > as alloy_sol_types::SolType>::Token<'a>;
7213            type Return = alloy::sol_types::private::Address;
7214            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
7215            type ReturnToken<'a> = <Self::ReturnTuple<
7216                'a,
7217            > as alloy_sol_types::SolType>::Token<'a>;
7218            const SIGNATURE: &'static str = "pauserRegistry()";
7219            const SELECTOR: [u8; 4] = [136u8, 111u8, 17u8, 149u8];
7220            #[inline]
7221            fn new<'a>(
7222                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7223            ) -> Self {
7224                tuple.into()
7225            }
7226            #[inline]
7227            fn tokenize(&self) -> Self::Token<'_> {
7228                ()
7229            }
7230            #[inline]
7231            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7232                (
7233                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7234                        ret,
7235                    ),
7236                )
7237            }
7238            #[inline]
7239            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7240                <Self::ReturnTuple<
7241                    '_,
7242                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7243                    .map(|r| {
7244                        let r: pauserRegistryReturn = r.into();
7245                        r._0
7246                    })
7247            }
7248            #[inline]
7249            fn abi_decode_returns_validate(
7250                data: &[u8],
7251            ) -> alloy_sol_types::Result<Self::Return> {
7252                <Self::ReturnTuple<
7253                    '_,
7254                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7255                    .map(|r| {
7256                        let r: pauserRegistryReturn = r.into();
7257                        r._0
7258                    })
7259            }
7260        }
7261    };
7262    #[derive(serde::Serialize, serde::Deserialize)]
7263    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7264    /**Function with signature `removeDepositShares(address,address,uint256)` and selector `0x724af423`.
7265```solidity
7266function removeDepositShares(address staker, address strategy, uint256 depositSharesToRemove) external returns (uint256);
7267```*/
7268    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7269    #[derive(Clone)]
7270    pub struct removeDepositSharesCall {
7271        #[allow(missing_docs)]
7272        pub staker: alloy::sol_types::private::Address,
7273        #[allow(missing_docs)]
7274        pub strategy: alloy::sol_types::private::Address,
7275        #[allow(missing_docs)]
7276        pub depositSharesToRemove: alloy::sol_types::private::primitives::aliases::U256,
7277    }
7278    #[derive(serde::Serialize, serde::Deserialize)]
7279    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7280    ///Container type for the return parameters of the [`removeDepositShares(address,address,uint256)`](removeDepositSharesCall) function.
7281    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7282    #[derive(Clone)]
7283    pub struct removeDepositSharesReturn {
7284        #[allow(missing_docs)]
7285        pub _0: alloy::sol_types::private::primitives::aliases::U256,
7286    }
7287    #[allow(
7288        non_camel_case_types,
7289        non_snake_case,
7290        clippy::pub_underscore_fields,
7291        clippy::style
7292    )]
7293    const _: () = {
7294        use alloy::sol_types as alloy_sol_types;
7295        {
7296            #[doc(hidden)]
7297            type UnderlyingSolTuple<'a> = (
7298                alloy::sol_types::sol_data::Address,
7299                alloy::sol_types::sol_data::Address,
7300                alloy::sol_types::sol_data::Uint<256>,
7301            );
7302            #[doc(hidden)]
7303            type UnderlyingRustTuple<'a> = (
7304                alloy::sol_types::private::Address,
7305                alloy::sol_types::private::Address,
7306                alloy::sol_types::private::primitives::aliases::U256,
7307            );
7308            #[cfg(test)]
7309            #[allow(dead_code, unreachable_patterns)]
7310            fn _type_assertion(
7311                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7312            ) {
7313                match _t {
7314                    alloy_sol_types::private::AssertTypeEq::<
7315                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7316                    >(_) => {}
7317                }
7318            }
7319            #[automatically_derived]
7320            #[doc(hidden)]
7321            impl ::core::convert::From<removeDepositSharesCall>
7322            for UnderlyingRustTuple<'_> {
7323                fn from(value: removeDepositSharesCall) -> Self {
7324                    (value.staker, value.strategy, value.depositSharesToRemove)
7325                }
7326            }
7327            #[automatically_derived]
7328            #[doc(hidden)]
7329            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7330            for removeDepositSharesCall {
7331                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7332                    Self {
7333                        staker: tuple.0,
7334                        strategy: tuple.1,
7335                        depositSharesToRemove: tuple.2,
7336                    }
7337                }
7338            }
7339        }
7340        {
7341            #[doc(hidden)]
7342            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7343            #[doc(hidden)]
7344            type UnderlyingRustTuple<'a> = (
7345                alloy::sol_types::private::primitives::aliases::U256,
7346            );
7347            #[cfg(test)]
7348            #[allow(dead_code, unreachable_patterns)]
7349            fn _type_assertion(
7350                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7351            ) {
7352                match _t {
7353                    alloy_sol_types::private::AssertTypeEq::<
7354                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7355                    >(_) => {}
7356                }
7357            }
7358            #[automatically_derived]
7359            #[doc(hidden)]
7360            impl ::core::convert::From<removeDepositSharesReturn>
7361            for UnderlyingRustTuple<'_> {
7362                fn from(value: removeDepositSharesReturn) -> Self {
7363                    (value._0,)
7364                }
7365            }
7366            #[automatically_derived]
7367            #[doc(hidden)]
7368            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7369            for removeDepositSharesReturn {
7370                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7371                    Self { _0: tuple.0 }
7372                }
7373            }
7374        }
7375        #[automatically_derived]
7376        impl alloy_sol_types::SolCall for removeDepositSharesCall {
7377            type Parameters<'a> = (
7378                alloy::sol_types::sol_data::Address,
7379                alloy::sol_types::sol_data::Address,
7380                alloy::sol_types::sol_data::Uint<256>,
7381            );
7382            type Token<'a> = <Self::Parameters<
7383                'a,
7384            > as alloy_sol_types::SolType>::Token<'a>;
7385            type Return = alloy::sol_types::private::primitives::aliases::U256;
7386            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7387            type ReturnToken<'a> = <Self::ReturnTuple<
7388                'a,
7389            > as alloy_sol_types::SolType>::Token<'a>;
7390            const SIGNATURE: &'static str = "removeDepositShares(address,address,uint256)";
7391            const SELECTOR: [u8; 4] = [114u8, 74u8, 244u8, 35u8];
7392            #[inline]
7393            fn new<'a>(
7394                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7395            ) -> Self {
7396                tuple.into()
7397            }
7398            #[inline]
7399            fn tokenize(&self) -> Self::Token<'_> {
7400                (
7401                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7402                        &self.staker,
7403                    ),
7404                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7405                        &self.strategy,
7406                    ),
7407                    <alloy::sol_types::sol_data::Uint<
7408                        256,
7409                    > as alloy_sol_types::SolType>::tokenize(&self.depositSharesToRemove),
7410                )
7411            }
7412            #[inline]
7413            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7414                (
7415                    <alloy::sol_types::sol_data::Uint<
7416                        256,
7417                    > as alloy_sol_types::SolType>::tokenize(ret),
7418                )
7419            }
7420            #[inline]
7421            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7422                <Self::ReturnTuple<
7423                    '_,
7424                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7425                    .map(|r| {
7426                        let r: removeDepositSharesReturn = r.into();
7427                        r._0
7428                    })
7429            }
7430            #[inline]
7431            fn abi_decode_returns_validate(
7432                data: &[u8],
7433            ) -> alloy_sol_types::Result<Self::Return> {
7434                <Self::ReturnTuple<
7435                    '_,
7436                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7437                    .map(|r| {
7438                        let r: removeDepositSharesReturn = r.into();
7439                        r._0
7440                    })
7441            }
7442        }
7443    };
7444    #[derive(serde::Serialize, serde::Deserialize)]
7445    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7446    /**Function with signature `removeStrategiesFromDepositWhitelist(address[])` and selector `0xb5d8b5b8`.
7447```solidity
7448function removeStrategiesFromDepositWhitelist(address[] memory strategiesToRemoveFromWhitelist) external;
7449```*/
7450    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7451    #[derive(Clone)]
7452    pub struct removeStrategiesFromDepositWhitelistCall {
7453        #[allow(missing_docs)]
7454        pub strategiesToRemoveFromWhitelist: alloy::sol_types::private::Vec<
7455            alloy::sol_types::private::Address,
7456        >,
7457    }
7458    ///Container type for the return parameters of the [`removeStrategiesFromDepositWhitelist(address[])`](removeStrategiesFromDepositWhitelistCall) function.
7459    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7460    #[derive(Clone)]
7461    pub struct removeStrategiesFromDepositWhitelistReturn {}
7462    #[allow(
7463        non_camel_case_types,
7464        non_snake_case,
7465        clippy::pub_underscore_fields,
7466        clippy::style
7467    )]
7468    const _: () = {
7469        use alloy::sol_types as alloy_sol_types;
7470        {
7471            #[doc(hidden)]
7472            type UnderlyingSolTuple<'a> = (
7473                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
7474            );
7475            #[doc(hidden)]
7476            type UnderlyingRustTuple<'a> = (
7477                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
7478            );
7479            #[cfg(test)]
7480            #[allow(dead_code, unreachable_patterns)]
7481            fn _type_assertion(
7482                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7483            ) {
7484                match _t {
7485                    alloy_sol_types::private::AssertTypeEq::<
7486                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7487                    >(_) => {}
7488                }
7489            }
7490            #[automatically_derived]
7491            #[doc(hidden)]
7492            impl ::core::convert::From<removeStrategiesFromDepositWhitelistCall>
7493            for UnderlyingRustTuple<'_> {
7494                fn from(value: removeStrategiesFromDepositWhitelistCall) -> Self {
7495                    (value.strategiesToRemoveFromWhitelist,)
7496                }
7497            }
7498            #[automatically_derived]
7499            #[doc(hidden)]
7500            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7501            for removeStrategiesFromDepositWhitelistCall {
7502                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7503                    Self {
7504                        strategiesToRemoveFromWhitelist: tuple.0,
7505                    }
7506                }
7507            }
7508        }
7509        {
7510            #[doc(hidden)]
7511            type UnderlyingSolTuple<'a> = ();
7512            #[doc(hidden)]
7513            type UnderlyingRustTuple<'a> = ();
7514            #[cfg(test)]
7515            #[allow(dead_code, unreachable_patterns)]
7516            fn _type_assertion(
7517                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7518            ) {
7519                match _t {
7520                    alloy_sol_types::private::AssertTypeEq::<
7521                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7522                    >(_) => {}
7523                }
7524            }
7525            #[automatically_derived]
7526            #[doc(hidden)]
7527            impl ::core::convert::From<removeStrategiesFromDepositWhitelistReturn>
7528            for UnderlyingRustTuple<'_> {
7529                fn from(value: removeStrategiesFromDepositWhitelistReturn) -> Self {
7530                    ()
7531                }
7532            }
7533            #[automatically_derived]
7534            #[doc(hidden)]
7535            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7536            for removeStrategiesFromDepositWhitelistReturn {
7537                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7538                    Self {}
7539                }
7540            }
7541        }
7542        impl removeStrategiesFromDepositWhitelistReturn {
7543            fn _tokenize(
7544                &self,
7545            ) -> <removeStrategiesFromDepositWhitelistCall as alloy_sol_types::SolCall>::ReturnToken<
7546                '_,
7547            > {
7548                ()
7549            }
7550        }
7551        #[automatically_derived]
7552        impl alloy_sol_types::SolCall for removeStrategiesFromDepositWhitelistCall {
7553            type Parameters<'a> = (
7554                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
7555            );
7556            type Token<'a> = <Self::Parameters<
7557                'a,
7558            > as alloy_sol_types::SolType>::Token<'a>;
7559            type Return = removeStrategiesFromDepositWhitelistReturn;
7560            type ReturnTuple<'a> = ();
7561            type ReturnToken<'a> = <Self::ReturnTuple<
7562                'a,
7563            > as alloy_sol_types::SolType>::Token<'a>;
7564            const SIGNATURE: &'static str = "removeStrategiesFromDepositWhitelist(address[])";
7565            const SELECTOR: [u8; 4] = [181u8, 216u8, 181u8, 184u8];
7566            #[inline]
7567            fn new<'a>(
7568                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7569            ) -> Self {
7570                tuple.into()
7571            }
7572            #[inline]
7573            fn tokenize(&self) -> Self::Token<'_> {
7574                (
7575                    <alloy::sol_types::sol_data::Array<
7576                        alloy::sol_types::sol_data::Address,
7577                    > as alloy_sol_types::SolType>::tokenize(
7578                        &self.strategiesToRemoveFromWhitelist,
7579                    ),
7580                )
7581            }
7582            #[inline]
7583            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7584                removeStrategiesFromDepositWhitelistReturn::_tokenize(ret)
7585            }
7586            #[inline]
7587            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7588                <Self::ReturnTuple<
7589                    '_,
7590                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7591                    .map(Into::into)
7592            }
7593            #[inline]
7594            fn abi_decode_returns_validate(
7595                data: &[u8],
7596            ) -> alloy_sol_types::Result<Self::Return> {
7597                <Self::ReturnTuple<
7598                    '_,
7599                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7600                    .map(Into::into)
7601            }
7602        }
7603    };
7604    #[derive(serde::Serialize, serde::Deserialize)]
7605    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7606    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
7607```solidity
7608function renounceOwnership() external;
7609```*/
7610    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7611    #[derive(Clone)]
7612    pub struct renounceOwnershipCall;
7613    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
7614    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7615    #[derive(Clone)]
7616    pub struct renounceOwnershipReturn {}
7617    #[allow(
7618        non_camel_case_types,
7619        non_snake_case,
7620        clippy::pub_underscore_fields,
7621        clippy::style
7622    )]
7623    const _: () = {
7624        use alloy::sol_types as alloy_sol_types;
7625        {
7626            #[doc(hidden)]
7627            type UnderlyingSolTuple<'a> = ();
7628            #[doc(hidden)]
7629            type UnderlyingRustTuple<'a> = ();
7630            #[cfg(test)]
7631            #[allow(dead_code, unreachable_patterns)]
7632            fn _type_assertion(
7633                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7634            ) {
7635                match _t {
7636                    alloy_sol_types::private::AssertTypeEq::<
7637                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7638                    >(_) => {}
7639                }
7640            }
7641            #[automatically_derived]
7642            #[doc(hidden)]
7643            impl ::core::convert::From<renounceOwnershipCall>
7644            for UnderlyingRustTuple<'_> {
7645                fn from(value: renounceOwnershipCall) -> Self {
7646                    ()
7647                }
7648            }
7649            #[automatically_derived]
7650            #[doc(hidden)]
7651            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7652            for renounceOwnershipCall {
7653                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7654                    Self
7655                }
7656            }
7657        }
7658        {
7659            #[doc(hidden)]
7660            type UnderlyingSolTuple<'a> = ();
7661            #[doc(hidden)]
7662            type UnderlyingRustTuple<'a> = ();
7663            #[cfg(test)]
7664            #[allow(dead_code, unreachable_patterns)]
7665            fn _type_assertion(
7666                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7667            ) {
7668                match _t {
7669                    alloy_sol_types::private::AssertTypeEq::<
7670                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7671                    >(_) => {}
7672                }
7673            }
7674            #[automatically_derived]
7675            #[doc(hidden)]
7676            impl ::core::convert::From<renounceOwnershipReturn>
7677            for UnderlyingRustTuple<'_> {
7678                fn from(value: renounceOwnershipReturn) -> Self {
7679                    ()
7680                }
7681            }
7682            #[automatically_derived]
7683            #[doc(hidden)]
7684            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7685            for renounceOwnershipReturn {
7686                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7687                    Self {}
7688                }
7689            }
7690        }
7691        impl renounceOwnershipReturn {
7692            fn _tokenize(
7693                &self,
7694            ) -> <renounceOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
7695                ()
7696            }
7697        }
7698        #[automatically_derived]
7699        impl alloy_sol_types::SolCall for renounceOwnershipCall {
7700            type Parameters<'a> = ();
7701            type Token<'a> = <Self::Parameters<
7702                'a,
7703            > as alloy_sol_types::SolType>::Token<'a>;
7704            type Return = renounceOwnershipReturn;
7705            type ReturnTuple<'a> = ();
7706            type ReturnToken<'a> = <Self::ReturnTuple<
7707                'a,
7708            > as alloy_sol_types::SolType>::Token<'a>;
7709            const SIGNATURE: &'static str = "renounceOwnership()";
7710            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
7711            #[inline]
7712            fn new<'a>(
7713                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7714            ) -> Self {
7715                tuple.into()
7716            }
7717            #[inline]
7718            fn tokenize(&self) -> Self::Token<'_> {
7719                ()
7720            }
7721            #[inline]
7722            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7723                renounceOwnershipReturn::_tokenize(ret)
7724            }
7725            #[inline]
7726            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7727                <Self::ReturnTuple<
7728                    '_,
7729                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7730                    .map(Into::into)
7731            }
7732            #[inline]
7733            fn abi_decode_returns_validate(
7734                data: &[u8],
7735            ) -> alloy_sol_types::Result<Self::Return> {
7736                <Self::ReturnTuple<
7737                    '_,
7738                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7739                    .map(Into::into)
7740            }
7741        }
7742    };
7743    #[derive(serde::Serialize, serde::Deserialize)]
7744    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7745    /**Function with signature `setStrategyWhitelister(address)` and selector `0xc6656702`.
7746```solidity
7747function setStrategyWhitelister(address newStrategyWhitelister) external;
7748```*/
7749    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7750    #[derive(Clone)]
7751    pub struct setStrategyWhitelisterCall {
7752        #[allow(missing_docs)]
7753        pub newStrategyWhitelister: alloy::sol_types::private::Address,
7754    }
7755    ///Container type for the return parameters of the [`setStrategyWhitelister(address)`](setStrategyWhitelisterCall) function.
7756    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7757    #[derive(Clone)]
7758    pub struct setStrategyWhitelisterReturn {}
7759    #[allow(
7760        non_camel_case_types,
7761        non_snake_case,
7762        clippy::pub_underscore_fields,
7763        clippy::style
7764    )]
7765    const _: () = {
7766        use alloy::sol_types as alloy_sol_types;
7767        {
7768            #[doc(hidden)]
7769            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7770            #[doc(hidden)]
7771            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7772            #[cfg(test)]
7773            #[allow(dead_code, unreachable_patterns)]
7774            fn _type_assertion(
7775                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7776            ) {
7777                match _t {
7778                    alloy_sol_types::private::AssertTypeEq::<
7779                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7780                    >(_) => {}
7781                }
7782            }
7783            #[automatically_derived]
7784            #[doc(hidden)]
7785            impl ::core::convert::From<setStrategyWhitelisterCall>
7786            for UnderlyingRustTuple<'_> {
7787                fn from(value: setStrategyWhitelisterCall) -> Self {
7788                    (value.newStrategyWhitelister,)
7789                }
7790            }
7791            #[automatically_derived]
7792            #[doc(hidden)]
7793            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7794            for setStrategyWhitelisterCall {
7795                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7796                    Self {
7797                        newStrategyWhitelister: tuple.0,
7798                    }
7799                }
7800            }
7801        }
7802        {
7803            #[doc(hidden)]
7804            type UnderlyingSolTuple<'a> = ();
7805            #[doc(hidden)]
7806            type UnderlyingRustTuple<'a> = ();
7807            #[cfg(test)]
7808            #[allow(dead_code, unreachable_patterns)]
7809            fn _type_assertion(
7810                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7811            ) {
7812                match _t {
7813                    alloy_sol_types::private::AssertTypeEq::<
7814                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7815                    >(_) => {}
7816                }
7817            }
7818            #[automatically_derived]
7819            #[doc(hidden)]
7820            impl ::core::convert::From<setStrategyWhitelisterReturn>
7821            for UnderlyingRustTuple<'_> {
7822                fn from(value: setStrategyWhitelisterReturn) -> Self {
7823                    ()
7824                }
7825            }
7826            #[automatically_derived]
7827            #[doc(hidden)]
7828            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7829            for setStrategyWhitelisterReturn {
7830                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7831                    Self {}
7832                }
7833            }
7834        }
7835        impl setStrategyWhitelisterReturn {
7836            fn _tokenize(
7837                &self,
7838            ) -> <setStrategyWhitelisterCall as alloy_sol_types::SolCall>::ReturnToken<
7839                '_,
7840            > {
7841                ()
7842            }
7843        }
7844        #[automatically_derived]
7845        impl alloy_sol_types::SolCall for setStrategyWhitelisterCall {
7846            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
7847            type Token<'a> = <Self::Parameters<
7848                'a,
7849            > as alloy_sol_types::SolType>::Token<'a>;
7850            type Return = setStrategyWhitelisterReturn;
7851            type ReturnTuple<'a> = ();
7852            type ReturnToken<'a> = <Self::ReturnTuple<
7853                'a,
7854            > as alloy_sol_types::SolType>::Token<'a>;
7855            const SIGNATURE: &'static str = "setStrategyWhitelister(address)";
7856            const SELECTOR: [u8; 4] = [198u8, 101u8, 103u8, 2u8];
7857            #[inline]
7858            fn new<'a>(
7859                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7860            ) -> Self {
7861                tuple.into()
7862            }
7863            #[inline]
7864            fn tokenize(&self) -> Self::Token<'_> {
7865                (
7866                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7867                        &self.newStrategyWhitelister,
7868                    ),
7869                )
7870            }
7871            #[inline]
7872            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7873                setStrategyWhitelisterReturn::_tokenize(ret)
7874            }
7875            #[inline]
7876            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7877                <Self::ReturnTuple<
7878                    '_,
7879                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7880                    .map(Into::into)
7881            }
7882            #[inline]
7883            fn abi_decode_returns_validate(
7884                data: &[u8],
7885            ) -> alloy_sol_types::Result<Self::Return> {
7886                <Self::ReturnTuple<
7887                    '_,
7888                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7889                    .map(Into::into)
7890            }
7891        }
7892    };
7893    #[derive(serde::Serialize, serde::Deserialize)]
7894    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7895    /**Function with signature `stakerDepositShares(address,address)` and selector `0xfe243a17`.
7896```solidity
7897function stakerDepositShares(address staker, address strategy) external view returns (uint256 shares);
7898```*/
7899    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7900    #[derive(Clone)]
7901    pub struct stakerDepositSharesCall {
7902        #[allow(missing_docs)]
7903        pub staker: alloy::sol_types::private::Address,
7904        #[allow(missing_docs)]
7905        pub strategy: alloy::sol_types::private::Address,
7906    }
7907    #[derive(serde::Serialize, serde::Deserialize)]
7908    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7909    ///Container type for the return parameters of the [`stakerDepositShares(address,address)`](stakerDepositSharesCall) function.
7910    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7911    #[derive(Clone)]
7912    pub struct stakerDepositSharesReturn {
7913        #[allow(missing_docs)]
7914        pub shares: alloy::sol_types::private::primitives::aliases::U256,
7915    }
7916    #[allow(
7917        non_camel_case_types,
7918        non_snake_case,
7919        clippy::pub_underscore_fields,
7920        clippy::style
7921    )]
7922    const _: () = {
7923        use alloy::sol_types as alloy_sol_types;
7924        {
7925            #[doc(hidden)]
7926            type UnderlyingSolTuple<'a> = (
7927                alloy::sol_types::sol_data::Address,
7928                alloy::sol_types::sol_data::Address,
7929            );
7930            #[doc(hidden)]
7931            type UnderlyingRustTuple<'a> = (
7932                alloy::sol_types::private::Address,
7933                alloy::sol_types::private::Address,
7934            );
7935            #[cfg(test)]
7936            #[allow(dead_code, unreachable_patterns)]
7937            fn _type_assertion(
7938                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7939            ) {
7940                match _t {
7941                    alloy_sol_types::private::AssertTypeEq::<
7942                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7943                    >(_) => {}
7944                }
7945            }
7946            #[automatically_derived]
7947            #[doc(hidden)]
7948            impl ::core::convert::From<stakerDepositSharesCall>
7949            for UnderlyingRustTuple<'_> {
7950                fn from(value: stakerDepositSharesCall) -> Self {
7951                    (value.staker, value.strategy)
7952                }
7953            }
7954            #[automatically_derived]
7955            #[doc(hidden)]
7956            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7957            for stakerDepositSharesCall {
7958                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7959                    Self {
7960                        staker: tuple.0,
7961                        strategy: tuple.1,
7962                    }
7963                }
7964            }
7965        }
7966        {
7967            #[doc(hidden)]
7968            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7969            #[doc(hidden)]
7970            type UnderlyingRustTuple<'a> = (
7971                alloy::sol_types::private::primitives::aliases::U256,
7972            );
7973            #[cfg(test)]
7974            #[allow(dead_code, unreachable_patterns)]
7975            fn _type_assertion(
7976                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7977            ) {
7978                match _t {
7979                    alloy_sol_types::private::AssertTypeEq::<
7980                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7981                    >(_) => {}
7982                }
7983            }
7984            #[automatically_derived]
7985            #[doc(hidden)]
7986            impl ::core::convert::From<stakerDepositSharesReturn>
7987            for UnderlyingRustTuple<'_> {
7988                fn from(value: stakerDepositSharesReturn) -> Self {
7989                    (value.shares,)
7990                }
7991            }
7992            #[automatically_derived]
7993            #[doc(hidden)]
7994            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7995            for stakerDepositSharesReturn {
7996                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7997                    Self { shares: tuple.0 }
7998                }
7999            }
8000        }
8001        #[automatically_derived]
8002        impl alloy_sol_types::SolCall for stakerDepositSharesCall {
8003            type Parameters<'a> = (
8004                alloy::sol_types::sol_data::Address,
8005                alloy::sol_types::sol_data::Address,
8006            );
8007            type Token<'a> = <Self::Parameters<
8008                'a,
8009            > as alloy_sol_types::SolType>::Token<'a>;
8010            type Return = alloy::sol_types::private::primitives::aliases::U256;
8011            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8012            type ReturnToken<'a> = <Self::ReturnTuple<
8013                'a,
8014            > as alloy_sol_types::SolType>::Token<'a>;
8015            const SIGNATURE: &'static str = "stakerDepositShares(address,address)";
8016            const SELECTOR: [u8; 4] = [254u8, 36u8, 58u8, 23u8];
8017            #[inline]
8018            fn new<'a>(
8019                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8020            ) -> Self {
8021                tuple.into()
8022            }
8023            #[inline]
8024            fn tokenize(&self) -> Self::Token<'_> {
8025                (
8026                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8027                        &self.staker,
8028                    ),
8029                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8030                        &self.strategy,
8031                    ),
8032                )
8033            }
8034            #[inline]
8035            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8036                (
8037                    <alloy::sol_types::sol_data::Uint<
8038                        256,
8039                    > as alloy_sol_types::SolType>::tokenize(ret),
8040                )
8041            }
8042            #[inline]
8043            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8044                <Self::ReturnTuple<
8045                    '_,
8046                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8047                    .map(|r| {
8048                        let r: stakerDepositSharesReturn = r.into();
8049                        r.shares
8050                    })
8051            }
8052            #[inline]
8053            fn abi_decode_returns_validate(
8054                data: &[u8],
8055            ) -> alloy_sol_types::Result<Self::Return> {
8056                <Self::ReturnTuple<
8057                    '_,
8058                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8059                    .map(|r| {
8060                        let r: stakerDepositSharesReturn = r.into();
8061                        r.shares
8062                    })
8063            }
8064        }
8065    };
8066    #[derive(serde::Serialize, serde::Deserialize)]
8067    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8068    /**Function with signature `stakerStrategyList(address,uint256)` and selector `0xcbc2bd62`.
8069```solidity
8070function stakerStrategyList(address staker, uint256) external view returns (address strategies);
8071```*/
8072    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8073    #[derive(Clone)]
8074    pub struct stakerStrategyListCall {
8075        #[allow(missing_docs)]
8076        pub staker: alloy::sol_types::private::Address,
8077        #[allow(missing_docs)]
8078        pub _1: alloy::sol_types::private::primitives::aliases::U256,
8079    }
8080    #[derive(serde::Serialize, serde::Deserialize)]
8081    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8082    ///Container type for the return parameters of the [`stakerStrategyList(address,uint256)`](stakerStrategyListCall) function.
8083    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8084    #[derive(Clone)]
8085    pub struct stakerStrategyListReturn {
8086        #[allow(missing_docs)]
8087        pub strategies: alloy::sol_types::private::Address,
8088    }
8089    #[allow(
8090        non_camel_case_types,
8091        non_snake_case,
8092        clippy::pub_underscore_fields,
8093        clippy::style
8094    )]
8095    const _: () = {
8096        use alloy::sol_types as alloy_sol_types;
8097        {
8098            #[doc(hidden)]
8099            type UnderlyingSolTuple<'a> = (
8100                alloy::sol_types::sol_data::Address,
8101                alloy::sol_types::sol_data::Uint<256>,
8102            );
8103            #[doc(hidden)]
8104            type UnderlyingRustTuple<'a> = (
8105                alloy::sol_types::private::Address,
8106                alloy::sol_types::private::primitives::aliases::U256,
8107            );
8108            #[cfg(test)]
8109            #[allow(dead_code, unreachable_patterns)]
8110            fn _type_assertion(
8111                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8112            ) {
8113                match _t {
8114                    alloy_sol_types::private::AssertTypeEq::<
8115                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8116                    >(_) => {}
8117                }
8118            }
8119            #[automatically_derived]
8120            #[doc(hidden)]
8121            impl ::core::convert::From<stakerStrategyListCall>
8122            for UnderlyingRustTuple<'_> {
8123                fn from(value: stakerStrategyListCall) -> Self {
8124                    (value.staker, value._1)
8125                }
8126            }
8127            #[automatically_derived]
8128            #[doc(hidden)]
8129            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8130            for stakerStrategyListCall {
8131                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8132                    Self {
8133                        staker: tuple.0,
8134                        _1: tuple.1,
8135                    }
8136                }
8137            }
8138        }
8139        {
8140            #[doc(hidden)]
8141            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
8142            #[doc(hidden)]
8143            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
8144            #[cfg(test)]
8145            #[allow(dead_code, unreachable_patterns)]
8146            fn _type_assertion(
8147                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8148            ) {
8149                match _t {
8150                    alloy_sol_types::private::AssertTypeEq::<
8151                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8152                    >(_) => {}
8153                }
8154            }
8155            #[automatically_derived]
8156            #[doc(hidden)]
8157            impl ::core::convert::From<stakerStrategyListReturn>
8158            for UnderlyingRustTuple<'_> {
8159                fn from(value: stakerStrategyListReturn) -> Self {
8160                    (value.strategies,)
8161                }
8162            }
8163            #[automatically_derived]
8164            #[doc(hidden)]
8165            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8166            for stakerStrategyListReturn {
8167                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8168                    Self { strategies: tuple.0 }
8169                }
8170            }
8171        }
8172        #[automatically_derived]
8173        impl alloy_sol_types::SolCall for stakerStrategyListCall {
8174            type Parameters<'a> = (
8175                alloy::sol_types::sol_data::Address,
8176                alloy::sol_types::sol_data::Uint<256>,
8177            );
8178            type Token<'a> = <Self::Parameters<
8179                'a,
8180            > as alloy_sol_types::SolType>::Token<'a>;
8181            type Return = alloy::sol_types::private::Address;
8182            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
8183            type ReturnToken<'a> = <Self::ReturnTuple<
8184                'a,
8185            > as alloy_sol_types::SolType>::Token<'a>;
8186            const SIGNATURE: &'static str = "stakerStrategyList(address,uint256)";
8187            const SELECTOR: [u8; 4] = [203u8, 194u8, 189u8, 98u8];
8188            #[inline]
8189            fn new<'a>(
8190                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8191            ) -> Self {
8192                tuple.into()
8193            }
8194            #[inline]
8195            fn tokenize(&self) -> Self::Token<'_> {
8196                (
8197                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8198                        &self.staker,
8199                    ),
8200                    <alloy::sol_types::sol_data::Uint<
8201                        256,
8202                    > as alloy_sol_types::SolType>::tokenize(&self._1),
8203                )
8204            }
8205            #[inline]
8206            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8207                (
8208                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8209                        ret,
8210                    ),
8211                )
8212            }
8213            #[inline]
8214            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8215                <Self::ReturnTuple<
8216                    '_,
8217                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8218                    .map(|r| {
8219                        let r: stakerStrategyListReturn = r.into();
8220                        r.strategies
8221                    })
8222            }
8223            #[inline]
8224            fn abi_decode_returns_validate(
8225                data: &[u8],
8226            ) -> alloy_sol_types::Result<Self::Return> {
8227                <Self::ReturnTuple<
8228                    '_,
8229                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8230                    .map(|r| {
8231                        let r: stakerStrategyListReturn = r.into();
8232                        r.strategies
8233                    })
8234            }
8235        }
8236    };
8237    #[derive(serde::Serialize, serde::Deserialize)]
8238    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8239    /**Function with signature `stakerStrategyListLength(address)` and selector `0x8b8aac3c`.
8240```solidity
8241function stakerStrategyListLength(address staker) external view returns (uint256);
8242```*/
8243    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8244    #[derive(Clone)]
8245    pub struct stakerStrategyListLengthCall {
8246        #[allow(missing_docs)]
8247        pub staker: alloy::sol_types::private::Address,
8248    }
8249    #[derive(serde::Serialize, serde::Deserialize)]
8250    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8251    ///Container type for the return parameters of the [`stakerStrategyListLength(address)`](stakerStrategyListLengthCall) function.
8252    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8253    #[derive(Clone)]
8254    pub struct stakerStrategyListLengthReturn {
8255        #[allow(missing_docs)]
8256        pub _0: alloy::sol_types::private::primitives::aliases::U256,
8257    }
8258    #[allow(
8259        non_camel_case_types,
8260        non_snake_case,
8261        clippy::pub_underscore_fields,
8262        clippy::style
8263    )]
8264    const _: () = {
8265        use alloy::sol_types as alloy_sol_types;
8266        {
8267            #[doc(hidden)]
8268            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
8269            #[doc(hidden)]
8270            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
8271            #[cfg(test)]
8272            #[allow(dead_code, unreachable_patterns)]
8273            fn _type_assertion(
8274                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8275            ) {
8276                match _t {
8277                    alloy_sol_types::private::AssertTypeEq::<
8278                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8279                    >(_) => {}
8280                }
8281            }
8282            #[automatically_derived]
8283            #[doc(hidden)]
8284            impl ::core::convert::From<stakerStrategyListLengthCall>
8285            for UnderlyingRustTuple<'_> {
8286                fn from(value: stakerStrategyListLengthCall) -> Self {
8287                    (value.staker,)
8288                }
8289            }
8290            #[automatically_derived]
8291            #[doc(hidden)]
8292            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8293            for stakerStrategyListLengthCall {
8294                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8295                    Self { staker: tuple.0 }
8296                }
8297            }
8298        }
8299        {
8300            #[doc(hidden)]
8301            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8302            #[doc(hidden)]
8303            type UnderlyingRustTuple<'a> = (
8304                alloy::sol_types::private::primitives::aliases::U256,
8305            );
8306            #[cfg(test)]
8307            #[allow(dead_code, unreachable_patterns)]
8308            fn _type_assertion(
8309                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8310            ) {
8311                match _t {
8312                    alloy_sol_types::private::AssertTypeEq::<
8313                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8314                    >(_) => {}
8315                }
8316            }
8317            #[automatically_derived]
8318            #[doc(hidden)]
8319            impl ::core::convert::From<stakerStrategyListLengthReturn>
8320            for UnderlyingRustTuple<'_> {
8321                fn from(value: stakerStrategyListLengthReturn) -> Self {
8322                    (value._0,)
8323                }
8324            }
8325            #[automatically_derived]
8326            #[doc(hidden)]
8327            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8328            for stakerStrategyListLengthReturn {
8329                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8330                    Self { _0: tuple.0 }
8331                }
8332            }
8333        }
8334        #[automatically_derived]
8335        impl alloy_sol_types::SolCall for stakerStrategyListLengthCall {
8336            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
8337            type Token<'a> = <Self::Parameters<
8338                'a,
8339            > as alloy_sol_types::SolType>::Token<'a>;
8340            type Return = alloy::sol_types::private::primitives::aliases::U256;
8341            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8342            type ReturnToken<'a> = <Self::ReturnTuple<
8343                'a,
8344            > as alloy_sol_types::SolType>::Token<'a>;
8345            const SIGNATURE: &'static str = "stakerStrategyListLength(address)";
8346            const SELECTOR: [u8; 4] = [139u8, 138u8, 172u8, 60u8];
8347            #[inline]
8348            fn new<'a>(
8349                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8350            ) -> Self {
8351                tuple.into()
8352            }
8353            #[inline]
8354            fn tokenize(&self) -> Self::Token<'_> {
8355                (
8356                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8357                        &self.staker,
8358                    ),
8359                )
8360            }
8361            #[inline]
8362            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8363                (
8364                    <alloy::sol_types::sol_data::Uint<
8365                        256,
8366                    > as alloy_sol_types::SolType>::tokenize(ret),
8367                )
8368            }
8369            #[inline]
8370            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8371                <Self::ReturnTuple<
8372                    '_,
8373                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8374                    .map(|r| {
8375                        let r: stakerStrategyListLengthReturn = r.into();
8376                        r._0
8377                    })
8378            }
8379            #[inline]
8380            fn abi_decode_returns_validate(
8381                data: &[u8],
8382            ) -> alloy_sol_types::Result<Self::Return> {
8383                <Self::ReturnTuple<
8384                    '_,
8385                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8386                    .map(|r| {
8387                        let r: stakerStrategyListLengthReturn = r.into();
8388                        r._0
8389                    })
8390            }
8391        }
8392    };
8393    #[derive(serde::Serialize, serde::Deserialize)]
8394    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8395    /**Function with signature `strategyIsWhitelistedForDeposit(address)` and selector `0x663c1de4`.
8396```solidity
8397function strategyIsWhitelistedForDeposit(address strategy) external view returns (bool whitelisted);
8398```*/
8399    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8400    #[derive(Clone)]
8401    pub struct strategyIsWhitelistedForDepositCall {
8402        #[allow(missing_docs)]
8403        pub strategy: alloy::sol_types::private::Address,
8404    }
8405    #[derive(serde::Serialize, serde::Deserialize)]
8406    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8407    ///Container type for the return parameters of the [`strategyIsWhitelistedForDeposit(address)`](strategyIsWhitelistedForDepositCall) function.
8408    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8409    #[derive(Clone)]
8410    pub struct strategyIsWhitelistedForDepositReturn {
8411        #[allow(missing_docs)]
8412        pub whitelisted: bool,
8413    }
8414    #[allow(
8415        non_camel_case_types,
8416        non_snake_case,
8417        clippy::pub_underscore_fields,
8418        clippy::style
8419    )]
8420    const _: () = {
8421        use alloy::sol_types as alloy_sol_types;
8422        {
8423            #[doc(hidden)]
8424            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
8425            #[doc(hidden)]
8426            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
8427            #[cfg(test)]
8428            #[allow(dead_code, unreachable_patterns)]
8429            fn _type_assertion(
8430                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8431            ) {
8432                match _t {
8433                    alloy_sol_types::private::AssertTypeEq::<
8434                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8435                    >(_) => {}
8436                }
8437            }
8438            #[automatically_derived]
8439            #[doc(hidden)]
8440            impl ::core::convert::From<strategyIsWhitelistedForDepositCall>
8441            for UnderlyingRustTuple<'_> {
8442                fn from(value: strategyIsWhitelistedForDepositCall) -> Self {
8443                    (value.strategy,)
8444                }
8445            }
8446            #[automatically_derived]
8447            #[doc(hidden)]
8448            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8449            for strategyIsWhitelistedForDepositCall {
8450                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8451                    Self { strategy: tuple.0 }
8452                }
8453            }
8454        }
8455        {
8456            #[doc(hidden)]
8457            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
8458            #[doc(hidden)]
8459            type UnderlyingRustTuple<'a> = (bool,);
8460            #[cfg(test)]
8461            #[allow(dead_code, unreachable_patterns)]
8462            fn _type_assertion(
8463                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8464            ) {
8465                match _t {
8466                    alloy_sol_types::private::AssertTypeEq::<
8467                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8468                    >(_) => {}
8469                }
8470            }
8471            #[automatically_derived]
8472            #[doc(hidden)]
8473            impl ::core::convert::From<strategyIsWhitelistedForDepositReturn>
8474            for UnderlyingRustTuple<'_> {
8475                fn from(value: strategyIsWhitelistedForDepositReturn) -> Self {
8476                    (value.whitelisted,)
8477                }
8478            }
8479            #[automatically_derived]
8480            #[doc(hidden)]
8481            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8482            for strategyIsWhitelistedForDepositReturn {
8483                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8484                    Self { whitelisted: tuple.0 }
8485                }
8486            }
8487        }
8488        #[automatically_derived]
8489        impl alloy_sol_types::SolCall for strategyIsWhitelistedForDepositCall {
8490            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
8491            type Token<'a> = <Self::Parameters<
8492                'a,
8493            > as alloy_sol_types::SolType>::Token<'a>;
8494            type Return = bool;
8495            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
8496            type ReturnToken<'a> = <Self::ReturnTuple<
8497                'a,
8498            > as alloy_sol_types::SolType>::Token<'a>;
8499            const SIGNATURE: &'static str = "strategyIsWhitelistedForDeposit(address)";
8500            const SELECTOR: [u8; 4] = [102u8, 60u8, 29u8, 228u8];
8501            #[inline]
8502            fn new<'a>(
8503                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8504            ) -> Self {
8505                tuple.into()
8506            }
8507            #[inline]
8508            fn tokenize(&self) -> Self::Token<'_> {
8509                (
8510                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8511                        &self.strategy,
8512                    ),
8513                )
8514            }
8515            #[inline]
8516            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8517                (
8518                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
8519                        ret,
8520                    ),
8521                )
8522            }
8523            #[inline]
8524            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8525                <Self::ReturnTuple<
8526                    '_,
8527                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8528                    .map(|r| {
8529                        let r: strategyIsWhitelistedForDepositReturn = r.into();
8530                        r.whitelisted
8531                    })
8532            }
8533            #[inline]
8534            fn abi_decode_returns_validate(
8535                data: &[u8],
8536            ) -> alloy_sol_types::Result<Self::Return> {
8537                <Self::ReturnTuple<
8538                    '_,
8539                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8540                    .map(|r| {
8541                        let r: strategyIsWhitelistedForDepositReturn = r.into();
8542                        r.whitelisted
8543                    })
8544            }
8545        }
8546    };
8547    #[derive(serde::Serialize, serde::Deserialize)]
8548    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8549    /**Function with signature `strategyWhitelister()` and selector `0x967fc0d2`.
8550```solidity
8551function strategyWhitelister() external view returns (address);
8552```*/
8553    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8554    #[derive(Clone)]
8555    pub struct strategyWhitelisterCall;
8556    #[derive(serde::Serialize, serde::Deserialize)]
8557    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8558    ///Container type for the return parameters of the [`strategyWhitelister()`](strategyWhitelisterCall) function.
8559    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8560    #[derive(Clone)]
8561    pub struct strategyWhitelisterReturn {
8562        #[allow(missing_docs)]
8563        pub _0: alloy::sol_types::private::Address,
8564    }
8565    #[allow(
8566        non_camel_case_types,
8567        non_snake_case,
8568        clippy::pub_underscore_fields,
8569        clippy::style
8570    )]
8571    const _: () = {
8572        use alloy::sol_types as alloy_sol_types;
8573        {
8574            #[doc(hidden)]
8575            type UnderlyingSolTuple<'a> = ();
8576            #[doc(hidden)]
8577            type UnderlyingRustTuple<'a> = ();
8578            #[cfg(test)]
8579            #[allow(dead_code, unreachable_patterns)]
8580            fn _type_assertion(
8581                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8582            ) {
8583                match _t {
8584                    alloy_sol_types::private::AssertTypeEq::<
8585                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8586                    >(_) => {}
8587                }
8588            }
8589            #[automatically_derived]
8590            #[doc(hidden)]
8591            impl ::core::convert::From<strategyWhitelisterCall>
8592            for UnderlyingRustTuple<'_> {
8593                fn from(value: strategyWhitelisterCall) -> Self {
8594                    ()
8595                }
8596            }
8597            #[automatically_derived]
8598            #[doc(hidden)]
8599            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8600            for strategyWhitelisterCall {
8601                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8602                    Self
8603                }
8604            }
8605        }
8606        {
8607            #[doc(hidden)]
8608            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
8609            #[doc(hidden)]
8610            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
8611            #[cfg(test)]
8612            #[allow(dead_code, unreachable_patterns)]
8613            fn _type_assertion(
8614                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8615            ) {
8616                match _t {
8617                    alloy_sol_types::private::AssertTypeEq::<
8618                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8619                    >(_) => {}
8620                }
8621            }
8622            #[automatically_derived]
8623            #[doc(hidden)]
8624            impl ::core::convert::From<strategyWhitelisterReturn>
8625            for UnderlyingRustTuple<'_> {
8626                fn from(value: strategyWhitelisterReturn) -> Self {
8627                    (value._0,)
8628                }
8629            }
8630            #[automatically_derived]
8631            #[doc(hidden)]
8632            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8633            for strategyWhitelisterReturn {
8634                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8635                    Self { _0: tuple.0 }
8636                }
8637            }
8638        }
8639        #[automatically_derived]
8640        impl alloy_sol_types::SolCall for strategyWhitelisterCall {
8641            type Parameters<'a> = ();
8642            type Token<'a> = <Self::Parameters<
8643                'a,
8644            > as alloy_sol_types::SolType>::Token<'a>;
8645            type Return = alloy::sol_types::private::Address;
8646            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
8647            type ReturnToken<'a> = <Self::ReturnTuple<
8648                'a,
8649            > as alloy_sol_types::SolType>::Token<'a>;
8650            const SIGNATURE: &'static str = "strategyWhitelister()";
8651            const SELECTOR: [u8; 4] = [150u8, 127u8, 192u8, 210u8];
8652            #[inline]
8653            fn new<'a>(
8654                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8655            ) -> Self {
8656                tuple.into()
8657            }
8658            #[inline]
8659            fn tokenize(&self) -> Self::Token<'_> {
8660                ()
8661            }
8662            #[inline]
8663            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8664                (
8665                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8666                        ret,
8667                    ),
8668                )
8669            }
8670            #[inline]
8671            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8672                <Self::ReturnTuple<
8673                    '_,
8674                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8675                    .map(|r| {
8676                        let r: strategyWhitelisterReturn = r.into();
8677                        r._0
8678                    })
8679            }
8680            #[inline]
8681            fn abi_decode_returns_validate(
8682                data: &[u8],
8683            ) -> alloy_sol_types::Result<Self::Return> {
8684                <Self::ReturnTuple<
8685                    '_,
8686                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8687                    .map(|r| {
8688                        let r: strategyWhitelisterReturn = r.into();
8689                        r._0
8690                    })
8691            }
8692        }
8693    };
8694    #[derive(serde::Serialize, serde::Deserialize)]
8695    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8696    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
8697```solidity
8698function transferOwnership(address newOwner) external;
8699```*/
8700    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8701    #[derive(Clone)]
8702    pub struct transferOwnershipCall {
8703        #[allow(missing_docs)]
8704        pub newOwner: alloy::sol_types::private::Address,
8705    }
8706    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
8707    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8708    #[derive(Clone)]
8709    pub struct transferOwnershipReturn {}
8710    #[allow(
8711        non_camel_case_types,
8712        non_snake_case,
8713        clippy::pub_underscore_fields,
8714        clippy::style
8715    )]
8716    const _: () = {
8717        use alloy::sol_types as alloy_sol_types;
8718        {
8719            #[doc(hidden)]
8720            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
8721            #[doc(hidden)]
8722            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
8723            #[cfg(test)]
8724            #[allow(dead_code, unreachable_patterns)]
8725            fn _type_assertion(
8726                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8727            ) {
8728                match _t {
8729                    alloy_sol_types::private::AssertTypeEq::<
8730                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8731                    >(_) => {}
8732                }
8733            }
8734            #[automatically_derived]
8735            #[doc(hidden)]
8736            impl ::core::convert::From<transferOwnershipCall>
8737            for UnderlyingRustTuple<'_> {
8738                fn from(value: transferOwnershipCall) -> Self {
8739                    (value.newOwner,)
8740                }
8741            }
8742            #[automatically_derived]
8743            #[doc(hidden)]
8744            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8745            for transferOwnershipCall {
8746                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8747                    Self { newOwner: tuple.0 }
8748                }
8749            }
8750        }
8751        {
8752            #[doc(hidden)]
8753            type UnderlyingSolTuple<'a> = ();
8754            #[doc(hidden)]
8755            type UnderlyingRustTuple<'a> = ();
8756            #[cfg(test)]
8757            #[allow(dead_code, unreachable_patterns)]
8758            fn _type_assertion(
8759                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8760            ) {
8761                match _t {
8762                    alloy_sol_types::private::AssertTypeEq::<
8763                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8764                    >(_) => {}
8765                }
8766            }
8767            #[automatically_derived]
8768            #[doc(hidden)]
8769            impl ::core::convert::From<transferOwnershipReturn>
8770            for UnderlyingRustTuple<'_> {
8771                fn from(value: transferOwnershipReturn) -> Self {
8772                    ()
8773                }
8774            }
8775            #[automatically_derived]
8776            #[doc(hidden)]
8777            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8778            for transferOwnershipReturn {
8779                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8780                    Self {}
8781                }
8782            }
8783        }
8784        impl transferOwnershipReturn {
8785            fn _tokenize(
8786                &self,
8787            ) -> <transferOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8788                ()
8789            }
8790        }
8791        #[automatically_derived]
8792        impl alloy_sol_types::SolCall for transferOwnershipCall {
8793            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
8794            type Token<'a> = <Self::Parameters<
8795                'a,
8796            > as alloy_sol_types::SolType>::Token<'a>;
8797            type Return = transferOwnershipReturn;
8798            type ReturnTuple<'a> = ();
8799            type ReturnToken<'a> = <Self::ReturnTuple<
8800                'a,
8801            > as alloy_sol_types::SolType>::Token<'a>;
8802            const SIGNATURE: &'static str = "transferOwnership(address)";
8803            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
8804            #[inline]
8805            fn new<'a>(
8806                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8807            ) -> Self {
8808                tuple.into()
8809            }
8810            #[inline]
8811            fn tokenize(&self) -> Self::Token<'_> {
8812                (
8813                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8814                        &self.newOwner,
8815                    ),
8816                )
8817            }
8818            #[inline]
8819            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8820                transferOwnershipReturn::_tokenize(ret)
8821            }
8822            #[inline]
8823            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8824                <Self::ReturnTuple<
8825                    '_,
8826                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8827                    .map(Into::into)
8828            }
8829            #[inline]
8830            fn abi_decode_returns_validate(
8831                data: &[u8],
8832            ) -> alloy_sol_types::Result<Self::Return> {
8833                <Self::ReturnTuple<
8834                    '_,
8835                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8836                    .map(Into::into)
8837            }
8838        }
8839    };
8840    #[derive(serde::Serialize, serde::Deserialize)]
8841    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8842    /**Function with signature `unpause(uint256)` and selector `0xfabc1cbc`.
8843```solidity
8844function unpause(uint256 newPausedStatus) external;
8845```*/
8846    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8847    #[derive(Clone)]
8848    pub struct unpauseCall {
8849        #[allow(missing_docs)]
8850        pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256,
8851    }
8852    ///Container type for the return parameters of the [`unpause(uint256)`](unpauseCall) function.
8853    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8854    #[derive(Clone)]
8855    pub struct unpauseReturn {}
8856    #[allow(
8857        non_camel_case_types,
8858        non_snake_case,
8859        clippy::pub_underscore_fields,
8860        clippy::style
8861    )]
8862    const _: () = {
8863        use alloy::sol_types as alloy_sol_types;
8864        {
8865            #[doc(hidden)]
8866            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8867            #[doc(hidden)]
8868            type UnderlyingRustTuple<'a> = (
8869                alloy::sol_types::private::primitives::aliases::U256,
8870            );
8871            #[cfg(test)]
8872            #[allow(dead_code, unreachable_patterns)]
8873            fn _type_assertion(
8874                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8875            ) {
8876                match _t {
8877                    alloy_sol_types::private::AssertTypeEq::<
8878                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8879                    >(_) => {}
8880                }
8881            }
8882            #[automatically_derived]
8883            #[doc(hidden)]
8884            impl ::core::convert::From<unpauseCall> for UnderlyingRustTuple<'_> {
8885                fn from(value: unpauseCall) -> Self {
8886                    (value.newPausedStatus,)
8887                }
8888            }
8889            #[automatically_derived]
8890            #[doc(hidden)]
8891            impl ::core::convert::From<UnderlyingRustTuple<'_>> for unpauseCall {
8892                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8893                    Self { newPausedStatus: tuple.0 }
8894                }
8895            }
8896        }
8897        {
8898            #[doc(hidden)]
8899            type UnderlyingSolTuple<'a> = ();
8900            #[doc(hidden)]
8901            type UnderlyingRustTuple<'a> = ();
8902            #[cfg(test)]
8903            #[allow(dead_code, unreachable_patterns)]
8904            fn _type_assertion(
8905                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8906            ) {
8907                match _t {
8908                    alloy_sol_types::private::AssertTypeEq::<
8909                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8910                    >(_) => {}
8911                }
8912            }
8913            #[automatically_derived]
8914            #[doc(hidden)]
8915            impl ::core::convert::From<unpauseReturn> for UnderlyingRustTuple<'_> {
8916                fn from(value: unpauseReturn) -> Self {
8917                    ()
8918                }
8919            }
8920            #[automatically_derived]
8921            #[doc(hidden)]
8922            impl ::core::convert::From<UnderlyingRustTuple<'_>> for unpauseReturn {
8923                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8924                    Self {}
8925                }
8926            }
8927        }
8928        impl unpauseReturn {
8929            fn _tokenize(
8930                &self,
8931            ) -> <unpauseCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8932                ()
8933            }
8934        }
8935        #[automatically_derived]
8936        impl alloy_sol_types::SolCall for unpauseCall {
8937            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8938            type Token<'a> = <Self::Parameters<
8939                'a,
8940            > as alloy_sol_types::SolType>::Token<'a>;
8941            type Return = unpauseReturn;
8942            type ReturnTuple<'a> = ();
8943            type ReturnToken<'a> = <Self::ReturnTuple<
8944                'a,
8945            > as alloy_sol_types::SolType>::Token<'a>;
8946            const SIGNATURE: &'static str = "unpause(uint256)";
8947            const SELECTOR: [u8; 4] = [250u8, 188u8, 28u8, 188u8];
8948            #[inline]
8949            fn new<'a>(
8950                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8951            ) -> Self {
8952                tuple.into()
8953            }
8954            #[inline]
8955            fn tokenize(&self) -> Self::Token<'_> {
8956                (
8957                    <alloy::sol_types::sol_data::Uint<
8958                        256,
8959                    > as alloy_sol_types::SolType>::tokenize(&self.newPausedStatus),
8960                )
8961            }
8962            #[inline]
8963            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8964                unpauseReturn::_tokenize(ret)
8965            }
8966            #[inline]
8967            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8968                <Self::ReturnTuple<
8969                    '_,
8970                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8971                    .map(Into::into)
8972            }
8973            #[inline]
8974            fn abi_decode_returns_validate(
8975                data: &[u8],
8976            ) -> alloy_sol_types::Result<Self::Return> {
8977                <Self::ReturnTuple<
8978                    '_,
8979                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8980                    .map(Into::into)
8981            }
8982        }
8983    };
8984    #[derive(serde::Serialize, serde::Deserialize)]
8985    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8986    /**Function with signature `version()` and selector `0x54fd4d50`.
8987```solidity
8988function version() external view returns (string memory);
8989```*/
8990    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8991    #[derive(Clone)]
8992    pub struct versionCall;
8993    #[derive(serde::Serialize, serde::Deserialize)]
8994    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8995    ///Container type for the return parameters of the [`version()`](versionCall) function.
8996    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8997    #[derive(Clone)]
8998    pub struct versionReturn {
8999        #[allow(missing_docs)]
9000        pub _0: alloy::sol_types::private::String,
9001    }
9002    #[allow(
9003        non_camel_case_types,
9004        non_snake_case,
9005        clippy::pub_underscore_fields,
9006        clippy::style
9007    )]
9008    const _: () = {
9009        use alloy::sol_types as alloy_sol_types;
9010        {
9011            #[doc(hidden)]
9012            type UnderlyingSolTuple<'a> = ();
9013            #[doc(hidden)]
9014            type UnderlyingRustTuple<'a> = ();
9015            #[cfg(test)]
9016            #[allow(dead_code, unreachable_patterns)]
9017            fn _type_assertion(
9018                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9019            ) {
9020                match _t {
9021                    alloy_sol_types::private::AssertTypeEq::<
9022                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9023                    >(_) => {}
9024                }
9025            }
9026            #[automatically_derived]
9027            #[doc(hidden)]
9028            impl ::core::convert::From<versionCall> for UnderlyingRustTuple<'_> {
9029                fn from(value: versionCall) -> Self {
9030                    ()
9031                }
9032            }
9033            #[automatically_derived]
9034            #[doc(hidden)]
9035            impl ::core::convert::From<UnderlyingRustTuple<'_>> for versionCall {
9036                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9037                    Self
9038                }
9039            }
9040        }
9041        {
9042            #[doc(hidden)]
9043            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
9044            #[doc(hidden)]
9045            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
9046            #[cfg(test)]
9047            #[allow(dead_code, unreachable_patterns)]
9048            fn _type_assertion(
9049                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9050            ) {
9051                match _t {
9052                    alloy_sol_types::private::AssertTypeEq::<
9053                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9054                    >(_) => {}
9055                }
9056            }
9057            #[automatically_derived]
9058            #[doc(hidden)]
9059            impl ::core::convert::From<versionReturn> for UnderlyingRustTuple<'_> {
9060                fn from(value: versionReturn) -> Self {
9061                    (value._0,)
9062                }
9063            }
9064            #[automatically_derived]
9065            #[doc(hidden)]
9066            impl ::core::convert::From<UnderlyingRustTuple<'_>> for versionReturn {
9067                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9068                    Self { _0: tuple.0 }
9069                }
9070            }
9071        }
9072        #[automatically_derived]
9073        impl alloy_sol_types::SolCall for versionCall {
9074            type Parameters<'a> = ();
9075            type Token<'a> = <Self::Parameters<
9076                'a,
9077            > as alloy_sol_types::SolType>::Token<'a>;
9078            type Return = alloy::sol_types::private::String;
9079            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
9080            type ReturnToken<'a> = <Self::ReturnTuple<
9081                'a,
9082            > as alloy_sol_types::SolType>::Token<'a>;
9083            const SIGNATURE: &'static str = "version()";
9084            const SELECTOR: [u8; 4] = [84u8, 253u8, 77u8, 80u8];
9085            #[inline]
9086            fn new<'a>(
9087                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9088            ) -> Self {
9089                tuple.into()
9090            }
9091            #[inline]
9092            fn tokenize(&self) -> Self::Token<'_> {
9093                ()
9094            }
9095            #[inline]
9096            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9097                (
9098                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
9099                        ret,
9100                    ),
9101                )
9102            }
9103            #[inline]
9104            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9105                <Self::ReturnTuple<
9106                    '_,
9107                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9108                    .map(|r| {
9109                        let r: versionReturn = r.into();
9110                        r._0
9111                    })
9112            }
9113            #[inline]
9114            fn abi_decode_returns_validate(
9115                data: &[u8],
9116            ) -> alloy_sol_types::Result<Self::Return> {
9117                <Self::ReturnTuple<
9118                    '_,
9119                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9120                    .map(|r| {
9121                        let r: versionReturn = r.into();
9122                        r._0
9123                    })
9124            }
9125        }
9126    };
9127    #[derive(serde::Serialize, serde::Deserialize)]
9128    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9129    /**Function with signature `withdrawSharesAsTokens(address,address,address,uint256)` and selector `0x2eae418c`.
9130```solidity
9131function withdrawSharesAsTokens(address staker, address strategy, address token, uint256 shares) external;
9132```*/
9133    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9134    #[derive(Clone)]
9135    pub struct withdrawSharesAsTokensCall {
9136        #[allow(missing_docs)]
9137        pub staker: alloy::sol_types::private::Address,
9138        #[allow(missing_docs)]
9139        pub strategy: alloy::sol_types::private::Address,
9140        #[allow(missing_docs)]
9141        pub token: alloy::sol_types::private::Address,
9142        #[allow(missing_docs)]
9143        pub shares: alloy::sol_types::private::primitives::aliases::U256,
9144    }
9145    ///Container type for the return parameters of the [`withdrawSharesAsTokens(address,address,address,uint256)`](withdrawSharesAsTokensCall) function.
9146    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9147    #[derive(Clone)]
9148    pub struct withdrawSharesAsTokensReturn {}
9149    #[allow(
9150        non_camel_case_types,
9151        non_snake_case,
9152        clippy::pub_underscore_fields,
9153        clippy::style
9154    )]
9155    const _: () = {
9156        use alloy::sol_types as alloy_sol_types;
9157        {
9158            #[doc(hidden)]
9159            type UnderlyingSolTuple<'a> = (
9160                alloy::sol_types::sol_data::Address,
9161                alloy::sol_types::sol_data::Address,
9162                alloy::sol_types::sol_data::Address,
9163                alloy::sol_types::sol_data::Uint<256>,
9164            );
9165            #[doc(hidden)]
9166            type UnderlyingRustTuple<'a> = (
9167                alloy::sol_types::private::Address,
9168                alloy::sol_types::private::Address,
9169                alloy::sol_types::private::Address,
9170                alloy::sol_types::private::primitives::aliases::U256,
9171            );
9172            #[cfg(test)]
9173            #[allow(dead_code, unreachable_patterns)]
9174            fn _type_assertion(
9175                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9176            ) {
9177                match _t {
9178                    alloy_sol_types::private::AssertTypeEq::<
9179                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9180                    >(_) => {}
9181                }
9182            }
9183            #[automatically_derived]
9184            #[doc(hidden)]
9185            impl ::core::convert::From<withdrawSharesAsTokensCall>
9186            for UnderlyingRustTuple<'_> {
9187                fn from(value: withdrawSharesAsTokensCall) -> Self {
9188                    (value.staker, value.strategy, value.token, value.shares)
9189                }
9190            }
9191            #[automatically_derived]
9192            #[doc(hidden)]
9193            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9194            for withdrawSharesAsTokensCall {
9195                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9196                    Self {
9197                        staker: tuple.0,
9198                        strategy: tuple.1,
9199                        token: tuple.2,
9200                        shares: tuple.3,
9201                    }
9202                }
9203            }
9204        }
9205        {
9206            #[doc(hidden)]
9207            type UnderlyingSolTuple<'a> = ();
9208            #[doc(hidden)]
9209            type UnderlyingRustTuple<'a> = ();
9210            #[cfg(test)]
9211            #[allow(dead_code, unreachable_patterns)]
9212            fn _type_assertion(
9213                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9214            ) {
9215                match _t {
9216                    alloy_sol_types::private::AssertTypeEq::<
9217                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9218                    >(_) => {}
9219                }
9220            }
9221            #[automatically_derived]
9222            #[doc(hidden)]
9223            impl ::core::convert::From<withdrawSharesAsTokensReturn>
9224            for UnderlyingRustTuple<'_> {
9225                fn from(value: withdrawSharesAsTokensReturn) -> Self {
9226                    ()
9227                }
9228            }
9229            #[automatically_derived]
9230            #[doc(hidden)]
9231            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9232            for withdrawSharesAsTokensReturn {
9233                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9234                    Self {}
9235                }
9236            }
9237        }
9238        impl withdrawSharesAsTokensReturn {
9239            fn _tokenize(
9240                &self,
9241            ) -> <withdrawSharesAsTokensCall as alloy_sol_types::SolCall>::ReturnToken<
9242                '_,
9243            > {
9244                ()
9245            }
9246        }
9247        #[automatically_derived]
9248        impl alloy_sol_types::SolCall for withdrawSharesAsTokensCall {
9249            type Parameters<'a> = (
9250                alloy::sol_types::sol_data::Address,
9251                alloy::sol_types::sol_data::Address,
9252                alloy::sol_types::sol_data::Address,
9253                alloy::sol_types::sol_data::Uint<256>,
9254            );
9255            type Token<'a> = <Self::Parameters<
9256                'a,
9257            > as alloy_sol_types::SolType>::Token<'a>;
9258            type Return = withdrawSharesAsTokensReturn;
9259            type ReturnTuple<'a> = ();
9260            type ReturnToken<'a> = <Self::ReturnTuple<
9261                'a,
9262            > as alloy_sol_types::SolType>::Token<'a>;
9263            const SIGNATURE: &'static str = "withdrawSharesAsTokens(address,address,address,uint256)";
9264            const SELECTOR: [u8; 4] = [46u8, 174u8, 65u8, 140u8];
9265            #[inline]
9266            fn new<'a>(
9267                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9268            ) -> Self {
9269                tuple.into()
9270            }
9271            #[inline]
9272            fn tokenize(&self) -> Self::Token<'_> {
9273                (
9274                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9275                        &self.staker,
9276                    ),
9277                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9278                        &self.strategy,
9279                    ),
9280                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9281                        &self.token,
9282                    ),
9283                    <alloy::sol_types::sol_data::Uint<
9284                        256,
9285                    > as alloy_sol_types::SolType>::tokenize(&self.shares),
9286                )
9287            }
9288            #[inline]
9289            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9290                withdrawSharesAsTokensReturn::_tokenize(ret)
9291            }
9292            #[inline]
9293            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9294                <Self::ReturnTuple<
9295                    '_,
9296                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9297                    .map(Into::into)
9298            }
9299            #[inline]
9300            fn abi_decode_returns_validate(
9301                data: &[u8],
9302            ) -> alloy_sol_types::Result<Self::Return> {
9303                <Self::ReturnTuple<
9304                    '_,
9305                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9306                    .map(Into::into)
9307            }
9308        }
9309    };
9310    ///Container for all the [`StrategyManager`](self) function calls.
9311    #[derive(serde::Serialize, serde::Deserialize)]
9312    #[derive()]
9313    pub enum StrategyManagerCalls {
9314        #[allow(missing_docs)]
9315        DEFAULT_BURN_ADDRESS(DEFAULT_BURN_ADDRESSCall),
9316        #[allow(missing_docs)]
9317        DEPOSIT_TYPEHASH(DEPOSIT_TYPEHASHCall),
9318        #[allow(missing_docs)]
9319        addShares(addSharesCall),
9320        #[allow(missing_docs)]
9321        addStrategiesToDepositWhitelist(addStrategiesToDepositWhitelistCall),
9322        #[allow(missing_docs)]
9323        burnShares(burnSharesCall),
9324        #[allow(missing_docs)]
9325        calculateStrategyDepositDigestHash(calculateStrategyDepositDigestHashCall),
9326        #[allow(missing_docs)]
9327        delegation(delegationCall),
9328        #[allow(missing_docs)]
9329        depositIntoStrategy(depositIntoStrategyCall),
9330        #[allow(missing_docs)]
9331        depositIntoStrategyWithSignature(depositIntoStrategyWithSignatureCall),
9332        #[allow(missing_docs)]
9333        domainSeparator(domainSeparatorCall),
9334        #[allow(missing_docs)]
9335        getBurnableShares(getBurnableSharesCall),
9336        #[allow(missing_docs)]
9337        getDeposits(getDepositsCall),
9338        #[allow(missing_docs)]
9339        getStakerStrategyList(getStakerStrategyListCall),
9340        #[allow(missing_docs)]
9341        getStrategiesWithBurnableShares(getStrategiesWithBurnableSharesCall),
9342        #[allow(missing_docs)]
9343        increaseBurnableShares(increaseBurnableSharesCall),
9344        #[allow(missing_docs)]
9345        initialize(initializeCall),
9346        #[allow(missing_docs)]
9347        nonces(noncesCall),
9348        #[allow(missing_docs)]
9349        owner(ownerCall),
9350        #[allow(missing_docs)]
9351        pause(pauseCall),
9352        #[allow(missing_docs)]
9353        pauseAll(pauseAllCall),
9354        #[allow(missing_docs)]
9355        paused_0(paused_0Call),
9356        #[allow(missing_docs)]
9357        paused_1(paused_1Call),
9358        #[allow(missing_docs)]
9359        pauserRegistry(pauserRegistryCall),
9360        #[allow(missing_docs)]
9361        removeDepositShares(removeDepositSharesCall),
9362        #[allow(missing_docs)]
9363        removeStrategiesFromDepositWhitelist(removeStrategiesFromDepositWhitelistCall),
9364        #[allow(missing_docs)]
9365        renounceOwnership(renounceOwnershipCall),
9366        #[allow(missing_docs)]
9367        setStrategyWhitelister(setStrategyWhitelisterCall),
9368        #[allow(missing_docs)]
9369        stakerDepositShares(stakerDepositSharesCall),
9370        #[allow(missing_docs)]
9371        stakerStrategyList(stakerStrategyListCall),
9372        #[allow(missing_docs)]
9373        stakerStrategyListLength(stakerStrategyListLengthCall),
9374        #[allow(missing_docs)]
9375        strategyIsWhitelistedForDeposit(strategyIsWhitelistedForDepositCall),
9376        #[allow(missing_docs)]
9377        strategyWhitelister(strategyWhitelisterCall),
9378        #[allow(missing_docs)]
9379        transferOwnership(transferOwnershipCall),
9380        #[allow(missing_docs)]
9381        unpause(unpauseCall),
9382        #[allow(missing_docs)]
9383        version(versionCall),
9384        #[allow(missing_docs)]
9385        withdrawSharesAsTokens(withdrawSharesAsTokensCall),
9386    }
9387    #[automatically_derived]
9388    impl StrategyManagerCalls {
9389        /// All the selectors of this enum.
9390        ///
9391        /// Note that the selectors might not be in the same order as the variants.
9392        /// No guarantees are made about the order of the selectors.
9393        ///
9394        /// Prefer using `SolInterface` methods instead.
9395        pub const SELECTORS: &'static [[u8; 4usize]] = &[
9396            [19u8, 100u8, 57u8, 221u8],
9397            [23u8, 148u8, 187u8, 60u8],
9398            [46u8, 174u8, 65u8, 140u8],
9399            [50u8, 232u8, 154u8, 206u8],
9400            [54u8, 168u8, 197u8, 0u8],
9401            [72u8, 130u8, 94u8, 148u8],
9402            [75u8, 109u8, 93u8, 110u8],
9403            [80u8, 255u8, 114u8, 37u8],
9404            [84u8, 253u8, 77u8, 80u8],
9405            [89u8, 92u8, 106u8, 103u8],
9406            [90u8, 200u8, 106u8, 183u8],
9407            [92u8, 151u8, 90u8, 187u8],
9408            [93u8, 224u8, 143u8, 242u8],
9409            [102u8, 60u8, 29u8, 228u8],
9410            [113u8, 80u8, 24u8, 166u8],
9411            [114u8, 74u8, 244u8, 35u8],
9412            [126u8, 206u8, 190u8, 0u8],
9413            [136u8, 111u8, 17u8, 149u8],
9414            [139u8, 138u8, 172u8, 60u8],
9415            [141u8, 165u8, 203u8, 91u8],
9416            [148u8, 246u8, 73u8, 221u8],
9417            [150u8, 127u8, 192u8, 210u8],
9418            [154u8, 192u8, 29u8, 97u8],
9419            [181u8, 216u8, 181u8, 184u8],
9420            [198u8, 101u8, 103u8, 2u8],
9421            [203u8, 194u8, 189u8, 98u8],
9422            [222u8, 68u8, 172u8, 182u8],
9423            [222u8, 190u8, 30u8, 171u8],
9424            [223u8, 92u8, 247u8, 35u8],
9425            [231u8, 160u8, 80u8, 170u8],
9426            [242u8, 253u8, 227u8, 139u8],
9427            [243u8, 180u8, 160u8, 0u8],
9428            [246u8, 152u8, 218u8, 37u8],
9429            [250u8, 188u8, 28u8, 188u8],
9430            [253u8, 152u8, 4u8, 35u8],
9431            [254u8, 36u8, 58u8, 23u8],
9432        ];
9433    }
9434    #[automatically_derived]
9435    impl alloy_sol_types::SolInterface for StrategyManagerCalls {
9436        const NAME: &'static str = "StrategyManagerCalls";
9437        const MIN_DATA_LENGTH: usize = 0usize;
9438        const COUNT: usize = 36usize;
9439        #[inline]
9440        fn selector(&self) -> [u8; 4] {
9441            match self {
9442                Self::DEFAULT_BURN_ADDRESS(_) => {
9443                    <DEFAULT_BURN_ADDRESSCall as alloy_sol_types::SolCall>::SELECTOR
9444                }
9445                Self::DEPOSIT_TYPEHASH(_) => {
9446                    <DEPOSIT_TYPEHASHCall as alloy_sol_types::SolCall>::SELECTOR
9447                }
9448                Self::addShares(_) => {
9449                    <addSharesCall as alloy_sol_types::SolCall>::SELECTOR
9450                }
9451                Self::addStrategiesToDepositWhitelist(_) => {
9452                    <addStrategiesToDepositWhitelistCall as alloy_sol_types::SolCall>::SELECTOR
9453                }
9454                Self::burnShares(_) => {
9455                    <burnSharesCall as alloy_sol_types::SolCall>::SELECTOR
9456                }
9457                Self::calculateStrategyDepositDigestHash(_) => {
9458                    <calculateStrategyDepositDigestHashCall as alloy_sol_types::SolCall>::SELECTOR
9459                }
9460                Self::delegation(_) => {
9461                    <delegationCall as alloy_sol_types::SolCall>::SELECTOR
9462                }
9463                Self::depositIntoStrategy(_) => {
9464                    <depositIntoStrategyCall as alloy_sol_types::SolCall>::SELECTOR
9465                }
9466                Self::depositIntoStrategyWithSignature(_) => {
9467                    <depositIntoStrategyWithSignatureCall as alloy_sol_types::SolCall>::SELECTOR
9468                }
9469                Self::domainSeparator(_) => {
9470                    <domainSeparatorCall as alloy_sol_types::SolCall>::SELECTOR
9471                }
9472                Self::getBurnableShares(_) => {
9473                    <getBurnableSharesCall as alloy_sol_types::SolCall>::SELECTOR
9474                }
9475                Self::getDeposits(_) => {
9476                    <getDepositsCall as alloy_sol_types::SolCall>::SELECTOR
9477                }
9478                Self::getStakerStrategyList(_) => {
9479                    <getStakerStrategyListCall as alloy_sol_types::SolCall>::SELECTOR
9480                }
9481                Self::getStrategiesWithBurnableShares(_) => {
9482                    <getStrategiesWithBurnableSharesCall as alloy_sol_types::SolCall>::SELECTOR
9483                }
9484                Self::increaseBurnableShares(_) => {
9485                    <increaseBurnableSharesCall as alloy_sol_types::SolCall>::SELECTOR
9486                }
9487                Self::initialize(_) => {
9488                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
9489                }
9490                Self::nonces(_) => <noncesCall as alloy_sol_types::SolCall>::SELECTOR,
9491                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
9492                Self::pause(_) => <pauseCall as alloy_sol_types::SolCall>::SELECTOR,
9493                Self::pauseAll(_) => <pauseAllCall as alloy_sol_types::SolCall>::SELECTOR,
9494                Self::paused_0(_) => <paused_0Call as alloy_sol_types::SolCall>::SELECTOR,
9495                Self::paused_1(_) => <paused_1Call as alloy_sol_types::SolCall>::SELECTOR,
9496                Self::pauserRegistry(_) => {
9497                    <pauserRegistryCall as alloy_sol_types::SolCall>::SELECTOR
9498                }
9499                Self::removeDepositShares(_) => {
9500                    <removeDepositSharesCall as alloy_sol_types::SolCall>::SELECTOR
9501                }
9502                Self::removeStrategiesFromDepositWhitelist(_) => {
9503                    <removeStrategiesFromDepositWhitelistCall as alloy_sol_types::SolCall>::SELECTOR
9504                }
9505                Self::renounceOwnership(_) => {
9506                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
9507                }
9508                Self::setStrategyWhitelister(_) => {
9509                    <setStrategyWhitelisterCall as alloy_sol_types::SolCall>::SELECTOR
9510                }
9511                Self::stakerDepositShares(_) => {
9512                    <stakerDepositSharesCall as alloy_sol_types::SolCall>::SELECTOR
9513                }
9514                Self::stakerStrategyList(_) => {
9515                    <stakerStrategyListCall as alloy_sol_types::SolCall>::SELECTOR
9516                }
9517                Self::stakerStrategyListLength(_) => {
9518                    <stakerStrategyListLengthCall as alloy_sol_types::SolCall>::SELECTOR
9519                }
9520                Self::strategyIsWhitelistedForDeposit(_) => {
9521                    <strategyIsWhitelistedForDepositCall as alloy_sol_types::SolCall>::SELECTOR
9522                }
9523                Self::strategyWhitelister(_) => {
9524                    <strategyWhitelisterCall as alloy_sol_types::SolCall>::SELECTOR
9525                }
9526                Self::transferOwnership(_) => {
9527                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
9528                }
9529                Self::unpause(_) => <unpauseCall as alloy_sol_types::SolCall>::SELECTOR,
9530                Self::version(_) => <versionCall as alloy_sol_types::SolCall>::SELECTOR,
9531                Self::withdrawSharesAsTokens(_) => {
9532                    <withdrawSharesAsTokensCall as alloy_sol_types::SolCall>::SELECTOR
9533                }
9534            }
9535        }
9536        #[inline]
9537        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
9538            Self::SELECTORS.get(i).copied()
9539        }
9540        #[inline]
9541        fn valid_selector(selector: [u8; 4]) -> bool {
9542            Self::SELECTORS.binary_search(&selector).is_ok()
9543        }
9544        #[inline]
9545        #[allow(non_snake_case)]
9546        fn abi_decode_raw(
9547            selector: [u8; 4],
9548            data: &[u8],
9549        ) -> alloy_sol_types::Result<Self> {
9550            static DECODE_SHIMS: &[fn(
9551                &[u8],
9552            ) -> alloy_sol_types::Result<StrategyManagerCalls>] = &[
9553                {
9554                    fn pause(
9555                        data: &[u8],
9556                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9557                        <pauseCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
9558                            .map(StrategyManagerCalls::pause)
9559                    }
9560                    pause
9561                },
9562                {
9563                    fn initialize(
9564                        data: &[u8],
9565                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9566                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(
9567                                data,
9568                            )
9569                            .map(StrategyManagerCalls::initialize)
9570                    }
9571                    initialize
9572                },
9573                {
9574                    fn withdrawSharesAsTokens(
9575                        data: &[u8],
9576                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9577                        <withdrawSharesAsTokensCall as alloy_sol_types::SolCall>::abi_decode_raw(
9578                                data,
9579                            )
9580                            .map(StrategyManagerCalls::withdrawSharesAsTokens)
9581                    }
9582                    withdrawSharesAsTokens
9583                },
9584                {
9585                    fn depositIntoStrategyWithSignature(
9586                        data: &[u8],
9587                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9588                        <depositIntoStrategyWithSignatureCall as alloy_sol_types::SolCall>::abi_decode_raw(
9589                                data,
9590                            )
9591                            .map(StrategyManagerCalls::depositIntoStrategyWithSignature)
9592                    }
9593                    depositIntoStrategyWithSignature
9594                },
9595                {
9596                    fn getStrategiesWithBurnableShares(
9597                        data: &[u8],
9598                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9599                        <getStrategiesWithBurnableSharesCall as alloy_sol_types::SolCall>::abi_decode_raw(
9600                                data,
9601                            )
9602                            .map(StrategyManagerCalls::getStrategiesWithBurnableShares)
9603                    }
9604                    getStrategiesWithBurnableShares
9605                },
9606                {
9607                    fn DEPOSIT_TYPEHASH(
9608                        data: &[u8],
9609                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9610                        <DEPOSIT_TYPEHASHCall as alloy_sol_types::SolCall>::abi_decode_raw(
9611                                data,
9612                            )
9613                            .map(StrategyManagerCalls::DEPOSIT_TYPEHASH)
9614                    }
9615                    DEPOSIT_TYPEHASH
9616                },
9617                {
9618                    fn burnShares(
9619                        data: &[u8],
9620                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9621                        <burnSharesCall as alloy_sol_types::SolCall>::abi_decode_raw(
9622                                data,
9623                            )
9624                            .map(StrategyManagerCalls::burnShares)
9625                    }
9626                    burnShares
9627                },
9628                {
9629                    fn addShares(
9630                        data: &[u8],
9631                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9632                        <addSharesCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
9633                            .map(StrategyManagerCalls::addShares)
9634                    }
9635                    addShares
9636                },
9637                {
9638                    fn version(
9639                        data: &[u8],
9640                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9641                        <versionCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
9642                            .map(StrategyManagerCalls::version)
9643                    }
9644                    version
9645                },
9646                {
9647                    fn pauseAll(
9648                        data: &[u8],
9649                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9650                        <pauseAllCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
9651                            .map(StrategyManagerCalls::pauseAll)
9652                    }
9653                    pauseAll
9654                },
9655                {
9656                    fn paused_0(
9657                        data: &[u8],
9658                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9659                        <paused_0Call as alloy_sol_types::SolCall>::abi_decode_raw(data)
9660                            .map(StrategyManagerCalls::paused_0)
9661                    }
9662                    paused_0
9663                },
9664                {
9665                    fn paused_1(
9666                        data: &[u8],
9667                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9668                        <paused_1Call as alloy_sol_types::SolCall>::abi_decode_raw(data)
9669                            .map(StrategyManagerCalls::paused_1)
9670                    }
9671                    paused_1
9672                },
9673                {
9674                    fn addStrategiesToDepositWhitelist(
9675                        data: &[u8],
9676                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9677                        <addStrategiesToDepositWhitelistCall as alloy_sol_types::SolCall>::abi_decode_raw(
9678                                data,
9679                            )
9680                            .map(StrategyManagerCalls::addStrategiesToDepositWhitelist)
9681                    }
9682                    addStrategiesToDepositWhitelist
9683                },
9684                {
9685                    fn strategyIsWhitelistedForDeposit(
9686                        data: &[u8],
9687                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9688                        <strategyIsWhitelistedForDepositCall as alloy_sol_types::SolCall>::abi_decode_raw(
9689                                data,
9690                            )
9691                            .map(StrategyManagerCalls::strategyIsWhitelistedForDeposit)
9692                    }
9693                    strategyIsWhitelistedForDeposit
9694                },
9695                {
9696                    fn renounceOwnership(
9697                        data: &[u8],
9698                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9699                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
9700                                data,
9701                            )
9702                            .map(StrategyManagerCalls::renounceOwnership)
9703                    }
9704                    renounceOwnership
9705                },
9706                {
9707                    fn removeDepositShares(
9708                        data: &[u8],
9709                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9710                        <removeDepositSharesCall as alloy_sol_types::SolCall>::abi_decode_raw(
9711                                data,
9712                            )
9713                            .map(StrategyManagerCalls::removeDepositShares)
9714                    }
9715                    removeDepositShares
9716                },
9717                {
9718                    fn nonces(
9719                        data: &[u8],
9720                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9721                        <noncesCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
9722                            .map(StrategyManagerCalls::nonces)
9723                    }
9724                    nonces
9725                },
9726                {
9727                    fn pauserRegistry(
9728                        data: &[u8],
9729                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9730                        <pauserRegistryCall as alloy_sol_types::SolCall>::abi_decode_raw(
9731                                data,
9732                            )
9733                            .map(StrategyManagerCalls::pauserRegistry)
9734                    }
9735                    pauserRegistry
9736                },
9737                {
9738                    fn stakerStrategyListLength(
9739                        data: &[u8],
9740                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9741                        <stakerStrategyListLengthCall as alloy_sol_types::SolCall>::abi_decode_raw(
9742                                data,
9743                            )
9744                            .map(StrategyManagerCalls::stakerStrategyListLength)
9745                    }
9746                    stakerStrategyListLength
9747                },
9748                {
9749                    fn owner(
9750                        data: &[u8],
9751                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9752                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
9753                            .map(StrategyManagerCalls::owner)
9754                    }
9755                    owner
9756                },
9757                {
9758                    fn getDeposits(
9759                        data: &[u8],
9760                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9761                        <getDepositsCall as alloy_sol_types::SolCall>::abi_decode_raw(
9762                                data,
9763                            )
9764                            .map(StrategyManagerCalls::getDeposits)
9765                    }
9766                    getDeposits
9767                },
9768                {
9769                    fn strategyWhitelister(
9770                        data: &[u8],
9771                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9772                        <strategyWhitelisterCall as alloy_sol_types::SolCall>::abi_decode_raw(
9773                                data,
9774                            )
9775                            .map(StrategyManagerCalls::strategyWhitelister)
9776                    }
9777                    strategyWhitelister
9778                },
9779                {
9780                    fn calculateStrategyDepositDigestHash(
9781                        data: &[u8],
9782                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9783                        <calculateStrategyDepositDigestHashCall as alloy_sol_types::SolCall>::abi_decode_raw(
9784                                data,
9785                            )
9786                            .map(
9787                                StrategyManagerCalls::calculateStrategyDepositDigestHash,
9788                            )
9789                    }
9790                    calculateStrategyDepositDigestHash
9791                },
9792                {
9793                    fn removeStrategiesFromDepositWhitelist(
9794                        data: &[u8],
9795                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9796                        <removeStrategiesFromDepositWhitelistCall as alloy_sol_types::SolCall>::abi_decode_raw(
9797                                data,
9798                            )
9799                            .map(
9800                                StrategyManagerCalls::removeStrategiesFromDepositWhitelist,
9801                            )
9802                    }
9803                    removeStrategiesFromDepositWhitelist
9804                },
9805                {
9806                    fn setStrategyWhitelister(
9807                        data: &[u8],
9808                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9809                        <setStrategyWhitelisterCall as alloy_sol_types::SolCall>::abi_decode_raw(
9810                                data,
9811                            )
9812                            .map(StrategyManagerCalls::setStrategyWhitelister)
9813                    }
9814                    setStrategyWhitelister
9815                },
9816                {
9817                    fn stakerStrategyList(
9818                        data: &[u8],
9819                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9820                        <stakerStrategyListCall as alloy_sol_types::SolCall>::abi_decode_raw(
9821                                data,
9822                            )
9823                            .map(StrategyManagerCalls::stakerStrategyList)
9824                    }
9825                    stakerStrategyList
9826                },
9827                {
9828                    fn getStakerStrategyList(
9829                        data: &[u8],
9830                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9831                        <getStakerStrategyListCall as alloy_sol_types::SolCall>::abi_decode_raw(
9832                                data,
9833                            )
9834                            .map(StrategyManagerCalls::getStakerStrategyList)
9835                    }
9836                    getStakerStrategyList
9837                },
9838                {
9839                    fn increaseBurnableShares(
9840                        data: &[u8],
9841                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9842                        <increaseBurnableSharesCall as alloy_sol_types::SolCall>::abi_decode_raw(
9843                                data,
9844                            )
9845                            .map(StrategyManagerCalls::increaseBurnableShares)
9846                    }
9847                    increaseBurnableShares
9848                },
9849                {
9850                    fn delegation(
9851                        data: &[u8],
9852                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9853                        <delegationCall as alloy_sol_types::SolCall>::abi_decode_raw(
9854                                data,
9855                            )
9856                            .map(StrategyManagerCalls::delegation)
9857                    }
9858                    delegation
9859                },
9860                {
9861                    fn depositIntoStrategy(
9862                        data: &[u8],
9863                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9864                        <depositIntoStrategyCall as alloy_sol_types::SolCall>::abi_decode_raw(
9865                                data,
9866                            )
9867                            .map(StrategyManagerCalls::depositIntoStrategy)
9868                    }
9869                    depositIntoStrategy
9870                },
9871                {
9872                    fn transferOwnership(
9873                        data: &[u8],
9874                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9875                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
9876                                data,
9877                            )
9878                            .map(StrategyManagerCalls::transferOwnership)
9879                    }
9880                    transferOwnership
9881                },
9882                {
9883                    fn DEFAULT_BURN_ADDRESS(
9884                        data: &[u8],
9885                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9886                        <DEFAULT_BURN_ADDRESSCall as alloy_sol_types::SolCall>::abi_decode_raw(
9887                                data,
9888                            )
9889                            .map(StrategyManagerCalls::DEFAULT_BURN_ADDRESS)
9890                    }
9891                    DEFAULT_BURN_ADDRESS
9892                },
9893                {
9894                    fn domainSeparator(
9895                        data: &[u8],
9896                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9897                        <domainSeparatorCall as alloy_sol_types::SolCall>::abi_decode_raw(
9898                                data,
9899                            )
9900                            .map(StrategyManagerCalls::domainSeparator)
9901                    }
9902                    domainSeparator
9903                },
9904                {
9905                    fn unpause(
9906                        data: &[u8],
9907                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9908                        <unpauseCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
9909                            .map(StrategyManagerCalls::unpause)
9910                    }
9911                    unpause
9912                },
9913                {
9914                    fn getBurnableShares(
9915                        data: &[u8],
9916                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9917                        <getBurnableSharesCall as alloy_sol_types::SolCall>::abi_decode_raw(
9918                                data,
9919                            )
9920                            .map(StrategyManagerCalls::getBurnableShares)
9921                    }
9922                    getBurnableShares
9923                },
9924                {
9925                    fn stakerDepositShares(
9926                        data: &[u8],
9927                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9928                        <stakerDepositSharesCall as alloy_sol_types::SolCall>::abi_decode_raw(
9929                                data,
9930                            )
9931                            .map(StrategyManagerCalls::stakerDepositShares)
9932                    }
9933                    stakerDepositShares
9934                },
9935            ];
9936            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
9937                return Err(
9938                    alloy_sol_types::Error::unknown_selector(
9939                        <Self as alloy_sol_types::SolInterface>::NAME,
9940                        selector,
9941                    ),
9942                );
9943            };
9944            DECODE_SHIMS[idx](data)
9945        }
9946        #[inline]
9947        #[allow(non_snake_case)]
9948        fn abi_decode_raw_validate(
9949            selector: [u8; 4],
9950            data: &[u8],
9951        ) -> alloy_sol_types::Result<Self> {
9952            static DECODE_VALIDATE_SHIMS: &[fn(
9953                &[u8],
9954            ) -> alloy_sol_types::Result<StrategyManagerCalls>] = &[
9955                {
9956                    fn pause(
9957                        data: &[u8],
9958                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9959                        <pauseCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
9960                                data,
9961                            )
9962                            .map(StrategyManagerCalls::pause)
9963                    }
9964                    pause
9965                },
9966                {
9967                    fn initialize(
9968                        data: &[u8],
9969                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9970                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
9971                                data,
9972                            )
9973                            .map(StrategyManagerCalls::initialize)
9974                    }
9975                    initialize
9976                },
9977                {
9978                    fn withdrawSharesAsTokens(
9979                        data: &[u8],
9980                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9981                        <withdrawSharesAsTokensCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
9982                                data,
9983                            )
9984                            .map(StrategyManagerCalls::withdrawSharesAsTokens)
9985                    }
9986                    withdrawSharesAsTokens
9987                },
9988                {
9989                    fn depositIntoStrategyWithSignature(
9990                        data: &[u8],
9991                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9992                        <depositIntoStrategyWithSignatureCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
9993                                data,
9994                            )
9995                            .map(StrategyManagerCalls::depositIntoStrategyWithSignature)
9996                    }
9997                    depositIntoStrategyWithSignature
9998                },
9999                {
10000                    fn getStrategiesWithBurnableShares(
10001                        data: &[u8],
10002                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
10003                        <getStrategiesWithBurnableSharesCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10004                                data,
10005                            )
10006                            .map(StrategyManagerCalls::getStrategiesWithBurnableShares)
10007                    }
10008                    getStrategiesWithBurnableShares
10009                },
10010                {
10011                    fn DEPOSIT_TYPEHASH(
10012                        data: &[u8],
10013                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
10014                        <DEPOSIT_TYPEHASHCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10015                                data,
10016                            )
10017                            .map(StrategyManagerCalls::DEPOSIT_TYPEHASH)
10018                    }
10019                    DEPOSIT_TYPEHASH
10020                },
10021                {
10022                    fn burnShares(
10023                        data: &[u8],
10024                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
10025                        <burnSharesCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10026                                data,
10027                            )
10028                            .map(StrategyManagerCalls::burnShares)
10029                    }
10030                    burnShares
10031                },
10032                {
10033                    fn addShares(
10034                        data: &[u8],
10035                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
10036                        <addSharesCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10037                                data,
10038                            )
10039                            .map(StrategyManagerCalls::addShares)
10040                    }
10041                    addShares
10042                },
10043                {
10044                    fn version(
10045                        data: &[u8],
10046                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
10047                        <versionCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10048                                data,
10049                            )
10050                            .map(StrategyManagerCalls::version)
10051                    }
10052                    version
10053                },
10054                {
10055                    fn pauseAll(
10056                        data: &[u8],
10057                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
10058                        <pauseAllCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10059                                data,
10060                            )
10061                            .map(StrategyManagerCalls::pauseAll)
10062                    }
10063                    pauseAll
10064                },
10065                {
10066                    fn paused_0(
10067                        data: &[u8],
10068                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
10069                        <paused_0Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10070                                data,
10071                            )
10072                            .map(StrategyManagerCalls::paused_0)
10073                    }
10074                    paused_0
10075                },
10076                {
10077                    fn paused_1(
10078                        data: &[u8],
10079                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
10080                        <paused_1Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10081                                data,
10082                            )
10083                            .map(StrategyManagerCalls::paused_1)
10084                    }
10085                    paused_1
10086                },
10087                {
10088                    fn addStrategiesToDepositWhitelist(
10089                        data: &[u8],
10090                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
10091                        <addStrategiesToDepositWhitelistCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10092                                data,
10093                            )
10094                            .map(StrategyManagerCalls::addStrategiesToDepositWhitelist)
10095                    }
10096                    addStrategiesToDepositWhitelist
10097                },
10098                {
10099                    fn strategyIsWhitelistedForDeposit(
10100                        data: &[u8],
10101                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
10102                        <strategyIsWhitelistedForDepositCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10103                                data,
10104                            )
10105                            .map(StrategyManagerCalls::strategyIsWhitelistedForDeposit)
10106                    }
10107                    strategyIsWhitelistedForDeposit
10108                },
10109                {
10110                    fn renounceOwnership(
10111                        data: &[u8],
10112                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
10113                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10114                                data,
10115                            )
10116                            .map(StrategyManagerCalls::renounceOwnership)
10117                    }
10118                    renounceOwnership
10119                },
10120                {
10121                    fn removeDepositShares(
10122                        data: &[u8],
10123                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
10124                        <removeDepositSharesCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10125                                data,
10126                            )
10127                            .map(StrategyManagerCalls::removeDepositShares)
10128                    }
10129                    removeDepositShares
10130                },
10131                {
10132                    fn nonces(
10133                        data: &[u8],
10134                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
10135                        <noncesCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10136                                data,
10137                            )
10138                            .map(StrategyManagerCalls::nonces)
10139                    }
10140                    nonces
10141                },
10142                {
10143                    fn pauserRegistry(
10144                        data: &[u8],
10145                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
10146                        <pauserRegistryCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10147                                data,
10148                            )
10149                            .map(StrategyManagerCalls::pauserRegistry)
10150                    }
10151                    pauserRegistry
10152                },
10153                {
10154                    fn stakerStrategyListLength(
10155                        data: &[u8],
10156                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
10157                        <stakerStrategyListLengthCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10158                                data,
10159                            )
10160                            .map(StrategyManagerCalls::stakerStrategyListLength)
10161                    }
10162                    stakerStrategyListLength
10163                },
10164                {
10165                    fn owner(
10166                        data: &[u8],
10167                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
10168                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10169                                data,
10170                            )
10171                            .map(StrategyManagerCalls::owner)
10172                    }
10173                    owner
10174                },
10175                {
10176                    fn getDeposits(
10177                        data: &[u8],
10178                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
10179                        <getDepositsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10180                                data,
10181                            )
10182                            .map(StrategyManagerCalls::getDeposits)
10183                    }
10184                    getDeposits
10185                },
10186                {
10187                    fn strategyWhitelister(
10188                        data: &[u8],
10189                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
10190                        <strategyWhitelisterCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10191                                data,
10192                            )
10193                            .map(StrategyManagerCalls::strategyWhitelister)
10194                    }
10195                    strategyWhitelister
10196                },
10197                {
10198                    fn calculateStrategyDepositDigestHash(
10199                        data: &[u8],
10200                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
10201                        <calculateStrategyDepositDigestHashCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10202                                data,
10203                            )
10204                            .map(
10205                                StrategyManagerCalls::calculateStrategyDepositDigestHash,
10206                            )
10207                    }
10208                    calculateStrategyDepositDigestHash
10209                },
10210                {
10211                    fn removeStrategiesFromDepositWhitelist(
10212                        data: &[u8],
10213                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
10214                        <removeStrategiesFromDepositWhitelistCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10215                                data,
10216                            )
10217                            .map(
10218                                StrategyManagerCalls::removeStrategiesFromDepositWhitelist,
10219                            )
10220                    }
10221                    removeStrategiesFromDepositWhitelist
10222                },
10223                {
10224                    fn setStrategyWhitelister(
10225                        data: &[u8],
10226                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
10227                        <setStrategyWhitelisterCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10228                                data,
10229                            )
10230                            .map(StrategyManagerCalls::setStrategyWhitelister)
10231                    }
10232                    setStrategyWhitelister
10233                },
10234                {
10235                    fn stakerStrategyList(
10236                        data: &[u8],
10237                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
10238                        <stakerStrategyListCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10239                                data,
10240                            )
10241                            .map(StrategyManagerCalls::stakerStrategyList)
10242                    }
10243                    stakerStrategyList
10244                },
10245                {
10246                    fn getStakerStrategyList(
10247                        data: &[u8],
10248                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
10249                        <getStakerStrategyListCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10250                                data,
10251                            )
10252                            .map(StrategyManagerCalls::getStakerStrategyList)
10253                    }
10254                    getStakerStrategyList
10255                },
10256                {
10257                    fn increaseBurnableShares(
10258                        data: &[u8],
10259                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
10260                        <increaseBurnableSharesCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10261                                data,
10262                            )
10263                            .map(StrategyManagerCalls::increaseBurnableShares)
10264                    }
10265                    increaseBurnableShares
10266                },
10267                {
10268                    fn delegation(
10269                        data: &[u8],
10270                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
10271                        <delegationCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10272                                data,
10273                            )
10274                            .map(StrategyManagerCalls::delegation)
10275                    }
10276                    delegation
10277                },
10278                {
10279                    fn depositIntoStrategy(
10280                        data: &[u8],
10281                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
10282                        <depositIntoStrategyCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10283                                data,
10284                            )
10285                            .map(StrategyManagerCalls::depositIntoStrategy)
10286                    }
10287                    depositIntoStrategy
10288                },
10289                {
10290                    fn transferOwnership(
10291                        data: &[u8],
10292                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
10293                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10294                                data,
10295                            )
10296                            .map(StrategyManagerCalls::transferOwnership)
10297                    }
10298                    transferOwnership
10299                },
10300                {
10301                    fn DEFAULT_BURN_ADDRESS(
10302                        data: &[u8],
10303                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
10304                        <DEFAULT_BURN_ADDRESSCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10305                                data,
10306                            )
10307                            .map(StrategyManagerCalls::DEFAULT_BURN_ADDRESS)
10308                    }
10309                    DEFAULT_BURN_ADDRESS
10310                },
10311                {
10312                    fn domainSeparator(
10313                        data: &[u8],
10314                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
10315                        <domainSeparatorCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10316                                data,
10317                            )
10318                            .map(StrategyManagerCalls::domainSeparator)
10319                    }
10320                    domainSeparator
10321                },
10322                {
10323                    fn unpause(
10324                        data: &[u8],
10325                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
10326                        <unpauseCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10327                                data,
10328                            )
10329                            .map(StrategyManagerCalls::unpause)
10330                    }
10331                    unpause
10332                },
10333                {
10334                    fn getBurnableShares(
10335                        data: &[u8],
10336                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
10337                        <getBurnableSharesCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10338                                data,
10339                            )
10340                            .map(StrategyManagerCalls::getBurnableShares)
10341                    }
10342                    getBurnableShares
10343                },
10344                {
10345                    fn stakerDepositShares(
10346                        data: &[u8],
10347                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
10348                        <stakerDepositSharesCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10349                                data,
10350                            )
10351                            .map(StrategyManagerCalls::stakerDepositShares)
10352                    }
10353                    stakerDepositShares
10354                },
10355            ];
10356            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
10357                return Err(
10358                    alloy_sol_types::Error::unknown_selector(
10359                        <Self as alloy_sol_types::SolInterface>::NAME,
10360                        selector,
10361                    ),
10362                );
10363            };
10364            DECODE_VALIDATE_SHIMS[idx](data)
10365        }
10366        #[inline]
10367        fn abi_encoded_size(&self) -> usize {
10368            match self {
10369                Self::DEFAULT_BURN_ADDRESS(inner) => {
10370                    <DEFAULT_BURN_ADDRESSCall as alloy_sol_types::SolCall>::abi_encoded_size(
10371                        inner,
10372                    )
10373                }
10374                Self::DEPOSIT_TYPEHASH(inner) => {
10375                    <DEPOSIT_TYPEHASHCall as alloy_sol_types::SolCall>::abi_encoded_size(
10376                        inner,
10377                    )
10378                }
10379                Self::addShares(inner) => {
10380                    <addSharesCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10381                }
10382                Self::addStrategiesToDepositWhitelist(inner) => {
10383                    <addStrategiesToDepositWhitelistCall as alloy_sol_types::SolCall>::abi_encoded_size(
10384                        inner,
10385                    )
10386                }
10387                Self::burnShares(inner) => {
10388                    <burnSharesCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10389                }
10390                Self::calculateStrategyDepositDigestHash(inner) => {
10391                    <calculateStrategyDepositDigestHashCall as alloy_sol_types::SolCall>::abi_encoded_size(
10392                        inner,
10393                    )
10394                }
10395                Self::delegation(inner) => {
10396                    <delegationCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10397                }
10398                Self::depositIntoStrategy(inner) => {
10399                    <depositIntoStrategyCall as alloy_sol_types::SolCall>::abi_encoded_size(
10400                        inner,
10401                    )
10402                }
10403                Self::depositIntoStrategyWithSignature(inner) => {
10404                    <depositIntoStrategyWithSignatureCall as alloy_sol_types::SolCall>::abi_encoded_size(
10405                        inner,
10406                    )
10407                }
10408                Self::domainSeparator(inner) => {
10409                    <domainSeparatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
10410                        inner,
10411                    )
10412                }
10413                Self::getBurnableShares(inner) => {
10414                    <getBurnableSharesCall as alloy_sol_types::SolCall>::abi_encoded_size(
10415                        inner,
10416                    )
10417                }
10418                Self::getDeposits(inner) => {
10419                    <getDepositsCall as alloy_sol_types::SolCall>::abi_encoded_size(
10420                        inner,
10421                    )
10422                }
10423                Self::getStakerStrategyList(inner) => {
10424                    <getStakerStrategyListCall as alloy_sol_types::SolCall>::abi_encoded_size(
10425                        inner,
10426                    )
10427                }
10428                Self::getStrategiesWithBurnableShares(inner) => {
10429                    <getStrategiesWithBurnableSharesCall as alloy_sol_types::SolCall>::abi_encoded_size(
10430                        inner,
10431                    )
10432                }
10433                Self::increaseBurnableShares(inner) => {
10434                    <increaseBurnableSharesCall as alloy_sol_types::SolCall>::abi_encoded_size(
10435                        inner,
10436                    )
10437                }
10438                Self::initialize(inner) => {
10439                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10440                }
10441                Self::nonces(inner) => {
10442                    <noncesCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10443                }
10444                Self::owner(inner) => {
10445                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10446                }
10447                Self::pause(inner) => {
10448                    <pauseCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10449                }
10450                Self::pauseAll(inner) => {
10451                    <pauseAllCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10452                }
10453                Self::paused_0(inner) => {
10454                    <paused_0Call as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10455                }
10456                Self::paused_1(inner) => {
10457                    <paused_1Call as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10458                }
10459                Self::pauserRegistry(inner) => {
10460                    <pauserRegistryCall as alloy_sol_types::SolCall>::abi_encoded_size(
10461                        inner,
10462                    )
10463                }
10464                Self::removeDepositShares(inner) => {
10465                    <removeDepositSharesCall as alloy_sol_types::SolCall>::abi_encoded_size(
10466                        inner,
10467                    )
10468                }
10469                Self::removeStrategiesFromDepositWhitelist(inner) => {
10470                    <removeStrategiesFromDepositWhitelistCall as alloy_sol_types::SolCall>::abi_encoded_size(
10471                        inner,
10472                    )
10473                }
10474                Self::renounceOwnership(inner) => {
10475                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
10476                        inner,
10477                    )
10478                }
10479                Self::setStrategyWhitelister(inner) => {
10480                    <setStrategyWhitelisterCall as alloy_sol_types::SolCall>::abi_encoded_size(
10481                        inner,
10482                    )
10483                }
10484                Self::stakerDepositShares(inner) => {
10485                    <stakerDepositSharesCall as alloy_sol_types::SolCall>::abi_encoded_size(
10486                        inner,
10487                    )
10488                }
10489                Self::stakerStrategyList(inner) => {
10490                    <stakerStrategyListCall as alloy_sol_types::SolCall>::abi_encoded_size(
10491                        inner,
10492                    )
10493                }
10494                Self::stakerStrategyListLength(inner) => {
10495                    <stakerStrategyListLengthCall as alloy_sol_types::SolCall>::abi_encoded_size(
10496                        inner,
10497                    )
10498                }
10499                Self::strategyIsWhitelistedForDeposit(inner) => {
10500                    <strategyIsWhitelistedForDepositCall as alloy_sol_types::SolCall>::abi_encoded_size(
10501                        inner,
10502                    )
10503                }
10504                Self::strategyWhitelister(inner) => {
10505                    <strategyWhitelisterCall as alloy_sol_types::SolCall>::abi_encoded_size(
10506                        inner,
10507                    )
10508                }
10509                Self::transferOwnership(inner) => {
10510                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
10511                        inner,
10512                    )
10513                }
10514                Self::unpause(inner) => {
10515                    <unpauseCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10516                }
10517                Self::version(inner) => {
10518                    <versionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10519                }
10520                Self::withdrawSharesAsTokens(inner) => {
10521                    <withdrawSharesAsTokensCall as alloy_sol_types::SolCall>::abi_encoded_size(
10522                        inner,
10523                    )
10524                }
10525            }
10526        }
10527        #[inline]
10528        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
10529            match self {
10530                Self::DEFAULT_BURN_ADDRESS(inner) => {
10531                    <DEFAULT_BURN_ADDRESSCall as alloy_sol_types::SolCall>::abi_encode_raw(
10532                        inner,
10533                        out,
10534                    )
10535                }
10536                Self::DEPOSIT_TYPEHASH(inner) => {
10537                    <DEPOSIT_TYPEHASHCall as alloy_sol_types::SolCall>::abi_encode_raw(
10538                        inner,
10539                        out,
10540                    )
10541                }
10542                Self::addShares(inner) => {
10543                    <addSharesCall as alloy_sol_types::SolCall>::abi_encode_raw(
10544                        inner,
10545                        out,
10546                    )
10547                }
10548                Self::addStrategiesToDepositWhitelist(inner) => {
10549                    <addStrategiesToDepositWhitelistCall as alloy_sol_types::SolCall>::abi_encode_raw(
10550                        inner,
10551                        out,
10552                    )
10553                }
10554                Self::burnShares(inner) => {
10555                    <burnSharesCall as alloy_sol_types::SolCall>::abi_encode_raw(
10556                        inner,
10557                        out,
10558                    )
10559                }
10560                Self::calculateStrategyDepositDigestHash(inner) => {
10561                    <calculateStrategyDepositDigestHashCall as alloy_sol_types::SolCall>::abi_encode_raw(
10562                        inner,
10563                        out,
10564                    )
10565                }
10566                Self::delegation(inner) => {
10567                    <delegationCall as alloy_sol_types::SolCall>::abi_encode_raw(
10568                        inner,
10569                        out,
10570                    )
10571                }
10572                Self::depositIntoStrategy(inner) => {
10573                    <depositIntoStrategyCall as alloy_sol_types::SolCall>::abi_encode_raw(
10574                        inner,
10575                        out,
10576                    )
10577                }
10578                Self::depositIntoStrategyWithSignature(inner) => {
10579                    <depositIntoStrategyWithSignatureCall as alloy_sol_types::SolCall>::abi_encode_raw(
10580                        inner,
10581                        out,
10582                    )
10583                }
10584                Self::domainSeparator(inner) => {
10585                    <domainSeparatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
10586                        inner,
10587                        out,
10588                    )
10589                }
10590                Self::getBurnableShares(inner) => {
10591                    <getBurnableSharesCall as alloy_sol_types::SolCall>::abi_encode_raw(
10592                        inner,
10593                        out,
10594                    )
10595                }
10596                Self::getDeposits(inner) => {
10597                    <getDepositsCall as alloy_sol_types::SolCall>::abi_encode_raw(
10598                        inner,
10599                        out,
10600                    )
10601                }
10602                Self::getStakerStrategyList(inner) => {
10603                    <getStakerStrategyListCall as alloy_sol_types::SolCall>::abi_encode_raw(
10604                        inner,
10605                        out,
10606                    )
10607                }
10608                Self::getStrategiesWithBurnableShares(inner) => {
10609                    <getStrategiesWithBurnableSharesCall as alloy_sol_types::SolCall>::abi_encode_raw(
10610                        inner,
10611                        out,
10612                    )
10613                }
10614                Self::increaseBurnableShares(inner) => {
10615                    <increaseBurnableSharesCall as alloy_sol_types::SolCall>::abi_encode_raw(
10616                        inner,
10617                        out,
10618                    )
10619                }
10620                Self::initialize(inner) => {
10621                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
10622                        inner,
10623                        out,
10624                    )
10625                }
10626                Self::nonces(inner) => {
10627                    <noncesCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
10628                }
10629                Self::owner(inner) => {
10630                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
10631                }
10632                Self::pause(inner) => {
10633                    <pauseCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
10634                }
10635                Self::pauseAll(inner) => {
10636                    <pauseAllCall as alloy_sol_types::SolCall>::abi_encode_raw(
10637                        inner,
10638                        out,
10639                    )
10640                }
10641                Self::paused_0(inner) => {
10642                    <paused_0Call as alloy_sol_types::SolCall>::abi_encode_raw(
10643                        inner,
10644                        out,
10645                    )
10646                }
10647                Self::paused_1(inner) => {
10648                    <paused_1Call as alloy_sol_types::SolCall>::abi_encode_raw(
10649                        inner,
10650                        out,
10651                    )
10652                }
10653                Self::pauserRegistry(inner) => {
10654                    <pauserRegistryCall as alloy_sol_types::SolCall>::abi_encode_raw(
10655                        inner,
10656                        out,
10657                    )
10658                }
10659                Self::removeDepositShares(inner) => {
10660                    <removeDepositSharesCall as alloy_sol_types::SolCall>::abi_encode_raw(
10661                        inner,
10662                        out,
10663                    )
10664                }
10665                Self::removeStrategiesFromDepositWhitelist(inner) => {
10666                    <removeStrategiesFromDepositWhitelistCall as alloy_sol_types::SolCall>::abi_encode_raw(
10667                        inner,
10668                        out,
10669                    )
10670                }
10671                Self::renounceOwnership(inner) => {
10672                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
10673                        inner,
10674                        out,
10675                    )
10676                }
10677                Self::setStrategyWhitelister(inner) => {
10678                    <setStrategyWhitelisterCall as alloy_sol_types::SolCall>::abi_encode_raw(
10679                        inner,
10680                        out,
10681                    )
10682                }
10683                Self::stakerDepositShares(inner) => {
10684                    <stakerDepositSharesCall as alloy_sol_types::SolCall>::abi_encode_raw(
10685                        inner,
10686                        out,
10687                    )
10688                }
10689                Self::stakerStrategyList(inner) => {
10690                    <stakerStrategyListCall as alloy_sol_types::SolCall>::abi_encode_raw(
10691                        inner,
10692                        out,
10693                    )
10694                }
10695                Self::stakerStrategyListLength(inner) => {
10696                    <stakerStrategyListLengthCall as alloy_sol_types::SolCall>::abi_encode_raw(
10697                        inner,
10698                        out,
10699                    )
10700                }
10701                Self::strategyIsWhitelistedForDeposit(inner) => {
10702                    <strategyIsWhitelistedForDepositCall as alloy_sol_types::SolCall>::abi_encode_raw(
10703                        inner,
10704                        out,
10705                    )
10706                }
10707                Self::strategyWhitelister(inner) => {
10708                    <strategyWhitelisterCall as alloy_sol_types::SolCall>::abi_encode_raw(
10709                        inner,
10710                        out,
10711                    )
10712                }
10713                Self::transferOwnership(inner) => {
10714                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
10715                        inner,
10716                        out,
10717                    )
10718                }
10719                Self::unpause(inner) => {
10720                    <unpauseCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
10721                }
10722                Self::version(inner) => {
10723                    <versionCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
10724                }
10725                Self::withdrawSharesAsTokens(inner) => {
10726                    <withdrawSharesAsTokensCall as alloy_sol_types::SolCall>::abi_encode_raw(
10727                        inner,
10728                        out,
10729                    )
10730                }
10731            }
10732        }
10733    }
10734    ///Container for all the [`StrategyManager`](self) custom errors.
10735    #[derive(serde::Serialize, serde::Deserialize)]
10736    #[derive(Debug, PartialEq, Eq, Hash)]
10737    pub enum StrategyManagerErrors {
10738        #[allow(missing_docs)]
10739        CurrentlyPaused(CurrentlyPaused),
10740        #[allow(missing_docs)]
10741        InputAddressZero(InputAddressZero),
10742        #[allow(missing_docs)]
10743        InvalidNewPausedStatus(InvalidNewPausedStatus),
10744        #[allow(missing_docs)]
10745        InvalidShortString(InvalidShortString),
10746        #[allow(missing_docs)]
10747        InvalidSignature(InvalidSignature),
10748        #[allow(missing_docs)]
10749        MaxStrategiesExceeded(MaxStrategiesExceeded),
10750        #[allow(missing_docs)]
10751        OnlyDelegationManager(OnlyDelegationManager),
10752        #[allow(missing_docs)]
10753        OnlyPauser(OnlyPauser),
10754        #[allow(missing_docs)]
10755        OnlyStrategyWhitelister(OnlyStrategyWhitelister),
10756        #[allow(missing_docs)]
10757        OnlyUnpauser(OnlyUnpauser),
10758        #[allow(missing_docs)]
10759        SharesAmountTooHigh(SharesAmountTooHigh),
10760        #[allow(missing_docs)]
10761        SharesAmountZero(SharesAmountZero),
10762        #[allow(missing_docs)]
10763        SignatureExpired(SignatureExpired),
10764        #[allow(missing_docs)]
10765        StakerAddressZero(StakerAddressZero),
10766        #[allow(missing_docs)]
10767        StrategyNotFound(StrategyNotFound),
10768        #[allow(missing_docs)]
10769        StrategyNotWhitelisted(StrategyNotWhitelisted),
10770        #[allow(missing_docs)]
10771        StringTooLong(StringTooLong),
10772    }
10773    #[automatically_derived]
10774    impl StrategyManagerErrors {
10775        /// All the selectors of this enum.
10776        ///
10777        /// Note that the selectors might not be in the same order as the variants.
10778        /// No guarantees are made about the order of the selectors.
10779        ///
10780        /// Prefer using `SolInterface` methods instead.
10781        pub const SELECTORS: &'static [[u8; 4usize]] = &[
10782            [8u8, 25u8, 189u8, 205u8],
10783            [13u8, 10u8, 33u8, 200u8],
10784            [22u8, 242u8, 204u8, 201u8],
10785            [48u8, 90u8, 39u8, 169u8],
10786            [75u8, 24u8, 177u8, 147u8],
10787            [91u8, 226u8, 180u8, 130u8],
10788            [93u8, 251u8, 44u8, 162u8],
10789            [115u8, 99u8, 33u8, 118u8],
10790            [117u8, 223u8, 81u8, 220u8],
10791            [121u8, 72u8, 33u8, 255u8],
10792            [130u8, 232u8, 255u8, 228u8],
10793            [132u8, 10u8, 72u8, 213u8],
10794            [132u8, 12u8, 54u8, 74u8],
10795            [139u8, 170u8, 87u8, 159u8],
10796            [179u8, 81u8, 43u8, 12u8],
10797            [198u8, 29u8, 202u8, 93u8],
10798            [247u8, 57u8, 88u8, 155u8],
10799        ];
10800    }
10801    #[automatically_derived]
10802    impl alloy_sol_types::SolInterface for StrategyManagerErrors {
10803        const NAME: &'static str = "StrategyManagerErrors";
10804        const MIN_DATA_LENGTH: usize = 0usize;
10805        const COUNT: usize = 17usize;
10806        #[inline]
10807        fn selector(&self) -> [u8; 4] {
10808            match self {
10809                Self::CurrentlyPaused(_) => {
10810                    <CurrentlyPaused as alloy_sol_types::SolError>::SELECTOR
10811                }
10812                Self::InputAddressZero(_) => {
10813                    <InputAddressZero as alloy_sol_types::SolError>::SELECTOR
10814                }
10815                Self::InvalidNewPausedStatus(_) => {
10816                    <InvalidNewPausedStatus as alloy_sol_types::SolError>::SELECTOR
10817                }
10818                Self::InvalidShortString(_) => {
10819                    <InvalidShortString as alloy_sol_types::SolError>::SELECTOR
10820                }
10821                Self::InvalidSignature(_) => {
10822                    <InvalidSignature as alloy_sol_types::SolError>::SELECTOR
10823                }
10824                Self::MaxStrategiesExceeded(_) => {
10825                    <MaxStrategiesExceeded as alloy_sol_types::SolError>::SELECTOR
10826                }
10827                Self::OnlyDelegationManager(_) => {
10828                    <OnlyDelegationManager as alloy_sol_types::SolError>::SELECTOR
10829                }
10830                Self::OnlyPauser(_) => {
10831                    <OnlyPauser as alloy_sol_types::SolError>::SELECTOR
10832                }
10833                Self::OnlyStrategyWhitelister(_) => {
10834                    <OnlyStrategyWhitelister as alloy_sol_types::SolError>::SELECTOR
10835                }
10836                Self::OnlyUnpauser(_) => {
10837                    <OnlyUnpauser as alloy_sol_types::SolError>::SELECTOR
10838                }
10839                Self::SharesAmountTooHigh(_) => {
10840                    <SharesAmountTooHigh as alloy_sol_types::SolError>::SELECTOR
10841                }
10842                Self::SharesAmountZero(_) => {
10843                    <SharesAmountZero as alloy_sol_types::SolError>::SELECTOR
10844                }
10845                Self::SignatureExpired(_) => {
10846                    <SignatureExpired as alloy_sol_types::SolError>::SELECTOR
10847                }
10848                Self::StakerAddressZero(_) => {
10849                    <StakerAddressZero as alloy_sol_types::SolError>::SELECTOR
10850                }
10851                Self::StrategyNotFound(_) => {
10852                    <StrategyNotFound as alloy_sol_types::SolError>::SELECTOR
10853                }
10854                Self::StrategyNotWhitelisted(_) => {
10855                    <StrategyNotWhitelisted as alloy_sol_types::SolError>::SELECTOR
10856                }
10857                Self::StringTooLong(_) => {
10858                    <StringTooLong as alloy_sol_types::SolError>::SELECTOR
10859                }
10860            }
10861        }
10862        #[inline]
10863        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
10864            Self::SELECTORS.get(i).copied()
10865        }
10866        #[inline]
10867        fn valid_selector(selector: [u8; 4]) -> bool {
10868            Self::SELECTORS.binary_search(&selector).is_ok()
10869        }
10870        #[inline]
10871        #[allow(non_snake_case)]
10872        fn abi_decode_raw(
10873            selector: [u8; 4],
10874            data: &[u8],
10875        ) -> alloy_sol_types::Result<Self> {
10876            static DECODE_SHIMS: &[fn(
10877                &[u8],
10878            ) -> alloy_sol_types::Result<StrategyManagerErrors>] = &[
10879                {
10880                    fn SignatureExpired(
10881                        data: &[u8],
10882                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
10883                        <SignatureExpired as alloy_sol_types::SolError>::abi_decode_raw(
10884                                data,
10885                            )
10886                            .map(StrategyManagerErrors::SignatureExpired)
10887                    }
10888                    SignatureExpired
10889                },
10890                {
10891                    fn MaxStrategiesExceeded(
10892                        data: &[u8],
10893                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
10894                        <MaxStrategiesExceeded as alloy_sol_types::SolError>::abi_decode_raw(
10895                                data,
10896                            )
10897                            .map(StrategyManagerErrors::MaxStrategiesExceeded)
10898                    }
10899                    MaxStrategiesExceeded
10900                },
10901                {
10902                    fn StakerAddressZero(
10903                        data: &[u8],
10904                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
10905                        <StakerAddressZero as alloy_sol_types::SolError>::abi_decode_raw(
10906                                data,
10907                            )
10908                            .map(StrategyManagerErrors::StakerAddressZero)
10909                    }
10910                    StakerAddressZero
10911                },
10912                {
10913                    fn StringTooLong(
10914                        data: &[u8],
10915                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
10916                        <StringTooLong as alloy_sol_types::SolError>::abi_decode_raw(
10917                                data,
10918                            )
10919                            .map(StrategyManagerErrors::StringTooLong)
10920                    }
10921                    StringTooLong
10922                },
10923                {
10924                    fn SharesAmountTooHigh(
10925                        data: &[u8],
10926                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
10927                        <SharesAmountTooHigh as alloy_sol_types::SolError>::abi_decode_raw(
10928                                data,
10929                            )
10930                            .map(StrategyManagerErrors::SharesAmountTooHigh)
10931                    }
10932                    SharesAmountTooHigh
10933                },
10934                {
10935                    fn StrategyNotFound(
10936                        data: &[u8],
10937                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
10938                        <StrategyNotFound as alloy_sol_types::SolError>::abi_decode_raw(
10939                                data,
10940                            )
10941                            .map(StrategyManagerErrors::StrategyNotFound)
10942                    }
10943                    StrategyNotFound
10944                },
10945                {
10946                    fn StrategyNotWhitelisted(
10947                        data: &[u8],
10948                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
10949                        <StrategyNotWhitelisted as alloy_sol_types::SolError>::abi_decode_raw(
10950                                data,
10951                            )
10952                            .map(StrategyManagerErrors::StrategyNotWhitelisted)
10953                    }
10954                    StrategyNotWhitelisted
10955                },
10956                {
10957                    fn InputAddressZero(
10958                        data: &[u8],
10959                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
10960                        <InputAddressZero as alloy_sol_types::SolError>::abi_decode_raw(
10961                                data,
10962                            )
10963                            .map(StrategyManagerErrors::InputAddressZero)
10964                    }
10965                    InputAddressZero
10966                },
10967                {
10968                    fn OnlyPauser(
10969                        data: &[u8],
10970                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
10971                        <OnlyPauser as alloy_sol_types::SolError>::abi_decode_raw(data)
10972                            .map(StrategyManagerErrors::OnlyPauser)
10973                    }
10974                    OnlyPauser
10975                },
10976                {
10977                    fn OnlyUnpauser(
10978                        data: &[u8],
10979                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
10980                        <OnlyUnpauser as alloy_sol_types::SolError>::abi_decode_raw(data)
10981                            .map(StrategyManagerErrors::OnlyUnpauser)
10982                    }
10983                    OnlyUnpauser
10984                },
10985                {
10986                    fn OnlyStrategyWhitelister(
10987                        data: &[u8],
10988                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
10989                        <OnlyStrategyWhitelister as alloy_sol_types::SolError>::abi_decode_raw(
10990                                data,
10991                            )
10992                            .map(StrategyManagerErrors::OnlyStrategyWhitelister)
10993                    }
10994                    OnlyStrategyWhitelister
10995                },
10996                {
10997                    fn CurrentlyPaused(
10998                        data: &[u8],
10999                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
11000                        <CurrentlyPaused as alloy_sol_types::SolError>::abi_decode_raw(
11001                                data,
11002                            )
11003                            .map(StrategyManagerErrors::CurrentlyPaused)
11004                    }
11005                    CurrentlyPaused
11006                },
11007                {
11008                    fn SharesAmountZero(
11009                        data: &[u8],
11010                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
11011                        <SharesAmountZero as alloy_sol_types::SolError>::abi_decode_raw(
11012                                data,
11013                            )
11014                            .map(StrategyManagerErrors::SharesAmountZero)
11015                    }
11016                    SharesAmountZero
11017                },
11018                {
11019                    fn InvalidSignature(
11020                        data: &[u8],
11021                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
11022                        <InvalidSignature as alloy_sol_types::SolError>::abi_decode_raw(
11023                                data,
11024                            )
11025                            .map(StrategyManagerErrors::InvalidSignature)
11026                    }
11027                    InvalidSignature
11028                },
11029                {
11030                    fn InvalidShortString(
11031                        data: &[u8],
11032                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
11033                        <InvalidShortString as alloy_sol_types::SolError>::abi_decode_raw(
11034                                data,
11035                            )
11036                            .map(StrategyManagerErrors::InvalidShortString)
11037                    }
11038                    InvalidShortString
11039                },
11040                {
11041                    fn InvalidNewPausedStatus(
11042                        data: &[u8],
11043                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
11044                        <InvalidNewPausedStatus as alloy_sol_types::SolError>::abi_decode_raw(
11045                                data,
11046                            )
11047                            .map(StrategyManagerErrors::InvalidNewPausedStatus)
11048                    }
11049                    InvalidNewPausedStatus
11050                },
11051                {
11052                    fn OnlyDelegationManager(
11053                        data: &[u8],
11054                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
11055                        <OnlyDelegationManager as alloy_sol_types::SolError>::abi_decode_raw(
11056                                data,
11057                            )
11058                            .map(StrategyManagerErrors::OnlyDelegationManager)
11059                    }
11060                    OnlyDelegationManager
11061                },
11062            ];
11063            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
11064                return Err(
11065                    alloy_sol_types::Error::unknown_selector(
11066                        <Self as alloy_sol_types::SolInterface>::NAME,
11067                        selector,
11068                    ),
11069                );
11070            };
11071            DECODE_SHIMS[idx](data)
11072        }
11073        #[inline]
11074        #[allow(non_snake_case)]
11075        fn abi_decode_raw_validate(
11076            selector: [u8; 4],
11077            data: &[u8],
11078        ) -> alloy_sol_types::Result<Self> {
11079            static DECODE_VALIDATE_SHIMS: &[fn(
11080                &[u8],
11081            ) -> alloy_sol_types::Result<StrategyManagerErrors>] = &[
11082                {
11083                    fn SignatureExpired(
11084                        data: &[u8],
11085                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
11086                        <SignatureExpired as alloy_sol_types::SolError>::abi_decode_raw_validate(
11087                                data,
11088                            )
11089                            .map(StrategyManagerErrors::SignatureExpired)
11090                    }
11091                    SignatureExpired
11092                },
11093                {
11094                    fn MaxStrategiesExceeded(
11095                        data: &[u8],
11096                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
11097                        <MaxStrategiesExceeded as alloy_sol_types::SolError>::abi_decode_raw_validate(
11098                                data,
11099                            )
11100                            .map(StrategyManagerErrors::MaxStrategiesExceeded)
11101                    }
11102                    MaxStrategiesExceeded
11103                },
11104                {
11105                    fn StakerAddressZero(
11106                        data: &[u8],
11107                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
11108                        <StakerAddressZero as alloy_sol_types::SolError>::abi_decode_raw_validate(
11109                                data,
11110                            )
11111                            .map(StrategyManagerErrors::StakerAddressZero)
11112                    }
11113                    StakerAddressZero
11114                },
11115                {
11116                    fn StringTooLong(
11117                        data: &[u8],
11118                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
11119                        <StringTooLong as alloy_sol_types::SolError>::abi_decode_raw_validate(
11120                                data,
11121                            )
11122                            .map(StrategyManagerErrors::StringTooLong)
11123                    }
11124                    StringTooLong
11125                },
11126                {
11127                    fn SharesAmountTooHigh(
11128                        data: &[u8],
11129                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
11130                        <SharesAmountTooHigh as alloy_sol_types::SolError>::abi_decode_raw_validate(
11131                                data,
11132                            )
11133                            .map(StrategyManagerErrors::SharesAmountTooHigh)
11134                    }
11135                    SharesAmountTooHigh
11136                },
11137                {
11138                    fn StrategyNotFound(
11139                        data: &[u8],
11140                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
11141                        <StrategyNotFound as alloy_sol_types::SolError>::abi_decode_raw_validate(
11142                                data,
11143                            )
11144                            .map(StrategyManagerErrors::StrategyNotFound)
11145                    }
11146                    StrategyNotFound
11147                },
11148                {
11149                    fn StrategyNotWhitelisted(
11150                        data: &[u8],
11151                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
11152                        <StrategyNotWhitelisted as alloy_sol_types::SolError>::abi_decode_raw_validate(
11153                                data,
11154                            )
11155                            .map(StrategyManagerErrors::StrategyNotWhitelisted)
11156                    }
11157                    StrategyNotWhitelisted
11158                },
11159                {
11160                    fn InputAddressZero(
11161                        data: &[u8],
11162                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
11163                        <InputAddressZero as alloy_sol_types::SolError>::abi_decode_raw_validate(
11164                                data,
11165                            )
11166                            .map(StrategyManagerErrors::InputAddressZero)
11167                    }
11168                    InputAddressZero
11169                },
11170                {
11171                    fn OnlyPauser(
11172                        data: &[u8],
11173                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
11174                        <OnlyPauser as alloy_sol_types::SolError>::abi_decode_raw_validate(
11175                                data,
11176                            )
11177                            .map(StrategyManagerErrors::OnlyPauser)
11178                    }
11179                    OnlyPauser
11180                },
11181                {
11182                    fn OnlyUnpauser(
11183                        data: &[u8],
11184                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
11185                        <OnlyUnpauser as alloy_sol_types::SolError>::abi_decode_raw_validate(
11186                                data,
11187                            )
11188                            .map(StrategyManagerErrors::OnlyUnpauser)
11189                    }
11190                    OnlyUnpauser
11191                },
11192                {
11193                    fn OnlyStrategyWhitelister(
11194                        data: &[u8],
11195                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
11196                        <OnlyStrategyWhitelister as alloy_sol_types::SolError>::abi_decode_raw_validate(
11197                                data,
11198                            )
11199                            .map(StrategyManagerErrors::OnlyStrategyWhitelister)
11200                    }
11201                    OnlyStrategyWhitelister
11202                },
11203                {
11204                    fn CurrentlyPaused(
11205                        data: &[u8],
11206                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
11207                        <CurrentlyPaused as alloy_sol_types::SolError>::abi_decode_raw_validate(
11208                                data,
11209                            )
11210                            .map(StrategyManagerErrors::CurrentlyPaused)
11211                    }
11212                    CurrentlyPaused
11213                },
11214                {
11215                    fn SharesAmountZero(
11216                        data: &[u8],
11217                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
11218                        <SharesAmountZero as alloy_sol_types::SolError>::abi_decode_raw_validate(
11219                                data,
11220                            )
11221                            .map(StrategyManagerErrors::SharesAmountZero)
11222                    }
11223                    SharesAmountZero
11224                },
11225                {
11226                    fn InvalidSignature(
11227                        data: &[u8],
11228                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
11229                        <InvalidSignature as alloy_sol_types::SolError>::abi_decode_raw_validate(
11230                                data,
11231                            )
11232                            .map(StrategyManagerErrors::InvalidSignature)
11233                    }
11234                    InvalidSignature
11235                },
11236                {
11237                    fn InvalidShortString(
11238                        data: &[u8],
11239                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
11240                        <InvalidShortString as alloy_sol_types::SolError>::abi_decode_raw_validate(
11241                                data,
11242                            )
11243                            .map(StrategyManagerErrors::InvalidShortString)
11244                    }
11245                    InvalidShortString
11246                },
11247                {
11248                    fn InvalidNewPausedStatus(
11249                        data: &[u8],
11250                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
11251                        <InvalidNewPausedStatus as alloy_sol_types::SolError>::abi_decode_raw_validate(
11252                                data,
11253                            )
11254                            .map(StrategyManagerErrors::InvalidNewPausedStatus)
11255                    }
11256                    InvalidNewPausedStatus
11257                },
11258                {
11259                    fn OnlyDelegationManager(
11260                        data: &[u8],
11261                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
11262                        <OnlyDelegationManager as alloy_sol_types::SolError>::abi_decode_raw_validate(
11263                                data,
11264                            )
11265                            .map(StrategyManagerErrors::OnlyDelegationManager)
11266                    }
11267                    OnlyDelegationManager
11268                },
11269            ];
11270            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
11271                return Err(
11272                    alloy_sol_types::Error::unknown_selector(
11273                        <Self as alloy_sol_types::SolInterface>::NAME,
11274                        selector,
11275                    ),
11276                );
11277            };
11278            DECODE_VALIDATE_SHIMS[idx](data)
11279        }
11280        #[inline]
11281        fn abi_encoded_size(&self) -> usize {
11282            match self {
11283                Self::CurrentlyPaused(inner) => {
11284                    <CurrentlyPaused as alloy_sol_types::SolError>::abi_encoded_size(
11285                        inner,
11286                    )
11287                }
11288                Self::InputAddressZero(inner) => {
11289                    <InputAddressZero as alloy_sol_types::SolError>::abi_encoded_size(
11290                        inner,
11291                    )
11292                }
11293                Self::InvalidNewPausedStatus(inner) => {
11294                    <InvalidNewPausedStatus as alloy_sol_types::SolError>::abi_encoded_size(
11295                        inner,
11296                    )
11297                }
11298                Self::InvalidShortString(inner) => {
11299                    <InvalidShortString as alloy_sol_types::SolError>::abi_encoded_size(
11300                        inner,
11301                    )
11302                }
11303                Self::InvalidSignature(inner) => {
11304                    <InvalidSignature as alloy_sol_types::SolError>::abi_encoded_size(
11305                        inner,
11306                    )
11307                }
11308                Self::MaxStrategiesExceeded(inner) => {
11309                    <MaxStrategiesExceeded as alloy_sol_types::SolError>::abi_encoded_size(
11310                        inner,
11311                    )
11312                }
11313                Self::OnlyDelegationManager(inner) => {
11314                    <OnlyDelegationManager as alloy_sol_types::SolError>::abi_encoded_size(
11315                        inner,
11316                    )
11317                }
11318                Self::OnlyPauser(inner) => {
11319                    <OnlyPauser as alloy_sol_types::SolError>::abi_encoded_size(inner)
11320                }
11321                Self::OnlyStrategyWhitelister(inner) => {
11322                    <OnlyStrategyWhitelister as alloy_sol_types::SolError>::abi_encoded_size(
11323                        inner,
11324                    )
11325                }
11326                Self::OnlyUnpauser(inner) => {
11327                    <OnlyUnpauser as alloy_sol_types::SolError>::abi_encoded_size(inner)
11328                }
11329                Self::SharesAmountTooHigh(inner) => {
11330                    <SharesAmountTooHigh as alloy_sol_types::SolError>::abi_encoded_size(
11331                        inner,
11332                    )
11333                }
11334                Self::SharesAmountZero(inner) => {
11335                    <SharesAmountZero as alloy_sol_types::SolError>::abi_encoded_size(
11336                        inner,
11337                    )
11338                }
11339                Self::SignatureExpired(inner) => {
11340                    <SignatureExpired as alloy_sol_types::SolError>::abi_encoded_size(
11341                        inner,
11342                    )
11343                }
11344                Self::StakerAddressZero(inner) => {
11345                    <StakerAddressZero as alloy_sol_types::SolError>::abi_encoded_size(
11346                        inner,
11347                    )
11348                }
11349                Self::StrategyNotFound(inner) => {
11350                    <StrategyNotFound as alloy_sol_types::SolError>::abi_encoded_size(
11351                        inner,
11352                    )
11353                }
11354                Self::StrategyNotWhitelisted(inner) => {
11355                    <StrategyNotWhitelisted as alloy_sol_types::SolError>::abi_encoded_size(
11356                        inner,
11357                    )
11358                }
11359                Self::StringTooLong(inner) => {
11360                    <StringTooLong as alloy_sol_types::SolError>::abi_encoded_size(inner)
11361                }
11362            }
11363        }
11364        #[inline]
11365        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
11366            match self {
11367                Self::CurrentlyPaused(inner) => {
11368                    <CurrentlyPaused as alloy_sol_types::SolError>::abi_encode_raw(
11369                        inner,
11370                        out,
11371                    )
11372                }
11373                Self::InputAddressZero(inner) => {
11374                    <InputAddressZero as alloy_sol_types::SolError>::abi_encode_raw(
11375                        inner,
11376                        out,
11377                    )
11378                }
11379                Self::InvalidNewPausedStatus(inner) => {
11380                    <InvalidNewPausedStatus as alloy_sol_types::SolError>::abi_encode_raw(
11381                        inner,
11382                        out,
11383                    )
11384                }
11385                Self::InvalidShortString(inner) => {
11386                    <InvalidShortString as alloy_sol_types::SolError>::abi_encode_raw(
11387                        inner,
11388                        out,
11389                    )
11390                }
11391                Self::InvalidSignature(inner) => {
11392                    <InvalidSignature as alloy_sol_types::SolError>::abi_encode_raw(
11393                        inner,
11394                        out,
11395                    )
11396                }
11397                Self::MaxStrategiesExceeded(inner) => {
11398                    <MaxStrategiesExceeded as alloy_sol_types::SolError>::abi_encode_raw(
11399                        inner,
11400                        out,
11401                    )
11402                }
11403                Self::OnlyDelegationManager(inner) => {
11404                    <OnlyDelegationManager as alloy_sol_types::SolError>::abi_encode_raw(
11405                        inner,
11406                        out,
11407                    )
11408                }
11409                Self::OnlyPauser(inner) => {
11410                    <OnlyPauser as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
11411                }
11412                Self::OnlyStrategyWhitelister(inner) => {
11413                    <OnlyStrategyWhitelister as alloy_sol_types::SolError>::abi_encode_raw(
11414                        inner,
11415                        out,
11416                    )
11417                }
11418                Self::OnlyUnpauser(inner) => {
11419                    <OnlyUnpauser as alloy_sol_types::SolError>::abi_encode_raw(
11420                        inner,
11421                        out,
11422                    )
11423                }
11424                Self::SharesAmountTooHigh(inner) => {
11425                    <SharesAmountTooHigh as alloy_sol_types::SolError>::abi_encode_raw(
11426                        inner,
11427                        out,
11428                    )
11429                }
11430                Self::SharesAmountZero(inner) => {
11431                    <SharesAmountZero as alloy_sol_types::SolError>::abi_encode_raw(
11432                        inner,
11433                        out,
11434                    )
11435                }
11436                Self::SignatureExpired(inner) => {
11437                    <SignatureExpired as alloy_sol_types::SolError>::abi_encode_raw(
11438                        inner,
11439                        out,
11440                    )
11441                }
11442                Self::StakerAddressZero(inner) => {
11443                    <StakerAddressZero as alloy_sol_types::SolError>::abi_encode_raw(
11444                        inner,
11445                        out,
11446                    )
11447                }
11448                Self::StrategyNotFound(inner) => {
11449                    <StrategyNotFound as alloy_sol_types::SolError>::abi_encode_raw(
11450                        inner,
11451                        out,
11452                    )
11453                }
11454                Self::StrategyNotWhitelisted(inner) => {
11455                    <StrategyNotWhitelisted as alloy_sol_types::SolError>::abi_encode_raw(
11456                        inner,
11457                        out,
11458                    )
11459                }
11460                Self::StringTooLong(inner) => {
11461                    <StringTooLong as alloy_sol_types::SolError>::abi_encode_raw(
11462                        inner,
11463                        out,
11464                    )
11465                }
11466            }
11467        }
11468    }
11469    ///Container for all the [`StrategyManager`](self) events.
11470    #[derive(serde::Serialize, serde::Deserialize)]
11471    #[derive(Debug, PartialEq, Eq, Hash)]
11472    pub enum StrategyManagerEvents {
11473        #[allow(missing_docs)]
11474        BurnableSharesDecreased(BurnableSharesDecreased),
11475        #[allow(missing_docs)]
11476        BurnableSharesIncreased(BurnableSharesIncreased),
11477        #[allow(missing_docs)]
11478        Deposit(Deposit),
11479        #[allow(missing_docs)]
11480        Initialized(Initialized),
11481        #[allow(missing_docs)]
11482        OwnershipTransferred(OwnershipTransferred),
11483        #[allow(missing_docs)]
11484        Paused(Paused),
11485        #[allow(missing_docs)]
11486        StrategyAddedToDepositWhitelist(StrategyAddedToDepositWhitelist),
11487        #[allow(missing_docs)]
11488        StrategyRemovedFromDepositWhitelist(StrategyRemovedFromDepositWhitelist),
11489        #[allow(missing_docs)]
11490        StrategyWhitelisterChanged(StrategyWhitelisterChanged),
11491        #[allow(missing_docs)]
11492        Unpaused(Unpaused),
11493    }
11494    #[automatically_derived]
11495    impl StrategyManagerEvents {
11496        /// All the selectors of this enum.
11497        ///
11498        /// Note that the selectors might not be in the same order as the variants.
11499        /// No guarantees are made about the order of the selectors.
11500        ///
11501        /// Prefer using `SolInterface` methods instead.
11502        pub const SELECTORS: &'static [[u8; 32usize]] = &[
11503            [
11504                12u8, 53u8, 177u8, 125u8, 145u8, 201u8, 110u8, 178u8, 117u8, 28u8, 212u8,
11505                86u8, 225u8, 37u8, 47u8, 66u8, 163u8, 134u8, 229u8, 36u8, 239u8, 159u8,
11506                242u8, 110u8, 204u8, 153u8, 80u8, 133u8, 159u8, 220u8, 4u8, 254u8,
11507            ],
11508            [
11509                53u8, 130u8, 209u8, 130u8, 142u8, 38u8, 191u8, 86u8, 189u8, 128u8, 21u8,
11510                2u8, 188u8, 2u8, 26u8, 192u8, 188u8, 138u8, 251u8, 87u8, 200u8, 38u8,
11511                228u8, 152u8, 107u8, 69u8, 89u8, 60u8, 143u8, 173u8, 56u8, 156u8,
11512            ],
11513            [
11514                64u8, 116u8, 65u8, 59u8, 75u8, 68u8, 62u8, 78u8, 88u8, 1u8, 159u8, 40u8,
11515                85u8, 168u8, 118u8, 81u8, 19u8, 53u8, 140u8, 124u8, 114u8, 227u8, 149u8,
11516                9u8, 198u8, 175u8, 69u8, 252u8, 15u8, 91u8, 160u8, 48u8,
11517            ],
11518            [
11519                66u8, 100u8, 39u8, 94u8, 89u8, 57u8, 85u8, 255u8, 157u8, 97u8, 70u8,
11520                165u8, 26u8, 69u8, 37u8, 246u8, 221u8, 172u8, 226u8, 232u8, 29u8, 185u8,
11521                57u8, 26u8, 188u8, 201u8, 209u8, 202u8, 72u8, 4u8, 125u8, 41u8,
11522            ],
11523            [
11524                85u8, 72u8, 200u8, 55u8, 171u8, 6u8, 140u8, 245u8, 106u8, 44u8, 36u8,
11525                121u8, 223u8, 8u8, 130u8, 164u8, 146u8, 47u8, 210u8, 3u8, 237u8, 183u8,
11526                81u8, 115u8, 33u8, 131u8, 29u8, 149u8, 7u8, 140u8, 95u8, 98u8,
11527            ],
11528            [
11529                127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8,
11530                19u8, 56u8, 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8,
11531                146u8, 20u8, 96u8, 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8,
11532            ],
11533            [
11534                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
11535                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
11536                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
11537            ],
11538            [
11539                171u8, 64u8, 163u8, 116u8, 188u8, 81u8, 222u8, 55u8, 34u8, 0u8, 168u8,
11540                188u8, 152u8, 26u8, 248u8, 201u8, 236u8, 220u8, 8u8, 223u8, 218u8, 239u8,
11541                11u8, 182u8, 224u8, 159u8, 136u8, 243u8, 198u8, 22u8, 239u8, 61u8,
11542            ],
11543            [
11544                202u8, 62u8, 2u8, 164u8, 171u8, 122u8, 211u8, 196u8, 122u8, 142u8, 54u8,
11545                229u8, 166u8, 36u8, 195u8, 1u8, 112u8, 121u8, 23u8, 38u8, 171u8, 114u8,
11546                15u8, 27u8, 171u8, 254u8, 242u8, 16u8, 70u8, 217u8, 83u8, 255u8,
11547            ],
11548            [
11549                217u8, 208u8, 130u8, 195u8, 236u8, 79u8, 58u8, 63u8, 250u8, 85u8, 195u8,
11550                36u8, 147u8, 154u8, 6u8, 64u8, 127u8, 95u8, 188u8, 184u8, 125u8, 94u8,
11551                12u8, 227u8, 185u8, 80u8, 140u8, 146u8, 200u8, 78u8, 216u8, 57u8,
11552            ],
11553        ];
11554    }
11555    #[automatically_derived]
11556    impl alloy_sol_types::SolEventInterface for StrategyManagerEvents {
11557        const NAME: &'static str = "StrategyManagerEvents";
11558        const COUNT: usize = 10usize;
11559        fn decode_raw_log(
11560            topics: &[alloy_sol_types::Word],
11561            data: &[u8],
11562        ) -> alloy_sol_types::Result<Self> {
11563            match topics.first().copied() {
11564                Some(
11565                    <BurnableSharesDecreased as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
11566                ) => {
11567                    <BurnableSharesDecreased as alloy_sol_types::SolEvent>::decode_raw_log(
11568                            topics,
11569                            data,
11570                        )
11571                        .map(Self::BurnableSharesDecreased)
11572                }
11573                Some(
11574                    <BurnableSharesIncreased as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
11575                ) => {
11576                    <BurnableSharesIncreased as alloy_sol_types::SolEvent>::decode_raw_log(
11577                            topics,
11578                            data,
11579                        )
11580                        .map(Self::BurnableSharesIncreased)
11581                }
11582                Some(<Deposit as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
11583                    <Deposit as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
11584                        .map(Self::Deposit)
11585                }
11586                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
11587                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(
11588                            topics,
11589                            data,
11590                        )
11591                        .map(Self::Initialized)
11592                }
11593                Some(
11594                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
11595                ) => {
11596                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
11597                            topics,
11598                            data,
11599                        )
11600                        .map(Self::OwnershipTransferred)
11601                }
11602                Some(<Paused as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
11603                    <Paused as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
11604                        .map(Self::Paused)
11605                }
11606                Some(
11607                    <StrategyAddedToDepositWhitelist as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
11608                ) => {
11609                    <StrategyAddedToDepositWhitelist as alloy_sol_types::SolEvent>::decode_raw_log(
11610                            topics,
11611                            data,
11612                        )
11613                        .map(Self::StrategyAddedToDepositWhitelist)
11614                }
11615                Some(
11616                    <StrategyRemovedFromDepositWhitelist as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
11617                ) => {
11618                    <StrategyRemovedFromDepositWhitelist as alloy_sol_types::SolEvent>::decode_raw_log(
11619                            topics,
11620                            data,
11621                        )
11622                        .map(Self::StrategyRemovedFromDepositWhitelist)
11623                }
11624                Some(
11625                    <StrategyWhitelisterChanged as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
11626                ) => {
11627                    <StrategyWhitelisterChanged as alloy_sol_types::SolEvent>::decode_raw_log(
11628                            topics,
11629                            data,
11630                        )
11631                        .map(Self::StrategyWhitelisterChanged)
11632                }
11633                Some(<Unpaused as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
11634                    <Unpaused as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
11635                        .map(Self::Unpaused)
11636                }
11637                _ => {
11638                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
11639                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
11640                        log: alloy_sol_types::private::Box::new(
11641                            alloy_sol_types::private::LogData::new_unchecked(
11642                                topics.to_vec(),
11643                                data.to_vec().into(),
11644                            ),
11645                        ),
11646                    })
11647                }
11648            }
11649        }
11650    }
11651    #[automatically_derived]
11652    impl alloy_sol_types::private::IntoLogData for StrategyManagerEvents {
11653        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
11654            match self {
11655                Self::BurnableSharesDecreased(inner) => {
11656                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
11657                }
11658                Self::BurnableSharesIncreased(inner) => {
11659                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
11660                }
11661                Self::Deposit(inner) => {
11662                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
11663                }
11664                Self::Initialized(inner) => {
11665                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
11666                }
11667                Self::OwnershipTransferred(inner) => {
11668                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
11669                }
11670                Self::Paused(inner) => {
11671                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
11672                }
11673                Self::StrategyAddedToDepositWhitelist(inner) => {
11674                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
11675                }
11676                Self::StrategyRemovedFromDepositWhitelist(inner) => {
11677                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
11678                }
11679                Self::StrategyWhitelisterChanged(inner) => {
11680                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
11681                }
11682                Self::Unpaused(inner) => {
11683                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
11684                }
11685            }
11686        }
11687        fn into_log_data(self) -> alloy_sol_types::private::LogData {
11688            match self {
11689                Self::BurnableSharesDecreased(inner) => {
11690                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11691                }
11692                Self::BurnableSharesIncreased(inner) => {
11693                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11694                }
11695                Self::Deposit(inner) => {
11696                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11697                }
11698                Self::Initialized(inner) => {
11699                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11700                }
11701                Self::OwnershipTransferred(inner) => {
11702                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11703                }
11704                Self::Paused(inner) => {
11705                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11706                }
11707                Self::StrategyAddedToDepositWhitelist(inner) => {
11708                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11709                }
11710                Self::StrategyRemovedFromDepositWhitelist(inner) => {
11711                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11712                }
11713                Self::StrategyWhitelisterChanged(inner) => {
11714                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11715                }
11716                Self::Unpaused(inner) => {
11717                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11718                }
11719            }
11720        }
11721    }
11722    use alloy::contract as alloy_contract;
11723    /**Creates a new wrapper around an on-chain [`StrategyManager`](self) contract instance.
11724
11725See the [wrapper's documentation](`StrategyManagerInstance`) for more details.*/
11726    #[inline]
11727    pub const fn new<
11728        P: alloy_contract::private::Provider<N>,
11729        N: alloy_contract::private::Network,
11730    >(
11731        address: alloy_sol_types::private::Address,
11732        provider: P,
11733    ) -> StrategyManagerInstance<P, N> {
11734        StrategyManagerInstance::<P, N>::new(address, provider)
11735    }
11736    /**Deploys this contract using the given `provider` and constructor arguments, if any.
11737
11738Returns a new instance of the contract, if the deployment was successful.
11739
11740For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
11741    #[inline]
11742    pub fn deploy<
11743        P: alloy_contract::private::Provider<N>,
11744        N: alloy_contract::private::Network,
11745    >(
11746        provider: P,
11747        _delegation: alloy::sol_types::private::Address,
11748        _pauserRegistry: alloy::sol_types::private::Address,
11749        _version: alloy::sol_types::private::String,
11750    ) -> impl ::core::future::Future<
11751        Output = alloy_contract::Result<StrategyManagerInstance<P, N>>,
11752    > {
11753        StrategyManagerInstance::<
11754            P,
11755            N,
11756        >::deploy(provider, _delegation, _pauserRegistry, _version)
11757    }
11758    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
11759and constructor arguments, if any.
11760
11761This is a simple wrapper around creating a `RawCallBuilder` with the data set to
11762the bytecode concatenated with the constructor's ABI-encoded arguments.*/
11763    #[inline]
11764    pub fn deploy_builder<
11765        P: alloy_contract::private::Provider<N>,
11766        N: alloy_contract::private::Network,
11767    >(
11768        provider: P,
11769        _delegation: alloy::sol_types::private::Address,
11770        _pauserRegistry: alloy::sol_types::private::Address,
11771        _version: alloy::sol_types::private::String,
11772    ) -> alloy_contract::RawCallBuilder<P, N> {
11773        StrategyManagerInstance::<
11774            P,
11775            N,
11776        >::deploy_builder(provider, _delegation, _pauserRegistry, _version)
11777    }
11778    /**A [`StrategyManager`](self) instance.
11779
11780Contains type-safe methods for interacting with an on-chain instance of the
11781[`StrategyManager`](self) contract located at a given `address`, using a given
11782provider `P`.
11783
11784If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
11785documentation on how to provide it), the `deploy` and `deploy_builder` methods can
11786be used to deploy a new instance of the contract.
11787
11788See the [module-level documentation](self) for all the available methods.*/
11789    #[derive(Clone)]
11790    pub struct StrategyManagerInstance<P, N = alloy_contract::private::Ethereum> {
11791        address: alloy_sol_types::private::Address,
11792        provider: P,
11793        _network: ::core::marker::PhantomData<N>,
11794    }
11795    #[automatically_derived]
11796    impl<P, N> ::core::fmt::Debug for StrategyManagerInstance<P, N> {
11797        #[inline]
11798        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
11799            f.debug_tuple("StrategyManagerInstance").field(&self.address).finish()
11800        }
11801    }
11802    /// Instantiation and getters/setters.
11803    #[automatically_derived]
11804    impl<
11805        P: alloy_contract::private::Provider<N>,
11806        N: alloy_contract::private::Network,
11807    > StrategyManagerInstance<P, N> {
11808        /**Creates a new wrapper around an on-chain [`StrategyManager`](self) contract instance.
11809
11810See the [wrapper's documentation](`StrategyManagerInstance`) for more details.*/
11811        #[inline]
11812        pub const fn new(
11813            address: alloy_sol_types::private::Address,
11814            provider: P,
11815        ) -> Self {
11816            Self {
11817                address,
11818                provider,
11819                _network: ::core::marker::PhantomData,
11820            }
11821        }
11822        /**Deploys this contract using the given `provider` and constructor arguments, if any.
11823
11824Returns a new instance of the contract, if the deployment was successful.
11825
11826For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
11827        #[inline]
11828        pub async fn deploy(
11829            provider: P,
11830            _delegation: alloy::sol_types::private::Address,
11831            _pauserRegistry: alloy::sol_types::private::Address,
11832            _version: alloy::sol_types::private::String,
11833        ) -> alloy_contract::Result<StrategyManagerInstance<P, N>> {
11834            let call_builder = Self::deploy_builder(
11835                provider,
11836                _delegation,
11837                _pauserRegistry,
11838                _version,
11839            );
11840            let contract_address = call_builder.deploy().await?;
11841            Ok(Self::new(contract_address, call_builder.provider))
11842        }
11843        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
11844and constructor arguments, if any.
11845
11846This is a simple wrapper around creating a `RawCallBuilder` with the data set to
11847the bytecode concatenated with the constructor's ABI-encoded arguments.*/
11848        #[inline]
11849        pub fn deploy_builder(
11850            provider: P,
11851            _delegation: alloy::sol_types::private::Address,
11852            _pauserRegistry: alloy::sol_types::private::Address,
11853            _version: alloy::sol_types::private::String,
11854        ) -> alloy_contract::RawCallBuilder<P, N> {
11855            alloy_contract::RawCallBuilder::new_raw_deploy(
11856                provider,
11857                [
11858                    &BYTECODE[..],
11859                    &alloy_sol_types::SolConstructor::abi_encode(
11860                        &constructorCall {
11861                            _delegation,
11862                            _pauserRegistry,
11863                            _version,
11864                        },
11865                    )[..],
11866                ]
11867                    .concat()
11868                    .into(),
11869            )
11870        }
11871        /// Returns a reference to the address.
11872        #[inline]
11873        pub const fn address(&self) -> &alloy_sol_types::private::Address {
11874            &self.address
11875        }
11876        /// Sets the address.
11877        #[inline]
11878        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
11879            self.address = address;
11880        }
11881        /// Sets the address and returns `self`.
11882        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
11883            self.set_address(address);
11884            self
11885        }
11886        /// Returns a reference to the provider.
11887        #[inline]
11888        pub const fn provider(&self) -> &P {
11889            &self.provider
11890        }
11891    }
11892    impl<P: ::core::clone::Clone, N> StrategyManagerInstance<&P, N> {
11893        /// Clones the provider and returns a new instance with the cloned provider.
11894        #[inline]
11895        pub fn with_cloned_provider(self) -> StrategyManagerInstance<P, N> {
11896            StrategyManagerInstance {
11897                address: self.address,
11898                provider: ::core::clone::Clone::clone(&self.provider),
11899                _network: ::core::marker::PhantomData,
11900            }
11901        }
11902    }
11903    /// Function calls.
11904    #[automatically_derived]
11905    impl<
11906        P: alloy_contract::private::Provider<N>,
11907        N: alloy_contract::private::Network,
11908    > StrategyManagerInstance<P, N> {
11909        /// Creates a new call builder using this contract instance's provider and address.
11910        ///
11911        /// Note that the call can be any function call, not just those defined in this
11912        /// contract. Prefer using the other methods for building type-safe contract calls.
11913        pub fn call_builder<C: alloy_sol_types::SolCall>(
11914            &self,
11915            call: &C,
11916        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
11917            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
11918        }
11919        ///Creates a new call builder for the [`DEFAULT_BURN_ADDRESS`] function.
11920        pub fn DEFAULT_BURN_ADDRESS(
11921            &self,
11922        ) -> alloy_contract::SolCallBuilder<&P, DEFAULT_BURN_ADDRESSCall, N> {
11923            self.call_builder(&DEFAULT_BURN_ADDRESSCall)
11924        }
11925        ///Creates a new call builder for the [`DEPOSIT_TYPEHASH`] function.
11926        pub fn DEPOSIT_TYPEHASH(
11927            &self,
11928        ) -> alloy_contract::SolCallBuilder<&P, DEPOSIT_TYPEHASHCall, N> {
11929            self.call_builder(&DEPOSIT_TYPEHASHCall)
11930        }
11931        ///Creates a new call builder for the [`addShares`] function.
11932        pub fn addShares(
11933            &self,
11934            staker: alloy::sol_types::private::Address,
11935            strategy: alloy::sol_types::private::Address,
11936            shares: alloy::sol_types::private::primitives::aliases::U256,
11937        ) -> alloy_contract::SolCallBuilder<&P, addSharesCall, N> {
11938            self.call_builder(
11939                &addSharesCall {
11940                    staker,
11941                    strategy,
11942                    shares,
11943                },
11944            )
11945        }
11946        ///Creates a new call builder for the [`addStrategiesToDepositWhitelist`] function.
11947        pub fn addStrategiesToDepositWhitelist(
11948            &self,
11949            strategiesToWhitelist: alloy::sol_types::private::Vec<
11950                alloy::sol_types::private::Address,
11951            >,
11952        ) -> alloy_contract::SolCallBuilder<&P, addStrategiesToDepositWhitelistCall, N> {
11953            self.call_builder(
11954                &addStrategiesToDepositWhitelistCall {
11955                    strategiesToWhitelist,
11956                },
11957            )
11958        }
11959        ///Creates a new call builder for the [`burnShares`] function.
11960        pub fn burnShares(
11961            &self,
11962            strategy: alloy::sol_types::private::Address,
11963        ) -> alloy_contract::SolCallBuilder<&P, burnSharesCall, N> {
11964            self.call_builder(&burnSharesCall { strategy })
11965        }
11966        ///Creates a new call builder for the [`calculateStrategyDepositDigestHash`] function.
11967        pub fn calculateStrategyDepositDigestHash(
11968            &self,
11969            staker: alloy::sol_types::private::Address,
11970            strategy: alloy::sol_types::private::Address,
11971            token: alloy::sol_types::private::Address,
11972            amount: alloy::sol_types::private::primitives::aliases::U256,
11973            nonce: alloy::sol_types::private::primitives::aliases::U256,
11974            expiry: alloy::sol_types::private::primitives::aliases::U256,
11975        ) -> alloy_contract::SolCallBuilder<
11976            &P,
11977            calculateStrategyDepositDigestHashCall,
11978            N,
11979        > {
11980            self.call_builder(
11981                &calculateStrategyDepositDigestHashCall {
11982                    staker,
11983                    strategy,
11984                    token,
11985                    amount,
11986                    nonce,
11987                    expiry,
11988                },
11989            )
11990        }
11991        ///Creates a new call builder for the [`delegation`] function.
11992        pub fn delegation(
11993            &self,
11994        ) -> alloy_contract::SolCallBuilder<&P, delegationCall, N> {
11995            self.call_builder(&delegationCall)
11996        }
11997        ///Creates a new call builder for the [`depositIntoStrategy`] function.
11998        pub fn depositIntoStrategy(
11999            &self,
12000            strategy: alloy::sol_types::private::Address,
12001            token: alloy::sol_types::private::Address,
12002            amount: alloy::sol_types::private::primitives::aliases::U256,
12003        ) -> alloy_contract::SolCallBuilder<&P, depositIntoStrategyCall, N> {
12004            self.call_builder(
12005                &depositIntoStrategyCall {
12006                    strategy,
12007                    token,
12008                    amount,
12009                },
12010            )
12011        }
12012        ///Creates a new call builder for the [`depositIntoStrategyWithSignature`] function.
12013        pub fn depositIntoStrategyWithSignature(
12014            &self,
12015            strategy: alloy::sol_types::private::Address,
12016            token: alloy::sol_types::private::Address,
12017            amount: alloy::sol_types::private::primitives::aliases::U256,
12018            staker: alloy::sol_types::private::Address,
12019            expiry: alloy::sol_types::private::primitives::aliases::U256,
12020            signature: alloy::sol_types::private::Bytes,
12021        ) -> alloy_contract::SolCallBuilder<
12022            &P,
12023            depositIntoStrategyWithSignatureCall,
12024            N,
12025        > {
12026            self.call_builder(
12027                &depositIntoStrategyWithSignatureCall {
12028                    strategy,
12029                    token,
12030                    amount,
12031                    staker,
12032                    expiry,
12033                    signature,
12034                },
12035            )
12036        }
12037        ///Creates a new call builder for the [`domainSeparator`] function.
12038        pub fn domainSeparator(
12039            &self,
12040        ) -> alloy_contract::SolCallBuilder<&P, domainSeparatorCall, N> {
12041            self.call_builder(&domainSeparatorCall)
12042        }
12043        ///Creates a new call builder for the [`getBurnableShares`] function.
12044        pub fn getBurnableShares(
12045            &self,
12046            strategy: alloy::sol_types::private::Address,
12047        ) -> alloy_contract::SolCallBuilder<&P, getBurnableSharesCall, N> {
12048            self.call_builder(&getBurnableSharesCall { strategy })
12049        }
12050        ///Creates a new call builder for the [`getDeposits`] function.
12051        pub fn getDeposits(
12052            &self,
12053            staker: alloy::sol_types::private::Address,
12054        ) -> alloy_contract::SolCallBuilder<&P, getDepositsCall, N> {
12055            self.call_builder(&getDepositsCall { staker })
12056        }
12057        ///Creates a new call builder for the [`getStakerStrategyList`] function.
12058        pub fn getStakerStrategyList(
12059            &self,
12060            staker: alloy::sol_types::private::Address,
12061        ) -> alloy_contract::SolCallBuilder<&P, getStakerStrategyListCall, N> {
12062            self.call_builder(
12063                &getStakerStrategyListCall {
12064                    staker,
12065                },
12066            )
12067        }
12068        ///Creates a new call builder for the [`getStrategiesWithBurnableShares`] function.
12069        pub fn getStrategiesWithBurnableShares(
12070            &self,
12071        ) -> alloy_contract::SolCallBuilder<&P, getStrategiesWithBurnableSharesCall, N> {
12072            self.call_builder(&getStrategiesWithBurnableSharesCall)
12073        }
12074        ///Creates a new call builder for the [`increaseBurnableShares`] function.
12075        pub fn increaseBurnableShares(
12076            &self,
12077            strategy: alloy::sol_types::private::Address,
12078            addedSharesToBurn: alloy::sol_types::private::primitives::aliases::U256,
12079        ) -> alloy_contract::SolCallBuilder<&P, increaseBurnableSharesCall, N> {
12080            self.call_builder(
12081                &increaseBurnableSharesCall {
12082                    strategy,
12083                    addedSharesToBurn,
12084                },
12085            )
12086        }
12087        ///Creates a new call builder for the [`initialize`] function.
12088        pub fn initialize(
12089            &self,
12090            initialOwner: alloy::sol_types::private::Address,
12091            initialStrategyWhitelister: alloy::sol_types::private::Address,
12092            initialPausedStatus: alloy::sol_types::private::primitives::aliases::U256,
12093        ) -> alloy_contract::SolCallBuilder<&P, initializeCall, N> {
12094            self.call_builder(
12095                &initializeCall {
12096                    initialOwner,
12097                    initialStrategyWhitelister,
12098                    initialPausedStatus,
12099                },
12100            )
12101        }
12102        ///Creates a new call builder for the [`nonces`] function.
12103        pub fn nonces(
12104            &self,
12105            signer: alloy::sol_types::private::Address,
12106        ) -> alloy_contract::SolCallBuilder<&P, noncesCall, N> {
12107            self.call_builder(&noncesCall { signer })
12108        }
12109        ///Creates a new call builder for the [`owner`] function.
12110        pub fn owner(&self) -> alloy_contract::SolCallBuilder<&P, ownerCall, N> {
12111            self.call_builder(&ownerCall)
12112        }
12113        ///Creates a new call builder for the [`pause`] function.
12114        pub fn pause(
12115            &self,
12116            newPausedStatus: alloy::sol_types::private::primitives::aliases::U256,
12117        ) -> alloy_contract::SolCallBuilder<&P, pauseCall, N> {
12118            self.call_builder(&pauseCall { newPausedStatus })
12119        }
12120        ///Creates a new call builder for the [`pauseAll`] function.
12121        pub fn pauseAll(&self) -> alloy_contract::SolCallBuilder<&P, pauseAllCall, N> {
12122            self.call_builder(&pauseAllCall)
12123        }
12124        ///Creates a new call builder for the [`paused_0`] function.
12125        pub fn paused_0(
12126            &self,
12127            index: u8,
12128        ) -> alloy_contract::SolCallBuilder<&P, paused_0Call, N> {
12129            self.call_builder(&paused_0Call { index })
12130        }
12131        ///Creates a new call builder for the [`paused_1`] function.
12132        pub fn paused_1(&self) -> alloy_contract::SolCallBuilder<&P, paused_1Call, N> {
12133            self.call_builder(&paused_1Call)
12134        }
12135        ///Creates a new call builder for the [`pauserRegistry`] function.
12136        pub fn pauserRegistry(
12137            &self,
12138        ) -> alloy_contract::SolCallBuilder<&P, pauserRegistryCall, N> {
12139            self.call_builder(&pauserRegistryCall)
12140        }
12141        ///Creates a new call builder for the [`removeDepositShares`] function.
12142        pub fn removeDepositShares(
12143            &self,
12144            staker: alloy::sol_types::private::Address,
12145            strategy: alloy::sol_types::private::Address,
12146            depositSharesToRemove: alloy::sol_types::private::primitives::aliases::U256,
12147        ) -> alloy_contract::SolCallBuilder<&P, removeDepositSharesCall, N> {
12148            self.call_builder(
12149                &removeDepositSharesCall {
12150                    staker,
12151                    strategy,
12152                    depositSharesToRemove,
12153                },
12154            )
12155        }
12156        ///Creates a new call builder for the [`removeStrategiesFromDepositWhitelist`] function.
12157        pub fn removeStrategiesFromDepositWhitelist(
12158            &self,
12159            strategiesToRemoveFromWhitelist: alloy::sol_types::private::Vec<
12160                alloy::sol_types::private::Address,
12161            >,
12162        ) -> alloy_contract::SolCallBuilder<
12163            &P,
12164            removeStrategiesFromDepositWhitelistCall,
12165            N,
12166        > {
12167            self.call_builder(
12168                &removeStrategiesFromDepositWhitelistCall {
12169                    strategiesToRemoveFromWhitelist,
12170                },
12171            )
12172        }
12173        ///Creates a new call builder for the [`renounceOwnership`] function.
12174        pub fn renounceOwnership(
12175            &self,
12176        ) -> alloy_contract::SolCallBuilder<&P, renounceOwnershipCall, N> {
12177            self.call_builder(&renounceOwnershipCall)
12178        }
12179        ///Creates a new call builder for the [`setStrategyWhitelister`] function.
12180        pub fn setStrategyWhitelister(
12181            &self,
12182            newStrategyWhitelister: alloy::sol_types::private::Address,
12183        ) -> alloy_contract::SolCallBuilder<&P, setStrategyWhitelisterCall, N> {
12184            self.call_builder(
12185                &setStrategyWhitelisterCall {
12186                    newStrategyWhitelister,
12187                },
12188            )
12189        }
12190        ///Creates a new call builder for the [`stakerDepositShares`] function.
12191        pub fn stakerDepositShares(
12192            &self,
12193            staker: alloy::sol_types::private::Address,
12194            strategy: alloy::sol_types::private::Address,
12195        ) -> alloy_contract::SolCallBuilder<&P, stakerDepositSharesCall, N> {
12196            self.call_builder(
12197                &stakerDepositSharesCall {
12198                    staker,
12199                    strategy,
12200                },
12201            )
12202        }
12203        ///Creates a new call builder for the [`stakerStrategyList`] function.
12204        pub fn stakerStrategyList(
12205            &self,
12206            staker: alloy::sol_types::private::Address,
12207            _1: alloy::sol_types::private::primitives::aliases::U256,
12208        ) -> alloy_contract::SolCallBuilder<&P, stakerStrategyListCall, N> {
12209            self.call_builder(
12210                &stakerStrategyListCall {
12211                    staker,
12212                    _1,
12213                },
12214            )
12215        }
12216        ///Creates a new call builder for the [`stakerStrategyListLength`] function.
12217        pub fn stakerStrategyListLength(
12218            &self,
12219            staker: alloy::sol_types::private::Address,
12220        ) -> alloy_contract::SolCallBuilder<&P, stakerStrategyListLengthCall, N> {
12221            self.call_builder(
12222                &stakerStrategyListLengthCall {
12223                    staker,
12224                },
12225            )
12226        }
12227        ///Creates a new call builder for the [`strategyIsWhitelistedForDeposit`] function.
12228        pub fn strategyIsWhitelistedForDeposit(
12229            &self,
12230            strategy: alloy::sol_types::private::Address,
12231        ) -> alloy_contract::SolCallBuilder<&P, strategyIsWhitelistedForDepositCall, N> {
12232            self.call_builder(
12233                &strategyIsWhitelistedForDepositCall {
12234                    strategy,
12235                },
12236            )
12237        }
12238        ///Creates a new call builder for the [`strategyWhitelister`] function.
12239        pub fn strategyWhitelister(
12240            &self,
12241        ) -> alloy_contract::SolCallBuilder<&P, strategyWhitelisterCall, N> {
12242            self.call_builder(&strategyWhitelisterCall)
12243        }
12244        ///Creates a new call builder for the [`transferOwnership`] function.
12245        pub fn transferOwnership(
12246            &self,
12247            newOwner: alloy::sol_types::private::Address,
12248        ) -> alloy_contract::SolCallBuilder<&P, transferOwnershipCall, N> {
12249            self.call_builder(&transferOwnershipCall { newOwner })
12250        }
12251        ///Creates a new call builder for the [`unpause`] function.
12252        pub fn unpause(
12253            &self,
12254            newPausedStatus: alloy::sol_types::private::primitives::aliases::U256,
12255        ) -> alloy_contract::SolCallBuilder<&P, unpauseCall, N> {
12256            self.call_builder(&unpauseCall { newPausedStatus })
12257        }
12258        ///Creates a new call builder for the [`version`] function.
12259        pub fn version(&self) -> alloy_contract::SolCallBuilder<&P, versionCall, N> {
12260            self.call_builder(&versionCall)
12261        }
12262        ///Creates a new call builder for the [`withdrawSharesAsTokens`] function.
12263        pub fn withdrawSharesAsTokens(
12264            &self,
12265            staker: alloy::sol_types::private::Address,
12266            strategy: alloy::sol_types::private::Address,
12267            token: alloy::sol_types::private::Address,
12268            shares: alloy::sol_types::private::primitives::aliases::U256,
12269        ) -> alloy_contract::SolCallBuilder<&P, withdrawSharesAsTokensCall, N> {
12270            self.call_builder(
12271                &withdrawSharesAsTokensCall {
12272                    staker,
12273                    strategy,
12274                    token,
12275                    shares,
12276                },
12277            )
12278        }
12279    }
12280    /// Event filters.
12281    #[automatically_derived]
12282    impl<
12283        P: alloy_contract::private::Provider<N>,
12284        N: alloy_contract::private::Network,
12285    > StrategyManagerInstance<P, N> {
12286        /// Creates a new event filter using this contract instance's provider and address.
12287        ///
12288        /// Note that the type can be any event, not just those defined in this contract.
12289        /// Prefer using the other methods for building type-safe event filters.
12290        pub fn event_filter<E: alloy_sol_types::SolEvent>(
12291            &self,
12292        ) -> alloy_contract::Event<&P, E, N> {
12293            alloy_contract::Event::new_sol(&self.provider, &self.address)
12294        }
12295        ///Creates a new event filter for the [`BurnableSharesDecreased`] event.
12296        pub fn BurnableSharesDecreased_filter(
12297            &self,
12298        ) -> alloy_contract::Event<&P, BurnableSharesDecreased, N> {
12299            self.event_filter::<BurnableSharesDecreased>()
12300        }
12301        ///Creates a new event filter for the [`BurnableSharesIncreased`] event.
12302        pub fn BurnableSharesIncreased_filter(
12303            &self,
12304        ) -> alloy_contract::Event<&P, BurnableSharesIncreased, N> {
12305            self.event_filter::<BurnableSharesIncreased>()
12306        }
12307        ///Creates a new event filter for the [`Deposit`] event.
12308        pub fn Deposit_filter(&self) -> alloy_contract::Event<&P, Deposit, N> {
12309            self.event_filter::<Deposit>()
12310        }
12311        ///Creates a new event filter for the [`Initialized`] event.
12312        pub fn Initialized_filter(&self) -> alloy_contract::Event<&P, Initialized, N> {
12313            self.event_filter::<Initialized>()
12314        }
12315        ///Creates a new event filter for the [`OwnershipTransferred`] event.
12316        pub fn OwnershipTransferred_filter(
12317            &self,
12318        ) -> alloy_contract::Event<&P, OwnershipTransferred, N> {
12319            self.event_filter::<OwnershipTransferred>()
12320        }
12321        ///Creates a new event filter for the [`Paused`] event.
12322        pub fn Paused_filter(&self) -> alloy_contract::Event<&P, Paused, N> {
12323            self.event_filter::<Paused>()
12324        }
12325        ///Creates a new event filter for the [`StrategyAddedToDepositWhitelist`] event.
12326        pub fn StrategyAddedToDepositWhitelist_filter(
12327            &self,
12328        ) -> alloy_contract::Event<&P, StrategyAddedToDepositWhitelist, N> {
12329            self.event_filter::<StrategyAddedToDepositWhitelist>()
12330        }
12331        ///Creates a new event filter for the [`StrategyRemovedFromDepositWhitelist`] event.
12332        pub fn StrategyRemovedFromDepositWhitelist_filter(
12333            &self,
12334        ) -> alloy_contract::Event<&P, StrategyRemovedFromDepositWhitelist, N> {
12335            self.event_filter::<StrategyRemovedFromDepositWhitelist>()
12336        }
12337        ///Creates a new event filter for the [`StrategyWhitelisterChanged`] event.
12338        pub fn StrategyWhitelisterChanged_filter(
12339            &self,
12340        ) -> alloy_contract::Event<&P, StrategyWhitelisterChanged, N> {
12341            self.event_filter::<StrategyWhitelisterChanged>()
12342        }
12343        ///Creates a new event filter for the [`Unpaused`] event.
12344        pub fn Unpaused_filter(&self) -> alloy_contract::Event<&P, Unpaused, N> {
12345            self.event_filter::<Unpaused>()
12346        }
12347    }
12348}