arbiter_bindings/bindings/
weth.rs

1pub use weth::*;
2/// This module was auto-generated with ethers-rs Abigen.
3/// More information at: <https://github.com/gakonst/ethers-rs>
4#[allow(
5    clippy::enum_variant_names,
6    clippy::too_many_arguments,
7    clippy::upper_case_acronyms,
8    clippy::type_complexity,
9    dead_code,
10    non_camel_case_types,
11)]
12pub mod weth {
13    #[allow(deprecated)]
14    fn __abi() -> ::ethers::core::abi::Abi {
15        ::ethers::core::abi::ethabi::Contract {
16            constructor: ::core::option::Option::None,
17            functions: ::core::convert::From::from([
18                (
19                    ::std::borrow::ToOwned::to_owned("DOMAIN_SEPARATOR"),
20                    ::std::vec![
21                        ::ethers::core::abi::ethabi::Function {
22                            name: ::std::borrow::ToOwned::to_owned("DOMAIN_SEPARATOR"),
23                            inputs: ::std::vec![],
24                            outputs: ::std::vec![
25                                ::ethers::core::abi::ethabi::Param {
26                                    name: ::std::string::String::new(),
27                                    kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(
28                                        32usize,
29                                    ),
30                                    internal_type: ::core::option::Option::Some(
31                                        ::std::borrow::ToOwned::to_owned("bytes32"),
32                                    ),
33                                },
34                            ],
35                            constant: ::core::option::Option::None,
36                            state_mutability: ::ethers::core::abi::ethabi::StateMutability::View,
37                        },
38                    ],
39                ),
40                (
41                    ::std::borrow::ToOwned::to_owned("allowance"),
42                    ::std::vec![
43                        ::ethers::core::abi::ethabi::Function {
44                            name: ::std::borrow::ToOwned::to_owned("allowance"),
45                            inputs: ::std::vec![
46                                ::ethers::core::abi::ethabi::Param {
47                                    name: ::std::string::String::new(),
48                                    kind: ::ethers::core::abi::ethabi::ParamType::Address,
49                                    internal_type: ::core::option::Option::Some(
50                                        ::std::borrow::ToOwned::to_owned("address"),
51                                    ),
52                                },
53                                ::ethers::core::abi::ethabi::Param {
54                                    name: ::std::string::String::new(),
55                                    kind: ::ethers::core::abi::ethabi::ParamType::Address,
56                                    internal_type: ::core::option::Option::Some(
57                                        ::std::borrow::ToOwned::to_owned("address"),
58                                    ),
59                                },
60                            ],
61                            outputs: ::std::vec![
62                                ::ethers::core::abi::ethabi::Param {
63                                    name: ::std::string::String::new(),
64                                    kind: ::ethers::core::abi::ethabi::ParamType::Uint(
65                                        256usize,
66                                    ),
67                                    internal_type: ::core::option::Option::Some(
68                                        ::std::borrow::ToOwned::to_owned("uint256"),
69                                    ),
70                                },
71                            ],
72                            constant: ::core::option::Option::None,
73                            state_mutability: ::ethers::core::abi::ethabi::StateMutability::View,
74                        },
75                    ],
76                ),
77                (
78                    ::std::borrow::ToOwned::to_owned("approve"),
79                    ::std::vec![
80                        ::ethers::core::abi::ethabi::Function {
81                            name: ::std::borrow::ToOwned::to_owned("approve"),
82                            inputs: ::std::vec![
83                                ::ethers::core::abi::ethabi::Param {
84                                    name: ::std::borrow::ToOwned::to_owned("spender"),
85                                    kind: ::ethers::core::abi::ethabi::ParamType::Address,
86                                    internal_type: ::core::option::Option::Some(
87                                        ::std::borrow::ToOwned::to_owned("address"),
88                                    ),
89                                },
90                                ::ethers::core::abi::ethabi::Param {
91                                    name: ::std::borrow::ToOwned::to_owned("amount"),
92                                    kind: ::ethers::core::abi::ethabi::ParamType::Uint(
93                                        256usize,
94                                    ),
95                                    internal_type: ::core::option::Option::Some(
96                                        ::std::borrow::ToOwned::to_owned("uint256"),
97                                    ),
98                                },
99                            ],
100                            outputs: ::std::vec![
101                                ::ethers::core::abi::ethabi::Param {
102                                    name: ::std::string::String::new(),
103                                    kind: ::ethers::core::abi::ethabi::ParamType::Bool,
104                                    internal_type: ::core::option::Option::Some(
105                                        ::std::borrow::ToOwned::to_owned("bool"),
106                                    ),
107                                },
108                            ],
109                            constant: ::core::option::Option::None,
110                            state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable,
111                        },
112                    ],
113                ),
114                (
115                    ::std::borrow::ToOwned::to_owned("balanceOf"),
116                    ::std::vec![
117                        ::ethers::core::abi::ethabi::Function {
118                            name: ::std::borrow::ToOwned::to_owned("balanceOf"),
119                            inputs: ::std::vec![
120                                ::ethers::core::abi::ethabi::Param {
121                                    name: ::std::string::String::new(),
122                                    kind: ::ethers::core::abi::ethabi::ParamType::Address,
123                                    internal_type: ::core::option::Option::Some(
124                                        ::std::borrow::ToOwned::to_owned("address"),
125                                    ),
126                                },
127                            ],
128                            outputs: ::std::vec![
129                                ::ethers::core::abi::ethabi::Param {
130                                    name: ::std::string::String::new(),
131                                    kind: ::ethers::core::abi::ethabi::ParamType::Uint(
132                                        256usize,
133                                    ),
134                                    internal_type: ::core::option::Option::Some(
135                                        ::std::borrow::ToOwned::to_owned("uint256"),
136                                    ),
137                                },
138                            ],
139                            constant: ::core::option::Option::None,
140                            state_mutability: ::ethers::core::abi::ethabi::StateMutability::View,
141                        },
142                    ],
143                ),
144                (
145                    ::std::borrow::ToOwned::to_owned("decimals"),
146                    ::std::vec![
147                        ::ethers::core::abi::ethabi::Function {
148                            name: ::std::borrow::ToOwned::to_owned("decimals"),
149                            inputs: ::std::vec![],
150                            outputs: ::std::vec![
151                                ::ethers::core::abi::ethabi::Param {
152                                    name: ::std::string::String::new(),
153                                    kind: ::ethers::core::abi::ethabi::ParamType::Uint(8usize),
154                                    internal_type: ::core::option::Option::Some(
155                                        ::std::borrow::ToOwned::to_owned("uint8"),
156                                    ),
157                                },
158                            ],
159                            constant: ::core::option::Option::None,
160                            state_mutability: ::ethers::core::abi::ethabi::StateMutability::View,
161                        },
162                    ],
163                ),
164                (
165                    ::std::borrow::ToOwned::to_owned("deposit"),
166                    ::std::vec![
167                        ::ethers::core::abi::ethabi::Function {
168                            name: ::std::borrow::ToOwned::to_owned("deposit"),
169                            inputs: ::std::vec![],
170                            outputs: ::std::vec![],
171                            constant: ::core::option::Option::None,
172                            state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable,
173                        },
174                    ],
175                ),
176                (
177                    ::std::borrow::ToOwned::to_owned("name"),
178                    ::std::vec![
179                        ::ethers::core::abi::ethabi::Function {
180                            name: ::std::borrow::ToOwned::to_owned("name"),
181                            inputs: ::std::vec![],
182                            outputs: ::std::vec![
183                                ::ethers::core::abi::ethabi::Param {
184                                    name: ::std::string::String::new(),
185                                    kind: ::ethers::core::abi::ethabi::ParamType::String,
186                                    internal_type: ::core::option::Option::Some(
187                                        ::std::borrow::ToOwned::to_owned("string"),
188                                    ),
189                                },
190                            ],
191                            constant: ::core::option::Option::None,
192                            state_mutability: ::ethers::core::abi::ethabi::StateMutability::View,
193                        },
194                    ],
195                ),
196                (
197                    ::std::borrow::ToOwned::to_owned("nonces"),
198                    ::std::vec![
199                        ::ethers::core::abi::ethabi::Function {
200                            name: ::std::borrow::ToOwned::to_owned("nonces"),
201                            inputs: ::std::vec![
202                                ::ethers::core::abi::ethabi::Param {
203                                    name: ::std::string::String::new(),
204                                    kind: ::ethers::core::abi::ethabi::ParamType::Address,
205                                    internal_type: ::core::option::Option::Some(
206                                        ::std::borrow::ToOwned::to_owned("address"),
207                                    ),
208                                },
209                            ],
210                            outputs: ::std::vec![
211                                ::ethers::core::abi::ethabi::Param {
212                                    name: ::std::string::String::new(),
213                                    kind: ::ethers::core::abi::ethabi::ParamType::Uint(
214                                        256usize,
215                                    ),
216                                    internal_type: ::core::option::Option::Some(
217                                        ::std::borrow::ToOwned::to_owned("uint256"),
218                                    ),
219                                },
220                            ],
221                            constant: ::core::option::Option::None,
222                            state_mutability: ::ethers::core::abi::ethabi::StateMutability::View,
223                        },
224                    ],
225                ),
226                (
227                    ::std::borrow::ToOwned::to_owned("permit"),
228                    ::std::vec![
229                        ::ethers::core::abi::ethabi::Function {
230                            name: ::std::borrow::ToOwned::to_owned("permit"),
231                            inputs: ::std::vec![
232                                ::ethers::core::abi::ethabi::Param {
233                                    name: ::std::borrow::ToOwned::to_owned("owner"),
234                                    kind: ::ethers::core::abi::ethabi::ParamType::Address,
235                                    internal_type: ::core::option::Option::Some(
236                                        ::std::borrow::ToOwned::to_owned("address"),
237                                    ),
238                                },
239                                ::ethers::core::abi::ethabi::Param {
240                                    name: ::std::borrow::ToOwned::to_owned("spender"),
241                                    kind: ::ethers::core::abi::ethabi::ParamType::Address,
242                                    internal_type: ::core::option::Option::Some(
243                                        ::std::borrow::ToOwned::to_owned("address"),
244                                    ),
245                                },
246                                ::ethers::core::abi::ethabi::Param {
247                                    name: ::std::borrow::ToOwned::to_owned("value"),
248                                    kind: ::ethers::core::abi::ethabi::ParamType::Uint(
249                                        256usize,
250                                    ),
251                                    internal_type: ::core::option::Option::Some(
252                                        ::std::borrow::ToOwned::to_owned("uint256"),
253                                    ),
254                                },
255                                ::ethers::core::abi::ethabi::Param {
256                                    name: ::std::borrow::ToOwned::to_owned("deadline"),
257                                    kind: ::ethers::core::abi::ethabi::ParamType::Uint(
258                                        256usize,
259                                    ),
260                                    internal_type: ::core::option::Option::Some(
261                                        ::std::borrow::ToOwned::to_owned("uint256"),
262                                    ),
263                                },
264                                ::ethers::core::abi::ethabi::Param {
265                                    name: ::std::borrow::ToOwned::to_owned("v"),
266                                    kind: ::ethers::core::abi::ethabi::ParamType::Uint(8usize),
267                                    internal_type: ::core::option::Option::Some(
268                                        ::std::borrow::ToOwned::to_owned("uint8"),
269                                    ),
270                                },
271                                ::ethers::core::abi::ethabi::Param {
272                                    name: ::std::borrow::ToOwned::to_owned("r"),
273                                    kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(
274                                        32usize,
275                                    ),
276                                    internal_type: ::core::option::Option::Some(
277                                        ::std::borrow::ToOwned::to_owned("bytes32"),
278                                    ),
279                                },
280                                ::ethers::core::abi::ethabi::Param {
281                                    name: ::std::borrow::ToOwned::to_owned("s"),
282                                    kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(
283                                        32usize,
284                                    ),
285                                    internal_type: ::core::option::Option::Some(
286                                        ::std::borrow::ToOwned::to_owned("bytes32"),
287                                    ),
288                                },
289                            ],
290                            outputs: ::std::vec![],
291                            constant: ::core::option::Option::None,
292                            state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable,
293                        },
294                    ],
295                ),
296                (
297                    ::std::borrow::ToOwned::to_owned("symbol"),
298                    ::std::vec![
299                        ::ethers::core::abi::ethabi::Function {
300                            name: ::std::borrow::ToOwned::to_owned("symbol"),
301                            inputs: ::std::vec![],
302                            outputs: ::std::vec![
303                                ::ethers::core::abi::ethabi::Param {
304                                    name: ::std::string::String::new(),
305                                    kind: ::ethers::core::abi::ethabi::ParamType::String,
306                                    internal_type: ::core::option::Option::Some(
307                                        ::std::borrow::ToOwned::to_owned("string"),
308                                    ),
309                                },
310                            ],
311                            constant: ::core::option::Option::None,
312                            state_mutability: ::ethers::core::abi::ethabi::StateMutability::View,
313                        },
314                    ],
315                ),
316                (
317                    ::std::borrow::ToOwned::to_owned("totalSupply"),
318                    ::std::vec![
319                        ::ethers::core::abi::ethabi::Function {
320                            name: ::std::borrow::ToOwned::to_owned("totalSupply"),
321                            inputs: ::std::vec![],
322                            outputs: ::std::vec![
323                                ::ethers::core::abi::ethabi::Param {
324                                    name: ::std::string::String::new(),
325                                    kind: ::ethers::core::abi::ethabi::ParamType::Uint(
326                                        256usize,
327                                    ),
328                                    internal_type: ::core::option::Option::Some(
329                                        ::std::borrow::ToOwned::to_owned("uint256"),
330                                    ),
331                                },
332                            ],
333                            constant: ::core::option::Option::None,
334                            state_mutability: ::ethers::core::abi::ethabi::StateMutability::View,
335                        },
336                    ],
337                ),
338                (
339                    ::std::borrow::ToOwned::to_owned("transfer"),
340                    ::std::vec![
341                        ::ethers::core::abi::ethabi::Function {
342                            name: ::std::borrow::ToOwned::to_owned("transfer"),
343                            inputs: ::std::vec![
344                                ::ethers::core::abi::ethabi::Param {
345                                    name: ::std::borrow::ToOwned::to_owned("to"),
346                                    kind: ::ethers::core::abi::ethabi::ParamType::Address,
347                                    internal_type: ::core::option::Option::Some(
348                                        ::std::borrow::ToOwned::to_owned("address"),
349                                    ),
350                                },
351                                ::ethers::core::abi::ethabi::Param {
352                                    name: ::std::borrow::ToOwned::to_owned("amount"),
353                                    kind: ::ethers::core::abi::ethabi::ParamType::Uint(
354                                        256usize,
355                                    ),
356                                    internal_type: ::core::option::Option::Some(
357                                        ::std::borrow::ToOwned::to_owned("uint256"),
358                                    ),
359                                },
360                            ],
361                            outputs: ::std::vec![
362                                ::ethers::core::abi::ethabi::Param {
363                                    name: ::std::string::String::new(),
364                                    kind: ::ethers::core::abi::ethabi::ParamType::Bool,
365                                    internal_type: ::core::option::Option::Some(
366                                        ::std::borrow::ToOwned::to_owned("bool"),
367                                    ),
368                                },
369                            ],
370                            constant: ::core::option::Option::None,
371                            state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable,
372                        },
373                    ],
374                ),
375                (
376                    ::std::borrow::ToOwned::to_owned("transferFrom"),
377                    ::std::vec![
378                        ::ethers::core::abi::ethabi::Function {
379                            name: ::std::borrow::ToOwned::to_owned("transferFrom"),
380                            inputs: ::std::vec![
381                                ::ethers::core::abi::ethabi::Param {
382                                    name: ::std::borrow::ToOwned::to_owned("from"),
383                                    kind: ::ethers::core::abi::ethabi::ParamType::Address,
384                                    internal_type: ::core::option::Option::Some(
385                                        ::std::borrow::ToOwned::to_owned("address"),
386                                    ),
387                                },
388                                ::ethers::core::abi::ethabi::Param {
389                                    name: ::std::borrow::ToOwned::to_owned("to"),
390                                    kind: ::ethers::core::abi::ethabi::ParamType::Address,
391                                    internal_type: ::core::option::Option::Some(
392                                        ::std::borrow::ToOwned::to_owned("address"),
393                                    ),
394                                },
395                                ::ethers::core::abi::ethabi::Param {
396                                    name: ::std::borrow::ToOwned::to_owned("amount"),
397                                    kind: ::ethers::core::abi::ethabi::ParamType::Uint(
398                                        256usize,
399                                    ),
400                                    internal_type: ::core::option::Option::Some(
401                                        ::std::borrow::ToOwned::to_owned("uint256"),
402                                    ),
403                                },
404                            ],
405                            outputs: ::std::vec![
406                                ::ethers::core::abi::ethabi::Param {
407                                    name: ::std::string::String::new(),
408                                    kind: ::ethers::core::abi::ethabi::ParamType::Bool,
409                                    internal_type: ::core::option::Option::Some(
410                                        ::std::borrow::ToOwned::to_owned("bool"),
411                                    ),
412                                },
413                            ],
414                            constant: ::core::option::Option::None,
415                            state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable,
416                        },
417                    ],
418                ),
419                (
420                    ::std::borrow::ToOwned::to_owned("withdraw"),
421                    ::std::vec![
422                        ::ethers::core::abi::ethabi::Function {
423                            name: ::std::borrow::ToOwned::to_owned("withdraw"),
424                            inputs: ::std::vec![
425                                ::ethers::core::abi::ethabi::Param {
426                                    name: ::std::borrow::ToOwned::to_owned("amount"),
427                                    kind: ::ethers::core::abi::ethabi::ParamType::Uint(
428                                        256usize,
429                                    ),
430                                    internal_type: ::core::option::Option::Some(
431                                        ::std::borrow::ToOwned::to_owned("uint256"),
432                                    ),
433                                },
434                            ],
435                            outputs: ::std::vec![],
436                            constant: ::core::option::Option::None,
437                            state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable,
438                        },
439                    ],
440                ),
441            ]),
442            events: ::core::convert::From::from([
443                (
444                    ::std::borrow::ToOwned::to_owned("Approval"),
445                    ::std::vec![
446                        ::ethers::core::abi::ethabi::Event {
447                            name: ::std::borrow::ToOwned::to_owned("Approval"),
448                            inputs: ::std::vec![
449                                ::ethers::core::abi::ethabi::EventParam {
450                                    name: ::std::borrow::ToOwned::to_owned("owner"),
451                                    kind: ::ethers::core::abi::ethabi::ParamType::Address,
452                                    indexed: true,
453                                },
454                                ::ethers::core::abi::ethabi::EventParam {
455                                    name: ::std::borrow::ToOwned::to_owned("spender"),
456                                    kind: ::ethers::core::abi::ethabi::ParamType::Address,
457                                    indexed: true,
458                                },
459                                ::ethers::core::abi::ethabi::EventParam {
460                                    name: ::std::borrow::ToOwned::to_owned("amount"),
461                                    kind: ::ethers::core::abi::ethabi::ParamType::Uint(
462                                        256usize,
463                                    ),
464                                    indexed: false,
465                                },
466                            ],
467                            anonymous: false,
468                        },
469                    ],
470                ),
471                (
472                    ::std::borrow::ToOwned::to_owned("Deposit"),
473                    ::std::vec![
474                        ::ethers::core::abi::ethabi::Event {
475                            name: ::std::borrow::ToOwned::to_owned("Deposit"),
476                            inputs: ::std::vec![
477                                ::ethers::core::abi::ethabi::EventParam {
478                                    name: ::std::borrow::ToOwned::to_owned("from"),
479                                    kind: ::ethers::core::abi::ethabi::ParamType::Address,
480                                    indexed: true,
481                                },
482                                ::ethers::core::abi::ethabi::EventParam {
483                                    name: ::std::borrow::ToOwned::to_owned("amount"),
484                                    kind: ::ethers::core::abi::ethabi::ParamType::Uint(
485                                        256usize,
486                                    ),
487                                    indexed: false,
488                                },
489                            ],
490                            anonymous: false,
491                        },
492                    ],
493                ),
494                (
495                    ::std::borrow::ToOwned::to_owned("Transfer"),
496                    ::std::vec![
497                        ::ethers::core::abi::ethabi::Event {
498                            name: ::std::borrow::ToOwned::to_owned("Transfer"),
499                            inputs: ::std::vec![
500                                ::ethers::core::abi::ethabi::EventParam {
501                                    name: ::std::borrow::ToOwned::to_owned("from"),
502                                    kind: ::ethers::core::abi::ethabi::ParamType::Address,
503                                    indexed: true,
504                                },
505                                ::ethers::core::abi::ethabi::EventParam {
506                                    name: ::std::borrow::ToOwned::to_owned("to"),
507                                    kind: ::ethers::core::abi::ethabi::ParamType::Address,
508                                    indexed: true,
509                                },
510                                ::ethers::core::abi::ethabi::EventParam {
511                                    name: ::std::borrow::ToOwned::to_owned("amount"),
512                                    kind: ::ethers::core::abi::ethabi::ParamType::Uint(
513                                        256usize,
514                                    ),
515                                    indexed: false,
516                                },
517                            ],
518                            anonymous: false,
519                        },
520                    ],
521                ),
522                (
523                    ::std::borrow::ToOwned::to_owned("Withdrawal"),
524                    ::std::vec![
525                        ::ethers::core::abi::ethabi::Event {
526                            name: ::std::borrow::ToOwned::to_owned("Withdrawal"),
527                            inputs: ::std::vec![
528                                ::ethers::core::abi::ethabi::EventParam {
529                                    name: ::std::borrow::ToOwned::to_owned("to"),
530                                    kind: ::ethers::core::abi::ethabi::ParamType::Address,
531                                    indexed: true,
532                                },
533                                ::ethers::core::abi::ethabi::EventParam {
534                                    name: ::std::borrow::ToOwned::to_owned("amount"),
535                                    kind: ::ethers::core::abi::ethabi::ParamType::Uint(
536                                        256usize,
537                                    ),
538                                    indexed: false,
539                                },
540                            ],
541                            anonymous: false,
542                        },
543                    ],
544                ),
545            ]),
546            errors: ::std::collections::BTreeMap::new(),
547            receive: true,
548            fallback: false,
549        }
550    }
551    ///The parsed JSON ABI of the contract.
552    pub static WETH_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new(
553        __abi,
554    );
555    #[rustfmt::skip]
556    const __BYTECODE: &[u8] = b"`\xE0`@R4\x80\x15b\0\0^W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FEther sent to non-payable functi`D\x82\x01\x90\x81Ra7\xB7`\xF1\x1B`d\x83\x01R`\x84\x82\xFD[P`@Q\x80`@\x01`@R\x80`\r\x81R` \x01l+\xB90\xB882\xB2\x10\"\xBA42\xB9`\x99\x1B\x81RP`@Q\x80`@\x01`@R\x80`\x04\x81R` \x01c\n\xE8\xAA\x89`\xE3\x1B\x81RP`\x12\x82`\0\x90\x81b\0\0\xB5\x91\x90b\0\x02(V[P`\x01b\0\0\xC4\x83\x82b\0\x02(V[P`\xFF\x81\x16`\x80RF`\xA0Rb\0\0\xDAb\0\0\xE7V[`\xC0RPb\0\x03r\x91PPV[`\0\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F`\0`@Qb\0\x01\x1B\x91\x90b\0\x02\xF4V[`@\x80Q\x91\x82\x90\x03\x82 ` \x83\x01\x93\x90\x93R\x81\x01\x91\x90\x91R\x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6``\x82\x01RF`\x80\x82\x01R0`\xA0\x82\x01R`\xC0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x90V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x01\xAEW`\x7F\x82\x16\x91P[` \x82\x10\x81\x03b\0\x01\xCFWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\x1F\x82\x11\x15b\0\x02#W`\0\x81\x81R` \x81 `\x1F\x85\x01`\x05\x1C\x81\x01` \x86\x10\x15b\0\x01\xFEWP\x80[`\x1F\x85\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15b\0\x02\x1FW\x82\x81U`\x01\x01b\0\x02\nV[PPP[PPPV[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x02DWb\0\x02Db\0\x01\x83V[b\0\x02\\\x81b\0\x02U\x84Tb\0\x01\x99V[\x84b\0\x01\xD5V[` \x80`\x1F\x83\x11`\x01\x81\x14b\0\x02\x94W`\0\x84\x15b\0\x02{WP\x85\x83\x01Q[`\0\x19`\x03\x86\x90\x1B\x1C\x19\x16`\x01\x85\x90\x1B\x17\x85Ub\0\x02\x1FV[`\0\x85\x81R` \x81 `\x1F\x19\x86\x16\x91[\x82\x81\x10\x15b\0\x02\xC5W\x88\x86\x01Q\x82U\x94\x84\x01\x94`\x01\x90\x91\x01\x90\x84\x01b\0\x02\xA4V[P\x85\x82\x10\x15b\0\x02\xE4W\x87\x85\x01Q`\0\x19`\x03\x88\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PPPPP`\x01\x90\x81\x1B\x01\x90UPV[`\0\x80\x83Tb\0\x03\x04\x81b\0\x01\x99V[`\x01\x82\x81\x16\x80\x15b\0\x03\x1FW`\x01\x81\x14b\0\x035Wb\0\x03fV[`\xFF\x19\x84\x16\x87R\x82\x15\x15\x83\x02\x87\x01\x94Pb\0\x03fV[\x87`\0R` \x80`\0 `\0[\x85\x81\x10\x15b\0\x03]W\x81T\x8A\x82\x01R\x90\x84\x01\x90\x82\x01b\0\x03BV[PPP\x82\x87\x01\x94P[P\x92\x96\x95PPPPPPV[`\x80Q`\xA0Q`\xC0Qa\x10\xE5b\0\x03\xA2`\09`\0a\x08\xF2\x01R`\0a\x08\xBD\x01R`\0a\x03|\x01Ra\x10\xE5`\0\xF3\xFE`\x80`@R`\x046\x10a\0\xE1W`\x005`\xE0\x1C\x80cp\xA0\x821\x11a\0\x7FW\x80c\xA9\x05\x9C\xBB\x11a\0YW\x80c\xA9\x05\x9C\xBB\x14a\x05 W\x80c\xD0\xE3\r\xB0\x14a\x05{W\x80c\xD5\x05\xAC\xCF\x14a\x05\x83W\x80c\xDDb\xED>\x14a\x05\xDEWa\0\xF0V[\x80cp\xA0\x821\x14a\x04\0W\x80c~\xCE\xBE\0\x14a\x04hW\x80c\x95\xD8\x9BA\x14a\x04\xD0Wa\0\xF0V[\x80c#\xB8r\xDD\x11a\0\xBBW\x80c#\xB8r\xDD\x14a\x02yW\x80c.\x1A}M\x14a\x02\xD4W\x80c1<\xE5g\x14a\x03/W\x80c6D\xE5\x15\x14a\x03\xB0Wa\0\xF0V[\x80c\x06\xFD\xDE\x03\x14a\x01IW\x80c\t^\xA7\xB3\x14a\x01\xAFW\x80c\x18\x16\r\xDD\x14a\x02\x1AWa\0\xF0V[6a\0\xF0Wa\0\xEEa\x06QV[\0[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`)`$\x82\x01R\x7FUnknown signature and no fallbac`D\x82\x01\x90\x81Rh\x1A\xC8\x19\x19Y\x9A[\x99Y`\xBA\x1B`d\x83\x01R`\x84\x82\xFD[4\x80\x15a\x01\x90W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R`\0\x80Q` a\x10\xA5\x839\x81Q\x91R`D\x82\x01\x90\x81Ra7\xB7`\xF1\x1B`d\x83\x01R`\x84\x82\xFD[Pa\x01\x99a\x06\x92V[`@Qa\x01\xA6\x91\x90a\r|V[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\xF6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R`\0\x80Q` a\x10\xA5\x839\x81Q\x91R`D\x82\x01\x90\x81Ra7\xB7`\xF1\x1B`d\x83\x01R`\x84\x82\xFD[Pa\x02\na\x02\x056`\x04a\x0E6V[a\x07 V[`@Q\x90\x15\x15\x81R` \x01a\x01\xA6V[4\x80\x15a\x02aW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R`\0\x80Q` a\x10\xA5\x839\x81Q\x91R`D\x82\x01\x90\x81Ra7\xB7`\xF1\x1B`d\x83\x01R`\x84\x82\xFD[Pa\x02k`\x02T\x81V[`@Q\x90\x81R` \x01a\x01\xA6V[4\x80\x15a\x02\xC0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R`\0\x80Q` a\x10\xA5\x839\x81Q\x91R`D\x82\x01\x90\x81Ra7\xB7`\xF1\x1B`d\x83\x01R`\x84\x82\xFD[Pa\x02\na\x02\xCF6`\x04a\x0EcV[a\x07\x8DV[4\x80\x15a\x03\x1BW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R`\0\x80Q` a\x10\xA5\x839\x81Q\x91R`D\x82\x01\x90\x81Ra7\xB7`\xF1\x1B`d\x83\x01R`\x84\x82\xFD[Pa\0\xEEa\x03*6`\x04a\x0E\xA2V[a\x08mV[4\x80\x15a\x03vW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R`\0\x80Q` a\x10\xA5\x839\x81Q\x91R`D\x82\x01\x90\x81Ra7\xB7`\xF1\x1B`d\x83\x01R`\x84\x82\xFD[Pa\x03\x9E\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`\xFF\x90\x91\x16\x81R` \x01a\x01\xA6V[4\x80\x15a\x03\xF7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R`\0\x80Q` a\x10\xA5\x839\x81Q\x91R`D\x82\x01\x90\x81Ra7\xB7`\xF1\x1B`d\x83\x01R`\x84\x82\xFD[Pa\x02ka\x08\xB9V[4\x80\x15a\x04GW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R`\0\x80Q` a\x10\xA5\x839\x81Q\x91R`D\x82\x01\x90\x81Ra7\xB7`\xF1\x1B`d\x83\x01R`\x84\x82\xFD[Pa\x02ka\x04V6`\x04a\x0E\xBEV[`\x03` R`\0\x90\x81R`@\x90 T\x81V[4\x80\x15a\x04\xAFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R`\0\x80Q` a\x10\xA5\x839\x81Q\x91R`D\x82\x01\x90\x81Ra7\xB7`\xF1\x1B`d\x83\x01R`\x84\x82\xFD[Pa\x02ka\x04\xBE6`\x04a\x0E\xBEV[`\x05` R`\0\x90\x81R`@\x90 T\x81V[4\x80\x15a\x05\x17W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R`\0\x80Q` a\x10\xA5\x839\x81Q\x91R`D\x82\x01\x90\x81Ra7\xB7`\xF1\x1B`d\x83\x01R`\x84\x82\xFD[Pa\x01\x99a\t\x14V[4\x80\x15a\x05gW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R`\0\x80Q` a\x10\xA5\x839\x81Q\x91R`D\x82\x01\x90\x81Ra7\xB7`\xF1\x1B`d\x83\x01R`\x84\x82\xFD[Pa\x02\na\x05v6`\x04a\x0E6V[a\t!V[a\0\xEEa\x06QV[4\x80\x15a\x05\xCAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R`\0\x80Q` a\x10\xA5\x839\x81Q\x91R`D\x82\x01\x90\x81Ra7\xB7`\xF1\x1B`d\x83\x01R`\x84\x82\xFD[Pa\0\xEEa\x05\xD96`\x04a\x0E\xE3V[a\t\x87V[4\x80\x15a\x06%W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R`\0\x80Q` a\x10\xA5\x839\x81Q\x91R`D\x82\x01\x90\x81Ra7\xB7`\xF1\x1B`d\x83\x01R`\x84\x82\xFD[Pa\x02ka\x0646`\x04a\x0FYV[`\x04` \x90\x81R`\0\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[a\x06[34a\x0B\xD0V[`@Q4\x81R3\x90\x7F\xE1\xFF\xFC\xC4\x92=\x04\xB5Y\xF4\xD2\x9A\x8B\xFCl\xDA\x04\xEB[\r<F\x07Q\xC2@,\\\\\xC9\x10\x9C\x90` \x01`@Q\x80\x91\x03\x90\xA2V[`\0\x80Ta\x06\x9F\x90a\x0F\x8FV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06\xCB\x90a\x0F\x8FV[\x80\x15a\x07\x18W\x80`\x1F\x10a\x06\xEDWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07\x18V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06\xFBW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81V[3`\0\x81\x81R`\x04` \x90\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x87\x16\x80\x85R\x92R\x80\x83 \x85\x90UQ\x91\x92\x90\x91\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x90a\x07{\x90\x86\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3P`\x01[\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x04` \x90\x81R`@\x80\x83 3\x84R\x90\x91R\x81 T`\0\x19\x81\x14a\x07\xE9Wa\x07\xC4\x83\x82a\x0F\xDFV[`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x90\x81R`\x04` \x90\x81R`@\x80\x83 3\x84R\x90\x91R\x90 U[`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x03` R`@\x81 \x80T\x85\x92\x90a\x08\x11\x90\x84\x90a\x0F\xDFV[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\0\x81\x81R`\x03` R`@\x90\x81\x90 \x80T\x87\x01\x90UQ\x90\x91\x87\x16\x90`\0\x80Q` a\x10\xC5\x839\x81Q\x91R\x90a\x08Z\x90\x87\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3P`\x01\x94\x93PPPPV[a\x08w3\x82a\x0C*V[`@Q\x81\x81R3\x90\x7F\x7F\xCFS,\x15\xF0\xA6\xDB\x0B\xD6\xD0\xE08\xBE\xA7\x1D0\xD8\x08\xC7\xD9\x8C\xB3\xBFrh\xA9[\xF5\x08\x1Be\x90` \x01`@Q\x80\x91\x03\x90\xA2a\x08\xB63\x82a\x0C\x8CV[PV[`\0\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0F\x14a\x08\xEFWa\x08\xEAa\x0C\xE2V[\x90P\x90V[P\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\x90V[`\x01\x80Ta\x06\x9F\x90a\x0F\x8FV[3`\0\x90\x81R`\x03` R`@\x81 \x80T\x83\x91\x90\x83\x90a\tB\x90\x84\x90a\x0F\xDFV[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x81\x81R`\x03` R`@\x90\x81\x90 \x80T\x85\x01\x90UQ3\x90`\0\x80Q` a\x10\xC5\x839\x81Q\x91R\x90a\x07{\x90\x86\x81R` \x01\x90V[B\x84\x10\x15a\t\xDCW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x17`$\x82\x01R\x7FPERMIT_DEADLINE_EXPIRED\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\0`\x01a\t\xE8a\x08\xB9V[`\x01`\x01`\xA0\x1B\x03\x8A\x81\x16`\0\x81\x81R`\x05` \x90\x81R`@\x91\x82\x90 \x80T`\x01\x81\x01\x90\x91U\x82Q\x7Fnq\xED\xAE\x12\xB1\xB9\x7FM\x1F`7\x0F\xEF\x10\x10_\xA2\xFA\xAE\x01&\x11J\x16\x9Cd\x84]a&\xC9\x81\x84\x01R\x80\x84\x01\x94\x90\x94R\x93\x8D\x16``\x84\x01R`\x80\x83\x01\x8C\x90R`\xA0\x83\x01\x93\x90\x93R`\xC0\x80\x83\x01\x8B\x90R\x81Q\x80\x84\x03\x90\x91\x01\x81R`\xE0\x83\x01\x90\x91R\x80Q\x92\x01\x91\x90\x91 a\x19\x01`\xF0\x1Ba\x01\0\x83\x01Ra\x01\x02\x82\x01\x92\x90\x92Ra\x01\"\x81\x01\x91\x90\x91Ra\x01B\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 `\0\x84R\x90\x83\x01\x80\x83RR`\xFF\x87\x16\x90\x82\x01R``\x81\x01\x85\x90R`\x80\x81\x01\x84\x90R`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a\n\xF4W=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16\x15\x80\x15\x90a\x0B*WP\x87`\x01`\x01`\xA0\x1B\x03\x16\x81`\x01`\x01`\xA0\x1B\x03\x16\x14[a\x0BgW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0E`$\x82\x01Rm$\xA7+ \xA6$\xA2/\xA9\xA4\xA3\xA7\"\xA9`\x91\x1B`D\x82\x01R`d\x01a\t\xD3V[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16`\0\x90\x81R`\x04` \x90\x81R`@\x80\x83 \x8A\x85\x16\x80\x85R\x90\x83R\x92\x81\x90 \x89\x90UQ\x88\x81R\x91\x92\x8A\x16\x91\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x91\x01`@Q\x80\x91\x03\x90\xA3PPPPPPPV[\x80`\x02`\0\x82\x82Ta\x0B\xE2\x91\x90a\x0F\xF2V[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x81\x81R`\x03` \x90\x81R`@\x80\x83 \x80T\x86\x01\x90UQ\x84\x81R`\0\x80Q` a\x10\xC5\x839\x81Q\x91R\x91\x01[`@Q\x80\x91\x03\x90\xA3PPV[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`\x03` R`@\x81 \x80T\x83\x92\x90a\x0CR\x90\x84\x90a\x0F\xDFV[\x90\x91UPP`\x02\x80T\x82\x90\x03\x90U`@Q\x81\x81R`\0\x90`\x01`\x01`\xA0\x1B\x03\x84\x16\x90`\0\x80Q` a\x10\xC5\x839\x81Q\x91R\x90` \x01a\x0C\x1EV[`\0\x80`\0\x80`\0\x85\x87Z\xF1\x90P\x80a\x0C\xDDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x13`$\x82\x01Rr\x11U\x12\x17\xD5\x14\x90S\x94\xD1\x91T\x97\xD1\x90RS\x11Q`j\x1B`D\x82\x01R`d\x01a\t\xD3V[PPPV[`\0\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F`\0`@Qa\r\x14\x91\x90a\x10\x05V[`@\x80Q\x91\x82\x90\x03\x82 ` \x83\x01\x93\x90\x93R\x81\x01\x91\x90\x91R\x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6``\x82\x01RF`\x80\x82\x01R0`\xA0\x82\x01R`\xC0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x90V[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\r\xA9W\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\r\x8DV[P`\0`@\x82\x86\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x92PPP\x92\x91PPV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FABI decoding: tuple data too sho`D\x82\x01Ra\x1C\x9D`\xF2\x1B`d\x82\x01R`\x84\x81\xFD[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x0E1W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x0ELWa\x0ELa\r\xCAV[a\x0EU\x83a\x0E\x1AV[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0E{Wa\x0E{a\r\xCAV[a\x0E\x84\x84a\x0E\x1AV[\x92Pa\x0E\x92` \x85\x01a\x0E\x1AV[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0` \x82\x84\x03\x12\x15a\x0E\xB7Wa\x0E\xB7a\r\xCAV[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x0E\xD3Wa\x0E\xD3a\r\xCAV[a\x0E\xDC\x82a\x0E\x1AV[\x93\x92PPPV[`\0\x80`\0\x80`\0\x80`\0`\xE0\x88\x8A\x03\x12\x15a\x0F\x01Wa\x0F\x01a\r\xCAV[a\x0F\n\x88a\x0E\x1AV[\x96Pa\x0F\x18` \x89\x01a\x0E\x1AV[\x95P`@\x88\x015\x94P``\x88\x015\x93P`\x80\x88\x015`\xFF\x81\x16\x81\x14a\x0F<W`\0\x80\xFD[\x96\x99\x95\x98P\x93\x96\x92\x95\x94`\xA0\x84\x015\x94P`\xC0\x90\x93\x015\x92\x91PPV[`\0\x80`@\x83\x85\x03\x12\x15a\x0FoWa\x0Foa\r\xCAV[a\x0Fx\x83a\x0E\x1AV[\x91Pa\x0F\x86` \x84\x01a\x0E\x1AV[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x0F\xA3W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x0F\xC3WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x81\x81\x03\x81\x81\x11\x15a\x07\x87Wa\x07\x87a\x0F\xC9V[\x80\x82\x01\x80\x82\x11\x15a\x07\x87Wa\x07\x87a\x0F\xC9V[`\0\x80\x83T\x81`\x01\x82\x81\x1C\x91P\x80\x83\x16\x80a\x10!W`\x7F\x83\x16\x92P[` \x80\x84\x10\x82\x03a\x10@WcNH{q`\xE0\x1B\x86R`\"`\x04R`$\x86\xFD[\x81\x80\x15a\x10TW`\x01\x81\x14a\x10iWa\x10\x96V[`\xFF\x19\x86\x16\x89R\x84\x15\x15\x85\x02\x89\x01\x96Pa\x10\x96V[`\0\x8A\x81R` \x90 `\0[\x86\x81\x10\x15a\x10\x8EW\x81T\x8B\x82\x01R\x90\x85\x01\x90\x83\x01a\x10uV[PP\x84\x89\x01\x96P[P\x94\x98\x97PPPPPPPPV\xFEEther sent to non-payable functi\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF";
557    /// The bytecode of the contract.
558    pub static WETH_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(
559        __BYTECODE,
560    );
561    #[rustfmt::skip]
562    const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\x046\x10a\0\xE1W`\x005`\xE0\x1C\x80cp\xA0\x821\x11a\0\x7FW\x80c\xA9\x05\x9C\xBB\x11a\0YW\x80c\xA9\x05\x9C\xBB\x14a\x05 W\x80c\xD0\xE3\r\xB0\x14a\x05{W\x80c\xD5\x05\xAC\xCF\x14a\x05\x83W\x80c\xDDb\xED>\x14a\x05\xDEWa\0\xF0V[\x80cp\xA0\x821\x14a\x04\0W\x80c~\xCE\xBE\0\x14a\x04hW\x80c\x95\xD8\x9BA\x14a\x04\xD0Wa\0\xF0V[\x80c#\xB8r\xDD\x11a\0\xBBW\x80c#\xB8r\xDD\x14a\x02yW\x80c.\x1A}M\x14a\x02\xD4W\x80c1<\xE5g\x14a\x03/W\x80c6D\xE5\x15\x14a\x03\xB0Wa\0\xF0V[\x80c\x06\xFD\xDE\x03\x14a\x01IW\x80c\t^\xA7\xB3\x14a\x01\xAFW\x80c\x18\x16\r\xDD\x14a\x02\x1AWa\0\xF0V[6a\0\xF0Wa\0\xEEa\x06QV[\0[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`)`$\x82\x01R\x7FUnknown signature and no fallbac`D\x82\x01\x90\x81Rh\x1A\xC8\x19\x19Y\x9A[\x99Y`\xBA\x1B`d\x83\x01R`\x84\x82\xFD[4\x80\x15a\x01\x90W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R`\0\x80Q` a\x10\xA5\x839\x81Q\x91R`D\x82\x01\x90\x81Ra7\xB7`\xF1\x1B`d\x83\x01R`\x84\x82\xFD[Pa\x01\x99a\x06\x92V[`@Qa\x01\xA6\x91\x90a\r|V[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\xF6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R`\0\x80Q` a\x10\xA5\x839\x81Q\x91R`D\x82\x01\x90\x81Ra7\xB7`\xF1\x1B`d\x83\x01R`\x84\x82\xFD[Pa\x02\na\x02\x056`\x04a\x0E6V[a\x07 V[`@Q\x90\x15\x15\x81R` \x01a\x01\xA6V[4\x80\x15a\x02aW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R`\0\x80Q` a\x10\xA5\x839\x81Q\x91R`D\x82\x01\x90\x81Ra7\xB7`\xF1\x1B`d\x83\x01R`\x84\x82\xFD[Pa\x02k`\x02T\x81V[`@Q\x90\x81R` \x01a\x01\xA6V[4\x80\x15a\x02\xC0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R`\0\x80Q` a\x10\xA5\x839\x81Q\x91R`D\x82\x01\x90\x81Ra7\xB7`\xF1\x1B`d\x83\x01R`\x84\x82\xFD[Pa\x02\na\x02\xCF6`\x04a\x0EcV[a\x07\x8DV[4\x80\x15a\x03\x1BW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R`\0\x80Q` a\x10\xA5\x839\x81Q\x91R`D\x82\x01\x90\x81Ra7\xB7`\xF1\x1B`d\x83\x01R`\x84\x82\xFD[Pa\0\xEEa\x03*6`\x04a\x0E\xA2V[a\x08mV[4\x80\x15a\x03vW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R`\0\x80Q` a\x10\xA5\x839\x81Q\x91R`D\x82\x01\x90\x81Ra7\xB7`\xF1\x1B`d\x83\x01R`\x84\x82\xFD[Pa\x03\x9E\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`\xFF\x90\x91\x16\x81R` \x01a\x01\xA6V[4\x80\x15a\x03\xF7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R`\0\x80Q` a\x10\xA5\x839\x81Q\x91R`D\x82\x01\x90\x81Ra7\xB7`\xF1\x1B`d\x83\x01R`\x84\x82\xFD[Pa\x02ka\x08\xB9V[4\x80\x15a\x04GW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R`\0\x80Q` a\x10\xA5\x839\x81Q\x91R`D\x82\x01\x90\x81Ra7\xB7`\xF1\x1B`d\x83\x01R`\x84\x82\xFD[Pa\x02ka\x04V6`\x04a\x0E\xBEV[`\x03` R`\0\x90\x81R`@\x90 T\x81V[4\x80\x15a\x04\xAFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R`\0\x80Q` a\x10\xA5\x839\x81Q\x91R`D\x82\x01\x90\x81Ra7\xB7`\xF1\x1B`d\x83\x01R`\x84\x82\xFD[Pa\x02ka\x04\xBE6`\x04a\x0E\xBEV[`\x05` R`\0\x90\x81R`@\x90 T\x81V[4\x80\x15a\x05\x17W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R`\0\x80Q` a\x10\xA5\x839\x81Q\x91R`D\x82\x01\x90\x81Ra7\xB7`\xF1\x1B`d\x83\x01R`\x84\x82\xFD[Pa\x01\x99a\t\x14V[4\x80\x15a\x05gW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R`\0\x80Q` a\x10\xA5\x839\x81Q\x91R`D\x82\x01\x90\x81Ra7\xB7`\xF1\x1B`d\x83\x01R`\x84\x82\xFD[Pa\x02\na\x05v6`\x04a\x0E6V[a\t!V[a\0\xEEa\x06QV[4\x80\x15a\x05\xCAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R`\0\x80Q` a\x10\xA5\x839\x81Q\x91R`D\x82\x01\x90\x81Ra7\xB7`\xF1\x1B`d\x83\x01R`\x84\x82\xFD[Pa\0\xEEa\x05\xD96`\x04a\x0E\xE3V[a\t\x87V[4\x80\x15a\x06%W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R`\0\x80Q` a\x10\xA5\x839\x81Q\x91R`D\x82\x01\x90\x81Ra7\xB7`\xF1\x1B`d\x83\x01R`\x84\x82\xFD[Pa\x02ka\x0646`\x04a\x0FYV[`\x04` \x90\x81R`\0\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[a\x06[34a\x0B\xD0V[`@Q4\x81R3\x90\x7F\xE1\xFF\xFC\xC4\x92=\x04\xB5Y\xF4\xD2\x9A\x8B\xFCl\xDA\x04\xEB[\r<F\x07Q\xC2@,\\\\\xC9\x10\x9C\x90` \x01`@Q\x80\x91\x03\x90\xA2V[`\0\x80Ta\x06\x9F\x90a\x0F\x8FV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06\xCB\x90a\x0F\x8FV[\x80\x15a\x07\x18W\x80`\x1F\x10a\x06\xEDWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x07\x18V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06\xFBW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81V[3`\0\x81\x81R`\x04` \x90\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x87\x16\x80\x85R\x92R\x80\x83 \x85\x90UQ\x91\x92\x90\x91\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x90a\x07{\x90\x86\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3P`\x01[\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x04` \x90\x81R`@\x80\x83 3\x84R\x90\x91R\x81 T`\0\x19\x81\x14a\x07\xE9Wa\x07\xC4\x83\x82a\x0F\xDFV[`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x90\x81R`\x04` \x90\x81R`@\x80\x83 3\x84R\x90\x91R\x90 U[`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x03` R`@\x81 \x80T\x85\x92\x90a\x08\x11\x90\x84\x90a\x0F\xDFV[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\0\x81\x81R`\x03` R`@\x90\x81\x90 \x80T\x87\x01\x90UQ\x90\x91\x87\x16\x90`\0\x80Q` a\x10\xC5\x839\x81Q\x91R\x90a\x08Z\x90\x87\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3P`\x01\x94\x93PPPPV[a\x08w3\x82a\x0C*V[`@Q\x81\x81R3\x90\x7F\x7F\xCFS,\x15\xF0\xA6\xDB\x0B\xD6\xD0\xE08\xBE\xA7\x1D0\xD8\x08\xC7\xD9\x8C\xB3\xBFrh\xA9[\xF5\x08\x1Be\x90` \x01`@Q\x80\x91\x03\x90\xA2a\x08\xB63\x82a\x0C\x8CV[PV[`\0\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0F\x14a\x08\xEFWa\x08\xEAa\x0C\xE2V[\x90P\x90V[P\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\x90V[`\x01\x80Ta\x06\x9F\x90a\x0F\x8FV[3`\0\x90\x81R`\x03` R`@\x81 \x80T\x83\x91\x90\x83\x90a\tB\x90\x84\x90a\x0F\xDFV[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x81\x81R`\x03` R`@\x90\x81\x90 \x80T\x85\x01\x90UQ3\x90`\0\x80Q` a\x10\xC5\x839\x81Q\x91R\x90a\x07{\x90\x86\x81R` \x01\x90V[B\x84\x10\x15a\t\xDCW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x17`$\x82\x01R\x7FPERMIT_DEADLINE_EXPIRED\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\0`\x01a\t\xE8a\x08\xB9V[`\x01`\x01`\xA0\x1B\x03\x8A\x81\x16`\0\x81\x81R`\x05` \x90\x81R`@\x91\x82\x90 \x80T`\x01\x81\x01\x90\x91U\x82Q\x7Fnq\xED\xAE\x12\xB1\xB9\x7FM\x1F`7\x0F\xEF\x10\x10_\xA2\xFA\xAE\x01&\x11J\x16\x9Cd\x84]a&\xC9\x81\x84\x01R\x80\x84\x01\x94\x90\x94R\x93\x8D\x16``\x84\x01R`\x80\x83\x01\x8C\x90R`\xA0\x83\x01\x93\x90\x93R`\xC0\x80\x83\x01\x8B\x90R\x81Q\x80\x84\x03\x90\x91\x01\x81R`\xE0\x83\x01\x90\x91R\x80Q\x92\x01\x91\x90\x91 a\x19\x01`\xF0\x1Ba\x01\0\x83\x01Ra\x01\x02\x82\x01\x92\x90\x92Ra\x01\"\x81\x01\x91\x90\x91Ra\x01B\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 `\0\x84R\x90\x83\x01\x80\x83RR`\xFF\x87\x16\x90\x82\x01R``\x81\x01\x85\x90R`\x80\x81\x01\x84\x90R`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a\n\xF4W=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16\x15\x80\x15\x90a\x0B*WP\x87`\x01`\x01`\xA0\x1B\x03\x16\x81`\x01`\x01`\xA0\x1B\x03\x16\x14[a\x0BgW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0E`$\x82\x01Rm$\xA7+ \xA6$\xA2/\xA9\xA4\xA3\xA7\"\xA9`\x91\x1B`D\x82\x01R`d\x01a\t\xD3V[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16`\0\x90\x81R`\x04` \x90\x81R`@\x80\x83 \x8A\x85\x16\x80\x85R\x90\x83R\x92\x81\x90 \x89\x90UQ\x88\x81R\x91\x92\x8A\x16\x91\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x91\x01`@Q\x80\x91\x03\x90\xA3PPPPPPPV[\x80`\x02`\0\x82\x82Ta\x0B\xE2\x91\x90a\x0F\xF2V[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x81\x81R`\x03` \x90\x81R`@\x80\x83 \x80T\x86\x01\x90UQ\x84\x81R`\0\x80Q` a\x10\xC5\x839\x81Q\x91R\x91\x01[`@Q\x80\x91\x03\x90\xA3PPV[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`\x03` R`@\x81 \x80T\x83\x92\x90a\x0CR\x90\x84\x90a\x0F\xDFV[\x90\x91UPP`\x02\x80T\x82\x90\x03\x90U`@Q\x81\x81R`\0\x90`\x01`\x01`\xA0\x1B\x03\x84\x16\x90`\0\x80Q` a\x10\xC5\x839\x81Q\x91R\x90` \x01a\x0C\x1EV[`\0\x80`\0\x80`\0\x85\x87Z\xF1\x90P\x80a\x0C\xDDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x13`$\x82\x01Rr\x11U\x12\x17\xD5\x14\x90S\x94\xD1\x91T\x97\xD1\x90RS\x11Q`j\x1B`D\x82\x01R`d\x01a\t\xD3V[PPPV[`\0\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F`\0`@Qa\r\x14\x91\x90a\x10\x05V[`@\x80Q\x91\x82\x90\x03\x82 ` \x83\x01\x93\x90\x93R\x81\x01\x91\x90\x91R\x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6``\x82\x01RF`\x80\x82\x01R0`\xA0\x82\x01R`\xC0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x90V[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\r\xA9W\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\r\x8DV[P`\0`@\x82\x86\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x92PPP\x92\x91PPV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FABI decoding: tuple data too sho`D\x82\x01Ra\x1C\x9D`\xF2\x1B`d\x82\x01R`\x84\x81\xFD[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x0E1W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x0ELWa\x0ELa\r\xCAV[a\x0EU\x83a\x0E\x1AV[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0E{Wa\x0E{a\r\xCAV[a\x0E\x84\x84a\x0E\x1AV[\x92Pa\x0E\x92` \x85\x01a\x0E\x1AV[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0` \x82\x84\x03\x12\x15a\x0E\xB7Wa\x0E\xB7a\r\xCAV[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x0E\xD3Wa\x0E\xD3a\r\xCAV[a\x0E\xDC\x82a\x0E\x1AV[\x93\x92PPPV[`\0\x80`\0\x80`\0\x80`\0`\xE0\x88\x8A\x03\x12\x15a\x0F\x01Wa\x0F\x01a\r\xCAV[a\x0F\n\x88a\x0E\x1AV[\x96Pa\x0F\x18` \x89\x01a\x0E\x1AV[\x95P`@\x88\x015\x94P``\x88\x015\x93P`\x80\x88\x015`\xFF\x81\x16\x81\x14a\x0F<W`\0\x80\xFD[\x96\x99\x95\x98P\x93\x96\x92\x95\x94`\xA0\x84\x015\x94P`\xC0\x90\x93\x015\x92\x91PPV[`\0\x80`@\x83\x85\x03\x12\x15a\x0FoWa\x0Foa\r\xCAV[a\x0Fx\x83a\x0E\x1AV[\x91Pa\x0F\x86` \x84\x01a\x0E\x1AV[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x0F\xA3W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x0F\xC3WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x81\x81\x03\x81\x81\x11\x15a\x07\x87Wa\x07\x87a\x0F\xC9V[\x80\x82\x01\x80\x82\x11\x15a\x07\x87Wa\x07\x87a\x0F\xC9V[`\0\x80\x83T\x81`\x01\x82\x81\x1C\x91P\x80\x83\x16\x80a\x10!W`\x7F\x83\x16\x92P[` \x80\x84\x10\x82\x03a\x10@WcNH{q`\xE0\x1B\x86R`\"`\x04R`$\x86\xFD[\x81\x80\x15a\x10TW`\x01\x81\x14a\x10iWa\x10\x96V[`\xFF\x19\x86\x16\x89R\x84\x15\x15\x85\x02\x89\x01\x96Pa\x10\x96V[`\0\x8A\x81R` \x90 `\0[\x86\x81\x10\x15a\x10\x8EW\x81T\x8B\x82\x01R\x90\x85\x01\x90\x83\x01a\x10uV[PP\x84\x89\x01\x96P[P\x94\x98\x97PPPPPPPPV\xFEEther sent to non-payable functi\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF";
563    /// The deployed bytecode of the contract.
564    pub static WETH_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(
565        __DEPLOYED_BYTECODE,
566    );
567    pub struct WETH<M>(::ethers::contract::Contract<M>);
568    impl<M> ::core::clone::Clone for WETH<M> {
569        fn clone(&self) -> Self {
570            Self(::core::clone::Clone::clone(&self.0))
571        }
572    }
573    impl<M> ::core::ops::Deref for WETH<M> {
574        type Target = ::ethers::contract::Contract<M>;
575        fn deref(&self) -> &Self::Target {
576            &self.0
577        }
578    }
579    impl<M> ::core::ops::DerefMut for WETH<M> {
580        fn deref_mut(&mut self) -> &mut Self::Target {
581            &mut self.0
582        }
583    }
584    impl<M> ::core::fmt::Debug for WETH<M> {
585        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
586            f.debug_tuple(::core::stringify!(WETH)).field(&self.address()).finish()
587        }
588    }
589    impl<M: ::ethers::providers::Middleware> WETH<M> {
590        /// Creates a new contract instance with the specified `ethers` client at
591        /// `address`. The contract derefs to a `ethers::Contract` object.
592        pub fn new<T: Into<::ethers::core::types::Address>>(
593            address: T,
594            client: ::std::sync::Arc<M>,
595        ) -> Self {
596            Self(
597                ::ethers::contract::Contract::new(
598                    address.into(),
599                    WETH_ABI.clone(),
600                    client,
601                ),
602            )
603        }
604        /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it.
605        /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction
606        ///
607        /// Notes:
608        /// - If there are no constructor arguments, you should pass `()` as the argument.
609        /// - The default poll duration is 7 seconds.
610        /// - The default number of confirmations is 1 block.
611        ///
612        ///
613        /// # Example
614        ///
615        /// Generate contract bindings with `abigen!` and deploy a new contract instance.
616        ///
617        /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact.
618        ///
619        /// ```ignore
620        /// # async fn deploy<M: ethers::providers::Middleware>(client: ::std::sync::Arc<M>) {
621        ///     abigen!(Greeter, "../greeter.json");
622        ///
623        ///    let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap();
624        ///    let msg = greeter_contract.greet().call().await.unwrap();
625        /// # }
626        /// ```
627        pub fn deploy<T: ::ethers::core::abi::Tokenize>(
628            client: ::std::sync::Arc<M>,
629            constructor_args: T,
630        ) -> ::core::result::Result<
631            ::ethers::contract::builders::ContractDeployer<M, Self>,
632            ::ethers::contract::ContractError<M>,
633        > {
634            let factory = ::ethers::contract::ContractFactory::new(
635                WETH_ABI.clone(),
636                WETH_BYTECODE.clone().into(),
637                client,
638            );
639            let deployer = factory.deploy(constructor_args)?;
640            let deployer = ::ethers::contract::ContractDeployer::new(deployer);
641            Ok(deployer)
642        }
643        ///Calls the contract's `DOMAIN_SEPARATOR` (0x3644e515) function
644        pub fn domain_separator(
645            &self,
646        ) -> ::ethers::contract::builders::ContractCall<M, [u8; 32]> {
647            self.0
648                .method_hash([54, 68, 229, 21], ())
649                .expect("method not found (this should never happen)")
650        }
651        ///Calls the contract's `allowance` (0xdd62ed3e) function
652        pub fn allowance(
653            &self,
654            p0: ::ethers::core::types::Address,
655            p1: ::ethers::core::types::Address,
656        ) -> ::ethers::contract::builders::ContractCall<M, ::ethers::core::types::U256> {
657            self.0
658                .method_hash([221, 98, 237, 62], (p0, p1))
659                .expect("method not found (this should never happen)")
660        }
661        ///Calls the contract's `approve` (0x095ea7b3) function
662        pub fn approve(
663            &self,
664            spender: ::ethers::core::types::Address,
665            amount: ::ethers::core::types::U256,
666        ) -> ::ethers::contract::builders::ContractCall<M, bool> {
667            self.0
668                .method_hash([9, 94, 167, 179], (spender, amount))
669                .expect("method not found (this should never happen)")
670        }
671        ///Calls the contract's `balanceOf` (0x70a08231) function
672        pub fn balance_of(
673            &self,
674            p0: ::ethers::core::types::Address,
675        ) -> ::ethers::contract::builders::ContractCall<M, ::ethers::core::types::U256> {
676            self.0
677                .method_hash([112, 160, 130, 49], p0)
678                .expect("method not found (this should never happen)")
679        }
680        ///Calls the contract's `decimals` (0x313ce567) function
681        pub fn decimals(&self) -> ::ethers::contract::builders::ContractCall<M, u8> {
682            self.0
683                .method_hash([49, 60, 229, 103], ())
684                .expect("method not found (this should never happen)")
685        }
686        ///Calls the contract's `deposit` (0xd0e30db0) function
687        pub fn deposit(&self) -> ::ethers::contract::builders::ContractCall<M, ()> {
688            self.0
689                .method_hash([208, 227, 13, 176], ())
690                .expect("method not found (this should never happen)")
691        }
692        ///Calls the contract's `name` (0x06fdde03) function
693        pub fn name(
694            &self,
695        ) -> ::ethers::contract::builders::ContractCall<M, ::std::string::String> {
696            self.0
697                .method_hash([6, 253, 222, 3], ())
698                .expect("method not found (this should never happen)")
699        }
700        ///Calls the contract's `nonces` (0x7ecebe00) function
701        pub fn nonces(
702            &self,
703            p0: ::ethers::core::types::Address,
704        ) -> ::ethers::contract::builders::ContractCall<M, ::ethers::core::types::U256> {
705            self.0
706                .method_hash([126, 206, 190, 0], p0)
707                .expect("method not found (this should never happen)")
708        }
709        ///Calls the contract's `permit` (0xd505accf) function
710        pub fn permit(
711            &self,
712            owner: ::ethers::core::types::Address,
713            spender: ::ethers::core::types::Address,
714            value: ::ethers::core::types::U256,
715            deadline: ::ethers::core::types::U256,
716            v: u8,
717            r: [u8; 32],
718            s: [u8; 32],
719        ) -> ::ethers::contract::builders::ContractCall<M, ()> {
720            self.0
721                .method_hash(
722                    [213, 5, 172, 207],
723                    (owner, spender, value, deadline, v, r, s),
724                )
725                .expect("method not found (this should never happen)")
726        }
727        ///Calls the contract's `symbol` (0x95d89b41) function
728        pub fn symbol(
729            &self,
730        ) -> ::ethers::contract::builders::ContractCall<M, ::std::string::String> {
731            self.0
732                .method_hash([149, 216, 155, 65], ())
733                .expect("method not found (this should never happen)")
734        }
735        ///Calls the contract's `totalSupply` (0x18160ddd) function
736        pub fn total_supply(
737            &self,
738        ) -> ::ethers::contract::builders::ContractCall<M, ::ethers::core::types::U256> {
739            self.0
740                .method_hash([24, 22, 13, 221], ())
741                .expect("method not found (this should never happen)")
742        }
743        ///Calls the contract's `transfer` (0xa9059cbb) function
744        pub fn transfer(
745            &self,
746            to: ::ethers::core::types::Address,
747            amount: ::ethers::core::types::U256,
748        ) -> ::ethers::contract::builders::ContractCall<M, bool> {
749            self.0
750                .method_hash([169, 5, 156, 187], (to, amount))
751                .expect("method not found (this should never happen)")
752        }
753        ///Calls the contract's `transferFrom` (0x23b872dd) function
754        pub fn transfer_from(
755            &self,
756            from: ::ethers::core::types::Address,
757            to: ::ethers::core::types::Address,
758            amount: ::ethers::core::types::U256,
759        ) -> ::ethers::contract::builders::ContractCall<M, bool> {
760            self.0
761                .method_hash([35, 184, 114, 221], (from, to, amount))
762                .expect("method not found (this should never happen)")
763        }
764        ///Calls the contract's `withdraw` (0x2e1a7d4d) function
765        pub fn withdraw(
766            &self,
767            amount: ::ethers::core::types::U256,
768        ) -> ::ethers::contract::builders::ContractCall<M, ()> {
769            self.0
770                .method_hash([46, 26, 125, 77], amount)
771                .expect("method not found (this should never happen)")
772        }
773        ///Gets the contract's `Approval` event
774        pub fn approval_filter(
775            &self,
776        ) -> ::ethers::contract::builders::Event<
777            ::std::sync::Arc<M>,
778            M,
779            ApprovalFilter,
780        > {
781            self.0.event()
782        }
783        ///Gets the contract's `Deposit` event
784        pub fn deposit_filter(
785            &self,
786        ) -> ::ethers::contract::builders::Event<::std::sync::Arc<M>, M, DepositFilter> {
787            self.0.event()
788        }
789        ///Gets the contract's `Transfer` event
790        pub fn transfer_filter(
791            &self,
792        ) -> ::ethers::contract::builders::Event<
793            ::std::sync::Arc<M>,
794            M,
795            TransferFilter,
796        > {
797            self.0.event()
798        }
799        ///Gets the contract's `Withdrawal` event
800        pub fn withdrawal_filter(
801            &self,
802        ) -> ::ethers::contract::builders::Event<
803            ::std::sync::Arc<M>,
804            M,
805            WithdrawalFilter,
806        > {
807            self.0.event()
808        }
809        /// Returns an `Event` builder for all the events of this contract.
810        pub fn events(
811            &self,
812        ) -> ::ethers::contract::builders::Event<::std::sync::Arc<M>, M, WETHEvents> {
813            self.0.event_with_filter(::core::default::Default::default())
814        }
815    }
816    impl<M: ::ethers::providers::Middleware> From<::ethers::contract::Contract<M>>
817    for WETH<M> {
818        fn from(contract: ::ethers::contract::Contract<M>) -> Self {
819            Self::new(contract.address(), contract.client())
820        }
821    }
822    #[derive(
823        Clone,
824        ::ethers::contract::EthEvent,
825        ::ethers::contract::EthDisplay,
826        serde::Serialize,
827        serde::Deserialize,
828        Default,
829        Debug,
830        PartialEq,
831        Eq,
832        Hash
833    )]
834    #[ethevent(name = "Approval", abi = "Approval(address,address,uint256)")]
835    pub struct ApprovalFilter {
836        #[ethevent(indexed)]
837        pub owner: ::ethers::core::types::Address,
838        #[ethevent(indexed)]
839        pub spender: ::ethers::core::types::Address,
840        pub amount: ::ethers::core::types::U256,
841    }
842    #[derive(
843        Clone,
844        ::ethers::contract::EthEvent,
845        ::ethers::contract::EthDisplay,
846        serde::Serialize,
847        serde::Deserialize,
848        Default,
849        Debug,
850        PartialEq,
851        Eq,
852        Hash
853    )]
854    #[ethevent(name = "Deposit", abi = "Deposit(address,uint256)")]
855    pub struct DepositFilter {
856        #[ethevent(indexed)]
857        pub from: ::ethers::core::types::Address,
858        pub amount: ::ethers::core::types::U256,
859    }
860    #[derive(
861        Clone,
862        ::ethers::contract::EthEvent,
863        ::ethers::contract::EthDisplay,
864        serde::Serialize,
865        serde::Deserialize,
866        Default,
867        Debug,
868        PartialEq,
869        Eq,
870        Hash
871    )]
872    #[ethevent(name = "Transfer", abi = "Transfer(address,address,uint256)")]
873    pub struct TransferFilter {
874        #[ethevent(indexed)]
875        pub from: ::ethers::core::types::Address,
876        #[ethevent(indexed)]
877        pub to: ::ethers::core::types::Address,
878        pub amount: ::ethers::core::types::U256,
879    }
880    #[derive(
881        Clone,
882        ::ethers::contract::EthEvent,
883        ::ethers::contract::EthDisplay,
884        serde::Serialize,
885        serde::Deserialize,
886        Default,
887        Debug,
888        PartialEq,
889        Eq,
890        Hash
891    )]
892    #[ethevent(name = "Withdrawal", abi = "Withdrawal(address,uint256)")]
893    pub struct WithdrawalFilter {
894        #[ethevent(indexed)]
895        pub to: ::ethers::core::types::Address,
896        pub amount: ::ethers::core::types::U256,
897    }
898    ///Container type for all of the contract's events
899    #[derive(
900        Clone,
901        ::ethers::contract::EthAbiType,
902        serde::Serialize,
903        serde::Deserialize,
904        Debug,
905        PartialEq,
906        Eq,
907        Hash
908    )]
909    pub enum WETHEvents {
910        ApprovalFilter(ApprovalFilter),
911        DepositFilter(DepositFilter),
912        TransferFilter(TransferFilter),
913        WithdrawalFilter(WithdrawalFilter),
914    }
915    impl ::ethers::contract::EthLogDecode for WETHEvents {
916        fn decode_log(
917            log: &::ethers::core::abi::RawLog,
918        ) -> ::core::result::Result<Self, ::ethers::core::abi::Error> {
919            if let Ok(decoded) = ApprovalFilter::decode_log(log) {
920                return Ok(WETHEvents::ApprovalFilter(decoded));
921            }
922            if let Ok(decoded) = DepositFilter::decode_log(log) {
923                return Ok(WETHEvents::DepositFilter(decoded));
924            }
925            if let Ok(decoded) = TransferFilter::decode_log(log) {
926                return Ok(WETHEvents::TransferFilter(decoded));
927            }
928            if let Ok(decoded) = WithdrawalFilter::decode_log(log) {
929                return Ok(WETHEvents::WithdrawalFilter(decoded));
930            }
931            Err(::ethers::core::abi::Error::InvalidData)
932        }
933    }
934    impl ::core::fmt::Display for WETHEvents {
935        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
936            match self {
937                Self::ApprovalFilter(element) => ::core::fmt::Display::fmt(element, f),
938                Self::DepositFilter(element) => ::core::fmt::Display::fmt(element, f),
939                Self::TransferFilter(element) => ::core::fmt::Display::fmt(element, f),
940                Self::WithdrawalFilter(element) => ::core::fmt::Display::fmt(element, f),
941            }
942        }
943    }
944    impl ::core::convert::From<ApprovalFilter> for WETHEvents {
945        fn from(value: ApprovalFilter) -> Self {
946            Self::ApprovalFilter(value)
947        }
948    }
949    impl ::core::convert::From<DepositFilter> for WETHEvents {
950        fn from(value: DepositFilter) -> Self {
951            Self::DepositFilter(value)
952        }
953    }
954    impl ::core::convert::From<TransferFilter> for WETHEvents {
955        fn from(value: TransferFilter) -> Self {
956            Self::TransferFilter(value)
957        }
958    }
959    impl ::core::convert::From<WithdrawalFilter> for WETHEvents {
960        fn from(value: WithdrawalFilter) -> Self {
961            Self::WithdrawalFilter(value)
962        }
963    }
964    ///Container type for all input parameters for the `DOMAIN_SEPARATOR` function with signature `DOMAIN_SEPARATOR()` and selector `0x3644e515`
965    #[derive(
966        Clone,
967        ::ethers::contract::EthCall,
968        ::ethers::contract::EthDisplay,
969        serde::Serialize,
970        serde::Deserialize,
971        Default,
972        Debug,
973        PartialEq,
974        Eq,
975        Hash
976    )]
977    #[ethcall(name = "DOMAIN_SEPARATOR", abi = "DOMAIN_SEPARATOR()")]
978    pub struct DomainSeparatorCall;
979    ///Container type for all input parameters for the `allowance` function with signature `allowance(address,address)` and selector `0xdd62ed3e`
980    #[derive(
981        Clone,
982        ::ethers::contract::EthCall,
983        ::ethers::contract::EthDisplay,
984        serde::Serialize,
985        serde::Deserialize,
986        Default,
987        Debug,
988        PartialEq,
989        Eq,
990        Hash
991    )]
992    #[ethcall(name = "allowance", abi = "allowance(address,address)")]
993    pub struct AllowanceCall(
994        pub ::ethers::core::types::Address,
995        pub ::ethers::core::types::Address,
996    );
997    ///Container type for all input parameters for the `approve` function with signature `approve(address,uint256)` and selector `0x095ea7b3`
998    #[derive(
999        Clone,
1000        ::ethers::contract::EthCall,
1001        ::ethers::contract::EthDisplay,
1002        serde::Serialize,
1003        serde::Deserialize,
1004        Default,
1005        Debug,
1006        PartialEq,
1007        Eq,
1008        Hash
1009    )]
1010    #[ethcall(name = "approve", abi = "approve(address,uint256)")]
1011    pub struct ApproveCall {
1012        pub spender: ::ethers::core::types::Address,
1013        pub amount: ::ethers::core::types::U256,
1014    }
1015    ///Container type for all input parameters for the `balanceOf` function with signature `balanceOf(address)` and selector `0x70a08231`
1016    #[derive(
1017        Clone,
1018        ::ethers::contract::EthCall,
1019        ::ethers::contract::EthDisplay,
1020        serde::Serialize,
1021        serde::Deserialize,
1022        Default,
1023        Debug,
1024        PartialEq,
1025        Eq,
1026        Hash
1027    )]
1028    #[ethcall(name = "balanceOf", abi = "balanceOf(address)")]
1029    pub struct BalanceOfCall(pub ::ethers::core::types::Address);
1030    ///Container type for all input parameters for the `decimals` function with signature `decimals()` and selector `0x313ce567`
1031    #[derive(
1032        Clone,
1033        ::ethers::contract::EthCall,
1034        ::ethers::contract::EthDisplay,
1035        serde::Serialize,
1036        serde::Deserialize,
1037        Default,
1038        Debug,
1039        PartialEq,
1040        Eq,
1041        Hash
1042    )]
1043    #[ethcall(name = "decimals", abi = "decimals()")]
1044    pub struct DecimalsCall;
1045    ///Container type for all input parameters for the `deposit` function with signature `deposit()` and selector `0xd0e30db0`
1046    #[derive(
1047        Clone,
1048        ::ethers::contract::EthCall,
1049        ::ethers::contract::EthDisplay,
1050        serde::Serialize,
1051        serde::Deserialize,
1052        Default,
1053        Debug,
1054        PartialEq,
1055        Eq,
1056        Hash
1057    )]
1058    #[ethcall(name = "deposit", abi = "deposit()")]
1059    pub struct DepositCall;
1060    ///Container type for all input parameters for the `name` function with signature `name()` and selector `0x06fdde03`
1061    #[derive(
1062        Clone,
1063        ::ethers::contract::EthCall,
1064        ::ethers::contract::EthDisplay,
1065        serde::Serialize,
1066        serde::Deserialize,
1067        Default,
1068        Debug,
1069        PartialEq,
1070        Eq,
1071        Hash
1072    )]
1073    #[ethcall(name = "name", abi = "name()")]
1074    pub struct NameCall;
1075    ///Container type for all input parameters for the `nonces` function with signature `nonces(address)` and selector `0x7ecebe00`
1076    #[derive(
1077        Clone,
1078        ::ethers::contract::EthCall,
1079        ::ethers::contract::EthDisplay,
1080        serde::Serialize,
1081        serde::Deserialize,
1082        Default,
1083        Debug,
1084        PartialEq,
1085        Eq,
1086        Hash
1087    )]
1088    #[ethcall(name = "nonces", abi = "nonces(address)")]
1089    pub struct NoncesCall(pub ::ethers::core::types::Address);
1090    ///Container type for all input parameters for the `permit` function with signature `permit(address,address,uint256,uint256,uint8,bytes32,bytes32)` and selector `0xd505accf`
1091    #[derive(
1092        Clone,
1093        ::ethers::contract::EthCall,
1094        ::ethers::contract::EthDisplay,
1095        serde::Serialize,
1096        serde::Deserialize,
1097        Default,
1098        Debug,
1099        PartialEq,
1100        Eq,
1101        Hash
1102    )]
1103    #[ethcall(
1104        name = "permit",
1105        abi = "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)"
1106    )]
1107    pub struct PermitCall {
1108        pub owner: ::ethers::core::types::Address,
1109        pub spender: ::ethers::core::types::Address,
1110        pub value: ::ethers::core::types::U256,
1111        pub deadline: ::ethers::core::types::U256,
1112        pub v: u8,
1113        pub r: [u8; 32],
1114        pub s: [u8; 32],
1115    }
1116    ///Container type for all input parameters for the `symbol` function with signature `symbol()` and selector `0x95d89b41`
1117    #[derive(
1118        Clone,
1119        ::ethers::contract::EthCall,
1120        ::ethers::contract::EthDisplay,
1121        serde::Serialize,
1122        serde::Deserialize,
1123        Default,
1124        Debug,
1125        PartialEq,
1126        Eq,
1127        Hash
1128    )]
1129    #[ethcall(name = "symbol", abi = "symbol()")]
1130    pub struct SymbolCall;
1131    ///Container type for all input parameters for the `totalSupply` function with signature `totalSupply()` and selector `0x18160ddd`
1132    #[derive(
1133        Clone,
1134        ::ethers::contract::EthCall,
1135        ::ethers::contract::EthDisplay,
1136        serde::Serialize,
1137        serde::Deserialize,
1138        Default,
1139        Debug,
1140        PartialEq,
1141        Eq,
1142        Hash
1143    )]
1144    #[ethcall(name = "totalSupply", abi = "totalSupply()")]
1145    pub struct TotalSupplyCall;
1146    ///Container type for all input parameters for the `transfer` function with signature `transfer(address,uint256)` and selector `0xa9059cbb`
1147    #[derive(
1148        Clone,
1149        ::ethers::contract::EthCall,
1150        ::ethers::contract::EthDisplay,
1151        serde::Serialize,
1152        serde::Deserialize,
1153        Default,
1154        Debug,
1155        PartialEq,
1156        Eq,
1157        Hash
1158    )]
1159    #[ethcall(name = "transfer", abi = "transfer(address,uint256)")]
1160    pub struct TransferCall {
1161        pub to: ::ethers::core::types::Address,
1162        pub amount: ::ethers::core::types::U256,
1163    }
1164    ///Container type for all input parameters for the `transferFrom` function with signature `transferFrom(address,address,uint256)` and selector `0x23b872dd`
1165    #[derive(
1166        Clone,
1167        ::ethers::contract::EthCall,
1168        ::ethers::contract::EthDisplay,
1169        serde::Serialize,
1170        serde::Deserialize,
1171        Default,
1172        Debug,
1173        PartialEq,
1174        Eq,
1175        Hash
1176    )]
1177    #[ethcall(name = "transferFrom", abi = "transferFrom(address,address,uint256)")]
1178    pub struct TransferFromCall {
1179        pub from: ::ethers::core::types::Address,
1180        pub to: ::ethers::core::types::Address,
1181        pub amount: ::ethers::core::types::U256,
1182    }
1183    ///Container type for all input parameters for the `withdraw` function with signature `withdraw(uint256)` and selector `0x2e1a7d4d`
1184    #[derive(
1185        Clone,
1186        ::ethers::contract::EthCall,
1187        ::ethers::contract::EthDisplay,
1188        serde::Serialize,
1189        serde::Deserialize,
1190        Default,
1191        Debug,
1192        PartialEq,
1193        Eq,
1194        Hash
1195    )]
1196    #[ethcall(name = "withdraw", abi = "withdraw(uint256)")]
1197    pub struct WithdrawCall {
1198        pub amount: ::ethers::core::types::U256,
1199    }
1200    ///Container type for all of the contract's call
1201    #[derive(
1202        Clone,
1203        ::ethers::contract::EthAbiType,
1204        serde::Serialize,
1205        serde::Deserialize,
1206        Debug,
1207        PartialEq,
1208        Eq,
1209        Hash
1210    )]
1211    pub enum WETHCalls {
1212        DomainSeparator(DomainSeparatorCall),
1213        Allowance(AllowanceCall),
1214        Approve(ApproveCall),
1215        BalanceOf(BalanceOfCall),
1216        Decimals(DecimalsCall),
1217        Deposit(DepositCall),
1218        Name(NameCall),
1219        Nonces(NoncesCall),
1220        Permit(PermitCall),
1221        Symbol(SymbolCall),
1222        TotalSupply(TotalSupplyCall),
1223        Transfer(TransferCall),
1224        TransferFrom(TransferFromCall),
1225        Withdraw(WithdrawCall),
1226    }
1227    impl ::ethers::core::abi::AbiDecode for WETHCalls {
1228        fn decode(
1229            data: impl AsRef<[u8]>,
1230        ) -> ::core::result::Result<Self, ::ethers::core::abi::AbiError> {
1231            let data = data.as_ref();
1232            if let Ok(decoded) = <DomainSeparatorCall as ::ethers::core::abi::AbiDecode>::decode(
1233                data,
1234            ) {
1235                return Ok(Self::DomainSeparator(decoded));
1236            }
1237            if let Ok(decoded) = <AllowanceCall as ::ethers::core::abi::AbiDecode>::decode(
1238                data,
1239            ) {
1240                return Ok(Self::Allowance(decoded));
1241            }
1242            if let Ok(decoded) = <ApproveCall as ::ethers::core::abi::AbiDecode>::decode(
1243                data,
1244            ) {
1245                return Ok(Self::Approve(decoded));
1246            }
1247            if let Ok(decoded) = <BalanceOfCall as ::ethers::core::abi::AbiDecode>::decode(
1248                data,
1249            ) {
1250                return Ok(Self::BalanceOf(decoded));
1251            }
1252            if let Ok(decoded) = <DecimalsCall as ::ethers::core::abi::AbiDecode>::decode(
1253                data,
1254            ) {
1255                return Ok(Self::Decimals(decoded));
1256            }
1257            if let Ok(decoded) = <DepositCall as ::ethers::core::abi::AbiDecode>::decode(
1258                data,
1259            ) {
1260                return Ok(Self::Deposit(decoded));
1261            }
1262            if let Ok(decoded) = <NameCall as ::ethers::core::abi::AbiDecode>::decode(
1263                data,
1264            ) {
1265                return Ok(Self::Name(decoded));
1266            }
1267            if let Ok(decoded) = <NoncesCall as ::ethers::core::abi::AbiDecode>::decode(
1268                data,
1269            ) {
1270                return Ok(Self::Nonces(decoded));
1271            }
1272            if let Ok(decoded) = <PermitCall as ::ethers::core::abi::AbiDecode>::decode(
1273                data,
1274            ) {
1275                return Ok(Self::Permit(decoded));
1276            }
1277            if let Ok(decoded) = <SymbolCall as ::ethers::core::abi::AbiDecode>::decode(
1278                data,
1279            ) {
1280                return Ok(Self::Symbol(decoded));
1281            }
1282            if let Ok(decoded) = <TotalSupplyCall as ::ethers::core::abi::AbiDecode>::decode(
1283                data,
1284            ) {
1285                return Ok(Self::TotalSupply(decoded));
1286            }
1287            if let Ok(decoded) = <TransferCall as ::ethers::core::abi::AbiDecode>::decode(
1288                data,
1289            ) {
1290                return Ok(Self::Transfer(decoded));
1291            }
1292            if let Ok(decoded) = <TransferFromCall as ::ethers::core::abi::AbiDecode>::decode(
1293                data,
1294            ) {
1295                return Ok(Self::TransferFrom(decoded));
1296            }
1297            if let Ok(decoded) = <WithdrawCall as ::ethers::core::abi::AbiDecode>::decode(
1298                data,
1299            ) {
1300                return Ok(Self::Withdraw(decoded));
1301            }
1302            Err(::ethers::core::abi::Error::InvalidData.into())
1303        }
1304    }
1305    impl ::ethers::core::abi::AbiEncode for WETHCalls {
1306        fn encode(self) -> Vec<u8> {
1307            match self {
1308                Self::DomainSeparator(element) => {
1309                    ::ethers::core::abi::AbiEncode::encode(element)
1310                }
1311                Self::Allowance(element) => {
1312                    ::ethers::core::abi::AbiEncode::encode(element)
1313                }
1314                Self::Approve(element) => ::ethers::core::abi::AbiEncode::encode(element),
1315                Self::BalanceOf(element) => {
1316                    ::ethers::core::abi::AbiEncode::encode(element)
1317                }
1318                Self::Decimals(element) => {
1319                    ::ethers::core::abi::AbiEncode::encode(element)
1320                }
1321                Self::Deposit(element) => ::ethers::core::abi::AbiEncode::encode(element),
1322                Self::Name(element) => ::ethers::core::abi::AbiEncode::encode(element),
1323                Self::Nonces(element) => ::ethers::core::abi::AbiEncode::encode(element),
1324                Self::Permit(element) => ::ethers::core::abi::AbiEncode::encode(element),
1325                Self::Symbol(element) => ::ethers::core::abi::AbiEncode::encode(element),
1326                Self::TotalSupply(element) => {
1327                    ::ethers::core::abi::AbiEncode::encode(element)
1328                }
1329                Self::Transfer(element) => {
1330                    ::ethers::core::abi::AbiEncode::encode(element)
1331                }
1332                Self::TransferFrom(element) => {
1333                    ::ethers::core::abi::AbiEncode::encode(element)
1334                }
1335                Self::Withdraw(element) => {
1336                    ::ethers::core::abi::AbiEncode::encode(element)
1337                }
1338            }
1339        }
1340    }
1341    impl ::core::fmt::Display for WETHCalls {
1342        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
1343            match self {
1344                Self::DomainSeparator(element) => ::core::fmt::Display::fmt(element, f),
1345                Self::Allowance(element) => ::core::fmt::Display::fmt(element, f),
1346                Self::Approve(element) => ::core::fmt::Display::fmt(element, f),
1347                Self::BalanceOf(element) => ::core::fmt::Display::fmt(element, f),
1348                Self::Decimals(element) => ::core::fmt::Display::fmt(element, f),
1349                Self::Deposit(element) => ::core::fmt::Display::fmt(element, f),
1350                Self::Name(element) => ::core::fmt::Display::fmt(element, f),
1351                Self::Nonces(element) => ::core::fmt::Display::fmt(element, f),
1352                Self::Permit(element) => ::core::fmt::Display::fmt(element, f),
1353                Self::Symbol(element) => ::core::fmt::Display::fmt(element, f),
1354                Self::TotalSupply(element) => ::core::fmt::Display::fmt(element, f),
1355                Self::Transfer(element) => ::core::fmt::Display::fmt(element, f),
1356                Self::TransferFrom(element) => ::core::fmt::Display::fmt(element, f),
1357                Self::Withdraw(element) => ::core::fmt::Display::fmt(element, f),
1358            }
1359        }
1360    }
1361    impl ::core::convert::From<DomainSeparatorCall> for WETHCalls {
1362        fn from(value: DomainSeparatorCall) -> Self {
1363            Self::DomainSeparator(value)
1364        }
1365    }
1366    impl ::core::convert::From<AllowanceCall> for WETHCalls {
1367        fn from(value: AllowanceCall) -> Self {
1368            Self::Allowance(value)
1369        }
1370    }
1371    impl ::core::convert::From<ApproveCall> for WETHCalls {
1372        fn from(value: ApproveCall) -> Self {
1373            Self::Approve(value)
1374        }
1375    }
1376    impl ::core::convert::From<BalanceOfCall> for WETHCalls {
1377        fn from(value: BalanceOfCall) -> Self {
1378            Self::BalanceOf(value)
1379        }
1380    }
1381    impl ::core::convert::From<DecimalsCall> for WETHCalls {
1382        fn from(value: DecimalsCall) -> Self {
1383            Self::Decimals(value)
1384        }
1385    }
1386    impl ::core::convert::From<DepositCall> for WETHCalls {
1387        fn from(value: DepositCall) -> Self {
1388            Self::Deposit(value)
1389        }
1390    }
1391    impl ::core::convert::From<NameCall> for WETHCalls {
1392        fn from(value: NameCall) -> Self {
1393            Self::Name(value)
1394        }
1395    }
1396    impl ::core::convert::From<NoncesCall> for WETHCalls {
1397        fn from(value: NoncesCall) -> Self {
1398            Self::Nonces(value)
1399        }
1400    }
1401    impl ::core::convert::From<PermitCall> for WETHCalls {
1402        fn from(value: PermitCall) -> Self {
1403            Self::Permit(value)
1404        }
1405    }
1406    impl ::core::convert::From<SymbolCall> for WETHCalls {
1407        fn from(value: SymbolCall) -> Self {
1408            Self::Symbol(value)
1409        }
1410    }
1411    impl ::core::convert::From<TotalSupplyCall> for WETHCalls {
1412        fn from(value: TotalSupplyCall) -> Self {
1413            Self::TotalSupply(value)
1414        }
1415    }
1416    impl ::core::convert::From<TransferCall> for WETHCalls {
1417        fn from(value: TransferCall) -> Self {
1418            Self::Transfer(value)
1419        }
1420    }
1421    impl ::core::convert::From<TransferFromCall> for WETHCalls {
1422        fn from(value: TransferFromCall) -> Self {
1423            Self::TransferFrom(value)
1424        }
1425    }
1426    impl ::core::convert::From<WithdrawCall> for WETHCalls {
1427        fn from(value: WithdrawCall) -> Self {
1428            Self::Withdraw(value)
1429        }
1430    }
1431    ///Container type for all return fields from the `DOMAIN_SEPARATOR` function with signature `DOMAIN_SEPARATOR()` and selector `0x3644e515`
1432    #[derive(
1433        Clone,
1434        ::ethers::contract::EthAbiType,
1435        ::ethers::contract::EthAbiCodec,
1436        serde::Serialize,
1437        serde::Deserialize,
1438        Default,
1439        Debug,
1440        PartialEq,
1441        Eq,
1442        Hash
1443    )]
1444    pub struct DomainSeparatorReturn(pub [u8; 32]);
1445    ///Container type for all return fields from the `allowance` function with signature `allowance(address,address)` and selector `0xdd62ed3e`
1446    #[derive(
1447        Clone,
1448        ::ethers::contract::EthAbiType,
1449        ::ethers::contract::EthAbiCodec,
1450        serde::Serialize,
1451        serde::Deserialize,
1452        Default,
1453        Debug,
1454        PartialEq,
1455        Eq,
1456        Hash
1457    )]
1458    pub struct AllowanceReturn(pub ::ethers::core::types::U256);
1459    ///Container type for all return fields from the `approve` function with signature `approve(address,uint256)` and selector `0x095ea7b3`
1460    #[derive(
1461        Clone,
1462        ::ethers::contract::EthAbiType,
1463        ::ethers::contract::EthAbiCodec,
1464        serde::Serialize,
1465        serde::Deserialize,
1466        Default,
1467        Debug,
1468        PartialEq,
1469        Eq,
1470        Hash
1471    )]
1472    pub struct ApproveReturn(pub bool);
1473    ///Container type for all return fields from the `balanceOf` function with signature `balanceOf(address)` and selector `0x70a08231`
1474    #[derive(
1475        Clone,
1476        ::ethers::contract::EthAbiType,
1477        ::ethers::contract::EthAbiCodec,
1478        serde::Serialize,
1479        serde::Deserialize,
1480        Default,
1481        Debug,
1482        PartialEq,
1483        Eq,
1484        Hash
1485    )]
1486    pub struct BalanceOfReturn(pub ::ethers::core::types::U256);
1487    ///Container type for all return fields from the `decimals` function with signature `decimals()` and selector `0x313ce567`
1488    #[derive(
1489        Clone,
1490        ::ethers::contract::EthAbiType,
1491        ::ethers::contract::EthAbiCodec,
1492        serde::Serialize,
1493        serde::Deserialize,
1494        Default,
1495        Debug,
1496        PartialEq,
1497        Eq,
1498        Hash
1499    )]
1500    pub struct DecimalsReturn(pub u8);
1501    ///Container type for all return fields from the `name` function with signature `name()` and selector `0x06fdde03`
1502    #[derive(
1503        Clone,
1504        ::ethers::contract::EthAbiType,
1505        ::ethers::contract::EthAbiCodec,
1506        serde::Serialize,
1507        serde::Deserialize,
1508        Default,
1509        Debug,
1510        PartialEq,
1511        Eq,
1512        Hash
1513    )]
1514    pub struct NameReturn(pub ::std::string::String);
1515    ///Container type for all return fields from the `nonces` function with signature `nonces(address)` and selector `0x7ecebe00`
1516    #[derive(
1517        Clone,
1518        ::ethers::contract::EthAbiType,
1519        ::ethers::contract::EthAbiCodec,
1520        serde::Serialize,
1521        serde::Deserialize,
1522        Default,
1523        Debug,
1524        PartialEq,
1525        Eq,
1526        Hash
1527    )]
1528    pub struct NoncesReturn(pub ::ethers::core::types::U256);
1529    ///Container type for all return fields from the `symbol` function with signature `symbol()` and selector `0x95d89b41`
1530    #[derive(
1531        Clone,
1532        ::ethers::contract::EthAbiType,
1533        ::ethers::contract::EthAbiCodec,
1534        serde::Serialize,
1535        serde::Deserialize,
1536        Default,
1537        Debug,
1538        PartialEq,
1539        Eq,
1540        Hash
1541    )]
1542    pub struct SymbolReturn(pub ::std::string::String);
1543    ///Container type for all return fields from the `totalSupply` function with signature `totalSupply()` and selector `0x18160ddd`
1544    #[derive(
1545        Clone,
1546        ::ethers::contract::EthAbiType,
1547        ::ethers::contract::EthAbiCodec,
1548        serde::Serialize,
1549        serde::Deserialize,
1550        Default,
1551        Debug,
1552        PartialEq,
1553        Eq,
1554        Hash
1555    )]
1556    pub struct TotalSupplyReturn(pub ::ethers::core::types::U256);
1557    ///Container type for all return fields from the `transfer` function with signature `transfer(address,uint256)` and selector `0xa9059cbb`
1558    #[derive(
1559        Clone,
1560        ::ethers::contract::EthAbiType,
1561        ::ethers::contract::EthAbiCodec,
1562        serde::Serialize,
1563        serde::Deserialize,
1564        Default,
1565        Debug,
1566        PartialEq,
1567        Eq,
1568        Hash
1569    )]
1570    pub struct TransferReturn(pub bool);
1571    ///Container type for all return fields from the `transferFrom` function with signature `transferFrom(address,address,uint256)` and selector `0x23b872dd`
1572    #[derive(
1573        Clone,
1574        ::ethers::contract::EthAbiType,
1575        ::ethers::contract::EthAbiCodec,
1576        serde::Serialize,
1577        serde::Deserialize,
1578        Default,
1579        Debug,
1580        PartialEq,
1581        Eq,
1582        Hash
1583    )]
1584    pub struct TransferFromReturn(pub bool);
1585}