@layerzerolabs/onesig-evm 0.0.9 → 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 (26) hide show
  1. package/artifacts/contracts/ExecutorStore.sol/ExecutorStore.json +164 -0
  2. package/artifacts/contracts/MultiSig.sol/MultiSig.json +1 -1
  3. package/artifacts/contracts/OneSig.sol/OneSig.json +188 -6
  4. package/artifacts-tron/contracts/ExecutorStore.sol/ExecutorStore.json +164 -0
  5. package/artifacts-tron/contracts/MultiSig.sol/MultiSig.json +1 -1
  6. package/artifacts-tron/contracts/OneSig.sol/OneSig.json +188 -6
  7. package/artifacts-zk/contracts/ExecutorStore.sol/ExecutorStore.json +165 -0
  8. package/artifacts-zk/contracts/MultiSig.sol/MultiSig.json +1 -1
  9. package/artifacts-zk/contracts/OneSig.sol/OneSig.json +188 -6
  10. package/contracts/ExecutorStore.sol +137 -0
  11. package/contracts/MultiSig.sol +1 -1
  12. package/contracts/OneSig.sol +30 -5
  13. package/package.json +1 -1
  14. package/typechain-types/contracts/ExecutorStore.ts +286 -0
  15. package/typechain-types/contracts/MultiSig.ts +5 -2
  16. package/typechain-types/contracts/OneSig.ts +247 -2
  17. package/typechain-types/contracts/index.ts +1 -0
  18. package/typechain-types/factories/@openzeppelin/contracts/utils/cryptography/ECDSA__factory.ts +1 -1
  19. package/typechain-types/factories/@openzeppelin/contracts/utils/cryptography/MerkleProof__factory.ts +1 -1
  20. package/typechain-types/factories/contracts/ExecutorStore__factory.ts +179 -0
  21. package/typechain-types/factories/contracts/MultiSig__factory.ts +1 -1
  22. package/typechain-types/factories/contracts/OneSig__factory.ts +199 -9
  23. package/typechain-types/factories/contracts/index.ts +1 -0
  24. package/typechain-types/factories/contracts/mocks/MockOApp__factory.ts +1 -1
  25. package/typechain-types/hardhat.d.ts +9 -0
  26. package/typechain-types/index.ts +2 -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
+ }
@@ -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",
@@ -82,6 +119,11 @@
82
119
  "name": "MerkleRootExpired",
83
120
  "type": "error"
84
121
  },
