Skip to main content

eigen_utils/slashing/core/
strategy_manager.rs

1/**
2
3Generated by the following Solidity interface...
4```solidity
5interface StrategyManager {
6    error CurrentlyPaused();
7    error InputAddressZero();
8    error InvalidNewPausedStatus();
9    error InvalidShortString();
10    error InvalidSignature();
11    error MaxStrategiesExceeded();
12    error OnlyDelegationManager();
13    error OnlyPauser();
14    error OnlyStrategyWhitelister();
15    error OnlyUnpauser();
16    error SharesAmountTooHigh();
17    error SharesAmountZero();
18    error SignatureExpired();
19    error StakerAddressZero();
20    error StrategyNotFound();
21    error StrategyNotWhitelisted();
22    error StringTooLong(string str);
23
24    event BurnableSharesDecreased(address strategy, uint256 shares);
25    event BurnableSharesIncreased(address strategy, uint256 shares);
26    event Deposit(address staker, address strategy, uint256 shares);
27    event Initialized(uint8 version);
28    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
29    event Paused(address indexed account, uint256 newPausedStatus);
30    event StrategyAddedToDepositWhitelist(address strategy);
31    event StrategyRemovedFromDepositWhitelist(address strategy);
32    event StrategyWhitelisterChanged(address previousAddress, address newAddress);
33    event Unpaused(address indexed account, uint256 newPausedStatus);
34
35    constructor(address _delegation, address _pauserRegistry, string _version);
36
37    function DEFAULT_BURN_ADDRESS() external view returns (address);
38    function DEPOSIT_TYPEHASH() external view returns (bytes32);
39    function addShares(address staker, address strategy, uint256 shares) external returns (uint256, uint256);
40    function addStrategiesToDepositWhitelist(address[] memory strategiesToWhitelist) external;
41    function burnShares(address strategy) external;
42    function calculateStrategyDepositDigestHash(address staker, address strategy, address token, uint256 amount, uint256 nonce, uint256 expiry) external view returns (bytes32);
43    function delegation() external view returns (address);
44    function depositIntoStrategy(address strategy, address token, uint256 amount) external returns (uint256 depositShares);
45    function depositIntoStrategyWithSignature(address strategy, address token, uint256 amount, address staker, uint256 expiry, bytes memory signature) external returns (uint256 depositShares);
46    function domainSeparator() external view returns (bytes32);
47    function getBurnableShares(address strategy) external view returns (uint256);
48    function getDeposits(address staker) external view returns (address[] memory, uint256[] memory);
49    function getStakerStrategyList(address staker) external view returns (address[] memory);
50    function getStrategiesWithBurnableShares() external view returns (address[] memory, uint256[] memory);
51    function increaseBurnableShares(address strategy, uint256 addedSharesToBurn) external;
52    function initialize(address initialOwner, address initialStrategyWhitelister, uint256 initialPausedStatus) external;
53    function nonces(address signer) external view returns (uint256 nonce);
54    function owner() external view returns (address);
55    function pause(uint256 newPausedStatus) external;
56    function pauseAll() external;
57    function paused(uint8 index) external view returns (bool);
58    function paused() external view returns (uint256);
59    function pauserRegistry() external view returns (address);
60    function removeDepositShares(address staker, address strategy, uint256 depositSharesToRemove) external returns (uint256);
61    function removeStrategiesFromDepositWhitelist(address[] memory strategiesToRemoveFromWhitelist) external;
62    function renounceOwnership() external;
63    function setStrategyWhitelister(address newStrategyWhitelister) external;
64    function stakerDepositShares(address staker, address strategy) external view returns (uint256 shares);
65    function stakerStrategyList(address staker, uint256) external view returns (address strategies);
66    function stakerStrategyListLength(address staker) external view returns (uint256);
67    function strategyIsWhitelistedForDeposit(address strategy) external view returns (bool whitelisted);
68    function strategyWhitelister() external view returns (address);
69    function transferOwnership(address newOwner) external;
70    function unpause(uint256 newPausedStatus) external;
71    function version() external view returns (string memory);
72    function withdrawSharesAsTokens(address staker, address strategy, address token, uint256 shares) external;
73}
74```
75
76...which was generated by the following JSON ABI:
77```json
78[
79  {
80    "type": "constructor",
81    "inputs": [
82      {
83        "name": "_delegation",
84        "type": "address",
85        "internalType": "contract IDelegationManager"
86      },
87      {
88        "name": "_pauserRegistry",
89        "type": "address",
90        "internalType": "contract IPauserRegistry"
91      },
92      {
93        "name": "_version",
94        "type": "string",
95        "internalType": "string"
96      }
97    ],
98    "stateMutability": "nonpayable"
99  },
100  {
101    "type": "function",
102    "name": "DEFAULT_BURN_ADDRESS",
103    "inputs": [],
104    "outputs": [
105      {
106        "name": "",
107        "type": "address",
108        "internalType": "address"
109      }
110    ],
111    "stateMutability": "view"
112  },
113  {
114    "type": "function",
115    "name": "DEPOSIT_TYPEHASH",
116    "inputs": [],
117    "outputs": [
118      {
119        "name": "",
120        "type": "bytes32",
121        "internalType": "bytes32"
122      }
123    ],
124    "stateMutability": "view"
125  },
126  {
127    "type": "function",
128    "name": "addShares",
129    "inputs": [
130      {
131        "name": "staker",
132        "type": "address",
133        "internalType": "address"
134      },
135      {
136        "name": "strategy",
137        "type": "address",
138        "internalType": "contract IStrategy"
139      },
140      {
141        "name": "shares",
142        "type": "uint256",
143        "internalType": "uint256"
144      }
145    ],
146    "outputs": [
147      {
148        "name": "",
149        "type": "uint256",
150        "internalType": "uint256"
151      },
152      {
153        "name": "",
154        "type": "uint256",
155        "internalType": "uint256"
156      }
157    ],
158    "stateMutability": "nonpayable"
159  },
160  {
161    "type": "function",
162    "name": "addStrategiesToDepositWhitelist",
163    "inputs": [
164      {
165        "name": "strategiesToWhitelist",
166        "type": "address[]",
167        "internalType": "contract IStrategy[]"
168      }
169    ],
170    "outputs": [],
171    "stateMutability": "nonpayable"
172  },
173  {
174    "type": "function",
175    "name": "burnShares",
176    "inputs": [
177      {
178        "name": "strategy",
179        "type": "address",
180        "internalType": "contract IStrategy"
181      }
182    ],
183    "outputs": [],
184    "stateMutability": "nonpayable"
185  },
186  {
187    "type": "function",
188    "name": "calculateStrategyDepositDigestHash",
189    "inputs": [
190      {
191        "name": "staker",
192        "type": "address",
193        "internalType": "address"
194      },
195      {
196        "name": "strategy",
197        "type": "address",
198        "internalType": "contract IStrategy"
199      },
200      {
201        "name": "token",
202        "type": "address",
203        "internalType": "contract IERC20"
204      },
205      {
206        "name": "amount",
207        "type": "uint256",
208        "internalType": "uint256"
209      },
210      {
211        "name": "nonce",
212        "type": "uint256",
213        "internalType": "uint256"
214      },
215      {
216        "name": "expiry",
217        "type": "uint256",
218        "internalType": "uint256"
219      }
220    ],
221    "outputs": [
222      {
223        "name": "",
224        "type": "bytes32",
225        "internalType": "bytes32"
226      }
227    ],
228    "stateMutability": "view"
229  },
230  {
231    "type": "function",
232    "name": "delegation",
233    "inputs": [],
234    "outputs": [
235      {
236        "name": "",
237        "type": "address",
238        "internalType": "contract IDelegationManager"
239      }
240    ],
241    "stateMutability": "view"
242  },
243  {
244    "type": "function",
245    "name": "depositIntoStrategy",
246    "inputs": [
247      {
248        "name": "strategy",
249        "type": "address",
250        "internalType": "contract IStrategy"
251      },
252      {
253        "name": "token",
254        "type": "address",
255        "internalType": "contract IERC20"
256      },
257      {
258        "name": "amount",
259        "type": "uint256",
260        "internalType": "uint256"
261      }
262    ],
263    "outputs": [
264      {
265        "name": "depositShares",
266        "type": "uint256",
267        "internalType": "uint256"
268      }
269    ],
270    "stateMutability": "nonpayable"
271  },
272  {
273    "type": "function",
274    "name": "depositIntoStrategyWithSignature",
275    "inputs": [
276      {
277        "name": "strategy",
278        "type": "address",
279        "internalType": "contract IStrategy"
280      },
281      {
282        "name": "token",
283        "type": "address",
284        "internalType": "contract IERC20"
285      },
286      {
287        "name": "amount",
288        "type": "uint256",
289        "internalType": "uint256"
290      },
291      {
292        "name": "staker",
293        "type": "address",
294        "internalType": "address"
295      },
296      {
297        "name": "expiry",
298        "type": "uint256",
299        "internalType": "uint256"
300      },
301      {
302        "name": "signature",
303        "type": "bytes",
304        "internalType": "bytes"
305      }
306    ],
307    "outputs": [
308      {
309        "name": "depositShares",
310        "type": "uint256",
311        "internalType": "uint256"
312      }
313    ],
314    "stateMutability": "nonpayable"
315  },
316  {
317    "type": "function",
318    "name": "domainSeparator",
319    "inputs": [],
320    "outputs": [
321      {
322        "name": "",
323        "type": "bytes32",
324        "internalType": "bytes32"
325      }
326    ],
327    "stateMutability": "view"
328  },
329  {
330    "type": "function",
331    "name": "getBurnableShares",
332    "inputs": [
333      {
334        "name": "strategy",
335        "type": "address",
336        "internalType": "contract IStrategy"
337      }
338    ],
339    "outputs": [
340      {
341        "name": "",
342        "type": "uint256",
343        "internalType": "uint256"
344      }
345    ],
346    "stateMutability": "view"
347  },
348  {
349    "type": "function",
350    "name": "getDeposits",
351    "inputs": [
352      {
353        "name": "staker",
354        "type": "address",
355        "internalType": "address"
356      }
357    ],
358    "outputs": [
359      {
360        "name": "",
361        "type": "address[]",
362        "internalType": "contract IStrategy[]"
363      },
364      {
365        "name": "",
366        "type": "uint256[]",
367        "internalType": "uint256[]"
368      }
369    ],
370    "stateMutability": "view"
371  },
372  {
373    "type": "function",
374    "name": "getStakerStrategyList",
375    "inputs": [
376      {
377        "name": "staker",
378        "type": "address",
379        "internalType": "address"
380      }
381    ],
382    "outputs": [
383      {
384        "name": "",
385        "type": "address[]",
386        "internalType": "contract IStrategy[]"
387      }
388    ],
389    "stateMutability": "view"
390  },
391  {
392    "type": "function",
393    "name": "getStrategiesWithBurnableShares",
394    "inputs": [],
395    "outputs": [
396      {
397        "name": "",
398        "type": "address[]",
399        "internalType": "address[]"
400      },
401      {
402        "name": "",
403        "type": "uint256[]",
404        "internalType": "uint256[]"
405      }
406    ],
407    "stateMutability": "view"
408  },
409  {
410    "type": "function",
411    "name": "increaseBurnableShares",
412    "inputs": [
413      {
414        "name": "strategy",
415        "type": "address",
416        "internalType": "contract IStrategy"
417      },
418      {
419        "name": "addedSharesToBurn",
420        "type": "uint256",
421        "internalType": "uint256"
422      }
423    ],
424    "outputs": [],
425    "stateMutability": "nonpayable"
426  },
427  {
428    "type": "function",
429    "name": "initialize",
430    "inputs": [
431      {
432        "name": "initialOwner",
433        "type": "address",
434        "internalType": "address"
435      },
436      {
437        "name": "initialStrategyWhitelister",
438        "type": "address",
439        "internalType": "address"
440      },
441      {
442        "name": "initialPausedStatus",
443        "type": "uint256",
444        "internalType": "uint256"
445      }
446    ],
447    "outputs": [],
448    "stateMutability": "nonpayable"
449  },
450  {
451    "type": "function",
452    "name": "nonces",
453    "inputs": [
454      {
455        "name": "signer",
456        "type": "address",
457        "internalType": "address"
458      }
459    ],
460    "outputs": [
461      {
462        "name": "nonce",
463        "type": "uint256",
464        "internalType": "uint256"
465      }
466    ],
467    "stateMutability": "view"
468  },
469  {
470    "type": "function",
471    "name": "owner",
472    "inputs": [],
473    "outputs": [
474      {
475        "name": "",
476        "type": "address",
477        "internalType": "address"
478      }
479    ],
480    "stateMutability": "view"
481  },
482  {
483    "type": "function",
484    "name": "pause",
485    "inputs": [
486      {
487        "name": "newPausedStatus",
488        "type": "uint256",
489        "internalType": "uint256"
490      }
491    ],
492    "outputs": [],
493    "stateMutability": "nonpayable"
494  },
495  {
496    "type": "function",
497    "name": "pauseAll",
498    "inputs": [],
499    "outputs": [],
500    "stateMutability": "nonpayable"
501  },
502  {
503    "type": "function",
504    "name": "paused",
505    "inputs": [
506      {
507        "name": "index",
508        "type": "uint8",
509        "internalType": "uint8"
510      }
511    ],
512    "outputs": [
513      {
514        "name": "",
515        "type": "bool",
516        "internalType": "bool"
517      }
518    ],
519    "stateMutability": "view"
520  },
521  {
522    "type": "function",
523    "name": "paused",
524    "inputs": [],
525    "outputs": [
526      {
527        "name": "",
528        "type": "uint256",
529        "internalType": "uint256"
530      }
531    ],
532    "stateMutability": "view"
533  },
534  {
535    "type": "function",
536    "name": "pauserRegistry",
537    "inputs": [],
538    "outputs": [
539      {
540        "name": "",
541        "type": "address",
542        "internalType": "contract IPauserRegistry"
543      }
544    ],
545    "stateMutability": "view"
546  },
547  {
548    "type": "function",
549    "name": "removeDepositShares",
550    "inputs": [
551      {
552        "name": "staker",
553        "type": "address",
554        "internalType": "address"
555      },
556      {
557        "name": "strategy",
558        "type": "address",
559        "internalType": "contract IStrategy"
560      },
561      {
562        "name": "depositSharesToRemove",
563        "type": "uint256",
564        "internalType": "uint256"
565      }
566    ],
567    "outputs": [
568      {
569        "name": "",
570        "type": "uint256",
571        "internalType": "uint256"
572      }
573    ],
574    "stateMutability": "nonpayable"
575  },
576  {
577    "type": "function",
578    "name": "removeStrategiesFromDepositWhitelist",
579    "inputs": [
580      {
581        "name": "strategiesToRemoveFromWhitelist",
582        "type": "address[]",
583        "internalType": "contract IStrategy[]"
584      }
585    ],
586    "outputs": [],
587    "stateMutability": "nonpayable"
588  },
589  {
590    "type": "function",
591    "name": "renounceOwnership",
592    "inputs": [],
593    "outputs": [],
594    "stateMutability": "nonpayable"
595  },
596  {
597    "type": "function",
598    "name": "setStrategyWhitelister",
599    "inputs": [
600      {
601        "name": "newStrategyWhitelister",
602        "type": "address",
603        "internalType": "address"
604      }
605    ],
606    "outputs": [],
607    "stateMutability": "nonpayable"
608  },
609  {
610    "type": "function",
611    "name": "stakerDepositShares",
612    "inputs": [
613      {
614        "name": "staker",
615        "type": "address",
616        "internalType": "address"
617      },
618      {
619        "name": "strategy",
620        "type": "address",
621        "internalType": "contract IStrategy"
622      }
623    ],
624    "outputs": [
625      {
626        "name": "shares",
627        "type": "uint256",
628        "internalType": "uint256"
629      }
630    ],
631    "stateMutability": "view"
632  },
633  {
634    "type": "function",
635    "name": "stakerStrategyList",
636    "inputs": [
637      {
638        "name": "staker",
639        "type": "address",
640        "internalType": "address"
641      },
642      {
643        "name": "",
644        "type": "uint256",
645        "internalType": "uint256"
646      }
647    ],
648    "outputs": [
649      {
650        "name": "strategies",
651        "type": "address",
652        "internalType": "contract IStrategy"
653      }
654    ],
655    "stateMutability": "view"
656  },
657  {
658    "type": "function",
659    "name": "stakerStrategyListLength",
660    "inputs": [
661      {
662        "name": "staker",
663        "type": "address",
664        "internalType": "address"
665      }
666    ],
667    "outputs": [
668      {
669        "name": "",
670        "type": "uint256",
671        "internalType": "uint256"
672      }
673    ],
674    "stateMutability": "view"
675  },
676  {
677    "type": "function",
678    "name": "strategyIsWhitelistedForDeposit",
679    "inputs": [
680      {
681        "name": "strategy",
682        "type": "address",
683        "internalType": "contract IStrategy"
684      }
685    ],
686    "outputs": [
687      {
688        "name": "whitelisted",
689        "type": "bool",
690        "internalType": "bool"
691      }
692    ],
693    "stateMutability": "view"
694  },
695  {
696    "type": "function",
697    "name": "strategyWhitelister",
698    "inputs": [],
699    "outputs": [
700      {
701        "name": "",
702        "type": "address",
703        "internalType": "address"
704      }
705    ],
706    "stateMutability": "view"
707  },
708  {
709    "type": "function",
710    "name": "transferOwnership",
711    "inputs": [
712      {
713        "name": "newOwner",
714        "type": "address",
715        "internalType": "address"
716      }
717    ],
718    "outputs": [],
719    "stateMutability": "nonpayable"
720  },
721  {
722    "type": "function",
723    "name": "unpause",
724    "inputs": [
725      {
726        "name": "newPausedStatus",
727        "type": "uint256",
728        "internalType": "uint256"
729      }
730    ],
731    "outputs": [],
732    "stateMutability": "nonpayable"
733  },
734  {
735    "type": "function",
736    "name": "version",
737    "inputs": [],
738    "outputs": [
739      {
740        "name": "",
741        "type": "string",
742        "internalType": "string"
743      }
744    ],
745    "stateMutability": "view"
746  },
747  {
748    "type": "function",
749    "name": "withdrawSharesAsTokens",
750    "inputs": [
751      {
752        "name": "staker",
753        "type": "address",
754        "internalType": "address"
755      },
756      {
757        "name": "strategy",
758        "type": "address",
759        "internalType": "contract IStrategy"
760      },
761      {
762        "name": "token",
763        "type": "address",
764        "internalType": "contract IERC20"
765      },
766      {
767        "name": "shares",
768        "type": "uint256",
769        "internalType": "uint256"
770      }
771    ],
772    "outputs": [],
773    "stateMutability": "nonpayable"
774  },
775  {
776    "type": "event",
777    "name": "BurnableSharesDecreased",
778    "inputs": [
779      {
780        "name": "strategy",
781        "type": "address",
782        "indexed": false,
783        "internalType": "contract IStrategy"
784      },
785      {
786        "name": "shares",
787        "type": "uint256",
788        "indexed": false,
789        "internalType": "uint256"
790      }
791    ],
792    "anonymous": false
793  },
794  {
795    "type": "event",
796    "name": "BurnableSharesIncreased",
797    "inputs": [
798      {
799        "name": "strategy",
800        "type": "address",
801        "indexed": false,
802        "internalType": "contract IStrategy"
803      },
804      {
805        "name": "shares",
806        "type": "uint256",
807        "indexed": false,
808        "internalType": "uint256"
809      }
810    ],
811    "anonymous": false
812  },
813  {
814    "type": "event",
815    "name": "Deposit",
816    "inputs": [
817      {
818        "name": "staker",
819        "type": "address",
820        "indexed": false,
821        "internalType": "address"
822      },
823      {
824        "name": "strategy",
825        "type": "address",
826        "indexed": false,
827        "internalType": "contract IStrategy"
828      },
829      {
830        "name": "shares",
831        "type": "uint256",
832        "indexed": false,
833        "internalType": "uint256"
834      }
835    ],
836    "anonymous": false
837  },
838  {
839    "type": "event",
840    "name": "Initialized",
841    "inputs": [
842      {
843        "name": "version",
844        "type": "uint8",
845        "indexed": false,
846        "internalType": "uint8"
847      }
848    ],
849    "anonymous": false
850  },
851  {
852    "type": "event",
853    "name": "OwnershipTransferred",
854    "inputs": [
855      {
856        "name": "previousOwner",
857        "type": "address",
858        "indexed": true,
859        "internalType": "address"
860      },
861      {
862        "name": "newOwner",
863        "type": "address",
864        "indexed": true,
865        "internalType": "address"
866      }
867    ],
868    "anonymous": false
869  },
870  {
871    "type": "event",
872    "name": "Paused",
873    "inputs": [
874      {
875        "name": "account",
876        "type": "address",
877        "indexed": true,
878        "internalType": "address"
879      },
880      {
881        "name": "newPausedStatus",
882        "type": "uint256",
883        "indexed": false,
884        "internalType": "uint256"
885      }
886    ],
887    "anonymous": false
888  },
889  {
890    "type": "event",
891    "name": "StrategyAddedToDepositWhitelist",
892    "inputs": [
893      {
894        "name": "strategy",
895        "type": "address",
896        "indexed": false,
897        "internalType": "contract IStrategy"
898      }
899    ],
900    "anonymous": false
901  },
902  {
903    "type": "event",
904    "name": "StrategyRemovedFromDepositWhitelist",
905    "inputs": [
906      {
907        "name": "strategy",
908        "type": "address",
909        "indexed": false,
910        "internalType": "contract IStrategy"
911      }
912    ],
913    "anonymous": false
914  },
915  {
916    "type": "event",
917    "name": "StrategyWhitelisterChanged",
918    "inputs": [
919      {
920        "name": "previousAddress",
921        "type": "address",
922        "indexed": false,
923        "internalType": "address"
924      },
925      {
926        "name": "newAddress",
927        "type": "address",
928        "indexed": false,
929        "internalType": "address"
930      }
931    ],
932    "anonymous": false
933  },
934  {
935    "type": "event",
936    "name": "Unpaused",
937    "inputs": [
938      {
939        "name": "account",
940        "type": "address",
941        "indexed": true,
942        "internalType": "address"
943      },
944      {
945        "name": "newPausedStatus",
946        "type": "uint256",
947        "indexed": false,
948        "internalType": "uint256"
949      }
950    ],
951    "anonymous": false
952  },
953  {
954    "type": "error",
955    "name": "CurrentlyPaused",
956    "inputs": []
957  },
958  {
959    "type": "error",
960    "name": "InputAddressZero",
961    "inputs": []
962  },
963  {
964    "type": "error",
965    "name": "InvalidNewPausedStatus",
966    "inputs": []
967  },
968  {
969    "type": "error",
970    "name": "InvalidShortString",
971    "inputs": []
972  },
973  {
974    "type": "error",
975    "name": "InvalidSignature",
976    "inputs": []
977  },
978  {
979    "type": "error",
980    "name": "MaxStrategiesExceeded",
981    "inputs": []
982  },
983  {
984    "type": "error",
985    "name": "OnlyDelegationManager",
986    "inputs": []
987  },
988  {
989    "type": "error",
990    "name": "OnlyPauser",
991    "inputs": []
992  },
993  {
994    "type": "error",
995    "name": "OnlyStrategyWhitelister",
996    "inputs": []
997  },
998  {
999    "type": "error",
1000    "name": "OnlyUnpauser",
1001    "inputs": []
1002  },
1003  {
1004    "type": "error",
1005    "name": "SharesAmountTooHigh",
1006    "inputs": []
1007  },
1008  {
1009    "type": "error",
1010    "name": "SharesAmountZero",
1011    "inputs": []
1012  },
1013  {
1014    "type": "error",
1015    "name": "SignatureExpired",
1016    "inputs": []
1017  },
1018  {
1019    "type": "error",
1020    "name": "StakerAddressZero",
1021    "inputs": []
1022  },
1023  {
1024    "type": "error",
1025    "name": "StrategyNotFound",
1026    "inputs": []
1027  },
1028  {
1029    "type": "error",
1030    "name": "StrategyNotWhitelisted",
1031    "inputs": []
1032  },
1033  {
1034    "type": "error",
1035    "name": "StringTooLong",
1036    "inputs": [
1037      {
1038        "name": "str",
1039        "type": "string",
1040        "internalType": "string"
1041      }
1042    ]
1043  }
1044]
1045```*/
1046#[allow(
1047    non_camel_case_types,
1048    non_snake_case,
1049    clippy::pub_underscore_fields,
1050    clippy::style,
1051    clippy::empty_structs_with_brackets
1052)]
1053pub mod StrategyManager {
1054    use super::*;
1055    use alloy::sol_types as alloy_sol_types;
1056    /// The creation / init bytecode of the contract.
1057    ///
1058    /// ```text
1059    ///0x60e060405234801561000f575f5ffd5b50604051612ef9380380612ef983398101604081905261002e916101b3565b808084846001600160a01b038116610059576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b039081166080521660a0526100748161008a565b60c0525061008290506100d0565b5050506102e4565b5f5f829050601f815111156100bd578260405163305a27a960e01b81526004016100b49190610289565b60405180910390fd5b80516100c8826102be565b179392505050565b5f54610100900460ff16156101375760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100b4565b5f5460ff90811614610186575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461019c575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156101c5575f5ffd5b83516101d081610188565b60208501519093506101e181610188565b60408501519092506001600160401b038111156101fc575f5ffd5b8401601f8101861361020c575f5ffd5b80516001600160401b038111156102255761022561019f565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102535761025361019f565b60405281815282820160200188101561026a575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102de575f198160200360031b1b821691505b50919050565b60805160a05160c051612bac61034d5f395f8181610bb90152611c8101525f81816104e70152818161079701528181610b4b01528181610e010152818161128d015261189d01525f81816103bc015281816105a601528181610bf701526114c90152612bac5ff3fe608060405234801561000f575f5ffd5b5060043610610213575f3560e01c80638b8aac3c1161011f578063debe1eab116100a9578063f3b4a00011610079578063f3b4a0001461052f578063f698da2514610539578063fabc1cbc14610541578063fd98042314610554578063fe243a1714610567575f5ffd5b8063debe1eab146104cf578063df5cf723146104e2578063e7a050aa14610509578063f2fde38b1461051c575f5ffd5b80639ac01d61116100ef5780639ac01d6114610463578063b5d8b5b814610476578063c665670214610489578063cbc2bd621461049c578063de44acb6146104af575f5ffd5b80638b8aac3c146103f65780638da5cb5b1461041e57806394f649dd1461042f578063967fc0d214610450575f5ffd5b8063595c6a67116101a0578063663c1de411610170578063663c1de41461035b578063715018a61461037d578063724af423146103855780637ecebe0014610398578063886f1195146103b7575f5ffd5b8063595c6a67146103055780635ac86ab71461030d5780635c975abb146103405780635de08ff214610348575f5ffd5b806336a8c500116101e657806336a8c5001461027857806348825e941461028e5780634b6d5d6e146102b557806350ff7225146102c857806354fd4d50146102f0575f5ffd5b8063136439dd146102175780631794bb3c1461022c5780632eae418c1461023f57806332e89ace14610252575b5f5ffd5b61022a6102253660046125e1565b610591565b005b61022a61023a36600461260c565b610666565b61022a61024d36600461264a565b61078c565b6102656102603660046126ac565b610844565b6040519081526020015b60405180910390f35b6102806108e8565b60405161026f9291906127e1565b6102657f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61022a6102c3366004612837565b610a05565b6102db6102d636600461260c565b610b3e565b6040805192835260208301919091520161026f565b6102f8610bb2565b60405161026f9190612880565b61022a610be2565b61033061031b366004612892565b609854600160ff9092169190911b9081161490565b604051901515815260200161026f565b609854610265565b61022a6103563660046128b2565b610c91565b610330610369366004612837565b60d16020525f908152604090205460ff1681565b61022a610de4565b61026561039336600461260c565b610df5565b6102656103a6366004612837565b60ca6020525f908152604090205481565b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161026f565b610265610404366004612837565b6001600160a01b03165f90815260ce602052604090205490565b6033546001600160a01b03166103de565b61044261043d366004612837565b610e68565b60405161026f92919061295c565b60cb546103de906001600160a01b031681565b610265610471366004612989565b610fe0565b61022a6104843660046128b2565b611071565b61022a610497366004612837565b6111b8565b6103de6104aa3660046129ea565b6111db565b6104c26104bd366004612837565b61120f565b60405161026f9190612a14565b61022a6104dd3660046129ea565b611282565b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b61026561051736600461260c565b611346565b61022a61052a366004612837565b611398565b6103de620e16e481565b61026561140e565b61022a61054f3660046125e1565b6114c7565b610265610562366004612837565b6115dd565b610265610575366004612a26565b60cd60209081525f928352604080842090915290825290205481565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156105f3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106179190612a5d565b61063457604051631d77d47760e21b815260040160405180910390fd5b60985481811681146106595760405163c61dca5d60e01b815260040160405180910390fd5b610662826115f2565b5050565b5f54610100900460ff161580801561068457505f54600160ff909116105b8061069d5750303b15801561069d57505f5460ff166001145b6107055760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610726575f805461ff0019166101001790555b61072f826115f2565b6107388461162f565b61074183611680565b8015610786575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107d55760405163f739589b60e01b815260040160405180910390fd5b6107dd6116e9565b604051636ce5768960e11b81526001600160a01b0384169063d9caed129061080d90879086908690600401612a7c565b5f604051808303815f87803b158015610824575f5ffd5b505af1158015610836573d5f5f3e3d5ffd5b505050506107866001606555565b6098545f90819060019081160361086e5760405163840a48d560e01b815260040160405180910390fd5b6108766116e9565b6001600160a01b0385165f90815260ca60205260409020546108a7866108a0818c8c8c878c610fe0565b8688611742565b6001600160a01b0386165f90815260ca602052604090206001820190556108d0868a8a8a611794565b9250506108dd6001606555565b509695505050505050565b6060805f6108f660d4611901565b90505f8167ffffffffffffffff81111561091257610912612698565b60405190808252806020026020018201604052801561093b578160200160208202803683370190505b5090505f8267ffffffffffffffff81111561095857610958612698565b604051908082528060200260200182016040528015610981578160200160208202803683370190505b5090505f5b838110156109fa575f5f61099b60d484611911565b91509150818584815181106109b2576109b2612aa0565b60200260200101906001600160a01b031690816001600160a01b031681525050808484815181106109e5576109e5612aa0565b60209081029190910101525050600101610986565b509094909350915050565b610a0d6116e9565b5f610a1960d48361192e565b915050610a2760d483611945565b50604080516001600160a01b0384168152602081018390527fd9d082c3ec4f3a3ffa55c324939a06407f5fbcb87d5e0ce3b9508c92c84ed839910160405180910390a18015610b3057816001600160a01b031663d9caed12620e16e4846001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa158015610abf573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae39190612ab4565b846040518463ffffffff1660e01b8152600401610b0293929190612a7c565b5f604051808303815f87803b158015610b19575f5ffd5b505af1158015610b2b573d5f5f3e3d5ffd5b505050505b50610b3b6001606555565b50565b5f80336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b895760405163f739589b60e01b815260040160405180910390fd5b610b916116e9565b610b9c858585611959565b91509150610baa6001606555565b935093915050565b6060610bdd7f0000000000000000000000000000000000000000000000000000000000000000611ac1565b905090565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610c44573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c689190612a5d565b610c8557604051631d77d47760e21b815260040160405180910390fd5b610c8f5f196115f2565b565b60cb546001600160a01b03163314610cbc576040516320ba3ff960e21b815260040160405180910390fd5b610cc46116e9565b805f5b81811015610dd85760d15f858584818110610ce457610ce4612aa0565b9050602002016020810190610cf99190612837565b6001600160a01b0316815260208101919091526040015f205460ff16610dd057600160d15f868685818110610d3057610d30612aa0565b9050602002016020810190610d459190612837565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe848483818110610d9f57610d9f612aa0565b9050602002016020810190610db49190612837565b6040516001600160a01b03909116815260200160405180910390a15b600101610cc7565b50506106626001606555565b610dec611afe565b610c8f5f61162f565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610e3f5760405163f739589b60e01b815260040160405180910390fd5b610e476116e9565b5f610e53858585611b58565b92505050610e616001606555565b9392505050565b6001600160a01b0381165f90815260ce60205260408120546060918291908167ffffffffffffffff811115610e9f57610e9f612698565b604051908082528060200260200182016040528015610ec8578160200160208202803683370190505b5090505f5b82811015610f56576001600160a01b0386165f90815260cd6020908152604080832060ce9092528220805491929184908110610f0b57610f0b612aa0565b5f9182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610f4357610f43612aa0565b6020908102919091010152600101610ecd565b5060ce5f866001600160a01b03166001600160a01b031681526020019081526020015f208181805480602002602001604051908101604052809291908181526020018280548015610fce57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610fb0575b50505050509150935093505050915091565b604080517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922460208201526001600160a01b03808916928201929092528187166060820152908516608082015260a0810184905260c0810183905260e081018290525f90611066906101000160405160208183030381529060405280519060200120611c1e565b979650505050505050565b60cb546001600160a01b0316331461109c576040516320ba3ff960e21b815260040160405180910390fd5b6110a46116e9565b805f5b81811015610dd85760d15f8585848181106110c4576110c4612aa0565b90506020020160208101906110d99190612837565b6001600160a01b0316815260208101919091526040015f205460ff16156111b0575f60d15f86868581811061111057611110612aa0565b90506020020160208101906111259190612837565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba03084848381811061117f5761117f612aa0565b90506020020160208101906111949190612837565b6040516001600160a01b03909116815260200160405180910390a15b6001016110a7565b6111c0611afe565b6111c86116e9565b6111d181611680565b610b3b6001606555565b60ce602052815f5260405f2081815481106111f4575f80fd5b5f918252602090912001546001600160a01b03169150829050565b6001600160a01b0381165f90815260ce602090815260409182902080548351818402810184019094528084526060939283018282801561127657602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611258575b50505050509050919050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146112cb5760405163f739589b60e01b815260040160405180910390fd5b6112d36116e9565b5f6112df60d48461192e565b91506112f8905060d4846112f38585612ae3565b611c64565b50604080516001600160a01b0385168152602081018490527fca3e02a4ab7ad3c47a8e36e5a624c30170791726ab720f1babfef21046d953ff910160405180910390a1506106626001606555565b6098545f9081906001908116036113705760405163840a48d560e01b815260040160405180910390fd5b6113786116e9565b61138433868686611794565b91506113906001606555565b509392505050565b6113a0611afe565b6001600160a01b0381166114055760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106fc565b610b3b8161162f565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea61147b611c79565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611523573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115479190612ab4565b6001600160a01b0316336001600160a01b0316146115785760405163794821ff60e01b815260040160405180910390fd5b6098548019821981161461159f5760405163c61dca5d60e01b815260040160405180910390fd5b609882905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f5f6115ea60d48461192e565b949350505050565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b60026065540361173b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106fc565b6002606555565b4281101561176357604051630819bdcd60e01b815260040160405180910390fd5b6117776001600160a01b0385168484611d15565b61078657604051638baa579f60e01b815260040160405180910390fd5b6001600160a01b0383165f90815260d16020526040812054849060ff166117ce57604051632efd965160e11b815260040160405180910390fd5b6117e36001600160a01b038516338786611d73565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303815f875af115801561182f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118539190612af6565b91505f5f611862888886611959565b604051631e328e7960e11b81526001600160a01b038b811660048301528a8116602483015260448201849052606482018390529294509092507f000000000000000000000000000000000000000000000000000000000000000090911690633c651cf2906084015f604051808303815f87803b1580156118e0575f5ffd5b505af11580156118f2573d5f5f3e3d5ffd5b50505050505050949350505050565b5f61190b82611dcb565b92915050565b5f80808061191f8686611dd5565b909450925050505b9250929050565b5f80808061191f866001600160a01b038716611dfe565b5f610e61836001600160a01b038416611e36565b5f806001600160a01b038516611982576040516316f2ccc960e01b815260040160405180910390fd5b825f036119a2576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038086165f90815260cd6020908152604080832093881683529290529081205490819003611a48576001600160a01b0386165f90815260ce602090815260409091205410611a0a576040516301a1443960e31b815260040160405180910390fd5b6001600160a01b038681165f90815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169187169190911790555b611a528482612ae3565b6001600160a01b038088165f90815260cd60209081526040808320938a16835292905281902091909155517f5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f6290611aae90889088908890612a7c565b60405180910390a1959294509192505050565b60605f611acd83611e52565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6033546001600160a01b03163314610c8f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106fc565b5f5f825f03611b7a576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038086165f90815260cd602090815260408083209388168352929052205480841115611bc057604051634b18b19360e01b815260040160405180910390fd5b611bca8482612b0d565b6001600160a01b038088165f90815260cd60209081526040808320938a168352929052908120829055909150819003611c1257611c078686611e79565b600192509050610baa565b5f969095509350505050565b5f611c2761140e565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b5f6115ea846001600160a01b03851684611ff7565b60605f611ca57f0000000000000000000000000000000000000000000000000000000000000000611ac1565b9050805f81518110611cb957611cb9612aa0565b602001015160f81c60f81b81600181518110611cd757611cd7612aa0565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b5f5f5f611d228585612013565b90925090505f816004811115611d3a57611d3a612b20565b148015611d585750856001600160a01b0316826001600160a01b0316145b80611d695750611d69868686612052565b9695505050505050565b610786846323b872dd60e01b858585604051602401611d9493929190612a7c565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612139565b5f61190b82612211565b5f8080611de2858561221a565b5f81815260029690960160205260409095205494959350505050565b5f818152600283016020526040812054819080611e2b57611e1f8585612225565b92505f91506119279050565b600192509050611927565b5f8181526002830160205260408120819055610e618383612230565b5f60ff8216601f81111561190b57604051632cd44ac360e21b815260040160405180910390fd5b6001600160a01b0382165f90815260ce6020526040812054905b81811015611f8b576001600160a01b038481165f90815260ce6020526040902080549185169183908110611ec957611ec9612aa0565b5f918252602090912001546001600160a01b031603611f83576001600160a01b0384165f90815260ce602052604090208054611f0790600190612b0d565b81548110611f1757611f17612aa0565b5f9182526020808320909101546001600160a01b03878116845260ce9092526040909220805491909216919083908110611f5357611f53612aa0565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550611f8b565b600101611e93565b818103611fab57604051632df15a4160e11b815260040160405180910390fd5b6001600160a01b0384165f90815260ce60205260409020805480611fd157611fd1612b34565b5f8281526020902081015f1990810180546001600160a01b031916905501905550505050565b5f82815260028401602052604081208290556115ea848461223b565b5f5f8251604103612047576020830151604084015160608501515f1a61203b87828585612246565b94509450505050611927565b505f90506002611927565b5f5f5f856001600160a01b0316631626ba7e60e01b868660405160240161207a929190612b48565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516120b89190612b60565b5f60405180830381855afa9150503d805f81146120f0576040519150601f19603f3d011682016040523d82523d5f602084013e6120f5565b606091505b509150915081801561210957506020815110155b8015611d6957508051630b135d3f60e11b9061212e9083016020908101908401612af6565b149695505050505050565b5f61218d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166123039092919063ffffffff16565b905080515f14806121ad5750808060200190518101906121ad9190612a5d565b61220c5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106fc565b505050565b5f61190b825490565b5f610e618383612311565b5f610e618383612337565b5f610e61838361234e565b5f610e618383612431565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561227b57505f905060036122fa565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156122cc573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b0381166122f4575f600192509250506122fa565b91505f90505b94509492505050565b60606115ea84845f8561247d565b5f825f01828154811061232657612326612aa0565b905f5260205f200154905092915050565b5f8181526001830160205260408120541515610e61565b5f8181526001830160205260408120548015612428575f612370600183612b0d565b85549091505f9061238390600190612b0d565b90508181146123e2575f865f0182815481106123a1576123a1612aa0565b905f5260205f200154905080875f0184815481106123c1576123c1612aa0565b5f918252602080832090910192909255918252600188019052604090208390555b85548690806123f3576123f3612b34565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061190b565b5f91505061190b565b5f81815260018301602052604081205461247657508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561190b565b505f61190b565b6060824710156124de5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106fc565b5f5f866001600160a01b031685876040516124f99190612b60565b5f6040518083038185875af1925050503d805f8114612533576040519150601f19603f3d011682016040523d82523d5f602084013e612538565b606091505b509150915061106687838387606083156125b25782515f036125ab576001600160a01b0385163b6125ab5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106fc565b50816115ea565b6115ea83838151156125c75781518083602001fd5b8060405162461bcd60e51b81526004016106fc9190612880565b5f602082840312156125f1575f5ffd5b5035919050565b6001600160a01b0381168114610b3b575f5ffd5b5f5f5f6060848603121561261e575f5ffd5b8335612629816125f8565b92506020840135612639816125f8565b929592945050506040919091013590565b5f5f5f5f6080858703121561265d575f5ffd5b8435612668816125f8565b93506020850135612678816125f8565b92506040850135612688816125f8565b9396929550929360600135925050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f5f60c087890312156126c1575f5ffd5b86356126cc816125f8565b955060208701356126dc816125f8565b94506040870135935060608701356126f3816125f8565b92506080870135915060a087013567ffffffffffffffff811115612715575f5ffd5b8701601f81018913612725575f5ffd5b803567ffffffffffffffff81111561273f5761273f612698565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561276e5761276e612698565b6040528181528282016020018b1015612785575f5ffd5b816020840160208301375f602083830101528093505050509295509295509295565b5f8151808452602084019350602083015f5b828110156127d75781518652602095860195909101906001016127b9565b5093949350505050565b604080825283519082018190525f9060208501906060840190835b818110156128235783516001600160a01b03168352602093840193909201916001016127fc565b50508381036020850152611d6981866127a7565b5f60208284031215612847575f5ffd5b8135610e61816125f8565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610e616020830184612852565b5f602082840312156128a2575f5ffd5b813560ff81168114610e61575f5ffd5b5f5f602083850312156128c3575f5ffd5b823567ffffffffffffffff8111156128d9575f5ffd5b8301601f810185136128e9575f5ffd5b803567ffffffffffffffff8111156128ff575f5ffd5b8560208260051b8401011115612913575f5ffd5b6020919091019590945092505050565b5f8151808452602084019350602083015f5b828110156127d75781516001600160a01b0316865260209586019590910190600101612935565b604081525f61296e6040830185612923565b828103602084015261298081856127a7565b95945050505050565b5f5f5f5f5f5f60c0878903121561299e575f5ffd5b86356129a9816125f8565b955060208701356129b9816125f8565b945060408701356129c9816125f8565b959894975094956060810135955060808101359460a0909101359350915050565b5f5f604083850312156129fb575f5ffd5b8235612a06816125f8565b946020939093013593505050565b602081525f610e616020830184612923565b5f5f60408385031215612a37575f5ffd5b8235612a42816125f8565b91506020830135612a52816125f8565b809150509250929050565b5f60208284031215612a6d575f5ffd5b81518015158114610e61575f5ffd5b6001600160a01b039384168152919092166020820152604081019190915260600190565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612ac4575f5ffd5b8151610e61816125f8565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561190b5761190b612acf565b5f60208284031215612b06575f5ffd5b5051919050565b8181038181111561190b5761190b612acf565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f6115ea6040830184612852565b5f82518060208501845e5f92019182525091905056fea26469706673582212205156421cb9f4865d8c206b62277999db7553f36aa15ed284f446e78bb9a74d5664736f6c634300081b0033
1060    /// ```
1061    #[rustfmt::skip]
1062    #[allow(clippy::all)]
1063    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
1064        b"`\xE0`@R4\x80\x15a\0\x0FW__\xFD[P`@Qa.\xF98\x03\x80a.\xF9\x839\x81\x01`@\x81\x90Ra\0.\x91a\x01\xB3V[\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\x02\xE4V[__\x82\x90P`\x1F\x81Q\x11\x15a\0\xBDW\x82`@Qc0Z'\xA9`\xE0\x1B\x81R`\x04\x01a\0\xB4\x91\x90a\x02\x89V[`@Q\x80\x91\x03\x90\xFD[\x80Qa\0\xC8\x82a\x02\xBEV[\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[___``\x84\x86\x03\x12\x15a\x01\xC5W__\xFD[\x83Qa\x01\xD0\x81a\x01\x88V[` \x85\x01Q\x90\x93Pa\x01\xE1\x81a\x01\x88V[`@\x85\x01Q\x90\x92P`\x01`\x01`@\x1B\x03\x81\x11\x15a\x01\xFCW__\xFD[\x84\x01`\x1F\x81\x01\x86\x13a\x02\x0CW__\xFD[\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x02%Wa\x02%a\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\x02SWa\x02Sa\x01\x9FV[`@R\x81\x81R\x82\x82\x01` \x01\x88\x10\x15a\x02jW__\xFD[\x81` \x84\x01` \x83\x01^_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92P\x92V[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[\x80Q` \x80\x83\x01Q\x91\x90\x81\x10\x15a\x02\xDEW_\x19\x81` \x03`\x03\x1B\x1B\x82\x16\x91P[P\x91\x90PV[`\x80Q`\xA0Q`\xC0Qa+\xACa\x03M_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+\xAC_\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(\x80V[a\x02*a\x0B\xE2V[a\x030a\x03\x1B6`\x04a(\x92V[`\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(\xB2V[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)\x89V[a\x0F\xE0V[a\x02*a\x04\x846`\x04a(\xB2V[a\x10qV[a\x02*a\x04\x976`\x04a(7V[a\x11\xB8V[a\x03\xDEa\x04\xAA6`\x04a)\xEAV[a\x11\xDBV[a\x04\xC2a\x04\xBD6`\x04a(7V[a\x12\x0FV[`@Qa\x02o\x91\x90a*\x14V[a\x02*a\x04\xDD6`\x04a)\xEAV[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*&V[`\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*|V[_`@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*\xA0V[` \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*\xA0V[` \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*\xB4V[\x84`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0B\x02\x93\x92\x91\x90a*|V[_`@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*\xA0V[\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*\xA0V[\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*\xA0V[\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*\xA0V[_\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*\xA0V[` \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*\xA0V[\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*\xA0V[\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*\xA0V[\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*\xE3V[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*\xB4V[`\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*\xF6V[\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*\xE3V[`\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*|V[`@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+\rV[`\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*\xA0V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x81`\x01\x81Q\x81\x10a\x1C\xD7Wa\x1C\xD7a*\xA0V[\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*|V[`@\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*\xA0V[_\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+\rV[\x81T\x81\x10a\x1F\x17Wa\x1F\x17a*\xA0V[_\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*\xA0V[\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+4V[_\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+HV[`@\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+`V[_`@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*\xF6V[\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*\xA0V[\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+\rV[\x85T\x90\x91P_\x90a#\x83\x90`\x01\x90a+\rV[\x90P\x81\x81\x14a#\xE2W_\x86_\x01\x82\x81T\x81\x10a#\xA1Wa#\xA1a*\xA0V[\x90_R` _ \x01T\x90P\x80\x87_\x01\x84\x81T\x81\x10a#\xC1Wa#\xC1a*\xA0V[_\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+4V[`\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+`V[_`@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(\x80V[_` \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[_\x81Q\x80\x84R\x80` \x84\x01` \x86\x01^_` \x82\x86\x01\x01R` `\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[` \x81R_a\x0Ea` \x83\x01\x84a(RV[_` \x82\x84\x03\x12\x15a(\xA2W__\xFD[\x815`\xFF\x81\x16\x81\x14a\x0EaW__\xFD[__` \x83\x85\x03\x12\x15a(\xC3W__\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a(\xD9W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a(\xE9W__\xFD[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a(\xFFW__\xFD[\x85` \x82`\x05\x1B\x84\x01\x01\x11\x15a)\x13W__\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)5V[`@\x81R_a)n`@\x83\x01\x85a)#V[\x82\x81\x03` \x84\x01Ra)\x80\x81\x85a'\xA7V[\x95\x94PPPPPV[______`\xC0\x87\x89\x03\x12\x15a)\x9EW__\xFD[\x865a)\xA9\x81a%\xF8V[\x95P` \x87\x015a)\xB9\x81a%\xF8V[\x94P`@\x87\x015a)\xC9\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)\xFBW__\xFD[\x825a*\x06\x81a%\xF8V[\x94` \x93\x90\x93\x015\x93PPPV[` \x81R_a\x0Ea` \x83\x01\x84a)#V[__`@\x83\x85\x03\x12\x15a*7W__\xFD[\x825a*B\x81a%\xF8V[\x91P` \x83\x015a*R\x81a%\xF8V[\x80\x91PP\x92P\x92\x90PV[_` \x82\x84\x03\x12\x15a*mW__\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*\xC4W__\xFD[\x81Qa\x0Ea\x81a%\xF8V[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x19\x0BWa\x19\x0Ba*\xCFV[_` \x82\x84\x03\x12\x15a+\x06W__\xFD[PQ\x91\x90PV[\x81\x81\x03\x81\x81\x11\x15a\x19\x0BWa\x19\x0Ba*\xCFV[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(RV[_\x82Q\x80` \x85\x01\x84^_\x92\x01\x91\x82RP\x91\x90PV\xFE\xA2dipfsX\"\x12 QVB\x1C\xB9\xF4\x86]\x8C kb'y\x99\xDBuS\xF3j\xA1^\xD2\x84\xF4F\xE7\x8B\xB9\xA7MVdsolcC\0\x08\x1B\x003",
1065    );
1066    /// The runtime bytecode of the contract, as deployed on the network.
1067    ///
1068    /// ```text
1069    ///0x608060405234801561000f575f5ffd5b5060043610610213575f3560e01c80638b8aac3c1161011f578063debe1eab116100a9578063f3b4a00011610079578063f3b4a0001461052f578063f698da2514610539578063fabc1cbc14610541578063fd98042314610554578063fe243a1714610567575f5ffd5b8063debe1eab146104cf578063df5cf723146104e2578063e7a050aa14610509578063f2fde38b1461051c575f5ffd5b80639ac01d61116100ef5780639ac01d6114610463578063b5d8b5b814610476578063c665670214610489578063cbc2bd621461049c578063de44acb6146104af575f5ffd5b80638b8aac3c146103f65780638da5cb5b1461041e57806394f649dd1461042f578063967fc0d214610450575f5ffd5b8063595c6a67116101a0578063663c1de411610170578063663c1de41461035b578063715018a61461037d578063724af423146103855780637ecebe0014610398578063886f1195146103b7575f5ffd5b8063595c6a67146103055780635ac86ab71461030d5780635c975abb146103405780635de08ff214610348575f5ffd5b806336a8c500116101e657806336a8c5001461027857806348825e941461028e5780634b6d5d6e146102b557806350ff7225146102c857806354fd4d50146102f0575f5ffd5b8063136439dd146102175780631794bb3c1461022c5780632eae418c1461023f57806332e89ace14610252575b5f5ffd5b61022a6102253660046125e1565b610591565b005b61022a61023a36600461260c565b610666565b61022a61024d36600461264a565b61078c565b6102656102603660046126ac565b610844565b6040519081526020015b60405180910390f35b6102806108e8565b60405161026f9291906127e1565b6102657f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61022a6102c3366004612837565b610a05565b6102db6102d636600461260c565b610b3e565b6040805192835260208301919091520161026f565b6102f8610bb2565b60405161026f9190612880565b61022a610be2565b61033061031b366004612892565b609854600160ff9092169190911b9081161490565b604051901515815260200161026f565b609854610265565b61022a6103563660046128b2565b610c91565b610330610369366004612837565b60d16020525f908152604090205460ff1681565b61022a610de4565b61026561039336600461260c565b610df5565b6102656103a6366004612837565b60ca6020525f908152604090205481565b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161026f565b610265610404366004612837565b6001600160a01b03165f90815260ce602052604090205490565b6033546001600160a01b03166103de565b61044261043d366004612837565b610e68565b60405161026f92919061295c565b60cb546103de906001600160a01b031681565b610265610471366004612989565b610fe0565b61022a6104843660046128b2565b611071565b61022a610497366004612837565b6111b8565b6103de6104aa3660046129ea565b6111db565b6104c26104bd366004612837565b61120f565b60405161026f9190612a14565b61022a6104dd3660046129ea565b611282565b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b61026561051736600461260c565b611346565b61022a61052a366004612837565b611398565b6103de620e16e481565b61026561140e565b61022a61054f3660046125e1565b6114c7565b610265610562366004612837565b6115dd565b610265610575366004612a26565b60cd60209081525f928352604080842090915290825290205481565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156105f3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106179190612a5d565b61063457604051631d77d47760e21b815260040160405180910390fd5b60985481811681146106595760405163c61dca5d60e01b815260040160405180910390fd5b610662826115f2565b5050565b5f54610100900460ff161580801561068457505f54600160ff909116105b8061069d5750303b15801561069d57505f5460ff166001145b6107055760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610726575f805461ff0019166101001790555b61072f826115f2565b6107388461162f565b61074183611680565b8015610786575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107d55760405163f739589b60e01b815260040160405180910390fd5b6107dd6116e9565b604051636ce5768960e11b81526001600160a01b0384169063d9caed129061080d90879086908690600401612a7c565b5f604051808303815f87803b158015610824575f5ffd5b505af1158015610836573d5f5f3e3d5ffd5b505050506107866001606555565b6098545f90819060019081160361086e5760405163840a48d560e01b815260040160405180910390fd5b6108766116e9565b6001600160a01b0385165f90815260ca60205260409020546108a7866108a0818c8c8c878c610fe0565b8688611742565b6001600160a01b0386165f90815260ca602052604090206001820190556108d0868a8a8a611794565b9250506108dd6001606555565b509695505050505050565b6060805f6108f660d4611901565b90505f8167ffffffffffffffff81111561091257610912612698565b60405190808252806020026020018201604052801561093b578160200160208202803683370190505b5090505f8267ffffffffffffffff81111561095857610958612698565b604051908082528060200260200182016040528015610981578160200160208202803683370190505b5090505f5b838110156109fa575f5f61099b60d484611911565b91509150818584815181106109b2576109b2612aa0565b60200260200101906001600160a01b031690816001600160a01b031681525050808484815181106109e5576109e5612aa0565b60209081029190910101525050600101610986565b509094909350915050565b610a0d6116e9565b5f610a1960d48361192e565b915050610a2760d483611945565b50604080516001600160a01b0384168152602081018390527fd9d082c3ec4f3a3ffa55c324939a06407f5fbcb87d5e0ce3b9508c92c84ed839910160405180910390a18015610b3057816001600160a01b031663d9caed12620e16e4846001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa158015610abf573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae39190612ab4565b846040518463ffffffff1660e01b8152600401610b0293929190612a7c565b5f604051808303815f87803b158015610b19575f5ffd5b505af1158015610b2b573d5f5f3e3d5ffd5b505050505b50610b3b6001606555565b50565b5f80336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b895760405163f739589b60e01b815260040160405180910390fd5b610b916116e9565b610b9c858585611959565b91509150610baa6001606555565b935093915050565b6060610bdd7f0000000000000000000000000000000000000000000000000000000000000000611ac1565b905090565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610c44573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c689190612a5d565b610c8557604051631d77d47760e21b815260040160405180910390fd5b610c8f5f196115f2565b565b60cb546001600160a01b03163314610cbc576040516320ba3ff960e21b815260040160405180910390fd5b610cc46116e9565b805f5b81811015610dd85760d15f858584818110610ce457610ce4612aa0565b9050602002016020810190610cf99190612837565b6001600160a01b0316815260208101919091526040015f205460ff16610dd057600160d15f868685818110610d3057610d30612aa0565b9050602002016020810190610d459190612837565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe848483818110610d9f57610d9f612aa0565b9050602002016020810190610db49190612837565b6040516001600160a01b03909116815260200160405180910390a15b600101610cc7565b50506106626001606555565b610dec611afe565b610c8f5f61162f565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610e3f5760405163f739589b60e01b815260040160405180910390fd5b610e476116e9565b5f610e53858585611b58565b92505050610e616001606555565b9392505050565b6001600160a01b0381165f90815260ce60205260408120546060918291908167ffffffffffffffff811115610e9f57610e9f612698565b604051908082528060200260200182016040528015610ec8578160200160208202803683370190505b5090505f5b82811015610f56576001600160a01b0386165f90815260cd6020908152604080832060ce9092528220805491929184908110610f0b57610f0b612aa0565b5f9182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610f4357610f43612aa0565b6020908102919091010152600101610ecd565b5060ce5f866001600160a01b03166001600160a01b031681526020019081526020015f208181805480602002602001604051908101604052809291908181526020018280548015610fce57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610fb0575b50505050509150935093505050915091565b604080517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922460208201526001600160a01b03808916928201929092528187166060820152908516608082015260a0810184905260c0810183905260e081018290525f90611066906101000160405160208183030381529060405280519060200120611c1e565b979650505050505050565b60cb546001600160a01b0316331461109c576040516320ba3ff960e21b815260040160405180910390fd5b6110a46116e9565b805f5b81811015610dd85760d15f8585848181106110c4576110c4612aa0565b90506020020160208101906110d99190612837565b6001600160a01b0316815260208101919091526040015f205460ff16156111b0575f60d15f86868581811061111057611110612aa0565b90506020020160208101906111259190612837565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba03084848381811061117f5761117f612aa0565b90506020020160208101906111949190612837565b6040516001600160a01b03909116815260200160405180910390a15b6001016110a7565b6111c0611afe565b6111c86116e9565b6111d181611680565b610b3b6001606555565b60ce602052815f5260405f2081815481106111f4575f80fd5b5f918252602090912001546001600160a01b03169150829050565b6001600160a01b0381165f90815260ce602090815260409182902080548351818402810184019094528084526060939283018282801561127657602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611258575b50505050509050919050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146112cb5760405163f739589b60e01b815260040160405180910390fd5b6112d36116e9565b5f6112df60d48461192e565b91506112f8905060d4846112f38585612ae3565b611c64565b50604080516001600160a01b0385168152602081018490527fca3e02a4ab7ad3c47a8e36e5a624c30170791726ab720f1babfef21046d953ff910160405180910390a1506106626001606555565b6098545f9081906001908116036113705760405163840a48d560e01b815260040160405180910390fd5b6113786116e9565b61138433868686611794565b91506113906001606555565b509392505050565b6113a0611afe565b6001600160a01b0381166114055760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106fc565b610b3b8161162f565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea61147b611c79565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611523573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115479190612ab4565b6001600160a01b0316336001600160a01b0316146115785760405163794821ff60e01b815260040160405180910390fd5b6098548019821981161461159f5760405163c61dca5d60e01b815260040160405180910390fd5b609882905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f5f6115ea60d48461192e565b949350505050565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b60026065540361173b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106fc565b6002606555565b4281101561176357604051630819bdcd60e01b815260040160405180910390fd5b6117776001600160a01b0385168484611d15565b61078657604051638baa579f60e01b815260040160405180910390fd5b6001600160a01b0383165f90815260d16020526040812054849060ff166117ce57604051632efd965160e11b815260040160405180910390fd5b6117e36001600160a01b038516338786611d73565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303815f875af115801561182f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118539190612af6565b91505f5f611862888886611959565b604051631e328e7960e11b81526001600160a01b038b811660048301528a8116602483015260448201849052606482018390529294509092507f000000000000000000000000000000000000000000000000000000000000000090911690633c651cf2906084015f604051808303815f87803b1580156118e0575f5ffd5b505af11580156118f2573d5f5f3e3d5ffd5b50505050505050949350505050565b5f61190b82611dcb565b92915050565b5f80808061191f8686611dd5565b909450925050505b9250929050565b5f80808061191f866001600160a01b038716611dfe565b5f610e61836001600160a01b038416611e36565b5f806001600160a01b038516611982576040516316f2ccc960e01b815260040160405180910390fd5b825f036119a2576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038086165f90815260cd6020908152604080832093881683529290529081205490819003611a48576001600160a01b0386165f90815260ce602090815260409091205410611a0a576040516301a1443960e31b815260040160405180910390fd5b6001600160a01b038681165f90815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169187169190911790555b611a528482612ae3565b6001600160a01b038088165f90815260cd60209081526040808320938a16835292905281902091909155517f5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f6290611aae90889088908890612a7c565b60405180910390a1959294509192505050565b60605f611acd83611e52565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6033546001600160a01b03163314610c8f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106fc565b5f5f825f03611b7a576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038086165f90815260cd602090815260408083209388168352929052205480841115611bc057604051634b18b19360e01b815260040160405180910390fd5b611bca8482612b0d565b6001600160a01b038088165f90815260cd60209081526040808320938a168352929052908120829055909150819003611c1257611c078686611e79565b600192509050610baa565b5f969095509350505050565b5f611c2761140e565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b5f6115ea846001600160a01b03851684611ff7565b60605f611ca57f0000000000000000000000000000000000000000000000000000000000000000611ac1565b9050805f81518110611cb957611cb9612aa0565b602001015160f81c60f81b81600181518110611cd757611cd7612aa0565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b5f5f5f611d228585612013565b90925090505f816004811115611d3a57611d3a612b20565b148015611d585750856001600160a01b0316826001600160a01b0316145b80611d695750611d69868686612052565b9695505050505050565b610786846323b872dd60e01b858585604051602401611d9493929190612a7c565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612139565b5f61190b82612211565b5f8080611de2858561221a565b5f81815260029690960160205260409095205494959350505050565b5f818152600283016020526040812054819080611e2b57611e1f8585612225565b92505f91506119279050565b600192509050611927565b5f8181526002830160205260408120819055610e618383612230565b5f60ff8216601f81111561190b57604051632cd44ac360e21b815260040160405180910390fd5b6001600160a01b0382165f90815260ce6020526040812054905b81811015611f8b576001600160a01b038481165f90815260ce6020526040902080549185169183908110611ec957611ec9612aa0565b5f918252602090912001546001600160a01b031603611f83576001600160a01b0384165f90815260ce602052604090208054611f0790600190612b0d565b81548110611f1757611f17612aa0565b5f9182526020808320909101546001600160a01b03878116845260ce9092526040909220805491909216919083908110611f5357611f53612aa0565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550611f8b565b600101611e93565b818103611fab57604051632df15a4160e11b815260040160405180910390fd5b6001600160a01b0384165f90815260ce60205260409020805480611fd157611fd1612b34565b5f8281526020902081015f1990810180546001600160a01b031916905501905550505050565b5f82815260028401602052604081208290556115ea848461223b565b5f5f8251604103612047576020830151604084015160608501515f1a61203b87828585612246565b94509450505050611927565b505f90506002611927565b5f5f5f856001600160a01b0316631626ba7e60e01b868660405160240161207a929190612b48565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516120b89190612b60565b5f60405180830381855afa9150503d805f81146120f0576040519150601f19603f3d011682016040523d82523d5f602084013e6120f5565b606091505b509150915081801561210957506020815110155b8015611d6957508051630b135d3f60e11b9061212e9083016020908101908401612af6565b149695505050505050565b5f61218d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166123039092919063ffffffff16565b905080515f14806121ad5750808060200190518101906121ad9190612a5d565b61220c5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106fc565b505050565b5f61190b825490565b5f610e618383612311565b5f610e618383612337565b5f610e61838361234e565b5f610e618383612431565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561227b57505f905060036122fa565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156122cc573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b0381166122f4575f600192509250506122fa565b91505f90505b94509492505050565b60606115ea84845f8561247d565b5f825f01828154811061232657612326612aa0565b905f5260205f200154905092915050565b5f8181526001830160205260408120541515610e61565b5f8181526001830160205260408120548015612428575f612370600183612b0d565b85549091505f9061238390600190612b0d565b90508181146123e2575f865f0182815481106123a1576123a1612aa0565b905f5260205f200154905080875f0184815481106123c1576123c1612aa0565b5f918252602080832090910192909255918252600188019052604090208390555b85548690806123f3576123f3612b34565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061190b565b5f91505061190b565b5f81815260018301602052604081205461247657508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561190b565b505f61190b565b6060824710156124de5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106fc565b5f5f866001600160a01b031685876040516124f99190612b60565b5f6040518083038185875af1925050503d805f8114612533576040519150601f19603f3d011682016040523d82523d5f602084013e612538565b606091505b509150915061106687838387606083156125b25782515f036125ab576001600160a01b0385163b6125ab5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106fc565b50816115ea565b6115ea83838151156125c75781518083602001fd5b8060405162461bcd60e51b81526004016106fc9190612880565b5f602082840312156125f1575f5ffd5b5035919050565b6001600160a01b0381168114610b3b575f5ffd5b5f5f5f6060848603121561261e575f5ffd5b8335612629816125f8565b92506020840135612639816125f8565b929592945050506040919091013590565b5f5f5f5f6080858703121561265d575f5ffd5b8435612668816125f8565b93506020850135612678816125f8565b92506040850135612688816125f8565b9396929550929360600135925050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f5f60c087890312156126c1575f5ffd5b86356126cc816125f8565b955060208701356126dc816125f8565b94506040870135935060608701356126f3816125f8565b92506080870135915060a087013567ffffffffffffffff811115612715575f5ffd5b8701601f81018913612725575f5ffd5b803567ffffffffffffffff81111561273f5761273f612698565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561276e5761276e612698565b6040528181528282016020018b1015612785575f5ffd5b816020840160208301375f602083830101528093505050509295509295509295565b5f8151808452602084019350602083015f5b828110156127d75781518652602095860195909101906001016127b9565b5093949350505050565b604080825283519082018190525f9060208501906060840190835b818110156128235783516001600160a01b03168352602093840193909201916001016127fc565b50508381036020850152611d6981866127a7565b5f60208284031215612847575f5ffd5b8135610e61816125f8565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610e616020830184612852565b5f602082840312156128a2575f5ffd5b813560ff81168114610e61575f5ffd5b5f5f602083850312156128c3575f5ffd5b823567ffffffffffffffff8111156128d9575f5ffd5b8301601f810185136128e9575f5ffd5b803567ffffffffffffffff8111156128ff575f5ffd5b8560208260051b8401011115612913575f5ffd5b6020919091019590945092505050565b5f8151808452602084019350602083015f5b828110156127d75781516001600160a01b0316865260209586019590910190600101612935565b604081525f61296e6040830185612923565b828103602084015261298081856127a7565b95945050505050565b5f5f5f5f5f5f60c0878903121561299e575f5ffd5b86356129a9816125f8565b955060208701356129b9816125f8565b945060408701356129c9816125f8565b959894975094956060810135955060808101359460a0909101359350915050565b5f5f604083850312156129fb575f5ffd5b8235612a06816125f8565b946020939093013593505050565b602081525f610e616020830184612923565b5f5f60408385031215612a37575f5ffd5b8235612a42816125f8565b91506020830135612a52816125f8565b809150509250929050565b5f60208284031215612a6d575f5ffd5b81518015158114610e61575f5ffd5b6001600160a01b039384168152919092166020820152604081019190915260600190565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612ac4575f5ffd5b8151610e61816125f8565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561190b5761190b612acf565b5f60208284031215612b06575f5ffd5b5051919050565b8181038181111561190b5761190b612acf565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f6115ea6040830184612852565b5f82518060208501845e5f92019182525091905056fea26469706673582212205156421cb9f4865d8c206b62277999db7553f36aa15ed284f446e78bb9a74d5664736f6c634300081b0033
1070    /// ```
1071    #[rustfmt::skip]
1072    #[allow(clippy::all)]
1073    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
1074        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(\x80V[a\x02*a\x0B\xE2V[a\x030a\x03\x1B6`\x04a(\x92V[`\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(\xB2V[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)\x89V[a\x0F\xE0V[a\x02*a\x04\x846`\x04a(\xB2V[a\x10qV[a\x02*a\x04\x976`\x04a(7V[a\x11\xB8V[a\x03\xDEa\x04\xAA6`\x04a)\xEAV[a\x11\xDBV[a\x04\xC2a\x04\xBD6`\x04a(7V[a\x12\x0FV[`@Qa\x02o\x91\x90a*\x14V[a\x02*a\x04\xDD6`\x04a)\xEAV[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*&V[`\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*|V[_`@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*\xA0V[` \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*\xA0V[` \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*\xB4V[\x84`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0B\x02\x93\x92\x91\x90a*|V[_`@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*\xA0V[\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*\xA0V[\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*\xA0V[\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*\xA0V[_\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*\xA0V[` \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*\xA0V[\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*\xA0V[\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*\xA0V[\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*\xE3V[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*\xB4V[`\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*\xF6V[\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*\xE3V[`\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*|V[`@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+\rV[`\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*\xA0V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x81`\x01\x81Q\x81\x10a\x1C\xD7Wa\x1C\xD7a*\xA0V[\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*|V[`@\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*\xA0V[_\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+\rV[\x81T\x81\x10a\x1F\x17Wa\x1F\x17a*\xA0V[_\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*\xA0V[\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+4V[_\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+HV[`@\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+`V[_`@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*\xF6V[\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*\xA0V[\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+\rV[\x85T\x90\x91P_\x90a#\x83\x90`\x01\x90a+\rV[\x90P\x81\x81\x14a#\xE2W_\x86_\x01\x82\x81T\x81\x10a#\xA1Wa#\xA1a*\xA0V[\x90_R` _ \x01T\x90P\x80\x87_\x01\x84\x81T\x81\x10a#\xC1Wa#\xC1a*\xA0V[_\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+4V[`\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+`V[_`@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(\x80V[_` \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[_\x81Q\x80\x84R\x80` \x84\x01` \x86\x01^_` \x82\x86\x01\x01R` `\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[` \x81R_a\x0Ea` \x83\x01\x84a(RV[_` \x82\x84\x03\x12\x15a(\xA2W__\xFD[\x815`\xFF\x81\x16\x81\x14a\x0EaW__\xFD[__` \x83\x85\x03\x12\x15a(\xC3W__\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a(\xD9W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a(\xE9W__\xFD[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a(\xFFW__\xFD[\x85` \x82`\x05\x1B\x84\x01\x01\x11\x15a)\x13W__\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)5V[`@\x81R_a)n`@\x83\x01\x85a)#V[\x82\x81\x03` \x84\x01Ra)\x80\x81\x85a'\xA7V[\x95\x94PPPPPV[______`\xC0\x87\x89\x03\x12\x15a)\x9EW__\xFD[\x865a)\xA9\x81a%\xF8V[\x95P` \x87\x015a)\xB9\x81a%\xF8V[\x94P`@\x87\x015a)\xC9\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)\xFBW__\xFD[\x825a*\x06\x81a%\xF8V[\x94` \x93\x90\x93\x015\x93PPPV[` \x81R_a\x0Ea` \x83\x01\x84a)#V[__`@\x83\x85\x03\x12\x15a*7W__\xFD[\x825a*B\x81a%\xF8V[\x91P` \x83\x015a*R\x81a%\xF8V[\x80\x91PP\x92P\x92\x90PV[_` \x82\x84\x03\x12\x15a*mW__\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*\xC4W__\xFD[\x81Qa\x0Ea\x81a%\xF8V[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x19\x0BWa\x19\x0Ba*\xCFV[_` \x82\x84\x03\x12\x15a+\x06W__\xFD[PQ\x91\x90PV[\x81\x81\x03\x81\x81\x11\x15a\x19\x0BWa\x19\x0Ba*\xCFV[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(RV[_\x82Q\x80` \x85\x01\x84^_\x92\x01\x91\x82RP\x91\x90PV\xFE\xA2dipfsX\"\x12 QVB\x1C\xB9\xF4\x86]\x8C kb'y\x99\xDBuS\xF3j\xA1^\xD2\x84\xF4F\xE7\x8B\xB9\xA7MVdsolcC\0\x08\x1B\x003",
1075    );
1076    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
1077    /**Custom error with signature `CurrentlyPaused()` and selector `0x840a48d5`.
1078    ```solidity
1079    error CurrentlyPaused();
1080    ```*/
1081    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1082    #[derive(Clone)]
1083    pub struct CurrentlyPaused;
1084    #[allow(
1085        non_camel_case_types,
1086        non_snake_case,
1087        clippy::pub_underscore_fields,
1088        clippy::style
1089    )]
1090    const _: () = {
1091        use alloy::sol_types as alloy_sol_types;
1092        #[doc(hidden)]
1093        type UnderlyingSolTuple<'a> = ();
1094        #[doc(hidden)]
1095        type UnderlyingRustTuple<'a> = ();
1096        #[cfg(test)]
1097        #[allow(dead_code, unreachable_patterns)]
1098        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
1099            match _t {
1100                alloy_sol_types::private::AssertTypeEq::<
1101                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1102                >(_) => {}
1103            }
1104        }
1105        #[automatically_derived]
1106        #[doc(hidden)]
1107        impl ::core::convert::From<CurrentlyPaused> for UnderlyingRustTuple<'_> {
1108            fn from(value: CurrentlyPaused) -> Self {
1109                ()
1110            }
1111        }
1112        #[automatically_derived]
1113        #[doc(hidden)]
1114        impl ::core::convert::From<UnderlyingRustTuple<'_>> for CurrentlyPaused {
1115            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1116                Self
1117            }
1118        }
1119        #[automatically_derived]
1120        impl alloy_sol_types::SolError for CurrentlyPaused {
1121            type Parameters<'a> = UnderlyingSolTuple<'a>;
1122            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
1123            const SIGNATURE: &'static str = "CurrentlyPaused()";
1124            const SELECTOR: [u8; 4] = [132u8, 10u8, 72u8, 213u8];
1125            #[inline]
1126            fn new<'a>(
1127                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1128            ) -> Self {
1129                tuple.into()
1130            }
1131            #[inline]
1132            fn tokenize(&self) -> Self::Token<'_> {
1133                ()
1134            }
1135            #[inline]
1136            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1137                <Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
1138                    data,
1139                )
1140                .map(Self::new)
1141            }
1142        }
1143    };
1144    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
1145    /**Custom error with signature `InputAddressZero()` and selector `0x73632176`.
1146    ```solidity
1147    error InputAddressZero();
1148    ```*/
1149    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1150    #[derive(Clone)]
1151    pub struct InputAddressZero;
1152    #[allow(
1153        non_camel_case_types,
1154        non_snake_case,
1155        clippy::pub_underscore_fields,
1156        clippy::style
1157    )]
1158    const _: () = {
1159        use alloy::sol_types as alloy_sol_types;
1160        #[doc(hidden)]
1161        type UnderlyingSolTuple<'a> = ();
1162        #[doc(hidden)]
1163        type UnderlyingRustTuple<'a> = ();
1164        #[cfg(test)]
1165        #[allow(dead_code, unreachable_patterns)]
1166        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
1167            match _t {
1168                alloy_sol_types::private::AssertTypeEq::<
1169                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1170                >(_) => {}
1171            }
1172        }
1173        #[automatically_derived]
1174        #[doc(hidden)]
1175        impl ::core::convert::From<InputAddressZero> for UnderlyingRustTuple<'_> {
1176            fn from(value: InputAddressZero) -> Self {
1177                ()
1178            }
1179        }
1180        #[automatically_derived]
1181        #[doc(hidden)]
1182        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InputAddressZero {
1183            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1184                Self
1185            }
1186        }
1187        #[automatically_derived]
1188        impl alloy_sol_types::SolError for InputAddressZero {
1189            type Parameters<'a> = UnderlyingSolTuple<'a>;
1190            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
1191            const SIGNATURE: &'static str = "InputAddressZero()";
1192            const SELECTOR: [u8; 4] = [115u8, 99u8, 33u8, 118u8];
1193            #[inline]
1194            fn new<'a>(
1195                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1196            ) -> Self {
1197                tuple.into()
1198            }
1199            #[inline]
1200            fn tokenize(&self) -> Self::Token<'_> {
1201                ()
1202            }
1203            #[inline]
1204            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1205                <Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
1206                    data,
1207                )
1208                .map(Self::new)
1209            }
1210        }
1211    };
1212    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
1213    /**Custom error with signature `InvalidNewPausedStatus()` and selector `0xc61dca5d`.
1214    ```solidity
1215    error InvalidNewPausedStatus();
1216    ```*/
1217    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1218    #[derive(Clone)]
1219    pub struct InvalidNewPausedStatus;
1220    #[allow(
1221        non_camel_case_types,
1222        non_snake_case,
1223        clippy::pub_underscore_fields,
1224        clippy::style
1225    )]
1226    const _: () = {
1227        use alloy::sol_types as alloy_sol_types;
1228        #[doc(hidden)]
1229        type UnderlyingSolTuple<'a> = ();
1230        #[doc(hidden)]
1231        type UnderlyingRustTuple<'a> = ();
1232        #[cfg(test)]
1233        #[allow(dead_code, unreachable_patterns)]
1234        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
1235            match _t {
1236                alloy_sol_types::private::AssertTypeEq::<
1237                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1238                >(_) => {}
1239            }
1240        }
1241        #[automatically_derived]
1242        #[doc(hidden)]
1243        impl ::core::convert::From<InvalidNewPausedStatus> for UnderlyingRustTuple<'_> {
1244            fn from(value: InvalidNewPausedStatus) -> Self {
1245                ()
1246            }
1247        }
1248        #[automatically_derived]
1249        #[doc(hidden)]
1250        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidNewPausedStatus {
1251            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1252                Self
1253            }
1254        }
1255        #[automatically_derived]
1256        impl alloy_sol_types::SolError for InvalidNewPausedStatus {
1257            type Parameters<'a> = UnderlyingSolTuple<'a>;
1258            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
1259            const SIGNATURE: &'static str = "InvalidNewPausedStatus()";
1260            const SELECTOR: [u8; 4] = [198u8, 29u8, 202u8, 93u8];
1261            #[inline]
1262            fn new<'a>(
1263                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1264            ) -> Self {
1265                tuple.into()
1266            }
1267            #[inline]
1268            fn tokenize(&self) -> Self::Token<'_> {
1269                ()
1270            }
1271            #[inline]
1272            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1273                <Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
1274                    data,
1275                )
1276                .map(Self::new)
1277            }
1278        }
1279    };
1280    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
1281    /**Custom error with signature `InvalidShortString()` and selector `0xb3512b0c`.
1282    ```solidity
1283    error InvalidShortString();
1284    ```*/
1285    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1286    #[derive(Clone)]
1287    pub struct InvalidShortString;
1288    #[allow(
1289        non_camel_case_types,
1290        non_snake_case,
1291        clippy::pub_underscore_fields,
1292        clippy::style
1293    )]
1294    const _: () = {
1295        use alloy::sol_types as alloy_sol_types;
1296        #[doc(hidden)]
1297        type UnderlyingSolTuple<'a> = ();
1298        #[doc(hidden)]
1299        type UnderlyingRustTuple<'a> = ();
1300        #[cfg(test)]
1301        #[allow(dead_code, unreachable_patterns)]
1302        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
1303            match _t {
1304                alloy_sol_types::private::AssertTypeEq::<
1305                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1306                >(_) => {}
1307            }
1308        }
1309        #[automatically_derived]
1310        #[doc(hidden)]
1311        impl ::core::convert::From<InvalidShortString> for UnderlyingRustTuple<'_> {
1312            fn from(value: InvalidShortString) -> Self {
1313                ()
1314            }
1315        }
1316        #[automatically_derived]
1317        #[doc(hidden)]
1318        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidShortString {
1319            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1320                Self
1321            }
1322        }
1323        #[automatically_derived]
1324        impl alloy_sol_types::SolError for InvalidShortString {
1325            type Parameters<'a> = UnderlyingSolTuple<'a>;
1326            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
1327            const SIGNATURE: &'static str = "InvalidShortString()";
1328            const SELECTOR: [u8; 4] = [179u8, 81u8, 43u8, 12u8];
1329            #[inline]
1330            fn new<'a>(
1331                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1332            ) -> Self {
1333                tuple.into()
1334            }
1335            #[inline]
1336            fn tokenize(&self) -> Self::Token<'_> {
1337                ()
1338            }
1339            #[inline]
1340            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1341                <Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
1342                    data,
1343                )
1344                .map(Self::new)
1345            }
1346        }
1347    };
1348    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
1349    /**Custom error with signature `InvalidSignature()` and selector `0x8baa579f`.
1350    ```solidity
1351    error InvalidSignature();
1352    ```*/
1353    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1354    #[derive(Clone)]
1355    pub struct InvalidSignature;
1356    #[allow(
1357        non_camel_case_types,
1358        non_snake_case,
1359        clippy::pub_underscore_fields,
1360        clippy::style
1361    )]
1362    const _: () = {
1363        use alloy::sol_types as alloy_sol_types;
1364        #[doc(hidden)]
1365        type UnderlyingSolTuple<'a> = ();
1366        #[doc(hidden)]
1367        type UnderlyingRustTuple<'a> = ();
1368        #[cfg(test)]
1369        #[allow(dead_code, unreachable_patterns)]
1370        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
1371            match _t {
1372                alloy_sol_types::private::AssertTypeEq::<
1373                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1374                >(_) => {}
1375            }
1376        }
1377        #[automatically_derived]
1378        #[doc(hidden)]
1379        impl ::core::convert::From<InvalidSignature> for UnderlyingRustTuple<'_> {
1380            fn from(value: InvalidSignature) -> Self {
1381                ()
1382            }
1383        }
1384        #[automatically_derived]
1385        #[doc(hidden)]
1386        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidSignature {
1387            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1388                Self
1389            }
1390        }
1391        #[automatically_derived]
1392        impl alloy_sol_types::SolError for InvalidSignature {
1393            type Parameters<'a> = UnderlyingSolTuple<'a>;
1394            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
1395            const SIGNATURE: &'static str = "InvalidSignature()";
1396            const SELECTOR: [u8; 4] = [139u8, 170u8, 87u8, 159u8];
1397            #[inline]
1398            fn new<'a>(
1399                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1400            ) -> Self {
1401                tuple.into()
1402            }
1403            #[inline]
1404            fn tokenize(&self) -> Self::Token<'_> {
1405                ()
1406            }
1407            #[inline]
1408            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1409                <Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
1410                    data,
1411                )
1412                .map(Self::new)
1413            }
1414        }
1415    };
1416    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
1417    /**Custom error with signature `MaxStrategiesExceeded()` and selector `0x0d0a21c8`.
1418    ```solidity
1419    error MaxStrategiesExceeded();
1420    ```*/
1421    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1422    #[derive(Clone)]
1423    pub struct MaxStrategiesExceeded;
1424    #[allow(
1425        non_camel_case_types,
1426        non_snake_case,
1427        clippy::pub_underscore_fields,
1428        clippy::style
1429    )]
1430    const _: () = {
1431        use alloy::sol_types as alloy_sol_types;
1432        #[doc(hidden)]
1433        type UnderlyingSolTuple<'a> = ();
1434        #[doc(hidden)]
1435        type UnderlyingRustTuple<'a> = ();
1436        #[cfg(test)]
1437        #[allow(dead_code, unreachable_patterns)]
1438        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
1439            match _t {
1440                alloy_sol_types::private::AssertTypeEq::<
1441                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1442                >(_) => {}
1443            }
1444        }
1445        #[automatically_derived]
1446        #[doc(hidden)]
1447        impl ::core::convert::From<MaxStrategiesExceeded> for UnderlyingRustTuple<'_> {
1448            fn from(value: MaxStrategiesExceeded) -> Self {
1449                ()
1450            }
1451        }
1452        #[automatically_derived]
1453        #[doc(hidden)]
1454        impl ::core::convert::From<UnderlyingRustTuple<'_>> for MaxStrategiesExceeded {
1455            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1456                Self
1457            }
1458        }
1459        #[automatically_derived]
1460        impl alloy_sol_types::SolError for MaxStrategiesExceeded {
1461            type Parameters<'a> = UnderlyingSolTuple<'a>;
1462            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
1463            const SIGNATURE: &'static str = "MaxStrategiesExceeded()";
1464            const SELECTOR: [u8; 4] = [13u8, 10u8, 33u8, 200u8];
1465            #[inline]
1466            fn new<'a>(
1467                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1468            ) -> Self {
1469                tuple.into()
1470            }
1471            #[inline]
1472            fn tokenize(&self) -> Self::Token<'_> {
1473                ()
1474            }
1475            #[inline]
1476            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1477                <Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
1478                    data,
1479                )
1480                .map(Self::new)
1481            }
1482        }
1483    };
1484    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
1485    /**Custom error with signature `OnlyDelegationManager()` and selector `0xf739589b`.
1486    ```solidity
1487    error OnlyDelegationManager();
1488    ```*/
1489    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1490    #[derive(Clone)]
1491    pub struct OnlyDelegationManager;
1492    #[allow(
1493        non_camel_case_types,
1494        non_snake_case,
1495        clippy::pub_underscore_fields,
1496        clippy::style
1497    )]
1498    const _: () = {
1499        use alloy::sol_types as alloy_sol_types;
1500        #[doc(hidden)]
1501        type UnderlyingSolTuple<'a> = ();
1502        #[doc(hidden)]
1503        type UnderlyingRustTuple<'a> = ();
1504        #[cfg(test)]
1505        #[allow(dead_code, unreachable_patterns)]
1506        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
1507            match _t {
1508                alloy_sol_types::private::AssertTypeEq::<
1509                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1510                >(_) => {}
1511            }
1512        }
1513        #[automatically_derived]
1514        #[doc(hidden)]
1515        impl ::core::convert::From<OnlyDelegationManager> for UnderlyingRustTuple<'_> {
1516            fn from(value: OnlyDelegationManager) -> Self {
1517                ()
1518            }
1519        }
1520        #[automatically_derived]
1521        #[doc(hidden)]
1522        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OnlyDelegationManager {
1523            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1524                Self
1525            }
1526        }
1527        #[automatically_derived]
1528        impl alloy_sol_types::SolError for OnlyDelegationManager {
1529            type Parameters<'a> = UnderlyingSolTuple<'a>;
1530            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
1531            const SIGNATURE: &'static str = "OnlyDelegationManager()";
1532            const SELECTOR: [u8; 4] = [247u8, 57u8, 88u8, 155u8];
1533            #[inline]
1534            fn new<'a>(
1535                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1536            ) -> Self {
1537                tuple.into()
1538            }
1539            #[inline]
1540            fn tokenize(&self) -> Self::Token<'_> {
1541                ()
1542            }
1543            #[inline]
1544            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1545                <Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
1546                    data,
1547                )
1548                .map(Self::new)
1549            }
1550        }
1551    };
1552    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
1553    /**Custom error with signature `OnlyPauser()` and selector `0x75df51dc`.
1554    ```solidity
1555    error OnlyPauser();
1556    ```*/
1557    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1558    #[derive(Clone)]
1559    pub struct OnlyPauser;
1560    #[allow(
1561        non_camel_case_types,
1562        non_snake_case,
1563        clippy::pub_underscore_fields,
1564        clippy::style
1565    )]
1566    const _: () = {
1567        use alloy::sol_types as alloy_sol_types;
1568        #[doc(hidden)]
1569        type UnderlyingSolTuple<'a> = ();
1570        #[doc(hidden)]
1571        type UnderlyingRustTuple<'a> = ();
1572        #[cfg(test)]
1573        #[allow(dead_code, unreachable_patterns)]
1574        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
1575            match _t {
1576                alloy_sol_types::private::AssertTypeEq::<
1577                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1578                >(_) => {}
1579            }
1580        }
1581        #[automatically_derived]
1582        #[doc(hidden)]
1583        impl ::core::convert::From<OnlyPauser> for UnderlyingRustTuple<'_> {
1584            fn from(value: OnlyPauser) -> Self {
1585                ()
1586            }
1587        }
1588        #[automatically_derived]
1589        #[doc(hidden)]
1590        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OnlyPauser {
1591            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1592                Self
1593            }
1594        }
1595        #[automatically_derived]
1596        impl alloy_sol_types::SolError for OnlyPauser {
1597            type Parameters<'a> = UnderlyingSolTuple<'a>;
1598            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
1599            const SIGNATURE: &'static str = "OnlyPauser()";
1600            const SELECTOR: [u8; 4] = [117u8, 223u8, 81u8, 220u8];
1601            #[inline]
1602            fn new<'a>(
1603                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1604            ) -> Self {
1605                tuple.into()
1606            }
1607            #[inline]
1608            fn tokenize(&self) -> Self::Token<'_> {
1609                ()
1610            }
1611            #[inline]
1612            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1613                <Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
1614                    data,
1615                )
1616                .map(Self::new)
1617            }
1618        }
1619    };
1620    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
1621    /**Custom error with signature `OnlyStrategyWhitelister()` and selector `0x82e8ffe4`.
1622    ```solidity
1623    error OnlyStrategyWhitelister();
1624    ```*/
1625    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1626    #[derive(Clone)]
1627    pub struct OnlyStrategyWhitelister;
1628    #[allow(
1629        non_camel_case_types,
1630        non_snake_case,
1631        clippy::pub_underscore_fields,
1632        clippy::style
1633    )]
1634    const _: () = {
1635        use alloy::sol_types as alloy_sol_types;
1636        #[doc(hidden)]
1637        type UnderlyingSolTuple<'a> = ();
1638        #[doc(hidden)]
1639        type UnderlyingRustTuple<'a> = ();
1640        #[cfg(test)]
1641        #[allow(dead_code, unreachable_patterns)]
1642        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
1643            match _t {
1644                alloy_sol_types::private::AssertTypeEq::<
1645                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1646                >(_) => {}
1647            }
1648        }
1649        #[automatically_derived]
1650        #[doc(hidden)]
1651        impl ::core::convert::From<OnlyStrategyWhitelister> for UnderlyingRustTuple<'_> {
1652            fn from(value: OnlyStrategyWhitelister) -> Self {
1653                ()
1654            }
1655        }
1656        #[automatically_derived]
1657        #[doc(hidden)]
1658        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OnlyStrategyWhitelister {
1659            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1660                Self
1661            }
1662        }
1663        #[automatically_derived]
1664        impl alloy_sol_types::SolError for OnlyStrategyWhitelister {
1665            type Parameters<'a> = UnderlyingSolTuple<'a>;
1666            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
1667            const SIGNATURE: &'static str = "OnlyStrategyWhitelister()";
1668            const SELECTOR: [u8; 4] = [130u8, 232u8, 255u8, 228u8];
1669            #[inline]
1670            fn new<'a>(
1671                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1672            ) -> Self {
1673                tuple.into()
1674            }
1675            #[inline]
1676            fn tokenize(&self) -> Self::Token<'_> {
1677                ()
1678            }
1679            #[inline]
1680            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1681                <Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
1682                    data,
1683                )
1684                .map(Self::new)
1685            }
1686        }
1687    };
1688    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
1689    /**Custom error with signature `OnlyUnpauser()` and selector `0x794821ff`.
1690    ```solidity
1691    error OnlyUnpauser();
1692    ```*/
1693    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1694    #[derive(Clone)]
1695    pub struct OnlyUnpauser;
1696    #[allow(
1697        non_camel_case_types,
1698        non_snake_case,
1699        clippy::pub_underscore_fields,
1700        clippy::style
1701    )]
1702    const _: () = {
1703        use alloy::sol_types as alloy_sol_types;
1704        #[doc(hidden)]
1705        type UnderlyingSolTuple<'a> = ();
1706        #[doc(hidden)]
1707        type UnderlyingRustTuple<'a> = ();
1708        #[cfg(test)]
1709        #[allow(dead_code, unreachable_patterns)]
1710        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
1711            match _t {
1712                alloy_sol_types::private::AssertTypeEq::<
1713                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1714                >(_) => {}
1715            }
1716        }
1717        #[automatically_derived]
1718        #[doc(hidden)]
1719        impl ::core::convert::From<OnlyUnpauser> for UnderlyingRustTuple<'_> {
1720            fn from(value: OnlyUnpauser) -> Self {
1721                ()
1722            }
1723        }
1724        #[automatically_derived]
1725        #[doc(hidden)]
1726        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OnlyUnpauser {
1727            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1728                Self
1729            }
1730        }
1731        #[automatically_derived]
1732        impl alloy_sol_types::SolError for OnlyUnpauser {
1733            type Parameters<'a> = UnderlyingSolTuple<'a>;
1734            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
1735            const SIGNATURE: &'static str = "OnlyUnpauser()";
1736            const SELECTOR: [u8; 4] = [121u8, 72u8, 33u8, 255u8];
1737            #[inline]
1738            fn new<'a>(
1739                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1740            ) -> Self {
1741                tuple.into()
1742            }
1743            #[inline]
1744            fn tokenize(&self) -> Self::Token<'_> {
1745                ()
1746            }
1747            #[inline]
1748            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1749                <Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
1750                    data,
1751                )
1752                .map(Self::new)
1753            }
1754        }
1755    };
1756    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
1757    /**Custom error with signature `SharesAmountTooHigh()` and selector `0x4b18b193`.
1758    ```solidity
1759    error SharesAmountTooHigh();
1760    ```*/
1761    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1762    #[derive(Clone)]
1763    pub struct SharesAmountTooHigh;
1764    #[allow(
1765        non_camel_case_types,
1766        non_snake_case,
1767        clippy::pub_underscore_fields,
1768        clippy::style
1769    )]
1770    const _: () = {
1771        use alloy::sol_types as alloy_sol_types;
1772        #[doc(hidden)]
1773        type UnderlyingSolTuple<'a> = ();
1774        #[doc(hidden)]
1775        type UnderlyingRustTuple<'a> = ();
1776        #[cfg(test)]
1777        #[allow(dead_code, unreachable_patterns)]
1778        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
1779            match _t {
1780                alloy_sol_types::private::AssertTypeEq::<
1781                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1782                >(_) => {}
1783            }
1784        }
1785        #[automatically_derived]
1786        #[doc(hidden)]
1787        impl ::core::convert::From<SharesAmountTooHigh> for UnderlyingRustTuple<'_> {
1788            fn from(value: SharesAmountTooHigh) -> Self {
1789                ()
1790            }
1791        }
1792        #[automatically_derived]
1793        #[doc(hidden)]
1794        impl ::core::convert::From<UnderlyingRustTuple<'_>> for SharesAmountTooHigh {
1795            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1796                Self
1797            }
1798        }
1799        #[automatically_derived]
1800        impl alloy_sol_types::SolError for SharesAmountTooHigh {
1801            type Parameters<'a> = UnderlyingSolTuple<'a>;
1802            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
1803            const SIGNATURE: &'static str = "SharesAmountTooHigh()";
1804            const SELECTOR: [u8; 4] = [75u8, 24u8, 177u8, 147u8];
1805            #[inline]
1806            fn new<'a>(
1807                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1808            ) -> Self {
1809                tuple.into()
1810            }
1811            #[inline]
1812            fn tokenize(&self) -> Self::Token<'_> {
1813                ()
1814            }
1815            #[inline]
1816            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1817                <Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
1818                    data,
1819                )
1820                .map(Self::new)
1821            }
1822        }
1823    };
1824    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
1825    /**Custom error with signature `SharesAmountZero()` and selector `0x840c364a`.
1826    ```solidity
1827    error SharesAmountZero();
1828    ```*/
1829    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1830    #[derive(Clone)]
1831    pub struct SharesAmountZero;
1832    #[allow(
1833        non_camel_case_types,
1834        non_snake_case,
1835        clippy::pub_underscore_fields,
1836        clippy::style
1837    )]
1838    const _: () = {
1839        use alloy::sol_types as alloy_sol_types;
1840        #[doc(hidden)]
1841        type UnderlyingSolTuple<'a> = ();
1842        #[doc(hidden)]
1843        type UnderlyingRustTuple<'a> = ();
1844        #[cfg(test)]
1845        #[allow(dead_code, unreachable_patterns)]
1846        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
1847            match _t {
1848                alloy_sol_types::private::AssertTypeEq::<
1849                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1850                >(_) => {}
1851            }
1852        }
1853        #[automatically_derived]
1854        #[doc(hidden)]
1855        impl ::core::convert::From<SharesAmountZero> for UnderlyingRustTuple<'_> {
1856            fn from(value: SharesAmountZero) -> Self {
1857                ()
1858            }
1859        }
1860        #[automatically_derived]
1861        #[doc(hidden)]
1862        impl ::core::convert::From<UnderlyingRustTuple<'_>> for SharesAmountZero {
1863            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1864                Self
1865            }
1866        }
1867        #[automatically_derived]
1868        impl alloy_sol_types::SolError for SharesAmountZero {
1869            type Parameters<'a> = UnderlyingSolTuple<'a>;
1870            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
1871            const SIGNATURE: &'static str = "SharesAmountZero()";
1872            const SELECTOR: [u8; 4] = [132u8, 12u8, 54u8, 74u8];
1873            #[inline]
1874            fn new<'a>(
1875                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1876            ) -> Self {
1877                tuple.into()
1878            }
1879            #[inline]
1880            fn tokenize(&self) -> Self::Token<'_> {
1881                ()
1882            }
1883            #[inline]
1884            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1885                <Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
1886                    data,
1887                )
1888                .map(Self::new)
1889            }
1890        }
1891    };
1892    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
1893    /**Custom error with signature `SignatureExpired()` and selector `0x0819bdcd`.
1894    ```solidity
1895    error SignatureExpired();
1896    ```*/
1897    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1898    #[derive(Clone)]
1899    pub struct SignatureExpired;
1900    #[allow(
1901        non_camel_case_types,
1902        non_snake_case,
1903        clippy::pub_underscore_fields,
1904        clippy::style
1905    )]
1906    const _: () = {
1907        use alloy::sol_types as alloy_sol_types;
1908        #[doc(hidden)]
1909        type UnderlyingSolTuple<'a> = ();
1910        #[doc(hidden)]
1911        type UnderlyingRustTuple<'a> = ();
1912        #[cfg(test)]
1913        #[allow(dead_code, unreachable_patterns)]
1914        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
1915            match _t {
1916                alloy_sol_types::private::AssertTypeEq::<
1917                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1918                >(_) => {}
1919            }
1920        }
1921        #[automatically_derived]
1922        #[doc(hidden)]
1923        impl ::core::convert::From<SignatureExpired> for UnderlyingRustTuple<'_> {
1924            fn from(value: SignatureExpired) -> Self {
1925                ()
1926            }
1927        }
1928        #[automatically_derived]
1929        #[doc(hidden)]
1930        impl ::core::convert::From<UnderlyingRustTuple<'_>> for SignatureExpired {
1931            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1932                Self
1933            }
1934        }
1935        #[automatically_derived]
1936        impl alloy_sol_types::SolError for SignatureExpired {
1937            type Parameters<'a> = UnderlyingSolTuple<'a>;
1938            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
1939            const SIGNATURE: &'static str = "SignatureExpired()";
1940            const SELECTOR: [u8; 4] = [8u8, 25u8, 189u8, 205u8];
1941            #[inline]
1942            fn new<'a>(
1943                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1944            ) -> Self {
1945                tuple.into()
1946            }
1947            #[inline]
1948            fn tokenize(&self) -> Self::Token<'_> {
1949                ()
1950            }
1951            #[inline]
1952            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1953                <Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
1954                    data,
1955                )
1956                .map(Self::new)
1957            }
1958        }
1959    };
1960    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
1961    /**Custom error with signature `StakerAddressZero()` and selector `0x16f2ccc9`.
1962    ```solidity
1963    error StakerAddressZero();
1964    ```*/
1965    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1966    #[derive(Clone)]
1967    pub struct StakerAddressZero;
1968    #[allow(
1969        non_camel_case_types,
1970        non_snake_case,
1971        clippy::pub_underscore_fields,
1972        clippy::style
1973    )]
1974    const _: () = {
1975        use alloy::sol_types as alloy_sol_types;
1976        #[doc(hidden)]
1977        type UnderlyingSolTuple<'a> = ();
1978        #[doc(hidden)]
1979        type UnderlyingRustTuple<'a> = ();
1980        #[cfg(test)]
1981        #[allow(dead_code, unreachable_patterns)]
1982        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
1983            match _t {
1984                alloy_sol_types::private::AssertTypeEq::<
1985                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1986                >(_) => {}
1987            }
1988        }
1989        #[automatically_derived]
1990        #[doc(hidden)]
1991        impl ::core::convert::From<StakerAddressZero> for UnderlyingRustTuple<'_> {
1992            fn from(value: StakerAddressZero) -> Self {
1993                ()
1994            }
1995        }
1996        #[automatically_derived]
1997        #[doc(hidden)]
1998        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StakerAddressZero {
1999            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2000                Self
2001            }
2002        }
2003        #[automatically_derived]
2004        impl alloy_sol_types::SolError for StakerAddressZero {
2005            type Parameters<'a> = UnderlyingSolTuple<'a>;
2006            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
2007            const SIGNATURE: &'static str = "StakerAddressZero()";
2008            const SELECTOR: [u8; 4] = [22u8, 242u8, 204u8, 201u8];
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<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
2022                    data,
2023                )
2024                .map(Self::new)
2025            }
2026        }
2027    };
2028    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
2029    /**Custom error with signature `StrategyNotFound()` and selector `0x5be2b482`.
2030    ```solidity
2031    error StrategyNotFound();
2032    ```*/
2033    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2034    #[derive(Clone)]
2035    pub struct StrategyNotFound;
2036    #[allow(
2037        non_camel_case_types,
2038        non_snake_case,
2039        clippy::pub_underscore_fields,
2040        clippy::style
2041    )]
2042    const _: () = {
2043        use alloy::sol_types as alloy_sol_types;
2044        #[doc(hidden)]
2045        type UnderlyingSolTuple<'a> = ();
2046        #[doc(hidden)]
2047        type UnderlyingRustTuple<'a> = ();
2048        #[cfg(test)]
2049        #[allow(dead_code, unreachable_patterns)]
2050        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
2051            match _t {
2052                alloy_sol_types::private::AssertTypeEq::<
2053                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2054                >(_) => {}
2055            }
2056        }
2057        #[automatically_derived]
2058        #[doc(hidden)]
2059        impl ::core::convert::From<StrategyNotFound> for UnderlyingRustTuple<'_> {
2060            fn from(value: StrategyNotFound) -> Self {
2061                ()
2062            }
2063        }
2064        #[automatically_derived]
2065        #[doc(hidden)]
2066        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StrategyNotFound {
2067            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2068                Self
2069            }
2070        }
2071        #[automatically_derived]
2072        impl alloy_sol_types::SolError for StrategyNotFound {
2073            type Parameters<'a> = UnderlyingSolTuple<'a>;
2074            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
2075            const SIGNATURE: &'static str = "StrategyNotFound()";
2076            const SELECTOR: [u8; 4] = [91u8, 226u8, 180u8, 130u8];
2077            #[inline]
2078            fn new<'a>(
2079                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2080            ) -> Self {
2081                tuple.into()
2082            }
2083            #[inline]
2084            fn tokenize(&self) -> Self::Token<'_> {
2085                ()
2086            }
2087            #[inline]
2088            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2089                <Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
2090                    data,
2091                )
2092                .map(Self::new)
2093            }
2094        }
2095    };
2096    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
2097    /**Custom error with signature `StrategyNotWhitelisted()` and selector `0x5dfb2ca2`.
2098    ```solidity
2099    error StrategyNotWhitelisted();
2100    ```*/
2101    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2102    #[derive(Clone)]
2103    pub struct StrategyNotWhitelisted;
2104    #[allow(
2105        non_camel_case_types,
2106        non_snake_case,
2107        clippy::pub_underscore_fields,
2108        clippy::style
2109    )]
2110    const _: () = {
2111        use alloy::sol_types as alloy_sol_types;
2112        #[doc(hidden)]
2113        type UnderlyingSolTuple<'a> = ();
2114        #[doc(hidden)]
2115        type UnderlyingRustTuple<'a> = ();
2116        #[cfg(test)]
2117        #[allow(dead_code, unreachable_patterns)]
2118        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
2119            match _t {
2120                alloy_sol_types::private::AssertTypeEq::<
2121                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2122                >(_) => {}
2123            }
2124        }
2125        #[automatically_derived]
2126        #[doc(hidden)]
2127        impl ::core::convert::From<StrategyNotWhitelisted> for UnderlyingRustTuple<'_> {
2128            fn from(value: StrategyNotWhitelisted) -> Self {
2129                ()
2130            }
2131        }
2132        #[automatically_derived]
2133        #[doc(hidden)]
2134        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StrategyNotWhitelisted {
2135            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2136                Self
2137            }
2138        }
2139        #[automatically_derived]
2140        impl alloy_sol_types::SolError for StrategyNotWhitelisted {
2141            type Parameters<'a> = UnderlyingSolTuple<'a>;
2142            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
2143            const SIGNATURE: &'static str = "StrategyNotWhitelisted()";
2144            const SELECTOR: [u8; 4] = [93u8, 251u8, 44u8, 162u8];
2145            #[inline]
2146            fn new<'a>(
2147                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2148            ) -> Self {
2149                tuple.into()
2150            }
2151            #[inline]
2152            fn tokenize(&self) -> Self::Token<'_> {
2153                ()
2154            }
2155            #[inline]
2156            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2157                <Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
2158                    data,
2159                )
2160                .map(Self::new)
2161            }
2162        }
2163    };
2164    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
2165    /**Custom error with signature `StringTooLong(string)` and selector `0x305a27a9`.
2166    ```solidity
2167    error StringTooLong(string str);
2168    ```*/
2169    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2170    #[derive(Clone)]
2171    pub struct StringTooLong {
2172        #[allow(missing_docs)]
2173        pub str: alloy::sol_types::private::String,
2174    }
2175    #[allow(
2176        non_camel_case_types,
2177        non_snake_case,
2178        clippy::pub_underscore_fields,
2179        clippy::style
2180    )]
2181    const _: () = {
2182        use alloy::sol_types as alloy_sol_types;
2183        #[doc(hidden)]
2184        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
2185        #[doc(hidden)]
2186        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
2187        #[cfg(test)]
2188        #[allow(dead_code, unreachable_patterns)]
2189        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
2190            match _t {
2191                alloy_sol_types::private::AssertTypeEq::<
2192                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2193                >(_) => {}
2194            }
2195        }
2196        #[automatically_derived]
2197        #[doc(hidden)]
2198        impl ::core::convert::From<StringTooLong> for UnderlyingRustTuple<'_> {
2199            fn from(value: StringTooLong) -> Self {
2200                (value.str,)
2201            }
2202        }
2203        #[automatically_derived]
2204        #[doc(hidden)]
2205        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StringTooLong {
2206            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2207                Self { str: tuple.0 }
2208            }
2209        }
2210        #[automatically_derived]
2211        impl alloy_sol_types::SolError for StringTooLong {
2212            type Parameters<'a> = UnderlyingSolTuple<'a>;
2213            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
2214            const SIGNATURE: &'static str = "StringTooLong(string)";
2215            const SELECTOR: [u8; 4] = [48u8, 90u8, 39u8, 169u8];
2216            #[inline]
2217            fn new<'a>(
2218                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2219            ) -> Self {
2220                tuple.into()
2221            }
2222            #[inline]
2223            fn tokenize(&self) -> Self::Token<'_> {
2224                (
2225                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
2226                        &self.str,
2227                    ),
2228                )
2229            }
2230            #[inline]
2231            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2232                <Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
2233                    data,
2234                )
2235                .map(Self::new)
2236            }
2237        }
2238    };
2239    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
2240    /**Event with signature `BurnableSharesDecreased(address,uint256)` and selector `0xd9d082c3ec4f3a3ffa55c324939a06407f5fbcb87d5e0ce3b9508c92c84ed839`.
2241    ```solidity
2242    event BurnableSharesDecreased(address strategy, uint256 shares);
2243    ```*/
2244    #[allow(
2245        non_camel_case_types,
2246        non_snake_case,
2247        clippy::pub_underscore_fields,
2248        clippy::style
2249    )]
2250    #[derive(Clone)]
2251    pub struct BurnableSharesDecreased {
2252        #[allow(missing_docs)]
2253        pub strategy: alloy::sol_types::private::Address,
2254        #[allow(missing_docs)]
2255        pub shares: alloy::sol_types::private::primitives::aliases::U256,
2256    }
2257    #[allow(
2258        non_camel_case_types,
2259        non_snake_case,
2260        clippy::pub_underscore_fields,
2261        clippy::style
2262    )]
2263    const _: () = {
2264        use alloy::sol_types as alloy_sol_types;
2265        #[automatically_derived]
2266        impl alloy_sol_types::SolEvent for BurnableSharesDecreased {
2267            type DataTuple<'a> = (
2268                alloy::sol_types::sol_data::Address,
2269                alloy::sol_types::sol_data::Uint<256>,
2270            );
2271            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
2272            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
2273            const SIGNATURE: &'static str = "BurnableSharesDecreased(address,uint256)";
2274            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
2275                alloy_sol_types::private::B256::new([
2276                    217u8, 208u8, 130u8, 195u8, 236u8, 79u8, 58u8, 63u8, 250u8, 85u8, 195u8, 36u8,
2277                    147u8, 154u8, 6u8, 64u8, 127u8, 95u8, 188u8, 184u8, 125u8, 94u8, 12u8, 227u8,
2278                    185u8, 80u8, 140u8, 146u8, 200u8, 78u8, 216u8, 57u8,
2279                ]);
2280            const ANONYMOUS: bool = false;
2281            #[allow(unused_variables)]
2282            #[inline]
2283            fn new(
2284                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2285                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2286            ) -> Self {
2287                Self {
2288                    strategy: data.0,
2289                    shares: data.1,
2290                }
2291            }
2292            #[inline]
2293            fn check_signature(
2294                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2295            ) -> alloy_sol_types::Result<()> {
2296                if topics.0 != Self::SIGNATURE_HASH {
2297                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
2298                        Self::SIGNATURE,
2299                        topics.0,
2300                        Self::SIGNATURE_HASH,
2301                    ));
2302                }
2303                Ok(())
2304            }
2305            #[inline]
2306            fn tokenize_body(&self) -> Self::DataToken<'_> {
2307                (
2308                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
2309                        &self.strategy,
2310                    ),
2311                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
2312                        &self.shares,
2313                    ),
2314                )
2315            }
2316            #[inline]
2317            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2318                (Self::SIGNATURE_HASH.into(),)
2319            }
2320            #[inline]
2321            fn encode_topics_raw(
2322                &self,
2323                out: &mut [alloy_sol_types::abi::token::WordToken],
2324            ) -> alloy_sol_types::Result<()> {
2325                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2326                    return Err(alloy_sol_types::Error::Overrun);
2327                }
2328                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
2329                Ok(())
2330            }
2331        }
2332        #[automatically_derived]
2333        impl alloy_sol_types::private::IntoLogData for BurnableSharesDecreased {
2334            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2335                From::from(self)
2336            }
2337            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2338                From::from(&self)
2339            }
2340        }
2341        #[automatically_derived]
2342        impl From<&BurnableSharesDecreased> for alloy_sol_types::private::LogData {
2343            #[inline]
2344            fn from(this: &BurnableSharesDecreased) -> alloy_sol_types::private::LogData {
2345                alloy_sol_types::SolEvent::encode_log_data(this)
2346            }
2347        }
2348    };
2349    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
2350    /**Event with signature `BurnableSharesIncreased(address,uint256)` and selector `0xca3e02a4ab7ad3c47a8e36e5a624c30170791726ab720f1babfef21046d953ff`.
2351    ```solidity
2352    event BurnableSharesIncreased(address strategy, uint256 shares);
2353    ```*/
2354    #[allow(
2355        non_camel_case_types,
2356        non_snake_case,
2357        clippy::pub_underscore_fields,
2358        clippy::style
2359    )]
2360    #[derive(Clone)]
2361    pub struct BurnableSharesIncreased {
2362        #[allow(missing_docs)]
2363        pub strategy: alloy::sol_types::private::Address,
2364        #[allow(missing_docs)]
2365        pub shares: alloy::sol_types::private::primitives::aliases::U256,
2366    }
2367    #[allow(
2368        non_camel_case_types,
2369        non_snake_case,
2370        clippy::pub_underscore_fields,
2371        clippy::style
2372    )]
2373    const _: () = {
2374        use alloy::sol_types as alloy_sol_types;
2375        #[automatically_derived]
2376        impl alloy_sol_types::SolEvent for BurnableSharesIncreased {
2377            type DataTuple<'a> = (
2378                alloy::sol_types::sol_data::Address,
2379                alloy::sol_types::sol_data::Uint<256>,
2380            );
2381            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
2382            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
2383            const SIGNATURE: &'static str = "BurnableSharesIncreased(address,uint256)";
2384            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
2385                alloy_sol_types::private::B256::new([
2386                    202u8, 62u8, 2u8, 164u8, 171u8, 122u8, 211u8, 196u8, 122u8, 142u8, 54u8, 229u8,
2387                    166u8, 36u8, 195u8, 1u8, 112u8, 121u8, 23u8, 38u8, 171u8, 114u8, 15u8, 27u8,
2388                    171u8, 254u8, 242u8, 16u8, 70u8, 217u8, 83u8, 255u8,
2389                ]);
2390            const ANONYMOUS: bool = false;
2391            #[allow(unused_variables)]
2392            #[inline]
2393            fn new(
2394                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2395                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2396            ) -> Self {
2397                Self {
2398                    strategy: data.0,
2399                    shares: data.1,
2400                }
2401            }
2402            #[inline]
2403            fn check_signature(
2404                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2405            ) -> alloy_sol_types::Result<()> {
2406                if topics.0 != Self::SIGNATURE_HASH {
2407                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
2408                        Self::SIGNATURE,
2409                        topics.0,
2410                        Self::SIGNATURE_HASH,
2411                    ));
2412                }
2413                Ok(())
2414            }
2415            #[inline]
2416            fn tokenize_body(&self) -> Self::DataToken<'_> {
2417                (
2418                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
2419                        &self.strategy,
2420                    ),
2421                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
2422                        &self.shares,
2423                    ),
2424                )
2425            }
2426            #[inline]
2427            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2428                (Self::SIGNATURE_HASH.into(),)
2429            }
2430            #[inline]
2431            fn encode_topics_raw(
2432                &self,
2433                out: &mut [alloy_sol_types::abi::token::WordToken],
2434            ) -> alloy_sol_types::Result<()> {
2435                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2436                    return Err(alloy_sol_types::Error::Overrun);
2437                }
2438                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
2439                Ok(())
2440            }
2441        }
2442        #[automatically_derived]
2443        impl alloy_sol_types::private::IntoLogData for BurnableSharesIncreased {
2444            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2445                From::from(self)
2446            }
2447            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2448                From::from(&self)
2449            }
2450        }
2451        #[automatically_derived]
2452        impl From<&BurnableSharesIncreased> for alloy_sol_types::private::LogData {
2453            #[inline]
2454            fn from(this: &BurnableSharesIncreased) -> alloy_sol_types::private::LogData {
2455                alloy_sol_types::SolEvent::encode_log_data(this)
2456            }
2457        }
2458    };
2459    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
2460    /**Event with signature `Deposit(address,address,uint256)` and selector `0x5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f62`.
2461    ```solidity
2462    event Deposit(address staker, address strategy, uint256 shares);
2463    ```*/
2464    #[allow(
2465        non_camel_case_types,
2466        non_snake_case,
2467        clippy::pub_underscore_fields,
2468        clippy::style
2469    )]
2470    #[derive(Clone)]
2471    pub struct Deposit {
2472        #[allow(missing_docs)]
2473        pub staker: alloy::sol_types::private::Address,
2474        #[allow(missing_docs)]
2475        pub strategy: alloy::sol_types::private::Address,
2476        #[allow(missing_docs)]
2477        pub shares: alloy::sol_types::private::primitives::aliases::U256,
2478    }
2479    #[allow(
2480        non_camel_case_types,
2481        non_snake_case,
2482        clippy::pub_underscore_fields,
2483        clippy::style
2484    )]
2485    const _: () = {
2486        use alloy::sol_types as alloy_sol_types;
2487        #[automatically_derived]
2488        impl alloy_sol_types::SolEvent for Deposit {
2489            type DataTuple<'a> = (
2490                alloy::sol_types::sol_data::Address,
2491                alloy::sol_types::sol_data::Address,
2492                alloy::sol_types::sol_data::Uint<256>,
2493            );
2494            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
2495            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
2496            const SIGNATURE: &'static str = "Deposit(address,address,uint256)";
2497            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
2498                alloy_sol_types::private::B256::new([
2499                    85u8, 72u8, 200u8, 55u8, 171u8, 6u8, 140u8, 245u8, 106u8, 44u8, 36u8, 121u8,
2500                    223u8, 8u8, 130u8, 164u8, 146u8, 47u8, 210u8, 3u8, 237u8, 183u8, 81u8, 115u8,
2501                    33u8, 131u8, 29u8, 149u8, 7u8, 140u8, 95u8, 98u8,
2502                ]);
2503            const ANONYMOUS: bool = false;
2504            #[allow(unused_variables)]
2505            #[inline]
2506            fn new(
2507                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2508                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2509            ) -> Self {
2510                Self {
2511                    staker: data.0,
2512                    strategy: data.1,
2513                    shares: data.2,
2514                }
2515            }
2516            #[inline]
2517            fn check_signature(
2518                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2519            ) -> alloy_sol_types::Result<()> {
2520                if topics.0 != Self::SIGNATURE_HASH {
2521                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
2522                        Self::SIGNATURE,
2523                        topics.0,
2524                        Self::SIGNATURE_HASH,
2525                    ));
2526                }
2527                Ok(())
2528            }
2529            #[inline]
2530            fn tokenize_body(&self) -> Self::DataToken<'_> {
2531                (
2532                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
2533                        &self.staker,
2534                    ),
2535                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
2536                        &self.strategy,
2537                    ),
2538                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
2539                        &self.shares,
2540                    ),
2541                )
2542            }
2543            #[inline]
2544            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2545                (Self::SIGNATURE_HASH.into(),)
2546            }
2547            #[inline]
2548            fn encode_topics_raw(
2549                &self,
2550                out: &mut [alloy_sol_types::abi::token::WordToken],
2551            ) -> alloy_sol_types::Result<()> {
2552                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2553                    return Err(alloy_sol_types::Error::Overrun);
2554                }
2555                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
2556                Ok(())
2557            }
2558        }
2559        #[automatically_derived]
2560        impl alloy_sol_types::private::IntoLogData for Deposit {
2561            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2562                From::from(self)
2563            }
2564            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2565                From::from(&self)
2566            }
2567        }
2568        #[automatically_derived]
2569        impl From<&Deposit> for alloy_sol_types::private::LogData {
2570            #[inline]
2571            fn from(this: &Deposit) -> alloy_sol_types::private::LogData {
2572                alloy_sol_types::SolEvent::encode_log_data(this)
2573            }
2574        }
2575    };
2576    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
2577    /**Event with signature `Initialized(uint8)` and selector `0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498`.
2578    ```solidity
2579    event Initialized(uint8 version);
2580    ```*/
2581    #[allow(
2582        non_camel_case_types,
2583        non_snake_case,
2584        clippy::pub_underscore_fields,
2585        clippy::style
2586    )]
2587    #[derive(Clone)]
2588    pub struct Initialized {
2589        #[allow(missing_docs)]
2590        pub version: u8,
2591    }
2592    #[allow(
2593        non_camel_case_types,
2594        non_snake_case,
2595        clippy::pub_underscore_fields,
2596        clippy::style
2597    )]
2598    const _: () = {
2599        use alloy::sol_types as alloy_sol_types;
2600        #[automatically_derived]
2601        impl alloy_sol_types::SolEvent for Initialized {
2602            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,);
2603            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
2604            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
2605            const SIGNATURE: &'static str = "Initialized(uint8)";
2606            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
2607                alloy_sol_types::private::B256::new([
2608                    127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8, 19u8,
2609                    56u8, 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8, 146u8, 20u8,
2610                    96u8, 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8,
2611                ]);
2612            const ANONYMOUS: bool = false;
2613            #[allow(unused_variables)]
2614            #[inline]
2615            fn new(
2616                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2617                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2618            ) -> Self {
2619                Self { version: data.0 }
2620            }
2621            #[inline]
2622            fn check_signature(
2623                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2624            ) -> alloy_sol_types::Result<()> {
2625                if topics.0 != Self::SIGNATURE_HASH {
2626                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
2627                        Self::SIGNATURE,
2628                        topics.0,
2629                        Self::SIGNATURE_HASH,
2630                    ));
2631                }
2632                Ok(())
2633            }
2634            #[inline]
2635            fn tokenize_body(&self) -> Self::DataToken<'_> {
2636                (
2637                    <alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::SolType>::tokenize(
2638                        &self.version,
2639                    ),
2640                )
2641            }
2642            #[inline]
2643            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2644                (Self::SIGNATURE_HASH.into(),)
2645            }
2646            #[inline]
2647            fn encode_topics_raw(
2648                &self,
2649                out: &mut [alloy_sol_types::abi::token::WordToken],
2650            ) -> alloy_sol_types::Result<()> {
2651                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2652                    return Err(alloy_sol_types::Error::Overrun);
2653                }
2654                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
2655                Ok(())
2656            }
2657        }
2658        #[automatically_derived]
2659        impl alloy_sol_types::private::IntoLogData for Initialized {
2660            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2661                From::from(self)
2662            }
2663            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2664                From::from(&self)
2665            }
2666        }
2667        #[automatically_derived]
2668        impl From<&Initialized> for alloy_sol_types::private::LogData {
2669            #[inline]
2670            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
2671                alloy_sol_types::SolEvent::encode_log_data(this)
2672            }
2673        }
2674    };
2675    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
2676    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
2677    ```solidity
2678    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
2679    ```*/
2680    #[allow(
2681        non_camel_case_types,
2682        non_snake_case,
2683        clippy::pub_underscore_fields,
2684        clippy::style
2685    )]
2686    #[derive(Clone)]
2687    pub struct OwnershipTransferred {
2688        #[allow(missing_docs)]
2689        pub previousOwner: alloy::sol_types::private::Address,
2690        #[allow(missing_docs)]
2691        pub newOwner: alloy::sol_types::private::Address,
2692    }
2693    #[allow(
2694        non_camel_case_types,
2695        non_snake_case,
2696        clippy::pub_underscore_fields,
2697        clippy::style
2698    )]
2699    const _: () = {
2700        use alloy::sol_types as alloy_sol_types;
2701        #[automatically_derived]
2702        impl alloy_sol_types::SolEvent for OwnershipTransferred {
2703            type DataTuple<'a> = ();
2704            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
2705            type TopicList = (
2706                alloy_sol_types::sol_data::FixedBytes<32>,
2707                alloy::sol_types::sol_data::Address,
2708                alloy::sol_types::sol_data::Address,
2709            );
2710            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
2711            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
2712                alloy_sol_types::private::B256::new([
2713                    139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8, 31u8,
2714                    208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8, 218u8,
2715                    175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
2716                ]);
2717            const ANONYMOUS: bool = false;
2718            #[allow(unused_variables)]
2719            #[inline]
2720            fn new(
2721                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2722                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2723            ) -> Self {
2724                Self {
2725                    previousOwner: topics.1,
2726                    newOwner: topics.2,
2727                }
2728            }
2729            #[inline]
2730            fn check_signature(
2731                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2732            ) -> alloy_sol_types::Result<()> {
2733                if topics.0 != Self::SIGNATURE_HASH {
2734                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
2735                        Self::SIGNATURE,
2736                        topics.0,
2737                        Self::SIGNATURE_HASH,
2738                    ));
2739                }
2740                Ok(())
2741            }
2742            #[inline]
2743            fn tokenize_body(&self) -> Self::DataToken<'_> {
2744                ()
2745            }
2746            #[inline]
2747            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2748                (
2749                    Self::SIGNATURE_HASH.into(),
2750                    self.previousOwner.clone(),
2751                    self.newOwner.clone(),
2752                )
2753            }
2754            #[inline]
2755            fn encode_topics_raw(
2756                &self,
2757                out: &mut [alloy_sol_types::abi::token::WordToken],
2758            ) -> alloy_sol_types::Result<()> {
2759                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2760                    return Err(alloy_sol_types::Error::Overrun);
2761                }
2762                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
2763                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
2764                    &self.previousOwner,
2765                );
2766                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
2767                    &self.newOwner,
2768                );
2769                Ok(())
2770            }
2771        }
2772        #[automatically_derived]
2773        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
2774            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2775                From::from(self)
2776            }
2777            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2778                From::from(&self)
2779            }
2780        }
2781        #[automatically_derived]
2782        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
2783            #[inline]
2784            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
2785                alloy_sol_types::SolEvent::encode_log_data(this)
2786            }
2787        }
2788    };
2789    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
2790    /**Event with signature `Paused(address,uint256)` and selector `0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d`.
2791    ```solidity
2792    event Paused(address indexed account, uint256 newPausedStatus);
2793    ```*/
2794    #[allow(
2795        non_camel_case_types,
2796        non_snake_case,
2797        clippy::pub_underscore_fields,
2798        clippy::style
2799    )]
2800    #[derive(Clone)]
2801    pub struct Paused {
2802        #[allow(missing_docs)]
2803        pub account: alloy::sol_types::private::Address,
2804        #[allow(missing_docs)]
2805        pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256,
2806    }
2807    #[allow(
2808        non_camel_case_types,
2809        non_snake_case,
2810        clippy::pub_underscore_fields,
2811        clippy::style
2812    )]
2813    const _: () = {
2814        use alloy::sol_types as alloy_sol_types;
2815        #[automatically_derived]
2816        impl alloy_sol_types::SolEvent for Paused {
2817            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
2818            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
2819            type TopicList = (
2820                alloy_sol_types::sol_data::FixedBytes<32>,
2821                alloy::sol_types::sol_data::Address,
2822            );
2823            const SIGNATURE: &'static str = "Paused(address,uint256)";
2824            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
2825                alloy_sol_types::private::B256::new([
2826                    171u8, 64u8, 163u8, 116u8, 188u8, 81u8, 222u8, 55u8, 34u8, 0u8, 168u8, 188u8,
2827                    152u8, 26u8, 248u8, 201u8, 236u8, 220u8, 8u8, 223u8, 218u8, 239u8, 11u8, 182u8,
2828                    224u8, 159u8, 136u8, 243u8, 198u8, 22u8, 239u8, 61u8,
2829                ]);
2830            const ANONYMOUS: bool = false;
2831            #[allow(unused_variables)]
2832            #[inline]
2833            fn new(
2834                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2835                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2836            ) -> Self {
2837                Self {
2838                    account: topics.1,
2839                    newPausedStatus: data.0,
2840                }
2841            }
2842            #[inline]
2843            fn check_signature(
2844                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2845            ) -> alloy_sol_types::Result<()> {
2846                if topics.0 != Self::SIGNATURE_HASH {
2847                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
2848                        Self::SIGNATURE,
2849                        topics.0,
2850                        Self::SIGNATURE_HASH,
2851                    ));
2852                }
2853                Ok(())
2854            }
2855            #[inline]
2856            fn tokenize_body(&self) -> Self::DataToken<'_> {
2857                (
2858                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
2859                        &self.newPausedStatus,
2860                    ),
2861                )
2862            }
2863            #[inline]
2864            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2865                (Self::SIGNATURE_HASH.into(), self.account.clone())
2866            }
2867            #[inline]
2868            fn encode_topics_raw(
2869                &self,
2870                out: &mut [alloy_sol_types::abi::token::WordToken],
2871            ) -> alloy_sol_types::Result<()> {
2872                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2873                    return Err(alloy_sol_types::Error::Overrun);
2874                }
2875                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
2876                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
2877                    &self.account,
2878                );
2879                Ok(())
2880            }
2881        }
2882        #[automatically_derived]
2883        impl alloy_sol_types::private::IntoLogData for Paused {
2884            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2885                From::from(self)
2886            }
2887            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2888                From::from(&self)
2889            }
2890        }
2891        #[automatically_derived]
2892        impl From<&Paused> for alloy_sol_types::private::LogData {
2893            #[inline]
2894            fn from(this: &Paused) -> alloy_sol_types::private::LogData {
2895                alloy_sol_types::SolEvent::encode_log_data(this)
2896            }
2897        }
2898    };
2899    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
2900    /**Event with signature `StrategyAddedToDepositWhitelist(address)` and selector `0x0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe`.
2901    ```solidity
2902    event StrategyAddedToDepositWhitelist(address strategy);
2903    ```*/
2904    #[allow(
2905        non_camel_case_types,
2906        non_snake_case,
2907        clippy::pub_underscore_fields,
2908        clippy::style
2909    )]
2910    #[derive(Clone)]
2911    pub struct StrategyAddedToDepositWhitelist {
2912        #[allow(missing_docs)]
2913        pub strategy: alloy::sol_types::private::Address,
2914    }
2915    #[allow(
2916        non_camel_case_types,
2917        non_snake_case,
2918        clippy::pub_underscore_fields,
2919        clippy::style
2920    )]
2921    const _: () = {
2922        use alloy::sol_types as alloy_sol_types;
2923        #[automatically_derived]
2924        impl alloy_sol_types::SolEvent for StrategyAddedToDepositWhitelist {
2925            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
2926            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
2927            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
2928            const SIGNATURE: &'static str = "StrategyAddedToDepositWhitelist(address)";
2929            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
2930                alloy_sol_types::private::B256::new([
2931                    12u8, 53u8, 177u8, 125u8, 145u8, 201u8, 110u8, 178u8, 117u8, 28u8, 212u8, 86u8,
2932                    225u8, 37u8, 47u8, 66u8, 163u8, 134u8, 229u8, 36u8, 239u8, 159u8, 242u8, 110u8,
2933                    204u8, 153u8, 80u8, 133u8, 159u8, 220u8, 4u8, 254u8,
2934                ]);
2935            const ANONYMOUS: bool = false;
2936            #[allow(unused_variables)]
2937            #[inline]
2938            fn new(
2939                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2940                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2941            ) -> Self {
2942                Self { strategy: data.0 }
2943            }
2944            #[inline]
2945            fn check_signature(
2946                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2947            ) -> alloy_sol_types::Result<()> {
2948                if topics.0 != Self::SIGNATURE_HASH {
2949                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
2950                        Self::SIGNATURE,
2951                        topics.0,
2952                        Self::SIGNATURE_HASH,
2953                    ));
2954                }
2955                Ok(())
2956            }
2957            #[inline]
2958            fn tokenize_body(&self) -> Self::DataToken<'_> {
2959                (
2960                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
2961                        &self.strategy,
2962                    ),
2963                )
2964            }
2965            #[inline]
2966            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2967                (Self::SIGNATURE_HASH.into(),)
2968            }
2969            #[inline]
2970            fn encode_topics_raw(
2971                &self,
2972                out: &mut [alloy_sol_types::abi::token::WordToken],
2973            ) -> alloy_sol_types::Result<()> {
2974                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2975                    return Err(alloy_sol_types::Error::Overrun);
2976                }
2977                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
2978                Ok(())
2979            }
2980        }
2981        #[automatically_derived]
2982        impl alloy_sol_types::private::IntoLogData for StrategyAddedToDepositWhitelist {
2983            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2984                From::from(self)
2985            }
2986            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2987                From::from(&self)
2988            }
2989        }
2990        #[automatically_derived]
2991        impl From<&StrategyAddedToDepositWhitelist> for alloy_sol_types::private::LogData {
2992            #[inline]
2993            fn from(this: &StrategyAddedToDepositWhitelist) -> alloy_sol_types::private::LogData {
2994                alloy_sol_types::SolEvent::encode_log_data(this)
2995            }
2996        }
2997    };
2998    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
2999    /**Event with signature `StrategyRemovedFromDepositWhitelist(address)` and selector `0x4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030`.
3000    ```solidity
3001    event StrategyRemovedFromDepositWhitelist(address strategy);
3002    ```*/
3003    #[allow(
3004        non_camel_case_types,
3005        non_snake_case,
3006        clippy::pub_underscore_fields,
3007        clippy::style
3008    )]
3009    #[derive(Clone)]
3010    pub struct StrategyRemovedFromDepositWhitelist {
3011        #[allow(missing_docs)]
3012        pub strategy: alloy::sol_types::private::Address,
3013    }
3014    #[allow(
3015        non_camel_case_types,
3016        non_snake_case,
3017        clippy::pub_underscore_fields,
3018        clippy::style
3019    )]
3020    const _: () = {
3021        use alloy::sol_types as alloy_sol_types;
3022        #[automatically_derived]
3023        impl alloy_sol_types::SolEvent for StrategyRemovedFromDepositWhitelist {
3024            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
3025            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
3026            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
3027            const SIGNATURE: &'static str = "StrategyRemovedFromDepositWhitelist(address)";
3028            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
3029                alloy_sol_types::private::B256::new([
3030                    64u8, 116u8, 65u8, 59u8, 75u8, 68u8, 62u8, 78u8, 88u8, 1u8, 159u8, 40u8, 85u8,
3031                    168u8, 118u8, 81u8, 19u8, 53u8, 140u8, 124u8, 114u8, 227u8, 149u8, 9u8, 198u8,
3032                    175u8, 69u8, 252u8, 15u8, 91u8, 160u8, 48u8,
3033                ]);
3034            const ANONYMOUS: bool = false;
3035            #[allow(unused_variables)]
3036            #[inline]
3037            fn new(
3038                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
3039                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
3040            ) -> Self {
3041                Self { strategy: data.0 }
3042            }
3043            #[inline]
3044            fn check_signature(
3045                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
3046            ) -> alloy_sol_types::Result<()> {
3047                if topics.0 != Self::SIGNATURE_HASH {
3048                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
3049                        Self::SIGNATURE,
3050                        topics.0,
3051                        Self::SIGNATURE_HASH,
3052                    ));
3053                }
3054                Ok(())
3055            }
3056            #[inline]
3057            fn tokenize_body(&self) -> Self::DataToken<'_> {
3058                (
3059                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3060                        &self.strategy,
3061                    ),
3062                )
3063            }
3064            #[inline]
3065            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
3066                (Self::SIGNATURE_HASH.into(),)
3067            }
3068            #[inline]
3069            fn encode_topics_raw(
3070                &self,
3071                out: &mut [alloy_sol_types::abi::token::WordToken],
3072            ) -> alloy_sol_types::Result<()> {
3073                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
3074                    return Err(alloy_sol_types::Error::Overrun);
3075                }
3076                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
3077                Ok(())
3078            }
3079        }
3080        #[automatically_derived]
3081        impl alloy_sol_types::private::IntoLogData for StrategyRemovedFromDepositWhitelist {
3082            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3083                From::from(self)
3084            }
3085            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3086                From::from(&self)
3087            }
3088        }
3089        #[automatically_derived]
3090        impl From<&StrategyRemovedFromDepositWhitelist> for alloy_sol_types::private::LogData {
3091            #[inline]
3092            fn from(
3093                this: &StrategyRemovedFromDepositWhitelist,
3094            ) -> alloy_sol_types::private::LogData {
3095                alloy_sol_types::SolEvent::encode_log_data(this)
3096            }
3097        }
3098    };
3099    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
3100    /**Event with signature `StrategyWhitelisterChanged(address,address)` and selector `0x4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29`.
3101    ```solidity
3102    event StrategyWhitelisterChanged(address previousAddress, address newAddress);
3103    ```*/
3104    #[allow(
3105        non_camel_case_types,
3106        non_snake_case,
3107        clippy::pub_underscore_fields,
3108        clippy::style
3109    )]
3110    #[derive(Clone)]
3111    pub struct StrategyWhitelisterChanged {
3112        #[allow(missing_docs)]
3113        pub previousAddress: alloy::sol_types::private::Address,
3114        #[allow(missing_docs)]
3115        pub newAddress: alloy::sol_types::private::Address,
3116    }
3117    #[allow(
3118        non_camel_case_types,
3119        non_snake_case,
3120        clippy::pub_underscore_fields,
3121        clippy::style
3122    )]
3123    const _: () = {
3124        use alloy::sol_types as alloy_sol_types;
3125        #[automatically_derived]
3126        impl alloy_sol_types::SolEvent for StrategyWhitelisterChanged {
3127            type DataTuple<'a> = (
3128                alloy::sol_types::sol_data::Address,
3129                alloy::sol_types::sol_data::Address,
3130            );
3131            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
3132            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
3133            const SIGNATURE: &'static str = "StrategyWhitelisterChanged(address,address)";
3134            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
3135                alloy_sol_types::private::B256::new([
3136                    66u8, 100u8, 39u8, 94u8, 89u8, 57u8, 85u8, 255u8, 157u8, 97u8, 70u8, 165u8,
3137                    26u8, 69u8, 37u8, 246u8, 221u8, 172u8, 226u8, 232u8, 29u8, 185u8, 57u8, 26u8,
3138                    188u8, 201u8, 209u8, 202u8, 72u8, 4u8, 125u8, 41u8,
3139                ]);
3140            const ANONYMOUS: bool = false;
3141            #[allow(unused_variables)]
3142            #[inline]
3143            fn new(
3144                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
3145                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
3146            ) -> Self {
3147                Self {
3148                    previousAddress: data.0,
3149                    newAddress: data.1,
3150                }
3151            }
3152            #[inline]
3153            fn check_signature(
3154                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
3155            ) -> alloy_sol_types::Result<()> {
3156                if topics.0 != Self::SIGNATURE_HASH {
3157                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
3158                        Self::SIGNATURE,
3159                        topics.0,
3160                        Self::SIGNATURE_HASH,
3161                    ));
3162                }
3163                Ok(())
3164            }
3165            #[inline]
3166            fn tokenize_body(&self) -> Self::DataToken<'_> {
3167                (
3168                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3169                        &self.previousAddress,
3170                    ),
3171                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3172                        &self.newAddress,
3173                    ),
3174                )
3175            }
3176            #[inline]
3177            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
3178                (Self::SIGNATURE_HASH.into(),)
3179            }
3180            #[inline]
3181            fn encode_topics_raw(
3182                &self,
3183                out: &mut [alloy_sol_types::abi::token::WordToken],
3184            ) -> alloy_sol_types::Result<()> {
3185                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
3186                    return Err(alloy_sol_types::Error::Overrun);
3187                }
3188                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
3189                Ok(())
3190            }
3191        }
3192        #[automatically_derived]
3193        impl alloy_sol_types::private::IntoLogData for StrategyWhitelisterChanged {
3194            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3195                From::from(self)
3196            }
3197            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3198                From::from(&self)
3199            }
3200        }
3201        #[automatically_derived]
3202        impl From<&StrategyWhitelisterChanged> for alloy_sol_types::private::LogData {
3203            #[inline]
3204            fn from(this: &StrategyWhitelisterChanged) -> alloy_sol_types::private::LogData {
3205                alloy_sol_types::SolEvent::encode_log_data(this)
3206            }
3207        }
3208    };
3209    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
3210    /**Event with signature `Unpaused(address,uint256)` and selector `0x3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c`.
3211    ```solidity
3212    event Unpaused(address indexed account, uint256 newPausedStatus);
3213    ```*/
3214    #[allow(
3215        non_camel_case_types,
3216        non_snake_case,
3217        clippy::pub_underscore_fields,
3218        clippy::style
3219    )]
3220    #[derive(Clone)]
3221    pub struct Unpaused {
3222        #[allow(missing_docs)]
3223        pub account: alloy::sol_types::private::Address,
3224        #[allow(missing_docs)]
3225        pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256,
3226    }
3227    #[allow(
3228        non_camel_case_types,
3229        non_snake_case,
3230        clippy::pub_underscore_fields,
3231        clippy::style
3232    )]
3233    const _: () = {
3234        use alloy::sol_types as alloy_sol_types;
3235        #[automatically_derived]
3236        impl alloy_sol_types::SolEvent for Unpaused {
3237            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
3238            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
3239            type TopicList = (
3240                alloy_sol_types::sol_data::FixedBytes<32>,
3241                alloy::sol_types::sol_data::Address,
3242            );
3243            const SIGNATURE: &'static str = "Unpaused(address,uint256)";
3244            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
3245                alloy_sol_types::private::B256::new([
3246                    53u8, 130u8, 209u8, 130u8, 142u8, 38u8, 191u8, 86u8, 189u8, 128u8, 21u8, 2u8,
3247                    188u8, 2u8, 26u8, 192u8, 188u8, 138u8, 251u8, 87u8, 200u8, 38u8, 228u8, 152u8,
3248                    107u8, 69u8, 89u8, 60u8, 143u8, 173u8, 56u8, 156u8,
3249                ]);
3250            const ANONYMOUS: bool = false;
3251            #[allow(unused_variables)]
3252            #[inline]
3253            fn new(
3254                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
3255                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
3256            ) -> Self {
3257                Self {
3258                    account: topics.1,
3259                    newPausedStatus: data.0,
3260                }
3261            }
3262            #[inline]
3263            fn check_signature(
3264                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
3265            ) -> alloy_sol_types::Result<()> {
3266                if topics.0 != Self::SIGNATURE_HASH {
3267                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
3268                        Self::SIGNATURE,
3269                        topics.0,
3270                        Self::SIGNATURE_HASH,
3271                    ));
3272                }
3273                Ok(())
3274            }
3275            #[inline]
3276            fn tokenize_body(&self) -> Self::DataToken<'_> {
3277                (
3278                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
3279                        &self.newPausedStatus,
3280                    ),
3281                )
3282            }
3283            #[inline]
3284            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
3285                (Self::SIGNATURE_HASH.into(), self.account.clone())
3286            }
3287            #[inline]
3288            fn encode_topics_raw(
3289                &self,
3290                out: &mut [alloy_sol_types::abi::token::WordToken],
3291            ) -> alloy_sol_types::Result<()> {
3292                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
3293                    return Err(alloy_sol_types::Error::Overrun);
3294                }
3295                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
3296                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
3297                    &self.account,
3298                );
3299                Ok(())
3300            }
3301        }
3302        #[automatically_derived]
3303        impl alloy_sol_types::private::IntoLogData for Unpaused {
3304            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3305                From::from(self)
3306            }
3307            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3308                From::from(&self)
3309            }
3310        }
3311        #[automatically_derived]
3312        impl From<&Unpaused> for alloy_sol_types::private::LogData {
3313            #[inline]
3314            fn from(this: &Unpaused) -> alloy_sol_types::private::LogData {
3315                alloy_sol_types::SolEvent::encode_log_data(this)
3316            }
3317        }
3318    };
3319    /**Constructor`.
3320    ```solidity
3321    constructor(address _delegation, address _pauserRegistry, string _version);
3322    ```*/
3323    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3324    #[derive(Clone)]
3325    pub struct constructorCall {
3326        #[allow(missing_docs)]
3327        pub _delegation: alloy::sol_types::private::Address,
3328        #[allow(missing_docs)]
3329        pub _pauserRegistry: alloy::sol_types::private::Address,
3330        #[allow(missing_docs)]
3331        pub _version: alloy::sol_types::private::String,
3332    }
3333    const _: () = {
3334        use alloy::sol_types as alloy_sol_types;
3335        {
3336            #[doc(hidden)]
3337            type UnderlyingSolTuple<'a> = (
3338                alloy::sol_types::sol_data::Address,
3339                alloy::sol_types::sol_data::Address,
3340                alloy::sol_types::sol_data::String,
3341            );
3342            #[doc(hidden)]
3343            type UnderlyingRustTuple<'a> = (
3344                alloy::sol_types::private::Address,
3345                alloy::sol_types::private::Address,
3346                alloy::sol_types::private::String,
3347            );
3348            #[cfg(test)]
3349            #[allow(dead_code, unreachable_patterns)]
3350            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3351                match _t {
3352                    alloy_sol_types::private::AssertTypeEq::<
3353                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3354                    >(_) => {}
3355                }
3356            }
3357            #[automatically_derived]
3358            #[doc(hidden)]
3359            impl ::core::convert::From<constructorCall> for UnderlyingRustTuple<'_> {
3360                fn from(value: constructorCall) -> Self {
3361                    (value._delegation, value._pauserRegistry, value._version)
3362                }
3363            }
3364            #[automatically_derived]
3365            #[doc(hidden)]
3366            impl ::core::convert::From<UnderlyingRustTuple<'_>> for constructorCall {
3367                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3368                    Self {
3369                        _delegation: tuple.0,
3370                        _pauserRegistry: tuple.1,
3371                        _version: tuple.2,
3372                    }
3373                }
3374            }
3375        }
3376        #[automatically_derived]
3377        impl alloy_sol_types::SolConstructor for constructorCall {
3378            type Parameters<'a> = (
3379                alloy::sol_types::sol_data::Address,
3380                alloy::sol_types::sol_data::Address,
3381                alloy::sol_types::sol_data::String,
3382            );
3383            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
3384            #[inline]
3385            fn new<'a>(
3386                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3387            ) -> Self {
3388                tuple.into()
3389            }
3390            #[inline]
3391            fn tokenize(&self) -> Self::Token<'_> {
3392                (
3393                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3394                        &self._delegation,
3395                    ),
3396                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3397                        &self._pauserRegistry,
3398                    ),
3399                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
3400                        &self._version,
3401                    ),
3402                )
3403            }
3404        }
3405    };
3406    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
3407    /**Function with signature `DEFAULT_BURN_ADDRESS()` and selector `0xf3b4a000`.
3408    ```solidity
3409    function DEFAULT_BURN_ADDRESS() external view returns (address);
3410    ```*/
3411    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3412    #[derive(Clone)]
3413    pub struct DEFAULT_BURN_ADDRESSCall;
3414    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
3415    ///Container type for the return parameters of the [`DEFAULT_BURN_ADDRESS()`](DEFAULT_BURN_ADDRESSCall) function.
3416    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3417    #[derive(Clone)]
3418    pub struct DEFAULT_BURN_ADDRESSReturn {
3419        #[allow(missing_docs)]
3420        pub _0: alloy::sol_types::private::Address,
3421    }
3422    #[allow(
3423        non_camel_case_types,
3424        non_snake_case,
3425        clippy::pub_underscore_fields,
3426        clippy::style
3427    )]
3428    const _: () = {
3429        use alloy::sol_types as alloy_sol_types;
3430        {
3431            #[doc(hidden)]
3432            type UnderlyingSolTuple<'a> = ();
3433            #[doc(hidden)]
3434            type UnderlyingRustTuple<'a> = ();
3435            #[cfg(test)]
3436            #[allow(dead_code, unreachable_patterns)]
3437            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3438                match _t {
3439                    alloy_sol_types::private::AssertTypeEq::<
3440                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3441                    >(_) => {}
3442                }
3443            }
3444            #[automatically_derived]
3445            #[doc(hidden)]
3446            impl ::core::convert::From<DEFAULT_BURN_ADDRESSCall> for UnderlyingRustTuple<'_> {
3447                fn from(value: DEFAULT_BURN_ADDRESSCall) -> Self {
3448                    ()
3449                }
3450            }
3451            #[automatically_derived]
3452            #[doc(hidden)]
3453            impl ::core::convert::From<UnderlyingRustTuple<'_>> for DEFAULT_BURN_ADDRESSCall {
3454                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3455                    Self
3456                }
3457            }
3458        }
3459        {
3460            #[doc(hidden)]
3461            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
3462            #[doc(hidden)]
3463            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
3464            #[cfg(test)]
3465            #[allow(dead_code, unreachable_patterns)]
3466            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3467                match _t {
3468                    alloy_sol_types::private::AssertTypeEq::<
3469                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3470                    >(_) => {}
3471                }
3472            }
3473            #[automatically_derived]
3474            #[doc(hidden)]
3475            impl ::core::convert::From<DEFAULT_BURN_ADDRESSReturn> for UnderlyingRustTuple<'_> {
3476                fn from(value: DEFAULT_BURN_ADDRESSReturn) -> Self {
3477                    (value._0,)
3478                }
3479            }
3480            #[automatically_derived]
3481            #[doc(hidden)]
3482            impl ::core::convert::From<UnderlyingRustTuple<'_>> for DEFAULT_BURN_ADDRESSReturn {
3483                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3484                    Self { _0: tuple.0 }
3485                }
3486            }
3487        }
3488        #[automatically_derived]
3489        impl alloy_sol_types::SolCall for DEFAULT_BURN_ADDRESSCall {
3490            type Parameters<'a> = ();
3491            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
3492            type Return = alloy::sol_types::private::Address;
3493            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
3494            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
3495            const SIGNATURE: &'static str = "DEFAULT_BURN_ADDRESS()";
3496            const SELECTOR: [u8; 4] = [243u8, 180u8, 160u8, 0u8];
3497            #[inline]
3498            fn new<'a>(
3499                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3500            ) -> Self {
3501                tuple.into()
3502            }
3503            #[inline]
3504            fn tokenize(&self) -> Self::Token<'_> {
3505                ()
3506            }
3507            #[inline]
3508            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
3509                (
3510                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3511                        ret,
3512                    ),
3513                )
3514            }
3515            #[inline]
3516            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
3517                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
3518                    |r| {
3519                        let r: DEFAULT_BURN_ADDRESSReturn = r.into();
3520                        r._0
3521                    },
3522                )
3523            }
3524            #[inline]
3525            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
3526                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
3527                    data,
3528                )
3529                .map(|r| {
3530                    let r: DEFAULT_BURN_ADDRESSReturn = r.into();
3531                    r._0
3532                })
3533            }
3534        }
3535    };
3536    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
3537    /**Function with signature `DEPOSIT_TYPEHASH()` and selector `0x48825e94`.
3538    ```solidity
3539    function DEPOSIT_TYPEHASH() external view returns (bytes32);
3540    ```*/
3541    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3542    #[derive(Clone)]
3543    pub struct DEPOSIT_TYPEHASHCall;
3544    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
3545    ///Container type for the return parameters of the [`DEPOSIT_TYPEHASH()`](DEPOSIT_TYPEHASHCall) function.
3546    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3547    #[derive(Clone)]
3548    pub struct DEPOSIT_TYPEHASHReturn {
3549        #[allow(missing_docs)]
3550        pub _0: alloy::sol_types::private::FixedBytes<32>,
3551    }
3552    #[allow(
3553        non_camel_case_types,
3554        non_snake_case,
3555        clippy::pub_underscore_fields,
3556        clippy::style
3557    )]
3558    const _: () = {
3559        use alloy::sol_types as alloy_sol_types;
3560        {
3561            #[doc(hidden)]
3562            type UnderlyingSolTuple<'a> = ();
3563            #[doc(hidden)]
3564            type UnderlyingRustTuple<'a> = ();
3565            #[cfg(test)]
3566            #[allow(dead_code, unreachable_patterns)]
3567            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3568                match _t {
3569                    alloy_sol_types::private::AssertTypeEq::<
3570                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3571                    >(_) => {}
3572                }
3573            }
3574            #[automatically_derived]
3575            #[doc(hidden)]
3576            impl ::core::convert::From<DEPOSIT_TYPEHASHCall> for UnderlyingRustTuple<'_> {
3577                fn from(value: DEPOSIT_TYPEHASHCall) -> Self {
3578                    ()
3579                }
3580            }
3581            #[automatically_derived]
3582            #[doc(hidden)]
3583            impl ::core::convert::From<UnderlyingRustTuple<'_>> for DEPOSIT_TYPEHASHCall {
3584                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3585                    Self
3586                }
3587            }
3588        }
3589        {
3590            #[doc(hidden)]
3591            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
3592            #[doc(hidden)]
3593            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
3594            #[cfg(test)]
3595            #[allow(dead_code, unreachable_patterns)]
3596            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3597                match _t {
3598                    alloy_sol_types::private::AssertTypeEq::<
3599                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3600                    >(_) => {}
3601                }
3602            }
3603            #[automatically_derived]
3604            #[doc(hidden)]
3605            impl ::core::convert::From<DEPOSIT_TYPEHASHReturn> for UnderlyingRustTuple<'_> {
3606                fn from(value: DEPOSIT_TYPEHASHReturn) -> Self {
3607                    (value._0,)
3608                }
3609            }
3610            #[automatically_derived]
3611            #[doc(hidden)]
3612            impl ::core::convert::From<UnderlyingRustTuple<'_>> for DEPOSIT_TYPEHASHReturn {
3613                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3614                    Self { _0: tuple.0 }
3615                }
3616            }
3617        }
3618        #[automatically_derived]
3619        impl alloy_sol_types::SolCall for DEPOSIT_TYPEHASHCall {
3620            type Parameters<'a> = ();
3621            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
3622            type Return = alloy::sol_types::private::FixedBytes<32>;
3623            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
3624            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
3625            const SIGNATURE: &'static str = "DEPOSIT_TYPEHASH()";
3626            const SELECTOR: [u8; 4] = [72u8, 130u8, 94u8, 148u8];
3627            #[inline]
3628            fn new<'a>(
3629                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3630            ) -> Self {
3631                tuple.into()
3632            }
3633            #[inline]
3634            fn tokenize(&self) -> Self::Token<'_> {
3635                ()
3636            }
3637            #[inline]
3638            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
3639                (
3640                    <alloy::sol_types::sol_data::FixedBytes<
3641                        32,
3642                    > as alloy_sol_types::SolType>::tokenize(ret),
3643                )
3644            }
3645            #[inline]
3646            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
3647                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
3648                    |r| {
3649                        let r: DEPOSIT_TYPEHASHReturn = r.into();
3650                        r._0
3651                    },
3652                )
3653            }
3654            #[inline]
3655            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
3656                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
3657                    data,
3658                )
3659                .map(|r| {
3660                    let r: DEPOSIT_TYPEHASHReturn = r.into();
3661                    r._0
3662                })
3663            }
3664        }
3665    };
3666    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
3667    /**Function with signature `addShares(address,address,uint256)` and selector `0x50ff7225`.
3668    ```solidity
3669    function addShares(address staker, address strategy, uint256 shares) external returns (uint256, uint256);
3670    ```*/
3671    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3672    #[derive(Clone)]
3673    pub struct addSharesCall {
3674        #[allow(missing_docs)]
3675        pub staker: alloy::sol_types::private::Address,
3676        #[allow(missing_docs)]
3677        pub strategy: alloy::sol_types::private::Address,
3678        #[allow(missing_docs)]
3679        pub shares: alloy::sol_types::private::primitives::aliases::U256,
3680    }
3681    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
3682    ///Container type for the return parameters of the [`addShares(address,address,uint256)`](addSharesCall) function.
3683    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3684    #[derive(Clone)]
3685    pub struct addSharesReturn {
3686        #[allow(missing_docs)]
3687        pub _0: alloy::sol_types::private::primitives::aliases::U256,
3688        #[allow(missing_docs)]
3689        pub _1: alloy::sol_types::private::primitives::aliases::U256,
3690    }
3691    #[allow(
3692        non_camel_case_types,
3693        non_snake_case,
3694        clippy::pub_underscore_fields,
3695        clippy::style
3696    )]
3697    const _: () = {
3698        use alloy::sol_types as alloy_sol_types;
3699        {
3700            #[doc(hidden)]
3701            type UnderlyingSolTuple<'a> = (
3702                alloy::sol_types::sol_data::Address,
3703                alloy::sol_types::sol_data::Address,
3704                alloy::sol_types::sol_data::Uint<256>,
3705            );
3706            #[doc(hidden)]
3707            type UnderlyingRustTuple<'a> = (
3708                alloy::sol_types::private::Address,
3709                alloy::sol_types::private::Address,
3710                alloy::sol_types::private::primitives::aliases::U256,
3711            );
3712            #[cfg(test)]
3713            #[allow(dead_code, unreachable_patterns)]
3714            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3715                match _t {
3716                    alloy_sol_types::private::AssertTypeEq::<
3717                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3718                    >(_) => {}
3719                }
3720            }
3721            #[automatically_derived]
3722            #[doc(hidden)]
3723            impl ::core::convert::From<addSharesCall> for UnderlyingRustTuple<'_> {
3724                fn from(value: addSharesCall) -> Self {
3725                    (value.staker, value.strategy, value.shares)
3726                }
3727            }
3728            #[automatically_derived]
3729            #[doc(hidden)]
3730            impl ::core::convert::From<UnderlyingRustTuple<'_>> for addSharesCall {
3731                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3732                    Self {
3733                        staker: tuple.0,
3734                        strategy: tuple.1,
3735                        shares: tuple.2,
3736                    }
3737                }
3738            }
3739        }
3740        {
3741            #[doc(hidden)]
3742            type UnderlyingSolTuple<'a> = (
3743                alloy::sol_types::sol_data::Uint<256>,
3744                alloy::sol_types::sol_data::Uint<256>,
3745            );
3746            #[doc(hidden)]
3747            type UnderlyingRustTuple<'a> = (
3748                alloy::sol_types::private::primitives::aliases::U256,
3749                alloy::sol_types::private::primitives::aliases::U256,
3750            );
3751            #[cfg(test)]
3752            #[allow(dead_code, unreachable_patterns)]
3753            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3754                match _t {
3755                    alloy_sol_types::private::AssertTypeEq::<
3756                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3757                    >(_) => {}
3758                }
3759            }
3760            #[automatically_derived]
3761            #[doc(hidden)]
3762            impl ::core::convert::From<addSharesReturn> for UnderlyingRustTuple<'_> {
3763                fn from(value: addSharesReturn) -> Self {
3764                    (value._0, value._1)
3765                }
3766            }
3767            #[automatically_derived]
3768            #[doc(hidden)]
3769            impl ::core::convert::From<UnderlyingRustTuple<'_>> for addSharesReturn {
3770                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3771                    Self {
3772                        _0: tuple.0,
3773                        _1: tuple.1,
3774                    }
3775                }
3776            }
3777        }
3778        impl addSharesReturn {
3779            fn _tokenize(&self) -> <addSharesCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
3780                (
3781                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
3782                        &self._0,
3783                    ),
3784                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
3785                        &self._1,
3786                    ),
3787                )
3788            }
3789        }
3790        #[automatically_derived]
3791        impl alloy_sol_types::SolCall for addSharesCall {
3792            type Parameters<'a> = (
3793                alloy::sol_types::sol_data::Address,
3794                alloy::sol_types::sol_data::Address,
3795                alloy::sol_types::sol_data::Uint<256>,
3796            );
3797            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
3798            type Return = addSharesReturn;
3799            type ReturnTuple<'a> = (
3800                alloy::sol_types::sol_data::Uint<256>,
3801                alloy::sol_types::sol_data::Uint<256>,
3802            );
3803            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
3804            const SIGNATURE: &'static str = "addShares(address,address,uint256)";
3805            const SELECTOR: [u8; 4] = [80u8, 255u8, 114u8, 37u8];
3806            #[inline]
3807            fn new<'a>(
3808                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3809            ) -> Self {
3810                tuple.into()
3811            }
3812            #[inline]
3813            fn tokenize(&self) -> Self::Token<'_> {
3814                (
3815                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3816                        &self.staker,
3817                    ),
3818                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3819                        &self.strategy,
3820                    ),
3821                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
3822                        &self.shares,
3823                    ),
3824                )
3825            }
3826            #[inline]
3827            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
3828                addSharesReturn::_tokenize(ret)
3829            }
3830            #[inline]
3831            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
3832                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
3833                    .map(Into::into)
3834            }
3835            #[inline]
3836            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
3837                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
3838                    data,
3839                )
3840                .map(Into::into)
3841            }
3842        }
3843    };
3844    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
3845    /**Function with signature `addStrategiesToDepositWhitelist(address[])` and selector `0x5de08ff2`.
3846    ```solidity
3847    function addStrategiesToDepositWhitelist(address[] memory strategiesToWhitelist) external;
3848    ```*/
3849    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3850    #[derive(Clone)]
3851    pub struct addStrategiesToDepositWhitelistCall {
3852        #[allow(missing_docs)]
3853        pub strategiesToWhitelist:
3854            alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
3855    }
3856    ///Container type for the return parameters of the [`addStrategiesToDepositWhitelist(address[])`](addStrategiesToDepositWhitelistCall) function.
3857    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3858    #[derive(Clone)]
3859    pub struct addStrategiesToDepositWhitelistReturn {}
3860    #[allow(
3861        non_camel_case_types,
3862        non_snake_case,
3863        clippy::pub_underscore_fields,
3864        clippy::style
3865    )]
3866    const _: () = {
3867        use alloy::sol_types as alloy_sol_types;
3868        {
3869            #[doc(hidden)]
3870            type UnderlyingSolTuple<'a> =
3871                (alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,);
3872            #[doc(hidden)]
3873            type UnderlyingRustTuple<'a> =
3874                (alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,);
3875            #[cfg(test)]
3876            #[allow(dead_code, unreachable_patterns)]
3877            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3878                match _t {
3879                    alloy_sol_types::private::AssertTypeEq::<
3880                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3881                    >(_) => {}
3882                }
3883            }
3884            #[automatically_derived]
3885            #[doc(hidden)]
3886            impl ::core::convert::From<addStrategiesToDepositWhitelistCall> for UnderlyingRustTuple<'_> {
3887                fn from(value: addStrategiesToDepositWhitelistCall) -> Self {
3888                    (value.strategiesToWhitelist,)
3889                }
3890            }
3891            #[automatically_derived]
3892            #[doc(hidden)]
3893            impl ::core::convert::From<UnderlyingRustTuple<'_>> for addStrategiesToDepositWhitelistCall {
3894                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3895                    Self {
3896                        strategiesToWhitelist: tuple.0,
3897                    }
3898                }
3899            }
3900        }
3901        {
3902            #[doc(hidden)]
3903            type UnderlyingSolTuple<'a> = ();
3904            #[doc(hidden)]
3905            type UnderlyingRustTuple<'a> = ();
3906            #[cfg(test)]
3907            #[allow(dead_code, unreachable_patterns)]
3908            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3909                match _t {
3910                    alloy_sol_types::private::AssertTypeEq::<
3911                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3912                    >(_) => {}
3913                }
3914            }
3915            #[automatically_derived]
3916            #[doc(hidden)]
3917            impl ::core::convert::From<addStrategiesToDepositWhitelistReturn> for UnderlyingRustTuple<'_> {
3918                fn from(value: addStrategiesToDepositWhitelistReturn) -> Self {
3919                    ()
3920                }
3921            }
3922            #[automatically_derived]
3923            #[doc(hidden)]
3924            impl ::core::convert::From<UnderlyingRustTuple<'_>> for addStrategiesToDepositWhitelistReturn {
3925                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3926                    Self {}
3927                }
3928            }
3929        }
3930        impl addStrategiesToDepositWhitelistReturn {
3931            fn _tokenize(
3932                &self,
3933            ) -> <addStrategiesToDepositWhitelistCall as alloy_sol_types::SolCall>::ReturnToken<'_>
3934            {
3935                ()
3936            }
3937        }
3938        #[automatically_derived]
3939        impl alloy_sol_types::SolCall for addStrategiesToDepositWhitelistCall {
3940            type Parameters<'a> =
3941                (alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,);
3942            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
3943            type Return = addStrategiesToDepositWhitelistReturn;
3944            type ReturnTuple<'a> = ();
3945            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
3946            const SIGNATURE: &'static str = "addStrategiesToDepositWhitelist(address[])";
3947            const SELECTOR: [u8; 4] = [93u8, 224u8, 143u8, 242u8];
3948            #[inline]
3949            fn new<'a>(
3950                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3951            ) -> Self {
3952                tuple.into()
3953            }
3954            #[inline]
3955            fn tokenize(&self) -> Self::Token<'_> {
3956                (<alloy::sol_types::sol_data::Array<
3957                    alloy::sol_types::sol_data::Address,
3958                > as alloy_sol_types::SolType>::tokenize(
3959                    &self.strategiesToWhitelist,
3960                ),)
3961            }
3962            #[inline]
3963            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
3964                addStrategiesToDepositWhitelistReturn::_tokenize(ret)
3965            }
3966            #[inline]
3967            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
3968                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
3969                    .map(Into::into)
3970            }
3971            #[inline]
3972            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
3973                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
3974                    data,
3975                )
3976                .map(Into::into)
3977            }
3978        }
3979    };
3980    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
3981    /**Function with signature `burnShares(address)` and selector `0x4b6d5d6e`.
3982    ```solidity
3983    function burnShares(address strategy) external;
3984    ```*/
3985    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3986    #[derive(Clone)]
3987    pub struct burnSharesCall {
3988        #[allow(missing_docs)]
3989        pub strategy: alloy::sol_types::private::Address,
3990    }
3991    ///Container type for the return parameters of the [`burnShares(address)`](burnSharesCall) function.
3992    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3993    #[derive(Clone)]
3994    pub struct burnSharesReturn {}
3995    #[allow(
3996        non_camel_case_types,
3997        non_snake_case,
3998        clippy::pub_underscore_fields,
3999        clippy::style
4000    )]
4001    const _: () = {
4002        use alloy::sol_types as alloy_sol_types;
4003        {
4004            #[doc(hidden)]
4005            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4006            #[doc(hidden)]
4007            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4008            #[cfg(test)]
4009            #[allow(dead_code, unreachable_patterns)]
4010            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4011                match _t {
4012                    alloy_sol_types::private::AssertTypeEq::<
4013                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4014                    >(_) => {}
4015                }
4016            }
4017            #[automatically_derived]
4018            #[doc(hidden)]
4019            impl ::core::convert::From<burnSharesCall> for UnderlyingRustTuple<'_> {
4020                fn from(value: burnSharesCall) -> Self {
4021                    (value.strategy,)
4022                }
4023            }
4024            #[automatically_derived]
4025            #[doc(hidden)]
4026            impl ::core::convert::From<UnderlyingRustTuple<'_>> for burnSharesCall {
4027                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4028                    Self { strategy: tuple.0 }
4029                }
4030            }
4031        }
4032        {
4033            #[doc(hidden)]
4034            type UnderlyingSolTuple<'a> = ();
4035            #[doc(hidden)]
4036            type UnderlyingRustTuple<'a> = ();
4037            #[cfg(test)]
4038            #[allow(dead_code, unreachable_patterns)]
4039            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4040                match _t {
4041                    alloy_sol_types::private::AssertTypeEq::<
4042                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4043                    >(_) => {}
4044                }
4045            }
4046            #[automatically_derived]
4047            #[doc(hidden)]
4048            impl ::core::convert::From<burnSharesReturn> for UnderlyingRustTuple<'_> {
4049                fn from(value: burnSharesReturn) -> Self {
4050                    ()
4051                }
4052            }
4053            #[automatically_derived]
4054            #[doc(hidden)]
4055            impl ::core::convert::From<UnderlyingRustTuple<'_>> for burnSharesReturn {
4056                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4057                    Self {}
4058                }
4059            }
4060        }
4061        impl burnSharesReturn {
4062            fn _tokenize(&self) -> <burnSharesCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
4063                ()
4064            }
4065        }
4066        #[automatically_derived]
4067        impl alloy_sol_types::SolCall for burnSharesCall {
4068            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
4069            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4070            type Return = burnSharesReturn;
4071            type ReturnTuple<'a> = ();
4072            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
4073            const SIGNATURE: &'static str = "burnShares(address)";
4074            const SELECTOR: [u8; 4] = [75u8, 109u8, 93u8, 110u8];
4075            #[inline]
4076            fn new<'a>(
4077                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4078            ) -> Self {
4079                tuple.into()
4080            }
4081            #[inline]
4082            fn tokenize(&self) -> Self::Token<'_> {
4083                (
4084                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4085                        &self.strategy,
4086                    ),
4087                )
4088            }
4089            #[inline]
4090            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4091                burnSharesReturn::_tokenize(ret)
4092            }
4093            #[inline]
4094            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4095                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
4096                    .map(Into::into)
4097            }
4098            #[inline]
4099            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4100                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
4101                    data,
4102                )
4103                .map(Into::into)
4104            }
4105        }
4106    };
4107    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
4108    /**Function with signature `calculateStrategyDepositDigestHash(address,address,address,uint256,uint256,uint256)` and selector `0x9ac01d61`.
4109    ```solidity
4110    function calculateStrategyDepositDigestHash(address staker, address strategy, address token, uint256 amount, uint256 nonce, uint256 expiry) external view returns (bytes32);
4111    ```*/
4112    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4113    #[derive(Clone)]
4114    pub struct calculateStrategyDepositDigestHashCall {
4115        #[allow(missing_docs)]
4116        pub staker: alloy::sol_types::private::Address,
4117        #[allow(missing_docs)]
4118        pub strategy: alloy::sol_types::private::Address,
4119        #[allow(missing_docs)]
4120        pub token: alloy::sol_types::private::Address,
4121        #[allow(missing_docs)]
4122        pub amount: alloy::sol_types::private::primitives::aliases::U256,
4123        #[allow(missing_docs)]
4124        pub nonce: alloy::sol_types::private::primitives::aliases::U256,
4125        #[allow(missing_docs)]
4126        pub expiry: alloy::sol_types::private::primitives::aliases::U256,
4127    }
4128    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
4129    ///Container type for the return parameters of the [`calculateStrategyDepositDigestHash(address,address,address,uint256,uint256,uint256)`](calculateStrategyDepositDigestHashCall) function.
4130    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4131    #[derive(Clone)]
4132    pub struct calculateStrategyDepositDigestHashReturn {
4133        #[allow(missing_docs)]
4134        pub _0: alloy::sol_types::private::FixedBytes<32>,
4135    }
4136    #[allow(
4137        non_camel_case_types,
4138        non_snake_case,
4139        clippy::pub_underscore_fields,
4140        clippy::style
4141    )]
4142    const _: () = {
4143        use alloy::sol_types as alloy_sol_types;
4144        {
4145            #[doc(hidden)]
4146            type UnderlyingSolTuple<'a> = (
4147                alloy::sol_types::sol_data::Address,
4148                alloy::sol_types::sol_data::Address,
4149                alloy::sol_types::sol_data::Address,
4150                alloy::sol_types::sol_data::Uint<256>,
4151                alloy::sol_types::sol_data::Uint<256>,
4152                alloy::sol_types::sol_data::Uint<256>,
4153            );
4154            #[doc(hidden)]
4155            type UnderlyingRustTuple<'a> = (
4156                alloy::sol_types::private::Address,
4157                alloy::sol_types::private::Address,
4158                alloy::sol_types::private::Address,
4159                alloy::sol_types::private::primitives::aliases::U256,
4160                alloy::sol_types::private::primitives::aliases::U256,
4161                alloy::sol_types::private::primitives::aliases::U256,
4162            );
4163            #[cfg(test)]
4164            #[allow(dead_code, unreachable_patterns)]
4165            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4166                match _t {
4167                    alloy_sol_types::private::AssertTypeEq::<
4168                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4169                    >(_) => {}
4170                }
4171            }
4172            #[automatically_derived]
4173            #[doc(hidden)]
4174            impl ::core::convert::From<calculateStrategyDepositDigestHashCall> for UnderlyingRustTuple<'_> {
4175                fn from(value: calculateStrategyDepositDigestHashCall) -> Self {
4176                    (
4177                        value.staker,
4178                        value.strategy,
4179                        value.token,
4180                        value.amount,
4181                        value.nonce,
4182                        value.expiry,
4183                    )
4184                }
4185            }
4186            #[automatically_derived]
4187            #[doc(hidden)]
4188            impl ::core::convert::From<UnderlyingRustTuple<'_>> for calculateStrategyDepositDigestHashCall {
4189                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4190                    Self {
4191                        staker: tuple.0,
4192                        strategy: tuple.1,
4193                        token: tuple.2,
4194                        amount: tuple.3,
4195                        nonce: tuple.4,
4196                        expiry: tuple.5,
4197                    }
4198                }
4199            }
4200        }
4201        {
4202            #[doc(hidden)]
4203            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4204            #[doc(hidden)]
4205            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
4206            #[cfg(test)]
4207            #[allow(dead_code, unreachable_patterns)]
4208            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4209                match _t {
4210                    alloy_sol_types::private::AssertTypeEq::<
4211                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4212                    >(_) => {}
4213                }
4214            }
4215            #[automatically_derived]
4216            #[doc(hidden)]
4217            impl ::core::convert::From<calculateStrategyDepositDigestHashReturn> for UnderlyingRustTuple<'_> {
4218                fn from(value: calculateStrategyDepositDigestHashReturn) -> Self {
4219                    (value._0,)
4220                }
4221            }
4222            #[automatically_derived]
4223            #[doc(hidden)]
4224            impl ::core::convert::From<UnderlyingRustTuple<'_>> for calculateStrategyDepositDigestHashReturn {
4225                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4226                    Self { _0: tuple.0 }
4227                }
4228            }
4229        }
4230        #[automatically_derived]
4231        impl alloy_sol_types::SolCall for calculateStrategyDepositDigestHashCall {
4232            type Parameters<'a> = (
4233                alloy::sol_types::sol_data::Address,
4234                alloy::sol_types::sol_data::Address,
4235                alloy::sol_types::sol_data::Address,
4236                alloy::sol_types::sol_data::Uint<256>,
4237                alloy::sol_types::sol_data::Uint<256>,
4238                alloy::sol_types::sol_data::Uint<256>,
4239            );
4240            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4241            type Return = alloy::sol_types::private::FixedBytes<32>;
4242            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4243            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
4244            const SIGNATURE: &'static str = "calculateStrategyDepositDigestHash(address,address,address,uint256,uint256,uint256)";
4245            const SELECTOR: [u8; 4] = [154u8, 192u8, 29u8, 97u8];
4246            #[inline]
4247            fn new<'a>(
4248                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4249            ) -> Self {
4250                tuple.into()
4251            }
4252            #[inline]
4253            fn tokenize(&self) -> Self::Token<'_> {
4254                (
4255                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4256                        &self.staker,
4257                    ),
4258                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4259                        &self.strategy,
4260                    ),
4261                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4262                        &self.token,
4263                    ),
4264                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
4265                        &self.amount,
4266                    ),
4267                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
4268                        &self.nonce,
4269                    ),
4270                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
4271                        &self.expiry,
4272                    ),
4273                )
4274            }
4275            #[inline]
4276            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4277                (
4278                    <alloy::sol_types::sol_data::FixedBytes<
4279                        32,
4280                    > as alloy_sol_types::SolType>::tokenize(ret),
4281                )
4282            }
4283            #[inline]
4284            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4285                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
4286                    |r| {
4287                        let r: calculateStrategyDepositDigestHashReturn = r.into();
4288                        r._0
4289                    },
4290                )
4291            }
4292            #[inline]
4293            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4294                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
4295                    data,
4296                )
4297                .map(|r| {
4298                    let r: calculateStrategyDepositDigestHashReturn = r.into();
4299                    r._0
4300                })
4301            }
4302        }
4303    };
4304    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
4305    /**Function with signature `delegation()` and selector `0xdf5cf723`.
4306    ```solidity
4307    function delegation() external view returns (address);
4308    ```*/
4309    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4310    #[derive(Clone)]
4311    pub struct delegationCall;
4312    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
4313    ///Container type for the return parameters of the [`delegation()`](delegationCall) function.
4314    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4315    #[derive(Clone)]
4316    pub struct delegationReturn {
4317        #[allow(missing_docs)]
4318        pub _0: alloy::sol_types::private::Address,
4319    }
4320    #[allow(
4321        non_camel_case_types,
4322        non_snake_case,
4323        clippy::pub_underscore_fields,
4324        clippy::style
4325    )]
4326    const _: () = {
4327        use alloy::sol_types as alloy_sol_types;
4328        {
4329            #[doc(hidden)]
4330            type UnderlyingSolTuple<'a> = ();
4331            #[doc(hidden)]
4332            type UnderlyingRustTuple<'a> = ();
4333            #[cfg(test)]
4334            #[allow(dead_code, unreachable_patterns)]
4335            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4336                match _t {
4337                    alloy_sol_types::private::AssertTypeEq::<
4338                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4339                    >(_) => {}
4340                }
4341            }
4342            #[automatically_derived]
4343            #[doc(hidden)]
4344            impl ::core::convert::From<delegationCall> for UnderlyingRustTuple<'_> {
4345                fn from(value: delegationCall) -> Self {
4346                    ()
4347                }
4348            }
4349            #[automatically_derived]
4350            #[doc(hidden)]
4351            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegationCall {
4352                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4353                    Self
4354                }
4355            }
4356        }
4357        {
4358            #[doc(hidden)]
4359            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4360            #[doc(hidden)]
4361            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4362            #[cfg(test)]
4363            #[allow(dead_code, unreachable_patterns)]
4364            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4365                match _t {
4366                    alloy_sol_types::private::AssertTypeEq::<
4367                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4368                    >(_) => {}
4369                }
4370            }
4371            #[automatically_derived]
4372            #[doc(hidden)]
4373            impl ::core::convert::From<delegationReturn> for UnderlyingRustTuple<'_> {
4374                fn from(value: delegationReturn) -> Self {
4375                    (value._0,)
4376                }
4377            }
4378            #[automatically_derived]
4379            #[doc(hidden)]
4380            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegationReturn {
4381                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4382                    Self { _0: tuple.0 }
4383                }
4384            }
4385        }
4386        #[automatically_derived]
4387        impl alloy_sol_types::SolCall for delegationCall {
4388            type Parameters<'a> = ();
4389            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4390            type Return = alloy::sol_types::private::Address;
4391            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
4392            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
4393            const SIGNATURE: &'static str = "delegation()";
4394            const SELECTOR: [u8; 4] = [223u8, 92u8, 247u8, 35u8];
4395            #[inline]
4396            fn new<'a>(
4397                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4398            ) -> Self {
4399                tuple.into()
4400            }
4401            #[inline]
4402            fn tokenize(&self) -> Self::Token<'_> {
4403                ()
4404            }
4405            #[inline]
4406            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4407                (
4408                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4409                        ret,
4410                    ),
4411                )
4412            }
4413            #[inline]
4414            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4415                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
4416                    |r| {
4417                        let r: delegationReturn = r.into();
4418                        r._0
4419                    },
4420                )
4421            }
4422            #[inline]
4423            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4424                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
4425                    data,
4426                )
4427                .map(|r| {
4428                    let r: delegationReturn = r.into();
4429                    r._0
4430                })
4431            }
4432        }
4433    };
4434    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
4435    /**Function with signature `depositIntoStrategy(address,address,uint256)` and selector `0xe7a050aa`.
4436    ```solidity
4437    function depositIntoStrategy(address strategy, address token, uint256 amount) external returns (uint256 depositShares);
4438    ```*/
4439    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4440    #[derive(Clone)]
4441    pub struct depositIntoStrategyCall {
4442        #[allow(missing_docs)]
4443        pub strategy: alloy::sol_types::private::Address,
4444        #[allow(missing_docs)]
4445        pub token: alloy::sol_types::private::Address,
4446        #[allow(missing_docs)]
4447        pub amount: alloy::sol_types::private::primitives::aliases::U256,
4448    }
4449    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
4450    ///Container type for the return parameters of the [`depositIntoStrategy(address,address,uint256)`](depositIntoStrategyCall) function.
4451    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4452    #[derive(Clone)]
4453    pub struct depositIntoStrategyReturn {
4454        #[allow(missing_docs)]
4455        pub depositShares: alloy::sol_types::private::primitives::aliases::U256,
4456    }
4457    #[allow(
4458        non_camel_case_types,
4459        non_snake_case,
4460        clippy::pub_underscore_fields,
4461        clippy::style
4462    )]
4463    const _: () = {
4464        use alloy::sol_types as alloy_sol_types;
4465        {
4466            #[doc(hidden)]
4467            type UnderlyingSolTuple<'a> = (
4468                alloy::sol_types::sol_data::Address,
4469                alloy::sol_types::sol_data::Address,
4470                alloy::sol_types::sol_data::Uint<256>,
4471            );
4472            #[doc(hidden)]
4473            type UnderlyingRustTuple<'a> = (
4474                alloy::sol_types::private::Address,
4475                alloy::sol_types::private::Address,
4476                alloy::sol_types::private::primitives::aliases::U256,
4477            );
4478            #[cfg(test)]
4479            #[allow(dead_code, unreachable_patterns)]
4480            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4481                match _t {
4482                    alloy_sol_types::private::AssertTypeEq::<
4483                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4484                    >(_) => {}
4485                }
4486            }
4487            #[automatically_derived]
4488            #[doc(hidden)]
4489            impl ::core::convert::From<depositIntoStrategyCall> for UnderlyingRustTuple<'_> {
4490                fn from(value: depositIntoStrategyCall) -> Self {
4491                    (value.strategy, value.token, value.amount)
4492                }
4493            }
4494            #[automatically_derived]
4495            #[doc(hidden)]
4496            impl ::core::convert::From<UnderlyingRustTuple<'_>> for depositIntoStrategyCall {
4497                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4498                    Self {
4499                        strategy: tuple.0,
4500                        token: tuple.1,
4501                        amount: tuple.2,
4502                    }
4503                }
4504            }
4505        }
4506        {
4507            #[doc(hidden)]
4508            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4509            #[doc(hidden)]
4510            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
4511            #[cfg(test)]
4512            #[allow(dead_code, unreachable_patterns)]
4513            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4514                match _t {
4515                    alloy_sol_types::private::AssertTypeEq::<
4516                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4517                    >(_) => {}
4518                }
4519            }
4520            #[automatically_derived]
4521            #[doc(hidden)]
4522            impl ::core::convert::From<depositIntoStrategyReturn> for UnderlyingRustTuple<'_> {
4523                fn from(value: depositIntoStrategyReturn) -> Self {
4524                    (value.depositShares,)
4525                }
4526            }
4527            #[automatically_derived]
4528            #[doc(hidden)]
4529            impl ::core::convert::From<UnderlyingRustTuple<'_>> for depositIntoStrategyReturn {
4530                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4531                    Self {
4532                        depositShares: tuple.0,
4533                    }
4534                }
4535            }
4536        }
4537        #[automatically_derived]
4538        impl alloy_sol_types::SolCall for depositIntoStrategyCall {
4539            type Parameters<'a> = (
4540                alloy::sol_types::sol_data::Address,
4541                alloy::sol_types::sol_data::Address,
4542                alloy::sol_types::sol_data::Uint<256>,
4543            );
4544            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4545            type Return = alloy::sol_types::private::primitives::aliases::U256;
4546            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4547            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
4548            const SIGNATURE: &'static str = "depositIntoStrategy(address,address,uint256)";
4549            const SELECTOR: [u8; 4] = [231u8, 160u8, 80u8, 170u8];
4550            #[inline]
4551            fn new<'a>(
4552                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4553            ) -> Self {
4554                tuple.into()
4555            }
4556            #[inline]
4557            fn tokenize(&self) -> Self::Token<'_> {
4558                (
4559                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4560                        &self.strategy,
4561                    ),
4562                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4563                        &self.token,
4564                    ),
4565                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
4566                        &self.amount,
4567                    ),
4568                )
4569            }
4570            #[inline]
4571            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4572                (
4573                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
4574                        ret,
4575                    ),
4576                )
4577            }
4578            #[inline]
4579            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4580                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
4581                    |r| {
4582                        let r: depositIntoStrategyReturn = r.into();
4583                        r.depositShares
4584                    },
4585                )
4586            }
4587            #[inline]
4588            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4589                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
4590                    data,
4591                )
4592                .map(|r| {
4593                    let r: depositIntoStrategyReturn = r.into();
4594                    r.depositShares
4595                })
4596            }
4597        }
4598    };
4599    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
4600    /**Function with signature `depositIntoStrategyWithSignature(address,address,uint256,address,uint256,bytes)` and selector `0x32e89ace`.
4601    ```solidity
4602    function depositIntoStrategyWithSignature(address strategy, address token, uint256 amount, address staker, uint256 expiry, bytes memory signature) external returns (uint256 depositShares);
4603    ```*/
4604    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4605    #[derive(Clone)]
4606    pub struct depositIntoStrategyWithSignatureCall {
4607        #[allow(missing_docs)]
4608        pub strategy: alloy::sol_types::private::Address,
4609        #[allow(missing_docs)]
4610        pub token: alloy::sol_types::private::Address,
4611        #[allow(missing_docs)]
4612        pub amount: alloy::sol_types::private::primitives::aliases::U256,
4613        #[allow(missing_docs)]
4614        pub staker: alloy::sol_types::private::Address,
4615        #[allow(missing_docs)]
4616        pub expiry: alloy::sol_types::private::primitives::aliases::U256,
4617        #[allow(missing_docs)]
4618        pub signature: alloy::sol_types::private::Bytes,
4619    }
4620    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
4621    ///Container type for the return parameters of the [`depositIntoStrategyWithSignature(address,address,uint256,address,uint256,bytes)`](depositIntoStrategyWithSignatureCall) function.
4622    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4623    #[derive(Clone)]
4624    pub struct depositIntoStrategyWithSignatureReturn {
4625        #[allow(missing_docs)]
4626        pub depositShares: alloy::sol_types::private::primitives::aliases::U256,
4627    }
4628    #[allow(
4629        non_camel_case_types,
4630        non_snake_case,
4631        clippy::pub_underscore_fields,
4632        clippy::style
4633    )]
4634    const _: () = {
4635        use alloy::sol_types as alloy_sol_types;
4636        {
4637            #[doc(hidden)]
4638            type UnderlyingSolTuple<'a> = (
4639                alloy::sol_types::sol_data::Address,
4640                alloy::sol_types::sol_data::Address,
4641                alloy::sol_types::sol_data::Uint<256>,
4642                alloy::sol_types::sol_data::Address,
4643                alloy::sol_types::sol_data::Uint<256>,
4644                alloy::sol_types::sol_data::Bytes,
4645            );
4646            #[doc(hidden)]
4647            type UnderlyingRustTuple<'a> = (
4648                alloy::sol_types::private::Address,
4649                alloy::sol_types::private::Address,
4650                alloy::sol_types::private::primitives::aliases::U256,
4651                alloy::sol_types::private::Address,
4652                alloy::sol_types::private::primitives::aliases::U256,
4653                alloy::sol_types::private::Bytes,
4654            );
4655            #[cfg(test)]
4656            #[allow(dead_code, unreachable_patterns)]
4657            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4658                match _t {
4659                    alloy_sol_types::private::AssertTypeEq::<
4660                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4661                    >(_) => {}
4662                }
4663            }
4664            #[automatically_derived]
4665            #[doc(hidden)]
4666            impl ::core::convert::From<depositIntoStrategyWithSignatureCall> for UnderlyingRustTuple<'_> {
4667                fn from(value: depositIntoStrategyWithSignatureCall) -> Self {
4668                    (
4669                        value.strategy,
4670                        value.token,
4671                        value.amount,
4672                        value.staker,
4673                        value.expiry,
4674                        value.signature,
4675                    )
4676                }
4677            }
4678            #[automatically_derived]
4679            #[doc(hidden)]
4680            impl ::core::convert::From<UnderlyingRustTuple<'_>> for depositIntoStrategyWithSignatureCall {
4681                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4682                    Self {
4683                        strategy: tuple.0,
4684                        token: tuple.1,
4685                        amount: tuple.2,
4686                        staker: tuple.3,
4687                        expiry: tuple.4,
4688                        signature: tuple.5,
4689                    }
4690                }
4691            }
4692        }
4693        {
4694            #[doc(hidden)]
4695            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4696            #[doc(hidden)]
4697            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
4698            #[cfg(test)]
4699            #[allow(dead_code, unreachable_patterns)]
4700            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4701                match _t {
4702                    alloy_sol_types::private::AssertTypeEq::<
4703                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4704                    >(_) => {}
4705                }
4706            }
4707            #[automatically_derived]
4708            #[doc(hidden)]
4709            impl ::core::convert::From<depositIntoStrategyWithSignatureReturn> for UnderlyingRustTuple<'_> {
4710                fn from(value: depositIntoStrategyWithSignatureReturn) -> Self {
4711                    (value.depositShares,)
4712                }
4713            }
4714            #[automatically_derived]
4715            #[doc(hidden)]
4716            impl ::core::convert::From<UnderlyingRustTuple<'_>> for depositIntoStrategyWithSignatureReturn {
4717                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4718                    Self {
4719                        depositShares: tuple.0,
4720                    }
4721                }
4722            }
4723        }
4724        #[automatically_derived]
4725        impl alloy_sol_types::SolCall for depositIntoStrategyWithSignatureCall {
4726            type Parameters<'a> = (
4727                alloy::sol_types::sol_data::Address,
4728                alloy::sol_types::sol_data::Address,
4729                alloy::sol_types::sol_data::Uint<256>,
4730                alloy::sol_types::sol_data::Address,
4731                alloy::sol_types::sol_data::Uint<256>,
4732                alloy::sol_types::sol_data::Bytes,
4733            );
4734            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4735            type Return = alloy::sol_types::private::primitives::aliases::U256;
4736            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4737            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
4738            const SIGNATURE: &'static str =
4739                "depositIntoStrategyWithSignature(address,address,uint256,address,uint256,bytes)";
4740            const SELECTOR: [u8; 4] = [50u8, 232u8, 154u8, 206u8];
4741            #[inline]
4742            fn new<'a>(
4743                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4744            ) -> Self {
4745                tuple.into()
4746            }
4747            #[inline]
4748            fn tokenize(&self) -> Self::Token<'_> {
4749                (
4750                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4751                        &self.strategy,
4752                    ),
4753                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4754                        &self.token,
4755                    ),
4756                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
4757                        &self.amount,
4758                    ),
4759                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4760                        &self.staker,
4761                    ),
4762                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
4763                        &self.expiry,
4764                    ),
4765                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
4766                        &self.signature,
4767                    ),
4768                )
4769            }
4770            #[inline]
4771            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4772                (
4773                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
4774                        ret,
4775                    ),
4776                )
4777            }
4778            #[inline]
4779            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4780                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
4781                    |r| {
4782                        let r: depositIntoStrategyWithSignatureReturn = r.into();
4783                        r.depositShares
4784                    },
4785                )
4786            }
4787            #[inline]
4788            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4789                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
4790                    data,
4791                )
4792                .map(|r| {
4793                    let r: depositIntoStrategyWithSignatureReturn = r.into();
4794                    r.depositShares
4795                })
4796            }
4797        }
4798    };
4799    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
4800    /**Function with signature `domainSeparator()` and selector `0xf698da25`.
4801    ```solidity
4802    function domainSeparator() external view returns (bytes32);
4803    ```*/
4804    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4805    #[derive(Clone)]
4806    pub struct domainSeparatorCall;
4807    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
4808    ///Container type for the return parameters of the [`domainSeparator()`](domainSeparatorCall) function.
4809    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4810    #[derive(Clone)]
4811    pub struct domainSeparatorReturn {
4812        #[allow(missing_docs)]
4813        pub _0: alloy::sol_types::private::FixedBytes<32>,
4814    }
4815    #[allow(
4816        non_camel_case_types,
4817        non_snake_case,
4818        clippy::pub_underscore_fields,
4819        clippy::style
4820    )]
4821    const _: () = {
4822        use alloy::sol_types as alloy_sol_types;
4823        {
4824            #[doc(hidden)]
4825            type UnderlyingSolTuple<'a> = ();
4826            #[doc(hidden)]
4827            type UnderlyingRustTuple<'a> = ();
4828            #[cfg(test)]
4829            #[allow(dead_code, unreachable_patterns)]
4830            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4831                match _t {
4832                    alloy_sol_types::private::AssertTypeEq::<
4833                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4834                    >(_) => {}
4835                }
4836            }
4837            #[automatically_derived]
4838            #[doc(hidden)]
4839            impl ::core::convert::From<domainSeparatorCall> for UnderlyingRustTuple<'_> {
4840                fn from(value: domainSeparatorCall) -> Self {
4841                    ()
4842                }
4843            }
4844            #[automatically_derived]
4845            #[doc(hidden)]
4846            impl ::core::convert::From<UnderlyingRustTuple<'_>> for domainSeparatorCall {
4847                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4848                    Self
4849                }
4850            }
4851        }
4852        {
4853            #[doc(hidden)]
4854            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4855            #[doc(hidden)]
4856            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
4857            #[cfg(test)]
4858            #[allow(dead_code, unreachable_patterns)]
4859            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4860                match _t {
4861                    alloy_sol_types::private::AssertTypeEq::<
4862                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4863                    >(_) => {}
4864                }
4865            }
4866            #[automatically_derived]
4867            #[doc(hidden)]
4868            impl ::core::convert::From<domainSeparatorReturn> for UnderlyingRustTuple<'_> {
4869                fn from(value: domainSeparatorReturn) -> Self {
4870                    (value._0,)
4871                }
4872            }
4873            #[automatically_derived]
4874            #[doc(hidden)]
4875            impl ::core::convert::From<UnderlyingRustTuple<'_>> for domainSeparatorReturn {
4876                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4877                    Self { _0: tuple.0 }
4878                }
4879            }
4880        }
4881        #[automatically_derived]
4882        impl alloy_sol_types::SolCall for domainSeparatorCall {
4883            type Parameters<'a> = ();
4884            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4885            type Return = alloy::sol_types::private::FixedBytes<32>;
4886            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4887            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
4888            const SIGNATURE: &'static str = "domainSeparator()";
4889            const SELECTOR: [u8; 4] = [246u8, 152u8, 218u8, 37u8];
4890            #[inline]
4891            fn new<'a>(
4892                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4893            ) -> Self {
4894                tuple.into()
4895            }
4896            #[inline]
4897            fn tokenize(&self) -> Self::Token<'_> {
4898                ()
4899            }
4900            #[inline]
4901            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4902                (
4903                    <alloy::sol_types::sol_data::FixedBytes<
4904                        32,
4905                    > as alloy_sol_types::SolType>::tokenize(ret),
4906                )
4907            }
4908            #[inline]
4909            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4910                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
4911                    |r| {
4912                        let r: domainSeparatorReturn = r.into();
4913                        r._0
4914                    },
4915                )
4916            }
4917            #[inline]
4918            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4919                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
4920                    data,
4921                )
4922                .map(|r| {
4923                    let r: domainSeparatorReturn = r.into();
4924                    r._0
4925                })
4926            }
4927        }
4928    };
4929    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
4930    /**Function with signature `getBurnableShares(address)` and selector `0xfd980423`.
4931    ```solidity
4932    function getBurnableShares(address strategy) external view returns (uint256);
4933    ```*/
4934    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4935    #[derive(Clone)]
4936    pub struct getBurnableSharesCall {
4937        #[allow(missing_docs)]
4938        pub strategy: alloy::sol_types::private::Address,
4939    }
4940    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
4941    ///Container type for the return parameters of the [`getBurnableShares(address)`](getBurnableSharesCall) function.
4942    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4943    #[derive(Clone)]
4944    pub struct getBurnableSharesReturn {
4945        #[allow(missing_docs)]
4946        pub _0: alloy::sol_types::private::primitives::aliases::U256,
4947    }
4948    #[allow(
4949        non_camel_case_types,
4950        non_snake_case,
4951        clippy::pub_underscore_fields,
4952        clippy::style
4953    )]
4954    const _: () = {
4955        use alloy::sol_types as alloy_sol_types;
4956        {
4957            #[doc(hidden)]
4958            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4959            #[doc(hidden)]
4960            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4961            #[cfg(test)]
4962            #[allow(dead_code, unreachable_patterns)]
4963            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4964                match _t {
4965                    alloy_sol_types::private::AssertTypeEq::<
4966                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4967                    >(_) => {}
4968                }
4969            }
4970            #[automatically_derived]
4971            #[doc(hidden)]
4972            impl ::core::convert::From<getBurnableSharesCall> for UnderlyingRustTuple<'_> {
4973                fn from(value: getBurnableSharesCall) -> Self {
4974                    (value.strategy,)
4975                }
4976            }
4977            #[automatically_derived]
4978            #[doc(hidden)]
4979            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getBurnableSharesCall {
4980                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4981                    Self { strategy: tuple.0 }
4982                }
4983            }
4984        }
4985        {
4986            #[doc(hidden)]
4987            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4988            #[doc(hidden)]
4989            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
4990            #[cfg(test)]
4991            #[allow(dead_code, unreachable_patterns)]
4992            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4993                match _t {
4994                    alloy_sol_types::private::AssertTypeEq::<
4995                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4996                    >(_) => {}
4997                }
4998            }
4999            #[automatically_derived]
5000            #[doc(hidden)]
5001            impl ::core::convert::From<getBurnableSharesReturn> for UnderlyingRustTuple<'_> {
5002                fn from(value: getBurnableSharesReturn) -> Self {
5003                    (value._0,)
5004                }
5005            }
5006            #[automatically_derived]
5007            #[doc(hidden)]
5008            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getBurnableSharesReturn {
5009                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5010                    Self { _0: tuple.0 }
5011                }
5012            }
5013        }
5014        #[automatically_derived]
5015        impl alloy_sol_types::SolCall for getBurnableSharesCall {
5016            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
5017            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5018            type Return = alloy::sol_types::private::primitives::aliases::U256;
5019            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
5020            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
5021            const SIGNATURE: &'static str = "getBurnableShares(address)";
5022            const SELECTOR: [u8; 4] = [253u8, 152u8, 4u8, 35u8];
5023            #[inline]
5024            fn new<'a>(
5025                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5026            ) -> Self {
5027                tuple.into()
5028            }
5029            #[inline]
5030            fn tokenize(&self) -> Self::Token<'_> {
5031                (
5032                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5033                        &self.strategy,
5034                    ),
5035                )
5036            }
5037            #[inline]
5038            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5039                (
5040                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
5041                        ret,
5042                    ),
5043                )
5044            }
5045            #[inline]
5046            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5047                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
5048                    |r| {
5049                        let r: getBurnableSharesReturn = r.into();
5050                        r._0
5051                    },
5052                )
5053            }
5054            #[inline]
5055            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5056                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
5057                    data,
5058                )
5059                .map(|r| {
5060                    let r: getBurnableSharesReturn = r.into();
5061                    r._0
5062                })
5063            }
5064        }
5065    };
5066    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
5067    /**Function with signature `getDeposits(address)` and selector `0x94f649dd`.
5068    ```solidity
5069    function getDeposits(address staker) external view returns (address[] memory, uint256[] memory);
5070    ```*/
5071    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5072    #[derive(Clone)]
5073    pub struct getDepositsCall {
5074        #[allow(missing_docs)]
5075        pub staker: alloy::sol_types::private::Address,
5076    }
5077    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
5078    ///Container type for the return parameters of the [`getDeposits(address)`](getDepositsCall) function.
5079    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5080    #[derive(Clone)]
5081    pub struct getDepositsReturn {
5082        #[allow(missing_docs)]
5083        pub _0: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
5084        #[allow(missing_docs)]
5085        pub _1:
5086            alloy::sol_types::private::Vec<alloy::sol_types::private::primitives::aliases::U256>,
5087    }
5088    #[allow(
5089        non_camel_case_types,
5090        non_snake_case,
5091        clippy::pub_underscore_fields,
5092        clippy::style
5093    )]
5094    const _: () = {
5095        use alloy::sol_types as alloy_sol_types;
5096        {
5097            #[doc(hidden)]
5098            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5099            #[doc(hidden)]
5100            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5101            #[cfg(test)]
5102            #[allow(dead_code, unreachable_patterns)]
5103            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5104                match _t {
5105                    alloy_sol_types::private::AssertTypeEq::<
5106                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5107                    >(_) => {}
5108                }
5109            }
5110            #[automatically_derived]
5111            #[doc(hidden)]
5112            impl ::core::convert::From<getDepositsCall> for UnderlyingRustTuple<'_> {
5113                fn from(value: getDepositsCall) -> Self {
5114                    (value.staker,)
5115                }
5116            }
5117            #[automatically_derived]
5118            #[doc(hidden)]
5119            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getDepositsCall {
5120                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5121                    Self { staker: tuple.0 }
5122                }
5123            }
5124        }
5125        {
5126            #[doc(hidden)]
5127            type UnderlyingSolTuple<'a> = (
5128                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
5129                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
5130            );
5131            #[doc(hidden)]
5132            type UnderlyingRustTuple<'a> = (
5133                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
5134                alloy::sol_types::private::Vec<
5135                    alloy::sol_types::private::primitives::aliases::U256,
5136                >,
5137            );
5138            #[cfg(test)]
5139            #[allow(dead_code, unreachable_patterns)]
5140            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5141                match _t {
5142                    alloy_sol_types::private::AssertTypeEq::<
5143                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5144                    >(_) => {}
5145                }
5146            }
5147            #[automatically_derived]
5148            #[doc(hidden)]
5149            impl ::core::convert::From<getDepositsReturn> for UnderlyingRustTuple<'_> {
5150                fn from(value: getDepositsReturn) -> Self {
5151                    (value._0, value._1)
5152                }
5153            }
5154            #[automatically_derived]
5155            #[doc(hidden)]
5156            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getDepositsReturn {
5157                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5158                    Self {
5159                        _0: tuple.0,
5160                        _1: tuple.1,
5161                    }
5162                }
5163            }
5164        }
5165        impl getDepositsReturn {
5166            fn _tokenize(&self) -> <getDepositsCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
5167                (
5168                    <alloy::sol_types::sol_data::Array<
5169                        alloy::sol_types::sol_data::Address,
5170                    > as alloy_sol_types::SolType>::tokenize(&self._0),
5171                    <alloy::sol_types::sol_data::Array<
5172                        alloy::sol_types::sol_data::Uint<256>,
5173                    > as alloy_sol_types::SolType>::tokenize(&self._1),
5174                )
5175            }
5176        }
5177        #[automatically_derived]
5178        impl alloy_sol_types::SolCall for getDepositsCall {
5179            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
5180            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5181            type Return = getDepositsReturn;
5182            type ReturnTuple<'a> = (
5183                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
5184                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
5185            );
5186            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
5187            const SIGNATURE: &'static str = "getDeposits(address)";
5188            const SELECTOR: [u8; 4] = [148u8, 246u8, 73u8, 221u8];
5189            #[inline]
5190            fn new<'a>(
5191                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5192            ) -> Self {
5193                tuple.into()
5194            }
5195            #[inline]
5196            fn tokenize(&self) -> Self::Token<'_> {
5197                (
5198                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5199                        &self.staker,
5200                    ),
5201                )
5202            }
5203            #[inline]
5204            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5205                getDepositsReturn::_tokenize(ret)
5206            }
5207            #[inline]
5208            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5209                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
5210                    .map(Into::into)
5211            }
5212            #[inline]
5213            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5214                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
5215                    data,
5216                )
5217                .map(Into::into)
5218            }
5219        }
5220    };
5221    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
5222    /**Function with signature `getStakerStrategyList(address)` and selector `0xde44acb6`.
5223    ```solidity
5224    function getStakerStrategyList(address staker) external view returns (address[] memory);
5225    ```*/
5226    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5227    #[derive(Clone)]
5228    pub struct getStakerStrategyListCall {
5229        #[allow(missing_docs)]
5230        pub staker: alloy::sol_types::private::Address,
5231    }
5232    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
5233    ///Container type for the return parameters of the [`getStakerStrategyList(address)`](getStakerStrategyListCall) function.
5234    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5235    #[derive(Clone)]
5236    pub struct getStakerStrategyListReturn {
5237        #[allow(missing_docs)]
5238        pub _0: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
5239    }
5240    #[allow(
5241        non_camel_case_types,
5242        non_snake_case,
5243        clippy::pub_underscore_fields,
5244        clippy::style
5245    )]
5246    const _: () = {
5247        use alloy::sol_types as alloy_sol_types;
5248        {
5249            #[doc(hidden)]
5250            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5251            #[doc(hidden)]
5252            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5253            #[cfg(test)]
5254            #[allow(dead_code, unreachable_patterns)]
5255            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5256                match _t {
5257                    alloy_sol_types::private::AssertTypeEq::<
5258                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5259                    >(_) => {}
5260                }
5261            }
5262            #[automatically_derived]
5263            #[doc(hidden)]
5264            impl ::core::convert::From<getStakerStrategyListCall> for UnderlyingRustTuple<'_> {
5265                fn from(value: getStakerStrategyListCall) -> Self {
5266                    (value.staker,)
5267                }
5268            }
5269            #[automatically_derived]
5270            #[doc(hidden)]
5271            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getStakerStrategyListCall {
5272                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5273                    Self { staker: tuple.0 }
5274                }
5275            }
5276        }
5277        {
5278            #[doc(hidden)]
5279            type UnderlyingSolTuple<'a> =
5280                (alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,);
5281            #[doc(hidden)]
5282            type UnderlyingRustTuple<'a> =
5283                (alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,);
5284            #[cfg(test)]
5285            #[allow(dead_code, unreachable_patterns)]
5286            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5287                match _t {
5288                    alloy_sol_types::private::AssertTypeEq::<
5289                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5290                    >(_) => {}
5291                }
5292            }
5293            #[automatically_derived]
5294            #[doc(hidden)]
5295            impl ::core::convert::From<getStakerStrategyListReturn> for UnderlyingRustTuple<'_> {
5296                fn from(value: getStakerStrategyListReturn) -> Self {
5297                    (value._0,)
5298                }
5299            }
5300            #[automatically_derived]
5301            #[doc(hidden)]
5302            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getStakerStrategyListReturn {
5303                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5304                    Self { _0: tuple.0 }
5305                }
5306            }
5307        }
5308        #[automatically_derived]
5309        impl alloy_sol_types::SolCall for getStakerStrategyListCall {
5310            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
5311            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5312            type Return = alloy::sol_types::private::Vec<alloy::sol_types::private::Address>;
5313            type ReturnTuple<'a> =
5314                (alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,);
5315            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
5316            const SIGNATURE: &'static str = "getStakerStrategyList(address)";
5317            const SELECTOR: [u8; 4] = [222u8, 68u8, 172u8, 182u8];
5318            #[inline]
5319            fn new<'a>(
5320                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5321            ) -> Self {
5322                tuple.into()
5323            }
5324            #[inline]
5325            fn tokenize(&self) -> Self::Token<'_> {
5326                (
5327                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5328                        &self.staker,
5329                    ),
5330                )
5331            }
5332            #[inline]
5333            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5334                (<alloy::sol_types::sol_data::Array<
5335                    alloy::sol_types::sol_data::Address,
5336                > as alloy_sol_types::SolType>::tokenize(ret),)
5337            }
5338            #[inline]
5339            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5340                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
5341                    |r| {
5342                        let r: getStakerStrategyListReturn = r.into();
5343                        r._0
5344                    },
5345                )
5346            }
5347            #[inline]
5348            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5349                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
5350                    data,
5351                )
5352                .map(|r| {
5353                    let r: getStakerStrategyListReturn = r.into();
5354                    r._0
5355                })
5356            }
5357        }
5358    };
5359    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
5360    /**Function with signature `getStrategiesWithBurnableShares()` and selector `0x36a8c500`.
5361    ```solidity
5362    function getStrategiesWithBurnableShares() external view returns (address[] memory, uint256[] memory);
5363    ```*/
5364    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5365    #[derive(Clone)]
5366    pub struct getStrategiesWithBurnableSharesCall;
5367    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
5368    ///Container type for the return parameters of the [`getStrategiesWithBurnableShares()`](getStrategiesWithBurnableSharesCall) function.
5369    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5370    #[derive(Clone)]
5371    pub struct getStrategiesWithBurnableSharesReturn {
5372        #[allow(missing_docs)]
5373        pub _0: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
5374        #[allow(missing_docs)]
5375        pub _1:
5376            alloy::sol_types::private::Vec<alloy::sol_types::private::primitives::aliases::U256>,
5377    }
5378    #[allow(
5379        non_camel_case_types,
5380        non_snake_case,
5381        clippy::pub_underscore_fields,
5382        clippy::style
5383    )]
5384    const _: () = {
5385        use alloy::sol_types as alloy_sol_types;
5386        {
5387            #[doc(hidden)]
5388            type UnderlyingSolTuple<'a> = ();
5389            #[doc(hidden)]
5390            type UnderlyingRustTuple<'a> = ();
5391            #[cfg(test)]
5392            #[allow(dead_code, unreachable_patterns)]
5393            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5394                match _t {
5395                    alloy_sol_types::private::AssertTypeEq::<
5396                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5397                    >(_) => {}
5398                }
5399            }
5400            #[automatically_derived]
5401            #[doc(hidden)]
5402            impl ::core::convert::From<getStrategiesWithBurnableSharesCall> for UnderlyingRustTuple<'_> {
5403                fn from(value: getStrategiesWithBurnableSharesCall) -> Self {
5404                    ()
5405                }
5406            }
5407            #[automatically_derived]
5408            #[doc(hidden)]
5409            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getStrategiesWithBurnableSharesCall {
5410                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5411                    Self
5412                }
5413            }
5414        }
5415        {
5416            #[doc(hidden)]
5417            type UnderlyingSolTuple<'a> = (
5418                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
5419                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
5420            );
5421            #[doc(hidden)]
5422            type UnderlyingRustTuple<'a> = (
5423                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
5424                alloy::sol_types::private::Vec<
5425                    alloy::sol_types::private::primitives::aliases::U256,
5426                >,
5427            );
5428            #[cfg(test)]
5429            #[allow(dead_code, unreachable_patterns)]
5430            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5431                match _t {
5432                    alloy_sol_types::private::AssertTypeEq::<
5433                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5434                    >(_) => {}
5435                }
5436            }
5437            #[automatically_derived]
5438            #[doc(hidden)]
5439            impl ::core::convert::From<getStrategiesWithBurnableSharesReturn> for UnderlyingRustTuple<'_> {
5440                fn from(value: getStrategiesWithBurnableSharesReturn) -> Self {
5441                    (value._0, value._1)
5442                }
5443            }
5444            #[automatically_derived]
5445            #[doc(hidden)]
5446            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getStrategiesWithBurnableSharesReturn {
5447                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5448                    Self {
5449                        _0: tuple.0,
5450                        _1: tuple.1,
5451                    }
5452                }
5453            }
5454        }
5455        impl getStrategiesWithBurnableSharesReturn {
5456            fn _tokenize(
5457                &self,
5458            ) -> <getStrategiesWithBurnableSharesCall as alloy_sol_types::SolCall>::ReturnToken<'_>
5459            {
5460                (
5461                    <alloy::sol_types::sol_data::Array<
5462                        alloy::sol_types::sol_data::Address,
5463                    > as alloy_sol_types::SolType>::tokenize(&self._0),
5464                    <alloy::sol_types::sol_data::Array<
5465                        alloy::sol_types::sol_data::Uint<256>,
5466                    > as alloy_sol_types::SolType>::tokenize(&self._1),
5467                )
5468            }
5469        }
5470        #[automatically_derived]
5471        impl alloy_sol_types::SolCall for getStrategiesWithBurnableSharesCall {
5472            type Parameters<'a> = ();
5473            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5474            type Return = getStrategiesWithBurnableSharesReturn;
5475            type ReturnTuple<'a> = (
5476                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
5477                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
5478            );
5479            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
5480            const SIGNATURE: &'static str = "getStrategiesWithBurnableShares()";
5481            const SELECTOR: [u8; 4] = [54u8, 168u8, 197u8, 0u8];
5482            #[inline]
5483            fn new<'a>(
5484                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5485            ) -> Self {
5486                tuple.into()
5487            }
5488            #[inline]
5489            fn tokenize(&self) -> Self::Token<'_> {
5490                ()
5491            }
5492            #[inline]
5493            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5494                getStrategiesWithBurnableSharesReturn::_tokenize(ret)
5495            }
5496            #[inline]
5497            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5498                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
5499                    .map(Into::into)
5500            }
5501            #[inline]
5502            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5503                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
5504                    data,
5505                )
5506                .map(Into::into)
5507            }
5508        }
5509    };
5510    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
5511    /**Function with signature `increaseBurnableShares(address,uint256)` and selector `0xdebe1eab`.
5512    ```solidity
5513    function increaseBurnableShares(address strategy, uint256 addedSharesToBurn) external;
5514    ```*/
5515    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5516    #[derive(Clone)]
5517    pub struct increaseBurnableSharesCall {
5518        #[allow(missing_docs)]
5519        pub strategy: alloy::sol_types::private::Address,
5520        #[allow(missing_docs)]
5521        pub addedSharesToBurn: alloy::sol_types::private::primitives::aliases::U256,
5522    }
5523    ///Container type for the return parameters of the [`increaseBurnableShares(address,uint256)`](increaseBurnableSharesCall) function.
5524    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5525    #[derive(Clone)]
5526    pub struct increaseBurnableSharesReturn {}
5527    #[allow(
5528        non_camel_case_types,
5529        non_snake_case,
5530        clippy::pub_underscore_fields,
5531        clippy::style
5532    )]
5533    const _: () = {
5534        use alloy::sol_types as alloy_sol_types;
5535        {
5536            #[doc(hidden)]
5537            type UnderlyingSolTuple<'a> = (
5538                alloy::sol_types::sol_data::Address,
5539                alloy::sol_types::sol_data::Uint<256>,
5540            );
5541            #[doc(hidden)]
5542            type UnderlyingRustTuple<'a> = (
5543                alloy::sol_types::private::Address,
5544                alloy::sol_types::private::primitives::aliases::U256,
5545            );
5546            #[cfg(test)]
5547            #[allow(dead_code, unreachable_patterns)]
5548            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5549                match _t {
5550                    alloy_sol_types::private::AssertTypeEq::<
5551                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5552                    >(_) => {}
5553                }
5554            }
5555            #[automatically_derived]
5556            #[doc(hidden)]
5557            impl ::core::convert::From<increaseBurnableSharesCall> for UnderlyingRustTuple<'_> {
5558                fn from(value: increaseBurnableSharesCall) -> Self {
5559                    (value.strategy, value.addedSharesToBurn)
5560                }
5561            }
5562            #[automatically_derived]
5563            #[doc(hidden)]
5564            impl ::core::convert::From<UnderlyingRustTuple<'_>> for increaseBurnableSharesCall {
5565                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5566                    Self {
5567                        strategy: tuple.0,
5568                        addedSharesToBurn: tuple.1,
5569                    }
5570                }
5571            }
5572        }
5573        {
5574            #[doc(hidden)]
5575            type UnderlyingSolTuple<'a> = ();
5576            #[doc(hidden)]
5577            type UnderlyingRustTuple<'a> = ();
5578            #[cfg(test)]
5579            #[allow(dead_code, unreachable_patterns)]
5580            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5581                match _t {
5582                    alloy_sol_types::private::AssertTypeEq::<
5583                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5584                    >(_) => {}
5585                }
5586            }
5587            #[automatically_derived]
5588            #[doc(hidden)]
5589            impl ::core::convert::From<increaseBurnableSharesReturn> for UnderlyingRustTuple<'_> {
5590                fn from(value: increaseBurnableSharesReturn) -> Self {
5591                    ()
5592                }
5593            }
5594            #[automatically_derived]
5595            #[doc(hidden)]
5596            impl ::core::convert::From<UnderlyingRustTuple<'_>> for increaseBurnableSharesReturn {
5597                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5598                    Self {}
5599                }
5600            }
5601        }
5602        impl increaseBurnableSharesReturn {
5603            fn _tokenize(
5604                &self,
5605            ) -> <increaseBurnableSharesCall as alloy_sol_types::SolCall>::ReturnToken<'_>
5606            {
5607                ()
5608            }
5609        }
5610        #[automatically_derived]
5611        impl alloy_sol_types::SolCall for increaseBurnableSharesCall {
5612            type Parameters<'a> = (
5613                alloy::sol_types::sol_data::Address,
5614                alloy::sol_types::sol_data::Uint<256>,
5615            );
5616            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5617            type Return = increaseBurnableSharesReturn;
5618            type ReturnTuple<'a> = ();
5619            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
5620            const SIGNATURE: &'static str = "increaseBurnableShares(address,uint256)";
5621            const SELECTOR: [u8; 4] = [222u8, 190u8, 30u8, 171u8];
5622            #[inline]
5623            fn new<'a>(
5624                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5625            ) -> Self {
5626                tuple.into()
5627            }
5628            #[inline]
5629            fn tokenize(&self) -> Self::Token<'_> {
5630                (
5631                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5632                        &self.strategy,
5633                    ),
5634                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
5635                        &self.addedSharesToBurn,
5636                    ),
5637                )
5638            }
5639            #[inline]
5640            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5641                increaseBurnableSharesReturn::_tokenize(ret)
5642            }
5643            #[inline]
5644            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5645                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
5646                    .map(Into::into)
5647            }
5648            #[inline]
5649            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5650                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
5651                    data,
5652                )
5653                .map(Into::into)
5654            }
5655        }
5656    };
5657    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
5658    /**Function with signature `initialize(address,address,uint256)` and selector `0x1794bb3c`.
5659    ```solidity
5660    function initialize(address initialOwner, address initialStrategyWhitelister, uint256 initialPausedStatus) external;
5661    ```*/
5662    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5663    #[derive(Clone)]
5664    pub struct initializeCall {
5665        #[allow(missing_docs)]
5666        pub initialOwner: alloy::sol_types::private::Address,
5667        #[allow(missing_docs)]
5668        pub initialStrategyWhitelister: alloy::sol_types::private::Address,
5669        #[allow(missing_docs)]
5670        pub initialPausedStatus: alloy::sol_types::private::primitives::aliases::U256,
5671    }
5672    ///Container type for the return parameters of the [`initialize(address,address,uint256)`](initializeCall) function.
5673    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5674    #[derive(Clone)]
5675    pub struct initializeReturn {}
5676    #[allow(
5677        non_camel_case_types,
5678        non_snake_case,
5679        clippy::pub_underscore_fields,
5680        clippy::style
5681    )]
5682    const _: () = {
5683        use alloy::sol_types as alloy_sol_types;
5684        {
5685            #[doc(hidden)]
5686            type UnderlyingSolTuple<'a> = (
5687                alloy::sol_types::sol_data::Address,
5688                alloy::sol_types::sol_data::Address,
5689                alloy::sol_types::sol_data::Uint<256>,
5690            );
5691            #[doc(hidden)]
5692            type UnderlyingRustTuple<'a> = (
5693                alloy::sol_types::private::Address,
5694                alloy::sol_types::private::Address,
5695                alloy::sol_types::private::primitives::aliases::U256,
5696            );
5697            #[cfg(test)]
5698            #[allow(dead_code, unreachable_patterns)]
5699            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5700                match _t {
5701                    alloy_sol_types::private::AssertTypeEq::<
5702                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5703                    >(_) => {}
5704                }
5705            }
5706            #[automatically_derived]
5707            #[doc(hidden)]
5708            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
5709                fn from(value: initializeCall) -> Self {
5710                    (
5711                        value.initialOwner,
5712                        value.initialStrategyWhitelister,
5713                        value.initialPausedStatus,
5714                    )
5715                }
5716            }
5717            #[automatically_derived]
5718            #[doc(hidden)]
5719            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
5720                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5721                    Self {
5722                        initialOwner: tuple.0,
5723                        initialStrategyWhitelister: tuple.1,
5724                        initialPausedStatus: tuple.2,
5725                    }
5726                }
5727            }
5728        }
5729        {
5730            #[doc(hidden)]
5731            type UnderlyingSolTuple<'a> = ();
5732            #[doc(hidden)]
5733            type UnderlyingRustTuple<'a> = ();
5734            #[cfg(test)]
5735            #[allow(dead_code, unreachable_patterns)]
5736            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5737                match _t {
5738                    alloy_sol_types::private::AssertTypeEq::<
5739                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5740                    >(_) => {}
5741                }
5742            }
5743            #[automatically_derived]
5744            #[doc(hidden)]
5745            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
5746                fn from(value: initializeReturn) -> Self {
5747                    ()
5748                }
5749            }
5750            #[automatically_derived]
5751            #[doc(hidden)]
5752            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
5753                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5754                    Self {}
5755                }
5756            }
5757        }
5758        impl initializeReturn {
5759            fn _tokenize(&self) -> <initializeCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
5760                ()
5761            }
5762        }
5763        #[automatically_derived]
5764        impl alloy_sol_types::SolCall for initializeCall {
5765            type Parameters<'a> = (
5766                alloy::sol_types::sol_data::Address,
5767                alloy::sol_types::sol_data::Address,
5768                alloy::sol_types::sol_data::Uint<256>,
5769            );
5770            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5771            type Return = initializeReturn;
5772            type ReturnTuple<'a> = ();
5773            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
5774            const SIGNATURE: &'static str = "initialize(address,address,uint256)";
5775            const SELECTOR: [u8; 4] = [23u8, 148u8, 187u8, 60u8];
5776            #[inline]
5777            fn new<'a>(
5778                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5779            ) -> Self {
5780                tuple.into()
5781            }
5782            #[inline]
5783            fn tokenize(&self) -> Self::Token<'_> {
5784                (
5785                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5786                        &self.initialOwner,
5787                    ),
5788                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5789                        &self.initialStrategyWhitelister,
5790                    ),
5791                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
5792                        &self.initialPausedStatus,
5793                    ),
5794                )
5795            }
5796            #[inline]
5797            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5798                initializeReturn::_tokenize(ret)
5799            }
5800            #[inline]
5801            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5802                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
5803                    .map(Into::into)
5804            }
5805            #[inline]
5806            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5807                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
5808                    data,
5809                )
5810                .map(Into::into)
5811            }
5812        }
5813    };
5814    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
5815    /**Function with signature `nonces(address)` and selector `0x7ecebe00`.
5816    ```solidity
5817    function nonces(address signer) external view returns (uint256 nonce);
5818    ```*/
5819    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5820    #[derive(Clone)]
5821    pub struct noncesCall {
5822        #[allow(missing_docs)]
5823        pub signer: alloy::sol_types::private::Address,
5824    }
5825    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
5826    ///Container type for the return parameters of the [`nonces(address)`](noncesCall) function.
5827    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5828    #[derive(Clone)]
5829    pub struct noncesReturn {
5830        #[allow(missing_docs)]
5831        pub nonce: alloy::sol_types::private::primitives::aliases::U256,
5832    }
5833    #[allow(
5834        non_camel_case_types,
5835        non_snake_case,
5836        clippy::pub_underscore_fields,
5837        clippy::style
5838    )]
5839    const _: () = {
5840        use alloy::sol_types as alloy_sol_types;
5841        {
5842            #[doc(hidden)]
5843            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5844            #[doc(hidden)]
5845            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5846            #[cfg(test)]
5847            #[allow(dead_code, unreachable_patterns)]
5848            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5849                match _t {
5850                    alloy_sol_types::private::AssertTypeEq::<
5851                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5852                    >(_) => {}
5853                }
5854            }
5855            #[automatically_derived]
5856            #[doc(hidden)]
5857            impl ::core::convert::From<noncesCall> for UnderlyingRustTuple<'_> {
5858                fn from(value: noncesCall) -> Self {
5859                    (value.signer,)
5860                }
5861            }
5862            #[automatically_derived]
5863            #[doc(hidden)]
5864            impl ::core::convert::From<UnderlyingRustTuple<'_>> for noncesCall {
5865                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5866                    Self { signer: tuple.0 }
5867                }
5868            }
5869        }
5870        {
5871            #[doc(hidden)]
5872            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
5873            #[doc(hidden)]
5874            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
5875            #[cfg(test)]
5876            #[allow(dead_code, unreachable_patterns)]
5877            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5878                match _t {
5879                    alloy_sol_types::private::AssertTypeEq::<
5880                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5881                    >(_) => {}
5882                }
5883            }
5884            #[automatically_derived]
5885            #[doc(hidden)]
5886            impl ::core::convert::From<noncesReturn> for UnderlyingRustTuple<'_> {
5887                fn from(value: noncesReturn) -> Self {
5888                    (value.nonce,)
5889                }
5890            }
5891            #[automatically_derived]
5892            #[doc(hidden)]
5893            impl ::core::convert::From<UnderlyingRustTuple<'_>> for noncesReturn {
5894                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5895                    Self { nonce: tuple.0 }
5896                }
5897            }
5898        }
5899        #[automatically_derived]
5900        impl alloy_sol_types::SolCall for noncesCall {
5901            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
5902            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5903            type Return = alloy::sol_types::private::primitives::aliases::U256;
5904            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
5905            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
5906            const SIGNATURE: &'static str = "nonces(address)";
5907            const SELECTOR: [u8; 4] = [126u8, 206u8, 190u8, 0u8];
5908            #[inline]
5909            fn new<'a>(
5910                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5911            ) -> Self {
5912                tuple.into()
5913            }
5914            #[inline]
5915            fn tokenize(&self) -> Self::Token<'_> {
5916                (
5917                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5918                        &self.signer,
5919                    ),
5920                )
5921            }
5922            #[inline]
5923            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5924                (
5925                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
5926                        ret,
5927                    ),
5928                )
5929            }
5930            #[inline]
5931            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5932                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
5933                    |r| {
5934                        let r: noncesReturn = r.into();
5935                        r.nonce
5936                    },
5937                )
5938            }
5939            #[inline]
5940            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5941                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
5942                    data,
5943                )
5944                .map(|r| {
5945                    let r: noncesReturn = r.into();
5946                    r.nonce
5947                })
5948            }
5949        }
5950    };
5951    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
5952    /**Function with signature `owner()` and selector `0x8da5cb5b`.
5953    ```solidity
5954    function owner() external view returns (address);
5955    ```*/
5956    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5957    #[derive(Clone)]
5958    pub struct ownerCall;
5959    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
5960    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
5961    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5962    #[derive(Clone)]
5963    pub struct ownerReturn {
5964        #[allow(missing_docs)]
5965        pub _0: alloy::sol_types::private::Address,
5966    }
5967    #[allow(
5968        non_camel_case_types,
5969        non_snake_case,
5970        clippy::pub_underscore_fields,
5971        clippy::style
5972    )]
5973    const _: () = {
5974        use alloy::sol_types as alloy_sol_types;
5975        {
5976            #[doc(hidden)]
5977            type UnderlyingSolTuple<'a> = ();
5978            #[doc(hidden)]
5979            type UnderlyingRustTuple<'a> = ();
5980            #[cfg(test)]
5981            #[allow(dead_code, unreachable_patterns)]
5982            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5983                match _t {
5984                    alloy_sol_types::private::AssertTypeEq::<
5985                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5986                    >(_) => {}
5987                }
5988            }
5989            #[automatically_derived]
5990            #[doc(hidden)]
5991            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
5992                fn from(value: ownerCall) -> Self {
5993                    ()
5994                }
5995            }
5996            #[automatically_derived]
5997            #[doc(hidden)]
5998            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
5999                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6000                    Self
6001                }
6002            }
6003        }
6004        {
6005            #[doc(hidden)]
6006            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6007            #[doc(hidden)]
6008            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6009            #[cfg(test)]
6010            #[allow(dead_code, unreachable_patterns)]
6011            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6012                match _t {
6013                    alloy_sol_types::private::AssertTypeEq::<
6014                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6015                    >(_) => {}
6016                }
6017            }
6018            #[automatically_derived]
6019            #[doc(hidden)]
6020            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
6021                fn from(value: ownerReturn) -> Self {
6022                    (value._0,)
6023                }
6024            }
6025            #[automatically_derived]
6026            #[doc(hidden)]
6027            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
6028                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6029                    Self { _0: tuple.0 }
6030                }
6031            }
6032        }
6033        #[automatically_derived]
6034        impl alloy_sol_types::SolCall for ownerCall {
6035            type Parameters<'a> = ();
6036            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
6037            type Return = alloy::sol_types::private::Address;
6038            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
6039            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6040            const SIGNATURE: &'static str = "owner()";
6041            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
6042            #[inline]
6043            fn new<'a>(
6044                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6045            ) -> Self {
6046                tuple.into()
6047            }
6048            #[inline]
6049            fn tokenize(&self) -> Self::Token<'_> {
6050                ()
6051            }
6052            #[inline]
6053            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6054                (
6055                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6056                        ret,
6057                    ),
6058                )
6059            }
6060            #[inline]
6061            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6062                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
6063                    |r| {
6064                        let r: ownerReturn = r.into();
6065                        r._0
6066                    },
6067                )
6068            }
6069            #[inline]
6070            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6071                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
6072                    data,
6073                )
6074                .map(|r| {
6075                    let r: ownerReturn = r.into();
6076                    r._0
6077                })
6078            }
6079        }
6080    };
6081    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
6082    /**Function with signature `pause(uint256)` and selector `0x136439dd`.
6083    ```solidity
6084    function pause(uint256 newPausedStatus) external;
6085    ```*/
6086    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6087    #[derive(Clone)]
6088    pub struct pauseCall {
6089        #[allow(missing_docs)]
6090        pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256,
6091    }
6092    ///Container type for the return parameters of the [`pause(uint256)`](pauseCall) function.
6093    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6094    #[derive(Clone)]
6095    pub struct pauseReturn {}
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> = (alloy::sol_types::sol_data::Uint<256>,);
6107            #[doc(hidden)]
6108            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
6109            #[cfg(test)]
6110            #[allow(dead_code, unreachable_patterns)]
6111            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6112                match _t {
6113                    alloy_sol_types::private::AssertTypeEq::<
6114                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6115                    >(_) => {}
6116                }
6117            }
6118            #[automatically_derived]
6119            #[doc(hidden)]
6120            impl ::core::convert::From<pauseCall> for UnderlyingRustTuple<'_> {
6121                fn from(value: pauseCall) -> Self {
6122                    (value.newPausedStatus,)
6123                }
6124            }
6125            #[automatically_derived]
6126            #[doc(hidden)]
6127            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauseCall {
6128                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6129                    Self {
6130                        newPausedStatus: tuple.0,
6131                    }
6132                }
6133            }
6134        }
6135        {
6136            #[doc(hidden)]
6137            type UnderlyingSolTuple<'a> = ();
6138            #[doc(hidden)]
6139            type UnderlyingRustTuple<'a> = ();
6140            #[cfg(test)]
6141            #[allow(dead_code, unreachable_patterns)]
6142            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6143                match _t {
6144                    alloy_sol_types::private::AssertTypeEq::<
6145                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6146                    >(_) => {}
6147                }
6148            }
6149            #[automatically_derived]
6150            #[doc(hidden)]
6151            impl ::core::convert::From<pauseReturn> for UnderlyingRustTuple<'_> {
6152                fn from(value: pauseReturn) -> Self {
6153                    ()
6154                }
6155            }
6156            #[automatically_derived]
6157            #[doc(hidden)]
6158            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauseReturn {
6159                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6160                    Self {}
6161                }
6162            }
6163        }
6164        impl pauseReturn {
6165            fn _tokenize(&self) -> <pauseCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
6166                ()
6167            }
6168        }
6169        #[automatically_derived]
6170        impl alloy_sol_types::SolCall for pauseCall {
6171            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6172            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
6173            type Return = pauseReturn;
6174            type ReturnTuple<'a> = ();
6175            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6176            const SIGNATURE: &'static str = "pause(uint256)";
6177            const SELECTOR: [u8; 4] = [19u8, 100u8, 57u8, 221u8];
6178            #[inline]
6179            fn new<'a>(
6180                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6181            ) -> Self {
6182                tuple.into()
6183            }
6184            #[inline]
6185            fn tokenize(&self) -> Self::Token<'_> {
6186                (
6187                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
6188                        &self.newPausedStatus,
6189                    ),
6190                )
6191            }
6192            #[inline]
6193            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6194                pauseReturn::_tokenize(ret)
6195            }
6196            #[inline]
6197            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6198                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
6199                    .map(Into::into)
6200            }
6201            #[inline]
6202            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6203                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
6204                    data,
6205                )
6206                .map(Into::into)
6207            }
6208        }
6209    };
6210    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
6211    /**Function with signature `pauseAll()` and selector `0x595c6a67`.
6212    ```solidity
6213    function pauseAll() external;
6214    ```*/
6215    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6216    #[derive(Clone)]
6217    pub struct pauseAllCall;
6218    ///Container type for the return parameters of the [`pauseAll()`](pauseAllCall) function.
6219    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6220    #[derive(Clone)]
6221    pub struct pauseAllReturn {}
6222    #[allow(
6223        non_camel_case_types,
6224        non_snake_case,
6225        clippy::pub_underscore_fields,
6226        clippy::style
6227    )]
6228    const _: () = {
6229        use alloy::sol_types as alloy_sol_types;
6230        {
6231            #[doc(hidden)]
6232            type UnderlyingSolTuple<'a> = ();
6233            #[doc(hidden)]
6234            type UnderlyingRustTuple<'a> = ();
6235            #[cfg(test)]
6236            #[allow(dead_code, unreachable_patterns)]
6237            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6238                match _t {
6239                    alloy_sol_types::private::AssertTypeEq::<
6240                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6241                    >(_) => {}
6242                }
6243            }
6244            #[automatically_derived]
6245            #[doc(hidden)]
6246            impl ::core::convert::From<pauseAllCall> for UnderlyingRustTuple<'_> {
6247                fn from(value: pauseAllCall) -> Self {
6248                    ()
6249                }
6250            }
6251            #[automatically_derived]
6252            #[doc(hidden)]
6253            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauseAllCall {
6254                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6255                    Self
6256                }
6257            }
6258        }
6259        {
6260            #[doc(hidden)]
6261            type UnderlyingSolTuple<'a> = ();
6262            #[doc(hidden)]
6263            type UnderlyingRustTuple<'a> = ();
6264            #[cfg(test)]
6265            #[allow(dead_code, unreachable_patterns)]
6266            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6267                match _t {
6268                    alloy_sol_types::private::AssertTypeEq::<
6269                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6270                    >(_) => {}
6271                }
6272            }
6273            #[automatically_derived]
6274            #[doc(hidden)]
6275            impl ::core::convert::From<pauseAllReturn> for UnderlyingRustTuple<'_> {
6276                fn from(value: pauseAllReturn) -> Self {
6277                    ()
6278                }
6279            }
6280            #[automatically_derived]
6281            #[doc(hidden)]
6282            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauseAllReturn {
6283                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6284                    Self {}
6285                }
6286            }
6287        }
6288        impl pauseAllReturn {
6289            fn _tokenize(&self) -> <pauseAllCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
6290                ()
6291            }
6292        }
6293        #[automatically_derived]
6294        impl alloy_sol_types::SolCall for pauseAllCall {
6295            type Parameters<'a> = ();
6296            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
6297            type Return = pauseAllReturn;
6298            type ReturnTuple<'a> = ();
6299            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6300            const SIGNATURE: &'static str = "pauseAll()";
6301            const SELECTOR: [u8; 4] = [89u8, 92u8, 106u8, 103u8];
6302            #[inline]
6303            fn new<'a>(
6304                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6305            ) -> Self {
6306                tuple.into()
6307            }
6308            #[inline]
6309            fn tokenize(&self) -> Self::Token<'_> {
6310                ()
6311            }
6312            #[inline]
6313            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6314                pauseAllReturn::_tokenize(ret)
6315            }
6316            #[inline]
6317            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6318                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
6319                    .map(Into::into)
6320            }
6321            #[inline]
6322            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6323                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
6324                    data,
6325                )
6326                .map(Into::into)
6327            }
6328        }
6329    };
6330    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
6331    /**Function with signature `paused(uint8)` and selector `0x5ac86ab7`.
6332    ```solidity
6333    function paused(uint8 index) external view returns (bool);
6334    ```*/
6335    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6336    #[derive(Clone)]
6337    pub struct paused_0Call {
6338        #[allow(missing_docs)]
6339        pub index: u8,
6340    }
6341    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
6342    ///Container type for the return parameters of the [`paused(uint8)`](paused_0Call) function.
6343    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6344    #[derive(Clone)]
6345    pub struct paused_0Return {
6346        #[allow(missing_docs)]
6347        pub _0: bool,
6348    }
6349    #[allow(
6350        non_camel_case_types,
6351        non_snake_case,
6352        clippy::pub_underscore_fields,
6353        clippy::style
6354    )]
6355    const _: () = {
6356        use alloy::sol_types as alloy_sol_types;
6357        {
6358            #[doc(hidden)]
6359            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,);
6360            #[doc(hidden)]
6361            type UnderlyingRustTuple<'a> = (u8,);
6362            #[cfg(test)]
6363            #[allow(dead_code, unreachable_patterns)]
6364            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6365                match _t {
6366                    alloy_sol_types::private::AssertTypeEq::<
6367                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6368                    >(_) => {}
6369                }
6370            }
6371            #[automatically_derived]
6372            #[doc(hidden)]
6373            impl ::core::convert::From<paused_0Call> for UnderlyingRustTuple<'_> {
6374                fn from(value: paused_0Call) -> Self {
6375                    (value.index,)
6376                }
6377            }
6378            #[automatically_derived]
6379            #[doc(hidden)]
6380            impl ::core::convert::From<UnderlyingRustTuple<'_>> for paused_0Call {
6381                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6382                    Self { index: tuple.0 }
6383                }
6384            }
6385        }
6386        {
6387            #[doc(hidden)]
6388            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
6389            #[doc(hidden)]
6390            type UnderlyingRustTuple<'a> = (bool,);
6391            #[cfg(test)]
6392            #[allow(dead_code, unreachable_patterns)]
6393            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6394                match _t {
6395                    alloy_sol_types::private::AssertTypeEq::<
6396                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6397                    >(_) => {}
6398                }
6399            }
6400            #[automatically_derived]
6401            #[doc(hidden)]
6402            impl ::core::convert::From<paused_0Return> for UnderlyingRustTuple<'_> {
6403                fn from(value: paused_0Return) -> Self {
6404                    (value._0,)
6405                }
6406            }
6407            #[automatically_derived]
6408            #[doc(hidden)]
6409            impl ::core::convert::From<UnderlyingRustTuple<'_>> for paused_0Return {
6410                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6411                    Self { _0: tuple.0 }
6412                }
6413            }
6414        }
6415        #[automatically_derived]
6416        impl alloy_sol_types::SolCall for paused_0Call {
6417            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,);
6418            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
6419            type Return = bool;
6420            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
6421            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6422            const SIGNATURE: &'static str = "paused(uint8)";
6423            const SELECTOR: [u8; 4] = [90u8, 200u8, 106u8, 183u8];
6424            #[inline]
6425            fn new<'a>(
6426                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6427            ) -> Self {
6428                tuple.into()
6429            }
6430            #[inline]
6431            fn tokenize(&self) -> Self::Token<'_> {
6432                (
6433                    <alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::SolType>::tokenize(
6434                        &self.index,
6435                    ),
6436                )
6437            }
6438            #[inline]
6439            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6440                (<alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(ret),)
6441            }
6442            #[inline]
6443            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6444                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
6445                    |r| {
6446                        let r: paused_0Return = r.into();
6447                        r._0
6448                    },
6449                )
6450            }
6451            #[inline]
6452            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6453                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
6454                    data,
6455                )
6456                .map(|r| {
6457                    let r: paused_0Return = r.into();
6458                    r._0
6459                })
6460            }
6461        }
6462    };
6463    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
6464    /**Function with signature `paused()` and selector `0x5c975abb`.
6465    ```solidity
6466    function paused() external view returns (uint256);
6467    ```*/
6468    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6469    #[derive(Clone)]
6470    pub struct paused_1Call;
6471    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
6472    ///Container type for the return parameters of the [`paused()`](paused_1Call) function.
6473    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6474    #[derive(Clone)]
6475    pub struct paused_1Return {
6476        #[allow(missing_docs)]
6477        pub _0: alloy::sol_types::private::primitives::aliases::U256,
6478    }
6479    #[allow(
6480        non_camel_case_types,
6481        non_snake_case,
6482        clippy::pub_underscore_fields,
6483        clippy::style
6484    )]
6485    const _: () = {
6486        use alloy::sol_types as alloy_sol_types;
6487        {
6488            #[doc(hidden)]
6489            type UnderlyingSolTuple<'a> = ();
6490            #[doc(hidden)]
6491            type UnderlyingRustTuple<'a> = ();
6492            #[cfg(test)]
6493            #[allow(dead_code, unreachable_patterns)]
6494            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6495                match _t {
6496                    alloy_sol_types::private::AssertTypeEq::<
6497                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6498                    >(_) => {}
6499                }
6500            }
6501            #[automatically_derived]
6502            #[doc(hidden)]
6503            impl ::core::convert::From<paused_1Call> for UnderlyingRustTuple<'_> {
6504                fn from(value: paused_1Call) -> Self {
6505                    ()
6506                }
6507            }
6508            #[automatically_derived]
6509            #[doc(hidden)]
6510            impl ::core::convert::From<UnderlyingRustTuple<'_>> for paused_1Call {
6511                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6512                    Self
6513                }
6514            }
6515        }
6516        {
6517            #[doc(hidden)]
6518            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6519            #[doc(hidden)]
6520            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
6521            #[cfg(test)]
6522            #[allow(dead_code, unreachable_patterns)]
6523            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6524                match _t {
6525                    alloy_sol_types::private::AssertTypeEq::<
6526                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6527                    >(_) => {}
6528                }
6529            }
6530            #[automatically_derived]
6531            #[doc(hidden)]
6532            impl ::core::convert::From<paused_1Return> for UnderlyingRustTuple<'_> {
6533                fn from(value: paused_1Return) -> Self {
6534                    (value._0,)
6535                }
6536            }
6537            #[automatically_derived]
6538            #[doc(hidden)]
6539            impl ::core::convert::From<UnderlyingRustTuple<'_>> for paused_1Return {
6540                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6541                    Self { _0: tuple.0 }
6542                }
6543            }
6544        }
6545        #[automatically_derived]
6546        impl alloy_sol_types::SolCall for paused_1Call {
6547            type Parameters<'a> = ();
6548            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
6549            type Return = alloy::sol_types::private::primitives::aliases::U256;
6550            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6551            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6552            const SIGNATURE: &'static str = "paused()";
6553            const SELECTOR: [u8; 4] = [92u8, 151u8, 90u8, 187u8];
6554            #[inline]
6555            fn new<'a>(
6556                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6557            ) -> Self {
6558                tuple.into()
6559            }
6560            #[inline]
6561            fn tokenize(&self) -> Self::Token<'_> {
6562                ()
6563            }
6564            #[inline]
6565            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6566                (
6567                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
6568                        ret,
6569                    ),
6570                )
6571            }
6572            #[inline]
6573            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6574                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
6575                    |r| {
6576                        let r: paused_1Return = r.into();
6577                        r._0
6578                    },
6579                )
6580            }
6581            #[inline]
6582            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6583                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
6584                    data,
6585                )
6586                .map(|r| {
6587                    let r: paused_1Return = r.into();
6588                    r._0
6589                })
6590            }
6591        }
6592    };
6593    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
6594    /**Function with signature `pauserRegistry()` and selector `0x886f1195`.
6595    ```solidity
6596    function pauserRegistry() external view returns (address);
6597    ```*/
6598    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6599    #[derive(Clone)]
6600    pub struct pauserRegistryCall;
6601    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
6602    ///Container type for the return parameters of the [`pauserRegistry()`](pauserRegistryCall) function.
6603    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6604    #[derive(Clone)]
6605    pub struct pauserRegistryReturn {
6606        #[allow(missing_docs)]
6607        pub _0: alloy::sol_types::private::Address,
6608    }
6609    #[allow(
6610        non_camel_case_types,
6611        non_snake_case,
6612        clippy::pub_underscore_fields,
6613        clippy::style
6614    )]
6615    const _: () = {
6616        use alloy::sol_types as alloy_sol_types;
6617        {
6618            #[doc(hidden)]
6619            type UnderlyingSolTuple<'a> = ();
6620            #[doc(hidden)]
6621            type UnderlyingRustTuple<'a> = ();
6622            #[cfg(test)]
6623            #[allow(dead_code, unreachable_patterns)]
6624            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6625                match _t {
6626                    alloy_sol_types::private::AssertTypeEq::<
6627                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6628                    >(_) => {}
6629                }
6630            }
6631            #[automatically_derived]
6632            #[doc(hidden)]
6633            impl ::core::convert::From<pauserRegistryCall> for UnderlyingRustTuple<'_> {
6634                fn from(value: pauserRegistryCall) -> Self {
6635                    ()
6636                }
6637            }
6638            #[automatically_derived]
6639            #[doc(hidden)]
6640            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauserRegistryCall {
6641                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6642                    Self
6643                }
6644            }
6645        }
6646        {
6647            #[doc(hidden)]
6648            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6649            #[doc(hidden)]
6650            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6651            #[cfg(test)]
6652            #[allow(dead_code, unreachable_patterns)]
6653            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6654                match _t {
6655                    alloy_sol_types::private::AssertTypeEq::<
6656                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6657                    >(_) => {}
6658                }
6659            }
6660            #[automatically_derived]
6661            #[doc(hidden)]
6662            impl ::core::convert::From<pauserRegistryReturn> for UnderlyingRustTuple<'_> {
6663                fn from(value: pauserRegistryReturn) -> Self {
6664                    (value._0,)
6665                }
6666            }
6667            #[automatically_derived]
6668            #[doc(hidden)]
6669            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauserRegistryReturn {
6670                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6671                    Self { _0: tuple.0 }
6672                }
6673            }
6674        }
6675        #[automatically_derived]
6676        impl alloy_sol_types::SolCall for pauserRegistryCall {
6677            type Parameters<'a> = ();
6678            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
6679            type Return = alloy::sol_types::private::Address;
6680            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
6681            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6682            const SIGNATURE: &'static str = "pauserRegistry()";
6683            const SELECTOR: [u8; 4] = [136u8, 111u8, 17u8, 149u8];
6684            #[inline]
6685            fn new<'a>(
6686                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6687            ) -> Self {
6688                tuple.into()
6689            }
6690            #[inline]
6691            fn tokenize(&self) -> Self::Token<'_> {
6692                ()
6693            }
6694            #[inline]
6695            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6696                (
6697                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6698                        ret,
6699                    ),
6700                )
6701            }
6702            #[inline]
6703            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6704                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
6705                    |r| {
6706                        let r: pauserRegistryReturn = r.into();
6707                        r._0
6708                    },
6709                )
6710            }
6711            #[inline]
6712            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6713                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
6714                    data,
6715                )
6716                .map(|r| {
6717                    let r: pauserRegistryReturn = r.into();
6718                    r._0
6719                })
6720            }
6721        }
6722    };
6723    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
6724    /**Function with signature `removeDepositShares(address,address,uint256)` and selector `0x724af423`.
6725    ```solidity
6726    function removeDepositShares(address staker, address strategy, uint256 depositSharesToRemove) external returns (uint256);
6727    ```*/
6728    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6729    #[derive(Clone)]
6730    pub struct removeDepositSharesCall {
6731        #[allow(missing_docs)]
6732        pub staker: alloy::sol_types::private::Address,
6733        #[allow(missing_docs)]
6734        pub strategy: alloy::sol_types::private::Address,
6735        #[allow(missing_docs)]
6736        pub depositSharesToRemove: alloy::sol_types::private::primitives::aliases::U256,
6737    }
6738    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
6739    ///Container type for the return parameters of the [`removeDepositShares(address,address,uint256)`](removeDepositSharesCall) function.
6740    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6741    #[derive(Clone)]
6742    pub struct removeDepositSharesReturn {
6743        #[allow(missing_docs)]
6744        pub _0: alloy::sol_types::private::primitives::aliases::U256,
6745    }
6746    #[allow(
6747        non_camel_case_types,
6748        non_snake_case,
6749        clippy::pub_underscore_fields,
6750        clippy::style
6751    )]
6752    const _: () = {
6753        use alloy::sol_types as alloy_sol_types;
6754        {
6755            #[doc(hidden)]
6756            type UnderlyingSolTuple<'a> = (
6757                alloy::sol_types::sol_data::Address,
6758                alloy::sol_types::sol_data::Address,
6759                alloy::sol_types::sol_data::Uint<256>,
6760            );
6761            #[doc(hidden)]
6762            type UnderlyingRustTuple<'a> = (
6763                alloy::sol_types::private::Address,
6764                alloy::sol_types::private::Address,
6765                alloy::sol_types::private::primitives::aliases::U256,
6766            );
6767            #[cfg(test)]
6768            #[allow(dead_code, unreachable_patterns)]
6769            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6770                match _t {
6771                    alloy_sol_types::private::AssertTypeEq::<
6772                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6773                    >(_) => {}
6774                }
6775            }
6776            #[automatically_derived]
6777            #[doc(hidden)]
6778            impl ::core::convert::From<removeDepositSharesCall> for UnderlyingRustTuple<'_> {
6779                fn from(value: removeDepositSharesCall) -> Self {
6780                    (value.staker, value.strategy, value.depositSharesToRemove)
6781                }
6782            }
6783            #[automatically_derived]
6784            #[doc(hidden)]
6785            impl ::core::convert::From<UnderlyingRustTuple<'_>> for removeDepositSharesCall {
6786                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6787                    Self {
6788                        staker: tuple.0,
6789                        strategy: tuple.1,
6790                        depositSharesToRemove: tuple.2,
6791                    }
6792                }
6793            }
6794        }
6795        {
6796            #[doc(hidden)]
6797            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6798            #[doc(hidden)]
6799            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
6800            #[cfg(test)]
6801            #[allow(dead_code, unreachable_patterns)]
6802            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6803                match _t {
6804                    alloy_sol_types::private::AssertTypeEq::<
6805                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6806                    >(_) => {}
6807                }
6808            }
6809            #[automatically_derived]
6810            #[doc(hidden)]
6811            impl ::core::convert::From<removeDepositSharesReturn> for UnderlyingRustTuple<'_> {
6812                fn from(value: removeDepositSharesReturn) -> Self {
6813                    (value._0,)
6814                }
6815            }
6816            #[automatically_derived]
6817            #[doc(hidden)]
6818            impl ::core::convert::From<UnderlyingRustTuple<'_>> for removeDepositSharesReturn {
6819                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6820                    Self { _0: tuple.0 }
6821                }
6822            }
6823        }
6824        #[automatically_derived]
6825        impl alloy_sol_types::SolCall for removeDepositSharesCall {
6826            type Parameters<'a> = (
6827                alloy::sol_types::sol_data::Address,
6828                alloy::sol_types::sol_data::Address,
6829                alloy::sol_types::sol_data::Uint<256>,
6830            );
6831            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
6832            type Return = alloy::sol_types::private::primitives::aliases::U256;
6833            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6834            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6835            const SIGNATURE: &'static str = "removeDepositShares(address,address,uint256)";
6836            const SELECTOR: [u8; 4] = [114u8, 74u8, 244u8, 35u8];
6837            #[inline]
6838            fn new<'a>(
6839                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6840            ) -> Self {
6841                tuple.into()
6842            }
6843            #[inline]
6844            fn tokenize(&self) -> Self::Token<'_> {
6845                (
6846                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6847                        &self.staker,
6848                    ),
6849                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6850                        &self.strategy,
6851                    ),
6852                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
6853                        &self.depositSharesToRemove,
6854                    ),
6855                )
6856            }
6857            #[inline]
6858            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6859                (
6860                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
6861                        ret,
6862                    ),
6863                )
6864            }
6865            #[inline]
6866            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6867                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
6868                    |r| {
6869                        let r: removeDepositSharesReturn = r.into();
6870                        r._0
6871                    },
6872                )
6873            }
6874            #[inline]
6875            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6876                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
6877                    data,
6878                )
6879                .map(|r| {
6880                    let r: removeDepositSharesReturn = r.into();
6881                    r._0
6882                })
6883            }
6884        }
6885    };
6886    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
6887    /**Function with signature `removeStrategiesFromDepositWhitelist(address[])` and selector `0xb5d8b5b8`.
6888    ```solidity
6889    function removeStrategiesFromDepositWhitelist(address[] memory strategiesToRemoveFromWhitelist) external;
6890    ```*/
6891    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6892    #[derive(Clone)]
6893    pub struct removeStrategiesFromDepositWhitelistCall {
6894        #[allow(missing_docs)]
6895        pub strategiesToRemoveFromWhitelist:
6896            alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
6897    }
6898    ///Container type for the return parameters of the [`removeStrategiesFromDepositWhitelist(address[])`](removeStrategiesFromDepositWhitelistCall) function.
6899    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6900    #[derive(Clone)]
6901    pub struct removeStrategiesFromDepositWhitelistReturn {}
6902    #[allow(
6903        non_camel_case_types,
6904        non_snake_case,
6905        clippy::pub_underscore_fields,
6906        clippy::style
6907    )]
6908    const _: () = {
6909        use alloy::sol_types as alloy_sol_types;
6910        {
6911            #[doc(hidden)]
6912            type UnderlyingSolTuple<'a> =
6913                (alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,);
6914            #[doc(hidden)]
6915            type UnderlyingRustTuple<'a> =
6916                (alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,);
6917            #[cfg(test)]
6918            #[allow(dead_code, unreachable_patterns)]
6919            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6920                match _t {
6921                    alloy_sol_types::private::AssertTypeEq::<
6922                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6923                    >(_) => {}
6924                }
6925            }
6926            #[automatically_derived]
6927            #[doc(hidden)]
6928            impl ::core::convert::From<removeStrategiesFromDepositWhitelistCall> for UnderlyingRustTuple<'_> {
6929                fn from(value: removeStrategiesFromDepositWhitelistCall) -> Self {
6930                    (value.strategiesToRemoveFromWhitelist,)
6931                }
6932            }
6933            #[automatically_derived]
6934            #[doc(hidden)]
6935            impl ::core::convert::From<UnderlyingRustTuple<'_>> for removeStrategiesFromDepositWhitelistCall {
6936                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6937                    Self {
6938                        strategiesToRemoveFromWhitelist: tuple.0,
6939                    }
6940                }
6941            }
6942        }
6943        {
6944            #[doc(hidden)]
6945            type UnderlyingSolTuple<'a> = ();
6946            #[doc(hidden)]
6947            type UnderlyingRustTuple<'a> = ();
6948            #[cfg(test)]
6949            #[allow(dead_code, unreachable_patterns)]
6950            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6951                match _t {
6952                    alloy_sol_types::private::AssertTypeEq::<
6953                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6954                    >(_) => {}
6955                }
6956            }
6957            #[automatically_derived]
6958            #[doc(hidden)]
6959            impl ::core::convert::From<removeStrategiesFromDepositWhitelistReturn> for UnderlyingRustTuple<'_> {
6960                fn from(value: removeStrategiesFromDepositWhitelistReturn) -> Self {
6961                    ()
6962                }
6963            }
6964            #[automatically_derived]
6965            #[doc(hidden)]
6966            impl ::core::convert::From<UnderlyingRustTuple<'_>> for removeStrategiesFromDepositWhitelistReturn {
6967                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6968                    Self {}
6969                }
6970            }
6971        }
6972        impl removeStrategiesFromDepositWhitelistReturn {
6973            fn _tokenize(
6974                &self,
6975            ) -> <removeStrategiesFromDepositWhitelistCall as alloy_sol_types::SolCall>::ReturnToken<
6976                '_,
6977            >{
6978                ()
6979            }
6980        }
6981        #[automatically_derived]
6982        impl alloy_sol_types::SolCall for removeStrategiesFromDepositWhitelistCall {
6983            type Parameters<'a> =
6984                (alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,);
6985            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
6986            type Return = removeStrategiesFromDepositWhitelistReturn;
6987            type ReturnTuple<'a> = ();
6988            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6989            const SIGNATURE: &'static str = "removeStrategiesFromDepositWhitelist(address[])";
6990            const SELECTOR: [u8; 4] = [181u8, 216u8, 181u8, 184u8];
6991            #[inline]
6992            fn new<'a>(
6993                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6994            ) -> Self {
6995                tuple.into()
6996            }
6997            #[inline]
6998            fn tokenize(&self) -> Self::Token<'_> {
6999                (<alloy::sol_types::sol_data::Array<
7000                    alloy::sol_types::sol_data::Address,
7001                > as alloy_sol_types::SolType>::tokenize(
7002                    &self.strategiesToRemoveFromWhitelist,
7003                ),)
7004            }
7005            #[inline]
7006            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7007                removeStrategiesFromDepositWhitelistReturn::_tokenize(ret)
7008            }
7009            #[inline]
7010            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7011                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
7012                    .map(Into::into)
7013            }
7014            #[inline]
7015            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7016                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
7017                    data,
7018                )
7019                .map(Into::into)
7020            }
7021        }
7022    };
7023    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
7024    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
7025    ```solidity
7026    function renounceOwnership() external;
7027    ```*/
7028    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7029    #[derive(Clone)]
7030    pub struct renounceOwnershipCall;
7031    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
7032    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7033    #[derive(Clone)]
7034    pub struct renounceOwnershipReturn {}
7035    #[allow(
7036        non_camel_case_types,
7037        non_snake_case,
7038        clippy::pub_underscore_fields,
7039        clippy::style
7040    )]
7041    const _: () = {
7042        use alloy::sol_types as alloy_sol_types;
7043        {
7044            #[doc(hidden)]
7045            type UnderlyingSolTuple<'a> = ();
7046            #[doc(hidden)]
7047            type UnderlyingRustTuple<'a> = ();
7048            #[cfg(test)]
7049            #[allow(dead_code, unreachable_patterns)]
7050            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7051                match _t {
7052                    alloy_sol_types::private::AssertTypeEq::<
7053                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7054                    >(_) => {}
7055                }
7056            }
7057            #[automatically_derived]
7058            #[doc(hidden)]
7059            impl ::core::convert::From<renounceOwnershipCall> for UnderlyingRustTuple<'_> {
7060                fn from(value: renounceOwnershipCall) -> Self {
7061                    ()
7062                }
7063            }
7064            #[automatically_derived]
7065            #[doc(hidden)]
7066            impl ::core::convert::From<UnderlyingRustTuple<'_>> for renounceOwnershipCall {
7067                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7068                    Self
7069                }
7070            }
7071        }
7072        {
7073            #[doc(hidden)]
7074            type UnderlyingSolTuple<'a> = ();
7075            #[doc(hidden)]
7076            type UnderlyingRustTuple<'a> = ();
7077            #[cfg(test)]
7078            #[allow(dead_code, unreachable_patterns)]
7079            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7080                match _t {
7081                    alloy_sol_types::private::AssertTypeEq::<
7082                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7083                    >(_) => {}
7084                }
7085            }
7086            #[automatically_derived]
7087            #[doc(hidden)]
7088            impl ::core::convert::From<renounceOwnershipReturn> for UnderlyingRustTuple<'_> {
7089                fn from(value: renounceOwnershipReturn) -> Self {
7090                    ()
7091                }
7092            }
7093            #[automatically_derived]
7094            #[doc(hidden)]
7095            impl ::core::convert::From<UnderlyingRustTuple<'_>> for renounceOwnershipReturn {
7096                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7097                    Self {}
7098                }
7099            }
7100        }
7101        impl renounceOwnershipReturn {
7102            fn _tokenize(
7103                &self,
7104            ) -> <renounceOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
7105                ()
7106            }
7107        }
7108        #[automatically_derived]
7109        impl alloy_sol_types::SolCall for renounceOwnershipCall {
7110            type Parameters<'a> = ();
7111            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7112            type Return = renounceOwnershipReturn;
7113            type ReturnTuple<'a> = ();
7114            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7115            const SIGNATURE: &'static str = "renounceOwnership()";
7116            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
7117            #[inline]
7118            fn new<'a>(
7119                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7120            ) -> Self {
7121                tuple.into()
7122            }
7123            #[inline]
7124            fn tokenize(&self) -> Self::Token<'_> {
7125                ()
7126            }
7127            #[inline]
7128            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7129                renounceOwnershipReturn::_tokenize(ret)
7130            }
7131            #[inline]
7132            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7133                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
7134                    .map(Into::into)
7135            }
7136            #[inline]
7137            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7138                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
7139                    data,
7140                )
7141                .map(Into::into)
7142            }
7143        }
7144    };
7145    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
7146    /**Function with signature `setStrategyWhitelister(address)` and selector `0xc6656702`.
7147    ```solidity
7148    function setStrategyWhitelister(address newStrategyWhitelister) external;
7149    ```*/
7150    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7151    #[derive(Clone)]
7152    pub struct setStrategyWhitelisterCall {
7153        #[allow(missing_docs)]
7154        pub newStrategyWhitelister: alloy::sol_types::private::Address,
7155    }
7156    ///Container type for the return parameters of the [`setStrategyWhitelister(address)`](setStrategyWhitelisterCall) function.
7157    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7158    #[derive(Clone)]
7159    pub struct setStrategyWhitelisterReturn {}
7160    #[allow(
7161        non_camel_case_types,
7162        non_snake_case,
7163        clippy::pub_underscore_fields,
7164        clippy::style
7165    )]
7166    const _: () = {
7167        use alloy::sol_types as alloy_sol_types;
7168        {
7169            #[doc(hidden)]
7170            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7171            #[doc(hidden)]
7172            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7173            #[cfg(test)]
7174            #[allow(dead_code, unreachable_patterns)]
7175            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7176                match _t {
7177                    alloy_sol_types::private::AssertTypeEq::<
7178                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7179                    >(_) => {}
7180                }
7181            }
7182            #[automatically_derived]
7183            #[doc(hidden)]
7184            impl ::core::convert::From<setStrategyWhitelisterCall> for UnderlyingRustTuple<'_> {
7185                fn from(value: setStrategyWhitelisterCall) -> Self {
7186                    (value.newStrategyWhitelister,)
7187                }
7188            }
7189            #[automatically_derived]
7190            #[doc(hidden)]
7191            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setStrategyWhitelisterCall {
7192                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7193                    Self {
7194                        newStrategyWhitelister: tuple.0,
7195                    }
7196                }
7197            }
7198        }
7199        {
7200            #[doc(hidden)]
7201            type UnderlyingSolTuple<'a> = ();
7202            #[doc(hidden)]
7203            type UnderlyingRustTuple<'a> = ();
7204            #[cfg(test)]
7205            #[allow(dead_code, unreachable_patterns)]
7206            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7207                match _t {
7208                    alloy_sol_types::private::AssertTypeEq::<
7209                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7210                    >(_) => {}
7211                }
7212            }
7213            #[automatically_derived]
7214            #[doc(hidden)]
7215            impl ::core::convert::From<setStrategyWhitelisterReturn> for UnderlyingRustTuple<'_> {
7216                fn from(value: setStrategyWhitelisterReturn) -> Self {
7217                    ()
7218                }
7219            }
7220            #[automatically_derived]
7221            #[doc(hidden)]
7222            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setStrategyWhitelisterReturn {
7223                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7224                    Self {}
7225                }
7226            }
7227        }
7228        impl setStrategyWhitelisterReturn {
7229            fn _tokenize(
7230                &self,
7231            ) -> <setStrategyWhitelisterCall as alloy_sol_types::SolCall>::ReturnToken<'_>
7232            {
7233                ()
7234            }
7235        }
7236        #[automatically_derived]
7237        impl alloy_sol_types::SolCall for setStrategyWhitelisterCall {
7238            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
7239            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7240            type Return = setStrategyWhitelisterReturn;
7241            type ReturnTuple<'a> = ();
7242            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7243            const SIGNATURE: &'static str = "setStrategyWhitelister(address)";
7244            const SELECTOR: [u8; 4] = [198u8, 101u8, 103u8, 2u8];
7245            #[inline]
7246            fn new<'a>(
7247                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7248            ) -> Self {
7249                tuple.into()
7250            }
7251            #[inline]
7252            fn tokenize(&self) -> Self::Token<'_> {
7253                (
7254                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7255                        &self.newStrategyWhitelister,
7256                    ),
7257                )
7258            }
7259            #[inline]
7260            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7261                setStrategyWhitelisterReturn::_tokenize(ret)
7262            }
7263            #[inline]
7264            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7265                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
7266                    .map(Into::into)
7267            }
7268            #[inline]
7269            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7270                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
7271                    data,
7272                )
7273                .map(Into::into)
7274            }
7275        }
7276    };
7277    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
7278    /**Function with signature `stakerDepositShares(address,address)` and selector `0xfe243a17`.
7279    ```solidity
7280    function stakerDepositShares(address staker, address strategy) external view returns (uint256 shares);
7281    ```*/
7282    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7283    #[derive(Clone)]
7284    pub struct stakerDepositSharesCall {
7285        #[allow(missing_docs)]
7286        pub staker: alloy::sol_types::private::Address,
7287        #[allow(missing_docs)]
7288        pub strategy: alloy::sol_types::private::Address,
7289    }
7290    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
7291    ///Container type for the return parameters of the [`stakerDepositShares(address,address)`](stakerDepositSharesCall) function.
7292    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7293    #[derive(Clone)]
7294    pub struct stakerDepositSharesReturn {
7295        #[allow(missing_docs)]
7296        pub shares: alloy::sol_types::private::primitives::aliases::U256,
7297    }
7298    #[allow(
7299        non_camel_case_types,
7300        non_snake_case,
7301        clippy::pub_underscore_fields,
7302        clippy::style
7303    )]
7304    const _: () = {
7305        use alloy::sol_types as alloy_sol_types;
7306        {
7307            #[doc(hidden)]
7308            type UnderlyingSolTuple<'a> = (
7309                alloy::sol_types::sol_data::Address,
7310                alloy::sol_types::sol_data::Address,
7311            );
7312            #[doc(hidden)]
7313            type UnderlyingRustTuple<'a> = (
7314                alloy::sol_types::private::Address,
7315                alloy::sol_types::private::Address,
7316            );
7317            #[cfg(test)]
7318            #[allow(dead_code, unreachable_patterns)]
7319            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7320                match _t {
7321                    alloy_sol_types::private::AssertTypeEq::<
7322                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7323                    >(_) => {}
7324                }
7325            }
7326            #[automatically_derived]
7327            #[doc(hidden)]
7328            impl ::core::convert::From<stakerDepositSharesCall> for UnderlyingRustTuple<'_> {
7329                fn from(value: stakerDepositSharesCall) -> Self {
7330                    (value.staker, value.strategy)
7331                }
7332            }
7333            #[automatically_derived]
7334            #[doc(hidden)]
7335            impl ::core::convert::From<UnderlyingRustTuple<'_>> for stakerDepositSharesCall {
7336                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7337                    Self {
7338                        staker: tuple.0,
7339                        strategy: tuple.1,
7340                    }
7341                }
7342            }
7343        }
7344        {
7345            #[doc(hidden)]
7346            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7347            #[doc(hidden)]
7348            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
7349            #[cfg(test)]
7350            #[allow(dead_code, unreachable_patterns)]
7351            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
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<stakerDepositSharesReturn> for UnderlyingRustTuple<'_> {
7361                fn from(value: stakerDepositSharesReturn) -> Self {
7362                    (value.shares,)
7363                }
7364            }
7365            #[automatically_derived]
7366            #[doc(hidden)]
7367            impl ::core::convert::From<UnderlyingRustTuple<'_>> for stakerDepositSharesReturn {
7368                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7369                    Self { shares: tuple.0 }
7370                }
7371            }
7372        }
7373        #[automatically_derived]
7374        impl alloy_sol_types::SolCall for stakerDepositSharesCall {
7375            type Parameters<'a> = (
7376                alloy::sol_types::sol_data::Address,
7377                alloy::sol_types::sol_data::Address,
7378            );
7379            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7380            type Return = alloy::sol_types::private::primitives::aliases::U256;
7381            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7382            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7383            const SIGNATURE: &'static str = "stakerDepositShares(address,address)";
7384            const SELECTOR: [u8; 4] = [254u8, 36u8, 58u8, 23u8];
7385            #[inline]
7386            fn new<'a>(
7387                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7388            ) -> Self {
7389                tuple.into()
7390            }
7391            #[inline]
7392            fn tokenize(&self) -> Self::Token<'_> {
7393                (
7394                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7395                        &self.staker,
7396                    ),
7397                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7398                        &self.strategy,
7399                    ),
7400                )
7401            }
7402            #[inline]
7403            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7404                (
7405                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
7406                        ret,
7407                    ),
7408                )
7409            }
7410            #[inline]
7411            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7412                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
7413                    |r| {
7414                        let r: stakerDepositSharesReturn = r.into();
7415                        r.shares
7416                    },
7417                )
7418            }
7419            #[inline]
7420            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7421                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
7422                    data,
7423                )
7424                .map(|r| {
7425                    let r: stakerDepositSharesReturn = r.into();
7426                    r.shares
7427                })
7428            }
7429        }
7430    };
7431    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
7432    /**Function with signature `stakerStrategyList(address,uint256)` and selector `0xcbc2bd62`.
7433    ```solidity
7434    function stakerStrategyList(address staker, uint256) external view returns (address strategies);
7435    ```*/
7436    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7437    #[derive(Clone)]
7438    pub struct stakerStrategyListCall {
7439        #[allow(missing_docs)]
7440        pub staker: alloy::sol_types::private::Address,
7441        #[allow(missing_docs)]
7442        pub _1: alloy::sol_types::private::primitives::aliases::U256,
7443    }
7444    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
7445    ///Container type for the return parameters of the [`stakerStrategyList(address,uint256)`](stakerStrategyListCall) function.
7446    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7447    #[derive(Clone)]
7448    pub struct stakerStrategyListReturn {
7449        #[allow(missing_docs)]
7450        pub strategies: alloy::sol_types::private::Address,
7451    }
7452    #[allow(
7453        non_camel_case_types,
7454        non_snake_case,
7455        clippy::pub_underscore_fields,
7456        clippy::style
7457    )]
7458    const _: () = {
7459        use alloy::sol_types as alloy_sol_types;
7460        {
7461            #[doc(hidden)]
7462            type UnderlyingSolTuple<'a> = (
7463                alloy::sol_types::sol_data::Address,
7464                alloy::sol_types::sol_data::Uint<256>,
7465            );
7466            #[doc(hidden)]
7467            type UnderlyingRustTuple<'a> = (
7468                alloy::sol_types::private::Address,
7469                alloy::sol_types::private::primitives::aliases::U256,
7470            );
7471            #[cfg(test)]
7472            #[allow(dead_code, unreachable_patterns)]
7473            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7474                match _t {
7475                    alloy_sol_types::private::AssertTypeEq::<
7476                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7477                    >(_) => {}
7478                }
7479            }
7480            #[automatically_derived]
7481            #[doc(hidden)]
7482            impl ::core::convert::From<stakerStrategyListCall> for UnderlyingRustTuple<'_> {
7483                fn from(value: stakerStrategyListCall) -> Self {
7484                    (value.staker, value._1)
7485                }
7486            }
7487            #[automatically_derived]
7488            #[doc(hidden)]
7489            impl ::core::convert::From<UnderlyingRustTuple<'_>> for stakerStrategyListCall {
7490                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7491                    Self {
7492                        staker: tuple.0,
7493                        _1: tuple.1,
7494                    }
7495                }
7496            }
7497        }
7498        {
7499            #[doc(hidden)]
7500            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7501            #[doc(hidden)]
7502            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7503            #[cfg(test)]
7504            #[allow(dead_code, unreachable_patterns)]
7505            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7506                match _t {
7507                    alloy_sol_types::private::AssertTypeEq::<
7508                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7509                    >(_) => {}
7510                }
7511            }
7512            #[automatically_derived]
7513            #[doc(hidden)]
7514            impl ::core::convert::From<stakerStrategyListReturn> for UnderlyingRustTuple<'_> {
7515                fn from(value: stakerStrategyListReturn) -> Self {
7516                    (value.strategies,)
7517                }
7518            }
7519            #[automatically_derived]
7520            #[doc(hidden)]
7521            impl ::core::convert::From<UnderlyingRustTuple<'_>> for stakerStrategyListReturn {
7522                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7523                    Self {
7524                        strategies: tuple.0,
7525                    }
7526                }
7527            }
7528        }
7529        #[automatically_derived]
7530        impl alloy_sol_types::SolCall for stakerStrategyListCall {
7531            type Parameters<'a> = (
7532                alloy::sol_types::sol_data::Address,
7533                alloy::sol_types::sol_data::Uint<256>,
7534            );
7535            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7536            type Return = alloy::sol_types::private::Address;
7537            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
7538            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7539            const SIGNATURE: &'static str = "stakerStrategyList(address,uint256)";
7540            const SELECTOR: [u8; 4] = [203u8, 194u8, 189u8, 98u8];
7541            #[inline]
7542            fn new<'a>(
7543                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7544            ) -> Self {
7545                tuple.into()
7546            }
7547            #[inline]
7548            fn tokenize(&self) -> Self::Token<'_> {
7549                (
7550                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7551                        &self.staker,
7552                    ),
7553                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
7554                        &self._1,
7555                    ),
7556                )
7557            }
7558            #[inline]
7559            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7560                (
7561                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7562                        ret,
7563                    ),
7564                )
7565            }
7566            #[inline]
7567            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7568                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
7569                    |r| {
7570                        let r: stakerStrategyListReturn = r.into();
7571                        r.strategies
7572                    },
7573                )
7574            }
7575            #[inline]
7576            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7577                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
7578                    data,
7579                )
7580                .map(|r| {
7581                    let r: stakerStrategyListReturn = r.into();
7582                    r.strategies
7583                })
7584            }
7585        }
7586    };
7587    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
7588    /**Function with signature `stakerStrategyListLength(address)` and selector `0x8b8aac3c`.
7589    ```solidity
7590    function stakerStrategyListLength(address staker) external view returns (uint256);
7591    ```*/
7592    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7593    #[derive(Clone)]
7594    pub struct stakerStrategyListLengthCall {
7595        #[allow(missing_docs)]
7596        pub staker: alloy::sol_types::private::Address,
7597    }
7598    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
7599    ///Container type for the return parameters of the [`stakerStrategyListLength(address)`](stakerStrategyListLengthCall) function.
7600    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7601    #[derive(Clone)]
7602    pub struct stakerStrategyListLengthReturn {
7603        #[allow(missing_docs)]
7604        pub _0: alloy::sol_types::private::primitives::aliases::U256,
7605    }
7606    #[allow(
7607        non_camel_case_types,
7608        non_snake_case,
7609        clippy::pub_underscore_fields,
7610        clippy::style
7611    )]
7612    const _: () = {
7613        use alloy::sol_types as alloy_sol_types;
7614        {
7615            #[doc(hidden)]
7616            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7617            #[doc(hidden)]
7618            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7619            #[cfg(test)]
7620            #[allow(dead_code, unreachable_patterns)]
7621            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7622                match _t {
7623                    alloy_sol_types::private::AssertTypeEq::<
7624                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7625                    >(_) => {}
7626                }
7627            }
7628            #[automatically_derived]
7629            #[doc(hidden)]
7630            impl ::core::convert::From<stakerStrategyListLengthCall> for UnderlyingRustTuple<'_> {
7631                fn from(value: stakerStrategyListLengthCall) -> Self {
7632                    (value.staker,)
7633                }
7634            }
7635            #[automatically_derived]
7636            #[doc(hidden)]
7637            impl ::core::convert::From<UnderlyingRustTuple<'_>> for stakerStrategyListLengthCall {
7638                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7639                    Self { staker: tuple.0 }
7640                }
7641            }
7642        }
7643        {
7644            #[doc(hidden)]
7645            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7646            #[doc(hidden)]
7647            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
7648            #[cfg(test)]
7649            #[allow(dead_code, unreachable_patterns)]
7650            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7651                match _t {
7652                    alloy_sol_types::private::AssertTypeEq::<
7653                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7654                    >(_) => {}
7655                }
7656            }
7657            #[automatically_derived]
7658            #[doc(hidden)]
7659            impl ::core::convert::From<stakerStrategyListLengthReturn> for UnderlyingRustTuple<'_> {
7660                fn from(value: stakerStrategyListLengthReturn) -> Self {
7661                    (value._0,)
7662                }
7663            }
7664            #[automatically_derived]
7665            #[doc(hidden)]
7666            impl ::core::convert::From<UnderlyingRustTuple<'_>> for stakerStrategyListLengthReturn {
7667                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7668                    Self { _0: tuple.0 }
7669                }
7670            }
7671        }
7672        #[automatically_derived]
7673        impl alloy_sol_types::SolCall for stakerStrategyListLengthCall {
7674            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
7675            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7676            type Return = alloy::sol_types::private::primitives::aliases::U256;
7677            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7678            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7679            const SIGNATURE: &'static str = "stakerStrategyListLength(address)";
7680            const SELECTOR: [u8; 4] = [139u8, 138u8, 172u8, 60u8];
7681            #[inline]
7682            fn new<'a>(
7683                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7684            ) -> Self {
7685                tuple.into()
7686            }
7687            #[inline]
7688            fn tokenize(&self) -> Self::Token<'_> {
7689                (
7690                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7691                        &self.staker,
7692                    ),
7693                )
7694            }
7695            #[inline]
7696            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7697                (
7698                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
7699                        ret,
7700                    ),
7701                )
7702            }
7703            #[inline]
7704            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7705                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
7706                    |r| {
7707                        let r: stakerStrategyListLengthReturn = r.into();
7708                        r._0
7709                    },
7710                )
7711            }
7712            #[inline]
7713            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7714                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
7715                    data,
7716                )
7717                .map(|r| {
7718                    let r: stakerStrategyListLengthReturn = r.into();
7719                    r._0
7720                })
7721            }
7722        }
7723    };
7724    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
7725    /**Function with signature `strategyIsWhitelistedForDeposit(address)` and selector `0x663c1de4`.
7726    ```solidity
7727    function strategyIsWhitelistedForDeposit(address strategy) external view returns (bool whitelisted);
7728    ```*/
7729    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7730    #[derive(Clone)]
7731    pub struct strategyIsWhitelistedForDepositCall {
7732        #[allow(missing_docs)]
7733        pub strategy: alloy::sol_types::private::Address,
7734    }
7735    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
7736    ///Container type for the return parameters of the [`strategyIsWhitelistedForDeposit(address)`](strategyIsWhitelistedForDepositCall) function.
7737    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7738    #[derive(Clone)]
7739    pub struct strategyIsWhitelistedForDepositReturn {
7740        #[allow(missing_docs)]
7741        pub whitelisted: bool,
7742    }
7743    #[allow(
7744        non_camel_case_types,
7745        non_snake_case,
7746        clippy::pub_underscore_fields,
7747        clippy::style
7748    )]
7749    const _: () = {
7750        use alloy::sol_types as alloy_sol_types;
7751        {
7752            #[doc(hidden)]
7753            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7754            #[doc(hidden)]
7755            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7756            #[cfg(test)]
7757            #[allow(dead_code, unreachable_patterns)]
7758            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7759                match _t {
7760                    alloy_sol_types::private::AssertTypeEq::<
7761                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7762                    >(_) => {}
7763                }
7764            }
7765            #[automatically_derived]
7766            #[doc(hidden)]
7767            impl ::core::convert::From<strategyIsWhitelistedForDepositCall> for UnderlyingRustTuple<'_> {
7768                fn from(value: strategyIsWhitelistedForDepositCall) -> Self {
7769                    (value.strategy,)
7770                }
7771            }
7772            #[automatically_derived]
7773            #[doc(hidden)]
7774            impl ::core::convert::From<UnderlyingRustTuple<'_>> for strategyIsWhitelistedForDepositCall {
7775                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7776                    Self { strategy: tuple.0 }
7777                }
7778            }
7779        }
7780        {
7781            #[doc(hidden)]
7782            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
7783            #[doc(hidden)]
7784            type UnderlyingRustTuple<'a> = (bool,);
7785            #[cfg(test)]
7786            #[allow(dead_code, unreachable_patterns)]
7787            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7788                match _t {
7789                    alloy_sol_types::private::AssertTypeEq::<
7790                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7791                    >(_) => {}
7792                }
7793            }
7794            #[automatically_derived]
7795            #[doc(hidden)]
7796            impl ::core::convert::From<strategyIsWhitelistedForDepositReturn> for UnderlyingRustTuple<'_> {
7797                fn from(value: strategyIsWhitelistedForDepositReturn) -> Self {
7798                    (value.whitelisted,)
7799                }
7800            }
7801            #[automatically_derived]
7802            #[doc(hidden)]
7803            impl ::core::convert::From<UnderlyingRustTuple<'_>> for strategyIsWhitelistedForDepositReturn {
7804                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7805                    Self {
7806                        whitelisted: tuple.0,
7807                    }
7808                }
7809            }
7810        }
7811        #[automatically_derived]
7812        impl alloy_sol_types::SolCall for strategyIsWhitelistedForDepositCall {
7813            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
7814            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7815            type Return = bool;
7816            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
7817            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7818            const SIGNATURE: &'static str = "strategyIsWhitelistedForDeposit(address)";
7819            const SELECTOR: [u8; 4] = [102u8, 60u8, 29u8, 228u8];
7820            #[inline]
7821            fn new<'a>(
7822                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7823            ) -> Self {
7824                tuple.into()
7825            }
7826            #[inline]
7827            fn tokenize(&self) -> Self::Token<'_> {
7828                (
7829                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7830                        &self.strategy,
7831                    ),
7832                )
7833            }
7834            #[inline]
7835            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7836                (<alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(ret),)
7837            }
7838            #[inline]
7839            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7840                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
7841                    |r| {
7842                        let r: strategyIsWhitelistedForDepositReturn = r.into();
7843                        r.whitelisted
7844                    },
7845                )
7846            }
7847            #[inline]
7848            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7849                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
7850                    data,
7851                )
7852                .map(|r| {
7853                    let r: strategyIsWhitelistedForDepositReturn = r.into();
7854                    r.whitelisted
7855                })
7856            }
7857        }
7858    };
7859    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
7860    /**Function with signature `strategyWhitelister()` and selector `0x967fc0d2`.
7861    ```solidity
7862    function strategyWhitelister() external view returns (address);
7863    ```*/
7864    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7865    #[derive(Clone)]
7866    pub struct strategyWhitelisterCall;
7867    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
7868    ///Container type for the return parameters of the [`strategyWhitelister()`](strategyWhitelisterCall) function.
7869    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7870    #[derive(Clone)]
7871    pub struct strategyWhitelisterReturn {
7872        #[allow(missing_docs)]
7873        pub _0: alloy::sol_types::private::Address,
7874    }
7875    #[allow(
7876        non_camel_case_types,
7877        non_snake_case,
7878        clippy::pub_underscore_fields,
7879        clippy::style
7880    )]
7881    const _: () = {
7882        use alloy::sol_types as alloy_sol_types;
7883        {
7884            #[doc(hidden)]
7885            type UnderlyingSolTuple<'a> = ();
7886            #[doc(hidden)]
7887            type UnderlyingRustTuple<'a> = ();
7888            #[cfg(test)]
7889            #[allow(dead_code, unreachable_patterns)]
7890            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7891                match _t {
7892                    alloy_sol_types::private::AssertTypeEq::<
7893                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7894                    >(_) => {}
7895                }
7896            }
7897            #[automatically_derived]
7898            #[doc(hidden)]
7899            impl ::core::convert::From<strategyWhitelisterCall> for UnderlyingRustTuple<'_> {
7900                fn from(value: strategyWhitelisterCall) -> Self {
7901                    ()
7902                }
7903            }
7904            #[automatically_derived]
7905            #[doc(hidden)]
7906            impl ::core::convert::From<UnderlyingRustTuple<'_>> for strategyWhitelisterCall {
7907                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7908                    Self
7909                }
7910            }
7911        }
7912        {
7913            #[doc(hidden)]
7914            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7915            #[doc(hidden)]
7916            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7917            #[cfg(test)]
7918            #[allow(dead_code, unreachable_patterns)]
7919            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7920                match _t {
7921                    alloy_sol_types::private::AssertTypeEq::<
7922                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7923                    >(_) => {}
7924                }
7925            }
7926            #[automatically_derived]
7927            #[doc(hidden)]
7928            impl ::core::convert::From<strategyWhitelisterReturn> for UnderlyingRustTuple<'_> {
7929                fn from(value: strategyWhitelisterReturn) -> Self {
7930                    (value._0,)
7931                }
7932            }
7933            #[automatically_derived]
7934            #[doc(hidden)]
7935            impl ::core::convert::From<UnderlyingRustTuple<'_>> for strategyWhitelisterReturn {
7936                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7937                    Self { _0: tuple.0 }
7938                }
7939            }
7940        }
7941        #[automatically_derived]
7942        impl alloy_sol_types::SolCall for strategyWhitelisterCall {
7943            type Parameters<'a> = ();
7944            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7945            type Return = alloy::sol_types::private::Address;
7946            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
7947            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7948            const SIGNATURE: &'static str = "strategyWhitelister()";
7949            const SELECTOR: [u8; 4] = [150u8, 127u8, 192u8, 210u8];
7950            #[inline]
7951            fn new<'a>(
7952                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7953            ) -> Self {
7954                tuple.into()
7955            }
7956            #[inline]
7957            fn tokenize(&self) -> Self::Token<'_> {
7958                ()
7959            }
7960            #[inline]
7961            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7962                (
7963                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7964                        ret,
7965                    ),
7966                )
7967            }
7968            #[inline]
7969            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7970                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
7971                    |r| {
7972                        let r: strategyWhitelisterReturn = r.into();
7973                        r._0
7974                    },
7975                )
7976            }
7977            #[inline]
7978            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7979                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
7980                    data,
7981                )
7982                .map(|r| {
7983                    let r: strategyWhitelisterReturn = r.into();
7984                    r._0
7985                })
7986            }
7987        }
7988    };
7989    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
7990    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
7991    ```solidity
7992    function transferOwnership(address newOwner) external;
7993    ```*/
7994    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7995    #[derive(Clone)]
7996    pub struct transferOwnershipCall {
7997        #[allow(missing_docs)]
7998        pub newOwner: alloy::sol_types::private::Address,
7999    }
8000    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
8001    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8002    #[derive(Clone)]
8003    pub struct transferOwnershipReturn {}
8004    #[allow(
8005        non_camel_case_types,
8006        non_snake_case,
8007        clippy::pub_underscore_fields,
8008        clippy::style
8009    )]
8010    const _: () = {
8011        use alloy::sol_types as alloy_sol_types;
8012        {
8013            #[doc(hidden)]
8014            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
8015            #[doc(hidden)]
8016            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
8017            #[cfg(test)]
8018            #[allow(dead_code, unreachable_patterns)]
8019            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8020                match _t {
8021                    alloy_sol_types::private::AssertTypeEq::<
8022                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8023                    >(_) => {}
8024                }
8025            }
8026            #[automatically_derived]
8027            #[doc(hidden)]
8028            impl ::core::convert::From<transferOwnershipCall> for UnderlyingRustTuple<'_> {
8029                fn from(value: transferOwnershipCall) -> Self {
8030                    (value.newOwner,)
8031                }
8032            }
8033            #[automatically_derived]
8034            #[doc(hidden)]
8035            impl ::core::convert::From<UnderlyingRustTuple<'_>> for transferOwnershipCall {
8036                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8037                    Self { newOwner: tuple.0 }
8038                }
8039            }
8040        }
8041        {
8042            #[doc(hidden)]
8043            type UnderlyingSolTuple<'a> = ();
8044            #[doc(hidden)]
8045            type UnderlyingRustTuple<'a> = ();
8046            #[cfg(test)]
8047            #[allow(dead_code, unreachable_patterns)]
8048            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8049                match _t {
8050                    alloy_sol_types::private::AssertTypeEq::<
8051                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8052                    >(_) => {}
8053                }
8054            }
8055            #[automatically_derived]
8056            #[doc(hidden)]
8057            impl ::core::convert::From<transferOwnershipReturn> for UnderlyingRustTuple<'_> {
8058                fn from(value: transferOwnershipReturn) -> Self {
8059                    ()
8060                }
8061            }
8062            #[automatically_derived]
8063            #[doc(hidden)]
8064            impl ::core::convert::From<UnderlyingRustTuple<'_>> for transferOwnershipReturn {
8065                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8066                    Self {}
8067                }
8068            }
8069        }
8070        impl transferOwnershipReturn {
8071            fn _tokenize(
8072                &self,
8073            ) -> <transferOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8074                ()
8075            }
8076        }
8077        #[automatically_derived]
8078        impl alloy_sol_types::SolCall for transferOwnershipCall {
8079            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
8080            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8081            type Return = transferOwnershipReturn;
8082            type ReturnTuple<'a> = ();
8083            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8084            const SIGNATURE: &'static str = "transferOwnership(address)";
8085            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
8086            #[inline]
8087            fn new<'a>(
8088                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8089            ) -> Self {
8090                tuple.into()
8091            }
8092            #[inline]
8093            fn tokenize(&self) -> Self::Token<'_> {
8094                (
8095                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8096                        &self.newOwner,
8097                    ),
8098                )
8099            }
8100            #[inline]
8101            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8102                transferOwnershipReturn::_tokenize(ret)
8103            }
8104            #[inline]
8105            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8106                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
8107                    .map(Into::into)
8108            }
8109            #[inline]
8110            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8111                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
8112                    data,
8113                )
8114                .map(Into::into)
8115            }
8116        }
8117    };
8118    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
8119    /**Function with signature `unpause(uint256)` and selector `0xfabc1cbc`.
8120    ```solidity
8121    function unpause(uint256 newPausedStatus) external;
8122    ```*/
8123    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8124    #[derive(Clone)]
8125    pub struct unpauseCall {
8126        #[allow(missing_docs)]
8127        pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256,
8128    }
8129    ///Container type for the return parameters of the [`unpause(uint256)`](unpauseCall) function.
8130    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8131    #[derive(Clone)]
8132    pub struct unpauseReturn {}
8133    #[allow(
8134        non_camel_case_types,
8135        non_snake_case,
8136        clippy::pub_underscore_fields,
8137        clippy::style
8138    )]
8139    const _: () = {
8140        use alloy::sol_types as alloy_sol_types;
8141        {
8142            #[doc(hidden)]
8143            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8144            #[doc(hidden)]
8145            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
8146            #[cfg(test)]
8147            #[allow(dead_code, unreachable_patterns)]
8148            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
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<unpauseCall> for UnderlyingRustTuple<'_> {
8158                fn from(value: unpauseCall) -> Self {
8159                    (value.newPausedStatus,)
8160                }
8161            }
8162            #[automatically_derived]
8163            #[doc(hidden)]
8164            impl ::core::convert::From<UnderlyingRustTuple<'_>> for unpauseCall {
8165                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8166                    Self {
8167                        newPausedStatus: tuple.0,
8168                    }
8169                }
8170            }
8171        }
8172        {
8173            #[doc(hidden)]
8174            type UnderlyingSolTuple<'a> = ();
8175            #[doc(hidden)]
8176            type UnderlyingRustTuple<'a> = ();
8177            #[cfg(test)]
8178            #[allow(dead_code, unreachable_patterns)]
8179            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8180                match _t {
8181                    alloy_sol_types::private::AssertTypeEq::<
8182                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8183                    >(_) => {}
8184                }
8185            }
8186            #[automatically_derived]
8187            #[doc(hidden)]
8188            impl ::core::convert::From<unpauseReturn> for UnderlyingRustTuple<'_> {
8189                fn from(value: unpauseReturn) -> Self {
8190                    ()
8191                }
8192            }
8193            #[automatically_derived]
8194            #[doc(hidden)]
8195            impl ::core::convert::From<UnderlyingRustTuple<'_>> for unpauseReturn {
8196                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8197                    Self {}
8198                }
8199            }
8200        }
8201        impl unpauseReturn {
8202            fn _tokenize(&self) -> <unpauseCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8203                ()
8204            }
8205        }
8206        #[automatically_derived]
8207        impl alloy_sol_types::SolCall for unpauseCall {
8208            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8209            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8210            type Return = unpauseReturn;
8211            type ReturnTuple<'a> = ();
8212            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8213            const SIGNATURE: &'static str = "unpause(uint256)";
8214            const SELECTOR: [u8; 4] = [250u8, 188u8, 28u8, 188u8];
8215            #[inline]
8216            fn new<'a>(
8217                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8218            ) -> Self {
8219                tuple.into()
8220            }
8221            #[inline]
8222            fn tokenize(&self) -> Self::Token<'_> {
8223                (
8224                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
8225                        &self.newPausedStatus,
8226                    ),
8227                )
8228            }
8229            #[inline]
8230            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8231                unpauseReturn::_tokenize(ret)
8232            }
8233            #[inline]
8234            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8235                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
8236                    .map(Into::into)
8237            }
8238            #[inline]
8239            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8240                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
8241                    data,
8242                )
8243                .map(Into::into)
8244            }
8245        }
8246    };
8247    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
8248    /**Function with signature `version()` and selector `0x54fd4d50`.
8249    ```solidity
8250    function version() external view returns (string memory);
8251    ```*/
8252    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8253    #[derive(Clone)]
8254    pub struct versionCall;
8255    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
8256    ///Container type for the return parameters of the [`version()`](versionCall) function.
8257    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8258    #[derive(Clone)]
8259    pub struct versionReturn {
8260        #[allow(missing_docs)]
8261        pub _0: alloy::sol_types::private::String,
8262    }
8263    #[allow(
8264        non_camel_case_types,
8265        non_snake_case,
8266        clippy::pub_underscore_fields,
8267        clippy::style
8268    )]
8269    const _: () = {
8270        use alloy::sol_types as alloy_sol_types;
8271        {
8272            #[doc(hidden)]
8273            type UnderlyingSolTuple<'a> = ();
8274            #[doc(hidden)]
8275            type UnderlyingRustTuple<'a> = ();
8276            #[cfg(test)]
8277            #[allow(dead_code, unreachable_patterns)]
8278            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8279                match _t {
8280                    alloy_sol_types::private::AssertTypeEq::<
8281                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8282                    >(_) => {}
8283                }
8284            }
8285            #[automatically_derived]
8286            #[doc(hidden)]
8287            impl ::core::convert::From<versionCall> for UnderlyingRustTuple<'_> {
8288                fn from(value: versionCall) -> Self {
8289                    ()
8290                }
8291            }
8292            #[automatically_derived]
8293            #[doc(hidden)]
8294            impl ::core::convert::From<UnderlyingRustTuple<'_>> for versionCall {
8295                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8296                    Self
8297                }
8298            }
8299        }
8300        {
8301            #[doc(hidden)]
8302            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
8303            #[doc(hidden)]
8304            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
8305            #[cfg(test)]
8306            #[allow(dead_code, unreachable_patterns)]
8307            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8308                match _t {
8309                    alloy_sol_types::private::AssertTypeEq::<
8310                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8311                    >(_) => {}
8312                }
8313            }
8314            #[automatically_derived]
8315            #[doc(hidden)]
8316            impl ::core::convert::From<versionReturn> for UnderlyingRustTuple<'_> {
8317                fn from(value: versionReturn) -> Self {
8318                    (value._0,)
8319                }
8320            }
8321            #[automatically_derived]
8322            #[doc(hidden)]
8323            impl ::core::convert::From<UnderlyingRustTuple<'_>> for versionReturn {
8324                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8325                    Self { _0: tuple.0 }
8326                }
8327            }
8328        }
8329        #[automatically_derived]
8330        impl alloy_sol_types::SolCall for versionCall {
8331            type Parameters<'a> = ();
8332            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8333            type Return = alloy::sol_types::private::String;
8334            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
8335            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8336            const SIGNATURE: &'static str = "version()";
8337            const SELECTOR: [u8; 4] = [84u8, 253u8, 77u8, 80u8];
8338            #[inline]
8339            fn new<'a>(
8340                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8341            ) -> Self {
8342                tuple.into()
8343            }
8344            #[inline]
8345            fn tokenize(&self) -> Self::Token<'_> {
8346                ()
8347            }
8348            #[inline]
8349            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8350                (<alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(ret),)
8351            }
8352            #[inline]
8353            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8354                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
8355                    |r| {
8356                        let r: versionReturn = r.into();
8357                        r._0
8358                    },
8359                )
8360            }
8361            #[inline]
8362            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8363                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
8364                    data,
8365                )
8366                .map(|r| {
8367                    let r: versionReturn = r.into();
8368                    r._0
8369                })
8370            }
8371        }
8372    };
8373    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
8374    /**Function with signature `withdrawSharesAsTokens(address,address,address,uint256)` and selector `0x2eae418c`.
8375    ```solidity
8376    function withdrawSharesAsTokens(address staker, address strategy, address token, uint256 shares) external;
8377    ```*/
8378    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8379    #[derive(Clone)]
8380    pub struct withdrawSharesAsTokensCall {
8381        #[allow(missing_docs)]
8382        pub staker: alloy::sol_types::private::Address,
8383        #[allow(missing_docs)]
8384        pub strategy: alloy::sol_types::private::Address,
8385        #[allow(missing_docs)]
8386        pub token: alloy::sol_types::private::Address,
8387        #[allow(missing_docs)]
8388        pub shares: alloy::sol_types::private::primitives::aliases::U256,
8389    }
8390    ///Container type for the return parameters of the [`withdrawSharesAsTokens(address,address,address,uint256)`](withdrawSharesAsTokensCall) function.
8391    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8392    #[derive(Clone)]
8393    pub struct withdrawSharesAsTokensReturn {}
8394    #[allow(
8395        non_camel_case_types,
8396        non_snake_case,
8397        clippy::pub_underscore_fields,
8398        clippy::style
8399    )]
8400    const _: () = {
8401        use alloy::sol_types as alloy_sol_types;
8402        {
8403            #[doc(hidden)]
8404            type UnderlyingSolTuple<'a> = (
8405                alloy::sol_types::sol_data::Address,
8406                alloy::sol_types::sol_data::Address,
8407                alloy::sol_types::sol_data::Address,
8408                alloy::sol_types::sol_data::Uint<256>,
8409            );
8410            #[doc(hidden)]
8411            type UnderlyingRustTuple<'a> = (
8412                alloy::sol_types::private::Address,
8413                alloy::sol_types::private::Address,
8414                alloy::sol_types::private::Address,
8415                alloy::sol_types::private::primitives::aliases::U256,
8416            );
8417            #[cfg(test)]
8418            #[allow(dead_code, unreachable_patterns)]
8419            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8420                match _t {
8421                    alloy_sol_types::private::AssertTypeEq::<
8422                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8423                    >(_) => {}
8424                }
8425            }
8426            #[automatically_derived]
8427            #[doc(hidden)]
8428            impl ::core::convert::From<withdrawSharesAsTokensCall> for UnderlyingRustTuple<'_> {
8429                fn from(value: withdrawSharesAsTokensCall) -> Self {
8430                    (value.staker, value.strategy, value.token, value.shares)
8431                }
8432            }
8433            #[automatically_derived]
8434            #[doc(hidden)]
8435            impl ::core::convert::From<UnderlyingRustTuple<'_>> for withdrawSharesAsTokensCall {
8436                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8437                    Self {
8438                        staker: tuple.0,
8439                        strategy: tuple.1,
8440                        token: tuple.2,
8441                        shares: tuple.3,
8442                    }
8443                }
8444            }
8445        }
8446        {
8447            #[doc(hidden)]
8448            type UnderlyingSolTuple<'a> = ();
8449            #[doc(hidden)]
8450            type UnderlyingRustTuple<'a> = ();
8451            #[cfg(test)]
8452            #[allow(dead_code, unreachable_patterns)]
8453            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8454                match _t {
8455                    alloy_sol_types::private::AssertTypeEq::<
8456                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8457                    >(_) => {}
8458                }
8459            }
8460            #[automatically_derived]
8461            #[doc(hidden)]
8462            impl ::core::convert::From<withdrawSharesAsTokensReturn> for UnderlyingRustTuple<'_> {
8463                fn from(value: withdrawSharesAsTokensReturn) -> Self {
8464                    ()
8465                }
8466            }
8467            #[automatically_derived]
8468            #[doc(hidden)]
8469            impl ::core::convert::From<UnderlyingRustTuple<'_>> for withdrawSharesAsTokensReturn {
8470                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8471                    Self {}
8472                }
8473            }
8474        }
8475        impl withdrawSharesAsTokensReturn {
8476            fn _tokenize(
8477                &self,
8478            ) -> <withdrawSharesAsTokensCall as alloy_sol_types::SolCall>::ReturnToken<'_>
8479            {
8480                ()
8481            }
8482        }
8483        #[automatically_derived]
8484        impl alloy_sol_types::SolCall for withdrawSharesAsTokensCall {
8485            type Parameters<'a> = (
8486                alloy::sol_types::sol_data::Address,
8487                alloy::sol_types::sol_data::Address,
8488                alloy::sol_types::sol_data::Address,
8489                alloy::sol_types::sol_data::Uint<256>,
8490            );
8491            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8492            type Return = withdrawSharesAsTokensReturn;
8493            type ReturnTuple<'a> = ();
8494            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8495            const SIGNATURE: &'static str =
8496                "withdrawSharesAsTokens(address,address,address,uint256)";
8497            const SELECTOR: [u8; 4] = [46u8, 174u8, 65u8, 140u8];
8498            #[inline]
8499            fn new<'a>(
8500                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8501            ) -> Self {
8502                tuple.into()
8503            }
8504            #[inline]
8505            fn tokenize(&self) -> Self::Token<'_> {
8506                (
8507                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8508                        &self.staker,
8509                    ),
8510                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8511                        &self.strategy,
8512                    ),
8513                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8514                        &self.token,
8515                    ),
8516                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
8517                        &self.shares,
8518                    ),
8519                )
8520            }
8521            #[inline]
8522            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8523                withdrawSharesAsTokensReturn::_tokenize(ret)
8524            }
8525            #[inline]
8526            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8527                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
8528                    .map(Into::into)
8529            }
8530            #[inline]
8531            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8532                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
8533                    data,
8534                )
8535                .map(Into::into)
8536            }
8537        }
8538    };
8539    ///Container for all the [`StrategyManager`](self) function calls.
8540    #[derive(serde::Serialize, serde::Deserialize)]
8541    pub enum StrategyManagerCalls {
8542        #[allow(missing_docs)]
8543        DEFAULT_BURN_ADDRESS(DEFAULT_BURN_ADDRESSCall),
8544        #[allow(missing_docs)]
8545        DEPOSIT_TYPEHASH(DEPOSIT_TYPEHASHCall),
8546        #[allow(missing_docs)]
8547        addShares(addSharesCall),
8548        #[allow(missing_docs)]
8549        addStrategiesToDepositWhitelist(addStrategiesToDepositWhitelistCall),
8550        #[allow(missing_docs)]
8551        burnShares(burnSharesCall),
8552        #[allow(missing_docs)]
8553        calculateStrategyDepositDigestHash(calculateStrategyDepositDigestHashCall),
8554        #[allow(missing_docs)]
8555        delegation(delegationCall),
8556        #[allow(missing_docs)]
8557        depositIntoStrategy(depositIntoStrategyCall),
8558        #[allow(missing_docs)]
8559        depositIntoStrategyWithSignature(depositIntoStrategyWithSignatureCall),
8560        #[allow(missing_docs)]
8561        domainSeparator(domainSeparatorCall),
8562        #[allow(missing_docs)]
8563        getBurnableShares(getBurnableSharesCall),
8564        #[allow(missing_docs)]
8565        getDeposits(getDepositsCall),
8566        #[allow(missing_docs)]
8567        getStakerStrategyList(getStakerStrategyListCall),
8568        #[allow(missing_docs)]
8569        getStrategiesWithBurnableShares(getStrategiesWithBurnableSharesCall),
8570        #[allow(missing_docs)]
8571        increaseBurnableShares(increaseBurnableSharesCall),
8572        #[allow(missing_docs)]
8573        initialize(initializeCall),
8574        #[allow(missing_docs)]
8575        nonces(noncesCall),
8576        #[allow(missing_docs)]
8577        owner(ownerCall),
8578        #[allow(missing_docs)]
8579        pause(pauseCall),
8580        #[allow(missing_docs)]
8581        pauseAll(pauseAllCall),
8582        #[allow(missing_docs)]
8583        paused_0(paused_0Call),
8584        #[allow(missing_docs)]
8585        paused_1(paused_1Call),
8586        #[allow(missing_docs)]
8587        pauserRegistry(pauserRegistryCall),
8588        #[allow(missing_docs)]
8589        removeDepositShares(removeDepositSharesCall),
8590        #[allow(missing_docs)]
8591        removeStrategiesFromDepositWhitelist(removeStrategiesFromDepositWhitelistCall),
8592        #[allow(missing_docs)]
8593        renounceOwnership(renounceOwnershipCall),
8594        #[allow(missing_docs)]
8595        setStrategyWhitelister(setStrategyWhitelisterCall),
8596        #[allow(missing_docs)]
8597        stakerDepositShares(stakerDepositSharesCall),
8598        #[allow(missing_docs)]
8599        stakerStrategyList(stakerStrategyListCall),
8600        #[allow(missing_docs)]
8601        stakerStrategyListLength(stakerStrategyListLengthCall),
8602        #[allow(missing_docs)]
8603        strategyIsWhitelistedForDeposit(strategyIsWhitelistedForDepositCall),
8604        #[allow(missing_docs)]
8605        strategyWhitelister(strategyWhitelisterCall),
8606        #[allow(missing_docs)]
8607        transferOwnership(transferOwnershipCall),
8608        #[allow(missing_docs)]
8609        unpause(unpauseCall),
8610        #[allow(missing_docs)]
8611        version(versionCall),
8612        #[allow(missing_docs)]
8613        withdrawSharesAsTokens(withdrawSharesAsTokensCall),
8614    }
8615    #[automatically_derived]
8616    impl StrategyManagerCalls {
8617        /// All the selectors of this enum.
8618        ///
8619        /// Note that the selectors might not be in the same order as the variants.
8620        /// No guarantees are made about the order of the selectors.
8621        ///
8622        /// Prefer using `SolInterface` methods instead.
8623        pub const SELECTORS: &'static [[u8; 4usize]] = &[
8624            [19u8, 100u8, 57u8, 221u8],
8625            [23u8, 148u8, 187u8, 60u8],
8626            [46u8, 174u8, 65u8, 140u8],
8627            [50u8, 232u8, 154u8, 206u8],
8628            [54u8, 168u8, 197u8, 0u8],
8629            [72u8, 130u8, 94u8, 148u8],
8630            [75u8, 109u8, 93u8, 110u8],
8631            [80u8, 255u8, 114u8, 37u8],
8632            [84u8, 253u8, 77u8, 80u8],
8633            [89u8, 92u8, 106u8, 103u8],
8634            [90u8, 200u8, 106u8, 183u8],
8635            [92u8, 151u8, 90u8, 187u8],
8636            [93u8, 224u8, 143u8, 242u8],
8637            [102u8, 60u8, 29u8, 228u8],
8638            [113u8, 80u8, 24u8, 166u8],
8639            [114u8, 74u8, 244u8, 35u8],
8640            [126u8, 206u8, 190u8, 0u8],
8641            [136u8, 111u8, 17u8, 149u8],
8642            [139u8, 138u8, 172u8, 60u8],
8643            [141u8, 165u8, 203u8, 91u8],
8644            [148u8, 246u8, 73u8, 221u8],
8645            [150u8, 127u8, 192u8, 210u8],
8646            [154u8, 192u8, 29u8, 97u8],
8647            [181u8, 216u8, 181u8, 184u8],
8648            [198u8, 101u8, 103u8, 2u8],
8649            [203u8, 194u8, 189u8, 98u8],
8650            [222u8, 68u8, 172u8, 182u8],
8651            [222u8, 190u8, 30u8, 171u8],
8652            [223u8, 92u8, 247u8, 35u8],
8653            [231u8, 160u8, 80u8, 170u8],
8654            [242u8, 253u8, 227u8, 139u8],
8655            [243u8, 180u8, 160u8, 0u8],
8656            [246u8, 152u8, 218u8, 37u8],
8657            [250u8, 188u8, 28u8, 188u8],
8658            [253u8, 152u8, 4u8, 35u8],
8659            [254u8, 36u8, 58u8, 23u8],
8660        ];
8661    }
8662    #[automatically_derived]
8663    impl alloy_sol_types::SolInterface for StrategyManagerCalls {
8664        const NAME: &'static str = "StrategyManagerCalls";
8665        const MIN_DATA_LENGTH: usize = 0usize;
8666        const COUNT: usize = 36usize;
8667        #[inline]
8668        fn selector(&self) -> [u8; 4] {
8669            match self {
8670                Self::DEFAULT_BURN_ADDRESS(_) => {
8671                    <DEFAULT_BURN_ADDRESSCall as alloy_sol_types::SolCall>::SELECTOR
8672                }
8673                Self::DEPOSIT_TYPEHASH(_) => {
8674                    <DEPOSIT_TYPEHASHCall as alloy_sol_types::SolCall>::SELECTOR
8675                }
8676                Self::addShares(_) => <addSharesCall as alloy_sol_types::SolCall>::SELECTOR,
8677                Self::addStrategiesToDepositWhitelist(_) => {
8678                    <addStrategiesToDepositWhitelistCall as alloy_sol_types::SolCall>::SELECTOR
8679                }
8680                Self::burnShares(_) => <burnSharesCall as alloy_sol_types::SolCall>::SELECTOR,
8681                Self::calculateStrategyDepositDigestHash(_) => {
8682                    <calculateStrategyDepositDigestHashCall as alloy_sol_types::SolCall>::SELECTOR
8683                }
8684                Self::delegation(_) => <delegationCall as alloy_sol_types::SolCall>::SELECTOR,
8685                Self::depositIntoStrategy(_) => {
8686                    <depositIntoStrategyCall as alloy_sol_types::SolCall>::SELECTOR
8687                }
8688                Self::depositIntoStrategyWithSignature(_) => {
8689                    <depositIntoStrategyWithSignatureCall as alloy_sol_types::SolCall>::SELECTOR
8690                }
8691                Self::domainSeparator(_) => {
8692                    <domainSeparatorCall as alloy_sol_types::SolCall>::SELECTOR
8693                }
8694                Self::getBurnableShares(_) => {
8695                    <getBurnableSharesCall as alloy_sol_types::SolCall>::SELECTOR
8696                }
8697                Self::getDeposits(_) => <getDepositsCall as alloy_sol_types::SolCall>::SELECTOR,
8698                Self::getStakerStrategyList(_) => {
8699                    <getStakerStrategyListCall as alloy_sol_types::SolCall>::SELECTOR
8700                }
8701                Self::getStrategiesWithBurnableShares(_) => {
8702                    <getStrategiesWithBurnableSharesCall as alloy_sol_types::SolCall>::SELECTOR
8703                }
8704                Self::increaseBurnableShares(_) => {
8705                    <increaseBurnableSharesCall as alloy_sol_types::SolCall>::SELECTOR
8706                }
8707                Self::initialize(_) => <initializeCall as alloy_sol_types::SolCall>::SELECTOR,
8708                Self::nonces(_) => <noncesCall as alloy_sol_types::SolCall>::SELECTOR,
8709                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
8710                Self::pause(_) => <pauseCall as alloy_sol_types::SolCall>::SELECTOR,
8711                Self::pauseAll(_) => <pauseAllCall as alloy_sol_types::SolCall>::SELECTOR,
8712                Self::paused_0(_) => <paused_0Call as alloy_sol_types::SolCall>::SELECTOR,
8713                Self::paused_1(_) => <paused_1Call as alloy_sol_types::SolCall>::SELECTOR,
8714                Self::pauserRegistry(_) => {
8715                    <pauserRegistryCall as alloy_sol_types::SolCall>::SELECTOR
8716                }
8717                Self::removeDepositShares(_) => {
8718                    <removeDepositSharesCall as alloy_sol_types::SolCall>::SELECTOR
8719                }
8720                Self::removeStrategiesFromDepositWhitelist(_) => {
8721                    <removeStrategiesFromDepositWhitelistCall as alloy_sol_types::SolCall>::SELECTOR
8722                }
8723                Self::renounceOwnership(_) => {
8724                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
8725                }
8726                Self::setStrategyWhitelister(_) => {
8727                    <setStrategyWhitelisterCall as alloy_sol_types::SolCall>::SELECTOR
8728                }
8729                Self::stakerDepositShares(_) => {
8730                    <stakerDepositSharesCall as alloy_sol_types::SolCall>::SELECTOR
8731                }
8732                Self::stakerStrategyList(_) => {
8733                    <stakerStrategyListCall as alloy_sol_types::SolCall>::SELECTOR
8734                }
8735                Self::stakerStrategyListLength(_) => {
8736                    <stakerStrategyListLengthCall as alloy_sol_types::SolCall>::SELECTOR
8737                }
8738                Self::strategyIsWhitelistedForDeposit(_) => {
8739                    <strategyIsWhitelistedForDepositCall as alloy_sol_types::SolCall>::SELECTOR
8740                }
8741                Self::strategyWhitelister(_) => {
8742                    <strategyWhitelisterCall as alloy_sol_types::SolCall>::SELECTOR
8743                }
8744                Self::transferOwnership(_) => {
8745                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
8746                }
8747                Self::unpause(_) => <unpauseCall as alloy_sol_types::SolCall>::SELECTOR,
8748                Self::version(_) => <versionCall as alloy_sol_types::SolCall>::SELECTOR,
8749                Self::withdrawSharesAsTokens(_) => {
8750                    <withdrawSharesAsTokensCall as alloy_sol_types::SolCall>::SELECTOR
8751                }
8752            }
8753        }
8754        #[inline]
8755        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
8756            Self::SELECTORS.get(i).copied()
8757        }
8758        #[inline]
8759        fn valid_selector(selector: [u8; 4]) -> bool {
8760            Self::SELECTORS.binary_search(&selector).is_ok()
8761        }
8762        #[inline]
8763        #[allow(non_snake_case)]
8764        fn abi_decode_raw(selector: [u8; 4], data: &[u8]) -> alloy_sol_types::Result<Self> {
8765            static DECODE_SHIMS: &[fn(&[u8]) -> alloy_sol_types::Result<StrategyManagerCalls>] = &[
8766                {
8767                    fn pause(data: &[u8]) -> alloy_sol_types::Result<StrategyManagerCalls> {
8768                        <pauseCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
8769                            .map(StrategyManagerCalls::pause)
8770                    }
8771                    pause
8772                },
8773                {
8774                    fn initialize(data: &[u8]) -> alloy_sol_types::Result<StrategyManagerCalls> {
8775                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
8776                            .map(StrategyManagerCalls::initialize)
8777                    }
8778                    initialize
8779                },
8780                {
8781                    fn withdrawSharesAsTokens(
8782                        data: &[u8],
8783                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
8784                        <withdrawSharesAsTokensCall as alloy_sol_types::SolCall>::abi_decode_raw(
8785                            data,
8786                        )
8787                        .map(StrategyManagerCalls::withdrawSharesAsTokens)
8788                    }
8789                    withdrawSharesAsTokens
8790                },
8791                {
8792                    fn depositIntoStrategyWithSignature(
8793                        data: &[u8],
8794                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
8795                        <depositIntoStrategyWithSignatureCall as alloy_sol_types::SolCall>::abi_decode_raw(
8796                                data,
8797                            )
8798                            .map(StrategyManagerCalls::depositIntoStrategyWithSignature)
8799                    }
8800                    depositIntoStrategyWithSignature
8801                },
8802                {
8803                    fn getStrategiesWithBurnableShares(
8804                        data: &[u8],
8805                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
8806                        <getStrategiesWithBurnableSharesCall as alloy_sol_types::SolCall>::abi_decode_raw(
8807                                data,
8808                            )
8809                            .map(StrategyManagerCalls::getStrategiesWithBurnableShares)
8810                    }
8811                    getStrategiesWithBurnableShares
8812                },
8813                {
8814                    fn DEPOSIT_TYPEHASH(
8815                        data: &[u8],
8816                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
8817                        <DEPOSIT_TYPEHASHCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
8818                            .map(StrategyManagerCalls::DEPOSIT_TYPEHASH)
8819                    }
8820                    DEPOSIT_TYPEHASH
8821                },
8822                {
8823                    fn burnShares(data: &[u8]) -> alloy_sol_types::Result<StrategyManagerCalls> {
8824                        <burnSharesCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
8825                            .map(StrategyManagerCalls::burnShares)
8826                    }
8827                    burnShares
8828                },
8829                {
8830                    fn addShares(data: &[u8]) -> alloy_sol_types::Result<StrategyManagerCalls> {
8831                        <addSharesCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
8832                            .map(StrategyManagerCalls::addShares)
8833                    }
8834                    addShares
8835                },
8836                {
8837                    fn version(data: &[u8]) -> alloy_sol_types::Result<StrategyManagerCalls> {
8838                        <versionCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
8839                            .map(StrategyManagerCalls::version)
8840                    }
8841                    version
8842                },
8843                {
8844                    fn pauseAll(data: &[u8]) -> alloy_sol_types::Result<StrategyManagerCalls> {
8845                        <pauseAllCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
8846                            .map(StrategyManagerCalls::pauseAll)
8847                    }
8848                    pauseAll
8849                },
8850                {
8851                    fn paused_0(data: &[u8]) -> alloy_sol_types::Result<StrategyManagerCalls> {
8852                        <paused_0Call as alloy_sol_types::SolCall>::abi_decode_raw(data)
8853                            .map(StrategyManagerCalls::paused_0)
8854                    }
8855                    paused_0
8856                },
8857                {
8858                    fn paused_1(data: &[u8]) -> alloy_sol_types::Result<StrategyManagerCalls> {
8859                        <paused_1Call as alloy_sol_types::SolCall>::abi_decode_raw(data)
8860                            .map(StrategyManagerCalls::paused_1)
8861                    }
8862                    paused_1
8863                },
8864                {
8865                    fn addStrategiesToDepositWhitelist(
8866                        data: &[u8],
8867                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
8868                        <addStrategiesToDepositWhitelistCall as alloy_sol_types::SolCall>::abi_decode_raw(
8869                                data,
8870                            )
8871                            .map(StrategyManagerCalls::addStrategiesToDepositWhitelist)
8872                    }
8873                    addStrategiesToDepositWhitelist
8874                },
8875                {
8876                    fn strategyIsWhitelistedForDeposit(
8877                        data: &[u8],
8878                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
8879                        <strategyIsWhitelistedForDepositCall as alloy_sol_types::SolCall>::abi_decode_raw(
8880                                data,
8881                            )
8882                            .map(StrategyManagerCalls::strategyIsWhitelistedForDeposit)
8883                    }
8884                    strategyIsWhitelistedForDeposit
8885                },
8886                {
8887                    fn renounceOwnership(
8888                        data: &[u8],
8889                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
8890                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
8891                            .map(StrategyManagerCalls::renounceOwnership)
8892                    }
8893                    renounceOwnership
8894                },
8895                {
8896                    fn removeDepositShares(
8897                        data: &[u8],
8898                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
8899                        <removeDepositSharesCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
8900                            .map(StrategyManagerCalls::removeDepositShares)
8901                    }
8902                    removeDepositShares
8903                },
8904                {
8905                    fn nonces(data: &[u8]) -> alloy_sol_types::Result<StrategyManagerCalls> {
8906                        <noncesCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
8907                            .map(StrategyManagerCalls::nonces)
8908                    }
8909                    nonces
8910                },
8911                {
8912                    fn pauserRegistry(
8913                        data: &[u8],
8914                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
8915                        <pauserRegistryCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
8916                            .map(StrategyManagerCalls::pauserRegistry)
8917                    }
8918                    pauserRegistry
8919                },
8920                {
8921                    fn stakerStrategyListLength(
8922                        data: &[u8],
8923                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
8924                        <stakerStrategyListLengthCall as alloy_sol_types::SolCall>::abi_decode_raw(
8925                            data,
8926                        )
8927                        .map(StrategyManagerCalls::stakerStrategyListLength)
8928                    }
8929                    stakerStrategyListLength
8930                },
8931                {
8932                    fn owner(data: &[u8]) -> alloy_sol_types::Result<StrategyManagerCalls> {
8933                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
8934                            .map(StrategyManagerCalls::owner)
8935                    }
8936                    owner
8937                },
8938                {
8939                    fn getDeposits(data: &[u8]) -> alloy_sol_types::Result<StrategyManagerCalls> {
8940                        <getDepositsCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
8941                            .map(StrategyManagerCalls::getDeposits)
8942                    }
8943                    getDeposits
8944                },
8945                {
8946                    fn strategyWhitelister(
8947                        data: &[u8],
8948                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
8949                        <strategyWhitelisterCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
8950                            .map(StrategyManagerCalls::strategyWhitelister)
8951                    }
8952                    strategyWhitelister
8953                },
8954                {
8955                    fn calculateStrategyDepositDigestHash(
8956                        data: &[u8],
8957                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
8958                        <calculateStrategyDepositDigestHashCall as alloy_sol_types::SolCall>::abi_decode_raw(
8959                                data,
8960                            )
8961                            .map(
8962                                StrategyManagerCalls::calculateStrategyDepositDigestHash,
8963                            )
8964                    }
8965                    calculateStrategyDepositDigestHash
8966                },
8967                {
8968                    fn removeStrategiesFromDepositWhitelist(
8969                        data: &[u8],
8970                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
8971                        <removeStrategiesFromDepositWhitelistCall as alloy_sol_types::SolCall>::abi_decode_raw(
8972                                data,
8973                            )
8974                            .map(
8975                                StrategyManagerCalls::removeStrategiesFromDepositWhitelist,
8976                            )
8977                    }
8978                    removeStrategiesFromDepositWhitelist
8979                },
8980                {
8981                    fn setStrategyWhitelister(
8982                        data: &[u8],
8983                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
8984                        <setStrategyWhitelisterCall as alloy_sol_types::SolCall>::abi_decode_raw(
8985                            data,
8986                        )
8987                        .map(StrategyManagerCalls::setStrategyWhitelister)
8988                    }
8989                    setStrategyWhitelister
8990                },
8991                {
8992                    fn stakerStrategyList(
8993                        data: &[u8],
8994                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
8995                        <stakerStrategyListCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
8996                            .map(StrategyManagerCalls::stakerStrategyList)
8997                    }
8998                    stakerStrategyList
8999                },
9000                {
9001                    fn getStakerStrategyList(
9002                        data: &[u8],
9003                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9004                        <getStakerStrategyListCall as alloy_sol_types::SolCall>::abi_decode_raw(
9005                            data,
9006                        )
9007                        .map(StrategyManagerCalls::getStakerStrategyList)
9008                    }
9009                    getStakerStrategyList
9010                },
9011                {
9012                    fn increaseBurnableShares(
9013                        data: &[u8],
9014                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9015                        <increaseBurnableSharesCall as alloy_sol_types::SolCall>::abi_decode_raw(
9016                            data,
9017                        )
9018                        .map(StrategyManagerCalls::increaseBurnableShares)
9019                    }
9020                    increaseBurnableShares
9021                },
9022                {
9023                    fn delegation(data: &[u8]) -> alloy_sol_types::Result<StrategyManagerCalls> {
9024                        <delegationCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
9025                            .map(StrategyManagerCalls::delegation)
9026                    }
9027                    delegation
9028                },
9029                {
9030                    fn depositIntoStrategy(
9031                        data: &[u8],
9032                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9033                        <depositIntoStrategyCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
9034                            .map(StrategyManagerCalls::depositIntoStrategy)
9035                    }
9036                    depositIntoStrategy
9037                },
9038                {
9039                    fn transferOwnership(
9040                        data: &[u8],
9041                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9042                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
9043                            .map(StrategyManagerCalls::transferOwnership)
9044                    }
9045                    transferOwnership
9046                },
9047                {
9048                    fn DEFAULT_BURN_ADDRESS(
9049                        data: &[u8],
9050                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9051                        <DEFAULT_BURN_ADDRESSCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
9052                            .map(StrategyManagerCalls::DEFAULT_BURN_ADDRESS)
9053                    }
9054                    DEFAULT_BURN_ADDRESS
9055                },
9056                {
9057                    fn domainSeparator(
9058                        data: &[u8],
9059                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9060                        <domainSeparatorCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
9061                            .map(StrategyManagerCalls::domainSeparator)
9062                    }
9063                    domainSeparator
9064                },
9065                {
9066                    fn unpause(data: &[u8]) -> alloy_sol_types::Result<StrategyManagerCalls> {
9067                        <unpauseCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
9068                            .map(StrategyManagerCalls::unpause)
9069                    }
9070                    unpause
9071                },
9072                {
9073                    fn getBurnableShares(
9074                        data: &[u8],
9075                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9076                        <getBurnableSharesCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
9077                            .map(StrategyManagerCalls::getBurnableShares)
9078                    }
9079                    getBurnableShares
9080                },
9081                {
9082                    fn stakerDepositShares(
9083                        data: &[u8],
9084                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9085                        <stakerDepositSharesCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
9086                            .map(StrategyManagerCalls::stakerDepositShares)
9087                    }
9088                    stakerDepositShares
9089                },
9090            ];
9091            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
9092                return Err(alloy_sol_types::Error::unknown_selector(
9093                    <Self as alloy_sol_types::SolInterface>::NAME,
9094                    selector,
9095                ));
9096            };
9097            DECODE_SHIMS[idx](data)
9098        }
9099        #[inline]
9100        #[allow(non_snake_case)]
9101        fn abi_decode_raw_validate(
9102            selector: [u8; 4],
9103            data: &[u8],
9104        ) -> alloy_sol_types::Result<Self> {
9105            static DECODE_VALIDATE_SHIMS: &[fn(
9106                &[u8],
9107            )
9108                -> alloy_sol_types::Result<StrategyManagerCalls>] = &[
9109                {
9110                    fn pause(data: &[u8]) -> alloy_sol_types::Result<StrategyManagerCalls> {
9111                        <pauseCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(data)
9112                            .map(StrategyManagerCalls::pause)
9113                    }
9114                    pause
9115                },
9116                {
9117                    fn initialize(data: &[u8]) -> alloy_sol_types::Result<StrategyManagerCalls> {
9118                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(data)
9119                            .map(StrategyManagerCalls::initialize)
9120                    }
9121                    initialize
9122                },
9123                {
9124                    fn withdrawSharesAsTokens(
9125                        data: &[u8],
9126                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9127                        <withdrawSharesAsTokensCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
9128                                data,
9129                            )
9130                            .map(StrategyManagerCalls::withdrawSharesAsTokens)
9131                    }
9132                    withdrawSharesAsTokens
9133                },
9134                {
9135                    fn depositIntoStrategyWithSignature(
9136                        data: &[u8],
9137                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9138                        <depositIntoStrategyWithSignatureCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
9139                                data,
9140                            )
9141                            .map(StrategyManagerCalls::depositIntoStrategyWithSignature)
9142                    }
9143                    depositIntoStrategyWithSignature
9144                },
9145                {
9146                    fn getStrategiesWithBurnableShares(
9147                        data: &[u8],
9148                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9149                        <getStrategiesWithBurnableSharesCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
9150                                data,
9151                            )
9152                            .map(StrategyManagerCalls::getStrategiesWithBurnableShares)
9153                    }
9154                    getStrategiesWithBurnableShares
9155                },
9156                {
9157                    fn DEPOSIT_TYPEHASH(
9158                        data: &[u8],
9159                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9160                        <DEPOSIT_TYPEHASHCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
9161                            data,
9162                        )
9163                        .map(StrategyManagerCalls::DEPOSIT_TYPEHASH)
9164                    }
9165                    DEPOSIT_TYPEHASH
9166                },
9167                {
9168                    fn burnShares(data: &[u8]) -> alloy_sol_types::Result<StrategyManagerCalls> {
9169                        <burnSharesCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(data)
9170                            .map(StrategyManagerCalls::burnShares)
9171                    }
9172                    burnShares
9173                },
9174                {
9175                    fn addShares(data: &[u8]) -> alloy_sol_types::Result<StrategyManagerCalls> {
9176                        <addSharesCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(data)
9177                            .map(StrategyManagerCalls::addShares)
9178                    }
9179                    addShares
9180                },
9181                {
9182                    fn version(data: &[u8]) -> alloy_sol_types::Result<StrategyManagerCalls> {
9183                        <versionCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(data)
9184                            .map(StrategyManagerCalls::version)
9185                    }
9186                    version
9187                },
9188                {
9189                    fn pauseAll(data: &[u8]) -> alloy_sol_types::Result<StrategyManagerCalls> {
9190                        <pauseAllCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(data)
9191                            .map(StrategyManagerCalls::pauseAll)
9192                    }
9193                    pauseAll
9194                },
9195                {
9196                    fn paused_0(data: &[u8]) -> alloy_sol_types::Result<StrategyManagerCalls> {
9197                        <paused_0Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(data)
9198                            .map(StrategyManagerCalls::paused_0)
9199                    }
9200                    paused_0
9201                },
9202                {
9203                    fn paused_1(data: &[u8]) -> alloy_sol_types::Result<StrategyManagerCalls> {
9204                        <paused_1Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(data)
9205                            .map(StrategyManagerCalls::paused_1)
9206                    }
9207                    paused_1
9208                },
9209                {
9210                    fn addStrategiesToDepositWhitelist(
9211                        data: &[u8],
9212                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9213                        <addStrategiesToDepositWhitelistCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
9214                                data,
9215                            )
9216                            .map(StrategyManagerCalls::addStrategiesToDepositWhitelist)
9217                    }
9218                    addStrategiesToDepositWhitelist
9219                },
9220                {
9221                    fn strategyIsWhitelistedForDeposit(
9222                        data: &[u8],
9223                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9224                        <strategyIsWhitelistedForDepositCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
9225                                data,
9226                            )
9227                            .map(StrategyManagerCalls::strategyIsWhitelistedForDeposit)
9228                    }
9229                    strategyIsWhitelistedForDeposit
9230                },
9231                {
9232                    fn renounceOwnership(
9233                        data: &[u8],
9234                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9235                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
9236                                data,
9237                            )
9238                            .map(StrategyManagerCalls::renounceOwnership)
9239                    }
9240                    renounceOwnership
9241                },
9242                {
9243                    fn removeDepositShares(
9244                        data: &[u8],
9245                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9246                        <removeDepositSharesCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
9247                                data,
9248                            )
9249                            .map(StrategyManagerCalls::removeDepositShares)
9250                    }
9251                    removeDepositShares
9252                },
9253                {
9254                    fn nonces(data: &[u8]) -> alloy_sol_types::Result<StrategyManagerCalls> {
9255                        <noncesCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(data)
9256                            .map(StrategyManagerCalls::nonces)
9257                    }
9258                    nonces
9259                },
9260                {
9261                    fn pauserRegistry(
9262                        data: &[u8],
9263                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9264                        <pauserRegistryCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
9265                            data,
9266                        )
9267                        .map(StrategyManagerCalls::pauserRegistry)
9268                    }
9269                    pauserRegistry
9270                },
9271                {
9272                    fn stakerStrategyListLength(
9273                        data: &[u8],
9274                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9275                        <stakerStrategyListLengthCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
9276                                data,
9277                            )
9278                            .map(StrategyManagerCalls::stakerStrategyListLength)
9279                    }
9280                    stakerStrategyListLength
9281                },
9282                {
9283                    fn owner(data: &[u8]) -> alloy_sol_types::Result<StrategyManagerCalls> {
9284                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(data)
9285                            .map(StrategyManagerCalls::owner)
9286                    }
9287                    owner
9288                },
9289                {
9290                    fn getDeposits(data: &[u8]) -> alloy_sol_types::Result<StrategyManagerCalls> {
9291                        <getDepositsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(data)
9292                            .map(StrategyManagerCalls::getDeposits)
9293                    }
9294                    getDeposits
9295                },
9296                {
9297                    fn strategyWhitelister(
9298                        data: &[u8],
9299                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9300                        <strategyWhitelisterCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
9301                                data,
9302                            )
9303                            .map(StrategyManagerCalls::strategyWhitelister)
9304                    }
9305                    strategyWhitelister
9306                },
9307                {
9308                    fn calculateStrategyDepositDigestHash(
9309                        data: &[u8],
9310                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9311                        <calculateStrategyDepositDigestHashCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
9312                                data,
9313                            )
9314                            .map(
9315                                StrategyManagerCalls::calculateStrategyDepositDigestHash,
9316                            )
9317                    }
9318                    calculateStrategyDepositDigestHash
9319                },
9320                {
9321                    fn removeStrategiesFromDepositWhitelist(
9322                        data: &[u8],
9323                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9324                        <removeStrategiesFromDepositWhitelistCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
9325                                data,
9326                            )
9327                            .map(
9328                                StrategyManagerCalls::removeStrategiesFromDepositWhitelist,
9329                            )
9330                    }
9331                    removeStrategiesFromDepositWhitelist
9332                },
9333                {
9334                    fn setStrategyWhitelister(
9335                        data: &[u8],
9336                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9337                        <setStrategyWhitelisterCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
9338                                data,
9339                            )
9340                            .map(StrategyManagerCalls::setStrategyWhitelister)
9341                    }
9342                    setStrategyWhitelister
9343                },
9344                {
9345                    fn stakerStrategyList(
9346                        data: &[u8],
9347                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9348                        <stakerStrategyListCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
9349                                data,
9350                            )
9351                            .map(StrategyManagerCalls::stakerStrategyList)
9352                    }
9353                    stakerStrategyList
9354                },
9355                {
9356                    fn getStakerStrategyList(
9357                        data: &[u8],
9358                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9359                        <getStakerStrategyListCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
9360                                data,
9361                            )
9362                            .map(StrategyManagerCalls::getStakerStrategyList)
9363                    }
9364                    getStakerStrategyList
9365                },
9366                {
9367                    fn increaseBurnableShares(
9368                        data: &[u8],
9369                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9370                        <increaseBurnableSharesCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
9371                                data,
9372                            )
9373                            .map(StrategyManagerCalls::increaseBurnableShares)
9374                    }
9375                    increaseBurnableShares
9376                },
9377                {
9378                    fn delegation(data: &[u8]) -> alloy_sol_types::Result<StrategyManagerCalls> {
9379                        <delegationCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(data)
9380                            .map(StrategyManagerCalls::delegation)
9381                    }
9382                    delegation
9383                },
9384                {
9385                    fn depositIntoStrategy(
9386                        data: &[u8],
9387                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9388                        <depositIntoStrategyCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
9389                                data,
9390                            )
9391                            .map(StrategyManagerCalls::depositIntoStrategy)
9392                    }
9393                    depositIntoStrategy
9394                },
9395                {
9396                    fn transferOwnership(
9397                        data: &[u8],
9398                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9399                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
9400                                data,
9401                            )
9402                            .map(StrategyManagerCalls::transferOwnership)
9403                    }
9404                    transferOwnership
9405                },
9406                {
9407                    fn DEFAULT_BURN_ADDRESS(
9408                        data: &[u8],
9409                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9410                        <DEFAULT_BURN_ADDRESSCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
9411                                data,
9412                            )
9413                            .map(StrategyManagerCalls::DEFAULT_BURN_ADDRESS)
9414                    }
9415                    DEFAULT_BURN_ADDRESS
9416                },
9417                {
9418                    fn domainSeparator(
9419                        data: &[u8],
9420                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9421                        <domainSeparatorCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
9422                            data,
9423                        )
9424                        .map(StrategyManagerCalls::domainSeparator)
9425                    }
9426                    domainSeparator
9427                },
9428                {
9429                    fn unpause(data: &[u8]) -> alloy_sol_types::Result<StrategyManagerCalls> {
9430                        <unpauseCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(data)
9431                            .map(StrategyManagerCalls::unpause)
9432                    }
9433                    unpause
9434                },
9435                {
9436                    fn getBurnableShares(
9437                        data: &[u8],
9438                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9439                        <getBurnableSharesCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
9440                                data,
9441                            )
9442                            .map(StrategyManagerCalls::getBurnableShares)
9443                    }
9444                    getBurnableShares
9445                },
9446                {
9447                    fn stakerDepositShares(
9448                        data: &[u8],
9449                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9450                        <stakerDepositSharesCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
9451                                data,
9452                            )
9453                            .map(StrategyManagerCalls::stakerDepositShares)
9454                    }
9455                    stakerDepositShares
9456                },
9457            ];
9458            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
9459                return Err(alloy_sol_types::Error::unknown_selector(
9460                    <Self as alloy_sol_types::SolInterface>::NAME,
9461                    selector,
9462                ));
9463            };
9464            DECODE_VALIDATE_SHIMS[idx](data)
9465        }
9466        #[inline]
9467        fn abi_encoded_size(&self) -> usize {
9468            match self {
9469                Self::DEFAULT_BURN_ADDRESS(inner) => {
9470                    <DEFAULT_BURN_ADDRESSCall as alloy_sol_types::SolCall>::abi_encoded_size(
9471                        inner,
9472                    )
9473                }
9474                Self::DEPOSIT_TYPEHASH(inner) => {
9475                    <DEPOSIT_TYPEHASHCall as alloy_sol_types::SolCall>::abi_encoded_size(
9476                        inner,
9477                    )
9478                }
9479                Self::addShares(inner) => {
9480                    <addSharesCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9481                }
9482                Self::addStrategiesToDepositWhitelist(inner) => {
9483                    <addStrategiesToDepositWhitelistCall as alloy_sol_types::SolCall>::abi_encoded_size(
9484                        inner,
9485                    )
9486                }
9487                Self::burnShares(inner) => {
9488                    <burnSharesCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9489                }
9490                Self::calculateStrategyDepositDigestHash(inner) => {
9491                    <calculateStrategyDepositDigestHashCall as alloy_sol_types::SolCall>::abi_encoded_size(
9492                        inner,
9493                    )
9494                }
9495                Self::delegation(inner) => {
9496                    <delegationCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9497                }
9498                Self::depositIntoStrategy(inner) => {
9499                    <depositIntoStrategyCall as alloy_sol_types::SolCall>::abi_encoded_size(
9500                        inner,
9501                    )
9502                }
9503                Self::depositIntoStrategyWithSignature(inner) => {
9504                    <depositIntoStrategyWithSignatureCall as alloy_sol_types::SolCall>::abi_encoded_size(
9505                        inner,
9506                    )
9507                }
9508                Self::domainSeparator(inner) => {
9509                    <domainSeparatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
9510                        inner,
9511                    )
9512                }
9513                Self::getBurnableShares(inner) => {
9514                    <getBurnableSharesCall as alloy_sol_types::SolCall>::abi_encoded_size(
9515                        inner,
9516                    )
9517                }
9518                Self::getDeposits(inner) => {
9519                    <getDepositsCall as alloy_sol_types::SolCall>::abi_encoded_size(
9520                        inner,
9521                    )
9522                }
9523                Self::getStakerStrategyList(inner) => {
9524                    <getStakerStrategyListCall as alloy_sol_types::SolCall>::abi_encoded_size(
9525                        inner,
9526                    )
9527                }
9528                Self::getStrategiesWithBurnableShares(inner) => {
9529                    <getStrategiesWithBurnableSharesCall as alloy_sol_types::SolCall>::abi_encoded_size(
9530                        inner,
9531                    )
9532                }
9533                Self::increaseBurnableShares(inner) => {
9534                    <increaseBurnableSharesCall as alloy_sol_types::SolCall>::abi_encoded_size(
9535                        inner,
9536                    )
9537                }
9538                Self::initialize(inner) => {
9539                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9540                }
9541                Self::nonces(inner) => {
9542                    <noncesCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9543                }
9544                Self::owner(inner) => {
9545                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9546                }
9547                Self::pause(inner) => {
9548                    <pauseCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9549                }
9550                Self::pauseAll(inner) => {
9551                    <pauseAllCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9552                }
9553                Self::paused_0(inner) => {
9554                    <paused_0Call as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9555                }
9556                Self::paused_1(inner) => {
9557                    <paused_1Call as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9558                }
9559                Self::pauserRegistry(inner) => {
9560                    <pauserRegistryCall as alloy_sol_types::SolCall>::abi_encoded_size(
9561                        inner,
9562                    )
9563                }
9564                Self::removeDepositShares(inner) => {
9565                    <removeDepositSharesCall as alloy_sol_types::SolCall>::abi_encoded_size(
9566                        inner,
9567                    )
9568                }
9569                Self::removeStrategiesFromDepositWhitelist(inner) => {
9570                    <removeStrategiesFromDepositWhitelistCall as alloy_sol_types::SolCall>::abi_encoded_size(
9571                        inner,
9572                    )
9573                }
9574                Self::renounceOwnership(inner) => {
9575                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
9576                        inner,
9577                    )
9578                }
9579                Self::setStrategyWhitelister(inner) => {
9580                    <setStrategyWhitelisterCall as alloy_sol_types::SolCall>::abi_encoded_size(
9581                        inner,
9582                    )
9583                }
9584                Self::stakerDepositShares(inner) => {
9585                    <stakerDepositSharesCall as alloy_sol_types::SolCall>::abi_encoded_size(
9586                        inner,
9587                    )
9588                }
9589                Self::stakerStrategyList(inner) => {
9590                    <stakerStrategyListCall as alloy_sol_types::SolCall>::abi_encoded_size(
9591                        inner,
9592                    )
9593                }
9594                Self::stakerStrategyListLength(inner) => {
9595                    <stakerStrategyListLengthCall as alloy_sol_types::SolCall>::abi_encoded_size(
9596                        inner,
9597                    )
9598                }
9599                Self::strategyIsWhitelistedForDeposit(inner) => {
9600                    <strategyIsWhitelistedForDepositCall as alloy_sol_types::SolCall>::abi_encoded_size(
9601                        inner,
9602                    )
9603                }
9604                Self::strategyWhitelister(inner) => {
9605                    <strategyWhitelisterCall as alloy_sol_types::SolCall>::abi_encoded_size(
9606                        inner,
9607                    )
9608                }
9609                Self::transferOwnership(inner) => {
9610                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
9611                        inner,
9612                    )
9613                }
9614                Self::unpause(inner) => {
9615                    <unpauseCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9616                }
9617                Self::version(inner) => {
9618                    <versionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9619                }
9620                Self::withdrawSharesAsTokens(inner) => {
9621                    <withdrawSharesAsTokensCall as alloy_sol_types::SolCall>::abi_encoded_size(
9622                        inner,
9623                    )
9624                }
9625            }
9626        }
9627        #[inline]
9628        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
9629            match self {
9630                Self::DEFAULT_BURN_ADDRESS(inner) => {
9631                    <DEFAULT_BURN_ADDRESSCall as alloy_sol_types::SolCall>::abi_encode_raw(
9632                        inner,
9633                        out,
9634                    )
9635                }
9636                Self::DEPOSIT_TYPEHASH(inner) => {
9637                    <DEPOSIT_TYPEHASHCall as alloy_sol_types::SolCall>::abi_encode_raw(
9638                        inner,
9639                        out,
9640                    )
9641                }
9642                Self::addShares(inner) => {
9643                    <addSharesCall as alloy_sol_types::SolCall>::abi_encode_raw(
9644                        inner,
9645                        out,
9646                    )
9647                }
9648                Self::addStrategiesToDepositWhitelist(inner) => {
9649                    <addStrategiesToDepositWhitelistCall as alloy_sol_types::SolCall>::abi_encode_raw(
9650                        inner,
9651                        out,
9652                    )
9653                }
9654                Self::burnShares(inner) => {
9655                    <burnSharesCall as alloy_sol_types::SolCall>::abi_encode_raw(
9656                        inner,
9657                        out,
9658                    )
9659                }
9660                Self::calculateStrategyDepositDigestHash(inner) => {
9661                    <calculateStrategyDepositDigestHashCall as alloy_sol_types::SolCall>::abi_encode_raw(
9662                        inner,
9663                        out,
9664                    )
9665                }
9666                Self::delegation(inner) => {
9667                    <delegationCall as alloy_sol_types::SolCall>::abi_encode_raw(
9668                        inner,
9669                        out,
9670                    )
9671                }
9672                Self::depositIntoStrategy(inner) => {
9673                    <depositIntoStrategyCall as alloy_sol_types::SolCall>::abi_encode_raw(
9674                        inner,
9675                        out,
9676                    )
9677                }
9678                Self::depositIntoStrategyWithSignature(inner) => {
9679                    <depositIntoStrategyWithSignatureCall as alloy_sol_types::SolCall>::abi_encode_raw(
9680                        inner,
9681                        out,
9682                    )
9683                }
9684                Self::domainSeparator(inner) => {
9685                    <domainSeparatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
9686                        inner,
9687                        out,
9688                    )
9689                }
9690                Self::getBurnableShares(inner) => {
9691                    <getBurnableSharesCall as alloy_sol_types::SolCall>::abi_encode_raw(
9692                        inner,
9693                        out,
9694                    )
9695                }
9696                Self::getDeposits(inner) => {
9697                    <getDepositsCall as alloy_sol_types::SolCall>::abi_encode_raw(
9698                        inner,
9699                        out,
9700                    )
9701                }
9702                Self::getStakerStrategyList(inner) => {
9703                    <getStakerStrategyListCall as alloy_sol_types::SolCall>::abi_encode_raw(
9704                        inner,
9705                        out,
9706                    )
9707                }
9708                Self::getStrategiesWithBurnableShares(inner) => {
9709                    <getStrategiesWithBurnableSharesCall as alloy_sol_types::SolCall>::abi_encode_raw(
9710                        inner,
9711                        out,
9712                    )
9713                }
9714                Self::increaseBurnableShares(inner) => {
9715                    <increaseBurnableSharesCall as alloy_sol_types::SolCall>::abi_encode_raw(
9716                        inner,
9717                        out,
9718                    )
9719                }
9720                Self::initialize(inner) => {
9721                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
9722                        inner,
9723                        out,
9724                    )
9725                }
9726                Self::nonces(inner) => {
9727                    <noncesCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
9728                }
9729                Self::owner(inner) => {
9730                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
9731                }
9732                Self::pause(inner) => {
9733                    <pauseCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
9734                }
9735                Self::pauseAll(inner) => {
9736                    <pauseAllCall as alloy_sol_types::SolCall>::abi_encode_raw(
9737                        inner,
9738                        out,
9739                    )
9740                }
9741                Self::paused_0(inner) => {
9742                    <paused_0Call as alloy_sol_types::SolCall>::abi_encode_raw(
9743                        inner,
9744                        out,
9745                    )
9746                }
9747                Self::paused_1(inner) => {
9748                    <paused_1Call as alloy_sol_types::SolCall>::abi_encode_raw(
9749                        inner,
9750                        out,
9751                    )
9752                }
9753                Self::pauserRegistry(inner) => {
9754                    <pauserRegistryCall as alloy_sol_types::SolCall>::abi_encode_raw(
9755                        inner,
9756                        out,
9757                    )
9758                }
9759                Self::removeDepositShares(inner) => {
9760                    <removeDepositSharesCall as alloy_sol_types::SolCall>::abi_encode_raw(
9761                        inner,
9762                        out,
9763                    )
9764                }
9765                Self::removeStrategiesFromDepositWhitelist(inner) => {
9766                    <removeStrategiesFromDepositWhitelistCall as alloy_sol_types::SolCall>::abi_encode_raw(
9767                        inner,
9768                        out,
9769                    )
9770                }
9771                Self::renounceOwnership(inner) => {
9772                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
9773                        inner,
9774                        out,
9775                    )
9776                }
9777                Self::setStrategyWhitelister(inner) => {
9778                    <setStrategyWhitelisterCall as alloy_sol_types::SolCall>::abi_encode_raw(
9779                        inner,
9780                        out,
9781                    )
9782                }
9783                Self::stakerDepositShares(inner) => {
9784                    <stakerDepositSharesCall as alloy_sol_types::SolCall>::abi_encode_raw(
9785                        inner,
9786                        out,
9787                    )
9788                }
9789                Self::stakerStrategyList(inner) => {
9790                    <stakerStrategyListCall as alloy_sol_types::SolCall>::abi_encode_raw(
9791                        inner,
9792                        out,
9793                    )
9794                }
9795                Self::stakerStrategyListLength(inner) => {
9796                    <stakerStrategyListLengthCall as alloy_sol_types::SolCall>::abi_encode_raw(
9797                        inner,
9798                        out,
9799                    )
9800                }
9801                Self::strategyIsWhitelistedForDeposit(inner) => {
9802                    <strategyIsWhitelistedForDepositCall as alloy_sol_types::SolCall>::abi_encode_raw(
9803                        inner,
9804                        out,
9805                    )
9806                }
9807                Self::strategyWhitelister(inner) => {
9808                    <strategyWhitelisterCall as alloy_sol_types::SolCall>::abi_encode_raw(
9809                        inner,
9810                        out,
9811                    )
9812                }
9813                Self::transferOwnership(inner) => {
9814                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
9815                        inner,
9816                        out,
9817                    )
9818                }
9819                Self::unpause(inner) => {
9820                    <unpauseCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
9821                }
9822                Self::version(inner) => {
9823                    <versionCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
9824                }
9825                Self::withdrawSharesAsTokens(inner) => {
9826                    <withdrawSharesAsTokensCall as alloy_sol_types::SolCall>::abi_encode_raw(
9827                        inner,
9828                        out,
9829                    )
9830                }
9831            }
9832        }
9833    }
9834    ///Container for all the [`StrategyManager`](self) custom errors.
9835    #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq, Eq, Hash)]
9836    pub enum StrategyManagerErrors {
9837        #[allow(missing_docs)]
9838        CurrentlyPaused(CurrentlyPaused),
9839        #[allow(missing_docs)]
9840        InputAddressZero(InputAddressZero),
9841        #[allow(missing_docs)]
9842        InvalidNewPausedStatus(InvalidNewPausedStatus),
9843        #[allow(missing_docs)]
9844        InvalidShortString(InvalidShortString),
9845        #[allow(missing_docs)]
9846        InvalidSignature(InvalidSignature),
9847        #[allow(missing_docs)]
9848        MaxStrategiesExceeded(MaxStrategiesExceeded),
9849        #[allow(missing_docs)]
9850        OnlyDelegationManager(OnlyDelegationManager),
9851        #[allow(missing_docs)]
9852        OnlyPauser(OnlyPauser),
9853        #[allow(missing_docs)]
9854        OnlyStrategyWhitelister(OnlyStrategyWhitelister),
9855        #[allow(missing_docs)]
9856        OnlyUnpauser(OnlyUnpauser),
9857        #[allow(missing_docs)]
9858        SharesAmountTooHigh(SharesAmountTooHigh),
9859        #[allow(missing_docs)]
9860        SharesAmountZero(SharesAmountZero),
9861        #[allow(missing_docs)]
9862        SignatureExpired(SignatureExpired),
9863        #[allow(missing_docs)]
9864        StakerAddressZero(StakerAddressZero),
9865        #[allow(missing_docs)]
9866        StrategyNotFound(StrategyNotFound),
9867        #[allow(missing_docs)]
9868        StrategyNotWhitelisted(StrategyNotWhitelisted),
9869        #[allow(missing_docs)]
9870        StringTooLong(StringTooLong),
9871    }
9872    #[automatically_derived]
9873    impl StrategyManagerErrors {
9874        /// All the selectors of this enum.
9875        ///
9876        /// Note that the selectors might not be in the same order as the variants.
9877        /// No guarantees are made about the order of the selectors.
9878        ///
9879        /// Prefer using `SolInterface` methods instead.
9880        pub const SELECTORS: &'static [[u8; 4usize]] = &[
9881            [8u8, 25u8, 189u8, 205u8],
9882            [13u8, 10u8, 33u8, 200u8],
9883            [22u8, 242u8, 204u8, 201u8],
9884            [48u8, 90u8, 39u8, 169u8],
9885            [75u8, 24u8, 177u8, 147u8],
9886            [91u8, 226u8, 180u8, 130u8],
9887            [93u8, 251u8, 44u8, 162u8],
9888            [115u8, 99u8, 33u8, 118u8],
9889            [117u8, 223u8, 81u8, 220u8],
9890            [121u8, 72u8, 33u8, 255u8],
9891            [130u8, 232u8, 255u8, 228u8],
9892            [132u8, 10u8, 72u8, 213u8],
9893            [132u8, 12u8, 54u8, 74u8],
9894            [139u8, 170u8, 87u8, 159u8],
9895            [179u8, 81u8, 43u8, 12u8],
9896            [198u8, 29u8, 202u8, 93u8],
9897            [247u8, 57u8, 88u8, 155u8],
9898        ];
9899    }
9900    #[automatically_derived]
9901    impl alloy_sol_types::SolInterface for StrategyManagerErrors {
9902        const NAME: &'static str = "StrategyManagerErrors";
9903        const MIN_DATA_LENGTH: usize = 0usize;
9904        const COUNT: usize = 17usize;
9905        #[inline]
9906        fn selector(&self) -> [u8; 4] {
9907            match self {
9908                Self::CurrentlyPaused(_) => {
9909                    <CurrentlyPaused as alloy_sol_types::SolError>::SELECTOR
9910                }
9911                Self::InputAddressZero(_) => {
9912                    <InputAddressZero as alloy_sol_types::SolError>::SELECTOR
9913                }
9914                Self::InvalidNewPausedStatus(_) => {
9915                    <InvalidNewPausedStatus as alloy_sol_types::SolError>::SELECTOR
9916                }
9917                Self::InvalidShortString(_) => {
9918                    <InvalidShortString as alloy_sol_types::SolError>::SELECTOR
9919                }
9920                Self::InvalidSignature(_) => {
9921                    <InvalidSignature as alloy_sol_types::SolError>::SELECTOR
9922                }
9923                Self::MaxStrategiesExceeded(_) => {
9924                    <MaxStrategiesExceeded as alloy_sol_types::SolError>::SELECTOR
9925                }
9926                Self::OnlyDelegationManager(_) => {
9927                    <OnlyDelegationManager as alloy_sol_types::SolError>::SELECTOR
9928                }
9929                Self::OnlyPauser(_) => <OnlyPauser as alloy_sol_types::SolError>::SELECTOR,
9930                Self::OnlyStrategyWhitelister(_) => {
9931                    <OnlyStrategyWhitelister as alloy_sol_types::SolError>::SELECTOR
9932                }
9933                Self::OnlyUnpauser(_) => <OnlyUnpauser as alloy_sol_types::SolError>::SELECTOR,
9934                Self::SharesAmountTooHigh(_) => {
9935                    <SharesAmountTooHigh as alloy_sol_types::SolError>::SELECTOR
9936                }
9937                Self::SharesAmountZero(_) => {
9938                    <SharesAmountZero as alloy_sol_types::SolError>::SELECTOR
9939                }
9940                Self::SignatureExpired(_) => {
9941                    <SignatureExpired as alloy_sol_types::SolError>::SELECTOR
9942                }
9943                Self::StakerAddressZero(_) => {
9944                    <StakerAddressZero as alloy_sol_types::SolError>::SELECTOR
9945                }
9946                Self::StrategyNotFound(_) => {
9947                    <StrategyNotFound as alloy_sol_types::SolError>::SELECTOR
9948                }
9949                Self::StrategyNotWhitelisted(_) => {
9950                    <StrategyNotWhitelisted as alloy_sol_types::SolError>::SELECTOR
9951                }
9952                Self::StringTooLong(_) => <StringTooLong as alloy_sol_types::SolError>::SELECTOR,
9953            }
9954        }
9955        #[inline]
9956        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
9957            Self::SELECTORS.get(i).copied()
9958        }
9959        #[inline]
9960        fn valid_selector(selector: [u8; 4]) -> bool {
9961            Self::SELECTORS.binary_search(&selector).is_ok()
9962        }
9963        #[inline]
9964        #[allow(non_snake_case)]
9965        fn abi_decode_raw(selector: [u8; 4], data: &[u8]) -> alloy_sol_types::Result<Self> {
9966            static DECODE_SHIMS: &[fn(&[u8]) -> alloy_sol_types::Result<StrategyManagerErrors>] = &[
9967                {
9968                    fn SignatureExpired(
9969                        data: &[u8],
9970                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
9971                        <SignatureExpired as alloy_sol_types::SolError>::abi_decode_raw(data)
9972                            .map(StrategyManagerErrors::SignatureExpired)
9973                    }
9974                    SignatureExpired
9975                },
9976                {
9977                    fn MaxStrategiesExceeded(
9978                        data: &[u8],
9979                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
9980                        <MaxStrategiesExceeded as alloy_sol_types::SolError>::abi_decode_raw(data)
9981                            .map(StrategyManagerErrors::MaxStrategiesExceeded)
9982                    }
9983                    MaxStrategiesExceeded
9984                },
9985                {
9986                    fn StakerAddressZero(
9987                        data: &[u8],
9988                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
9989                        <StakerAddressZero as alloy_sol_types::SolError>::abi_decode_raw(data)
9990                            .map(StrategyManagerErrors::StakerAddressZero)
9991                    }
9992                    StakerAddressZero
9993                },
9994                {
9995                    fn StringTooLong(
9996                        data: &[u8],
9997                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
9998                        <StringTooLong as alloy_sol_types::SolError>::abi_decode_raw(data)
9999                            .map(StrategyManagerErrors::StringTooLong)
10000                    }
10001                    StringTooLong
10002                },
10003                {
10004                    fn SharesAmountTooHigh(
10005                        data: &[u8],
10006                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
10007                        <SharesAmountTooHigh as alloy_sol_types::SolError>::abi_decode_raw(data)
10008                            .map(StrategyManagerErrors::SharesAmountTooHigh)
10009                    }
10010                    SharesAmountTooHigh
10011                },
10012                {
10013                    fn StrategyNotFound(
10014                        data: &[u8],
10015                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
10016                        <StrategyNotFound as alloy_sol_types::SolError>::abi_decode_raw(data)
10017                            .map(StrategyManagerErrors::StrategyNotFound)
10018                    }
10019                    StrategyNotFound
10020                },
10021                {
10022                    fn StrategyNotWhitelisted(
10023                        data: &[u8],
10024                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
10025                        <StrategyNotWhitelisted as alloy_sol_types::SolError>::abi_decode_raw(data)
10026                            .map(StrategyManagerErrors::StrategyNotWhitelisted)
10027                    }
10028                    StrategyNotWhitelisted
10029                },
10030                {
10031                    fn InputAddressZero(
10032                        data: &[u8],
10033                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
10034                        <InputAddressZero as alloy_sol_types::SolError>::abi_decode_raw(data)
10035                            .map(StrategyManagerErrors::InputAddressZero)
10036                    }
10037                    InputAddressZero
10038                },
10039                {
10040                    fn OnlyPauser(data: &[u8]) -> alloy_sol_types::Result<StrategyManagerErrors> {
10041                        <OnlyPauser as alloy_sol_types::SolError>::abi_decode_raw(data)
10042                            .map(StrategyManagerErrors::OnlyPauser)
10043                    }
10044                    OnlyPauser
10045                },
10046                {
10047                    fn OnlyUnpauser(data: &[u8]) -> alloy_sol_types::Result<StrategyManagerErrors> {
10048                        <OnlyUnpauser as alloy_sol_types::SolError>::abi_decode_raw(data)
10049                            .map(StrategyManagerErrors::OnlyUnpauser)
10050                    }
10051                    OnlyUnpauser
10052                },
10053                {
10054                    fn OnlyStrategyWhitelister(
10055                        data: &[u8],
10056                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
10057                        <OnlyStrategyWhitelister as alloy_sol_types::SolError>::abi_decode_raw(data)
10058                            .map(StrategyManagerErrors::OnlyStrategyWhitelister)
10059                    }
10060                    OnlyStrategyWhitelister
10061                },
10062                {
10063                    fn CurrentlyPaused(
10064                        data: &[u8],
10065                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
10066                        <CurrentlyPaused as alloy_sol_types::SolError>::abi_decode_raw(data)
10067                            .map(StrategyManagerErrors::CurrentlyPaused)
10068                    }
10069                    CurrentlyPaused
10070                },
10071                {
10072                    fn SharesAmountZero(
10073                        data: &[u8],
10074                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
10075                        <SharesAmountZero as alloy_sol_types::SolError>::abi_decode_raw(data)
10076                            .map(StrategyManagerErrors::SharesAmountZero)
10077                    }
10078                    SharesAmountZero
10079                },
10080                {
10081                    fn InvalidSignature(
10082                        data: &[u8],
10083                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
10084                        <InvalidSignature as alloy_sol_types::SolError>::abi_decode_raw(data)
10085                            .map(StrategyManagerErrors::InvalidSignature)
10086                    }
10087                    InvalidSignature
10088                },
10089                {
10090                    fn InvalidShortString(
10091                        data: &[u8],
10092                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
10093                        <InvalidShortString as alloy_sol_types::SolError>::abi_decode_raw(data)
10094                            .map(StrategyManagerErrors::InvalidShortString)
10095                    }
10096                    InvalidShortString
10097                },
10098                {
10099                    fn InvalidNewPausedStatus(
10100                        data: &[u8],
10101                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
10102                        <InvalidNewPausedStatus as alloy_sol_types::SolError>::abi_decode_raw(data)
10103                            .map(StrategyManagerErrors::InvalidNewPausedStatus)
10104                    }
10105                    InvalidNewPausedStatus
10106                },
10107                {
10108                    fn OnlyDelegationManager(
10109                        data: &[u8],
10110                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
10111                        <OnlyDelegationManager as alloy_sol_types::SolError>::abi_decode_raw(data)
10112                            .map(StrategyManagerErrors::OnlyDelegationManager)
10113                    }
10114                    OnlyDelegationManager
10115                },
10116            ];
10117            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
10118                return Err(alloy_sol_types::Error::unknown_selector(
10119                    <Self as alloy_sol_types::SolInterface>::NAME,
10120                    selector,
10121                ));
10122            };
10123            DECODE_SHIMS[idx](data)
10124        }
10125        #[inline]
10126        #[allow(non_snake_case)]
10127        fn abi_decode_raw_validate(
10128            selector: [u8; 4],
10129            data: &[u8],
10130        ) -> alloy_sol_types::Result<Self> {
10131            static DECODE_VALIDATE_SHIMS: &[fn(
10132                &[u8],
10133            ) -> alloy_sol_types::Result<
10134                StrategyManagerErrors,
10135            >] = &[
10136                {
10137                    fn SignatureExpired(
10138                        data: &[u8],
10139                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
10140                        <SignatureExpired as alloy_sol_types::SolError>::abi_decode_raw_validate(
10141                            data,
10142                        )
10143                        .map(StrategyManagerErrors::SignatureExpired)
10144                    }
10145                    SignatureExpired
10146                },
10147                {
10148                    fn MaxStrategiesExceeded(
10149                        data: &[u8],
10150                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
10151                        <MaxStrategiesExceeded as alloy_sol_types::SolError>::abi_decode_raw_validate(
10152                                data,
10153                            )
10154                            .map(StrategyManagerErrors::MaxStrategiesExceeded)
10155                    }
10156                    MaxStrategiesExceeded
10157                },
10158                {
10159                    fn StakerAddressZero(
10160                        data: &[u8],
10161                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
10162                        <StakerAddressZero as alloy_sol_types::SolError>::abi_decode_raw_validate(
10163                            data,
10164                        )
10165                        .map(StrategyManagerErrors::StakerAddressZero)
10166                    }
10167                    StakerAddressZero
10168                },
10169                {
10170                    fn StringTooLong(
10171                        data: &[u8],
10172                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
10173                        <StringTooLong as alloy_sol_types::SolError>::abi_decode_raw_validate(data)
10174                            .map(StrategyManagerErrors::StringTooLong)
10175                    }
10176                    StringTooLong
10177                },
10178                {
10179                    fn SharesAmountTooHigh(
10180                        data: &[u8],
10181                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
10182                        <SharesAmountTooHigh as alloy_sol_types::SolError>::abi_decode_raw_validate(
10183                            data,
10184                        )
10185                        .map(StrategyManagerErrors::SharesAmountTooHigh)
10186                    }
10187                    SharesAmountTooHigh
10188                },
10189                {
10190                    fn StrategyNotFound(
10191                        data: &[u8],
10192                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
10193                        <StrategyNotFound as alloy_sol_types::SolError>::abi_decode_raw_validate(
10194                            data,
10195                        )
10196                        .map(StrategyManagerErrors::StrategyNotFound)
10197                    }
10198                    StrategyNotFound
10199                },
10200                {
10201                    fn StrategyNotWhitelisted(
10202                        data: &[u8],
10203                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
10204                        <StrategyNotWhitelisted as alloy_sol_types::SolError>::abi_decode_raw_validate(
10205                                data,
10206                            )
10207                            .map(StrategyManagerErrors::StrategyNotWhitelisted)
10208                    }
10209                    StrategyNotWhitelisted
10210                },
10211                {
10212                    fn InputAddressZero(
10213                        data: &[u8],
10214                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
10215                        <InputAddressZero as alloy_sol_types::SolError>::abi_decode_raw_validate(
10216                            data,
10217                        )
10218                        .map(StrategyManagerErrors::InputAddressZero)
10219                    }
10220                    InputAddressZero
10221                },
10222                {
10223                    fn OnlyPauser(data: &[u8]) -> alloy_sol_types::Result<StrategyManagerErrors> {
10224                        <OnlyPauser as alloy_sol_types::SolError>::abi_decode_raw_validate(data)
10225                            .map(StrategyManagerErrors::OnlyPauser)
10226                    }
10227                    OnlyPauser
10228                },
10229                {
10230                    fn OnlyUnpauser(data: &[u8]) -> alloy_sol_types::Result<StrategyManagerErrors> {
10231                        <OnlyUnpauser as alloy_sol_types::SolError>::abi_decode_raw_validate(data)
10232                            .map(StrategyManagerErrors::OnlyUnpauser)
10233                    }
10234                    OnlyUnpauser
10235                },
10236                {
10237                    fn OnlyStrategyWhitelister(
10238                        data: &[u8],
10239                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
10240                        <OnlyStrategyWhitelister as alloy_sol_types::SolError>::abi_decode_raw_validate(
10241                                data,
10242                            )
10243                            .map(StrategyManagerErrors::OnlyStrategyWhitelister)
10244                    }
10245                    OnlyStrategyWhitelister
10246                },
10247                {
10248                    fn CurrentlyPaused(
10249                        data: &[u8],
10250                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
10251                        <CurrentlyPaused as alloy_sol_types::SolError>::abi_decode_raw_validate(
10252                            data,
10253                        )
10254                        .map(StrategyManagerErrors::CurrentlyPaused)
10255                    }
10256                    CurrentlyPaused
10257                },
10258                {
10259                    fn SharesAmountZero(
10260                        data: &[u8],
10261                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
10262                        <SharesAmountZero as alloy_sol_types::SolError>::abi_decode_raw_validate(
10263                            data,
10264                        )
10265                        .map(StrategyManagerErrors::SharesAmountZero)
10266                    }
10267                    SharesAmountZero
10268                },
10269                {
10270                    fn InvalidSignature(
10271                        data: &[u8],
10272                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
10273                        <InvalidSignature as alloy_sol_types::SolError>::abi_decode_raw_validate(
10274                            data,
10275                        )
10276                        .map(StrategyManagerErrors::InvalidSignature)
10277                    }
10278                    InvalidSignature
10279                },
10280                {
10281                    fn InvalidShortString(
10282                        data: &[u8],
10283                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
10284                        <InvalidShortString as alloy_sol_types::SolError>::abi_decode_raw_validate(
10285                            data,
10286                        )
10287                        .map(StrategyManagerErrors::InvalidShortString)
10288                    }
10289                    InvalidShortString
10290                },
10291                {
10292                    fn InvalidNewPausedStatus(
10293                        data: &[u8],
10294                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
10295                        <InvalidNewPausedStatus as alloy_sol_types::SolError>::abi_decode_raw_validate(
10296                                data,
10297                            )
10298                            .map(StrategyManagerErrors::InvalidNewPausedStatus)
10299                    }
10300                    InvalidNewPausedStatus
10301                },
10302                {
10303                    fn OnlyDelegationManager(
10304                        data: &[u8],
10305                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
10306                        <OnlyDelegationManager as alloy_sol_types::SolError>::abi_decode_raw_validate(
10307                                data,
10308                            )
10309                            .map(StrategyManagerErrors::OnlyDelegationManager)
10310                    }
10311                    OnlyDelegationManager
10312                },
10313            ];
10314            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
10315                return Err(alloy_sol_types::Error::unknown_selector(
10316                    <Self as alloy_sol_types::SolInterface>::NAME,
10317                    selector,
10318                ));
10319            };
10320            DECODE_VALIDATE_SHIMS[idx](data)
10321        }
10322        #[inline]
10323        fn abi_encoded_size(&self) -> usize {
10324            match self {
10325                Self::CurrentlyPaused(inner) => {
10326                    <CurrentlyPaused as alloy_sol_types::SolError>::abi_encoded_size(inner)
10327                }
10328                Self::InputAddressZero(inner) => {
10329                    <InputAddressZero as alloy_sol_types::SolError>::abi_encoded_size(inner)
10330                }
10331                Self::InvalidNewPausedStatus(inner) => {
10332                    <InvalidNewPausedStatus as alloy_sol_types::SolError>::abi_encoded_size(inner)
10333                }
10334                Self::InvalidShortString(inner) => {
10335                    <InvalidShortString as alloy_sol_types::SolError>::abi_encoded_size(inner)
10336                }
10337                Self::InvalidSignature(inner) => {
10338                    <InvalidSignature as alloy_sol_types::SolError>::abi_encoded_size(inner)
10339                }
10340                Self::MaxStrategiesExceeded(inner) => {
10341                    <MaxStrategiesExceeded as alloy_sol_types::SolError>::abi_encoded_size(inner)
10342                }
10343                Self::OnlyDelegationManager(inner) => {
10344                    <OnlyDelegationManager as alloy_sol_types::SolError>::abi_encoded_size(inner)
10345                }
10346                Self::OnlyPauser(inner) => {
10347                    <OnlyPauser as alloy_sol_types::SolError>::abi_encoded_size(inner)
10348                }
10349                Self::OnlyStrategyWhitelister(inner) => {
10350                    <OnlyStrategyWhitelister as alloy_sol_types::SolError>::abi_encoded_size(inner)
10351                }
10352                Self::OnlyUnpauser(inner) => {
10353                    <OnlyUnpauser as alloy_sol_types::SolError>::abi_encoded_size(inner)
10354                }
10355                Self::SharesAmountTooHigh(inner) => {
10356                    <SharesAmountTooHigh as alloy_sol_types::SolError>::abi_encoded_size(inner)
10357                }
10358                Self::SharesAmountZero(inner) => {
10359                    <SharesAmountZero as alloy_sol_types::SolError>::abi_encoded_size(inner)
10360                }
10361                Self::SignatureExpired(inner) => {
10362                    <SignatureExpired as alloy_sol_types::SolError>::abi_encoded_size(inner)
10363                }
10364                Self::StakerAddressZero(inner) => {
10365                    <StakerAddressZero as alloy_sol_types::SolError>::abi_encoded_size(inner)
10366                }
10367                Self::StrategyNotFound(inner) => {
10368                    <StrategyNotFound as alloy_sol_types::SolError>::abi_encoded_size(inner)
10369                }
10370                Self::StrategyNotWhitelisted(inner) => {
10371                    <StrategyNotWhitelisted as alloy_sol_types::SolError>::abi_encoded_size(inner)
10372                }
10373                Self::StringTooLong(inner) => {
10374                    <StringTooLong as alloy_sol_types::SolError>::abi_encoded_size(inner)
10375                }
10376            }
10377        }
10378        #[inline]
10379        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
10380            match self {
10381                Self::CurrentlyPaused(inner) => {
10382                    <CurrentlyPaused as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
10383                }
10384                Self::InputAddressZero(inner) => {
10385                    <InputAddressZero as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
10386                }
10387                Self::InvalidNewPausedStatus(inner) => {
10388                    <InvalidNewPausedStatus as alloy_sol_types::SolError>::abi_encode_raw(
10389                        inner, out,
10390                    )
10391                }
10392                Self::InvalidShortString(inner) => {
10393                    <InvalidShortString as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
10394                }
10395                Self::InvalidSignature(inner) => {
10396                    <InvalidSignature as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
10397                }
10398                Self::MaxStrategiesExceeded(inner) => {
10399                    <MaxStrategiesExceeded as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
10400                }
10401                Self::OnlyDelegationManager(inner) => {
10402                    <OnlyDelegationManager as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
10403                }
10404                Self::OnlyPauser(inner) => {
10405                    <OnlyPauser as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
10406                }
10407                Self::OnlyStrategyWhitelister(inner) => {
10408                    <OnlyStrategyWhitelister as alloy_sol_types::SolError>::abi_encode_raw(
10409                        inner, out,
10410                    )
10411                }
10412                Self::OnlyUnpauser(inner) => {
10413                    <OnlyUnpauser as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
10414                }
10415                Self::SharesAmountTooHigh(inner) => {
10416                    <SharesAmountTooHigh as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
10417                }
10418                Self::SharesAmountZero(inner) => {
10419                    <SharesAmountZero as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
10420                }
10421                Self::SignatureExpired(inner) => {
10422                    <SignatureExpired as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
10423                }
10424                Self::StakerAddressZero(inner) => {
10425                    <StakerAddressZero as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
10426                }
10427                Self::StrategyNotFound(inner) => {
10428                    <StrategyNotFound as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
10429                }
10430                Self::StrategyNotWhitelisted(inner) => {
10431                    <StrategyNotWhitelisted as alloy_sol_types::SolError>::abi_encode_raw(
10432                        inner, out,
10433                    )
10434                }
10435                Self::StringTooLong(inner) => {
10436                    <StringTooLong as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
10437                }
10438            }
10439        }
10440    }
10441    ///Container for all the [`StrategyManager`](self) events.
10442    #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq, Eq, Hash)]
10443    pub enum StrategyManagerEvents {
10444        #[allow(missing_docs)]
10445        BurnableSharesDecreased(BurnableSharesDecreased),
10446        #[allow(missing_docs)]
10447        BurnableSharesIncreased(BurnableSharesIncreased),
10448        #[allow(missing_docs)]
10449        Deposit(Deposit),
10450        #[allow(missing_docs)]
10451        Initialized(Initialized),
10452        #[allow(missing_docs)]
10453        OwnershipTransferred(OwnershipTransferred),
10454        #[allow(missing_docs)]
10455        Paused(Paused),
10456        #[allow(missing_docs)]
10457        StrategyAddedToDepositWhitelist(StrategyAddedToDepositWhitelist),
10458        #[allow(missing_docs)]
10459        StrategyRemovedFromDepositWhitelist(StrategyRemovedFromDepositWhitelist),
10460        #[allow(missing_docs)]
10461        StrategyWhitelisterChanged(StrategyWhitelisterChanged),
10462        #[allow(missing_docs)]
10463        Unpaused(Unpaused),
10464    }
10465    #[automatically_derived]
10466    impl StrategyManagerEvents {
10467        /// All the selectors of this enum.
10468        ///
10469        /// Note that the selectors might not be in the same order as the variants.
10470        /// No guarantees are made about the order of the selectors.
10471        ///
10472        /// Prefer using `SolInterface` methods instead.
10473        pub const SELECTORS: &'static [[u8; 32usize]] = &[
10474            [
10475                12u8, 53u8, 177u8, 125u8, 145u8, 201u8, 110u8, 178u8, 117u8, 28u8, 212u8, 86u8,
10476                225u8, 37u8, 47u8, 66u8, 163u8, 134u8, 229u8, 36u8, 239u8, 159u8, 242u8, 110u8,
10477                204u8, 153u8, 80u8, 133u8, 159u8, 220u8, 4u8, 254u8,
10478            ],
10479            [
10480                53u8, 130u8, 209u8, 130u8, 142u8, 38u8, 191u8, 86u8, 189u8, 128u8, 21u8, 2u8,
10481                188u8, 2u8, 26u8, 192u8, 188u8, 138u8, 251u8, 87u8, 200u8, 38u8, 228u8, 152u8,
10482                107u8, 69u8, 89u8, 60u8, 143u8, 173u8, 56u8, 156u8,
10483            ],
10484            [
10485                64u8, 116u8, 65u8, 59u8, 75u8, 68u8, 62u8, 78u8, 88u8, 1u8, 159u8, 40u8, 85u8,
10486                168u8, 118u8, 81u8, 19u8, 53u8, 140u8, 124u8, 114u8, 227u8, 149u8, 9u8, 198u8,
10487                175u8, 69u8, 252u8, 15u8, 91u8, 160u8, 48u8,
10488            ],
10489            [
10490                66u8, 100u8, 39u8, 94u8, 89u8, 57u8, 85u8, 255u8, 157u8, 97u8, 70u8, 165u8, 26u8,
10491                69u8, 37u8, 246u8, 221u8, 172u8, 226u8, 232u8, 29u8, 185u8, 57u8, 26u8, 188u8,
10492                201u8, 209u8, 202u8, 72u8, 4u8, 125u8, 41u8,
10493            ],
10494            [
10495                85u8, 72u8, 200u8, 55u8, 171u8, 6u8, 140u8, 245u8, 106u8, 44u8, 36u8, 121u8, 223u8,
10496                8u8, 130u8, 164u8, 146u8, 47u8, 210u8, 3u8, 237u8, 183u8, 81u8, 115u8, 33u8, 131u8,
10497                29u8, 149u8, 7u8, 140u8, 95u8, 98u8,
10498            ],
10499            [
10500                127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8, 19u8, 56u8,
10501                82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8, 146u8, 20u8, 96u8,
10502                206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8,
10503            ],
10504            [
10505                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8, 31u8, 208u8,
10506                164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8, 218u8, 175u8, 227u8,
10507                180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
10508            ],
10509            [
10510                171u8, 64u8, 163u8, 116u8, 188u8, 81u8, 222u8, 55u8, 34u8, 0u8, 168u8, 188u8,
10511                152u8, 26u8, 248u8, 201u8, 236u8, 220u8, 8u8, 223u8, 218u8, 239u8, 11u8, 182u8,
10512                224u8, 159u8, 136u8, 243u8, 198u8, 22u8, 239u8, 61u8,
10513            ],
10514            [
10515                202u8, 62u8, 2u8, 164u8, 171u8, 122u8, 211u8, 196u8, 122u8, 142u8, 54u8, 229u8,
10516                166u8, 36u8, 195u8, 1u8, 112u8, 121u8, 23u8, 38u8, 171u8, 114u8, 15u8, 27u8, 171u8,
10517                254u8, 242u8, 16u8, 70u8, 217u8, 83u8, 255u8,
10518            ],
10519            [
10520                217u8, 208u8, 130u8, 195u8, 236u8, 79u8, 58u8, 63u8, 250u8, 85u8, 195u8, 36u8,
10521                147u8, 154u8, 6u8, 64u8, 127u8, 95u8, 188u8, 184u8, 125u8, 94u8, 12u8, 227u8,
10522                185u8, 80u8, 140u8, 146u8, 200u8, 78u8, 216u8, 57u8,
10523            ],
10524        ];
10525    }
10526    #[automatically_derived]
10527    impl alloy_sol_types::SolEventInterface for StrategyManagerEvents {
10528        const NAME: &'static str = "StrategyManagerEvents";
10529        const COUNT: usize = 10usize;
10530        fn decode_raw_log(
10531            topics: &[alloy_sol_types::Word],
10532            data: &[u8],
10533        ) -> alloy_sol_types::Result<Self> {
10534            match topics.first().copied() {
10535                Some(
10536                    <BurnableSharesDecreased as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
10537                ) => {
10538                    <BurnableSharesDecreased as alloy_sol_types::SolEvent>::decode_raw_log(
10539                            topics,
10540                            data,
10541                        )
10542                        .map(Self::BurnableSharesDecreased)
10543                }
10544                Some(
10545                    <BurnableSharesIncreased as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
10546                ) => {
10547                    <BurnableSharesIncreased as alloy_sol_types::SolEvent>::decode_raw_log(
10548                            topics,
10549                            data,
10550                        )
10551                        .map(Self::BurnableSharesIncreased)
10552                }
10553                Some(<Deposit as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
10554                    <Deposit as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
10555                        .map(Self::Deposit)
10556                }
10557                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
10558                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(
10559                            topics,
10560                            data,
10561                        )
10562                        .map(Self::Initialized)
10563                }
10564                Some(
10565                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
10566                ) => {
10567                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
10568                            topics,
10569                            data,
10570                        )
10571                        .map(Self::OwnershipTransferred)
10572                }
10573                Some(<Paused as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
10574                    <Paused as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
10575                        .map(Self::Paused)
10576                }
10577                Some(
10578                    <StrategyAddedToDepositWhitelist as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
10579                ) => {
10580                    <StrategyAddedToDepositWhitelist as alloy_sol_types::SolEvent>::decode_raw_log(
10581                            topics,
10582                            data,
10583                        )
10584                        .map(Self::StrategyAddedToDepositWhitelist)
10585                }
10586                Some(
10587                    <StrategyRemovedFromDepositWhitelist as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
10588                ) => {
10589                    <StrategyRemovedFromDepositWhitelist as alloy_sol_types::SolEvent>::decode_raw_log(
10590                            topics,
10591                            data,
10592                        )
10593                        .map(Self::StrategyRemovedFromDepositWhitelist)
10594                }
10595                Some(
10596                    <StrategyWhitelisterChanged as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
10597                ) => {
10598                    <StrategyWhitelisterChanged as alloy_sol_types::SolEvent>::decode_raw_log(
10599                            topics,
10600                            data,
10601                        )
10602                        .map(Self::StrategyWhitelisterChanged)
10603                }
10604                Some(<Unpaused as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
10605                    <Unpaused as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
10606                        .map(Self::Unpaused)
10607                }
10608                _ => {
10609                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
10610                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
10611                        log: alloy_sol_types::private::Box::new(
10612                            alloy_sol_types::private::LogData::new_unchecked(
10613                                topics.to_vec(),
10614                                data.to_vec().into(),
10615                            ),
10616                        ),
10617                    })
10618                }
10619            }
10620        }
10621    }
10622    #[automatically_derived]
10623    impl alloy_sol_types::private::IntoLogData for StrategyManagerEvents {
10624        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10625            match self {
10626                Self::BurnableSharesDecreased(inner) => {
10627                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
10628                }
10629                Self::BurnableSharesIncreased(inner) => {
10630                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
10631                }
10632                Self::Deposit(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner),
10633                Self::Initialized(inner) => {
10634                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
10635                }
10636                Self::OwnershipTransferred(inner) => {
10637                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
10638                }
10639                Self::Paused(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner),
10640                Self::StrategyAddedToDepositWhitelist(inner) => {
10641                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
10642                }
10643                Self::StrategyRemovedFromDepositWhitelist(inner) => {
10644                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
10645                }
10646                Self::StrategyWhitelisterChanged(inner) => {
10647                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
10648                }
10649                Self::Unpaused(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner),
10650            }
10651        }
10652        fn into_log_data(self) -> alloy_sol_types::private::LogData {
10653            match self {
10654                Self::BurnableSharesDecreased(inner) => {
10655                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10656                }
10657                Self::BurnableSharesIncreased(inner) => {
10658                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10659                }
10660                Self::Deposit(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner),
10661                Self::Initialized(inner) => {
10662                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10663                }
10664                Self::OwnershipTransferred(inner) => {
10665                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10666                }
10667                Self::Paused(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner),
10668                Self::StrategyAddedToDepositWhitelist(inner) => {
10669                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10670                }
10671                Self::StrategyRemovedFromDepositWhitelist(inner) => {
10672                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10673                }
10674                Self::StrategyWhitelisterChanged(inner) => {
10675                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10676                }
10677                Self::Unpaused(inner) => {
10678                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10679                }
10680            }
10681        }
10682    }
10683    use alloy::contract as alloy_contract;
10684    /**Creates a new wrapper around an on-chain [`StrategyManager`](self) contract instance.
10685
10686    See the [wrapper's documentation](`StrategyManagerInstance`) for more details.*/
10687    #[inline]
10688    pub const fn new<
10689        P: alloy_contract::private::Provider<N>,
10690        N: alloy_contract::private::Network,
10691    >(
10692        address: alloy_sol_types::private::Address,
10693        provider: P,
10694    ) -> StrategyManagerInstance<P, N> {
10695        StrategyManagerInstance::<P, N>::new(address, provider)
10696    }
10697    /**Deploys this contract using the given `provider` and constructor arguments, if any.
10698
10699    Returns a new instance of the contract, if the deployment was successful.
10700
10701    For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
10702    #[inline]
10703    pub fn deploy<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>(
10704        provider: P,
10705        _delegation: alloy::sol_types::private::Address,
10706        _pauserRegistry: alloy::sol_types::private::Address,
10707        _version: alloy::sol_types::private::String,
10708    ) -> impl ::core::future::Future<Output = alloy_contract::Result<StrategyManagerInstance<P, N>>>
10709    {
10710        StrategyManagerInstance::<P, N>::deploy(provider, _delegation, _pauserRegistry, _version)
10711    }
10712    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
10713    and constructor arguments, if any.
10714
10715    This is a simple wrapper around creating a `RawCallBuilder` with the data set to
10716    the bytecode concatenated with the constructor's ABI-encoded arguments.*/
10717    #[inline]
10718    pub fn deploy_builder<
10719        P: alloy_contract::private::Provider<N>,
10720        N: alloy_contract::private::Network,
10721    >(
10722        provider: P,
10723        _delegation: alloy::sol_types::private::Address,
10724        _pauserRegistry: alloy::sol_types::private::Address,
10725        _version: alloy::sol_types::private::String,
10726    ) -> alloy_contract::RawCallBuilder<P, N> {
10727        StrategyManagerInstance::<P, N>::deploy_builder(
10728            provider,
10729            _delegation,
10730            _pauserRegistry,
10731            _version,
10732        )
10733    }
10734    /**A [`StrategyManager`](self) instance.
10735
10736    Contains type-safe methods for interacting with an on-chain instance of the
10737    [`StrategyManager`](self) contract located at a given `address`, using a given
10738    provider `P`.
10739
10740    If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
10741    documentation on how to provide it), the `deploy` and `deploy_builder` methods can
10742    be used to deploy a new instance of the contract.
10743
10744    See the [module-level documentation](self) for all the available methods.*/
10745    #[derive(Clone)]
10746    pub struct StrategyManagerInstance<P, N = alloy_contract::private::Ethereum> {
10747        address: alloy_sol_types::private::Address,
10748        provider: P,
10749        _network: ::core::marker::PhantomData<N>,
10750    }
10751    #[automatically_derived]
10752    impl<P, N> ::core::fmt::Debug for StrategyManagerInstance<P, N> {
10753        #[inline]
10754        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
10755            f.debug_tuple("StrategyManagerInstance")
10756                .field(&self.address)
10757                .finish()
10758        }
10759    }
10760    /// Instantiation and getters/setters.
10761    #[automatically_derived]
10762    impl<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>
10763        StrategyManagerInstance<P, N>
10764    {
10765        /**Creates a new wrapper around an on-chain [`StrategyManager`](self) contract instance.
10766
10767        See the [wrapper's documentation](`StrategyManagerInstance`) for more details.*/
10768        #[inline]
10769        pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self {
10770            Self {
10771                address,
10772                provider,
10773                _network: ::core::marker::PhantomData,
10774            }
10775        }
10776        /**Deploys this contract using the given `provider` and constructor arguments, if any.
10777
10778        Returns a new instance of the contract, if the deployment was successful.
10779
10780        For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
10781        #[inline]
10782        pub async fn deploy(
10783            provider: P,
10784            _delegation: alloy::sol_types::private::Address,
10785            _pauserRegistry: alloy::sol_types::private::Address,
10786            _version: alloy::sol_types::private::String,
10787        ) -> alloy_contract::Result<StrategyManagerInstance<P, N>> {
10788            let call_builder =
10789                Self::deploy_builder(provider, _delegation, _pauserRegistry, _version);
10790            let contract_address = call_builder.deploy().await?;
10791            Ok(Self::new(contract_address, call_builder.provider))
10792        }
10793        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
10794        and constructor arguments, if any.
10795
10796        This is a simple wrapper around creating a `RawCallBuilder` with the data set to
10797        the bytecode concatenated with the constructor's ABI-encoded arguments.*/
10798        #[inline]
10799        pub fn deploy_builder(
10800            provider: P,
10801            _delegation: alloy::sol_types::private::Address,
10802            _pauserRegistry: alloy::sol_types::private::Address,
10803            _version: alloy::sol_types::private::String,
10804        ) -> alloy_contract::RawCallBuilder<P, N> {
10805            alloy_contract::RawCallBuilder::new_raw_deploy(
10806                provider,
10807                [
10808                    &BYTECODE[..],
10809                    &alloy_sol_types::SolConstructor::abi_encode(&constructorCall {
10810                        _delegation,
10811                        _pauserRegistry,
10812                        _version,
10813                    })[..],
10814                ]
10815                .concat()
10816                .into(),
10817            )
10818        }
10819        /// Returns a reference to the address.
10820        #[inline]
10821        pub const fn address(&self) -> &alloy_sol_types::private::Address {
10822            &self.address
10823        }
10824        /// Sets the address.
10825        #[inline]
10826        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
10827            self.address = address;
10828        }
10829        /// Sets the address and returns `self`.
10830        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
10831            self.set_address(address);
10832            self
10833        }
10834        /// Returns a reference to the provider.
10835        #[inline]
10836        pub const fn provider(&self) -> &P {
10837            &self.provider
10838        }
10839    }
10840    impl<P: ::core::clone::Clone, N> StrategyManagerInstance<&P, N> {
10841        /// Clones the provider and returns a new instance with the cloned provider.
10842        #[inline]
10843        pub fn with_cloned_provider(self) -> StrategyManagerInstance<P, N> {
10844            StrategyManagerInstance {
10845                address: self.address,
10846                provider: ::core::clone::Clone::clone(&self.provider),
10847                _network: ::core::marker::PhantomData,
10848            }
10849        }
10850    }
10851    /// Function calls.
10852    #[automatically_derived]
10853    impl<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>
10854        StrategyManagerInstance<P, N>
10855    {
10856        /// Creates a new call builder using this contract instance's provider and address.
10857        ///
10858        /// Note that the call can be any function call, not just those defined in this
10859        /// contract. Prefer using the other methods for building type-safe contract calls.
10860        pub fn call_builder<C: alloy_sol_types::SolCall>(
10861            &self,
10862            call: &C,
10863        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
10864            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
10865        }
10866        ///Creates a new call builder for the [`DEFAULT_BURN_ADDRESS`] function.
10867        pub fn DEFAULT_BURN_ADDRESS(
10868            &self,
10869        ) -> alloy_contract::SolCallBuilder<&P, DEFAULT_BURN_ADDRESSCall, N> {
10870            self.call_builder(&DEFAULT_BURN_ADDRESSCall)
10871        }
10872        ///Creates a new call builder for the [`DEPOSIT_TYPEHASH`] function.
10873        pub fn DEPOSIT_TYPEHASH(
10874            &self,
10875        ) -> alloy_contract::SolCallBuilder<&P, DEPOSIT_TYPEHASHCall, N> {
10876            self.call_builder(&DEPOSIT_TYPEHASHCall)
10877        }
10878        ///Creates a new call builder for the [`addShares`] function.
10879        pub fn addShares(
10880            &self,
10881            staker: alloy::sol_types::private::Address,
10882            strategy: alloy::sol_types::private::Address,
10883            shares: alloy::sol_types::private::primitives::aliases::U256,
10884        ) -> alloy_contract::SolCallBuilder<&P, addSharesCall, N> {
10885            self.call_builder(&addSharesCall {
10886                staker,
10887                strategy,
10888                shares,
10889            })
10890        }
10891        ///Creates a new call builder for the [`addStrategiesToDepositWhitelist`] function.
10892        pub fn addStrategiesToDepositWhitelist(
10893            &self,
10894            strategiesToWhitelist: alloy::sol_types::private::Vec<
10895                alloy::sol_types::private::Address,
10896            >,
10897        ) -> alloy_contract::SolCallBuilder<&P, addStrategiesToDepositWhitelistCall, N> {
10898            self.call_builder(&addStrategiesToDepositWhitelistCall {
10899                strategiesToWhitelist,
10900            })
10901        }
10902        ///Creates a new call builder for the [`burnShares`] function.
10903        pub fn burnShares(
10904            &self,
10905            strategy: alloy::sol_types::private::Address,
10906        ) -> alloy_contract::SolCallBuilder<&P, burnSharesCall, N> {
10907            self.call_builder(&burnSharesCall { strategy })
10908        }
10909        ///Creates a new call builder for the [`calculateStrategyDepositDigestHash`] function.
10910        pub fn calculateStrategyDepositDigestHash(
10911            &self,
10912            staker: alloy::sol_types::private::Address,
10913            strategy: alloy::sol_types::private::Address,
10914            token: alloy::sol_types::private::Address,
10915            amount: alloy::sol_types::private::primitives::aliases::U256,
10916            nonce: alloy::sol_types::private::primitives::aliases::U256,
10917            expiry: alloy::sol_types::private::primitives::aliases::U256,
10918        ) -> alloy_contract::SolCallBuilder<&P, calculateStrategyDepositDigestHashCall, N> {
10919            self.call_builder(&calculateStrategyDepositDigestHashCall {
10920                staker,
10921                strategy,
10922                token,
10923                amount,
10924                nonce,
10925                expiry,
10926            })
10927        }
10928        ///Creates a new call builder for the [`delegation`] function.
10929        pub fn delegation(&self) -> alloy_contract::SolCallBuilder<&P, delegationCall, N> {
10930            self.call_builder(&delegationCall)
10931        }
10932        ///Creates a new call builder for the [`depositIntoStrategy`] function.
10933        pub fn depositIntoStrategy(
10934            &self,
10935            strategy: alloy::sol_types::private::Address,
10936            token: alloy::sol_types::private::Address,
10937            amount: alloy::sol_types::private::primitives::aliases::U256,
10938        ) -> alloy_contract::SolCallBuilder<&P, depositIntoStrategyCall, N> {
10939            self.call_builder(&depositIntoStrategyCall {
10940                strategy,
10941                token,
10942                amount,
10943            })
10944        }
10945        ///Creates a new call builder for the [`depositIntoStrategyWithSignature`] function.
10946        pub fn depositIntoStrategyWithSignature(
10947            &self,
10948            strategy: alloy::sol_types::private::Address,
10949            token: alloy::sol_types::private::Address,
10950            amount: alloy::sol_types::private::primitives::aliases::U256,
10951            staker: alloy::sol_types::private::Address,
10952            expiry: alloy::sol_types::private::primitives::aliases::U256,
10953            signature: alloy::sol_types::private::Bytes,
10954        ) -> alloy_contract::SolCallBuilder<&P, depositIntoStrategyWithSignatureCall, N> {
10955            self.call_builder(&depositIntoStrategyWithSignatureCall {
10956                strategy,
10957                token,
10958                amount,
10959                staker,
10960                expiry,
10961                signature,
10962            })
10963        }
10964        ///Creates a new call builder for the [`domainSeparator`] function.
10965        pub fn domainSeparator(
10966            &self,
10967        ) -> alloy_contract::SolCallBuilder<&P, domainSeparatorCall, N> {
10968            self.call_builder(&domainSeparatorCall)
10969        }
10970        ///Creates a new call builder for the [`getBurnableShares`] function.
10971        pub fn getBurnableShares(
10972            &self,
10973            strategy: alloy::sol_types::private::Address,
10974        ) -> alloy_contract::SolCallBuilder<&P, getBurnableSharesCall, N> {
10975            self.call_builder(&getBurnableSharesCall { strategy })
10976        }
10977        ///Creates a new call builder for the [`getDeposits`] function.
10978        pub fn getDeposits(
10979            &self,
10980            staker: alloy::sol_types::private::Address,
10981        ) -> alloy_contract::SolCallBuilder<&P, getDepositsCall, N> {
10982            self.call_builder(&getDepositsCall { staker })
10983        }
10984        ///Creates a new call builder for the [`getStakerStrategyList`] function.
10985        pub fn getStakerStrategyList(
10986            &self,
10987            staker: alloy::sol_types::private::Address,
10988        ) -> alloy_contract::SolCallBuilder<&P, getStakerStrategyListCall, N> {
10989            self.call_builder(&getStakerStrategyListCall { staker })
10990        }
10991        ///Creates a new call builder for the [`getStrategiesWithBurnableShares`] function.
10992        pub fn getStrategiesWithBurnableShares(
10993            &self,
10994        ) -> alloy_contract::SolCallBuilder<&P, getStrategiesWithBurnableSharesCall, N> {
10995            self.call_builder(&getStrategiesWithBurnableSharesCall)
10996        }
10997        ///Creates a new call builder for the [`increaseBurnableShares`] function.
10998        pub fn increaseBurnableShares(
10999            &self,
11000            strategy: alloy::sol_types::private::Address,
11001            addedSharesToBurn: alloy::sol_types::private::primitives::aliases::U256,
11002        ) -> alloy_contract::SolCallBuilder<&P, increaseBurnableSharesCall, N> {
11003            self.call_builder(&increaseBurnableSharesCall {
11004                strategy,
11005                addedSharesToBurn,
11006            })
11007        }
11008        ///Creates a new call builder for the [`initialize`] function.
11009        pub fn initialize(
11010            &self,
11011            initialOwner: alloy::sol_types::private::Address,
11012            initialStrategyWhitelister: alloy::sol_types::private::Address,
11013            initialPausedStatus: alloy::sol_types::private::primitives::aliases::U256,
11014        ) -> alloy_contract::SolCallBuilder<&P, initializeCall, N> {
11015            self.call_builder(&initializeCall {
11016                initialOwner,
11017                initialStrategyWhitelister,
11018                initialPausedStatus,
11019            })
11020        }
11021        ///Creates a new call builder for the [`nonces`] function.
11022        pub fn nonces(
11023            &self,
11024            signer: alloy::sol_types::private::Address,
11025        ) -> alloy_contract::SolCallBuilder<&P, noncesCall, N> {
11026            self.call_builder(&noncesCall { signer })
11027        }
11028        ///Creates a new call builder for the [`owner`] function.
11029        pub fn owner(&self) -> alloy_contract::SolCallBuilder<&P, ownerCall, N> {
11030            self.call_builder(&ownerCall)
11031        }
11032        ///Creates a new call builder for the [`pause`] function.
11033        pub fn pause(
11034            &self,
11035            newPausedStatus: alloy::sol_types::private::primitives::aliases::U256,
11036        ) -> alloy_contract::SolCallBuilder<&P, pauseCall, N> {
11037            self.call_builder(&pauseCall { newPausedStatus })
11038        }
11039        ///Creates a new call builder for the [`pauseAll`] function.
11040        pub fn pauseAll(&self) -> alloy_contract::SolCallBuilder<&P, pauseAllCall, N> {
11041            self.call_builder(&pauseAllCall)
11042        }
11043        ///Creates a new call builder for the [`paused_0`] function.
11044        pub fn paused_0(&self, index: u8) -> alloy_contract::SolCallBuilder<&P, paused_0Call, N> {
11045            self.call_builder(&paused_0Call { index })
11046        }
11047        ///Creates a new call builder for the [`paused_1`] function.
11048        pub fn paused_1(&self) -> alloy_contract::SolCallBuilder<&P, paused_1Call, N> {
11049            self.call_builder(&paused_1Call)
11050        }
11051        ///Creates a new call builder for the [`pauserRegistry`] function.
11052        pub fn pauserRegistry(&self) -> alloy_contract::SolCallBuilder<&P, pauserRegistryCall, N> {
11053            self.call_builder(&pauserRegistryCall)
11054        }
11055        ///Creates a new call builder for the [`removeDepositShares`] function.
11056        pub fn removeDepositShares(
11057            &self,
11058            staker: alloy::sol_types::private::Address,
11059            strategy: alloy::sol_types::private::Address,
11060            depositSharesToRemove: alloy::sol_types::private::primitives::aliases::U256,
11061        ) -> alloy_contract::SolCallBuilder<&P, removeDepositSharesCall, N> {
11062            self.call_builder(&removeDepositSharesCall {
11063                staker,
11064                strategy,
11065                depositSharesToRemove,
11066            })
11067        }
11068        ///Creates a new call builder for the [`removeStrategiesFromDepositWhitelist`] function.
11069        pub fn removeStrategiesFromDepositWhitelist(
11070            &self,
11071            strategiesToRemoveFromWhitelist: alloy::sol_types::private::Vec<
11072                alloy::sol_types::private::Address,
11073            >,
11074        ) -> alloy_contract::SolCallBuilder<&P, removeStrategiesFromDepositWhitelistCall, N>
11075        {
11076            self.call_builder(&removeStrategiesFromDepositWhitelistCall {
11077                strategiesToRemoveFromWhitelist,
11078            })
11079        }
11080        ///Creates a new call builder for the [`renounceOwnership`] function.
11081        pub fn renounceOwnership(
11082            &self,
11083        ) -> alloy_contract::SolCallBuilder<&P, renounceOwnershipCall, N> {
11084            self.call_builder(&renounceOwnershipCall)
11085        }
11086        ///Creates a new call builder for the [`setStrategyWhitelister`] function.
11087        pub fn setStrategyWhitelister(
11088            &self,
11089            newStrategyWhitelister: alloy::sol_types::private::Address,
11090        ) -> alloy_contract::SolCallBuilder<&P, setStrategyWhitelisterCall, N> {
11091            self.call_builder(&setStrategyWhitelisterCall {
11092                newStrategyWhitelister,
11093            })
11094        }
11095        ///Creates a new call builder for the [`stakerDepositShares`] function.
11096        pub fn stakerDepositShares(
11097            &self,
11098            staker: alloy::sol_types::private::Address,
11099            strategy: alloy::sol_types::private::Address,
11100        ) -> alloy_contract::SolCallBuilder<&P, stakerDepositSharesCall, N> {
11101            self.call_builder(&stakerDepositSharesCall { staker, strategy })
11102        }
11103        ///Creates a new call builder for the [`stakerStrategyList`] function.
11104        pub fn stakerStrategyList(
11105            &self,
11106            staker: alloy::sol_types::private::Address,
11107            _1: alloy::sol_types::private::primitives::aliases::U256,
11108        ) -> alloy_contract::SolCallBuilder<&P, stakerStrategyListCall, N> {
11109            self.call_builder(&stakerStrategyListCall { staker, _1 })
11110        }
11111        ///Creates a new call builder for the [`stakerStrategyListLength`] function.
11112        pub fn stakerStrategyListLength(
11113            &self,
11114            staker: alloy::sol_types::private::Address,
11115        ) -> alloy_contract::SolCallBuilder<&P, stakerStrategyListLengthCall, N> {
11116            self.call_builder(&stakerStrategyListLengthCall { staker })
11117        }
11118        ///Creates a new call builder for the [`strategyIsWhitelistedForDeposit`] function.
11119        pub fn strategyIsWhitelistedForDeposit(
11120            &self,
11121            strategy: alloy::sol_types::private::Address,
11122        ) -> alloy_contract::SolCallBuilder<&P, strategyIsWhitelistedForDepositCall, N> {
11123            self.call_builder(&strategyIsWhitelistedForDepositCall { strategy })
11124        }
11125        ///Creates a new call builder for the [`strategyWhitelister`] function.
11126        pub fn strategyWhitelister(
11127            &self,
11128        ) -> alloy_contract::SolCallBuilder<&P, strategyWhitelisterCall, N> {
11129            self.call_builder(&strategyWhitelisterCall)
11130        }
11131        ///Creates a new call builder for the [`transferOwnership`] function.
11132        pub fn transferOwnership(
11133            &self,
11134            newOwner: alloy::sol_types::private::Address,
11135        ) -> alloy_contract::SolCallBuilder<&P, transferOwnershipCall, N> {
11136            self.call_builder(&transferOwnershipCall { newOwner })
11137        }
11138        ///Creates a new call builder for the [`unpause`] function.
11139        pub fn unpause(
11140            &self,
11141            newPausedStatus: alloy::sol_types::private::primitives::aliases::U256,
11142        ) -> alloy_contract::SolCallBuilder<&P, unpauseCall, N> {
11143            self.call_builder(&unpauseCall { newPausedStatus })
11144        }
11145        ///Creates a new call builder for the [`version`] function.
11146        pub fn version(&self) -> alloy_contract::SolCallBuilder<&P, versionCall, N> {
11147            self.call_builder(&versionCall)
11148        }
11149        ///Creates a new call builder for the [`withdrawSharesAsTokens`] function.
11150        pub fn withdrawSharesAsTokens(
11151            &self,
11152            staker: alloy::sol_types::private::Address,
11153            strategy: alloy::sol_types::private::Address,
11154            token: alloy::sol_types::private::Address,
11155            shares: alloy::sol_types::private::primitives::aliases::U256,
11156        ) -> alloy_contract::SolCallBuilder<&P, withdrawSharesAsTokensCall, N> {
11157            self.call_builder(&withdrawSharesAsTokensCall {
11158                staker,
11159                strategy,
11160                token,
11161                shares,
11162            })
11163        }
11164    }
11165    /// Event filters.
11166    #[automatically_derived]
11167    impl<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>
11168        StrategyManagerInstance<P, N>
11169    {
11170        /// Creates a new event filter using this contract instance's provider and address.
11171        ///
11172        /// Note that the type can be any event, not just those defined in this contract.
11173        /// Prefer using the other methods for building type-safe event filters.
11174        pub fn event_filter<E: alloy_sol_types::SolEvent>(
11175            &self,
11176        ) -> alloy_contract::Event<&P, E, N> {
11177            alloy_contract::Event::new_sol(&self.provider, &self.address)
11178        }
11179        ///Creates a new event filter for the [`BurnableSharesDecreased`] event.
11180        pub fn BurnableSharesDecreased_filter(
11181            &self,
11182        ) -> alloy_contract::Event<&P, BurnableSharesDecreased, N> {
11183            self.event_filter::<BurnableSharesDecreased>()
11184        }
11185        ///Creates a new event filter for the [`BurnableSharesIncreased`] event.
11186        pub fn BurnableSharesIncreased_filter(
11187            &self,
11188        ) -> alloy_contract::Event<&P, BurnableSharesIncreased, N> {
11189            self.event_filter::<BurnableSharesIncreased>()
11190        }
11191        ///Creates a new event filter for the [`Deposit`] event.
11192        pub fn Deposit_filter(&self) -> alloy_contract::Event<&P, Deposit, N> {
11193            self.event_filter::<Deposit>()
11194        }
11195        ///Creates a new event filter for the [`Initialized`] event.
11196        pub fn Initialized_filter(&self) -> alloy_contract::Event<&P, Initialized, N> {
11197            self.event_filter::<Initialized>()
11198        }
11199        ///Creates a new event filter for the [`OwnershipTransferred`] event.
11200        pub fn OwnershipTransferred_filter(
11201            &self,
11202        ) -> alloy_contract::Event<&P, OwnershipTransferred, N> {
11203            self.event_filter::<OwnershipTransferred>()
11204        }
11205        ///Creates a new event filter for the [`Paused`] event.
11206        pub fn Paused_filter(&self) -> alloy_contract::Event<&P, Paused, N> {
11207            self.event_filter::<Paused>()
11208        }
11209        ///Creates a new event filter for the [`StrategyAddedToDepositWhitelist`] event.
11210        pub fn StrategyAddedToDepositWhitelist_filter(
11211            &self,
11212        ) -> alloy_contract::Event<&P, StrategyAddedToDepositWhitelist, N> {
11213            self.event_filter::<StrategyAddedToDepositWhitelist>()
11214        }
11215        ///Creates a new event filter for the [`StrategyRemovedFromDepositWhitelist`] event.
11216        pub fn StrategyRemovedFromDepositWhitelist_filter(
11217            &self,
11218        ) -> alloy_contract::Event<&P, StrategyRemovedFromDepositWhitelist, N> {
11219            self.event_filter::<StrategyRemovedFromDepositWhitelist>()
11220        }
11221        ///Creates a new event filter for the [`StrategyWhitelisterChanged`] event.
11222        pub fn StrategyWhitelisterChanged_filter(
11223            &self,
11224        ) -> alloy_contract::Event<&P, StrategyWhitelisterChanged, N> {
11225            self.event_filter::<StrategyWhitelisterChanged>()
11226        }
11227        ///Creates a new event filter for the [`Unpaused`] event.
11228        pub fn Unpaused_filter(&self) -> alloy_contract::Event<&P, Unpaused, N> {
11229            self.event_filter::<Unpaused>()
11230        }
11231    }
11232}