@layerzerolabs/onesig-evm 0.0.8 → 0.0.10

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.
Files changed (39) hide show
  1. package/artifacts/contracts/ExecutorStore.sol/ExecutorStore.json +164 -0
  2. package/artifacts/contracts/MultiSig.sol/MultiSig.json +2 -2
  3. package/artifacts/contracts/OneSig.sol/OneSig.json +198 -11
  4. package/artifacts/contracts/lib/SelfCallable.sol/SelfCallable.json +16 -0
  5. package/artifacts-tron/contracts/ExecutorStore.sol/ExecutorStore.json +164 -0
  6. package/artifacts-tron/contracts/MultiSig.sol/MultiSig.json +2 -2
  7. package/artifacts-tron/contracts/OneSig.sol/OneSig.json +198 -11
  8. package/artifacts-tron/contracts/lib/SelfCallable.sol/SelfCallable.json +16 -0
  9. package/artifacts-zk/contracts/ExecutorStore.sol/ExecutorStore.json +165 -0
  10. package/artifacts-zk/contracts/MultiSig.sol/MultiSig.json +2 -2
  11. package/artifacts-zk/contracts/OneSig.sol/OneSig.json +198 -11
  12. package/artifacts-zk/contracts/lib/SelfCallable.sol/SelfCallable.json +17 -0
  13. package/contracts/ExecutorStore.sol +137 -0
  14. package/contracts/MultiSig.sol +15 -20
  15. package/contracts/OneSig.sol +53 -26
  16. package/contracts/lib/SelfCallable.sol +16 -0
  17. package/dist/index.js +1 -0
  18. package/package.json +5 -4
  19. package/typechain-types/@openzeppelin/contracts/utils/ReentrancyGuard.ts +55 -0
  20. package/typechain-types/@openzeppelin/contracts/utils/index.ts +1 -0
  21. package/typechain-types/contracts/ExecutorStore.ts +286 -0
  22. package/typechain-types/contracts/MultiSig.ts +5 -2
  23. package/typechain-types/contracts/OneSig.ts +248 -3
  24. package/typechain-types/contracts/index.ts +3 -0
  25. package/typechain-types/contracts/lib/SelfCallable.ts +55 -0
  26. package/typechain-types/contracts/lib/index.ts +4 -0
  27. package/typechain-types/factories/@openzeppelin/contracts/utils/ReentrancyGuard__factory.ts +31 -0
  28. package/typechain-types/factories/@openzeppelin/contracts/utils/cryptography/ECDSA__factory.ts +1 -1
  29. package/typechain-types/factories/@openzeppelin/contracts/utils/cryptography/MerkleProof__factory.ts +1 -1
  30. package/typechain-types/factories/@openzeppelin/contracts/utils/index.ts +1 -0
  31. package/typechain-types/factories/contracts/ExecutorStore__factory.ts +179 -0
  32. package/typechain-types/factories/contracts/MultiSig__factory.ts +2 -2
  33. package/typechain-types/factories/contracts/OneSig__factory.ts +209 -14
  34. package/typechain-types/factories/contracts/index.ts +2 -0
  35. package/typechain-types/factories/contracts/lib/SelfCallable__factory.ts +31 -0
  36. package/typechain-types/factories/contracts/lib/index.ts +4 -0
  37. package/typechain-types/factories/contracts/mocks/MockOApp__factory.ts +1 -1
  38. package/typechain-types/hardhat.d.ts +27 -0
  39. package/typechain-types/index.ts +6 -0
@@ -0,0 +1,164 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "ExecutorStore",
4
+ "sourceName": "contracts/ExecutorStore.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "address",
10
+ "name": "executor",
11
+ "type": "address"
12
+ }
13
+ ],
14
+ "name": "ExecutorAlreadyActive",
15
+ "type": "error"
16
+ },
17
+ {
18
+ "inputs": [
19
+ {
20
+ "internalType": "address",
21
+ "name": "executor",
22
+ "type": "address"
23
+ }
24
+ ],
25
+ "name": "ExecutorNotFound",
26
+ "type": "error"
27
+ },
28
+ {
29
+ "inputs": [],
30
+ "name": "InvalidExecutor",
31
+ "type": "error"
32
+ },
33
+ {
34
+ "inputs": [],
35
+ "name": "OnlySelfCall",
36
+ "type": "error"
37
+ },
38
+ {
39
+ "anonymous": false,
40
+ "inputs": [
41
+ {
42
+ "indexed": false,
43
+ "internalType": "bool",
44
+ "name": "required",
45
+ "type": "bool"
46
+ }
47
+ ],
48
+ "name": "ExecutorRequiredSet",
49
+ "type": "event"
50
+ },
51
+ {
52
+ "anonymous": false,
53
+ "inputs": [
54
+ {
55
+ "indexed": true,
56
+ "internalType": "address",
57
+ "name": "executor",
58
+ "type": "address"
59
+ },
60
+ {
61
+ "indexed": false,
62
+ "internalType": "bool",
63
+ "name": "active",
64
+ "type": "bool"
65
+ }
66
+ ],
67
+ "name": "ExecutorSet",
68
+ "type": "event"
69
+ },
70
+ {
71
+ "inputs": [],
72
+ "name": "executorRequired",
73
+ "outputs": [
74
+ {
75
+ "internalType": "bool",
76
+ "name": "",
77
+ "type": "bool"
78
+ }
79
+ ],
80
+ "stateMutability": "view",
81
+ "type": "function"
82
+ },
83
+ {
84
+ "inputs": [],
85
+ "name": "getExecutors",
86
+ "outputs": [
87
+ {
88
+ "internalType": "address[]",
89
+ "name": "",
90
+ "type": "address[]"
91
+ }
92
+ ],
93
+ "stateMutability": "view",
94
+ "type": "function"
95
+ },
96
+ {
97
+ "inputs": [
98
+ {
99
+ "internalType": "address",
100
+ "name": "_executor",
101
+ "type": "address"
102
+ }
103
+ ],
104
+ "name": "isExecutor",
105
+ "outputs": [
106
+ {
107
+ "internalType": "bool",
108
+ "name": "",
109
+ "type": "bool"
110
+ }
111
+ ],
112
+ "stateMutability": "view",
113
+ "type": "function"
114
+ },
115
+ {
116
+ "inputs": [
117
+ {
118
+ "internalType": "address",
119
+ "name": "_executor",
120
+ "type": "address"
121
+ },
122
+ {
123
+ "internalType": "bool",
124
+ "name": "_active",
125
+ "type": "bool"
126
+ }
127
+ ],
128
+ "name": "setExecutor",
129
+ "outputs": [],
130
+ "stateMutability": "nonpayable",
131
+ "type": "function"
132
+ },
133
+ {
134
+ "inputs": [
135
+ {
136
+ "internalType": "bool",
137
+ "name": "_executorRequired",
138
+ "type": "bool"
139
+ }
140
+ ],
141
+ "name": "setExecutorRequired",
142
+ "outputs": [],
143
+ "stateMutability": "nonpayable",
144
+ "type": "function"
145
+ },
146
+ {
147
+ "inputs": [],
148
+ "name": "totalExecutors",
149
+ "outputs": [
150
+ {
151
+ "internalType": "uint256",
152
+ "name": "",
153
+ "type": "uint256"
154
+ }
155
+ ],
156
+ "stateMutability": "view",
157
+ "type": "function"
158
+ }
159
+ ],
160
+ "bytecode": "0x",
161
+ "deployedBytecode": "0x",
162
+ "linkReferences": {},
163
+ "deployedLinkReferences": {}
164
+ }
@@ -37,7 +37,7 @@
37
37
  },
38
38
  {
39
39
  "inputs": [],
40
- "name": "OnlyMultiSig",
40
+ "name": "OnlySelfCall",
41
41
  "type": "error"
42
42
  },
