@layerzerolabs/onesig-evm 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,579 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "OneSig",
4
+ "sourceName": "contracts/OneSig.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "address[]",
10
+ "name": "_signers",
11
+ "type": "address[]"
12
+ },
13
+ {
14
+ "internalType": "uint256",
15
+ "name": "_threshold",
16
+ "type": "uint256"
17
+ },
18
+ {
19
+ "internalType": "uint256",
20
+ "name": "_chainId",
21
+ "type": "uint256"
22
+ },
23
+ {
24
+ "internalType": "bytes32",
25
+ "name": "_seed",
26
+ "type": "bytes32"
27
+ }
28
+ ],
29
+ "stateMutability": "nonpayable",
30
+ "type": "constructor"
31
+ },
32
+ {
33
+ "inputs": [],
34
+ "name": "ECDSAInvalidSignature",
35
+ "type": "error"
36
+ },
37
+ {
38
+ "inputs": [
39
+ {
40
+ "internalType": "uint256",
41
+ "name": "length",
42
+ "type": "uint256"
43
+ }
44
+ ],
45
+ "name": "ECDSAInvalidSignatureLength",
46
+ "type": "error"
47
+ },
48
+ {
49
+ "inputs": [
50
+ {
51
+ "internalType": "bytes32",
52
+ "name": "s",
53
+ "type": "bytes32"
54
+ }
55
+ ],
56
+ "name": "ECDSAInvalidSignatureS",
57
+ "type": "error"
58
+ },
59
+ {
60
+ "inputs": [
61
+ {
62
+ "internalType": "uint256",
63
+ "name": "index",
64
+ "type": "uint256"
65
+ }
66
+ ],
67
+ "name": "ExecutionFailed",
68
+ "type": "error"
69
+ },
70
+ {
71
+ "inputs": [],
72
+ "name": "InvalidProofOrNonce",
73
+ "type": "error"
74
+ },
75
+ {
76
+ "inputs": [],
77
+ "name": "InvalidSigner",
78
+ "type": "error"
79
+ },
80
+ {
81
+ "inputs": [],
82
+ "name": "MerkleRootExpired",
83
+ "type": "error"
84
+ },
85
+ {
86
+ "inputs": [],
87
+ "name": "OnlyMultiSig",
88
+ "type": "error"
89
+ },
90
+ {
91
+ "inputs": [],
92
+ "name": "SignatureError",
93
+ "type": "error"
94
+ },
95
+ {
96
+ "inputs": [
97
+ {
98
+ "internalType": "address",
99
+ "name": "signer",
100
+ "type": "address"
101
+ }
102
+ ],
103
+ "name": "SignerAlreadyAdded",
104
+ "type": "error"
105
+ },
106
+ {
107
+ "inputs": [
108
+ {
109
+ "internalType": "address",
110
+ "name": "signer",
111
+ "type": "address"
112
+ }
113
+ ],
114
+ "name": "SignerNotFound",
115
+ "type": "error"
116
+ },
117
+ {
118
+ "inputs": [
119
+ {
120
+ "internalType": "uint256",
121
+ "name": "totalSigners",
122
+ "type": "uint256"
123
+ },
124
+ {
125
+ "internalType": "uint256",
126
+ "name": "threshold",
127
+ "type": "uint256"
128
+ }
129
+ ],
130
+ "name": "TotalSignersLessThanThreshold",
131
+ "type": "error"
132
+ },
133
+ {
134
+ "inputs": [],
135
+ "name": "UnsortedSigners",
136
+ "type": "error"
137
+ },
138
+ {
139
+ "inputs": [],
140
+ "name": "ZeroThreshold",
141
+ "type": "error"
142
+ },
143
+ {
144
+ "anonymous": false,
145
+ "inputs": [
146
+ {
147
+ "indexed": false,
148
+ "internalType": "bytes32",
149
+ "name": "seed",
150
+ "type": "bytes32"
151
+ }
152
+ ],
153
+ "name": "SeedSet",
154
+ "type": "event"
155
+ },
156
+ {
157
+ "anonymous": false,
158
+ "inputs": [
159
+ {
160
+ "indexed": false,
161
+ "internalType": "address",
162
+ "name": "signer",
163
+ "type": "address"
164
+ },
165
+ {
166
+ "indexed": false,
167
+ "internalType": "bool",
168
+ "name": "active",
169
+ "type": "bool"
170
+ }
171
+ ],
172
+ "name": "SignerSet",
173
+ "type": "event"
174
+ },
175
+ {
176
+ "anonymous": false,
177
+ "inputs": [
178
+ {
179
+ "indexed": false,
180
+ "internalType": "uint256",
181
+ "name": "threshold",
182
+ "type": "uint256"
183
+ }
184
+ ],
185
+ "name": "ThresholdSet",
186
+ "type": "event"
187
+ },
188
+ {
189
+ "anonymous": false,
190
+ "inputs": [
191
+ {
192
+ "indexed": false,
193
+ "internalType": "bytes32",
194
+ "name": "merkleRoot",
195
+ "type": "bytes32"
196
+ },
197
+ {
198
+ "indexed": false,
199
+ "internalType": "uint256",
200
+ "name": "nonce",
201
+ "type": "uint256"
202
+ }
203
+ ],
204
+ "name": "TransactionExecuted",
205
+ "type": "event"
206
+ },
207
+ {
208
+ "inputs": [],
209
+ "name": "CHAIN_ID",
210
+ "outputs": [
211
+ {
212
+ "internalType": "uint256",
213
+ "name": "",
214
+ "type": "uint256"
215
+ }
216
+ ],
217
+ "stateMutability": "view",
218
+ "type": "function"
219
+ },
220
+ {
221
+ "inputs": [],
222
+ "name": "VERSION",
223
+ "outputs": [
224
+ {
225
+ "internalType": "string",
226
+ "name": "",
227
+ "type": "string"
228
+ }
229
+ ],
230
+ "stateMutability": "view",
231
+ "type": "function"
232
+ },
233
+ {
234
+ "inputs": [
235
+ {
236
+ "internalType": "uint256",
237
+ "name": "_nonce",
238
+ "type": "uint256"
239
+ },
240
+ {
241
+ "components": [
242
+ {
243
+ "internalType": "address",
244
+ "name": "to",
245
+ "type": "address"
246
+ },
247
+ {
248
+ "internalType": "uint256",
249
+ "name": "value",
250
+ "type": "uint256"
251
+ },
252
+ {
253
+ "internalType": "bytes",
254
+ "name": "data",
255
+ "type": "bytes"
256
+ }
257
+ ],
258
+ "internalType": "struct OneSig.Call[]",
259
+ "name": "_calls",
260
+ "type": "tuple[]"
261
+ }
262
+ ],
263
+ "name": "encodeLeaf",
264
+ "outputs": [
265
+ {
266
+ "internalType": "bytes32",
267
+ "name": "",
268
+ "type": "bytes32"
269
+ }
270
+ ],
271
+ "stateMutability": "view",
272
+ "type": "function"
273
+ },
274
+ {
275
+ "inputs": [
276
+ {
277
+ "components": [
278
+ {
279
+ "components": [
280
+ {
281
+ "internalType": "address",
282
+ "name": "to",
283
+ "type": "address"
284
+ },
285
+ {
286
+ "internalType": "uint256",
287
+ "name": "value",
288
+ "type": "uint256"
289
+ },
290
+ {
291
+ "internalType": "bytes",
292
+ "name": "data",
293
+ "type": "bytes"
294
+ }
295
+ ],
296
+ "internalType": "struct OneSig.Call[]",
297
+ "name": "calls",
298
+ "type": "tuple[]"
299
+ },
300
+ {
301
+ "internalType": "bytes32[]",
302
+ "name": "proof",
303
+ "type": "bytes32[]"
304
+ }
305
+ ],
306
+ "internalType": "struct OneSig.Transaction",
307
+ "name": "_transaction",
308
+ "type": "tuple"
309
+ },
310
+ {
311
+ "internalType": "bytes32",
312
+ "name": "_merkleRoot",
313
+ "type": "bytes32"
314
+ },
315
+ {
316
+ "internalType": "uint256",
317
+ "name": "_expiry",
318
+ "type": "uint256"
319
+ },
320
+ {
321
+ "internalType": "bytes",
322
+ "name": "_signatures",
323
+ "type": "bytes"
324
+ }
325
+ ],
326
+ "name": "executeTransaction",
327
+ "outputs": [],
328
+ "stateMutability": "payable",
329
+ "type": "function"
330
+ },
331
+ {
332
+ "inputs": [],
333
+ "name": "getSigners",
334
+ "outputs": [
335
+ {
336
+ "internalType": "address[]",
337
+ "name": "",
338
+ "type": "address[]"
339
+ }
340
+ ],
341
+ "stateMutability": "view",
342
+ "type": "function"
343
+ },
344
+ {
345
+ "inputs": [
346
+ {
347
+ "internalType": "address",
348
+ "name": "_signer",
349
+ "type": "address"
350
+ }
351
+ ],
352
+ "name": "isSigner",
353
+ "outputs": [
354
+ {
355
+ "internalType": "bool",
356
+ "name": "",
357
+ "type": "bool"
358
+ }
359
+ ],
360
+ "stateMutability": "view",
361
+ "type": "function"
362
+ },
363
+ {
364
+ "inputs": [],
365
+ "name": "nonce",
366
+ "outputs": [
367
+ {
368
+ "internalType": "uint256",
369
+ "name": "",
370
+ "type": "uint256"
371
+ }
372
+ ],
373
+ "stateMutability": "view",
374
+ "type": "function"
375
+ },
376
+ {
377
+ "inputs": [],
378
+ "name": "seed",
379
+ "outputs": [
380
+ {
381
+ "internalType": "bytes32",
382
+ "name": "",
383
+ "type": "bytes32"
384
+ }
385
+ ],
386
+ "stateMutability": "view",
387
+ "type": "function"
388
+ },
389
+ {
390
+ "inputs": [
391
+ {
392
+ "internalType": "bytes32",
393
+ "name": "_seed",
394
+ "type": "bytes32"
395
+ }
396
+ ],
397
+ "name": "setSeed",
398
+ "outputs": [],
399
+ "stateMutability": "nonpayable",
400
+ "type": "function"
401
+ },
402
+ {
403
+ "inputs": [
404
+ {
405
+ "internalType": "address",
406
+ "name": "_signer",
407
+ "type": "address"
408
+ },
409
+ {
410
+ "internalType": "bool",
411
+ "name": "_active",
412
+ "type": "bool"
413
+ }
414
+ ],
415
+ "name": "setSigner",
416
+ "outputs": [],
417
+ "stateMutability": "nonpayable",
418
+ "type": "function"
419
+ },
420
+ {
421
+ "inputs": [
422
+ {
423
+ "internalType": "uint256",
424
+ "name": "_threshold",
425
+ "type": "uint256"
426
+ }
427
+ ],
428
+ "name": "setThreshold",
429
+ "outputs": [],
430
+ "stateMutability": "nonpayable",
431
+ "type": "function"
432
+ },
433
+ {
434
+ "inputs": [],
435
+ "name": "threshold",
436
+ "outputs": [
437
+ {
438
+ "internalType": "uint256",
439
+ "name": "",
440
+ "type": "uint256"
441
+ }
442
+ ],
443
+ "stateMutability": "view",
444
+ "type": "function"
445
+ },
446
+ {
447
+ "inputs": [],
448
+ "name": "totalSigners",
449
+ "outputs": [
450
+ {
451
+ "internalType": "uint256",
452
+ "name": "",
453
+ "type": "uint256"
454
+ }
455
+ ],
456
+ "stateMutability": "view",
457
+ "type": "function"
458
+ },
459
+ {
460
+ "inputs": [
461
+ {
462
+ "internalType": "bytes32",
463
+ "name": "_merkleRoot",
464
+ "type": "bytes32"
465
+ },
466
+ {
467
+ "internalType": "uint256",
468
+ "name": "_expiry",
469
+ "type": "uint256"
470
+ },
471
+ {
472
+ "internalType": "bytes",
473
+ "name": "_signatures",
474
+ "type": "bytes"
475
+ }
476
+ ],
477
+ "name": "verifyMerkleRoot",
478
+ "outputs": [],
479
+ "stateMutability": "view",
480
+ "type": "function"
481
+ },
482
+ {
483
+ "inputs": [
484
+ {
485
+ "internalType": "bytes32",
486
+ "name": "_digest",
487
+ "type": "bytes32"
488
+ },
489
+ {
490
+ "internalType": "bytes",
491
+ "name": "_signatures",
492
+ "type": "bytes"
493
+ },
494
+ {
495
+ "internalType": "uint256",
496
+ "name": "_threshold",
497
+ "type": "uint256"
498
+ }
499
+ ],
500
+ "name": "verifyNSignatures",
501
+ "outputs": [],
502
+ "stateMutability": "view",
503
+ "type": "function"
504
+ },
505
+ {
506
+ "inputs": [
507
+ {
508
+ "internalType": "bytes32",
509
+ "name": "_digest",
510
+ "type": "bytes32"
511
+ },
512
+ {
513
+ "internalType": "bytes",
514
+ "name": "_signatures",
515
+ "type": "bytes"
516
+ }
517
+ ],
518
+ "name": "verifySignatures",
519
+ "outputs": [],
520
+ "stateMutability": "view",
521
+ "type": "function"
522
+ },
523
+ {
524
+ "inputs": [
525
+ {
526
+ "internalType": "bytes32",
527
+ "name": "_merkleRoot",
528
+ "type": "bytes32"
529
+ },
530
+ {
531
+ "components": [
532
+ {
533
+ "components": [
534
+ {
535
+ "internalType": "address",
536
+ "name": "to",
537
+ "type": "address"
538
+ },
539
+ {
540
+ "internalType": "uint256",
541
+ "name": "value",
542
+ "type": "uint256"
543
+ },
544
+ {
545
+ "internalType": "bytes",
546
+ "name": "data",
547
+ "type": "bytes"
548
+ }
549
+ ],
550
+ "internalType": "struct OneSig.Call[]",
551
+ "name": "calls",
552
+ "type": "tuple[]"
553
+ },
554
+ {
555
+ "internalType": "bytes32[]",
556
+ "name": "proof",
557
+ "type": "bytes32[]"
558
+ }
559
+ ],
560
+ "internalType": "struct OneSig.Transaction",
561
+ "name": "_transaction",
562
+ "type": "tuple"
563
+ }
564
+ ],
565
+ "name": "verifyTransactionProof",
566
+ "outputs": [],
567
+ "stateMutability": "view",
568
+ "type": "function"
569
+ },
570
+ {
571
+ "stateMutability": "payable",
572
+ "type": "receive"
573
+ }
574
+ ],
575
+ "bytecode": "0x60c06040523480156200001157600080fd5b50d380156200001f57600080fd5b50d280156200002d57600080fd5b506040516200219d3803806200219d833981016040819052620000509162000333565b838360005b8251811015620000a1576200008c83828151811062000078576200007862000420565b60200260200101516200012360201b60201c565b80620000988162000436565b91505062000055565b50620000ad81620001cc565b505060808290526040805160208101849052309181019190915260600160408051808303601f1901815290829052805160209182012060a05260038390558282527f36d9c0a688d366a03517cca4843dfff4e45db3869d5fd86fb9d15a1b45ce0e5a910160405180910390a1505050506200045e565b6001600160a01b0381166200014b57604051632057875960e21b815260040160405180910390fd5b6200015860008262000264565b62000186576040516327ec359360e21b81526001600160a01b03821660048201526024015b60405180910390fd5b604080516001600160a01b0383168152600160208201527ffc4acb499491cd850a8a21ab98c7f128850c0f0e5f1a875a62b7fa055c2ecf1991015b60405180910390a150565b80600003620001ee5760405163831761d760e01b815260040160405180910390fd5b80620001f962000284565b10156200022e576200020a62000284565b60405162daa43760e71b81526004810191909152602481018290526044016200017d565b60028190556040518181527f6e8a187d7944998085dbd1f16b84c51c903bb727536cdba86962439aded2cfd790602001620001c1565b60006200027b836001600160a01b03841662000296565b90505b92915050565b60006200029181620002e8565b905090565b6000818152600183016020526040812054620002df575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556200027e565b5060006200027e565b60006200027e825490565b634e487b7160e01b600052604160045260246000fd5b80516000906001600160a81b03811681146200032457600080fd5b6001600160a01b031692915050565b600080600080608085870312156200034a57600080fd5b84516001600160401b03808211156200036257600080fd5b818701915087601f8301126200037757600080fd5b81516020828211156200038e576200038e620002f3565b8160051b604051601f19603f83011681018181108682111715620003b657620003b6620002f3565b60405292835281830193508481018201928b841115620003d557600080fd5b948201945b83861015620003fe57620003ee8662000309565b85529482019493820193620003da565b918a015160408b01516060909b0151929c909b50919850909650505050505050565b634e487b7160e01b600052603260045260246000fd5b6000600182016200045757634e487b7160e01b600052601160045260246000fd5b5060010190565b60805160a051611d19620004846000396000610c74015260006102f10152611d196000f3fe6080604052600436106101125760003560e01c80638e6725bd116100a5578063c7a823e011610074578063d63f97c911610059578063d63f97c914610435578063e3bd03621461046f578063ffa1ad74146104a957600080fd5b8063c7a823e0146103cc578063d1a626481461040657600080fd5b80638e6725bd1461031357806394cf795e14610326578063960bfe0414610362578063affed0e01461039c57600080fd5b80636419ebde116100e15780636419ebde146102115780637d94792a1461024b5780637df73e271461027b57806385e1f4d0146102c557600080fd5b80632b03f6ab1461011e57806331cb61051461015a578063347024ff1461019457806342cde4e8146101ce57600080fd5b3661011957005b600080fd5b34801561012a57600080fd5b50d3801561013757600080fd5b50d2801561014457600080fd5b506101586101533660046114f5565b610519565b005b34801561016657600080fd5b50d3801561017357600080fd5b50d2801561018057600080fd5b5061015861018f36600461158b565b610723565b3480156101a057600080fd5b50d380156101ad57600080fd5b50d280156101ba57600080fd5b506101586101c93660046115c7565b610778565b3480156101da57600080fd5b50d380156101e757600080fd5b50d280156101f457600080fd5b506101fe60025481565b6040519081526020015b60405180910390f35b34801561021d57600080fd5b50d3801561022a57600080fd5b50d2801561023757600080fd5b506101586102463660046115e0565b6107ed565b34801561025757600080fd5b50d3801561026457600080fd5b50d2801561027157600080fd5b506101fe60035481565b34801561028757600080fd5b50d3801561029457600080fd5b50d280156102a157600080fd5b506102b56102b0366004611633565b610999565b6040519015158152602001610208565b3480156102d157600080fd5b50d380156102de57600080fd5b50d280156102eb57600080fd5b506101fe7f000000000000000000000000000000000000000000000000000000000000000081565b610158610321366004611666565b6109ab565b34801561033257600080fd5b50d3801561033f57600080fd5b50d2801561034c57600080fd5b50610355610b8d565b60405161020891906116e4565b34801561036e57600080fd5b50d3801561037b57600080fd5b50d2801561038857600080fd5b506101586103973660046115c7565b610b9e565b3480156103a857600080fd5b50d380156103b557600080fd5b50d280156103c257600080fd5b506101fe60045481565b3480156103d857600080fd5b50d380156103e557600080fd5b50d280156103f257600080fd5b5061015861040136600461173e565b610be3565b34801561041257600080fd5b50d3801561041f57600080fd5b50d2801561042c57600080fd5b506101fe610bf6565b34801561044157600080fd5b50d3801561044e57600080fd5b50d2801561045b57600080fd5b5061015861046a36600461178a565b610c02565b34801561047b57600080fd5b50d3801561048857600080fd5b50d2801561049557600080fd5b506101fe6104a43660046117d1565b610c70565b3480156104b557600080fd5b50d380156104c257600080fd5b50d280156104cf57600080fd5b5061050c6040518060400160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6040516102089190611874565b82421115610553576040517f4f01675500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080518082018252600281527f190100000000000000000000000000000000000000000000000000000000000060208083019190915282518084018452600681527f4f6e655369670000000000000000000000000000000000000000000000000000908201528251808401845260018082527f31000000000000000000000000000000000000000000000000000000000000009183019190915283517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818401527fbd7855a8d66a83be54ebc7fa5f2e3fb658ab6007afa89cd93dfca08ad1b97ec8818601527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081019190915261dead60a0808301919091528451808303909101815260c0820185528051908301206003547f642ed5d2b77bc7ccb98e10da4c02d7cd8231228da4222a9f88a80c15545074ed60e08401526101008301526101208201899052610140808301899052855180840390910181526101608301909552845194909201939093206000936106f993929190610180016118c5565b60405160208183030381529060405280519060200120905061071c818484610be3565b5050505050565b33301461075c576040517f95f702ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b801561076f5761076b82610cc8565b5050565b61076b82610dba565b3330146107b1576040517f95f702ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527f36d9c0a688d366a03517cca4843dfff4e45db3869d5fd86fb9d15a1b45ce0e5a906020015b60405180910390a150565b6107f881604161191b565b8214610830576040517fcd2467c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b8281101561099157366000868661084c85604161191b565b90610858866001611932565b61086390604161191b565b9261087093929190611945565b9150915060006108b68984848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610eb692505050565b90508473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161161091d576040517fd02ef0e500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61092681610999565b610979576040517f53b1def100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b935082915061098990508161196f565b915050610834565b505050505050565b60006109a58183610ee0565b92915050565b6109b784848484610519565b6109c18486610c02565b60048054600091826109d28361196f565b91905055905060005b6109e587806119a7565b9050811015610b4b5760006109fa88806119a7565b83818110610a0a57610a0a611a0f565b9050602002810190610a1c9190611a3e565b610a2a906020810190611633565b73ffffffffffffffffffffffffffffffffffffffff16610a4a89806119a7565b84818110610a5a57610a5a611a0f565b9050602002810190610a6c9190611a3e565b60200135610a7a8a806119a7565b85818110610a8a57610a8a611a0f565b9050602002810190610a9c9190611a3e565b610aaa906040810190611a7c565b604051610ab8929190611ae1565b60006040518083038185875af1925050503d8060008114610af5576040519150601f19603f3d011682016040523d82523d6000602084013e610afa565b606091505b5050905080610b38576040517f492fd70e00000000000000000000000000000000000000000000000000000000815260048101839052602401610970565b5080610b438161196f565b9150506109db565b5060408051868152602081018390527fd9a0df418868c38712b1f6eab685bc77a2e49596edd77667ab34d5448f5f941c910160405180910390a1505050505050565b6060610b996000610f12565b905090565b333014610bd7576040517f95f702ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610be081610f1f565b50565b610bf18383836002546107ed565b505050565b6000610b996000610fe2565b600454600090610c16906104a484806119a7565b90506000610c31610c2a60208501856119a7565b8685610fec565b905080610c6a576040517f2a1704e200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b60007f0000000000000000000000000000000000000000000000000000000000000000848484604051602001610ca99493929190611af1565b6040516020818303038152906040528051906020012090509392505050565b73ffffffffffffffffffffffffffffffffffffffff8116610d15576040517f815e1d6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d20600082611004565b610d6e576040517f9fb0d64c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610970565b6040805173ffffffffffffffffffffffffffffffffffffffff83168152600160208201527ffc4acb499491cd850a8a21ab98c7f128850c0f0e5f1a875a62b7fa055c2ecf1991016107e2565b610dc5600082611026565b610e13576040517f53b1def100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610970565b600254610e1e610bf6565b1015610e6a57610e2c610bf6565b6002546040517f6d521b8000000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610970565b6040805173ffffffffffffffffffffffffffffffffffffffff83168152600060208201527ffc4acb499491cd850a8a21ab98c7f128850c0f0e5f1a875a62b7fa055c2ecf1991016107e2565b600080600080610ec68686611048565b925092509250610ed68282611095565b5090949350505050565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260018301602052604081205415155b9392505050565b60606000610f0b83611199565b80600003610f59576040517f831761d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80610f62610bf6565b1015610fad57610f70610bf6565b6040517f6d521b80000000000000000000000000000000000000000000000000000000008152600481019190915260248101829052604401610970565b60028190556040518181527f6e8a187d7944998085dbd1f16b84c51c903bb727536cdba86962439aded2cfd7906020016107e2565b60006109a5825490565b600082610ffa8686856111f5565b1495945050505050565b6000610f0b8373ffffffffffffffffffffffffffffffffffffffff8416611241565b6000610f0b8373ffffffffffffffffffffffffffffffffffffffff8416611290565b600080600083516041036110825760208401516040850151606086015160001a61107488828585611383565b95509550955050505061108e565b50508151600091506002905b9250925092565b60008260038111156110a9576110a9611c72565b036110b2575050565b60018260038111156110c6576110c6611c72565b036110fd576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600282600381111561111157611111611c72565b0361114b576040517ffce698f700000000000000000000000000000000000000000000000000000000815260048101829052602401610970565b600382600381111561115f5761115f611c72565b0361076b576040517fd78bce0c00000000000000000000000000000000000000000000000000000000815260048101829052602401610970565b6060816000018054806020026020016040519081016040528092919081815260200182805480156111e957602002820191906000526020600020905b8154815260200190600101908083116111d5575b50505050509050919050565b600081815b84811015611238576112248287878481811061121857611218611a0f565b9050602002013561147d565b9150806112308161196f565b9150506111fa565b50949350505050565b6000818152600183016020526040812054611288575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556109a5565b5060006109a5565b600081815260018301602052604081205480156113795760006112b4600183611ca1565b85549091506000906112c890600190611ca1565b905080821461132d5760008660000182815481106112e8576112e8611a0f565b906000526020600020015490508087600001848154811061130b5761130b611a0f565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061133e5761133e611cb4565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506109a5565b60009150506109a5565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156113be5750600091506003905082611473565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611412573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811661146957506000925060019150829050611473565b9250600091508190505b9450945094915050565b6000818310611499576000828152602084905260409020610f0b565b6000838152602083905260409020610f0b565b60008083601f8401126114be57600080fd5b50813567ffffffffffffffff8111156114d657600080fd5b6020830191508360208285010111156114ee57600080fd5b9250929050565b6000806000806060858703121561150b57600080fd5b8435935060208501359250604085013567ffffffffffffffff81111561153057600080fd5b61153c878288016114ac565b95989497509550505050565b6000813574ffffffffffffffffffffffffffffffffffffffffff8116811461156f57600080fd5b73ffffffffffffffffffffffffffffffffffffffff1692915050565b6000806040838503121561159e57600080fd5b6115a783611548565b9150602083013580151581146115bc57600080fd5b809150509250929050565b6000602082840312156115d957600080fd5b5035919050565b600080600080606085870312156115f657600080fd5b84359350602085013567ffffffffffffffff81111561161457600080fd5b611620878288016114ac565b9598909750949560400135949350505050565b60006020828403121561164557600080fd5b610f0b82611548565b60006040828403121561166057600080fd5b50919050565b60008060008060006080868803121561167e57600080fd5b853567ffffffffffffffff8082111561169657600080fd5b6116a289838a0161164e565b9650602088013595506040880135945060608801359150808211156116c657600080fd5b506116d3888289016114ac565b969995985093965092949392505050565b6020808252825182820181905260009190848201906040850190845b8181101561173257835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101611700565b50909695505050505050565b60008060006040848603121561175357600080fd5b83359250602084013567ffffffffffffffff81111561177157600080fd5b61177d868287016114ac565b9497909650939450505050565b6000806040838503121561179d57600080fd5b82359150602083013567ffffffffffffffff8111156117bb57600080fd5b6117c78582860161164e565b9150509250929050565b6000806000604084860312156117e657600080fd5b83359250602084013567ffffffffffffffff8082111561180557600080fd5b818601915086601f83011261181957600080fd5b81358181111561182857600080fd5b8760208260051b850101111561183d57600080fd5b6020830194508093505050509250925092565b60005b8381101561186b578181015183820152602001611853565b50506000910152565b6020815260008251806020840152611893816040850160208701611850565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b600084516118d7818460208901611850565b91909101928352506020820152604001919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176109a5576109a56118ec565b808201808211156109a5576109a56118ec565b6000808585111561195557600080fd5b8386111561196257600080fd5b5050820193919092039150565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036119a0576119a06118ec565b5060010190565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126119dc57600080fd5b83018035915067ffffffffffffffff8211156119f757600080fd5b6020019150600581901b36038213156114ee57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112611a7257600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611ab157600080fd5b83018035915067ffffffffffffffff821115611acc57600080fd5b6020019150368190038213156114ee57600080fd5b8183823760009101908152919050565b60006060808301878452602087818601526040838187015282878452608093508387019050838860051b8801018960005b8a811015611c60577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808a840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18d3603018112611b8357600080fd5b8c0173ffffffffffffffffffffffffffffffffffffffff611ba382611548565b1684528681013587850152858101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1823603018112611be257600080fd5b01868101903567ffffffffffffffff811115611bfd57600080fd5b803603821315611c0c57600080fd5b8987860152808a86015280828a87013760008582018a015294870194601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169093018701925090850190600101611b22565b50909c9b505050505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b818103818111156109a5576109a56118ec565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26474726f6e58221220f48ced18ff429e73a4781055ac5c434157cf275d7606ff8a00d5e18be7ca8e5164736f6c63430008140033",
576
+ "deployedBytecode": "0x6080604052600436106101125760003560e01c80638e6725bd116100a5578063c7a823e011610074578063d63f97c911610059578063d63f97c914610435578063e3bd03621461046f578063ffa1ad74146104a957600080fd5b8063c7a823e0146103cc578063d1a626481461040657600080fd5b80638e6725bd1461031357806394cf795e14610326578063960bfe0414610362578063affed0e01461039c57600080fd5b80636419ebde116100e15780636419ebde146102115780637d94792a1461024b5780637df73e271461027b57806385e1f4d0146102c557600080fd5b80632b03f6ab1461011e57806331cb61051461015a578063347024ff1461019457806342cde4e8146101ce57600080fd5b3661011957005b600080fd5b34801561012a57600080fd5b50d3801561013757600080fd5b50d2801561014457600080fd5b506101586101533660046114f5565b610519565b005b34801561016657600080fd5b50d3801561017357600080fd5b50d2801561018057600080fd5b5061015861018f36600461158b565b610723565b3480156101a057600080fd5b50d380156101ad57600080fd5b50d280156101ba57600080fd5b506101586101c93660046115c7565b610778565b3480156101da57600080fd5b50d380156101e757600080fd5b50d280156101f457600080fd5b506101fe60025481565b6040519081526020015b60405180910390f35b34801561021d57600080fd5b50d3801561022a57600080fd5b50d2801561023757600080fd5b506101586102463660046115e0565b6107ed565b34801561025757600080fd5b50d3801561026457600080fd5b50d2801561027157600080fd5b506101fe60035481565b34801561028757600080fd5b50d3801561029457600080fd5b50d280156102a157600080fd5b506102b56102b0366004611633565b610999565b6040519015158152602001610208565b3480156102d157600080fd5b50d380156102de57600080fd5b50d280156102eb57600080fd5b506101fe7f000000000000000000000000000000000000000000000000000000000000000081565b610158610321366004611666565b6109ab565b34801561033257600080fd5b50d3801561033f57600080fd5b50d2801561034c57600080fd5b50610355610b8d565b60405161020891906116e4565b34801561036e57600080fd5b50d3801561037b57600080fd5b50d2801561038857600080fd5b506101586103973660046115c7565b610b9e565b3480156103a857600080fd5b50d380156103b557600080fd5b50d280156103c257600080fd5b506101fe60045481565b3480156103d857600080fd5b50d380156103e557600080fd5b50d280156103f257600080fd5b5061015861040136600461173e565b610be3565b34801561041257600080fd5b50d3801561041f57600080fd5b50d2801561042c57600080fd5b506101fe610bf6565b34801561044157600080fd5b50d3801561044e57600080fd5b50d2801561045b57600080fd5b5061015861046a36600461178a565b610c02565b34801561047b57600080fd5b50d3801561048857600080fd5b50d2801561049557600080fd5b506101fe6104a43660046117d1565b610c70565b3480156104b557600080fd5b50d380156104c257600080fd5b50d280156104cf57600080fd5b5061050c6040518060400160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6040516102089190611874565b82421115610553576040517f4f01675500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080518082018252600281527f190100000000000000000000000000000000000000000000000000000000000060208083019190915282518084018452600681527f4f6e655369670000000000000000000000000000000000000000000000000000908201528251808401845260018082527f31000000000000000000000000000000000000000000000000000000000000009183019190915283517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818401527fbd7855a8d66a83be54ebc7fa5f2e3fb658ab6007afa89cd93dfca08ad1b97ec8818601527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081019190915261dead60a0808301919091528451808303909101815260c0820185528051908301206003547f642ed5d2b77bc7ccb98e10da4c02d7cd8231228da4222a9f88a80c15545074ed60e08401526101008301526101208201899052610140808301899052855180840390910181526101608301909552845194909201939093206000936106f993929190610180016118c5565b60405160208183030381529060405280519060200120905061071c818484610be3565b5050505050565b33301461075c576040517f95f702ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b801561076f5761076b82610cc8565b5050565b61076b82610dba565b3330146107b1576040517f95f702ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527f36d9c0a688d366a03517cca4843dfff4e45db3869d5fd86fb9d15a1b45ce0e5a906020015b60405180910390a150565b6107f881604161191b565b8214610830576040517fcd2467c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b8281101561099157366000868661084c85604161191b565b90610858866001611932565b61086390604161191b565b9261087093929190611945565b9150915060006108b68984848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610eb692505050565b90508473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161161091d576040517fd02ef0e500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61092681610999565b610979576040517f53b1def100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b935082915061098990508161196f565b915050610834565b505050505050565b60006109a58183610ee0565b92915050565b6109b784848484610519565b6109c18486610c02565b60048054600091826109d28361196f565b91905055905060005b6109e587806119a7565b9050811015610b4b5760006109fa88806119a7565b83818110610a0a57610a0a611a0f565b9050602002810190610a1c9190611a3e565b610a2a906020810190611633565b73ffffffffffffffffffffffffffffffffffffffff16610a4a89806119a7565b84818110610a5a57610a5a611a0f565b9050602002810190610a6c9190611a3e565b60200135610a7a8a806119a7565b85818110610a8a57610a8a611a0f565b9050602002810190610a9c9190611a3e565b610aaa906040810190611a7c565b604051610ab8929190611ae1565b60006040518083038185875af1925050503d8060008114610af5576040519150601f19603f3d011682016040523d82523d6000602084013e610afa565b606091505b5050905080610b38576040517f492fd70e00000000000000000000000000000000000000000000000000000000815260048101839052602401610970565b5080610b438161196f565b9150506109db565b5060408051868152602081018390527fd9a0df418868c38712b1f6eab685bc77a2e49596edd77667ab34d5448f5f941c910160405180910390a1505050505050565b6060610b996000610f12565b905090565b333014610bd7576040517f95f702ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610be081610f1f565b50565b610bf18383836002546107ed565b505050565b6000610b996000610fe2565b600454600090610c16906104a484806119a7565b90506000610c31610c2a60208501856119a7565b8685610fec565b905080610c6a576040517f2a1704e200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b60007f0000000000000000000000000000000000000000000000000000000000000000848484604051602001610ca99493929190611af1565b6040516020818303038152906040528051906020012090509392505050565b73ffffffffffffffffffffffffffffffffffffffff8116610d15576040517f815e1d6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d20600082611004565b610d6e576040517f9fb0d64c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610970565b6040805173ffffffffffffffffffffffffffffffffffffffff83168152600160208201527ffc4acb499491cd850a8a21ab98c7f128850c0f0e5f1a875a62b7fa055c2ecf1991016107e2565b610dc5600082611026565b610e13576040517f53b1def100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610970565b600254610e1e610bf6565b1015610e6a57610e2c610bf6565b6002546040517f6d521b8000000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610970565b6040805173ffffffffffffffffffffffffffffffffffffffff83168152600060208201527ffc4acb499491cd850a8a21ab98c7f128850c0f0e5f1a875a62b7fa055c2ecf1991016107e2565b600080600080610ec68686611048565b925092509250610ed68282611095565b5090949350505050565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260018301602052604081205415155b9392505050565b60606000610f0b83611199565b80600003610f59576040517f831761d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80610f62610bf6565b1015610fad57610f70610bf6565b6040517f6d521b80000000000000000000000000000000000000000000000000000000008152600481019190915260248101829052604401610970565b60028190556040518181527f6e8a187d7944998085dbd1f16b84c51c903bb727536cdba86962439aded2cfd7906020016107e2565b60006109a5825490565b600082610ffa8686856111f5565b1495945050505050565b6000610f0b8373ffffffffffffffffffffffffffffffffffffffff8416611241565b6000610f0b8373ffffffffffffffffffffffffffffffffffffffff8416611290565b600080600083516041036110825760208401516040850151606086015160001a61107488828585611383565b95509550955050505061108e565b50508151600091506002905b9250925092565b60008260038111156110a9576110a9611c72565b036110b2575050565b60018260038111156110c6576110c6611c72565b036110fd576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600282600381111561111157611111611c72565b0361114b576040517ffce698f700000000000000000000000000000000000000000000000000000000815260048101829052602401610970565b600382600381111561115f5761115f611c72565b0361076b576040517fd78bce0c00000000000000000000000000000000000000000000000000000000815260048101829052602401610970565b6060816000018054806020026020016040519081016040528092919081815260200182805480156111e957602002820191906000526020600020905b8154815260200190600101908083116111d5575b50505050509050919050565b600081815b84811015611238576112248287878481811061121857611218611a0f565b9050602002013561147d565b9150806112308161196f565b9150506111fa565b50949350505050565b6000818152600183016020526040812054611288575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556109a5565b5060006109a5565b600081815260018301602052604081205480156113795760006112b4600183611ca1565b85549091506000906112c890600190611ca1565b905080821461132d5760008660000182815481106112e8576112e8611a0f565b906000526020600020015490508087600001848154811061130b5761130b611a0f565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061133e5761133e611cb4565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506109a5565b60009150506109a5565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156113be5750600091506003905082611473565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611412573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811661146957506000925060019150829050611473565b9250600091508190505b9450945094915050565b6000818310611499576000828152602084905260409020610f0b565b6000838152602083905260409020610f0b565b60008083601f8401126114be57600080fd5b50813567ffffffffffffffff8111156114d657600080fd5b6020830191508360208285010111156114ee57600080fd5b9250929050565b6000806000806060858703121561150b57600080fd5b8435935060208501359250604085013567ffffffffffffffff81111561153057600080fd5b61153c878288016114ac565b95989497509550505050565b6000813574ffffffffffffffffffffffffffffffffffffffffff8116811461156f57600080fd5b73ffffffffffffffffffffffffffffffffffffffff1692915050565b6000806040838503121561159e57600080fd5b6115a783611548565b9150602083013580151581146115bc57600080fd5b809150509250929050565b6000602082840312156115d957600080fd5b5035919050565b600080600080606085870312156115f657600080fd5b84359350602085013567ffffffffffffffff81111561161457600080fd5b611620878288016114ac565b9598909750949560400135949350505050565b60006020828403121561164557600080fd5b610f0b82611548565b60006040828403121561166057600080fd5b50919050565b60008060008060006080868803121561167e57600080fd5b853567ffffffffffffffff8082111561169657600080fd5b6116a289838a0161164e565b9650602088013595506040880135945060608801359150808211156116c657600080fd5b506116d3888289016114ac565b969995985093965092949392505050565b6020808252825182820181905260009190848201906040850190845b8181101561173257835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101611700565b50909695505050505050565b60008060006040848603121561175357600080fd5b83359250602084013567ffffffffffffffff81111561177157600080fd5b61177d868287016114ac565b9497909650939450505050565b6000806040838503121561179d57600080fd5b82359150602083013567ffffffffffffffff8111156117bb57600080fd5b6117c78582860161164e565b9150509250929050565b6000806000604084860312156117e657600080fd5b83359250602084013567ffffffffffffffff8082111561180557600080fd5b818601915086601f83011261181957600080fd5b81358181111561182857600080fd5b8760208260051b850101111561183d57600080fd5b6020830194508093505050509250925092565b60005b8381101561186b578181015183820152602001611853565b50506000910152565b6020815260008251806020840152611893816040850160208701611850565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b600084516118d7818460208901611850565b91909101928352506020820152604001919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176109a5576109a56118ec565b808201808211156109a5576109a56118ec565b6000808585111561195557600080fd5b8386111561196257600080fd5b5050820193919092039150565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036119a0576119a06118ec565b5060010190565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126119dc57600080fd5b83018035915067ffffffffffffffff8211156119f757600080fd5b6020019150600581901b36038213156114ee57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112611a7257600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611ab157600080fd5b83018035915067ffffffffffffffff821115611acc57600080fd5b6020019150368190038213156114ee57600080fd5b8183823760009101908152919050565b60006060808301878452602087818601526040838187015282878452608093508387019050838860051b8801018960005b8a811015611c60577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808a840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18d3603018112611b8357600080fd5b8c0173ffffffffffffffffffffffffffffffffffffffff611ba382611548565b1684528681013587850152858101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1823603018112611be257600080fd5b01868101903567ffffffffffffffff811115611bfd57600080fd5b803603821315611c0c57600080fd5b8987860152808a86015280828a87013760008582018a015294870194601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169093018701925090850190600101611b22565b50909c9b505050505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b818103818111156109a5576109a56118ec565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26474726f6e58221220f48ced18ff429e73a4781055ac5c434157cf275d7606ff8a00d5e18be7ca8e5164736f6c63430008140033",
577
+ "linkReferences": {},
578
+ "deployedLinkReferences": {}
579
+ }