122
+ {
123
+ "inputs": [],
124
+ "name": "OnlyExecutorOrSigner",
125
+ "type": "error"
126
+ },
85
127
  {
86
128
  "inputs": [],
87
129
  "name": "OnlySelfCall",
@@ -145,6 +187,38 @@
145
187
  "name": "ZeroThreshold",
146
188
  "type": "error"
147
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
+ },
148
222
  {
149
223
  "anonymous": false,
150
224
  "inputs": [
@@ -162,7 +236,7 @@
162
236
  "anonymous": false,
163
237
  "inputs": [
164
238
  {
165
- "indexed": false,
239
+ "indexed": true,
166
240
  "internalType": "address",
167
241
  "name": "signer",
168
242
  "type": "address"
@@ -248,6 +322,25 @@
248
322
  "stateMutability": "view",
249
323
  "type": "function"
250
324
  },
325
+ {
326
+ "inputs": [
327
+ {
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
+ },
251
344
  {
252
345
  "inputs": [
253
346
  {
@@ -346,6 +439,32 @@
346
439
  "stateMutability": "payable",
347
440
  "type": "function"
348
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
+ },
349
468
  {
350
469
  "inputs": [],
351
470
  "name": "getSigners",
@@ -359,6 +478,25 @@
359
478
  "stateMutability": "view",
360
479
  "type": "function"
361
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
+ },
362
500
  {
363
501
  "inputs": [
364
502
  {
@@ -404,6 +542,37 @@
404
542
  "stateMutability": "view",
405
543
  "type": "function"
406
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
+ },
407
576
  {
408
577
  "inputs": [
409
578
  {
@@ -461,6 +630,19 @@
461
630
  "stateMutability": "view",
462
631
  "type": "function"
463
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
+ },
464
646
  {
465
647
  "inputs": [],
466
648
  "name": "totalSigners",
@@ -590,8 +772,8 @@
590
772
  "type": "receive"
591
773
  }
592
774
  ],
593
- "bytecode": "0x60a06040523480156200001157600080fd5b50d380156200001f57600080fd5b50d280156200002d57600080fd5b50604051620024e6380380620024e6833981016040819052620000509162000339565b838360005b8251811015620000a1576200008c83828151811062000078576200007862000431565b6020026020010151620000d660201b60201c565b80620000988162000447565b91505062000055565b50620000ad816200017f565b505060016003556001600160401b038216608052620000cc8162000217565b505050506200046f565b6001600160a01b038116620000fe57604051632057875960e21b815260040160405180910390fd5b6200010b6000826200024d565b62000139576040516327ec359360e21b81526001600160a01b03821660048201526024015b60405180910390fd5b604080516001600160a01b0383168152600160208201527ffc4acb499491cd850a8a21ab98c7f128850c0f0e5f1a875a62b7fa055c2ecf1991015b60405180910390a150565b80600003620001a15760405163831761d760e01b815260040160405180910390fd5b80620001ac6200026d565b1015620001e157620001bd6200026d565b60405162daa43760e71b815260048101919091526024810182905260440162000130565b60028190556040518181527f6e8a187d7944998085dbd1f16b84c51c903bb727536cdba86962439aded2cfd79060200162000174565b60048190556040518181527f36d9c0a688d366a03517cca4843dfff4e45db3869d5fd86fb9d15a1b45ce0e5a9060200162000174565b600062000264836001600160a01b0384166200027f565b90505b92915050565b60006200027a81620002d1565b905090565b6000818152600183016020526040812054620002c85750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000267565b50600062000267565b600062000267825490565b634e487b7160e01b600052604160045260246000fd5b80516000906001600160a81b03811681146200030d57600080fd5b6001600160a01b031692915050565b80516001600160401b03811681146200033457600080fd5b919050565b600080600080608085870312156200035057600080fd5b84516001600160401b03808211156200036857600080fd5b818701915087601f8301126200037d57600080fd5b8151602082821115620003945762000394620002dc565b8160051b604051601f19603f83011681018181108682111715620003bc57620003bc620002dc565b60405292835281830193508481018201928b841115620003db57600080fd5b948201945b838610156200040457620003f486620002f2565b85529482019493820193620003e0565b80995050508089015196505050505062000421604086016200031c565b6060959095015193969295505050565b634e487b7160e01b600052603260045260246000fd5b6000600182016200046857634e487b7160e01b600052601160045260246000fd5b5060010190565b60805161205462000492600039600081816105070152610cf901526120546000f3fe60806040526004361061012d5760003560e01c806394cf795e116100a5578063c7a823e011610074578063d63f97c911610059578063d63f97c9146104a1578063e9ec3f58146104db578063ffa1ad741461052957600080fd5b8063c7a823e014610438578063d1a626481461047257600080fd5b806394cf795e14610334578063960bfe0414610370578063affed0e0146103aa578063b677cde4146103fe57600080fd5b806349dcfdd5116100fc5780637d94792a116100e15780637d94792a146102a75780637df73e27146102d75780638e6725bd1461032157600080fd5b806349dcfdd51461022c5780636419ebde1461026d57600080fd5b80632b03f6ab1461013957806331cb610514610175578063347024ff146101af57806342cde4e8146101e957600080fd5b3661013457005b600080fd5b34801561014557600080fd5b50d3801561015257600080fd5b50d2801561015f57600080fd5b5061017361016e366004611722565b610599565b005b34801561018157600080fd5b50d3801561018e57600080fd5b50d2801561019b57600080fd5b506101736101aa3660046117b8565b61079e565b3480156101bb57600080fd5b50d380156101c857600080fd5b50d280156101d557600080fd5b506101736101e43660046117f4565b6107f3565b3480156101f557600080fd5b50d3801561020257600080fd5b50d2801561020f57600080fd5b5061021960025481565b6040519081526020015b60405180910390f35b34801561023857600080fd5b50d3801561024557600080fd5b50d2801561025257600080fd5b5061025b600181565b60405160ff9091168152602001610223565b34801561027957600080fd5b50d3801561028657600080fd5b50d2801561029357600080fd5b506101736102a236600461180d565b610838565b3480156102b357600080fd5b50d380156102c057600080fd5b50d280156102cd57600080fd5b5061021960045481565b3480156102e357600080fd5b50d380156102f057600080fd5b50d280156102fd57600080fd5b5061031161030c366004611860565b610a68565b6040519015158152602001610223565b61017361032f366004611893565b610a7a565b34801561034057600080fd5b50d3801561034d57600080fd5b50d2801561035a57600080fd5b50610363610ca0565b6040516102239190611911565b34801561037c57600080fd5b50d3801561038957600080fd5b50d2801561039657600080fd5b506101736103a53660046117f4565b610cb1565b3480156103b657600080fd5b50d380156103c357600080fd5b50d280156103d057600080fd5b506005546103e59067ffffffffffffffff1681565b60405167ffffffffffffffff9091168152602001610223565b34801561040a57600080fd5b50d3801561041757600080fd5b50d2801561042457600080fd5b5061021961043336600461196b565b610cf3565b34801561044457600080fd5b50d3801561045157600080fd5b50d2801561045e57600080fd5b5061017361046d3660046119fa565b610ddf565b34801561047e57600080fd5b50d3801561048b57600080fd5b50d2801561049857600080fd5b50610219610df2565b3480156104ad57600080fd5b50d380156104ba57600080fd5b50d280156104c757600080fd5b506101736104d6366004611a46565b610dfe565b3480156104e757600080fd5b50d380156104f457600080fd5b50d2801561050157600080fd5b506103e57f000000000000000000000000000000000000000000000000000000000000000081565b34801561053557600080fd5b50d3801561054257600080fd5b50d2801561054f57600080fd5b5061058c6040518060400160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6040516102239190611ab1565b824211156105d3576040517f4f01675500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080518082018252600281527f190100000000000000000000000000000000000000000000000000000000000060208083019190915282518084018452600681527f4f6e6553696700000000000000000000000000000000000000000000000000009082015282518084018452600581527f302e302e310000000000000000000000000000000000000000000000000000009082015282517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527fbd7855a8d66a83be54ebc7fa5f2e3fb658ab6007afa89cd93dfca08ad1b97ec8818501527fae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc19916381188560608201526001608082015261dead60a0808301919091528451808303909101815260c0820185528051908301206004547f642ed5d2b77bc7ccb98e10da4c02d7cd8231228da4222a9f88a80c15545074ed60e08401526101008301526101208201899052610140808301899052855180840390910181526101608301909552845194909201939093206000936107749392919061018001611b02565b604051602081830303815290604052805190602001209050610797818484610ddf565b5050505050565b3330146107d7576040517fff54bf4b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80156107ea576107e682610e76565b5050565b6107e682610f6f565b33301461082c576040517fff54bf4b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108358161106b565b50565b80600003610872576040517f831761d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61087d604183611b58565b156108b4576040517fcd2467c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006108c1604184611b9b565b9050818110156108fd576040517fcd2467c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b82811015610a5f573660008787610919604186611baf565b906041610927876001611bc6565b6109319190611baf565b9261093e93929190611bd9565b9150915060006109848a84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506110a092505050565b90508473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16116109eb576040517fd02ef0e500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109f481610a68565b610a47576040517f53b1def100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b9350829150610a57905081611c03565b915050610901565b50505050505050565b6000610a7481836110ca565b92915050565b610a826110fc565b610a8e84848484610599565b610a988486610dfe565b6005805460009167ffffffffffffffff9091169082610ab683611c3b565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555067ffffffffffffffff16905060005b610af58780611c62565b9050811015610c5b576000610b0a8880611c62565b83818110610b1a57610b1a611cca565b9050602002810190610b2c9190611cf9565b610b3a906020810190611860565b73ffffffffffffffffffffffffffffffffffffffff16610b5a8980611c62565b84818110610b6a57610b6a611cca565b9050602002810190610b7c9190611cf9565b60200135610b8a8a80611c62565b85818110610b9a57610b9a611cca565b9050602002810190610bac9190611cf9565b610bba906040810190611d37565b604051610bc8929190611d9c565b60006040518083038185875af1925050503d8060008114610c05576040519150601f19603f3d011682016040523d82523d6000602084013e610c0a565b606091505b5050905080610c48576040517f492fd70e00000000000000000000000000000000000000000000000000000000815260048101839052602401610a3e565b5080610c5381611c03565b915050610aeb565b5060408051868152602081018390527fd9a0df418868c38712b1f6eab685bc77a2e49596edd77667ab34d5448f5f941c910160405180910390a1506107976001600355565b6060610cac600061113f565b905090565b333014610cea576040517fff54bf4b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108358161114c565b600060017f00000000000000000000000000000000000000000000000000000000000000003073ffffffffffffffffffffffffffffffffffffffff1660001b868686604051602001610d46929190611dac565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610d859594939291602001611f21565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012090830152016040516020818303038152906040528051906020012090509392505050565b610ded838383600254610838565b505050565b6000610cac600061120f565b600554600090610e1c9067ffffffffffffffff166104338480611c62565b90506000610e37610e306020850185611c62565b8685611219565b905080610e70576040517f2a1704e200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116610ec3576040517f815e1d6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ece600082611231565b610f1c576040517f9fb0d64c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610a3e565b6040805173ffffffffffffffffffffffffffffffffffffffff83168152600160208201527ffc4acb499491cd850a8a21ab98c7f128850c0f0e5f1a875a62b7fa055c2ecf1991015b60405180910390a150565b610f7a600082611253565b610fc8576040517f53b1def100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610a3e565b600254610fd3610df2565b101561101f57610fe1610df2565b6002546040517f6d521b8000000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610a3e565b6040805173ffffffffffffffffffffffffffffffffffffffff83168152600060208201527ffc4acb499491cd850a8a21ab98c7f128850c0f0e5f1a875a62b7fa055c2ecf199101610f64565b60048190556040518181527f36d9c0a688d366a03517cca4843dfff4e45db3869d5fd86fb9d15a1b45ce0e5a90602001610f64565b6000806000806110b08686611275565b9250925092506110c082826112c2565b5090949350505050565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260018301602052604081205415155b9392505050565b600260035403611138576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600355565b606060006110f5836113c6565b80600003611186576040517f831761d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8061118f610df2565b10156111da5761119d610df2565b6040517f6d521b80000000000000000000000000000000000000000000000000000000008152600481019190915260248101829052604401610a3e565b60028190556040518181527f6e8a187d7944998085dbd1f16b84c51c903bb727536cdba86962439aded2cfd790602001610f64565b6000610a74825490565b600082611227868685611422565b1495945050505050565b60006110f58373ffffffffffffffffffffffffffffffffffffffff841661146e565b60006110f58373ffffffffffffffffffffffffffffffffffffffff84166114bd565b600080600083516041036112af5760208401516040850151606086015160001a6112a1888285856115b0565b9550955095505050506112bb565b50508151600091506002905b9250925092565b60008260038111156112d6576112d6611fad565b036112df575050565b60018260038111156112f3576112f3611fad565b0361132a576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600282600381111561133e5761133e611fad565b03611378576040517ffce698f700000000000000000000000000000000000000000000000000000000815260048101829052602401610a3e565b600382600381111561138c5761138c611fad565b036107e6576040517fd78bce0c00000000000000000000000000000000000000000000000000000000815260048101829052602401610a3e565b60608160000180548060200260200160405190810160405280929190818152602001828054801561141657602002820191906000526020600020905b815481526020019060010190808311611402575b50505050509050919050565b600081815b84811015611465576114518287878481811061144557611445611cca565b905060200201356116aa565b91508061145d81611c03565b915050611427565b50949350505050565b60008181526001830160205260408120546114b557508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610a74565b506000610a74565b600081815260018301602052604081205480156115a65760006114e1600183611fdc565b85549091506000906114f590600190611fdc565b905080821461155a57600086600001828154811061151557611515611cca565b906000526020600020015490508087600001848154811061153857611538611cca565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061156b5761156b611fef565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610a74565b6000915050610a74565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156115eb57506000915060039050826116a0565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa15801561163f573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116611696575060009250600191508290506116a0565b9250600091508190505b9450945094915050565b60008183106116c65760008281526020849052604090206110f5565b60008381526020839052604090206110f5565b60008083601f8401126116eb57600080fd5b50813567ffffffffffffffff81111561170357600080fd5b60208301915083602082850101111561171b57600080fd5b9250929050565b6000806000806060858703121561173857600080fd5b8435935060208501359250604085013567ffffffffffffffff81111561175d57600080fd5b611769878288016116d9565b95989497509550505050565b6000813574ffffffffffffffffffffffffffffffffffffffffff8116811461179c57600080fd5b73ffffffffffffffffffffffffffffffffffffffff1692915050565b600080604083850312156117cb57600080fd5b6117d483611775565b9150602083013580151581146117e957600080fd5b809150509250929050565b60006020828403121561180657600080fd5b5035919050565b6000806000806060858703121561182357600080fd5b84359350602085013567ffffffffffffffff81111561184157600080fd5b61184d878288016116d9565b9598909750949560400135949350505050565b60006020828403121561187257600080fd5b6110f582611775565b60006040828403121561188d57600080fd5b50919050565b6000806000806000608086880312156118ab57600080fd5b853567ffffffffffffffff808211156118c357600080fd5b6118cf89838a0161187b565b9650602088013595506040880135945060608801359150808211156118f357600080fd5b50611900888289016116d9565b969995985093965092949392505050565b6020808252825182820181905260009190848201906040850190845b8181101561195f57835173ffffffffffffffffffffffffffffffffffffffff168352928401929184019160010161192d565b50909695505050505050565b60008060006040848603121561198057600080fd5b833567ffffffffffffffff808216821461199957600080fd5b909350602085013590808211156119af57600080fd5b818601915086601f8301126119c357600080fd5b8135818111156119d257600080fd5b8760208260051b85010111156119e757600080fd5b6020830194508093505050509250925092565b600080600060408486031215611a0f57600080fd5b83359250602084013567ffffffffffffffff811115611a2d57600080fd5b611a39868287016116d9565b9497909650939450505050565b60008060408385031215611a5957600080fd5b82359150602083013567ffffffffffffffff811115611a7757600080fd5b611a838582860161187b565b9150509250929050565b60005b83811015611aa8578181015183820152602001611a90565b50506000910152565b6020815260008251806020840152611ad0816040850160208701611a8d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008451611b14818460208901611a8d565b91909101928352506020820152604001919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082611b6757611b67611b29565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082611baa57611baa611b29565b500490565b8082028115828204841417610a7457610a74611b6c565b80820180821115610a7457610a74611b6c565b60008085851115611be957600080fd5b83861115611bf657600080fd5b5050820193919092039150565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611c3457611c34611b6c565b5060010190565b600067ffffffffffffffff808316818103611c5857611c58611b6c565b6001019392505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611c9757600080fd5b83018035915067ffffffffffffffff821115611cb257600080fd5b6020019150600581901b360382131561171b57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112611d2d57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611d6c57600080fd5b83018035915067ffffffffffffffff821115611d8757600080fd5b60200191503681900382131561171b57600080fd5b8183823760009101908152919050565b60208082528181018390526000906040808401600586901b8501820187855b88811015611f13577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18b3603018112611e2c57600080fd5b8a01606073ffffffffffffffffffffffffffffffffffffffff611e4e83611775565b1685528782013588860152868201357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1833603018112611e8d57600080fd5b90910187810191903567ffffffffffffffff811115611eab57600080fd5b803603831315611eba57600080fd5b8188870152808287015260809150808383880137600086820183015295880195601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016909401909301925090850190600101611dcb565b509098975050505050505050565b7fff000000000000000000000000000000000000000000000000000000000000008660f81b16815260007fffffffffffffffff000000000000000000000000000000000000000000000000808760c01b166001840152856009840152808560c01b166029840152508251611f9c816031850160208701611a8d565b919091016031019695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b81810381811115610a7457610a74611b6c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26474726f6e58221220aa48ab1af5531e9c5252a8ebeff44fd941d1c74462a456664b2fc64c89218ba764736f6c63430008140033",
594
- "deployedBytecode": "0x60806040526004361061012d5760003560e01c806394cf795e116100a5578063c7a823e011610074578063d63f97c911610059578063d63f97c9146104a1578063e9ec3f58146104db578063ffa1ad741461052957600080fd5b8063c7a823e014610438578063d1a626481461047257600080fd5b806394cf795e14610334578063960bfe0414610370578063affed0e0146103aa578063b677cde4146103fe57600080fd5b806349dcfdd5116100fc5780637d94792a116100e15780637d94792a146102a75780637df73e27146102d75780638e6725bd1461032157600080fd5b806349dcfdd51461022c5780636419ebde1461026d57600080fd5b80632b03f6ab1461013957806331cb610514610175578063347024ff146101af57806342cde4e8146101e957600080fd5b3661013457005b600080fd5b34801561014557600080fd5b50d3801561015257600080fd5b50d2801561015f57600080fd5b5061017361016e366004611722565b610599565b005b34801561018157600080fd5b50d3801561018e57600080fd5b50d2801561019b57600080fd5b506101736101aa3660046117b8565b61079e565b3480156101bb57600080fd5b50d380156101c857600080fd5b50d280156101d557600080fd5b506101736101e43660046117f4565b6107f3565b3480156101f557600080fd5b50d3801561020257600080fd5b50d2801561020f57600080fd5b5061021960025481565b6040519081526020015b60405180910390f35b34801561023857600080fd5b50d3801561024557600080fd5b50d2801561025257600080fd5b5061025b600181565b60405160ff9091168152602001610223565b34801561027957600080fd5b50d3801561028657600080fd5b50d2801561029357600080fd5b506101736102a236600461180d565b610838565b3480156102b357600080fd5b50d380156102c057600080fd5b50d280156102cd57600080fd5b5061021960045481565b3480156102e357600080fd5b50d380156102f057600080fd5b50d280156102fd57600080fd5b5061031161030c366004611860565b610a68565b6040519015158152602001610223565b61017361032f366004611893565b610a7a565b34801561034057600080fd5b50d3801561034d57600080fd5b50d2801561035a57600080fd5b50610363610ca0565b6040516102239190611911565b34801561037c57600080fd5b50d3801561038957600080fd5b50d2801561039657600080fd5b506101736103a53660046117f4565b610cb1565b3480156103b657600080fd5b50d380156103c357600080fd5b50d280156103d057600080fd5b506005546103e59067ffffffffffffffff1681565b60405167ffffffffffffffff9091168152602001610223565b34801561040a57600080fd5b50d3801561041757600080fd5b50d2801561042457600080fd5b5061021961043336600461196b565b610cf3565b34801561044457600080fd5b50d3801561045157600080fd5b50d2801561045e57600080fd5b5061017361046d3660046119fa565b610ddf565b34801561047e57600080fd5b50d3801561048b57600080fd5b50d2801561049857600080fd5b50610219610df2565b3480156104ad57600080fd5b50d380156104ba57600080fd5b50d280156104c757600080fd5b506101736104d6366004611a46565b610dfe565b3480156104e757600080fd5b50d380156104f457600080fd5b50d2801561050157600080fd5b506103e57f000000000000000000000000000000000000000000000000000000000000000081565b34801561053557600080fd5b50d3801561054257600080fd5b50d2801561054f57600080fd5b5061058c6040518060400160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6040516102239190611ab1565b824211156105d3576040517f4f01675500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080518082018252600281527f190100000000000000000000000000000000000000000000000000000000000060208083019190915282518084018452600681527f4f6e6553696700000000000000000000000000000000000000000000000000009082015282518084018452600581527f302e302e310000000000000000000000000000000000000000000000000000009082015282517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527fbd7855a8d66a83be54ebc7fa5f2e3fb658ab6007afa89cd93dfca08ad1b97ec8818501527fae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc19916381188560608201526001608082015261dead60a0808301919091528451808303909101815260c0820185528051908301206004547f642ed5d2b77bc7ccb98e10da4c02d7cd8231228da4222a9f88a80c15545074ed60e08401526101008301526101208201899052610140808301899052855180840390910181526101608301909552845194909201939093206000936107749392919061018001611b02565b604051602081830303815290604052805190602001209050610797818484610ddf565b5050505050565b3330146107d7576040517fff54bf4b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80156107ea576107e682610e76565b5050565b6107e682610f6f565b33301461082c576040517fff54bf4b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108358161106b565b50565b80600003610872576040517f831761d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61087d604183611b58565b156108b4576040517fcd2467c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006108c1604184611b9b565b9050818110156108fd576040517fcd2467c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b82811015610a5f573660008787610919604186611baf565b906041610927876001611bc6565b6109319190611baf565b9261093e93929190611bd9565b9150915060006109848a84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506110a092505050565b90508473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16116109eb576040517fd02ef0e500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109f481610a68565b610a47576040517f53b1def100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b9350829150610a57905081611c03565b915050610901565b50505050505050565b6000610a7481836110ca565b92915050565b610a826110fc565b610a8e84848484610599565b610a988486610dfe565b6005805460009167ffffffffffffffff9091169082610ab683611c3b565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555067ffffffffffffffff16905060005b610af58780611c62565b9050811015610c5b576000610b0a8880611c62565b83818110610b1a57610b1a611cca565b9050602002810190610b2c9190611cf9565b610b3a906020810190611860565b73ffffffffffffffffffffffffffffffffffffffff16610b5a8980611c62565b84818110610b6a57610b6a611cca565b9050602002810190610b7c9190611cf9565b60200135610b8a8a80611c62565b85818110610b9a57610b9a611cca565b9050602002810190610bac9190611cf9565b610bba906040810190611d37565b604051610bc8929190611d9c565b60006040518083038185875af1925050503d8060008114610c05576040519150601f19603f3d011682016040523d82523d6000602084013e610c0a565b606091505b5050905080610c48576040517f492fd70e00000000000000000000000000000000000000000000000000000000815260048101839052602401610a3e565b5080610c5381611c03565b915050610aeb565b5060408051868152602081018390527fd9a0df418868c38712b1f6eab685bc77a2e49596edd77667ab34d5448f5f941c910160405180910390a1506107976001600355565b6060610cac600061113f565b905090565b333014610cea576040517fff54bf4b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108358161114c565b600060017f00000000000000000000000000000000000000000000000000000000000000003073ffffffffffffffffffffffffffffffffffffffff1660001b868686604051602001610d46929190611dac565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610d859594939291602001611f21565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012090830152016040516020818303038152906040528051906020012090509392505050565b610ded838383600254610838565b505050565b6000610cac600061120f565b600554600090610e1c9067ffffffffffffffff166104338480611c62565b90506000610e37610e306020850185611c62565b8685611219565b905080610e70576040517f2a1704e200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116610ec3576040517f815e1d6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ece600082611231565b610f1c576040517f9fb0d64c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610a3e565b6040805173ffffffffffffffffffffffffffffffffffffffff83168152600160208201527ffc4acb499491cd850a8a21ab98c7f128850c0f0e5f1a875a62b7fa055c2ecf1991015b60405180910390a150565b610f7a600082611253565b610fc8576040517f53b1def100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610a3e565b600254610fd3610df2565b101561101f57610fe1610df2565b6002546040517f6d521b8000000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610a3e565b6040805173ffffffffffffffffffffffffffffffffffffffff83168152600060208201527ffc4acb499491cd850a8a21ab98c7f128850c0f0e5f1a875a62b7fa055c2ecf199101610f64565b60048190556040518181527f36d9c0a688d366a03517cca4843dfff4e45db3869d5fd86fb9d15a1b45ce0e5a90602001610f64565b6000806000806110b08686611275565b9250925092506110c082826112c2565b5090949350505050565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260018301602052604081205415155b9392505050565b600260035403611138576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600355565b606060006110f5836113c6565b80600003611186576040517f831761d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8061118f610df2565b10156111da5761119d610df2565b6040517f6d521b80000000000000000000000000000000000000000000000000000000008152600481019190915260248101829052604401610a3e565b60028190556040518181527f6e8a187d7944998085dbd1f16b84c51c903bb727536cdba86962439aded2cfd790602001610f64565b6000610a74825490565b600082611227868685611422565b1495945050505050565b60006110f58373ffffffffffffffffffffffffffffffffffffffff841661146e565b60006110f58373ffffffffffffffffffffffffffffffffffffffff84166114bd565b600080600083516041036112af5760208401516040850151606086015160001a6112a1888285856115b0565b9550955095505050506112bb565b50508151600091506002905b9250925092565b60008260038111156112d6576112d6611fad565b036112df575050565b60018260038111156112f3576112f3611fad565b0361132a576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600282600381111561133e5761133e611fad565b03611378576040517ffce698f700000000000000000000000000000000000000000000000000000000815260048101829052602401610a3e565b600382600381111561138c5761138c611fad565b036107e6576040517fd78bce0c00000000000000000000000000000000000000000000000000000000815260048101829052602401610a3e565b60608160000180548060200260200160405190810160405280929190818152602001828054801561141657602002820191906000526020600020905b815481526020019060010190808311611402575b50505050509050919050565b600081815b84811015611465576114518287878481811061144557611445611cca565b905060200201356116aa565b91508061145d81611c03565b915050611427565b50949350505050565b60008181526001830160205260408120546114b557508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610a74565b506000610a74565b600081815260018301602052604081205480156115a65760006114e1600183611fdc565b85549091506000906114f590600190611fdc565b905080821461155a57600086600001828154811061151557611515611cca565b906000526020600020015490508087600001848154811061153857611538611cca565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061156b5761156b611fef565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610a74565b6000915050610a74565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156115eb57506000915060039050826116a0565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa15801561163f573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116611696575060009250600191508290506116a0565b9250600091508190505b9450945094915050565b60008183106116c65760008281526020849052604090206110f5565b60008381526020839052604090206110f5565b60008083601f8401126116eb57600080fd5b50813567ffffffffffffffff81111561170357600080fd5b60208301915083602082850101111561171b57600080fd5b9250929050565b6000806000806060858703121561173857600080fd5b8435935060208501359250604085013567ffffffffffffffff81111561175d57600080fd5b611769878288016116d9565b95989497509550505050565b6000813574ffffffffffffffffffffffffffffffffffffffffff8116811461179c57600080fd5b73ffffffffffffffffffffffffffffffffffffffff1692915050565b600080604083850312156117cb57600080fd5b6117d483611775565b9150602083013580151581146117e957600080fd5b809150509250929050565b60006020828403121561180657600080fd5b5035919050565b6000806000806060858703121561182357600080fd5b84359350602085013567ffffffffffffffff81111561184157600080fd5b61184d878288016116d9565b9598909750949560400135949350505050565b60006020828403121561187257600080fd5b6110f582611775565b60006040828403121561188d57600080fd5b50919050565b6000806000806000608086880312156118ab57600080fd5b853567ffffffffffffffff808211156118c357600080fd5b6118cf89838a0161187b565b9650602088013595506040880135945060608801359150808211156118f357600080fd5b50611900888289016116d9565b969995985093965092949392505050565b6020808252825182820181905260009190848201906040850190845b8181101561195f57835173ffffffffffffffffffffffffffffffffffffffff168352928401929184019160010161192d565b50909695505050505050565b60008060006040848603121561198057600080fd5b833567ffffffffffffffff808216821461199957600080fd5b909350602085013590808211156119af57600080fd5b818601915086601f8301126119c357600080fd5b8135818111156119d257600080fd5b8760208260051b85010111156119e757600080fd5b6020830194508093505050509250925092565b600080600060408486031215611a0f57600080fd5b83359250602084013567ffffffffffffffff811115611a2d57600080fd5b611a39868287016116d9565b9497909650939450505050565b60008060408385031215611a5957600080fd5b82359150602083013567ffffffffffffffff811115611a7757600080fd5b611a838582860161187b565b9150509250929050565b60005b83811015611aa8578181015183820152602001611a90565b50506000910152565b6020815260008251806020840152611ad0816040850160208701611a8d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008451611b14818460208901611a8d565b91909101928352506020820152604001919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082611b6757611b67611b29565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082611baa57611baa611b29565b500490565b8082028115828204841417610a7457610a74611b6c565b80820180821115610a7457610a74611b6c565b60008085851115611be957600080fd5b83861115611bf657600080fd5b5050820193919092039150565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611c3457611c34611b6c565b5060010190565b600067ffffffffffffffff808316818103611c5857611c58611b6c565b6001019392505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611c9757600080fd5b83018035915067ffffffffffffffff821115611cb257600080fd5b6020019150600581901b360382131561171b57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112611d2d57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611d6c57600080fd5b83018035915067ffffffffffffffff821115611d8757600080fd5b60200191503681900382131561171b57600080fd5b8183823760009101908152919050565b60208082528181018390526000906040808401600586901b8501820187855b88811015611f13577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18b3603018112611e2c57600080fd5b8a01606073ffffffffffffffffffffffffffffffffffffffff611e4e83611775565b1685528782013588860152868201357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1833603018112611e8d57600080fd5b90910187810191903567ffffffffffffffff811115611eab57600080fd5b803603831315611eba57600080fd5b8188870152808287015260809150808383880137600086820183015295880195601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016909401909301925090850190600101611dcb565b509098975050505050505050565b7fff000000000000000000000000000000000000000000000000000000000000008660f81b16815260007fffffffffffffffff000000000000000000000000000000000000000000000000808760c01b166001840152856009840152808560c01b166029840152508251611f9c816031850160208701611a8d565b919091016031019695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b81810381811115610a7457610a74611b6c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26474726f6e58221220aa48ab1af5531e9c5252a8ebeff44fd941d1c74462a456664b2fc64c89218ba764736f6c63430008140033",
775
+ "bytecode": "0x60a06040523480156200001157600080fd5b50d380156200001f57600080fd5b50d280156200002d57600080fd5b5060405162002b8e38038062002b8e83398101604081905262000050916200050b565b8282868660005b8251811015620000a3576200008e8382815181106200007a576200007a620005bb565b60200260200101516200013760201b60201c565b806200009a81620005d1565b91505062000057565b50620000af81620001dd565b5050600160035560005b82518110156200010557620000f0838281518110620000dc57620000dc620005bb565b60200260200101516200027b60201b60201c565b80620000fc81620005d1565b915050620000b9565b50620001118162000317565b50506001600160401b0386166080526200012b8162000359565b505050505050620005f9565b6001600160a01b0381166200015f57604051632057875960e21b815260040160405180910390fd5b6200016c6000826200038f565b6200019a576040516327ec359360e21b81526001600160a01b03821660048201526024015b60405180910390fd5b604051600181526001600160a01b038216907ffc4acb499491cd850a8a21ab98c7f128850c0f0e5f1a875a62b7fa055c2ecf19906020015b60405180910390a250565b80600003620001ff5760405163831761d760e01b815260040160405180910390fd5b806200020a620003af565b10156200023f576200021b620003af565b60405162daa43760e71b815260048101919091526024810182905260440162000191565b60028190556040518181527f6e8a187d7944998085dbd1f16b84c51c903bb727536cdba86962439aded2cfd7906020015b60405180910390a150565b6001600160a01b038116620002a35760405163710c949760e01b815260040160405180910390fd5b620002b06004826200038f565b620002da5760405163c06cd70160e01b81526001600160a01b038216600482015260240162000191565b604051600181526001600160a01b038216907f278b09622564dd3991fe7744514513d64ea2c8ed2b2b9ec1150ad964fde80a9990602001620001d2565b6006805460ff19168215159081179091556040519081527faf318623f8b8327d379709bc2f6846f21be20c305509acd41dccf7e07a4853479060200162000270565b60078190556040518181527f36d9c0a688d366a03517cca4843dfff4e45db3869d5fd86fb9d15a1b45ce0e5a9060200162000270565b6000620003a6836001600160a01b038416620003c1565b90505b92915050565b6000620003bc8162000413565b905090565b60008181526001830160205260408120546200040a57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620003a9565b506000620003a9565b6000620003a9825490565b634e487b7160e01b600052604160045260246000fd5b80516000906001600160a81b03811681146200044f57600080fd5b6001600160a01b031692915050565b600082601f8301126200047057600080fd5b815160206001600160401b03808311156200048f576200048f6200041e565b8260051b604051601f19603f83011681018181108482111715620004b757620004b76200041e565b604052938452858101830193838101925087851115620004d657600080fd5b83870191505b848210156200050057620004f08262000434565b83529183019190830190620004dc565b979650505050505050565b60008060008060008060c087890312156200052557600080fd5b86516001600160401b0380821682146200053e57600080fd5b6020890151919750808211156200055457600080fd5b620005628a838b016200045e565b96506040890151955060608901519150808211156200058057600080fd5b506200058f89828a016200045e565b93505060808701518015158114620005a657600080fd5b8092505060a087015190509295509295509295565b634e487b7160e01b600052603260045260246000fd5b600060018201620005f257634e487b7160e01b600052601160045260246000fd5b5060010190565b6080516125726200061c600039600081816106900152610f7001526125726000f3fe60806040526004361061019a5760003560e01c8063960bfe04116100e1578063d63f97c91161008a578063e9ec3f5811610064578063e9ec3f5814610664578063ef09e78f146106b2578063f621ff60146106e1578063ffa1ad741461071057600080fd5b8063d63f97c9146105b6578063debfda30146105f0578063e1ed81761461062a57600080fd5b8063c7a823e0116100bb578063c7a823e014610513578063cf734e8a1461054d578063d1a626481461058757600080fd5b8063960bfe041461044b578063affed0e014610485578063b677cde4146104d957600080fd5b8063606c22e0116101435780637df73e271161011d5780637df73e27146103c25780638e6725bd146103fc57806394cf795e1461040f57600080fd5b8063606c22e0146103145780636419ebde146103585780637d94792a1461039257600080fd5b8063347024ff11610174578063347024ff1461025657806342cde4e81461029057806349dcfdd5146102d357600080fd5b80631e1bff3f146101a65780632b03f6ab146101e257806331cb61051461021c57600080fd5b366101a157005b600080fd5b3480156101b257600080fd5b50d380156101bf57600080fd5b50d280156101cc57600080fd5b506101e06101db366004611c28565b610780565b005b3480156101ee57600080fd5b50d380156101fb57600080fd5b50d2801561020857600080fd5b506101e0610217366004611ca4565b6107d5565b34801561022857600080fd5b50d3801561023557600080fd5b50d2801561024257600080fd5b506101e0610251366004611c28565b6109da565b34801561026257600080fd5b50d3801561026f57600080fd5b50d2801561027c57600080fd5b506101e061028b366004611cf7565b610a2b565b34801561029c57600080fd5b50d380156102a957600080fd5b50d280156102b657600080fd5b506102c060025481565b6040519081526020015b60405180910390f35b3480156102df57600080fd5b50d380156102ec57600080fd5b50d280156102f957600080fd5b50610302600181565b60405160ff90911681526020016102ca565b34801561032057600080fd5b50d3801561032d57600080fd5b50d2801561033a57600080fd5b506006546103489060ff1681565b60405190151581526020016102ca565b34801561036457600080fd5b50d3801561037157600080fd5b50d2801561037e57600080fd5b506101e061038d366004611d10565b610a70565b34801561039e57600080fd5b50d380156103ab57600080fd5b50d280156103b857600080fd5b506102c060075481565b3480156103ce57600080fd5b50d380156103db57600080fd5b50d280156103e857600080fd5b506103486103f7366004611d63565b610ca0565b6101e061040a366004611d96565b610cb2565b34801561041b57600080fd5b50d3801561042857600080fd5b50d2801561043557600080fd5b5061043e610f17565b6040516102ca9190611e14565b34801561045757600080fd5b50d3801561046457600080fd5b50d2801561047157600080fd5b506101e0610480366004611cf7565b610f28565b34801561049157600080fd5b50d3801561049e57600080fd5b50d280156104ab57600080fd5b506008546104c09067ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016102ca565b3480156104e557600080fd5b50d380156104f257600080fd5b50d280156104ff57600080fd5b506102c061050e366004611e6e565b610f6a565b34801561051f57600080fd5b50d3801561052c57600080fd5b50d2801561053957600080fd5b506101e0610548366004611efd565b611056565b34801561055957600080fd5b50d3801561056657600080fd5b50d2801561057357600080fd5b506101e0610582366004611f49565b611069565b34801561059357600080fd5b50d380156105a057600080fd5b50d280156105ad57600080fd5b506102c06110ab565b3480156105c257600080fd5b50d380156105cf57600080fd5b50d280156105dc57600080fd5b506101e06105eb366004611f64565b6110b7565b3480156105fc57600080fd5b50d3801561060957600080fd5b50d2801561061657600080fd5b50610348610625366004611d63565b61112f565b34801561063657600080fd5b50d3801561064357600080fd5b50d2801561065057600080fd5b5061034861065f366004611d63565b61113c565b34801561067057600080fd5b50d3801561067d57600080fd5b50d2801561068a57600080fd5b506104c07f000000000000000000000000000000000000000000000000000000000000000081565b3480156106be57600080fd5b50d380156106cb57600080fd5b50d280156106d857600080fd5b5061043e611164565b3480156106ed57600080fd5b50d380156106fa57600080fd5b50d2801561070757600080fd5b506102c0611170565b34801561071c57600080fd5b50d3801561072957600080fd5b50d2801561073657600080fd5b506107736040518060400160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6040516102ca9190611fcf565b3330146107b9576040517fff54bf4b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80156107cc576107c88261117c565b5050565b6107c882611272565b8242111561080f576040517f4f01675500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080518082018252600281527f190100000000000000000000000000000000000000000000000000000000000060208083019190915282518084018452600681527f4f6e6553696700000000000000000000000000000000000000000000000000009082015282518084018452600581527f302e302e310000000000000000000000000000000000000000000000000000009082015282517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527fbd7855a8d66a83be54ebc7fa5f2e3fb658ab6007afa89cd93dfca08ad1b97ec8818501527fae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc19916381188560608201526001608082015261dead60a0808301919091528451808303909101815260c0820185528051908301206007547f642ed5d2b77bc7ccb98e10da4c02d7cd8231228da4222a9f88a80c15545074ed60e08401526101008301526101208201899052610140808301899052855180840390910181526101608301909552845194909201939093206000936109b09392919061018001612020565b6040516020818303038152906040528051906020012090506109d3818484611056565b5050505050565b333014610a13576040517fff54bf4b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8015610a22576107c882611314565b6107c882611403565b333014610a64576040517fff54bf4b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a6d816114fc565b50565b80600003610aaa576040517f831761d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ab5604183612076565b15610aec576040517fcd2467c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610af96041846120b9565b905081811015610b35576040517fcd2467c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b82811015610c97573660008787610b516041866120cd565b906041610b5f8760016120e4565b610b6991906120cd565b92610b76939291906120f7565b915091506000610bbc8a84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061153892505050565b90508473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1611610c23576040517fd02ef0e500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c2c81610ca0565b610c7f576040517f53b1def100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b9350829150610c8f905081612121565b915050610b39565b50505050505050565b6000610cac8183611562565b92915050565b610cba611594565b610cc33361113c565b610cf9576040517f245b1c3100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d05848484846107d5565b610d0f84866110b7565b6008805460009167ffffffffffffffff9091169082610d2d83612159565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555067ffffffffffffffff16905060005b610d6c8780612180565b9050811015610ed2576000610d818880612180565b83818110610d9157610d916121e8565b9050602002810190610da39190612217565b610db1906020810190611d63565b73ffffffffffffffffffffffffffffffffffffffff16610dd18980612180565b84818110610de157610de16121e8565b9050602002810190610df39190612217565b60200135610e018a80612180565b85818110610e1157610e116121e8565b9050602002810190610e239190612217565b610e31906040810190612255565b604051610e3f9291906122ba565b60006040518083038185875af1925050503d8060008114610e7c576040519150601f19603f3d011682016040523d82523d6000602084013e610e81565b606091505b5050905080610ebf576040517f492fd70e00000000000000000000000000000000000000000000000000000000815260048101839052602401610c76565b5080610eca81612121565b915050610d62565b5060408051868152602081018390527fd9a0df418868c38712b1f6eab685bc77a2e49596edd77667ab34d5448f5f941c910160405180910390a1506109d36001600355565b6060610f2360006115d7565b905090565b333014610f61576040517fff54bf4b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a6d816115e4565b600060017f00000000000000000000000000000000000000000000000000000000000000003073ffffffffffffffffffffffffffffffffffffffff1660001b868686604051602001610fbd9291906122ca565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610ffc959493929160200161243f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012090830152016040516020818303038152906040528051906020012090509392505050565b611064838383600254610a70565b505050565b3330146110a2576040517fff54bf4b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a6d816116a7565b6000610f236000611706565b6008546000906110d59067ffffffffffffffff1661050e8480612180565b905060006110f06110e96020850185612180565b8685611710565b905080611129576040517f2a1704e200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b6000610cac600483611562565b60065460009060ff16158061115557506111558261112f565b80610cac5750610cac82610ca0565b6060610f2360046115d7565b6000610f236004611706565b73ffffffffffffffffffffffffffffffffffffffff81166111c9576040517f710c949700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111d4600482611728565b611222576040517fc06cd70100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610c76565b6040516001815273ffffffffffffffffffffffffffffffffffffffff8216907f278b09622564dd3991fe7744514513d64ea2c8ed2b2b9ec1150ad964fde80a99906020015b60405180910390a250565b61127d60048261174a565b6112cb576040517f59e7f66000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610c76565b6040516000815273ffffffffffffffffffffffffffffffffffffffff8216907f278b09622564dd3991fe7744514513d64ea2c8ed2b2b9ec1150ad964fde80a9990602001611267565b73ffffffffffffffffffffffffffffffffffffffff8116611361576040517f815e1d6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61136c600082611728565b6113ba576040517f9fb0d64c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610c76565b6040516001815273ffffffffffffffffffffffffffffffffffffffff8216907ffc4acb499491cd850a8a21ab98c7f128850c0f0e5f1a875a62b7fa055c2ecf1990602001611267565b61140e60008261174a565b61145c576040517f53b1def100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610c76565b6002546114676110ab565b10156114b3576114756110ab565b6002546040517f6d521b8000000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610c76565b6040516000815273ffffffffffffffffffffffffffffffffffffffff8216907ffc4acb499491cd850a8a21ab98c7f128850c0f0e5f1a875a62b7fa055c2ecf1990602001611267565b60078190556040518181527f36d9c0a688d366a03517cca4843dfff4e45db3869d5fd86fb9d15a1b45ce0e5a906020015b60405180910390a150565b600080600080611548868661176c565b92509250925061155882826117b9565b5090949350505050565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260018301602052604081205415155b9392505050565b6002600354036115d0576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600355565b6060600061158d836118bd565b8060000361161e576040517f831761d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806116276110ab565b1015611672576116356110ab565b6040517f6d521b80000000000000000000000000000000000000000000000000000000008152600481019190915260248101829052604401610c76565b60028190556040518181527f6e8a187d7944998085dbd1f16b84c51c903bb727536cdba86962439aded2cfd79060200161152d565b600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168215159081179091556040519081527faf318623f8b8327d379709bc2f6846f21be20c305509acd41dccf7e07a4853479060200161152d565b6000610cac825490565b60008261171e868685611919565b1495945050505050565b600061158d8373ffffffffffffffffffffffffffffffffffffffff8416611965565b600061158d8373ffffffffffffffffffffffffffffffffffffffff84166119b4565b600080600083516041036117a65760208401516040850151606086015160001a61179888828585611aa7565b9550955095505050506117b2565b50508151600091506002905b9250925092565b60008260038111156117cd576117cd6124cb565b036117d6575050565b60018260038111156117ea576117ea6124cb565b03611821576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002826003811115611835576118356124cb565b0361186f576040517ffce698f700000000000000000000000000000000000000000000000000000000815260048101829052602401610c76565b6003826003811115611883576118836124cb565b036107c8576040517fd78bce0c00000000000000000000000000000000000000000000000000000000815260048101829052602401610c76565b60608160000180548060200260200160405190810160405280929190818152602001828054801561190d57602002820191906000526020600020905b8154815260200190600101908083116118f9575b50505050509050919050565b600081815b8481101561195c576119488287878481811061193c5761193c6121e8565b90506020020135611ba1565b91508061195481612121565b91505061191e565b50949350505050565b60008181526001830160205260408120546119ac57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610cac565b506000610cac565b60008181526001830160205260408120548015611a9d5760006119d86001836124fa565b85549091506000906119ec906001906124fa565b9050808214611a51576000866000018281548110611a0c57611a0c6121e8565b9060005260206000200154905080876000018481548110611a2f57611a2f6121e8565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611a6257611a6261250d565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610cac565b6000915050610cac565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115611ae25750600091506003905082611b97565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611b36573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116611b8d57506000925060019150829050611b97565b9250600091508190505b9450945094915050565b6000818310611bbd57600082815260208490526040902061158d565b600083815260208390526040902061158d565b6000813574ffffffffffffffffffffffffffffffffffffffffff81168114611bf757600080fd5b73ffffffffffffffffffffffffffffffffffffffff1692915050565b80358015158114611c2357600080fd5b919050565b60008060408385031215611c3b57600080fd5b611c4483611bd0565b9150611c5260208401611c13565b90509250929050565b60008083601f840112611c6d57600080fd5b50813567ffffffffffffffff811115611c8557600080fd5b602083019150836020828501011115611c9d57600080fd5b9250929050565b60008060008060608587031215611cba57600080fd5b8435935060208501359250604085013567ffffffffffffffff811115611cdf57600080fd5b611ceb87828801611c5b565b95989497509550505050565b600060208284031215611d0957600080fd5b5035919050565b60008060008060608587031215611d2657600080fd5b84359350602085013567ffffffffffffffff811115611d4457600080fd5b611d5087828801611c5b565b9598909750949560400135949350505050565b600060208284031215611d7557600080fd5b61158d82611bd0565b600060408284031215611d9057600080fd5b50919050565b600080600080600060808688031215611dae57600080fd5b853567ffffffffffffffff80821115611dc657600080fd5b611dd289838a01611d7e565b965060208801359550604088013594506060880135915080821115611df657600080fd5b50611e0388828901611c5b565b969995985093965092949392505050565b6020808252825182820181905260009190848201906040850190845b81811015611e6257835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101611e30565b50909695505050505050565b600080600060408486031215611e8357600080fd5b833567ffffffffffffffff8082168214611e9c57600080fd5b90935060208501359080821115611eb257600080fd5b818601915086601f830112611ec657600080fd5b813581811115611ed557600080fd5b8760208260051b8501011115611eea57600080fd5b6020830194508093505050509250925092565b600080600060408486031215611f1257600080fd5b83359250602084013567ffffffffffffffff811115611f3057600080fd5b611f3c86828701611c5b565b9497909650939450505050565b600060208284031215611f5b57600080fd5b61158d82611c13565b60008060408385031215611f7757600080fd5b82359150602083013567ffffffffffffffff811115611f9557600080fd5b611fa185828601611d7e565b9150509250929050565b60005b83811015611fc6578181015183820152602001611fae565b50506000910152565b6020815260008251806020840152611fee816040850160208701611fab565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008451612032818460208901611fab565b91909101928352506020820152604001919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261208557612085612047565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000826120c8576120c8612047565b500490565b8082028115828204841417610cac57610cac61208a565b80820180821115610cac57610cac61208a565b6000808585111561210757600080fd5b8386111561211457600080fd5b5050820193919092039150565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036121525761215261208a565b5060010190565b600067ffffffffffffffff8083168181036121765761217661208a565b6001019392505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126121b557600080fd5b83018035915067ffffffffffffffff8211156121d057600080fd5b6020019150600581901b3603821315611c9d57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301811261224b57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261228a57600080fd5b83018035915067ffffffffffffffff8211156122a557600080fd5b602001915036819003821315611c9d57600080fd5b8183823760009101908152919050565b60208082528181018390526000906040808401600586901b8501820187855b88811015612431577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18b360301811261234a57600080fd5b8a01606073ffffffffffffffffffffffffffffffffffffffff61236c83611bd0565b1685528782013588860152868201357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18336030181126123ab57600080fd5b90910187810191903567ffffffffffffffff8111156123c957600080fd5b8036038313156123d857600080fd5b8188870152808287015260809150808383880137600086820183015295880195601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169094019093019250908501906001016122e9565b509098975050505050505050565b7fff000000000000000000000000000000000000000000000000000000000000008660f81b16815260007fffffffffffffffff000000000000000000000000000000000000000000000000808760c01b166001840152856009840152808560c01b1660298401525082516124ba816031850160208701611fab565b919091016031019695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b81810381811115610cac57610cac61208a565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26474726f6e5822122029e4adaaf82d5a0cadc931e505e3ca550b0693041a840f1911134aac5207bfad64736f6c63430008140033",
776
+ "deployedBytecode": "0x60806040526004361061019a5760003560e01c8063960bfe04116100e1578063d63f97c91161008a578063e9ec3f5811610064578063e9ec3f5814610664578063ef09e78f146106b2578063f621ff60146106e1578063ffa1ad741461071057600080fd5b8063d63f97c9146105b6578063debfda30146105f0578063e1ed81761461062a57600080fd5b8063c7a823e0116100bb578063c7a823e014610513578063cf734e8a1461054d578063d1a626481461058757600080fd5b8063960bfe041461044b578063affed0e014610485578063b677cde4146104d957600080fd5b8063606c22e0116101435780637df73e271161011d5780637df73e27146103c25780638e6725bd146103fc57806394cf795e1461040f57600080fd5b8063606c22e0146103145780636419ebde146103585780637d94792a1461039257600080fd5b8063347024ff11610174578063347024ff1461025657806342cde4e81461029057806349dcfdd5146102d357600080fd5b80631e1bff3f146101a65780632b03f6ab146101e257806331cb61051461021c57600080fd5b366101a157005b600080fd5b3480156101b257600080fd5b50d380156101bf57600080fd5b50d280156101cc57600080fd5b506101e06101db366004611c28565b610780565b005b3480156101ee57600080fd5b50d380156101fb57600080fd5b50d2801561020857600080fd5b506101e0610217366004611ca4565b6107d5565b34801561022857600080fd5b50d3801561023557600080fd5b50d2801561024257600080fd5b506101e0610251366004611c28565b6109da565b34801561026257600080fd5b50d3801561026f57600080fd5b50d2801561027c57600080fd5b506101e061028b366004611cf7565b610a2b565b34801561029c57600080fd5b50d380156102a957600080fd5b50d280156102b657600080fd5b506102c060025481565b6040519081526020015b60405180910390f35b3480156102df57600080fd5b50d380156102ec57600080fd5b50d280156102f957600080fd5b50610302600181565b60405160ff90911681526020016102ca565b34801561032057600080fd5b50d3801561032d57600080fd5b50d2801561033a57600080fd5b506006546103489060ff1681565b60405190151581526020016102ca565b34801561036457600080fd5b50d3801561037157600080fd5b50d2801561037e57600080fd5b506101e061038d366004611d10565b610a70565b34801561039e57600080fd5b50d380156103ab57600080fd5b50d280156103b857600080fd5b506102c060075481565b3480156103ce57600080fd5b50d380156103db57600080fd5b50d280156103e857600080fd5b506103486103f7366004611d63565b610ca0565b6101e061040a366004611d96565b610cb2565b34801561041b57600080fd5b50d3801561042857600080fd5b50d2801561043557600080fd5b5061043e610f17565b6040516102ca9190611e14565b34801561045757600080fd5b50d3801561046457600080fd5b50d2801561047157600080fd5b506101e0610480366004611cf7565b610f28565b34801561049157600080fd5b50d3801561049e57600080fd5b50d280156104ab57600080fd5b506008546104c09067ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016102ca565b3480156104e557600080fd5b50d380156104f257600080fd5b50d280156104ff57600080fd5b506102c061050e366004611e6e565b610f6a565b34801561051f57600080fd5b50d3801561052c57600080fd5b50d2801561053957600080fd5b506101e0610548366004611efd565b611056565b34801561055957600080fd5b50d3801561056657600080fd5b50d2801561057357600080fd5b506101e0610582366004611f49565b611069565b34801561059357600080fd5b50d380156105a057600080fd5b50d280156105ad57600080fd5b506102c06110ab565b3480156105c257600080fd5b50d380156105cf57600080fd5b50d280156105dc57600080fd5b506101e06105eb366004611f64565b6110b7565b3480156105fc57600080fd5b50d3801561060957600080fd5b50d2801561061657600080fd5b50610348610625366004611d63565b61112f565b34801561063657600080fd5b50d3801561064357600080fd5b50d2801561065057600080fd5b5061034861065f366004611d63565b61113c565b34801561067057600080fd5b50d3801561067d57600080fd5b50d2801561068a57600080fd5b506104c07f000000000000000000000000000000000000000000000000000000000000000081565b3480156106be57600080fd5b50d380156106cb57600080fd5b50d280156106d857600080fd5b5061043e611164565b3480156106ed57600080fd5b50d380156106fa57600080fd5b50d2801561070757600080fd5b506102c0611170565b34801561071c57600080fd5b50d3801561072957600080fd5b50d2801561073657600080fd5b506107736040518060400160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6040516102ca9190611fcf565b3330146107b9576040517fff54bf4b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80156107cc576107c88261117c565b5050565b6107c882611272565b8242111561080f576040517f4f01675500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080518082018252600281527f190100000000000000000000000000000000000000000000000000000000000060208083019190915282518084018452600681527f4f6e6553696700000000000000000000000000000000000000000000000000009082015282518084018452600581527f302e302e310000000000000000000000000000000000000000000000000000009082015282517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527fbd7855a8d66a83be54ebc7fa5f2e3fb658ab6007afa89cd93dfca08ad1b97ec8818501527fae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc19916381188560608201526001608082015261dead60a0808301919091528451808303909101815260c0820185528051908301206007547f642ed5d2b77bc7ccb98e10da4c02d7cd8231228da4222a9f88a80c15545074ed60e08401526101008301526101208201899052610140808301899052855180840390910181526101608301909552845194909201939093206000936109b09392919061018001612020565b6040516020818303038152906040528051906020012090506109d3818484611056565b5050505050565b333014610a13576040517fff54bf4b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8015610a22576107c882611314565b6107c882611403565b333014610a64576040517fff54bf4b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a6d816114fc565b50565b80600003610aaa576040517f831761d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ab5604183612076565b15610aec576040517fcd2467c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610af96041846120b9565b905081811015610b35576040517fcd2467c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b82811015610c97573660008787610b516041866120cd565b906041610b5f8760016120e4565b610b6991906120cd565b92610b76939291906120f7565b915091506000610bbc8a84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061153892505050565b90508473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1611610c23576040517fd02ef0e500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c2c81610ca0565b610c7f576040517f53b1def100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b9350829150610c8f905081612121565b915050610b39565b50505050505050565b6000610cac8183611562565b92915050565b610cba611594565b610cc33361113c565b610cf9576040517f245b1c3100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d05848484846107d5565b610d0f84866110b7565b6008805460009167ffffffffffffffff9091169082610d2d83612159565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555067ffffffffffffffff16905060005b610d6c8780612180565b9050811015610ed2576000610d818880612180565b83818110610d9157610d916121e8565b9050602002810190610da39190612217565b610db1906020810190611d63565b73ffffffffffffffffffffffffffffffffffffffff16610dd18980612180565b84818110610de157610de16121e8565b9050602002810190610df39190612217565b60200135610e018a80612180565b85818110610e1157610e116121e8565b9050602002810190610e239190612217565b610e31906040810190612255565b604051610e3f9291906122ba565b60006040518083038185875af1925050503d8060008114610e7c576040519150601f19603f3d011682016040523d82523d6000602084013e610e81565b606091505b5050905080610ebf576040517f492fd70e00000000000000000000000000000000000000000000000000000000815260048101839052602401610c76565b5080610eca81612121565b915050610d62565b5060408051868152602081018390527fd9a0df418868c38712b1f6eab685bc77a2e49596edd77667ab34d5448f5f941c910160405180910390a1506109d36001600355565b6060610f2360006115d7565b905090565b333014610f61576040517fff54bf4b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a6d816115e4565b600060017f00000000000000000000000000000000000000000000000000000000000000003073ffffffffffffffffffffffffffffffffffffffff1660001b868686604051602001610fbd9291906122ca565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610ffc959493929160200161243f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012090830152016040516020818303038152906040528051906020012090509392505050565b611064838383600254610a70565b505050565b3330146110a2576040517fff54bf4b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a6d816116a7565b6000610f236000611706565b6008546000906110d59067ffffffffffffffff1661050e8480612180565b905060006110f06110e96020850185612180565b8685611710565b905080611129576040517f2a1704e200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b6000610cac600483611562565b60065460009060ff16158061115557506111558261112f565b80610cac5750610cac82610ca0565b6060610f2360046115d7565b6000610f236004611706565b73ffffffffffffffffffffffffffffffffffffffff81166111c9576040517f710c949700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111d4600482611728565b611222576040517fc06cd70100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610c76565b6040516001815273ffffffffffffffffffffffffffffffffffffffff8216907f278b09622564dd3991fe7744514513d64ea2c8ed2b2b9ec1150ad964fde80a99906020015b60405180910390a250565b61127d60048261174a565b6112cb576040517f59e7f66000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610c76565b6040516000815273ffffffffffffffffffffffffffffffffffffffff8216907f278b09622564dd3991fe7744514513d64ea2c8ed2b2b9ec1150ad964fde80a9990602001611267565b73ffffffffffffffffffffffffffffffffffffffff8116611361576040517f815e1d6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61136c600082611728565b6113ba576040517f9fb0d64c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610c76565b6040516001815273ffffffffffffffffffffffffffffffffffffffff8216907ffc4acb499491cd850a8a21ab98c7f128850c0f0e5f1a875a62b7fa055c2ecf1990602001611267565b61140e60008261174a565b61145c576040517f53b1def100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610c76565b6002546114676110ab565b10156114b3576114756110ab565b6002546040517f6d521b8000000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610c76565b6040516000815273ffffffffffffffffffffffffffffffffffffffff8216907ffc4acb499491cd850a8a21ab98c7f128850c0f0e5f1a875a62b7fa055c2ecf1990602001611267565b60078190556040518181527f36d9c0a688d366a03517cca4843dfff4e45db3869d5fd86fb9d15a1b45ce0e5a906020015b60405180910390a150565b600080600080611548868661176c565b92509250925061155882826117b9565b5090949350505050565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260018301602052604081205415155b9392505050565b6002600354036115d0576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600355565b6060600061158d836118bd565b8060000361161e576040517f831761d700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806116276110ab565b1015611672576116356110ab565b6040517f6d521b80000000000000000000000000000000000000000000000000000000008152600481019190915260248101829052604401610c76565b60028190556040518181527f6e8a187d7944998085dbd1f16b84c51c903bb727536cdba86962439aded2cfd79060200161152d565b600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168215159081179091556040519081527faf318623f8b8327d379709bc2f6846f21be20c305509acd41dccf7e07a4853479060200161152d565b6000610cac825490565b60008261171e868685611919565b1495945050505050565b600061158d8373ffffffffffffffffffffffffffffffffffffffff8416611965565b600061158d8373ffffffffffffffffffffffffffffffffffffffff84166119b4565b600080600083516041036117a65760208401516040850151606086015160001a61179888828585611aa7565b9550955095505050506117b2565b50508151600091506002905b9250925092565b60008260038111156117cd576117cd6124cb565b036117d6575050565b60018260038111156117ea576117ea6124cb565b03611821576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002826003811115611835576118356124cb565b0361186f576040517ffce698f700000000000000000000000000000000000000000000000000000000815260048101829052602401610c76565b6003826003811115611883576118836124cb565b036107c8576040517fd78bce0c00000000000000000000000000000000000000000000000000000000815260048101829052602401610c76565b60608160000180548060200260200160405190810160405280929190818152602001828054801561190d57602002820191906000526020600020905b8154815260200190600101908083116118f9575b50505050509050919050565b600081815b8481101561195c576119488287878481811061193c5761193c6121e8565b90506020020135611ba1565b91508061195481612121565b91505061191e565b50949350505050565b60008181526001830160205260408120546119ac57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610cac565b506000610cac565b60008181526001830160205260408120548015611a9d5760006119d86001836124fa565b85549091506000906119ec906001906124fa565b9050808214611a51576000866000018281548110611a0c57611a0c6121e8565b9060005260206000200154905080876000018481548110611a2f57611a2f6121e8565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611a6257611a6261250d565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610cac565b6000915050610cac565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115611ae25750600091506003905082611b97565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611b36573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116611b8d57506000925060019150829050611b97565b9250600091508190505b9450945094915050565b6000818310611bbd57600082815260208490526040902061158d565b600083815260208390526040902061158d565b6000813574ffffffffffffffffffffffffffffffffffffffffff81168114611bf757600080fd5b73ffffffffffffffffffffffffffffffffffffffff1692915050565b80358015158114611c2357600080fd5b919050565b60008060408385031215611c3b57600080fd5b611c4483611bd0565b9150611c5260208401611c13565b90509250929050565b60008083601f840112611c6d57600080fd5b50813567ffffffffffffffff811115611c8557600080fd5b602083019150836020828501011115611c9d57600080fd5b9250929050565b60008060008060608587031215611cba57600080fd5b8435935060208501359250604085013567ffffffffffffffff811115611cdf57600080fd5b611ceb87828801611c5b565b95989497509550505050565b600060208284031215611d0957600080fd5b5035919050565b60008060008060608587031215611d2657600080fd5b84359350602085013567ffffffffffffffff811115611d4457600080fd5b611d5087828801611c5b565b9598909750949560400135949350505050565b600060208284031215611d7557600080fd5b61158d82611bd0565b600060408284031215611d9057600080fd5b50919050565b600080600080600060808688031215611dae57600080fd5b853567ffffffffffffffff80821115611dc657600080fd5b611dd289838a01611d7e565b965060208801359550604088013594506060880135915080821115611df657600080fd5b50611e0388828901611c5b565b969995985093965092949392505050565b6020808252825182820181905260009190848201906040850190845b81811015611e6257835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101611e30565b50909695505050505050565b600080600060408486031215611e8357600080fd5b833567ffffffffffffffff8082168214611e9c57600080fd5b90935060208501359080821115611eb257600080fd5b818601915086601f830112611ec657600080fd5b813581811115611ed557600080fd5b8760208260051b8501011115611eea57600080fd5b6020830194508093505050509250925092565b600080600060408486031215611f1257600080fd5b83359250602084013567ffffffffffffffff811115611f3057600080fd5b611f3c86828701611c5b565b9497909650939450505050565b600060208284031215611f5b57600080fd5b61158d82611c13565b60008060408385031215611f7757600080fd5b82359150602083013567ffffffffffffffff811115611f9557600080fd5b611fa185828601611d7e565b9150509250929050565b60005b83811015611fc6578181015183820152602001611fae565b50506000910152565b6020815260008251806020840152611fee816040850160208701611fab565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008451612032818460208901611fab565b91909101928352506020820152604001919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261208557612085612047565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000826120c8576120c8612047565b500490565b8082028115828204841417610cac57610cac61208a565b80820180821115610cac57610cac61208a565b6000808585111561210757600080fd5b8386111561211457600080fd5b5050820193919092039150565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036121525761215261208a565b5060010190565b600067ffffffffffffffff8083168181036121765761217661208a565b6001019392505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126121b557600080fd5b83018035915067ffffffffffffffff8211156121d057600080fd5b6020019150600581901b3603821315611c9d57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301811261224b57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261228a57600080fd5b83018035915067ffffffffffffffff8211156122a557600080fd5b602001915036819003821315611c9d57600080fd5b8183823760009101908152919050565b60208082528181018390526000906040808401600586901b8501820187855b88811015612431577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18b360301811261234a57600080fd5b8a01606073ffffffffffffffffffffffffffffffffffffffff61236c83611bd0565b1685528782013588860152868201357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18336030181126123ab57600080fd5b90910187810191903567ffffffffffffffff8111156123c957600080fd5b8036038313156123d857600080fd5b8188870152808287015260809150808383880137600086820183015295880195601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169094019093019250908501906001016122e9565b509098975050505050505050565b7fff000000000000000000000000000000000000000000000000000000000000008660f81b16815260007fffffffffffffffff000000000000000000000000000000000000000000000000808760c01b166001840152856009840152808560c01b1660298401525082516124ba816031850160208701611fab565b919091016031019695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b81810381811115610cac57610cac61208a565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26474726f6e5822122029e4adaaf82d5a0cadc931e505e3ca550b0693041a840f1911134aac5207bfad64736f6c63430008140033",
595
777
  "linkReferences": {},
596
778
  "deployedLinkReferences": {}
597
779
  }