43
43
  {
@@ -97,7 +97,7 @@
97
97
  "anonymous": false,
98
98
  "inputs": [
99
99
  {
100
- "indexed": false,
100
+ "indexed": true,
101
101
  "internalType": "address",
102
102
  "name": "signer",
103
103
  "type": "address"
@@ -5,6 +5,11 @@
5
5
  "abi": [
6
6
  {
7
7
  "inputs": [
8
+ {
9
+ "internalType": "uint64",
10
+ "name": "_oneSigId",
11
+ "type": "uint64"
12
+ },
8
13
  {
9
14
  "internalType": "address[]",
10
15
  "name": "_signers",
@@ -16,9 +21,14 @@
16
21
  "type": "uint256"
17
22
  },
18
23
  {
19
- "internalType": "uint64",
20
- "name": "_oneSigId",
21
- "type": "uint64"
24
+ "internalType": "address[]",
25
+ "name": "_executors",
26
+ "type": "address[]"
27
+ },
28
+ {
29
+ "internalType": "bool",
30
+ "name": "_executorRequired",
31
+ "type": "bool"
22
32
  },
23
33
  {
24
34
  "internalType": "bytes32",
@@ -67,6 +77,33 @@
67
77
  "name": "ExecutionFailed",
68
78
  "type": "error"
69
79
  },
80
+ {
81
+ "inputs": [
82
+ {
83
+ "internalType": "address",
84
+ "name": "executor",
85
+ "type": "address"
86
+ }
87
+ ],
88
+ "name": "ExecutorAlreadyActive",
89
+ "type": "error"
90
+ },
91
+ {
92
+ "inputs": [
93
+ {
94
+ "internalType": "address",
95
+ "name": "executor",
96
+ "type": "address"
97
+ }
98
+ ],
99
+ "name": "ExecutorNotFound",
100
+ "type": "error"
101
+ },
102
+ {
103
+ "inputs": [],
104
+ "name": "InvalidExecutor",
105
+ "type": "error"
106
+ },
70
107
  {
71
108
  "inputs": [],
72
109
  "name": "InvalidProofOrNonce",
@@ -84,7 +121,17 @@
84
121
  },
85
122
  {
86
123
  "inputs": [],
87
- "name": "OnlyMultiSig",
124
+ "name": "OnlyExecutorOrSigner",
125
+ "type": "error"
126
+ },
127
+ {
128
+ "inputs": [],
129
+ "name": "OnlySelfCall",
130
+ "type": "error"
131
+ },
132
+ {
133
+ "inputs": [],
134
+ "name": "ReentrancyGuardReentrantCall",
88
135
  "type": "error"
89
136
  },
90
137
  {
@@ -140,6 +187,38 @@
140
187
  "name": "ZeroThreshold",
141
188
  "type": "error"
142
189
  },
190
+ {
191
+ "anonymous": false,
192
+ "inputs": [
193
+ {
194
+ "indexed": false,
195
+ "internalType": "bool",
196
+ "name": "required",
197
+ "type": "bool"
198
+ }
199
+ ],
200
+ "name": "ExecutorRequiredSet",
201
+ "type": "event"
202
+ },
203
+ {
204
+ "anonymous": false,
205
+ "inputs": [
206
+ {
207
+ "indexed": true,
208
+ "internalType": "address",
209
+ "name": "executor",
210
+ "type": "address"
211
+ },
212
+ {
213
+ "indexed": false,
214
+ "internalType": "bool",
215
+ "name": "active",
216
+ "type": "bool"
217
+ }
218
+ ],
219
+ "name": "ExecutorSet",
220
+ "type": "event"
221
+ },
143
222
  {
144
223
  "anonymous": false,
145
224
  "inputs": [
@@ -157,7 +236,7 @@
157
236
  "anonymous": false,
158
237
  "inputs": [
159
238
  {
160
- "indexed": false,
239
+ "indexed": true,
161
240
  "internalType": "address",
162
241
  "name": "signer",
163
242
  "type": "address"
@@ -246,9 +325,28 @@
246
325
  {
247
326
  "inputs": [
248
327
  {
249
- "internalType": "uint256",
328
+ "internalType": "address",
329
+ "name": "_sender",
330
+ "type": "address"
331
+ }
332
+ ],
333
+ "name": "canExecuteTransaction",
334
+ "outputs": [
335
+ {
336
+ "internalType": "bool",
337
+ "name": "",
338
+ "type": "bool"
339
+ }
340
+ ],
341
+ "stateMutability": "view",
342
+ "type": "function"
343
+ },
344
+ {
345
+ "inputs": [
346
+ {
347
+ "internalType": "uint64",
250
348
  "name": "_nonce",
251
- "type": "uint256"
349
+ "type": "uint64"
252
350
  },
253
351
  {
254
352
  "components": [
@@ -341,6 +439,32 @@
341
439
  "stateMutability": "payable",
342
440
  "type": "function"
343
441
  },
442
+ {
443
+ "inputs": [],
444
+ "name": "executorRequired",
445
+ "outputs": [
446
+ {
447
+ "internalType": "bool",
448
+ "name": "",
449
+ "type": "bool"
450
+ }
451
+ ],
452
+ "stateMutability": "view",
453
+ "type": "function"
454
+ },
455
+ {
456
+ "inputs": [],
457
+ "name": "getExecutors",
458
+ "outputs": [
459
+ {
460
+ "internalType": "address[]",
461
+ "name": "",
462
+ "type": "address[]"
463
+ }
464
+ ],
465
+ "stateMutability": "view",
466
+ "type": "function"
467
+ },
344
468
  {
345
469
  "inputs": [],
346
470
  "name": "getSigners",
@@ -354,6 +478,25 @@
354
478
  "stateMutability": "view",
355
479
  "type": "function"
356
480
  },
481
+ {
482
+ "inputs": [
483
+ {
484
+ "internalType": "address",
485
+ "name": "_executor",
486
+ "type": "address"
487
+ }
488
+ ],
489
+ "name": "isExecutor",
490
+ "outputs": [
491
+ {
492
+ "internalType": "bool",
493
+ "name": "",
494
+ "type": "bool"
495
+ }
496
+ ],
497
+ "stateMutability": "view",
498
+ "type": "function"
499
+ },
357
500
  {
358
501
  "inputs": [
359
502
  {
@@ -378,9 +521,9 @@
378
521
  "name": "nonce",
379
522
  "outputs": [
380
523
  {
381
- "internalType": "uint256",
524
+ "internalType": "uint64",
382
525
  "name": "",
383
- "type": "uint256"
526
+ "type": "uint64"
384
527
  }
385
528
  ],
386
529
  "stateMutability": "view",
@@ -399,6 +542,37 @@
399
542
  "stateMutability": "view",
400
543
  "type": "function"
401
544
  },
545
+ {
546
+ "inputs": [
547
+ {
548
+ "internalType": "address",
549
+ "name": "_executor",
550
+ "type": "address"
551
+ },
552
+ {
553
+ "internalType": "bool",
554
+ "name": "_active",
555
+ "type": "bool"
556
+ }
557
+ ],
558
+ "name": "setExecutor",
559
+ "outputs": [],
560
+ "stateMutability": "nonpayable",
561
+ "type": "function"
562
+ },
563
+ {
564
+ "inputs": [
565
+ {
566
+ "internalType": "bool",
567
+ "name": "_executorRequired",
568
+ "type": "bool"
569
+ }
570
+ ],
571
+ "name": "setExecutorRequired",
572
+ "outputs": [],
573
+ "stateMutability": "nonpayable",
574
+ "type": "function"
575
+ },
402
576
  {
403
577
  "inputs": [
404
578
  {
@@ -456,6 +630,19 @@
456
630
  "stateMutability": "view",
457
631
  "type": "function"
458
632
  },
633
+ {
634
+ "inputs": [],
635
+ "name": "totalExecutors",
636
+ "outputs": [
637
+ {
638
+ "internalType": "uint256",
639
+ "name": "",
640
+ "type": "uint256"
641
+ }
642
+ ],
643
+ "stateMutability": "view",
644
+ "type": "function"
645
+ },
459
646
  {
460
647
  "inputs": [],
461
648
  "name": "totalSigners",
@@ -585,8 +772,8 @@
585
772
  "type": "receive"
586
773
  }
587
774
  ],
588
- "bytecode": "0x60a06040523480156200001157600080fd5b50d380156200001f57600080fd5b50d280156200002d57600080fd5b50604051620023193803806200231983398101604081905262000050916200032b565b838360005b8251811015620000a1576200008c83828151811062000078576200007862000423565b6020026020010151620000fe60201b60201c565b80620000988162000439565b91505062000055565b50620000ad81620001a7565b50506001600160401b03821660805260038190556040518181527f36d9c0a688d366a03517cca4843dfff4e45db3869d5fd86fb9d15a1b45ce0e5a9060200160405180910390a15050505062000461565b6001600160a01b0381166200012657604051632057875960e21b815260040160405180910390fd5b620001336000826200023f565b62000161576040516327ec359360e21b81526001600160a01b03821660048201526024015b60405180910390fd5b604080516001600160a01b0383168152600160208201527ffc4acb499491cd850a8a21ab98c7f128850c0f0e5f1a875a62b7fa055c2ecf1991015b60405180910390a150565b80600003620001c95760405163831761d760e01b815260040160405180910390fd5b80620001d46200025f565b10156200020957620001e56200025f565b60405162daa43760e71b815260048101919091526024810182905260440162000158565b60028190556040518181527f6e8a187d7944998085dbd1f16b84c51c903bb727536cdba86962439aded2cfd7906020016200019c565b600062000256836001600160a01b03841662000271565b90505b92915050565b60006200026c81620002c3565b905090565b6000818152600183016020526040812054620002ba5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000259565b50600062000259565b600062000259825490565b634e487b7160e01b600052604160045260246000fd5b80516000906001600160a81b0381168114620002ff57600080fd5b6001600160a01b031692915050565b80516001600160401b03811681146200032657600080fd5b919050565b600080600080608085870312156200034257600080fd5b84516001600160401b03808211156200035a57600080fd5b818701915087601f8301126200036f57600080fd5b8151602082821115620003865762000386620002ce565b8160051b604051601f19603f83011681018181108682111715620003ae57620003ae620002ce565b60405292835281830193508481018201928b841115620003cd57600080fd5b948201945b83861015620003f657620003e686620002e4565b85529482019493820193620003d2565b80995050508089015196505050505062000413604086016200030e565b6060959095015193969295505050565b634e487b7160e01b600052603260045260246000fd5b6000600182016200045a57634e487b7160e01b600052601160045260246000fd5b5060010190565b608051611e9562000484600039600081816104e30152610d200152611e956000f3fe60806040526004361061012d5760003560e01c806394cf795e116100a5578063d1a6264811610074578063e3bd036211610059578063e3bd03621461047d578063e9ec3f58146104b7578063ffa1ad741461051e57600080fd5b8063d1a6264814610414578063d63f97c91461044357600080fd5b806394cf795e14610334578063960bfe0414610370578063affed0e0146103aa578063c7a823e0146103da57600080fd5b806349dcfdd5116100fc5780637d94792a116100e15780637d94792a146102a75780637df73e27146102d75780638e6725bd1461032157600080fd5b806349dcfdd51461022c5780636419ebde1461026d57600080fd5b80632b03f6ab1461013957806331cb610514610175578063347024ff146101af57806342cde4e8146101e957600080fd5b3661013457005b600080fd5b34801561014557600080fd5b50d3801561015257600080fd5b50d2801561015f57600080fd5b5061017361016e3660046115f8565b61058e565b005b34801561018157600080fd5b50d3801561018e57600080fd5b50d2801561019b57600080fd5b506101736101aa36600461168e565b610793565b3480156101bb57600080fd5b50d380156101c857600080fd5b50d280156101d557600080fd5b506101736101e43660046116ca565b6107e8565b3480156101f557600080fd5b50d3801561020257600080fd5b50d2801561020f57600080fd5b5061021960025481565b6040519081526020015b60405180910390f35b34801561023857600080fd5b50d3801561024557600080fd5b50d2801561025257600080fd5b5061025b600181565b60405160ff9091168152602001610223565b34801561027957600080fd5b50d3801561028657600080fd5b50d2801561029357600080fd5b506101736102a23660046116e3565b61085d565b3480156102b357600080fd5b50d380156102c057600080fd5b50d280156102cd57600080fd5b5061021960035481565b3480156102e357600080fd5b50d380156102f057600080fd5b50d280156102fd57600080fd5b5061031161030c366004611736565b610a43565b6040519015158152602001610223565b61017361032f366004611769565b610a55565b34801561034057600080fd5b50d3801561034d57600080fd5b50d2801561035a57600080fd5b50610363610c37565b60405161022391906117e7565b34801561037c57600080fd5b50d3801561038957600080fd5b50d2801561039657600080fd5b506101736103a53660046116ca565b610c48565b3480156103b657600080fd5b50d380156103c357600080fd5b50d280156103d057600080fd5b5061021960045481565b3480156103e657600080fd5b50d380156103f357600080fd5b50d2801561040057600080fd5b5061017361040f366004611841565b610c8d565b34801561042057600080fd5b50d3801561042d57600080fd5b50d2801561043a57600080fd5b50610219610ca0565b34801561044f57600080fd5b50d3801561045c57600080fd5b50d2801561046957600080fd5b5061017361047836600461188d565b610cac565b34801561048957600080fd5b50d3801561049657600080fd5b50d280156104a357600080fd5b506102196104b23660046118d4565b610d1a565b3480156104c357600080fd5b50d380156104d057600080fd5b50d280156104dd57600080fd5b506105057f000000000000000000000000000000000000000000000000000000000000000081565b60405167ffffffffffffffff9091168152602001610223565b34801561052a57600080fd5b50d3801561053757600080fd5b50d2801561054457600080fd5b506105816040518060400160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6040516102239190611977565b824211156105c8576040517f4f01675500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080518082018252600281527f190100000000000000000000000000000000000000000000000000000000000060208083019190915282518084018452600681527f4f6e6553696700000000000000000000000000000000000000000000000000009082015282518084018452600581527f302e302e310000000000000000000000000000000000000000000000000000009082015282517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527fbd7855a8d66a83be54ebc7fa5f2e3fb658ab6007afa89cd93dfca08ad1b97ec8818501527fae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc19916381188560608201526001608082015261dead60a0808301919091528451808303909101815260c0820185528051908301206003547f642ed5d2b77bc7ccb98e10da4c02d7cd8231228da4222a9f88a80c15545074ed60e084015261010083015261012082018990526101408083018990528551808403909101815261016083019095528451949092019390932060009361076993929190610180016119c8565b60405160208183030381529060405280519060200120905061078c818484610c8d565b5050505050565b3330146107cc576040517f95f702ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80156107df576107db82610dcb565b5050565b6107db82610ebd565b333014610821576040517f95f702ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527f36d9c0a688d366a03517cca4843dfff4e45db3869d5fd86fb9d15a1b45ce0e5a906020015b60405180910390a150565b80600003610897576040517f831761d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108a2816041611a1e565b82146108da576040517fcd2467c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b82811015610a3b5736600086866108f6856041611a1e565b90610902866001611a35565b61090d906041611a1e565b9261091a93929190611a48565b9150915060006109608984848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610fb992505050565b90508473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16116109c7576040517fd02ef0e500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109d081610a43565b610a23576040517f53b1def100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b9350829150610a33905081611a72565b9150506108de565b505050505050565b6000610a4f8183610fe3565b92915050565b610a618484848461058e565b610a6b8486610cac565b6004805460009182610a7c83611a72565b91905055905060005b610a8f8780611aaa565b9050811015610bf5576000610aa48880611aaa565b83818110610ab457610ab4611b12565b9050602002810190610ac69190611b41565b610ad4906020810190611736565b73ffffffffffffffffffffffffffffffffffffffff16610af48980611aaa565b84818110610b0457610b04611b12565b9050602002810190610b169190611b41565b60200135610b248a80611aaa565b85818110610b3457610b34611b12565b9050602002810190610b469190611b41565b610b54906040810190611b7f565b604051610b62929190611be4565b60006040518083038185875af1925050503d8060008114610b9f576040519150601f19603f3d011682016040523d82523d6000602084013e610ba4565b606091505b5050905080610be2576040517f492fd70e00000000000000000000000000000000000000000000000000000000815260048101839052602401610a1a565b5080610bed81611a72565b915050610a85565b5060408051868152602081018390527fd9a0df418868c38712b1f6eab685bc77a2e49596edd77667ab34d5448f5f941c910160405180910390a1505050505050565b6060610c436000611015565b905090565b333014610c81576040517f95f702ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c8a81611022565b50565b610c9b83838360025461085d565b505050565b6000610c4360006110e5565b600454600090610cc0906104b28480611aaa565b90506000610cdb610cd46020850185611aaa565b86856110ef565b905080610d14576040517f2a1704e200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b600060017f00000000000000000000000000000000000000000000000000000000000000003073ffffffffffffffffffffffffffffffffffffffff1660001b868686604051602001610d6d929190611bf4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610dac9594939291602001611d69565b6040516020818303038152906040528051906020012090509392505050565b73ffffffffffffffffffffffffffffffffffffffff8116610e18576040517f815e1d6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e23600082611107565b610e71576040517f9fb0d64c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610a1a565b6040805173ffffffffffffffffffffffffffffffffffffffff83168152600160208201527ffc4acb499491cd850a8a21ab98c7f128850c0f0e5f1a875a62b7fa055c2ecf199101610852565b610ec8600082611129565b610f16576040517f53b1def100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610a1a565b600254610f21610ca0565b1015610f6d57610f2f610ca0565b6002546040517f6d521b8000000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610a1a565b6040805173ffffffffffffffffffffffffffffffffffffffff83168152600060208201527ffc4acb499491cd850a8a21ab98c7f128850c0f0e5f1a875a62b7fa055c2ecf199101610852565b600080600080610fc9868661114b565b925092509250610fd98282611198565b5090949350505050565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260018301602052604081205415155b9392505050565b6060600061100e8361129c565b8060000361105c576040517f831761d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80611065610ca0565b10156110b057611073610ca0565b6040517f6d521b80000000000000000000000000000000000000000000000000000000008152600481019190915260248101829052604401610a1a565b60028190556040518181527f6e8a187d7944998085dbd1f16b84c51c903bb727536cdba86962439aded2cfd790602001610852565b6000610a4f825490565b6000826110fd8686856112f8565b1495945050505050565b600061100e8373ffffffffffffffffffffffffffffffffffffffff8416611344565b600061100e8373ffffffffffffffffffffffffffffffffffffffff8416611393565b600080600083516041036111855760208401516040850151606086015160001a61117788828585611486565b955095509550505050611191565b50508151600091506002905b9250925092565b60008260038111156111ac576111ac611dee565b036111b5575050565b60018260038111156111c9576111c9611dee565b03611200576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600282600381111561121457611214611dee565b0361124e576040517ffce698f700000000000000000000000000000000000000000000000000000000815260048101829052602401610a1a565b600382600381111561126257611262611dee565b036107db576040517fd78bce0c00000000000000000000000000000000000000000000000000000000815260048101829052602401610a1a565b6060816000018054806020026020016040519081016040528092919081815260200182805480156112ec57602002820191906000526020600020905b8154815260200190600101908083116112d8575b50505050509050919050565b600081815b8481101561133b576113278287878481811061131b5761131b611b12565b90506020020135611580565b91508061133381611a72565b9150506112fd565b50949350505050565b600081815260018301602052604081205461138b57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610a4f565b506000610a4f565b6000818152600183016020526040812054801561147c5760006113b7600183611e1d565b85549091506000906113cb90600190611e1d565b90508082146114305760008660000182815481106113eb576113eb611b12565b906000526020600020015490508087600001848154811061140e5761140e611b12565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061144157611441611e30565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610a4f565b6000915050610a4f565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156114c15750600091506003905082611576565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611515573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811661156c57506000925060019150829050611576565b9250600091508190505b9450945094915050565b600081831061159c57600082815260208490526040902061100e565b600083815260208390526040902061100e565b60008083601f8401126115c157600080fd5b50813567ffffffffffffffff8111156115d957600080fd5b6020830191508360208285010111156115f157600080fd5b9250929050565b6000806000806060858703121561160e57600080fd5b8435935060208501359250604085013567ffffffffffffffff81111561163357600080fd5b61163f878288016115af565b95989497509550505050565b6000813574ffffffffffffffffffffffffffffffffffffffffff8116811461167257600080fd5b73ffffffffffffffffffffffffffffffffffffffff1692915050565b600080604083850312156116a157600080fd5b6116aa8361164b565b9150602083013580151581146116bf57600080fd5b809150509250929050565b6000602082840312156116dc57600080fd5b5035919050565b600080600080606085870312156116f957600080fd5b84359350602085013567ffffffffffffffff81111561171757600080fd5b611723878288016115af565b9598909750949560400135949350505050565b60006020828403121561174857600080fd5b61100e8261164b565b60006040828403121561176357600080fd5b50919050565b60008060008060006080868803121561178157600080fd5b853567ffffffffffffffff8082111561179957600080fd5b6117a589838a01611751565b9650602088013595506040880135945060608801359150808211156117c957600080fd5b506117d6888289016115af565b969995985093965092949392505050565b6020808252825182820181905260009190848201906040850190845b8181101561183557835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101611803565b50909695505050505050565b60008060006040848603121561185657600080fd5b83359250602084013567ffffffffffffffff81111561187457600080fd5b611880868287016115af565b9497909650939450505050565b600080604083850312156118a057600080fd5b82359150602083013567ffffffffffffffff8111156118be57600080fd5b6118ca85828601611751565b9150509250929050565b6000806000604084860312156118e957600080fd5b83359250602084013567ffffffffffffffff8082111561190857600080fd5b818601915086601f83011261191c57600080fd5b81358181111561192b57600080fd5b8760208260051b850101111561194057600080fd5b6020830194508093505050509250925092565b60005b8381101561196e578181015183820152602001611956565b50506000910152565b6020815260008251806020840152611996816040850160208701611953565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b600084516119da818460208901611953565b91909101928352506020820152604001919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082028115828204841417610a4f57610a4f6119ef565b80820180821115610a4f57610a4f6119ef565b60008085851115611a5857600080fd5b83861115611a6557600080fd5b5050820193919092039150565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611aa357611aa36119ef565b5060010190565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611adf57600080fd5b83018035915067ffffffffffffffff821115611afa57600080fd5b6020019150600581901b36038213156115f157600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112611b7557600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611bb457600080fd5b83018035915067ffffffffffffffff821115611bcf57600080fd5b6020019150368190038213156115f157600080fd5b8183823760009101908152919050565b60208082528181018390526000906040808401600586901b8501820187855b88811015611d5b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18b3603018112611c7457600080fd5b8a01606073ffffffffffffffffffffffffffffffffffffffff611c968361164b565b1685528782013588860152868201357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1833603018112611cd557600080fd5b90910187810191903567ffffffffffffffff811115611cf357600080fd5b803603831315611d0257600080fd5b8188870152808287015260809150808383880137600086820183015295880195601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016909401909301925090850190600101611c13565b509098975050505050505050565b7fff000000000000000000000000000000000000000000000000000000000000008660f81b1681527fffffffffffffffff0000000000000000000000000000000000000000000000008560c01b16600182015283600982015282602982015260008251611ddd816049850160208701611953565b919091016049019695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b81810381811115610a4f57610a4f6119ef565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26474726f6e582212207fb073735fa8620e8ce808155dad75345b1caef8a52e755fb09f8edd356d269564736f6c63430008140033",
589
- "deployedBytecode": "0x60806040526004361061012d5760003560e01c806394cf795e116100a5578063d1a6264811610074578063e3bd036211610059578063e3bd03621461047d578063e9ec3f58146104b7578063ffa1ad741461051e57600080fd5b8063d1a6264814610414578063d63f97c91461044357600080fd5b806394cf795e14610334578063960bfe0414610370578063affed0e0146103aa578063c7a823e0146103da57600080fd5b806349dcfdd5116100fc5780637d94792a116100e15780637d94792a146102a75780637df73e27146102d75780638e6725bd1461032157600080fd5b806349dcfdd51461022c5780636419ebde1461026d57600080fd5b80632b03f6ab1461013957806331cb610514610175578063347024ff146101af57806342cde4e8146101e957600080fd5b3661013457005b600080fd5b34801561014557600080fd5b50d3801561015257600080fd5b50d2801561015f57600080fd5b5061017361016e3660046115f8565b61058e565b005b34801561018157600080fd5b50d3801561018e57600080fd5b50d2801561019b57600080fd5b506101736101aa36600461168e565b610793565b3480156101bb57600080fd5b50d380156101c857600080fd5b50d280156101d557600080fd5b506101736101e43660046116ca565b6107e8565b3480156101f557600080fd5b50d3801561020257600080fd5b50d2801561020f57600080fd5b5061021960025481565b6040519081526020015b60405180910390f35b34801561023857600080fd5b50d3801561024557600080fd5b50d2801561025257600080fd5b5061025b600181565b60405160ff9091168152602001610223565b34801561027957600080fd5b50d3801561028657600080fd5b50d2801561029357600080fd5b506101736102a23660046116e3565b61085d565b3480156102b357600080fd5b50d380156102c057600080fd5b50d280156102cd57600080fd5b5061021960035481565b3480156102e357600080fd5b50d380156102f057600080fd5b50d280156102fd57600080fd5b5061031161030c366004611736565b610a43565b6040519015158152602001610223565b61017361032f366004611769565b610a55565b34801561034057600080fd5b50d3801561034d57600080fd5b50d2801561035a57600080fd5b50610363610c37565b60405161022391906117e7565b34801561037c57600080fd5b50d3801561038957600080fd5b50d2801561039657600080fd5b506101736103a53660046116ca565b610c48565b3480156103b657600080fd5b50d380156103c357600080fd5b50d280156103d057600080fd5b5061021960045481565b3480156103e657600080fd5b50d380156103f357600080fd5b50d2801561040057600080fd5b5061017361040f366004611841565b610c8d565b34801561042057600080fd5b50d3801561042d57600080fd5b50d2801561043a57600080fd5b50610219610ca0565b34801561044f57600080fd5b50d3801561045c57600080fd5b50d2801561046957600080fd5b5061017361047836600461188d565b610cac565b34801561048957600080fd5b50d3801561049657600080fd5b50d280156104a357600080fd5b506102196104b23660046118d4565b610d1a565b3480156104c357600080fd5b50d380156104d057600080fd5b50d280156104dd57600080fd5b506105057f000000000000000000000000000000000000000000000000000000000000000081565b60405167ffffffffffffffff9091168152602001610223565b34801561052a57600080fd5b50d3801561053757600080fd5b50d2801561054457600080fd5b506105816040518060400160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6040516102239190611977565b824211156105c8576040517f4f01675500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080518082018252600281527f190100000000000000000000000000000000000000000000000000000000000060208083019190915282518084018452600681527f4f6e6553696700000000000000000000000000000000000000000000000000009082015282518084018452600581527f302e302e310000000000000000000000000000000000000000000000000000009082015282517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527fbd7855a8d66a83be54ebc7fa5f2e3fb658ab6007afa89cd93dfca08ad1b97ec8818501527fae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc19916381188560608201526001608082015261dead60a0808301919091528451808303909101815260c0820185528051908301206003547f642ed5d2b77bc7ccb98e10da4c02d7cd8231228da4222a9f88a80c15545074ed60e084015261010083015261012082018990526101408083018990528551808403909101815261016083019095528451949092019390932060009361076993929190610180016119c8565b60405160208183030381529060405280519060200120905061078c818484610c8d565b5050505050565b3330146107cc576040517f95f702ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80156107df576107db82610dcb565b5050565b6107db82610ebd565b333014610821576040517f95f702ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527f36d9c0a688d366a03517cca4843dfff4e45db3869d5fd86fb9d15a1b45ce0e5a906020015b60405180910390a150565b80600003610897576040517f831761d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108a2816041611a1e565b82146108da576040517fcd2467c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b82811015610a3b5736600086866108f6856041611a1e565b90610902866001611a35565b61090d906041611a1e565b9261091a93929190611a48565b9150915060006109608984848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610fb992505050565b90508473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16116109c7576040517fd02ef0e500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109d081610a43565b610a23576040517f53b1def100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b9350829150610a33905081611a72565b9150506108de565b505050505050565b6000610a4f8183610fe3565b92915050565b610a618484848461058e565b610a6b8486610cac565b6004805460009182610a7c83611a72565b91905055905060005b610a8f8780611aaa565b9050811015610bf5576000610aa48880611aaa565b83818110610ab457610ab4611b12565b9050602002810190610ac69190611b41565b610ad4906020810190611736565b73ffffffffffffffffffffffffffffffffffffffff16610af48980611aaa565b84818110610b0457610b04611b12565b9050602002810190610b169190611b41565b60200135610b248a80611aaa565b85818110610b3457610b34611b12565b9050602002810190610b469190611b41565b610b54906040810190611b7f565b604051610b62929190611be4565b60006040518083038185875af1925050503d8060008114610b9f576040519150601f19603f3d011682016040523d82523d6000602084013e610ba4565b606091505b5050905080610be2576040517f492fd70e00000000000000000000000000000000000000000000000000000000815260048101839052602401610a1a565b5080610bed81611a72565b915050610a85565b5060408051868152602081018390527fd9a0df418868c38712b1f6eab685bc77a2e49596edd77667ab34d5448f5f941c910160405180910390a1505050505050565b6060610c436000611015565b905090565b333014610c81576040517f95f702ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c8a81611022565b50565b610c9b83838360025461085d565b505050565b6000610c4360006110e5565b600454600090610cc0906104b28480611aaa565b90506000610cdb610cd46020850185611aaa565b86856110ef565b905080610d14576040517f2a1704e200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b600060017f00000000000000000000000000000000000000000000000000000000000000003073ffffffffffffffffffffffffffffffffffffffff1660001b868686604051602001610d6d929190611bf4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610dac9594939291602001611d69565b6040516020818303038152906040528051906020012090509392505050565b73ffffffffffffffffffffffffffffffffffffffff8116610e18576040517f815e1d6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e23600082611107565b610e71576040517f9fb0d64c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610a1a565b6040805173ffffffffffffffffffffffffffffffffffffffff83168152600160208201527ffc4acb499491cd850a8a21ab98c7f128850c0f0e5f1a875a62b7fa055c2ecf199101610852565b610ec8600082611129565b610f16576040517f53b1def100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610a1a565b600254610f21610ca0565b1015610f6d57610f2f610ca0565b6002546040517f6d521b8000000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610a1a565b6040805173ffffffffffffffffffffffffffffffffffffffff83168152600060208201527ffc4acb499491cd850a8a21ab98c7f128850c0f0e5f1a875a62b7fa055c2ecf199101610852565b600080600080610fc9868661114b565b925092509250610fd98282611198565b5090949350505050565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260018301602052604081205415155b9392505050565b6060600061100e8361129c565b8060000361105c576040517f831761d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80611065610ca0565b10156110b057611073610ca0565b6040517f6d521b80000000000000000000000000000000000000000000000000000000008152600481019190915260248101829052604401610a1a565b60028190556040518181527f6e8a187d7944998085dbd1f16b84c51c903bb727536cdba86962439aded2cfd790602001610852565b6000610a4f825490565b6000826110fd8686856112f8565b1495945050505050565b600061100e8373ffffffffffffffffffffffffffffffffffffffff8416611344565b600061100e8373ffffffffffffffffffffffffffffffffffffffff8416611393565b600080600083516041036111855760208401516040850151606086015160001a61117788828585611486565b955095509550505050611191565b50508151600091506002905b9250925092565b60008260038111156111ac576111ac611dee565b036111b5575050565b60018260038111156111c9576111c9611dee565b03611200576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600282600381111561121457611214611dee565b0361124e576040517ffce698f700000000000000000000000000000000000000000000000000000000815260048101829052602401610a1a565b600382600381111561126257611262611dee565b036107db576040517fd78bce0c00000000000000000000000000000000000000000000000000000000815260048101829052602401610a1a565b6060816000018054806020026020016040519081016040528092919081815260200182805480156112ec57602002820191906000526020600020905b8154815260200190600101908083116112d8575b50505050509050919050565b600081815b8481101561133b576113278287878481811061131b5761131b611b12565b90506020020135611580565b91508061133381611a72565b9150506112fd565b50949350505050565b600081815260018301602052604081205461138b57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610a4f565b506000610a4f565b6000818152600183016020526040812054801561147c5760006113b7600183611e1d565b85549091506000906113cb90600190611e1d565b90508082146114305760008660000182815481106113eb576113eb611b12565b906000526020600020015490508087600001848154811061140e5761140e611b12565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061144157611441611e30565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610a4f565b6000915050610a4f565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156114c15750600091506003905082611576565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611515573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811661156c57506000925060019150829050611576565b9250600091508190505b9450945094915050565b600081831061159c57600082815260208490526040902061100e565b600083815260208390526040902061100e565b60008083601f8401126115c157600080fd5b50813567ffffffffffffffff8111156115d957600080fd5b6020830191508360208285010111156115f157600080fd5b9250929050565b6000806000806060858703121561160e57600080fd5b8435935060208501359250604085013567ffffffffffffffff81111561163357600080fd5b61163f878288016115af565b95989497509550505050565b6000813574ffffffffffffffffffffffffffffffffffffffffff8116811461167257600080fd5b73ffffffffffffffffffffffffffffffffffffffff1692915050565b600080604083850312156116a157600080fd5b6116aa8361164b565b9150602083013580151581146116bf57600080fd5b809150509250929050565b6000602082840312156116dc57600080fd5b5035919050565b600080600080606085870312156116f957600080fd5b84359350602085013567ffffffffffffffff81111561171757600080fd5b611723878288016115af565b9598909750949560400135949350505050565b60006020828403121561174857600080fd5b61100e8261164b565b60006040828403121561176357600080fd5b50919050565b60008060008060006080868803121561178157600080fd5b853567ffffffffffffffff8082111561179957600080fd5b6117a589838a01611751565b9650602088013595506040880135945060608801359150808211156117c957600080fd5b506117d6888289016115af565b969995985093965092949392505050565b6020808252825182820181905260009190848201906040850190845b8181101561183557835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101611803565b50909695505050505050565b60008060006040848603121561185657600080fd5b83359250602084013567ffffffffffffffff81111561187457600080fd5b611880868287016115af565b9497909650939450505050565b600080604083850312156118a057600080fd5b82359150602083013567ffffffffffffffff8111156118be57600080fd5b6118ca85828601611751565b9150509250929050565b6000806000604084860312156118e957600080fd5b83359250602084013567ffffffffffffffff8082111561190857600080fd5b818601915086601f83011261191c57600080fd5b81358181111561192b57600080fd5b8760208260051b850101111561194057600080fd5b6020830194508093505050509250925092565b60005b8381101561196e578181015183820152602001611956565b50506000910152565b6020815260008251806020840152611996816040850160208701611953565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b600084516119da818460208901611953565b91909101928352506020820152604001919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082028115828204841417610a4f57610a4f6119ef565b80820180821115610a4f57610a4f6119ef565b60008085851115611a5857600080fd5b83861115611a6557600080fd5b5050820193919092039150565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611aa357611aa36119ef565b5060010190565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611adf57600080fd5b83018035915067ffffffffffffffff821115611afa57600080fd5b6020019150600581901b36038213156115f157600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112611b7557600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611bb457600080fd5b83018035915067ffffffffffffffff821115611bcf57600080fd5b6020019150368190038213156115f157600080fd5b8183823760009101908152919050565b60208082528181018390526000906040808401600586901b8501820187855b88811015611d5b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18b3603018112611c7457600080fd5b8a01606073ffffffffffffffffffffffffffffffffffffffff611c968361164b565b1685528782013588860152868201357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1833603018112611cd557600080fd5b90910187810191903567ffffffffffffffff811115611cf357600080fd5b803603831315611d0257600080fd5b8188870152808287015260809150808383880137600086820183015295880195601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016909401909301925090850190600101611c13565b509098975050505050505050565b7fff000000000000000000000000000000000000000000000000000000000000008660f81b1681527fffffffffffffffff0000000000000000000000000000000000000000000000008560c01b16600182015283600982015282602982015260008251611ddd816049850160208701611953565b919091016049019695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b81810381811115610a4f57610a4f6119ef565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26474726f6e582212207fb073735fa8620e8ce808155dad75345b1caef8a52e755fb09f8edd356d269564736f6c63430008140033",
775
+ "bytecode": "0x60a06040523480156200001157600080fd5b50d380156200001f57600080fd5b50d280156200002d57600080fd5b5060405162002b8e38038062002b8e83398101604081905262000050916200050b565b8282868660005b8251811015620000a3576200008e8382815181106200007a576200007a620005bb565b60200260200101516200013760201b60201c565b806200009a81620005d1565b91505062000057565b50620000af81620001dd565b5050600160035560005b82518110156200010557620000f0838281518110620000dc57620000dc620005bb565b60200260200101516200027b60201b60201c565b80620000fc81620005d1565b915050620000b9565b50620001118162000317565b50506001600160401b0386166080526200012b8162000359565b505050505050620005f9565b6001600160a01b0381166200015f57604051632057875960e21b815260040160405180910390fd5b6200016c6000826200038f565b6200019a576040516327ec359360e21b81526001600160a01b03821660048201526024015b60405180910390fd5b604051600181526001600160a01b038216907ffc4acb499491cd850a8a21ab98c7f128850c0f0e5f1a875a62b7fa055c2ecf19906020015b60405180910390a250565b80600003620001ff5760405163831761d760e01b815260040160405180910390fd5b806200020a620003af565b10156200023f576200021b620003af565b60405162daa43760e71b815260048101919091526024810182905260440162000191565b60028190556040518181527f6e8a187d7944998085dbd1f16b84c51c903bb727536cdba86962439aded2cfd7906020015b60405180910390a150565b6001600160a01b038116620002a35760405163710c949760e01b815260040160405180910390fd5b620002b06004826200038f565b620002da5760405163c06cd70160e01b81526001600160a01b038216600482015260240162000191565b604051600181526001600160a01b038216907f278b09622564dd3991fe7744514513d64ea2c8ed2b2b9ec1150ad964fde80a9990602001620001d2565b6006805460ff19168215159081179091556040519081527faf318623f8b8327d379709bc2f6846f21be20c305509acd41dccf7e07a4853479060200162000270565b60078190556040518181527f36d9c0a688d366a03517cca4843dfff4e45db3869d5fd86fb9d15a1b45ce0e5a9060200162000270565b6000620003a6836001600160a01b038416620003c1565b90505b92915050565b6000620003bc8162000413565b905090565b60008181526001830160205260408120546200040a57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620003a9565b506000620003a9565b6000620003a9825490565b634e487b7160e01b600052604160045260246000fd5b80516000906001600160a81b03811681146200044f57600080fd5b6001600160a01b031692915050565b600082601f8301126200047057600080fd5b815160206001600160401b03808311156200048f576200048f6200041e565b8260051b604051601f19603f83011681018181108482111715620004b757620004b76200041e565b604052938452858101830193838101925087851115620004d657600080fd5b83870191505b848210156200050057620004f08262000434565b83529183019190830190620004dc565b979650505050505050565b60008060008060008060c087890312156200052557600080fd5b86516001600160401b0380821682146200053e57600080fd5b6020890151919750808211156200055457600080fd5b620005628a838b016200045e565b96506040890151955060608901519150808211156200058057600080fd5b506200058f89828a016200045e565b93505060808701518015158114620005a657600080fd5b8092505060a087015190509295509295509295565b634e487b7160e01b600052603260045260246000fd5b600060018201620005f257634e487b7160e01b600052601160045260246000fd5b5060010190565b6080516125726200061c600039600081816106900152610f7001526125726000f3fe60806040526004361061019a5760003560e01c8063960bfe04116100e1578063d63f97c91161008a578063e9ec3f5811610064578063e9ec3f5814610664578063ef09e78f146106b2578063f621ff60146106e1578063ffa1ad741461071057600080fd5b8063d63f97c9146105b6578063debfda30146105f0578063e1ed81761461062a57600080fd5b8063c7a823e0116100bb578063c7a823e014610513578063cf734e8a1461054d578063d1a626481461058757600080fd5b8063960bfe041461044b578063affed0e014610485578063b677cde4146104d957600080fd5b8063606c22e0116101435780637df73e271161011d5780637df73e27146103c25780638e6725bd146103fc57806394cf795e1461040f57600080fd5b8063606c22e0146103145780636419ebde146103585780637d94792a1461039257600080fd5b8063347024ff11610174578063347024ff1461025657806342cde4e81461029057806349dcfdd5146102d357600080fd5b80631e1bff3f146101a65780632b03f6ab146101e257806331cb61051461021c57600080fd5b366101a157005b600080fd5b3480156101b257600080fd5b50d380156101bf57600080fd5b50d280156101cc57600080fd5b506101e06101db366004611c28565b610780565b005b3480156101ee57600080fd5b50d380156101fb57600080fd5b50d2801561020857600080fd5b506101e0610217366004611ca4565b6107d5565b34801561022857600080fd5b50d3801561023557600080fd5b50d2801561024257600080fd5b506101e0610251366004611c28565b6109da565b34801561026257600080fd5b50d3801561026f57600080fd5b50d2801561027c57600080fd5b506101e061028b366004611cf7565b610a2b565b34801561029c57600080fd5b50d380156102a957600080fd5b50d280156102b657600080fd5b506102c060025481565b6040519081526020015b60405180910390f35b3480156102df57600080fd5b50d380156102ec57600080fd5b50d280156102f957600080fd5b50610302600181565b60405160ff90911681526020016102ca565b34801561032057600080fd5b50d3801561032d57600080fd5b50d2801561033a57600080fd5b506006546103489060ff1681565b60405190151581526020016102ca565b34801561036457600080fd5b50d3801561037157600080fd5b50d2801561037e57600080fd5b506101e061038d366004611d10565b610a70565b34801561039e57600080fd5b50d380156103ab57600080fd5b50d280156103b857600080fd5b506102c060075481565b3480156103ce57600080fd5b50d380156103db57600080fd5b50d280156103e857600080fd5b506103486103f7366004611d63565b610ca0565b6101e061040a366004611d96565b610cb2565b34801561041b57600080fd5b50d3801561042857600080fd5b50d2801561043557600080fd5b5061043e610f17565b6040516102ca9190611e14565b34801561045757600080fd5b50d3801561046457600080fd5b50d2801561047157600080fd5b506101e0610480366004611cf7565b610f28565b34801561049157600080fd5b50d3801561049e57600080fd5b50d280156104ab57600080fd5b506008546104c09067ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016102ca565b3480156104e557600080fd5b50d380156104f257600080fd5b50d280156104ff57600080fd5b506102c061050e366004611e6e565b610f6a565b34801561051f57600080fd5b50d3801561052c57600080fd5b50d2801561053957600080fd5b506101e0610548366004611efd565b611056565b34801561055957600080fd5b50d3801561056657600080fd5b50d2801561057357600080fd5b506101e0610582366004611f49565b611069565b34801561059357600080fd5b50d380156105a057600080fd5b50d280156105ad57600080fd5b506102c06110ab565b3480156105c257600080fd5b50d380156105cf57600080fd5b50d280156105dc57600080fd5b506101e06105eb366004611f64565b6110b7565b3480156105fc57600080fd5b50d3801561060957600080fd5b50d2801561061657600080fd5b50610348610625366004611d63565b61112f565b34801561063657600080fd5b50d3801561064357600080fd5b50d2801561065057600080fd5b5061034861065f366004611d63565b61113c565b34801561067057600080fd5b50d3801561067d57600080fd5b50d2801561068a57600080fd5b506104c07f000000000000000000000000000000000000000000000000000000000000000081565b3480156106be57600080fd5b50d380156106cb57600080fd5b50d280156106d857600080fd5b5061043e611164565b3480156106ed57600080fd5b50d380156106fa57600080fd5b50d2801561070757600080fd5b506102c0611170565b34801561071c57600080fd5b50d3801561072957600080fd5b50d2801561073657600080fd5b506107736040518060400160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6040516102ca9190611fcf565b3330146107b9576040517fff54bf4b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80156107cc576107c88261117c565b5050565b6107c882611272565b8242111561080f576040517f4f01675500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080518082018252600281527f190100000000000000000000000000000000000000000000000000000000000060208083019190915282518084018452600681527f4f6e6553696700000000000000000000000000000000000000000000000000009082015282518084018452600581527f302e302e310000000000000000000000000000000000000000000000000000009082015282517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527fbd7855a8d66a83be54ebc7fa5f2e3fb658ab6007afa89cd93dfca08ad1b97ec8818501527fae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc19916381188560608201526001608082015261dead60a0808301919091528451808303909101815260c0820185528051908301206007547f642ed5d2b77bc7ccb98e10da4c02d7cd8231228da4222a9f88a80c15545074ed60e08401526101008301526101208201899052610140808301899052855180840390910181526101608301909552845194909201939093206000936109b09392919061018001612020565b6040516020818303038152906040528051906020012090506109d3818484611056565b5050505050565b333014610a13576040517fff54bf4b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8015610a22576107c882611314565b6107c882611403565b333014610a64576040517fff54bf4b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a6d816114fc565b50565b80600003610aaa576040517f831761d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ab5604183612076565b15610aec576040517fcd2467c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610af96041846120b9565b905081811015610b35576040517fcd2467c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b82811015610c97573660008787610b516041866120cd565b906041610b5f8760016120e4565b610b6991906120cd565b92610b76939291906120f7565b915091506000610bbc8a84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061153892505050565b90508473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1611610c23576040517fd02ef0e500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c2c81610ca0565b610c7f576040517f53b1def100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b9350829150610c8f905081612121565b915050610b39565b50505050505050565b6000610cac8183611562565b92915050565b610cba611594565b610cc33361113c565b610cf9576040517f245b1c3100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d05848484846107d5565b610d0f84866110b7565b6008805460009167ffffffffffffffff9091169082610d2d83612159565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555067ffffffffffffffff16905060005b610d6c8780612180565b9050811015610ed2576000610d818880612180565b83818110610d9157610d916121e8565b9050602002810190610da39190612217565b610db1906020810190611d63565b73ffffffffffffffffffffffffffffffffffffffff16610dd18980612180565b84818110610de157610de16121e8565b9050602002810190610df39190612217565b60200135610e018a80612180565b85818110610e1157610e116121e8565b9050602002810190610e239190612217565b610e31906040810190612255565b604051610e3f9291906122ba565b60006040518083038185875af1925050503d8060008114610e7c576040519150601f19603f3d011682016040523d82523d6000602084013e610e81565b606091505b5050905080610ebf576040517f492fd70e00000000000000000000000000000000000000000000000000000000815260048101839052602401610c76565b5080610eca81612121565b915050610d62565b5060408051868152602081018390527fd9a0df418868c38712b1f6eab685bc77a2e49596edd77667ab34d5448f5f941c910160405180910390a1506109d36001600355565b6060610f2360006115d7565b905090565b333014610f61576040517fff54bf4b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a6d816115e4565b600060017f00000000000000000000000000000000000000000000000000000000000000003073ffffffffffffffffffffffffffffffffffffffff1660001b868686604051602001610fbd9291906122ca565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610ffc959493929160200161243f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012090830152016040516020818303038152906040528051906020012090509392505050565b611064838383600254610a70565b505050565b3330146110a2576040517fff54bf4b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a6d816116a7565b6000610f236000611706565b6008546000906110d59067ffffffffffffffff1661050e8480612180565b905060006110f06110e96020850185612180565b8685611710565b905080611129576040517f2a1704e200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b6000610cac600483611562565b60065460009060ff16158061115557506111558261112f565b80610cac5750610cac82610ca0565b6060610f2360046115d7565b6000610f236004611706565b73ffffffffffffffffffffffffffffffffffffffff81166111c9576040517f710c949700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111d4600482611728565b611222576040517fc06cd70100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610c76565b6040516001815273ffffffffffffffffffffffffffffffffffffffff8216907f278b09622564dd3991fe7744514513d64ea2c8ed2b2b9ec1150ad964fde80a99906020015b60405180910390a250565b61127d60048261174a565b6112cb576040517f59e7f66000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610c76565b6040516000815273ffffffffffffffffffffffffffffffffffffffff8216907f278b09622564dd3991fe7744514513d64ea2c8ed2b2b9ec1150ad964fde80a9990602001611267565b73ffffffffffffffffffffffffffffffffffffffff8116611361576040517f815e1d6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61136c600082611728565b6113ba576040517f9fb0d64c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610c76565b6040516001815273ffffffffffffffffffffffffffffffffffffffff8216907ffc4acb499491cd850a8a21ab98c7f128850c0f0e5f1a875a62b7fa055c2ecf1990602001611267565b61140e60008261174a565b61145c576040517f53b1def100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610c76565b6002546114676110ab565b10156114b3576114756110ab565b6002546040517f6d521b8000000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610c76565b6040516000815273ffffffffffffffffffffffffffffffffffffffff8216907ffc4acb499491cd850a8a21ab98c7f128850c0f0e5f1a875a62b7fa055c2ecf1990602001611267565b60078190556040518181527f36d9c0a688d366a03517cca4843dfff4e45db3869d5fd86fb9d15a1b45ce0e5a906020015b60405180910390a150565b600080600080611548868661176c565b92509250925061155882826117b9565b5090949350505050565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260018301602052604081205415155b9392505050565b6002600354036115d0576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600355565b6060600061158d836118bd565b8060000361161e576040517f831761d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806116276110ab565b1015611672576116356110ab565b6040517f6d521b80000000000000000000000000000000000000000000000000000000008152600481019190915260248101829052604401610c76565b60028190556040518181527f6e8a187d7944998085dbd1f16b84c51c903bb727536cdba86962439aded2cfd79060200161152d565b600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168215159081179091556040519081527faf318623f8b8327d379709bc2f6846f21be20c305509acd41dccf7e07a4853479060200161152d565b6000610cac825490565b60008261171e868685611919565b1495945050505050565b600061158d8373ffffffffffffffffffffffffffffffffffffffff8416611965565b600061158d8373ffffffffffffffffffffffffffffffffffffffff84166119b4565b600080600083516041036117a65760208401516040850151606086015160001a61179888828585611aa7565b9550955095505050506117b2565b50508151600091506002905b9250925092565b60008260038111156117cd576117cd6124cb565b036117d6575050565b60018260038111156117ea576117ea6124cb565b03611821576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002826003811115611835576118356124cb565b0361186f576040517ffce698f700000000000000000000000000000000000000000000000000000000815260048101829052602401610c76565b6003826003811115611883576118836124cb565b036107c8576040517fd78bce0c00000000000000000000000000000000000000000000000000000000815260048101829052602401610c76565b60608160000180548060200260200160405190810160405280929190818152602001828054801561190d57602002820191906000526020600020905b8154815260200190600101908083116118f9575b50505050509050919050565b600081815b8481101561195c576119488287878481811061193c5761193c6121e8565b90506020020135611ba1565b91508061195481612121565b91505061191e565b50949350505050565b60008181526001830160205260408120546119ac57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610cac565b506000610cac565b60008181526001830160205260408120548015611a9d5760006119d86001836124fa565b85549091506000906119ec906001906124fa565b9050808214611a51576000866000018281548110611a0c57611a0c6121e8565b9060005260206000200154905080876000018481548110611a2f57611a2f6121e8565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611a6257611a6261250d565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610cac565b6000915050610cac565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115611ae25750600091506003905082611b97565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611b36573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116611b8d57506000925060019150829050611b97565b9250600091508190505b9450945094915050565b6000818310611bbd57600082815260208490526040902061158d565b600083815260208390526040902061158d565b6000813574ffffffffffffffffffffffffffffffffffffffffff81168114611bf757600080fd5b73ffffffffffffffffffffffffffffffffffffffff1692915050565b80358015158114611c2357600080fd5b919050565b60008060408385031215611c3b57600080fd5b611c4483611bd0565b9150611c5260208401611c13565b90509250929050565b60008083601f840112611c6d57600080fd5b50813567ffffffffffffffff811115611c8557600080fd5b602083019150836020828501011115611c9d57600080fd5b9250929050565b60008060008060608587031215611cba57600080fd5b8435935060208501359250604085013567ffffffffffffffff811115611cdf57600080fd5b611ceb87828801611c5b565b95989497509550505050565b600060208284031215611d0957600080fd5b5035919050565b60008060008060608587031215611d2657600080fd5b84359350602085013567ffffffffffffffff811115611d4457600080fd5b611d5087828801611c5b565b9598909750949560400135949350505050565b600060208284031215611d7557600080fd5b61158d82611bd0565b600060408284031215611d9057600080fd5b50919050565b600080600080600060808688031215611dae57600080fd5b853567ffffffffffffffff80821115611dc657600080fd5b611dd289838a01611d7e565b965060208801359550604088013594506060880135915080821115611df657600080fd5b50611e0388828901611c5b565b969995985093965092949392505050565b6020808252825182820181905260009190848201906040850190845b81811015611e6257835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101611e30565b50909695505050505050565b600080600060408486031215611e8357600080fd5b833567ffffffffffffffff8082168214611e9c57600080fd5b90935060208501359080821115611eb257600080fd5b818601915086601f830112611ec657600080fd5b813581811115611ed557600080fd5b8760208260051b8501011115611eea57600080fd5b6020830194508093505050509250925092565b600080600060408486031215611f1257600080fd5b83359250602084013567ffffffffffffffff811115611f3057600080fd5b611f3c86828701611c5b565b9497909650939450505050565b600060208284031215611f5b57600080fd5b61158d82611c13565b60008060408385031215611f7757600080fd5b82359150602083013567ffffffffffffffff811115611f9557600080fd5b611fa185828601611d7e565b9150509250929050565b60005b83811015611fc6578181015183820152602001611fae565b50506000910152565b6020815260008251806020840152611fee816040850160208701611fab565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008451612032818460208901611fab565b91909101928352506020820152604001919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261208557612085612047565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000826120c8576120c8612047565b500490565b8082028115828204841417610cac57610cac61208a565b80820180821115610cac57610cac61208a565b6000808585111561210757600080fd5b8386111561211457600080fd5b5050820193919092039150565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036121525761215261208a565b5060010190565b600067ffffffffffffffff8083168181036121765761217661208a565b6001019392505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126121b557600080fd5b83018035915067ffffffffffffffff8211156121d057600080fd5b6020019150600581901b3603821315611c9d57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301811261224b57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261228a57600080fd5b83018035915067ffffffffffffffff8211156122a557600080fd5b602001915036819003821315611c9d57600080fd5b8183823760009101908152919050565b60208082528181018390526000906040808401600586901b8501820187855b88811015612431577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18b360301811261234a57600080fd5b8a01606073ffffffffffffffffffffffffffffffffffffffff61236c83611bd0565b1685528782013588860152868201357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18336030181126123ab57600080fd5b90910187810191903567ffffffffffffffff8111156123c957600080fd5b8036038313156123d857600080fd5b8188870152808287015260809150808383880137600086820183015295880195601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169094019093019250908501906001016122e9565b509098975050505050505050565b7fff000000000000000000000000000000000000000000000000000000000000008660f81b16815260007fffffffffffffffff000000000000000000000000000000000000000000000000808760c01b166001840152856009840152808560c01b1660298401525082516124ba816031850160208701611fab565b919091016031019695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b81810381811115610cac57610cac61208a565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26474726f6e5822122029e4adaaf82d5a0cadc931e505e3ca550b0693041a840f1911134aac5207bfad64736f6c63430008140033",
776
+ "deployedBytecode": "0x60806040526004361061019a5760003560e01c8063960bfe04116100e1578063d63f97c91161008a578063e9ec3f5811610064578063e9ec3f5814610664578063ef09e78f146106b2578063f621ff60146106e1578063ffa1ad741461071057600080fd5b8063d63f97c9146105b6578063debfda30146105f0578063e1ed81761461062a57600080fd5b8063c7a823e0116100bb578063c7a823e014610513578063cf734e8a1461054d578063d1a626481461058757600080fd5b8063960bfe041461044b578063affed0e014610485578063b677cde4146104d957600080fd5b8063606c22e0116101435780637df73e271161011d5780637df73e27146103c25780638e6725bd146103fc57806394cf795e1461040f57600080fd5b8063606c22e0146103145780636419ebde146103585780637d94792a1461039257600080fd5b8063347024ff11610174578063347024ff1461025657806342cde4e81461029057806349dcfdd5146102d357600080fd5b80631e1bff3f146101a65780632b03f6ab146101e257806331cb61051461021c57600080fd5b366101a157005b600080fd5b3480156101b257600080fd5b50d380156101bf57600080fd5b50d280156101cc57600080fd5b506101e06101db366004611c28565b610780565b005b3480156101ee57600080fd5b50d380156101fb57600080fd5b50d2801561020857600080fd5b506101e0610217366004611ca4565b6107d5565b34801561022857600080fd5b50d3801561023557600080fd5b50d2801561024257600080fd5b506101e0610251366004611c28565b6109da565b34801561026257600080fd5b50d3801561026f57600080fd5b50d2801561027c57600080fd5b506101e061028b366004611cf7565b610a2b565b34801561029c57600080fd5b50d380156102a957600080fd5b50d280156102b657600080fd5b506102c060025481565b6040519081526020015b60405180910390f35b3480156102df57600080fd5b50d380156102ec57600080fd5b50d280156102f957600080fd5b50610302600181565b60405160ff90911681526020016102ca565b34801561032057600080fd5b50d3801561032d57600080fd5b50d2801561033a57600080fd5b506006546103489060ff1681565b60405190151581526020016102ca565b34801561036457600080fd5b50d3801561037157600080fd5b50d2801561037e57600080fd5b506101e061038d366004611d10565b610a70565b34801561039e57600080fd5b50d380156103ab57600080fd5b50d280156103b857600080fd5b506102c060075481565b3480156103ce57600080fd5b50d380156103db57600080fd5b50d280156103e857600080fd5b506103486103f7366004611d63565b610ca0565b6101e061040a366004611d96565b610cb2565b34801561041b57600080fd5b50d3801561042857600080fd5b50d2801561043557600080fd5b5061043e610f17565b6040516102ca9190611e14565b34801561045757600080fd5b50d3801561046457600080fd5b50d2801561047157600080fd5b506101e0610480366004611cf7565b610f28565b34801561049157600080fd5b50d3801561049e57600080fd5b50d280156104ab57600080fd5b506008546104c09067ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016102ca565b3480156104e557600080fd5b50d380156104f257600080fd5b50d280156104ff57600080fd5b506102c061050e366004611e6e565b610f6a565b34801561051f57600080fd5b50d3801561052c57600080fd5b50d2801561053957600080fd5b506101e0610548366004611efd565b611056565b34801561055957600080fd5b50d3801561056657600080fd5b50d2801561057357600080fd5b506101e0610582366004611f49565b611069565b34801561059357600080fd5b50d380156105a057600080fd5b50d280156105ad57600080fd5b506102c06110ab565b3480156105c257600080fd5b50d380156105cf57600080fd5b50d280156105dc57600080fd5b506101e06105eb366004611f64565b6110b7565b3480156105fc57600080fd5b50d3801561060957600080fd5b50d2801561061657600080fd5b50610348610625366004611d63565b61112f565b34801561063657600080fd5b50d3801561064357600080fd5b50d2801561065057600080fd5b5061034861065f366004611d63565b61113c565b34801561067057600080fd5b50d3801561067d57600080fd5b50d2801561068a57600080fd5b506104c07f000000000000000000000000000000000000000000000000000000000000000081565b3480156106be57600080fd5b50d380156106cb57600080fd5b50d280156106d857600080fd5b5061043e611164565b3480156106ed57600080fd5b50d380156106fa57600080fd5b50d2801561070757600080fd5b506102c0611170565b34801561071c57600080fd5b50d3801561072957600080fd5b50d2801561073657600080fd5b506107736040518060400160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6040516102ca9190611fcf565b3330146107b9576040517fff54bf4b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80156107cc576107c88261117c565b5050565b6107c882611272565b8242111561080f576040517f4f01675500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080518082018252600281527f190100000000000000000000000000000000000000000000000000000000000060208083019190915282518084018452600681527f4f6e6553696700000000000000000000000000000000000000000000000000009082015282518084018452600581527f302e302e310000000000000000000000000000000000000000000000000000009082015282517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527fbd7855a8d66a83be54ebc7fa5f2e3fb658ab6007afa89cd93dfca08ad1b97ec8818501527fae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc19916381188560608201526001608082015261dead60a0808301919091528451808303909101815260c0820185528051908301206007547f642ed5d2b77bc7ccb98e10da4c02d7cd8231228da4222a9f88a80c15545074ed60e08401526101008301526101208201899052610140808301899052855180840390910181526101608301909552845194909201939093206000936109b09392919061018001612020565b6040516020818303038152906040528051906020012090506109d3818484611056565b5050505050565b333014610a13576040517fff54bf4b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8015610a22576107c882611314565b6107c882611403565b333014610a64576040517fff54bf4b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a6d816114fc565b50565b80600003610aaa576040517f831761d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ab5604183612076565b15610aec576040517fcd2467c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610af96041846120b9565b905081811015610b35576040517fcd2467c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b82811015610c97573660008787610b516041866120cd565b906041610b5f8760016120e4565b610b6991906120cd565b92610b76939291906120f7565b915091506000610bbc8a84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061153892505050565b90508473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1611610c23576040517fd02ef0e500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c2c81610ca0565b610c7f576040517f53b1def100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b9350829150610c8f905081612121565b915050610b39565b50505050505050565b6000610cac8183611562565b92915050565b610cba611594565b610cc33361113c565b610cf9576040517f245b1c3100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d05848484846107d5565b610d0f84866110b7565b6008805460009167ffffffffffffffff9091169082610d2d83612159565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555067ffffffffffffffff16905060005b610d6c8780612180565b9050811015610ed2576000610d818880612180565b83818110610d9157610d916121e8565b9050602002810190610da39190612217565b610db1906020810190611d63565b73ffffffffffffffffffffffffffffffffffffffff16610dd18980612180565b84818110610de157610de16121e8565b9050602002810190610df39190612217565b60200135610e018a80612180565b85818110610e1157610e116121e8565b9050602002810190610e239190612217565b610e31906040810190612255565b604051610e3f9291906122ba565b60006040518083038185875af1925050503d8060008114610e7c576040519150601f19603f3d011682016040523d82523d6000602084013e610e81565b606091505b5050905080610ebf576040517f492fd70e00000000000000000000000000000000000000000000000000000000815260048101839052602401610c76565b5080610eca81612121565b915050610d62565b5060408051868152602081018390527fd9a0df418868c38712b1f6eab685bc77a2e49596edd77667ab34d5448f5f941c910160405180910390a1506109d36001600355565b6060610f2360006115d7565b905090565b333014610f61576040517fff54bf4b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a6d816115e4565b600060017f00000000000000000000000000000000000000000000000000000000000000003073ffffffffffffffffffffffffffffffffffffffff1660001b868686604051602001610fbd9291906122ca565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610ffc959493929160200161243f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012090830152016040516020818303038152906040528051906020012090509392505050565b611064838383600254610a70565b505050565b3330146110a2576040517fff54bf4b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a6d816116a7565b6000610f236000611706565b6008546000906110d59067ffffffffffffffff1661050e8480612180565b905060006110f06110e96020850185612180565b8685611710565b905080611129576040517f2a1704e200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b6000610cac600483611562565b60065460009060ff16158061115557506111558261112f565b80610cac5750610cac82610ca0565b6060610f2360046115d7565b6000610f236004611706565b73ffffffffffffffffffffffffffffffffffffffff81166111c9576040517f710c949700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111d4600482611728565b611222576040517fc06cd70100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610c76565b6040516001815273ffffffffffffffffffffffffffffffffffffffff8216907f278b09622564dd3991fe7744514513d64ea2c8ed2b2b9ec1150ad964fde80a99906020015b60405180910390a250565b61127d60048261174a565b6112cb576040517f59e7f66000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610c76565b6040516000815273ffffffffffffffffffffffffffffffffffffffff8216907f278b09622564dd3991fe7744514513d64ea2c8ed2b2b9ec1150ad964fde80a9990602001611267565b73ffffffffffffffffffffffffffffffffffffffff8116611361576040517f815e1d6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61136c600082611728565b6113ba576040517f9fb0d64c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610c76565b6040516001815273ffffffffffffffffffffffffffffffffffffffff8216907ffc4acb499491cd850a8a21ab98c7f128850c0f0e5f1a875a62b7fa055c2ecf1990602001611267565b61140e60008261174a565b61145c576040517f53b1def100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610c76565b6002546114676110ab565b10156114b3576114756110ab565b6002546040517f6d521b8000000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610c76565b6040516000815273ffffffffffffffffffffffffffffffffffffffff8216907ffc4acb499491cd850a8a21ab98c7f128850c0f0e5f1a875a62b7fa055c2ecf1990602001611267565b60078190556040518181527f36d9c0a688d366a03517cca4843dfff4e45db3869d5fd86fb9d15a1b45ce0e5a906020015b60405180910390a150565b600080600080611548868661176c565b92509250925061155882826117b9565b5090949350505050565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260018301602052604081205415155b9392505050565b6002600354036115d0576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600355565b6060600061158d836118bd565b8060000361161e576040517f831761d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806116276110ab565b1015611672576116356110ab565b6040517f6d521b80000000000000000000000000000000000000000000000000000000008152600481019190915260248101829052604401610c76565b60028190556040518181527f6e8a187d7944998085dbd1f16b84c51c903bb727536cdba86962439aded2cfd79060200161152d565b600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168215159081179091556040519081527faf318623f8b8327d379709bc2f6846f21be20c305509acd41dccf7e07a4853479060200161152d565b6000610cac825490565b60008261171e868685611919565b1495945050505050565b600061158d8373ffffffffffffffffffffffffffffffffffffffff8416611965565b600061158d8373ffffffffffffffffffffffffffffffffffffffff84166119b4565b600080600083516041036117a65760208401516040850151606086015160001a61179888828585611aa7565b9550955095505050506117b2565b50508151600091506002905b9250925092565b60008260038111156117cd576117cd6124cb565b036117d6575050565b60018260038111156117ea576117ea6124cb565b03611821576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002826003811115611835576118356124cb565b0361186f576040517ffce698f700000000000000000000000000000000000000000000000000000000815260048101829052602401610c76565b6003826003811115611883576118836124cb565b036107c8576040517fd78bce0c00000000000000000000000000000000000000000000000000000000815260048101829052602401610c76565b60608160000180548060200260200160405190810160405280929190818152602001828054801561190d57602002820191906000526020600020905b8154815260200190600101908083116118f9575b50505050509050919050565b600081815b8481101561195c576119488287878481811061193c5761193c6121e8565b90506020020135611ba1565b91508061195481612121565b91505061191e565b50949350505050565b60008181526001830160205260408120546119ac57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610cac565b506000610cac565b60008181526001830160205260408120548015611a9d5760006119d86001836124fa565b85549091506000906119ec906001906124fa565b9050808214611a51576000866000018281548110611a0c57611a0c6121e8565b9060005260206000200154905080876000018481548110611a2f57611a2f6121e8565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611a6257611a6261250d565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610cac565b6000915050610cac565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115611ae25750600091506003905082611b97565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611b36573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116611b8d57506000925060019150829050611b97565b9250600091508190505b9450945094915050565b6000818310611bbd57600082815260208490526040902061158d565b600083815260208390526040902061158d565b6000813574ffffffffffffffffffffffffffffffffffffffffff81168114611bf757600080fd5b73ffffffffffffffffffffffffffffffffffffffff1692915050565b80358015158114611c2357600080fd5b919050565b60008060408385031215611c3b57600080fd5b611c4483611bd0565b9150611c5260208401611c13565b90509250929050565b60008083601f840112611c6d57600080fd5b50813567ffffffffffffffff811115611c8557600080fd5b602083019150836020828501011115611c9d57600080fd5b9250929050565b60008060008060608587031215611cba57600080fd5b8435935060208501359250604085013567ffffffffffffffff811115611cdf57600080fd5b611ceb87828801611c5b565b95989497509550505050565b600060208284031215611d0957600080fd5b5035919050565b60008060008060608587031215611d2657600080fd5b84359350602085013567ffffffffffffffff811115611d4457600080fd5b611d5087828801611c5b565b9598909750949560400135949350505050565b600060208284031215611d7557600080fd5b61158d82611bd0565b600060408284031215611d9057600080fd5b50919050565b600080600080600060808688031215611dae57600080fd5b853567ffffffffffffffff80821115611dc657600080fd5b611dd289838a01611d7e565b965060208801359550604088013594506060880135915080821115611df657600080fd5b50611e0388828901611c5b565b969995985093965092949392505050565b6020808252825182820181905260009190848201906040850190845b81811015611e6257835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101611e30565b50909695505050505050565b600080600060408486031215611e8357600080fd5b833567ffffffffffffffff8082168214611e9c57600080fd5b90935060208501359080821115611eb257600080fd5b818601915086601f830112611ec657600080fd5b813581811115611ed557600080fd5b8760208260051b8501011115611eea57600080fd5b6020830194508093505050509250925092565b600080600060408486031215611f1257600080fd5b83359250602084013567ffffffffffffffff811115611f3057600080fd5b611f3c86828701611c5b565b9497909650939450505050565b600060208284031215611f5b57600080fd5b61158d82611c13565b60008060408385031215611f7757600080fd5b82359150602083013567ffffffffffffffff811115611f9557600080fd5b611fa185828601611d7e565b9150509250929050565b60005b83811015611fc6578181015183820152602001611fae565b50506000910152565b6020815260008251806020840152611fee816040850160208701611fab565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008451612032818460208901611fab565b91909101928352506020820152604001919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261208557612085612047565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000826120c8576120c8612047565b500490565b8082028115828204841417610cac57610cac61208a565b80820180821115610cac57610cac61208a565b6000808585111561210757600080fd5b8386111561211457600080fd5b5050820193919092039150565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036121525761215261208a565b5060010190565b600067ffffffffffffffff8083168181036121765761217661208a565b6001019392505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126121b557600080fd5b83018035915067ffffffffffffffff8211156121d057600080fd5b6020019150600581901b3603821315611c9d57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301811261224b57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261228a57600080fd5b83018035915067ffffffffffffffff8211156122a557600080fd5b602001915036819003821315611c9d57600080fd5b8183823760009101908152919050565b60208082528181018390526000906040808401600586901b8501820187855b88811015612431577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18b360301811261234a57600080fd5b8a01606073ffffffffffffffffffffffffffffffffffffffff61236c83611bd0565b1685528782013588860152868201357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18336030181126123ab57600080fd5b90910187810191903567ffffffffffffffff8111156123c957600080fd5b8036038313156123d857600080fd5b8188870152808287015260809150808383880137600086820183015295880195601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169094019093019250908501906001016122e9565b509098975050505050505050565b7fff000000000000000000000000000000000000000000000000000000000000008660f81b16815260007fffffffffffffffff000000000000000000000000000000000000000000000000808760c01b166001840152856009840152808560c01b1660298401525082516124ba816031850160208701611fab565b919091016031019695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b81810381811115610cac57610cac61208a565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26474726f6e5822122029e4adaaf82d5a0cadc931e505e3ca550b0693041a840f1911134aac5207bfad64736f6c63430008140033",
590
777
  "linkReferences": {},
591
778
  "deployedLinkReferences": {}
592
779
  }
@@ -0,0 +1,16 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "SelfCallable",
4
+ "sourceName": "contracts/lib/SelfCallable.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [],
8
+ "name": "OnlySelfCall",
9
+ "type": "error"
10
+ }
11
+ ],
12
+ "bytecode": "0x",
13
+ "deployedBytecode": "0x",
14
+ "linkReferences": {},
15
+ "deployedLinkReferences": {}
16
+ }