@stargatefinance/stg-evm-sdk-v2 1.2.7 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (159) hide show
  1. package/artifacts/src/StargateOFT.sol/StargateOFT.json +2 -2
  2. package/artifacts/src/StargateOFTAlt.sol/StargateOFTAlt.json +1584 -0
  3. package/artifacts/src/StargatePool.sol/StargatePool.json +2 -2
  4. package/artifacts/src/StargatePoolMigratable.sol/StargatePoolMigratable.json +2 -2
  5. package/artifacts/src/StargatePoolNative.sol/StargatePoolNative.json +2 -2
  6. package/artifacts/src/eurc/StargateOFTEURC.sol/StargateOFTEURC.json +2 -2
  7. package/artifacts/src/eurc/StargatePoolEURC.sol/StargatePoolEURC.json +2 -2
  8. package/artifacts/src/interfaces/tip20/ITIP20.sol/ITIP20.json +1065 -0
  9. package/artifacts/src/interfaces/tip20/ITIP20RolesAuth.sol/ITIP20RolesAuth.json +139 -0
  10. package/artifacts/src/messaging/CreditMessagingAlt.sol/CreditMessagingAlt.json +1142 -0
  11. package/artifacts/src/messaging/TokenMessaging.sol/TokenMessaging.json +2 -2
  12. package/artifacts/src/messaging/TokenMessagingAlt.sol/TokenMessagingAlt.json +1907 -0
  13. package/artifacts/src/mocks/tip20/TIP20.sol/TIP20.json +1253 -0
  14. package/artifacts/src/mocks/tip20/TIP403Registry.sol/TIP403Registry.json +335 -0
  15. package/artifacts/src/mocks/tip20/abstracts/TIP20RolesAuth.sol/TIP20RolesAuth.json +163 -0
  16. package/artifacts/src/mocks/tip20/interfaces/ITIP403Registry.sol/ITIP403Registry.json +335 -0
  17. package/artifacts/src/peripheral/Treasurer.sol/Treasurer.json +2 -2
  18. package/artifacts/src/tip20/StargateOFTTIP20.sol/StargateOFTTIP20.json +1595 -0
  19. package/artifacts/src/usdc/StargateOFTUSDC.sol/StargateOFTUSDC.json +2 -2
  20. package/artifacts/src/usdc/StargatePoolUSDC.sol/StargatePoolUSDC.json +2 -2
  21. package/deployments/horizen-mainnet/CreditMessaging.json +1501 -0
  22. package/deployments/horizen-mainnet/FeeLibV1USDC.json +611 -0
  23. package/deployments/horizen-mainnet/OFTWrapper.json +1506 -0
  24. package/deployments/horizen-mainnet/StargateOFTUSDC.json +1978 -0
  25. package/deployments/horizen-mainnet/TokenMessaging.json +2475 -0
  26. package/deployments/horizen-mainnet/Treasurer.json +450 -0
  27. package/deployments/moderato-testnet/CreditMessaging.json +1592 -0
  28. package/deployments/moderato-testnet/FeeLibV1EURC.json +625 -0
  29. package/deployments/moderato-testnet/FeeLibV1USDC.json +625 -0
  30. package/deployments/moderato-testnet/OFTWrapper.json +1520 -0
  31. package/deployments/moderato-testnet/StargateOFTEURC.json +2023 -0
  32. package/deployments/moderato-testnet/StargateOFTUSDC.json +2023 -0
  33. package/deployments/moderato-testnet/TokenMessaging.json +2484 -0
  34. package/deployments/moderato-testnet/Treasurer.json +464 -0
  35. package/deployments/tempo-mainnet/CreditMessaging.json +1592 -0
  36. package/deployments/tempo-mainnet/FeeLibV1EURC.json +625 -0
  37. package/deployments/tempo-mainnet/FeeLibV1USDC.json +625 -0
  38. package/deployments/tempo-mainnet/OFTWrapper.json +1520 -0
  39. package/deployments/tempo-mainnet/StargateOFTEURC.json +2036 -0
  40. package/deployments/tempo-mainnet/StargateOFTUSDC.json +2036 -0
  41. package/deployments/tempo-mainnet/TokenMessaging.json +2481 -0
  42. package/deployments/tempo-mainnet/Treasurer.json +464 -0
  43. package/dist/deployed/CreditMessaging.cjs +10 -0
  44. package/dist/deployed/CreditMessaging.cjs.map +1 -1
  45. package/dist/deployed/CreditMessaging.mjs +10 -0
  46. package/dist/deployed/CreditMessaging.mjs.map +1 -1
  47. package/dist/deployed/FeeLibV1EURC.cjs +9 -3
  48. package/dist/deployed/FeeLibV1EURC.cjs.map +1 -1
  49. package/dist/deployed/FeeLibV1EURC.mjs +9 -3
  50. package/dist/deployed/FeeLibV1EURC.mjs.map +1 -1
  51. package/dist/deployed/FeeLibV1USDC.cjs +9 -0
  52. package/dist/deployed/FeeLibV1USDC.cjs.map +1 -1
  53. package/dist/deployed/FeeLibV1USDC.mjs +9 -0
  54. package/dist/deployed/FeeLibV1USDC.mjs.map +1 -1
  55. package/dist/deployed/OFTWrapper.cjs +9 -0
  56. package/dist/deployed/OFTWrapper.cjs.map +1 -1
  57. package/dist/deployed/OFTWrapper.mjs +9 -0
  58. package/dist/deployed/OFTWrapper.mjs.map +1 -1
  59. package/dist/deployed/StargateOFTEURC.cjs +11 -3
  60. package/dist/deployed/StargateOFTEURC.cjs.map +1 -1
  61. package/dist/deployed/StargateOFTEURC.mjs +11 -3
  62. package/dist/deployed/StargateOFTEURC.mjs.map +1 -1
  63. package/dist/deployed/StargateOFTUSDC-gNoY8tx0.d.mts +4995 -0
  64. package/dist/deployed/StargateOFTUSDC-gNoY8tx0.d.ts +4995 -0
  65. package/dist/deployed/StargateOFTUSDC.cjs +11 -0
  66. package/dist/deployed/StargateOFTUSDC.cjs.map +1 -1
  67. package/dist/deployed/StargateOFTUSDC.d.mts +1 -0
  68. package/dist/deployed/StargateOFTUSDC.d.ts +1 -0
  69. package/dist/deployed/StargateOFTUSDC.mjs +11 -0
  70. package/dist/deployed/StargateOFTUSDC.mjs.map +1 -1
  71. package/dist/deployed/StargateOFTUSDT-n5r6jpXt.d.mts +2492 -0
  72. package/dist/deployed/StargateOFTUSDT-n5r6jpXt.d.ts +2492 -0
  73. package/dist/deployed/StargateOFTUSDT.d.mts +1 -0
  74. package/dist/deployed/StargateOFTUSDT.d.ts +1 -0
  75. package/dist/deployed/StargatePoolETH-lOsiDbJC.d.mts +1530 -0
  76. package/dist/deployed/StargatePoolETH-lOsiDbJC.d.ts +1530 -0
  77. package/dist/deployed/StargatePoolETH.d.mts +1 -0
  78. package/dist/deployed/StargatePoolETH.d.ts +1 -0
  79. package/dist/deployed/StargatePoolEURC-D7GGCfr7.d.mts +1582 -0
  80. package/dist/deployed/StargatePoolEURC-D7GGCfr7.d.ts +1582 -0
  81. package/dist/deployed/StargatePoolEURC.d.mts +1 -0
  82. package/dist/deployed/StargatePoolEURC.d.ts +1 -0
  83. package/dist/deployed/StargatePoolMETIS-CQrZSdA7.d.mts +1519 -0
  84. package/dist/deployed/StargatePoolMETIS-CQrZSdA7.d.ts +1519 -0
  85. package/dist/deployed/StargatePoolMETIS.d.mts +1 -0
  86. package/dist/deployed/StargatePoolMETIS.d.ts +1 -0
  87. package/dist/deployed/StargatePoolNative-BKokoo5S.d.mts +1568 -0
  88. package/dist/deployed/StargatePoolNative-BKokoo5S.d.ts +1568 -0
  89. package/dist/deployed/StargatePoolNative.d.mts +1 -0
  90. package/dist/deployed/StargatePoolNative.d.ts +1 -0
  91. package/dist/deployed/StargatePoolUSDC-gP7LrAIv.d.mts +1632 -0
  92. package/dist/deployed/StargatePoolUSDC-gP7LrAIv.d.ts +1632 -0
  93. package/dist/deployed/StargatePoolUSDC.d.mts +1 -0
  94. package/dist/deployed/StargatePoolUSDC.d.ts +1 -0
  95. package/dist/deployed/StargatePoolUSDT-DkOqtwrh.d.mts +1627 -0
  96. package/dist/deployed/StargatePoolUSDT-DkOqtwrh.d.ts +1627 -0
  97. package/dist/deployed/StargatePoolUSDT.d.mts +1 -0
  98. package/dist/deployed/StargatePoolUSDT.d.ts +1 -0
  99. package/dist/deployed/StargatePoolmETH-C_R3a4-e.d.mts +1519 -0
  100. package/dist/deployed/StargatePoolmETH-C_R3a4-e.d.ts +1519 -0
  101. package/dist/deployed/StargatePoolmETH.d.mts +1 -0
  102. package/dist/deployed/StargatePoolmETH.d.ts +1 -0
  103. package/dist/deployed/StargateStaking-BL9axih_.d.mts +459 -0
  104. package/dist/deployed/StargateStaking-BL9axih_.d.ts +459 -0
  105. package/dist/deployed/StargateStaking.d.mts +1 -0
  106. package/dist/deployed/StargateStaking.d.ts +1 -0
  107. package/dist/deployed/TokenMessaging-BfnD6v53.d.mts +3174 -0
  108. package/dist/deployed/TokenMessaging-BfnD6v53.d.ts +3174 -0
  109. package/dist/deployed/TokenMessaging.cjs +10 -0
  110. package/dist/deployed/TokenMessaging.cjs.map +1 -1
  111. package/dist/deployed/TokenMessaging.d.mts +1 -0
  112. package/dist/deployed/TokenMessaging.d.ts +1 -0
  113. package/dist/deployed/TokenMessaging.mjs +10 -0
  114. package/dist/deployed/TokenMessaging.mjs.map +1 -1
  115. package/dist/deployed/Treasurer-DlA2Gv8f.d.mts +450 -0
  116. package/dist/deployed/Treasurer-DlA2Gv8f.d.ts +450 -0
  117. package/dist/deployed/Treasurer.cjs +9 -0
  118. package/dist/deployed/Treasurer.cjs.map +1 -1
  119. package/dist/deployed/Treasurer.d.mts +1 -0
  120. package/dist/deployed/Treasurer.d.ts +1 -0
  121. package/dist/deployed/Treasurer.mjs +9 -0
  122. package/dist/deployed/Treasurer.mjs.map +1 -1
  123. package/dist/deployed/USDCImpl-DN89Rpdz.d.mts +1124 -0
  124. package/dist/deployed/USDCImpl-DN89Rpdz.d.ts +1124 -0
  125. package/dist/deployed/USDCImpl.d.mts +1 -0
  126. package/dist/deployed/USDCImpl.d.ts +1 -0
  127. package/dist/deployed/USDCProxy-BsrYumZv.d.mts +141 -0
  128. package/dist/deployed/USDCProxy-BsrYumZv.d.ts +141 -0
  129. package/dist/deployed/USDCProxy.d.mts +1 -0
  130. package/dist/deployed/USDCProxy.d.ts +1 -0
  131. package/dist/deployed/USDCSignatureLib-W2-GjRxG.d.mts +73 -0
  132. package/dist/deployed/USDCSignatureLib-W2-GjRxG.d.ts +73 -0
  133. package/dist/deployed/USDCSignatureLib.d.mts +1 -0
  134. package/dist/deployed/USDCSignatureLib.d.ts +1 -0
  135. package/dist/deployed/USDT-DVAQjDdu.d.mts +690 -0
  136. package/dist/deployed/USDT-DVAQjDdu.d.ts +690 -0
  137. package/dist/deployed/USDT.d.mts +1 -0
  138. package/dist/deployed/USDT.d.ts +1 -0
  139. package/dist/deployed/contracts-CwDH7mzf.d.mts +68 -0
  140. package/dist/deployed/contracts-Yg5JhOts.d.ts +68 -0
  141. package/dist/deployed/contracts.cjs +119 -47
  142. package/dist/deployed/contracts.cjs.map +1 -1
  143. package/dist/deployed/contracts.d.mts +31 -0
  144. package/dist/deployed/contracts.d.ts +31 -0
  145. package/dist/deployed/contracts.mjs +119 -47
  146. package/dist/deployed/contracts.mjs.map +1 -1
  147. package/dist/deployed/index.cjs +119 -47
  148. package/dist/deployed/index.cjs.map +1 -1
  149. package/dist/deployed/index.d.mts +36 -0
  150. package/dist/deployed/index.d.ts +36 -0
  151. package/dist/deployed/index.mjs +119 -47
  152. package/dist/deployed/index.mjs.map +1 -1
  153. package/dist/index.cjs +43 -2
  154. package/dist/index.cjs.map +1 -1
  155. package/dist/index.d.mts +49 -2
  156. package/dist/index.d.ts +49 -2
  157. package/dist/index.mjs +43 -2
  158. package/dist/index.mjs.map +1 -1
  159. package/package.json +2 -2
@@ -0,0 +1,1253 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "TIP20",
4
+ "sourceName": "src/mocks/tip20/TIP20.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "string",
10
+ "name": "_name",
11
+ "type": "string"
12
+ },
13
+ {
14
+ "internalType": "string",
15
+ "name": "_symbol",
16
+ "type": "string"
17
+ },
18
+ {
19
+ "internalType": "string",
20
+ "name": "_currency",
21
+ "type": "string"
22
+ },
23
+ {
24
+ "internalType": "contract ITIP20",
25
+ "name": "_quoteToken",
26
+ "type": "address"
27
+ },
28
+ {
29
+ "internalType": "address",
30
+ "name": "admin",
31
+ "type": "address"
32
+ },
33
+ {
34
+ "internalType": "address",
35
+ "name": "sender",
36
+ "type": "address"
37
+ }
38
+ ],
39
+ "stateMutability": "nonpayable",
40
+ "type": "constructor"
41
+ },
42
+ {
43
+ "inputs": [],
44
+ "name": "ContractPaused",
45
+ "type": "error"
46
+ },
47
+ {
48
+ "inputs": [],
49
+ "name": "InsufficientAllowance",
50
+ "type": "error"
51
+ },
52
+ {
53
+ "inputs": [
54
+ {
55
+ "internalType": "uint256",
56
+ "name": "currentBalance",
57
+ "type": "uint256"
58
+ },
59
+ {
60
+ "internalType": "uint256",
61
+ "name": "expectedBalance",
62
+ "type": "uint256"
63
+ },
64
+ {
65
+ "internalType": "address",
66
+ "name": "",
67
+ "type": "address"
68
+ }
69
+ ],
70
+ "name": "InsufficientBalance",
71
+ "type": "error"
72
+ },
73
+ {
74
+ "inputs": [],
75
+ "name": "InvalidAmount",
76
+ "type": "error"
77
+ },
78
+ {
79
+ "inputs": [],
80
+ "name": "InvalidBaseToken",
81
+ "type": "error"
82
+ },
83
+ {
84
+ "inputs": [],
85
+ "name": "InvalidCurrency",
86
+ "type": "error"
87
+ },
88
+ {
89
+ "inputs": [],
90
+ "name": "InvalidQuoteToken",
91
+ "type": "error"
92
+ },
93
+ {
94
+ "inputs": [],
95
+ "name": "InvalidRecipient",
96
+ "type": "error"
97
+ },
98
+ {
99
+ "inputs": [],
100
+ "name": "InvalidSupplyCap",
101
+ "type": "error"
102
+ },
103
+ {
104
+ "inputs": [],
105
+ "name": "InvalidToken",
106
+ "type": "error"
107
+ },
108
+ {
109
+ "inputs": [],
110
+ "name": "InvalidTransferPolicyId",
111
+ "type": "error"
112
+ },
113
+ {
114
+ "inputs": [],
115
+ "name": "NoOptedInSupply",
116
+ "type": "error"
117
+ },
118
+ {
119
+ "inputs": [],
120
+ "name": "PolicyForbids",
121
+ "type": "error"
122
+ },
123
+ {
124
+ "inputs": [],
125
+ "name": "ProtectedAddress",
126
+ "type": "error"
127
+ },
128
+ {
129
+ "inputs": [],
130
+ "name": "SupplyCapExceeded",
131
+ "type": "error"
132
+ },
133
+ {
134
+ "inputs": [],
135
+ "name": "Unauthorized",
136
+ "type": "error"
137
+ },
138
+ {
139
+ "anonymous": false,
140
+ "inputs": [
141
+ {
142
+ "indexed": true,
143
+ "internalType": "address",
144
+ "name": "owner",
145
+ "type": "address"
146
+ },
147
+ {
148
+ "indexed": true,
149
+ "internalType": "address",
150
+ "name": "spender",
151
+ "type": "address"
152
+ },
153
+ {
154
+ "indexed": false,
155
+ "internalType": "uint256",
156
+ "name": "amount",
157
+ "type": "uint256"
158
+ }
159
+ ],
160
+ "name": "Approval",
161
+ "type": "event"
162
+ },
163
+ {
164
+ "anonymous": false,
165
+ "inputs": [
166
+ {
167
+ "indexed": true,
168
+ "internalType": "address",
169
+ "name": "from",
170
+ "type": "address"
171
+ },
172
+ {
173
+ "indexed": false,
174
+ "internalType": "uint256",
175
+ "name": "amount",
176
+ "type": "uint256"
177
+ }
178
+ ],
179
+ "name": "Burn",
180
+ "type": "event"
181
+ },
182
+ {
183
+ "anonymous": false,
184
+ "inputs": [
185
+ {
186
+ "indexed": true,
187
+ "internalType": "address",
188
+ "name": "from",
189
+ "type": "address"
190
+ },
191
+ {
192
+ "indexed": false,
193
+ "internalType": "uint256",
194
+ "name": "amount",
195
+ "type": "uint256"
196
+ }
197
+ ],
198
+ "name": "BurnBlocked",
199
+ "type": "event"
200
+ },
201
+ {
202
+ "anonymous": false,
203
+ "inputs": [
204
+ {
205
+ "indexed": true,
206
+ "internalType": "address",
207
+ "name": "to",
208
+ "type": "address"
209
+ },
210
+ {
211
+ "indexed": false,
212
+ "internalType": "uint256",
213
+ "name": "amount",
214
+ "type": "uint256"
215
+ }
216
+ ],
217
+ "name": "Mint",
218
+ "type": "event"
219
+ },
220
+ {
221
+ "anonymous": false,
222
+ "inputs": [
223
+ {
224
+ "indexed": true,
225
+ "internalType": "address",
226
+ "name": "updater",
227
+ "type": "address"
228
+ },
229
+ {
230
+ "indexed": true,
231
+ "internalType": "contract ITIP20",
232
+ "name": "nextQuoteToken",
233
+ "type": "address"
234
+ }
235
+ ],
236
+ "name": "NextQuoteTokenSet",
237
+ "type": "event"
238
+ },
239
+ {
240
+ "anonymous": false,
241
+ "inputs": [
242
+ {
243
+ "indexed": true,
244
+ "internalType": "address",
245
+ "name": "updater",
246
+ "type": "address"
247
+ },
248
+ {
249
+ "indexed": false,
250
+ "internalType": "bool",
251
+ "name": "isPaused",
252
+ "type": "bool"
253
+ }
254
+ ],
255
+ "name": "PauseStateUpdate",
256
+ "type": "event"
257
+ },
258
+ {
259
+ "anonymous": false,
260
+ "inputs": [
261
+ {
262
+ "indexed": true,
263
+ "internalType": "address",
264
+ "name": "updater",
265
+ "type": "address"
266
+ },
267
+ {
268
+ "indexed": true,
269
+ "internalType": "contract ITIP20",
270
+ "name": "newQuoteToken",
271
+ "type": "address"
272
+ }
273
+ ],
274
+ "name": "QuoteTokenUpdate",
275
+ "type": "event"
276
+ },
277
+ {
278
+ "anonymous": false,
279
+ "inputs": [
280
+ {
281
+ "indexed": true,
282
+ "internalType": "address",
283
+ "name": "funder",
284
+ "type": "address"
285
+ },
286
+ {
287
+ "indexed": false,
288
+ "internalType": "uint256",
289
+ "name": "amount",
290
+ "type": "uint256"
291
+ }
292
+ ],
293
+ "name": "RewardDistributed",
294
+ "type": "event"
295
+ },
296
+ {
297
+ "anonymous": false,
298
+ "inputs": [
299
+ {
300
+ "indexed": true,
301
+ "internalType": "address",
302
+ "name": "holder",
303
+ "type": "address"
304
+ },
305
+ {
306
+ "indexed": true,
307
+ "internalType": "address",
308
+ "name": "recipient",
309
+ "type": "address"
310
+ }
311
+ ],
312
+ "name": "RewardRecipientSet",
313
+ "type": "event"
314
+ },
315
+ {
316
+ "anonymous": false,
317
+ "inputs": [
318
+ {
319
+ "indexed": true,
320
+ "internalType": "bytes32",
321
+ "name": "role",
322
+ "type": "bytes32"
323
+ },
324
+ {
325
+ "indexed": true,
326
+ "internalType": "bytes32",
327
+ "name": "newAdminRole",
328
+ "type": "bytes32"
329
+ },
330
+ {
331
+ "indexed": true,
332
+ "internalType": "address",
333
+ "name": "sender",
334
+ "type": "address"
335
+ }
336
+ ],
337
+ "name": "RoleAdminUpdated",
338
+ "type": "event"
339
+ },
340
+ {
341
+ "anonymous": false,
342
+ "inputs": [
343
+ {
344
+ "indexed": true,
345
+ "internalType": "bytes32",
346
+ "name": "role",
347
+ "type": "bytes32"
348
+ },
349
+ {
350
+ "indexed": true,
351
+ "internalType": "address",
352
+ "name": "account",
353
+ "type": "address"
354
+ },
355
+ {
356
+ "indexed": true,
357
+ "internalType": "address",
358
+ "name": "sender",
359
+ "type": "address"
360
+ },
361
+ {
362
+ "indexed": false,
363
+ "internalType": "bool",
364
+ "name": "hasRole",
365
+ "type": "bool"
366
+ }
367
+ ],
368
+ "name": "RoleMembershipUpdated",
369
+ "type": "event"
370
+ },
371
+ {
372
+ "anonymous": false,
373
+ "inputs": [
374
+ {
375
+ "indexed": true,
376
+ "internalType": "address",
377
+ "name": "updater",
378
+ "type": "address"
379
+ },
380
+ {
381
+ "indexed": true,
382
+ "internalType": "uint256",
383
+ "name": "newSupplyCap",
384
+ "type": "uint256"
385
+ }
386
+ ],
387
+ "name": "SupplyCapUpdate",
388
+ "type": "event"
389
+ },
390
+ {
391
+ "anonymous": false,
392
+ "inputs": [
393
+ {
394
+ "indexed": true,
395
+ "internalType": "address",
396
+ "name": "from",
397
+ "type": "address"
398
+ },
399
+ {
400
+ "indexed": true,
401
+ "internalType": "address",
402
+ "name": "to",
403
+ "type": "address"
404
+ },
405
+ {
406
+ "indexed": false,
407
+ "internalType": "uint256",
408
+ "name": "amount",
409
+ "type": "uint256"
410
+ }
411
+ ],
412
+ "name": "Transfer",
413
+ "type": "event"
414
+ },
415
+ {
416
+ "anonymous": false,
417
+ "inputs": [
418
+ {
419
+ "indexed": true,
420
+ "internalType": "address",
421
+ "name": "updater",
422
+ "type": "address"
423
+ },
424
+ {
425
+ "indexed": true,
426
+ "internalType": "uint64",
427
+ "name": "newPolicyId",
428
+ "type": "uint64"
429
+ }
430
+ ],
431
+ "name": "TransferPolicyUpdate",
432
+ "type": "event"
433
+ },
434
+ {
435
+ "anonymous": false,
436
+ "inputs": [
437
+ {
438
+ "indexed": true,
439
+ "internalType": "address",
440
+ "name": "from",
441
+ "type": "address"
442
+ },
443
+ {
444
+ "indexed": true,
445
+ "internalType": "address",
446
+ "name": "to",
447
+ "type": "address"
448
+ },
449
+ {
450
+ "indexed": false,
451
+ "internalType": "uint256",
452
+ "name": "amount",
453
+ "type": "uint256"
454
+ },
455
+ {
456
+ "indexed": true,
457
+ "internalType": "bytes32",
458
+ "name": "memo",
459
+ "type": "bytes32"
460
+ }
461
+ ],
462
+ "name": "TransferWithMemo",
463
+ "type": "event"
464
+ },
465
+ {
466
+ "inputs": [],
467
+ "name": "BURN_BLOCKED_ROLE",
468
+ "outputs": [
469
+ {
470
+ "internalType": "bytes32",
471
+ "name": "",
472
+ "type": "bytes32"
473
+ }
474
+ ],
475
+ "stateMutability": "view",
476
+ "type": "function"
477
+ },
478
+ {
479
+ "inputs": [],
480
+ "name": "ISSUER_ROLE",
481
+ "outputs": [
482
+ {
483
+ "internalType": "bytes32",
484
+ "name": "",
485
+ "type": "bytes32"
486
+ }
487
+ ],
488
+ "stateMutability": "view",
489
+ "type": "function"
490
+ },
491
+ {
492
+ "inputs": [],
493
+ "name": "PAUSE_ROLE",
494
+ "outputs": [
495
+ {
496
+ "internalType": "bytes32",
497
+ "name": "",
498
+ "type": "bytes32"
499
+ }
500
+ ],
501
+ "stateMutability": "view",
502
+ "type": "function"
503
+ },
504
+ {
505
+ "inputs": [],
506
+ "name": "UNPAUSE_ROLE",
507
+ "outputs": [
508
+ {
509
+ "internalType": "bytes32",
510
+ "name": "",
511
+ "type": "bytes32"
512
+ }
513
+ ],
514
+ "stateMutability": "view",
515
+ "type": "function"
516
+ },
517
+ {
518
+ "inputs": [
519
+ {
520
+ "internalType": "address",
521
+ "name": "",
522
+ "type": "address"
523
+ },
524
+ {
525
+ "internalType": "address",
526
+ "name": "",
527
+ "type": "address"
528
+ }
529
+ ],
530
+ "name": "allowance",
531
+ "outputs": [
532
+ {
533
+ "internalType": "uint256",
534
+ "name": "",
535
+ "type": "uint256"
536
+ }
537
+ ],
538
+ "stateMutability": "view",
539
+ "type": "function"
540
+ },
541
+ {
542
+ "inputs": [
543
+ {
544
+ "internalType": "address",
545
+ "name": "spender",
546
+ "type": "address"
547
+ },
548
+ {
549
+ "internalType": "uint256",
550
+ "name": "amount",
551
+ "type": "uint256"
552
+ }
553
+ ],
554
+ "name": "approve",
555
+ "outputs": [
556
+ {
557
+ "internalType": "bool",
558
+ "name": "",
559
+ "type": "bool"
560
+ }
561
+ ],
562
+ "stateMutability": "nonpayable",
563
+ "type": "function"
564
+ },
565
+ {
566
+ "inputs": [
567
+ {
568
+ "internalType": "address",
569
+ "name": "",
570
+ "type": "address"
571
+ }
572
+ ],
573
+ "name": "balanceOf",
574
+ "outputs": [
575
+ {
576
+ "internalType": "uint256",
577
+ "name": "",
578
+ "type": "uint256"
579
+ }
580
+ ],
581
+ "stateMutability": "view",
582
+ "type": "function"
583
+ },
584
+ {
585
+ "inputs": [
586
+ {
587
+ "internalType": "uint256",
588
+ "name": "amount",
589
+ "type": "uint256"
590
+ }
591
+ ],
592
+ "name": "burn",
593
+ "outputs": [],
594
+ "stateMutability": "nonpayable",
595
+ "type": "function"
596
+ },
597
+ {
598
+ "inputs": [
599
+ {
600
+ "internalType": "address",
601
+ "name": "from",
602
+ "type": "address"
603
+ },
604
+ {
605
+ "internalType": "uint256",
606
+ "name": "amount",
607
+ "type": "uint256"
608
+ }
609
+ ],
610
+ "name": "burnBlocked",
611
+ "outputs": [],
612
+ "stateMutability": "nonpayable",
613
+ "type": "function"
614
+ },
615
+ {
616
+ "inputs": [
617
+ {
618
+ "internalType": "uint256",
619
+ "name": "amount",
620
+ "type": "uint256"
621
+ },
622
+ {
623
+ "internalType": "bytes32",
624
+ "name": "memo",
625
+ "type": "bytes32"
626
+ }
627
+ ],
628
+ "name": "burnWithMemo",
629
+ "outputs": [],
630
+ "stateMutability": "nonpayable",
631
+ "type": "function"
632
+ },
633
+ {
634
+ "inputs": [
635
+ {
636
+ "internalType": "uint64",
637
+ "name": "newPolicyId",
638
+ "type": "uint64"
639
+ }
640
+ ],
641
+ "name": "changeTransferPolicyId",
642
+ "outputs": [],
643
+ "stateMutability": "nonpayable",
644
+ "type": "function"
645
+ },
646
+ {
647
+ "inputs": [],
648
+ "name": "claimRewards",
649
+ "outputs": [
650
+ {
651
+ "internalType": "uint256",
652
+ "name": "maxAmount",
653
+ "type": "uint256"
654
+ }
655
+ ],
656
+ "stateMutability": "nonpayable",
657
+ "type": "function"
658
+ },
659
+ {
660
+ "inputs": [],
661
+ "name": "completeQuoteTokenUpdate",
662
+ "outputs": [],
663
+ "stateMutability": "nonpayable",
664
+ "type": "function"
665
+ },
666
+ {
667
+ "inputs": [],
668
+ "name": "currency",
669
+ "outputs": [
670
+ {
671
+ "internalType": "string",
672
+ "name": "",
673
+ "type": "string"
674
+ }
675
+ ],
676
+ "stateMutability": "view",
677
+ "type": "function"
678
+ },
679
+ {
680
+ "inputs": [],
681
+ "name": "decimals",
682
+ "outputs": [
683
+ {
684
+ "internalType": "uint8",
685
+ "name": "",
686
+ "type": "uint8"
687
+ }
688
+ ],
689
+ "stateMutability": "pure",
690
+ "type": "function"
691
+ },
692
+ {
693
+ "inputs": [
694
+ {
695
+ "internalType": "uint256",
696
+ "name": "amount",
697
+ "type": "uint256"
698
+ }
699
+ ],
700
+ "name": "distributeReward",
701
+ "outputs": [],
702
+ "stateMutability": "nonpayable",
703
+ "type": "function"
704
+ },
705
+ {
706
+ "inputs": [
707
+ {
708
+ "internalType": "address",
709
+ "name": "account",
710
+ "type": "address"
711
+ }
712
+ ],
713
+ "name": "getPendingRewards",
714
+ "outputs": [
715
+ {
716
+ "internalType": "uint256",
717
+ "name": "pending",
718
+ "type": "uint256"
719
+ }
720
+ ],
721
+ "stateMutability": "view",
722
+ "type": "function"
723
+ },
724
+ {
725
+ "inputs": [],
726
+ "name": "globalRewardPerToken",
727
+ "outputs": [
728
+ {
729
+ "internalType": "uint256",
730
+ "name": "",
731
+ "type": "uint256"
732
+ }
733
+ ],
734
+ "stateMutability": "view",
735
+ "type": "function"
736
+ },
737
+ {
738
+ "inputs": [
739
+ {
740
+ "internalType": "bytes32",
741
+ "name": "role",
742
+ "type": "bytes32"
743
+ },
744
+ {
745
+ "internalType": "address",
746
+ "name": "account",
747
+ "type": "address"
748
+ }
749
+ ],
750
+ "name": "grantRole",
751
+ "outputs": [],
752
+ "stateMutability": "nonpayable",
753
+ "type": "function"
754
+ },
755
+ {
756
+ "inputs": [
757
+ {
758
+ "internalType": "address",
759
+ "name": "account",
760
+ "type": "address"
761
+ },
762
+ {
763
+ "internalType": "bytes32",
764
+ "name": "role",
765
+ "type": "bytes32"
766
+ }
767
+ ],
768
+ "name": "hasRole",
769
+ "outputs": [
770
+ {
771
+ "internalType": "bool",
772
+ "name": "",
773
+ "type": "bool"
774
+ }
775
+ ],
776
+ "stateMutability": "view",
777
+ "type": "function"
778
+ },
779
+ {
780
+ "inputs": [
781
+ {
782
+ "internalType": "address",
783
+ "name": "to",
784
+ "type": "address"
785
+ },
786
+ {
787
+ "internalType": "uint256",
788
+ "name": "amount",
789
+ "type": "uint256"
790
+ }
791
+ ],
792
+ "name": "mint",
793
+ "outputs": [],
794
+ "stateMutability": "nonpayable",
795
+ "type": "function"
796
+ },
797
+ {
798
+ "inputs": [
799
+ {
800
+ "internalType": "address",
801
+ "name": "to",
802
+ "type": "address"
803
+ },
804
+ {
805
+ "internalType": "uint256",
806
+ "name": "amount",
807
+ "type": "uint256"
808
+ },
809
+ {
810
+ "internalType": "bytes32",
811
+ "name": "memo",
812
+ "type": "bytes32"
813
+ }
814
+ ],
815
+ "name": "mintWithMemo",
816
+ "outputs": [],
817
+ "stateMutability": "nonpayable",
818
+ "type": "function"
819
+ },
820
+ {
821
+ "inputs": [],
822
+ "name": "name",
823
+ "outputs": [
824
+ {
825
+ "internalType": "string",
826
+ "name": "",
827
+ "type": "string"
828
+ }
829
+ ],
830
+ "stateMutability": "view",
831
+ "type": "function"
832
+ },
833
+ {
834
+ "inputs": [],
835
+ "name": "nextQuoteToken",
836
+ "outputs": [
837
+ {
838
+ "internalType": "contract ITIP20",
839
+ "name": "",
840
+ "type": "address"
841
+ }
842
+ ],
843
+ "stateMutability": "view",
844
+ "type": "function"
845
+ },
846
+ {
847
+ "inputs": [],
848
+ "name": "optedInSupply",
849
+ "outputs": [
850
+ {
851
+ "internalType": "uint128",
852
+ "name": "",
853
+ "type": "uint128"
854
+ }
855
+ ],
856
+ "stateMutability": "view",
857
+ "type": "function"
858
+ },
859
+ {
860
+ "inputs": [],
861
+ "name": "pause",
862
+ "outputs": [],
863
+ "stateMutability": "nonpayable",
864
+ "type": "function"
865
+ },
866
+ {
867
+ "inputs": [],
868
+ "name": "paused",
869
+ "outputs": [
870
+ {
871
+ "internalType": "bool",
872
+ "name": "",
873
+ "type": "bool"
874
+ }
875
+ ],
876
+ "stateMutability": "view",
877
+ "type": "function"
878
+ },
879
+ {
880
+ "inputs": [],
881
+ "name": "quoteToken",
882
+ "outputs": [
883
+ {
884
+ "internalType": "contract ITIP20",
885
+ "name": "",
886
+ "type": "address"
887
+ }
888
+ ],
889
+ "stateMutability": "view",
890
+ "type": "function"
891
+ },
892
+ {
893
+ "inputs": [
894
+ {
895
+ "internalType": "bytes32",
896
+ "name": "role",
897
+ "type": "bytes32"
898
+ }
899
+ ],
900
+ "name": "renounceRole",
901
+ "outputs": [],
902
+ "stateMutability": "nonpayable",
903
+ "type": "function"
904
+ },
905
+ {
906
+ "inputs": [
907
+ {
908
+ "internalType": "bytes32",
909
+ "name": "role",
910
+ "type": "bytes32"
911
+ },
912
+ {
913
+ "internalType": "address",
914
+ "name": "account",
915
+ "type": "address"
916
+ }
917
+ ],
918
+ "name": "revokeRole",
919
+ "outputs": [],
920
+ "stateMutability": "nonpayable",
921
+ "type": "function"
922
+ },
923
+ {
924
+ "inputs": [
925
+ {
926
+ "internalType": "contract ITIP20",
927
+ "name": "newQuoteToken",
928
+ "type": "address"
929
+ }
930
+ ],
931
+ "name": "setNextQuoteToken",
932
+ "outputs": [],
933
+ "stateMutability": "nonpayable",
934
+ "type": "function"
935
+ },
936
+ {
937
+ "inputs": [
938
+ {
939
+ "internalType": "address",
940
+ "name": "newRewardRecipient",
941
+ "type": "address"
942
+ }
943
+ ],
944
+ "name": "setRewardRecipient",
945
+ "outputs": [],
946
+ "stateMutability": "nonpayable",
947
+ "type": "function"
948
+ },
949
+ {
950
+ "inputs": [
951
+ {
952
+ "internalType": "bytes32",
953
+ "name": "role",
954
+ "type": "bytes32"
955
+ },
956
+ {
957
+ "internalType": "bytes32",
958
+ "name": "adminRole",
959
+ "type": "bytes32"
960
+ }
961
+ ],
962
+ "name": "setRoleAdmin",
963
+ "outputs": [],
964
+ "stateMutability": "nonpayable",
965
+ "type": "function"
966
+ },
967
+ {
968
+ "inputs": [
969
+ {
970
+ "internalType": "uint256",
971
+ "name": "newSupplyCap",
972
+ "type": "uint256"
973
+ }
974
+ ],
975
+ "name": "setSupplyCap",
976
+ "outputs": [],
977
+ "stateMutability": "nonpayable",
978
+ "type": "function"
979
+ },
980
+ {
981
+ "inputs": [],
982
+ "name": "supplyCap",
983
+ "outputs": [
984
+ {
985
+ "internalType": "uint256",
986
+ "name": "",
987
+ "type": "uint256"
988
+ }
989
+ ],
990
+ "stateMutability": "view",
991
+ "type": "function"
992
+ },
993
+ {
994
+ "inputs": [],
995
+ "name": "symbol",
996
+ "outputs": [
997
+ {
998
+ "internalType": "string",
999
+ "name": "",
1000
+ "type": "string"
1001
+ }
1002
+ ],
1003
+ "stateMutability": "view",
1004
+ "type": "function"
1005
+ },
1006
+ {
1007
+ "inputs": [
1008
+ {
1009
+ "internalType": "address",
1010
+ "name": "from",
1011
+ "type": "address"
1012
+ },
1013
+ {
1014
+ "internalType": "address",
1015
+ "name": "to",
1016
+ "type": "address"
1017
+ },
1018
+ {
1019
+ "internalType": "uint256",
1020
+ "name": "amount",
1021
+ "type": "uint256"
1022
+ }
1023
+ ],
1024
+ "name": "systemTransferFrom",
1025
+ "outputs": [
1026
+ {
1027
+ "internalType": "bool",
1028
+ "name": "",
1029
+ "type": "bool"
1030
+ }
1031
+ ],
1032
+ "stateMutability": "nonpayable",
1033
+ "type": "function"
1034
+ },
1035
+ {
1036
+ "inputs": [],
1037
+ "name": "totalSupply",
1038
+ "outputs": [
1039
+ {
1040
+ "internalType": "uint256",
1041
+ "name": "",
1042
+ "type": "uint256"
1043
+ }
1044
+ ],
1045
+ "stateMutability": "view",
1046
+ "type": "function"
1047
+ },
1048
+ {
1049
+ "inputs": [
1050
+ {
1051
+ "internalType": "address",
1052
+ "name": "to",
1053
+ "type": "address"
1054
+ },
1055
+ {
1056
+ "internalType": "uint256",
1057
+ "name": "amount",
1058
+ "type": "uint256"
1059
+ }
1060
+ ],
1061
+ "name": "transfer",
1062
+ "outputs": [
1063
+ {
1064
+ "internalType": "bool",
1065
+ "name": "",
1066
+ "type": "bool"
1067
+ }
1068
+ ],
1069
+ "stateMutability": "nonpayable",
1070
+ "type": "function"
1071
+ },
1072
+ {
1073
+ "inputs": [
1074
+ {
1075
+ "internalType": "address",
1076
+ "name": "to",
1077
+ "type": "address"
1078
+ },
1079
+ {
1080
+ "internalType": "uint256",
1081
+ "name": "refund",
1082
+ "type": "uint256"
1083
+ },
1084
+ {
1085
+ "internalType": "uint256",
1086
+ "name": "actualUsed",
1087
+ "type": "uint256"
1088
+ }
1089
+ ],
1090
+ "name": "transferFeePostTx",
1091
+ "outputs": [],
1092
+ "stateMutability": "nonpayable",
1093
+ "type": "function"
1094
+ },
1095
+ {
1096
+ "inputs": [
1097
+ {
1098
+ "internalType": "address",
1099
+ "name": "from",
1100
+ "type": "address"
1101
+ },
1102
+ {
1103
+ "internalType": "uint256",
1104
+ "name": "amount",
1105
+ "type": "uint256"
1106
+ }
1107
+ ],
1108
+ "name": "transferFeePreTx",
1109
+ "outputs": [],
1110
+ "stateMutability": "nonpayable",
1111
+ "type": "function"
1112
+ },
1113
+ {
1114
+ "inputs": [
1115
+ {
1116
+ "internalType": "address",
1117
+ "name": "from",
1118
+ "type": "address"
1119
+ },
1120
+ {
1121
+ "internalType": "address",
1122
+ "name": "to",
1123
+ "type": "address"
1124
+ },
1125
+ {
1126
+ "internalType": "uint256",
1127
+ "name": "amount",
1128
+ "type": "uint256"
1129
+ }
1130
+ ],
1131
+ "name": "transferFrom",
1132
+ "outputs": [
1133
+ {
1134
+ "internalType": "bool",
1135
+ "name": "",
1136
+ "type": "bool"
1137
+ }
1138
+ ],
1139
+ "stateMutability": "nonpayable",
1140
+ "type": "function"
1141
+ },
1142
+ {
1143
+ "inputs": [
1144
+ {
1145
+ "internalType": "address",
1146
+ "name": "from",
1147
+ "type": "address"
1148
+ },
1149
+ {
1150
+ "internalType": "address",
1151
+ "name": "to",
1152
+ "type": "address"
1153
+ },
1154
+ {
1155
+ "internalType": "uint256",
1156
+ "name": "amount",
1157
+ "type": "uint256"
1158
+ },
1159
+ {
1160
+ "internalType": "bytes32",
1161
+ "name": "memo",
1162
+ "type": "bytes32"
1163
+ }
1164
+ ],
1165
+ "name": "transferFromWithMemo",
1166
+ "outputs": [
1167
+ {
1168
+ "internalType": "bool",
1169
+ "name": "",
1170
+ "type": "bool"
1171
+ }
1172
+ ],
1173
+ "stateMutability": "nonpayable",
1174
+ "type": "function"
1175
+ },
1176
+ {
1177
+ "inputs": [],
1178
+ "name": "transferPolicyId",
1179
+ "outputs": [
1180
+ {
1181
+ "internalType": "uint64",
1182
+ "name": "",
1183
+ "type": "uint64"
1184
+ }
1185
+ ],
1186
+ "stateMutability": "view",
1187
+ "type": "function"
1188
+ },
1189
+ {
1190
+ "inputs": [
1191
+ {
1192
+ "internalType": "address",
1193
+ "name": "to",
1194
+ "type": "address"
1195
+ },
1196
+ {
1197
+ "internalType": "uint256",
1198
+ "name": "amount",
1199
+ "type": "uint256"
1200
+ },
1201
+ {
1202
+ "internalType": "bytes32",
1203
+ "name": "memo",
1204
+ "type": "bytes32"
1205
+ }
1206
+ ],
1207
+ "name": "transferWithMemo",
1208
+ "outputs": [],
1209
+ "stateMutability": "nonpayable",
1210
+ "type": "function"
1211
+ },
1212
+ {
1213
+ "inputs": [],
1214
+ "name": "unpause",
1215
+ "outputs": [],
1216
+ "stateMutability": "nonpayable",
1217
+ "type": "function"
1218
+ },
1219
+ {
1220
+ "inputs": [
1221
+ {
1222
+ "internalType": "address",
1223
+ "name": "",
1224
+ "type": "address"
1225
+ }
1226
+ ],
1227
+ "name": "userRewardInfo",
1228
+ "outputs": [
1229
+ {
1230
+ "internalType": "address",
1231
+ "name": "rewardRecipient",
1232
+ "type": "address"
1233
+ },
1234
+ {
1235
+ "internalType": "uint256",
1236
+ "name": "rewardPerToken",
1237
+ "type": "uint256"
1238
+ },
1239
+ {
1240
+ "internalType": "uint256",
1241
+ "name": "rewardBalance",
1242
+ "type": "uint256"
1243
+ }
1244
+ ],
1245
+ "stateMutability": "view",
1246
+ "type": "function"
1247
+ }
1248
+ ],
1249
+ "bytecode": "0x60a060405260068054600160a01b600160e01b031916600160a01b179055600a805460ff191690556001600160801b03600b553480156200003f57600080fd5b5060405162004f6c38038062004f6c833981016040819052620000629162000278565b600019600081905260016020527fc39d774f18115b85b81494d65e588b565d73abc969333d1da7b0a0eb0729accd556040516200009f9062000189565b604051809103906000f080158015620000bc573d6000803e3d6000fd5b506001600160a01b03166080526002620000d78782620003db565b506003620000e68682620003db565b506004620000f58582620003db565b50600580546001600160a01b03199081166001600160a01b03868116918217909355600680549092161790558281166000818152602081815260408083208380528252808320805460ff191660019081179091559051908152938516937f4811f35680ba814bed6b0b926a2949c8a1000f4f2443cfe9978745d46a251aec910160405180910390a4505050505050620004a7565b6110098062003f6383390190565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001bf57600080fd5b81516001600160401b0380821115620001dc57620001dc62000197565b604051601f8301601f19908116603f0116810190828211818310171562000207576200020762000197565b81604052838152602092508660208588010111156200022557600080fd5b600091505b838210156200024957858201830151818301840152908201906200022a565b6000602085830101528094505050505092915050565b6001600160a01b03811681146200027557600080fd5b50565b60008060008060008060c087890312156200029257600080fd5b86516001600160401b0380821115620002aa57600080fd5b620002b88a838b01620001ad565b97506020890151915080821115620002cf57600080fd5b620002dd8a838b01620001ad565b96506040890151915080821115620002f457600080fd5b506200030389828a01620001ad565b945050606087015162000316816200025f565b608088015190935062000329816200025f565b60a08801519092506200033c816200025f565b809150509295509295509295565b600181811c908216806200035f57607f821691505b6020821081036200038057634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003d6576000816000526020600020601f850160051c81016020861015620003b15750805b601f850160051c820191505b81811015620003d257828155600101620003bd565b5050505b505050565b81516001600160401b03811115620003f757620003f762000197565b6200040f816200040884546200034a565b8462000386565b602080601f8311600181146200044757600084156200042e5750858301515b600019600386901b1c1916600185901b178555620003d2565b600085815260208120601f198616915b82811015620004785788860151825594840194600190910190840162000457565b5085821015620004975787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b608051613a296200053a60003960008181610b6e01528181610c1901528181610dc101528181610e6a015281816118c10152818161196c01528181611b9a01528181611db301528181611e66015281816121d70152818161228a0152818161261b015281816126ce015281816129c601528181612c3e01528181612ce901528181612e0f01526132d70152613a296000f3fe608060405234801561001057600080fd5b50600436106103155760003560e01c80637d0819b7116101a7578063a9059cbb116100ee578063e521136f11610097578063f6ed201711610071578063f6ed20171461074c578063fbd6948f1461075f578063fd5e94201461077257600080fd5b8063e521136f1461071e578063e5a6b10f14610731578063ec0cf3dc1461073957600080fd5b8063d547741f116100c8578063d547741f146106cd578063dd62ed3e146106e0578063e44f0b121461070b57600080fd5b8063a9059cbb1461067c578063ac4ab3fb1461068f578063b6a3f59a146106ba57600080fd5b8063929c25391161015057806395d89b411161012a57806395d89b411461062d5780639c4bad2914610635578063a7d690991461066957600080fd5b8063929c2539146105f4578063940a4e451461060757806395777d591461061a57600080fd5b80638bb9c5bf116101815780638bb9c5bf146105ad5780638ef39dce146105c05780638f770ad0146105eb57600080fd5b80637d0819b71461056b57806382aefa241461057e5780638456cb59146105a557600080fd5b8063360b8ed91161026b57806342966c6811610214578063638bc4a3116101ee578063638bc4a31461053a57806370a0823114610542578063726ce3241461056257600080fd5b806342966c68146105075780634593223f1461051a5780635c975abb1461052d57600080fd5b806338f23b0b1161024557806338f23b0b146104d95780633f4ba83a146104ec57806340c10f19146104f457600080fd5b8063360b8ed91461044c578063372500ab146104aa578063389ed267146104b257600080fd5b8063217a4b70116102cd578063309756fb116102a7578063309756fb146103ef578063313ce5671461041657806332ad9be81461042557600080fd5b8063217a4b701461039e57806323b872dd146103c95780632f2ff15d146103dc57600080fd5b8063095ea7b3116102fe578063095ea7b31461034d57806318160ddd146103705780631e4e00911461038b57600080fd5b806305dbb5e01461031a57806306fdde031461032f575b600080fd5b61032d6103283660046134bd565b610785565b005b61033761091f565b604051610344919061350d565b60405180910390f35b61036061035b3660046134bd565b6109ad565b6040519015158152602001610344565b6007546001600160801b03165b604051908152602001610344565b61032d610399366004613540565b610a1a565b6005546103b1906001600160a01b031681565b6040516001600160a01b039091168152602001610344565b6103606103d7366004613562565b610a9f565b61032d6103ea3660046135a3565b610cbc565b61037d7f265b220c5a8891efdd9e1b1b7fa72f257bd5169f8d87e319cf3dad6ff52b94ae81565b60405160068152602001610344565b61037d7f7408fdc0d31c7bcb349eab611f5d1168acd4303574993f8cdc98b1cd18c41cae81565b61048561045a3660046135d3565b600e602052600090815260409020805460018201546002909201546001600160a01b03909116919083565b604080516001600160a01b039094168452602084019290925290820152606001610344565b61037d610d6b565b61037d7f139c2898040ef16910dc9f44dc697df79363da767d8bc92f2e310312b816e46d81565b61032d6104e7366004613540565b611049565b61032d61115d565b61032d6105023660046134bd565b6111fa565b61032d6105153660046135f7565b611298565b61032d6105283660046135d3565b611371565b600a546103609060ff1681565b61032d61155f565b61037d6105503660046135d3565b60086020526000908152604090205481565b61037d600c5481565b6006546103b1906001600160a01b031681565b61037d7f114e74f6ea3bd819998f78687bfcb11b140da08e9b7d222fa9c1f1ba1f2aa12281565b61032d6116c6565b61032d6105bb3660046135f7565b611761565b600d546105d3906001600160801b031681565b6040516001600160801b039091168152602001610344565b61037d600b5481565b610360610602366004613610565b6117f2565b61032d6106153660046135f7565b611b0d565b61032d610628366004613656565b611cf0565b610337611f52565b60065461065090600160a01b900467ffffffffffffffff1681565b60405167ffffffffffffffff9091168152602001610344565b61032d610677366004613656565b611f5f565b61036061068a3660046134bd565b612111565b61036061069d3660046134bd565b600060208181529281526040808220909352908152205460ff1681565b61032d6106c83660046135f7565b61232c565b61032d6106db3660046135a3565b612420565b61037d6106ee36600461368b565b600960209081526000928352604080842090915290825290205481565b61032d610719366004613656565b6124be565b61032d61072c3660046135d3565b6125b9565b6103376128a9565b61032d6107473660046134bd565b6128b6565b61037d61075a3660046135d3565b612ad0565b61036061076d366004613562565b612b6f565b61032d6107803660046136b9565b612d9f565b600a5460ff16156107a95760405163ab35696f60e01b815260040160405180910390fd5b3373feec000000000000000000000000000000000000146107c957600080fd5b6001600160a01b0382166107dc57600080fd5b6001600160a01b03821660009081526008602052604090205481111561085e576001600160a01b038216600090815260086020526040908190205490517f832f98b50000000000000000000000000000000000000000000000000000000081526004810191909152602481018290523060448201526064015b60405180910390fd5b600061086983612f27565b90506001600160a01b038116156108bd57600d80548391906000906108989084906001600160801b0316613712565b92506101000a8154816001600160801b0302191690836001600160801b031602179055505b506001600160a01b0390911660009081526008602052604081208054839003905573feec00000000000000000000000000000000000090527ffe9f059231087294c19e08742d222f13345d2d0f1bb02bf7b0068d0dfaf7db2c80549091019055565b6002805461092c90613739565b80601f016020809104026020016040519081016040528092919081815260200182805461095890613739565b80156109a55780601f1061097a576101008083540402835291602001916109a5565b820191906000526020600020905b81548152906001019060200180831161098857829003601f168201915b505050505081565b3360008181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610a089086815260200190565b60405180910390a35060015b92915050565b6000828152600160209081526040808320543384528383528184208185529092529091205460ff16610a5e576040516282b42960e81b815260040160405180910390fd5b600083815260016020526040808220849055513391849186917f70d85637458e639f63e6106179309eadde21dacce320d9549168d49d0a9d698291a4505050565b600a5460009060ff1615610ac65760405163ab35696f60e01b815260040160405180910390fd5b826001600160a01b0381161580610afa57506b20c0000000000000000000006bffffffffffffffffffffffff604083901c16145b15610b31576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600654604051632ad08bcf60e11b8152600160a01b90910467ffffffffffffffff1660048201526001600160a01b038087166024830152869186917f000000000000000000000000000000000000000000000000000000000000000016906355a1179e90604401602060405180830381865afa158015610bb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd99190613786565b1580610c865750600654604051632ad08bcf60e11b8152600160a01b90910467ffffffffffffffff1660048201526001600160a01b0382811660248301527f000000000000000000000000000000000000000000000000000000000000000016906355a1179e90604401602060405180830381865afa158015610c60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c849190613786565b155b15610ca4576040516354cfe65960e01b815260040160405180910390fd5b610caf878787613006565b5060019695505050505050565b6000828152600160209081526040808320543384528383528184208185529092529091205460ff16610d00576040516282b42960e81b815260040160405180910390fd5b6001600160a01b038216600081815260208181526040808320878452825291829020805460ff19166001908117909155915191825233929186917f4811f35680ba814bed6b0b926a2949c8a1000f4f2443cfe9978745d46a251aec91015b60405180910390a4505050565b600a5460009060ff1615610d925760405163ab35696f60e01b815260040160405180910390fd5b600654604051632ad08bcf60e11b8152600160a01b90910467ffffffffffffffff1660048201523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906355a1179e90604401602060405180830381865afa158015610e10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e349190613786565b1580610edf5750600654604051632ad08bcf60e11b8152600160a01b90910467ffffffffffffffff1660048201523360248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906355a1179e90604401602060405180830381865afa158015610eb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610edd9190613786565b155b15610efd576040516354cfe65960e01b815260040160405180910390fd5b610f0633612f27565b50336000908152600e6020908152604080832060020154308452600890925290912054818111610f365780610f38565b815b336000908152600e6020526040812060020180549295508592909190610f5f9084906137a8565b90915550503060009081526008602052604081208054859290610f839084906137a8565b9091555050336000908152600e60205260409020546001600160a01b031615610fe957600d8054849190600090610fc49084906001600160801b03166137bb565b92506101000a8154816001600160801b0302191690836001600160801b031602179055505b33600090815260086020526040812080548592906110089084906137db565b9091555050604051838152339030907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505090565b336000908152602081815260408083207f114e74f6ea3bd819998f78687bfcb11b140da08e9b7d222fa9c1f1ba1f2aa12280855292529091205460ff166110a2576040516282b42960e81b815260040160405180910390fd5b6110ae336000856130c5565b600780546001600160801b03808216869003167fffffffffffffffffffffffffffffffff00000000000000000000000000000000909116179055604051838152829060009033907f57bc7354aa85aed339e000bccffabbc529466af35f0772c8f8ee1145927de7f09060200160405180910390a460405183815233907fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5906020015b60405180910390a2505050565b336000908152602081815260408083207f265b220c5a8891efdd9e1b1b7fa72f257bd5169f8d87e319cf3dad6ff52b94ae80855292529091205460ff166111b6576040516282b42960e81b815260040160405180910390fd5b600a805460ff191690556040516000815233907ff79595a776ff71356be9e7ff196226a16d0f4d637ff39031256c0eafd7af6b5e906020015b60405180910390a250565b336000908152602081815260408083207f114e74f6ea3bd819998f78687bfcb11b140da08e9b7d222fa9c1f1ba1f2aa12280855292529091205460ff16611253576040516282b42960e81b815260040160405180910390fd5b61125d838361329e565b826001600160a01b03167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968858360405161115091815260200190565b336000908152602081815260408083207f114e74f6ea3bd819998f78687bfcb11b140da08e9b7d222fa9c1f1ba1f2aa12280855292529091205460ff166112f1576040516282b42960e81b815260040160405180910390fd5b6112fd336000846130c5565b600780546001600160801b03808216859003167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090911617905560405182815233907fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5906020015b60405180910390a25050565b3360009081526020818152604080832083805290915281205460ff166113a9576040516282b42960e81b815260040160405180910390fd5b604080518082018252600381527f5553440000000000000000000000000000000000000000000000000000000000602090910152517fc4ae21aac0c6549d71dd96035b7e0bdb6c79ebdba8891b666115bc976d16a29e9061140c906004906137ee565b6040518091039020036114fa576040518060400160405280600381526020017f555344000000000000000000000000000000000000000000000000000000000081525080519060200120826001600160a01b031663e5a6b10f6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611494573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526114bc91908101906138d7565b80519060200120146114fa576040517fd15b4fe200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03841690811790915560405133907f509c22f85ddeb1f3a347c45d225acd96afb87104e38b781e22a9376f0842a83a90600090a35050565b3360009081526020818152604080832083805290915281205460ff16611597576040516282b42960e81b815260040160405180910390fd5b6006546001600160a01b03165b6001600160a01b0381161561165e57306001600160a01b038216036115f5576040517fd15b4fe200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806001600160a01b031663217a4b706040518163ffffffff1660e01b8152600401602060405180830381865afa158015611633573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116579190613984565b90506115a4565b600654600580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216918217905560405133907fa2bc96949c0ac82a2c9b213d46c45d745e1e2567d1496b5e117d9c808ef004f390600090a35050565b336000908152602081815260408083207f139c2898040ef16910dc9f44dc697df79363da767d8bc92f2e310312b816e46d80855292529091205460ff1661171f576040516282b42960e81b815260040160405180910390fd5b600a805460ff1916600190811790915560405190815233907ff79595a776ff71356be9e7ff196226a16d0f4d637ff39031256c0eafd7af6b5e906020016111ef565b33600090815260208181526040808320848452909152902054819060ff1661179b576040516282b42960e81b815260040160405180910390fd5b336000818152602081815260408083208684528252808320805460ff1916905551918252829185917f4811f35680ba814bed6b0b926a2949c8a1000f4f2443cfe9978745d46a251aec910160405180910390a45050565b600a5460009060ff16156118195760405163ab35696f60e01b815260040160405180910390fd5b836001600160a01b038116158061184d57506b20c0000000000000000000006bffffffffffffffffffffffff604083901c16145b15611884576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600654604051632ad08bcf60e11b8152600160a01b90910467ffffffffffffffff1660048201526001600160a01b038088166024830152879187917f000000000000000000000000000000000000000000000000000000000000000016906355a1179e90604401602060405180830381865afa158015611908573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192c9190613786565b15806119d95750600654604051632ad08bcf60e11b8152600160a01b90910467ffffffffffffffff1660048201526001600160a01b0382811660248301527f000000000000000000000000000000000000000000000000000000000000000016906355a1179e90604401602060405180830381865afa1580156119b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d79190613786565b155b156119f7576040516354cfe65960e01b815260040160405180910390fd5b6001600160a01b038816600090815260096020908152604080832033845290915290205480871115611a55576040517f13be252b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611aa5576001600160a01b0389166000908152600960209081526040808320338452909152902087820390555b611ab08989896130c5565b85886001600160a01b03168a6001600160a01b03167f57bc7354aa85aed339e000bccffabbc529466af35f0772c8f8ee1145927de7f08a604051611af691815260200190565b60405180910390a450600198975050505050505050565b600a5460ff1615611b315760405163ab35696f60e01b815260040160405180910390fd5b80600003611b6b576040517f2c5211c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600654604051632ad08bcf60e11b8152600160a01b90910467ffffffffffffffff1660048201523360248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906355a1179e90604401602060405180830381865afa158015611be9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c0d9190613786565b611c2a576040516354cfe65960e01b815260040160405180910390fd5b611c353330836130c5565b600d546001600160801b0316600003611c7a576040517fe845980e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600d546000906001600160801b0316611c9b670de0b6b3a7640000846139a1565b611ca591906139b8565b905080600c6000828254611cb991906137db565b909155505060405182815233907fe34918ff1c7084970068b53fd71ad6d8b04e9f15d3886cbf006443e6cdc52ea690602001611365565b600a5460ff1615611d145760405163ab35696f60e01b815260040160405180910390fd5b826001600160a01b0381161580611d4857506b20c0000000000000000000006bffffffffffffffffffffffff604083901c16145b15611d7f576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600654604051632ad08bcf60e11b8152600160a01b90910467ffffffffffffffff16600482015233602482018190529085907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906355a1179e90604401602060405180830381865afa158015611e02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e269190613786565b1580611ed35750600654604051632ad08bcf60e11b8152600160a01b90910467ffffffffffffffff1660048201526001600160a01b0382811660248301527f000000000000000000000000000000000000000000000000000000000000000016906355a1179e90604401602060405180830381865afa158015611ead573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ed19190613786565b155b15611ef1576040516354cfe65960e01b815260040160405180910390fd5b611efc3387876130c5565b83866001600160a01b0316336001600160a01b03167f57bc7354aa85aed339e000bccffabbc529466af35f0772c8f8ee1145927de7f088604051611f4291815260200190565b60405180910390a4505050505050565b6003805461092c90613739565b3373feec00000000000000000000000000000000000014611f7f57600080fd5b6001600160a01b038316611f9257600080fd5b73feec00000000000000000000000000000000000060005260086020527ffe9f059231087294c19e08742d222f13345d2d0f1bb02bf7b0068d0dfaf7db2c548083111561201b576040517f832f98b50000000000000000000000000000000000000000000000000000000081526004810182905260248101849052306044820152606401610855565b600061202685612f27565b90506001600160a01b0381161561207a57600d80548591906000906120559084906001600160801b03166137bb565b92506101000a8154816001600160801b0302191690836001600160801b031602179055505b600860209081527ffe9f059231087294c19e08742d222f13345d2d0f1bb02bf7b0068d0dfaf7db2c805486900390556001600160a01b03861660008181526040908190208054880190555185815273feec000000000000000000000000000000000000927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91015b60405180910390a35050505050565b600a5460009060ff16156121385760405163ab35696f60e01b815260040160405180910390fd5b826001600160a01b038116158061216c57506b20c0000000000000000000006bffffffffffffffffffffffff604083901c16145b156121a3576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600654604051632ad08bcf60e11b8152600160a01b90910467ffffffffffffffff16600482015233602482018190529085907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906355a1179e90604401602060405180830381865afa158015612226573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061224a9190613786565b15806122f75750600654604051632ad08bcf60e11b8152600160a01b90910467ffffffffffffffff1660048201526001600160a01b0382811660248301527f000000000000000000000000000000000000000000000000000000000000000016906355a1179e90604401602060405180830381865afa1580156122d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122f59190613786565b155b15612315576040516354cfe65960e01b815260040160405180910390fd5b6123203387876130c5565b50600195945050505050565b3360009081526020818152604080832083805290915281205460ff16612364576040516282b42960e81b815260040160405180910390fd5b6007546001600160801b03168210156123a9576040517fc0d76d9200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160801b038211156123ea576040517ff58f733a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600b829055604051829033907f6d7e6630766134be7e051b11b8882e6f47926ddd2fd1268bebd168c30f055c4f90600090a35050565b6000828152600160209081526040808320543384528383528184208185529092529091205460ff16612464576040516282b42960e81b815260040160405180910390fd5b6001600160a01b0382166000818152602081815260408083208784528252808320805460ff191690555191825233929186917f4811f35680ba814bed6b0b926a2949c8a1000f4f2443cfe9978745d46a251aec9101610d5e565b336000908152602081815260408083207f114e74f6ea3bd819998f78687bfcb11b140da08e9b7d222fa9c1f1ba1f2aa12280855292529091205460ff16612517576040516282b42960e81b815260040160405180910390fd5b612521848461329e565b81846001600160a01b031660006001600160a01b03167f57bc7354aa85aed339e000bccffabbc529466af35f0772c8f8ee1145927de7f08660405161256891815260200190565b60405180910390a4836001600160a01b03167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885846040516125ab91815260200190565b60405180910390a250505050565b600a5460ff16156125dd5760405163ab35696f60e01b815260040160405180910390fd5b6001600160a01b0381161561275957600654604051632ad08bcf60e11b8152600160a01b90910467ffffffffffffffff1660048201523360248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906355a1179e90604401602060405180830381865afa15801561266a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061268e9190613786565b158061273b5750600654604051632ad08bcf60e11b8152600160a01b90910467ffffffffffffffff1660048201526001600160a01b0382811660248301527f000000000000000000000000000000000000000000000000000000000000000016906355a1179e90604401602060405180830381865afa158015612715573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127399190613786565b155b15612759576040516354cfe65960e01b815260040160405180910390fd5b600061276433612f27565b90506001600160a01b038116156127d9576001600160a01b0382166127d45733600090815260086020526040812054600d8054919290916127af9084906001600160801b0316613712565b92506101000a8154816001600160801b0302191690836001600160801b031602179055505b612839565b6001600160a01b038216156128395733600090815260086020526040812054600d8054919290916128149084906001600160801b03166137bb565b92506101000a8154816001600160801b0302191690836001600160801b031602179055505b336000818152600e602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03871690811790915590519092917fbbf8c20751167a65b38d4dd87c3eba00bfae01d85fb809a89eee1ba842673b9891a35050565b6004805461092c90613739565b336000908152602081815260408083207f7408fdc0d31c7bcb349eab611f5d1168acd4303574993f8cdc98b1cd18c41cae80855292529091205460ff1661290f576040516282b42960e81b815260040160405180910390fd5b6001600160a01b03831673feec000000000000000000000000000000000000148061295657506001600160a01b03831673dec0000000000000000000000000000000000000145b1561298d576040517fe132007900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600654604051632ad08bcf60e11b8152600160a01b90910467ffffffffffffffff1660048201526001600160a01b0384811660248301527f000000000000000000000000000000000000000000000000000000000000000016906355a1179e90604401602060405180830381865afa158015612a0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a319190613786565b15612a4f576040516354cfe65960e01b815260040160405180910390fd5b612a5b836000846130c5565b600780546001600160801b03808216859003167fffffffffffffffffffffffffffffffff000000000000000000000000000000009091161790556040518281526001600160a01b038416907feff07194896bfa6254e521809f217f70dbdd9cefa6b894f5326af3ce8402c32090602001611150565b6001600160a01b038082166000818152600e602052604090206002810154815490939192911603612b69576001600160a01b0383166000908152600860205260409020548015612b675760008260010154600c54612b2e91906137a8565b90508015612b65576000670de0b6b3a7640000612b4b83856139a1565b612b5591906139b8565b9050612b6181866137db565b9450505b505b505b50919050565b600a5460009060ff1615612b965760405163ab35696f60e01b815260040160405180910390fd5b826001600160a01b0381161580612bca57506b20c0000000000000000000006bffffffffffffffffffffffff604083901c16145b15612c01576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600654604051632ad08bcf60e11b8152600160a01b90910467ffffffffffffffff1660048201526001600160a01b038087166024830152869186917f000000000000000000000000000000000000000000000000000000000000000016906355a1179e90604401602060405180830381865afa158015612c85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ca99190613786565b1580612d565750600654604051632ad08bcf60e11b8152600160a01b90910467ffffffffffffffff1660048201526001600160a01b0382811660248301527f000000000000000000000000000000000000000000000000000000000000000016906355a1179e90604401602060405180830381865afa158015612d30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d549190613786565b155b15612d74576040516354cfe65960e01b815260040160405180910390fd5b3373feec00000000000000000000000000000000000014612d9457600080fd5b610caf8787876130c5565b3360009081526020818152604080832083805290915281205460ff16612dd7576040516282b42960e81b815260040160405180910390fd5b6040517f330f563700000000000000000000000000000000000000000000000000000000815267ffffffffffffffff831660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063330f563790602401602060405180830381865afa158015612e5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e829190613786565b612eb8576040517f7b94a16b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600680547fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff16600160a01b67ffffffffffffffff85169081029190911790915560405133907fa870ab07b4f8e8e92e8876245ea0ec666bc09ccf6814a1fb6a8e6984b1932cce90600090a35050565b6001600160a01b038082166000908152600e602052604081208054600c54600190920154931692909190612f5b90836137a8565b90508015612b67576001600160a01b03831615612fe1576001600160a01b038416600090815260086020526040812054670de0b6b3a764000090612fa09084906139a1565b612faa91906139b8565b6001600160a01b0385166000908152600e6020526040812060020180549293508392909190612fda9084906137db565b9091555050505b6001600160a01b0384166000908152600e602052604090206001018290555050919050565b6001600160a01b038316600090815260096020908152604080832033845290915290205480821115613064576040517f13be252b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146130b4576001600160a01b0384166000908152600960209081526040808320338452909152902082820390555b6130bf8484846130c5565b50505050565b6001600160a01b038316600090815260086020526040902054811115613142576001600160a01b038316600090815260086020526040908190205490517f832f98b5000000000000000000000000000000000000000000000000000000008152600481019190915260248101829052306044820152606401610855565b600061314d84612f27565b9050600061315a84612f27565b90506001600160a01b038216156131c1576001600160a01b0381166131bc57600d80548491906000906131979084906001600160801b0316613712565b92506101000a8154816001600160801b0302191690836001600160801b031602179055505b613213565b6001600160a01b0381161561321357600d80548491906000906131ee9084906001600160801b03166137bb565b92506101000a8154816001600160801b0302191690836001600160801b031602179055505b6001600160a01b03808616600090815260086020526040902080548590039055841615613259576001600160a01b03841660009081526008602052604090208054840190555b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161210291815260200190565b600654604051632ad08bcf60e11b8152600160a01b90910467ffffffffffffffff1660048201526001600160a01b0383811660248301527f000000000000000000000000000000000000000000000000000000000000000016906355a1179e90604401602060405180830381865afa15801561331e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133429190613786565b61335f576040516354cfe65960e01b815260040160405180910390fd5b600b546007546133799083906001600160801b03166137db565b11156133b1576040517ff58f733a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006133bc83612f27565b90506001600160a01b0381161561341057600d80548391906000906133eb9084906001600160801b03166137bb565b92506101000a8154816001600160801b0302191690836001600160801b031602179055505b600780546001600160801b038082168501167fffffffffffffffffffffffffffffffff000000000000000000000000000000009091161790556001600160a01b038316600081815260086020526040808220805486019055517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906134989086815260200190565b60405180910390a3505050565b6001600160a01b03811681146134ba57600080fd5b50565b600080604083850312156134d057600080fd5b82356134db816134a5565b946020939093013593505050565b60005b838110156135045781810151838201526020016134ec565b50506000910152565b602081526000825180602084015261352c8160408501602087016134e9565b601f01601f19169190910160400192915050565b6000806040838503121561355357600080fd5b50508035926020909101359150565b60008060006060848603121561357757600080fd5b8335613582816134a5565b92506020840135613592816134a5565b929592945050506040919091013590565b600080604083850312156135b657600080fd5b8235915060208301356135c8816134a5565b809150509250929050565b6000602082840312156135e557600080fd5b81356135f0816134a5565b9392505050565b60006020828403121561360957600080fd5b5035919050565b6000806000806080858703121561362657600080fd5b8435613631816134a5565b93506020850135613641816134a5565b93969395505050506040820135916060013590565b60008060006060848603121561366b57600080fd5b8335613676816134a5565b95602085013595506040909401359392505050565b6000806040838503121561369e57600080fd5b82356136a9816134a5565b915060208301356135c8816134a5565b6000602082840312156136cb57600080fd5b813567ffffffffffffffff811681146135f057600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6001600160801b03828116828216039080821115613732576137326136e3565b5092915050565b600181811c9082168061374d57607f821691505b602082108103612b69577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006020828403121561379857600080fd5b815180151581146135f057600080fd5b81810381811115610a1457610a146136e3565b6001600160801b03818116838216019080821115613732576137326136e3565b80820180821115610a1457610a146136e3565b60008083548160018260011c9150600183168061380c57607f831692505b60208084108203613844577f4e487b710000000000000000000000000000000000000000000000000000000086526022600452602486fd5b818015613858576001811461386d5761389a565b60ff198616895284151585028901965061389a565b60008a81526020902060005b868110156138925781548b820152908501908301613879565b505084890196505b509498975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156138e957600080fd5b815167ffffffffffffffff8082111561390157600080fd5b818401915084601f83011261391557600080fd5b815181811115613927576139276138a8565b604051601f8201601f19908116603f0116810190838211818310171561394f5761394f6138a8565b8160405282815287602084870101111561396857600080fd5b6139798360208301602088016134e9565b979650505050505050565b60006020828403121561399657600080fd5b81516135f0816134a5565b8082028115828204841417610a1457610a146136e3565b6000826139ee577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea2646970667358221220fff81b52022389d26004543aca003eb1c32a39e32ebb91946ab01e86f448078964736f6c634300081600336080604052600080546001600160401b031916600217905534801561002357600080fd5b50610fd6806100336000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c806355a1179e11610076578063a2d3044f1161005b578063a2d3044f14610159578063c62b27d41461016c578063ca5d55f61461017f57600080fd5b806355a1179e1461013357806371ec67a31461014657600080fd5b806325f7d376146100a8578063330f5637146100bd5780633cc32f9c146100e55780635021432914610112575b600080fd5b6100bb6100b6366004610cf4565b610192565b005b6100d06100cb366004610d27565b610224565b60405190151581526020015b60405180910390f35b6000546100f99067ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016100dc565b610125610120366004610d27565b610257565b6040516100dc929190610db3565b6100d0610141366004610cf4565b610320565b6100bb610154366004610de4565b610469565b6100f9610167366004610e3f565b6105f7565b6100bb61017a366004610de4565b610993565b6100f961018d366004610ed0565b610b17565b67ffffffffffffffff821660008181526001602052604080822080547fffffffffffffffffffffff0000000000000000000000000000000000000000ff1661010073ffffffffffffffffffffffffffffffffffffffff87169081029190911790915590519092339290917f98925cfb1bc09c5b43dd0dd56d3d95aa04fb3300927580cc588c3f5dd58c15e19190a45050565b600060028267ffffffffffffffff16101561024157506001919050565b5060005467ffffffffffffffff90811691161090565b60008061026383610224565b610299576040517f720caa4f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff831660009081526001602081905260408083208151808301909252805491929091839160ff909116908111156102da576102da610d49565b60018111156102eb576102eb610d49565b81529054610100900473ffffffffffffffffffffffffffffffffffffffff166020918201528151910151909590945092505050565b600060028367ffffffffffffffff1610156103495750600167ffffffffffffffff831614610463565b67ffffffffffffffff831660009081526001602081905260408083208151808301909252805491929091839160ff9091169081111561038a5761038a610d49565b600181111561039b5761039b610d49565b81529054610100900473ffffffffffffffffffffffffffffffffffffffff1660209091015290506000815160018111156103d7576103d7610d49565b146104205767ffffffffffffffff8416600090815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915290205460ff161561045f565b67ffffffffffffffff8416600090815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915290205460ff165b9150505b92915050565b67ffffffffffffffff831660009081526001602081905260408083208151808301909252805491929091839160ff909116908111156104aa576104aa610d49565b60018111156104bb576104bb610d49565b8152905473ffffffffffffffffffffffffffffffffffffffff610100909104811660209283015290820151919250163314610522576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008151600181111561053757610537610d49565b1461056e576040517ff1011ef500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff8416600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff881680855290835292819020805460ff191687151590811790915590519081529192339290917fb15f514df899cf1b4ef0dc78f930c10d98883756fa3a1a8853a98132e7f4c5a691015b60405180910390a450505050565b6000805467ffffffffffffffff16818061061083610efa565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050604051806040016040528085600181111561065557610655610d49565b815273ffffffffffffffffffffffffffffffffffffffff871660209182015267ffffffffffffffff83166000908152600191829052604090208251815491929091839160ff199091169083818111156106b0576106b0610d49565b021790555060209190910151815473ffffffffffffffffffffffffffffffffffffffff909116610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff90911617905560005b828110156108e25767ffffffffffffffff8216600090815260026020526040812060019186868581811061073a5761073a610f48565b905060200201602081019061074f9190610f77565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000908120805460ff19169215159290921790915585600181111561079957610799610d49565b0361083e578383828181106107b0576107b0610f48565b90506020020160208101906107c59190610f77565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff168367ffffffffffffffff167fb15f514df899cf1b4ef0dc78f930c10d98883756fa3a1a8853a98132e7f4c5a66001604051610831911515815260200190565b60405180910390a46108da565b83838281811061085057610850610f48565b90506020020160208101906108659190610f77565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff168367ffffffffffffffff167f94c23f8f319426f2da63b46b024acbc55fe44a5c59dc4c00d11b792515083c5460016040516108d1911515815260200190565b60405180910390a45b600101610704565b503373ffffffffffffffffffffffffffffffffffffffff168167ffffffffffffffff167f718d87917f0c4cfd1263707ef0e77c656ed8d8bfaca06152bdb0b8094142ec27866040516109349190610f92565b60405180910390a360405173ffffffffffffffffffffffffffffffffffffffff861690339067ffffffffffffffff8416907f98925cfb1bc09c5b43dd0dd56d3d95aa04fb3300927580cc588c3f5dd58c15e190600090a4949350505050565b67ffffffffffffffff831660009081526001602081905260408083208151808301909252805491929091839160ff909116908111156109d4576109d4610d49565b60018111156109e5576109e5610d49565b8152905473ffffffffffffffffffffffffffffffffffffffff610100909104811660209283015290820151919250163314610a4c576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600181516001811115610a6157610a61610d49565b14610a98576040517ff1011ef500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff8416600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff881680855290835292819020805460ff191687151590811790915590519081529192339290917f94c23f8f319426f2da63b46b024acbc55fe44a5c59dc4c00d11b792515083c5491016105e9565b60006040518060400160405280836001811115610b3657610b36610d49565b815273ffffffffffffffffffffffffffffffffffffffff8516602090910152600080546001919067ffffffffffffffff168180610b7283610efa565b82546101009290920a67ffffffffffffffff818102199093169183160217909155811682526020820192909252604001600020825181549294509091829060ff191660018381811115610bc757610bc7610d49565b021790555060209190910151815473ffffffffffffffffffffffffffffffffffffffff909116610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909116179055604051339067ffffffffffffffff8316907f718d87917f0c4cfd1263707ef0e77c656ed8d8bfaca06152bdb0b8094142ec2790610c56908690610f92565b60405180910390a360405173ffffffffffffffffffffffffffffffffffffffff841690339067ffffffffffffffff8416907f98925cfb1bc09c5b43dd0dd56d3d95aa04fb3300927580cc588c3f5dd58c15e190600090a492915050565b803567ffffffffffffffff81168114610ccb57600080fd5b919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610ccb57600080fd5b60008060408385031215610d0757600080fd5b610d1083610cb3565b9150610d1e60208401610cd0565b90509250929050565b600060208284031215610d3957600080fd5b610d4282610cb3565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60028110610daf577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b60408101610dc18285610d78565b73ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b600080600060608486031215610df957600080fd5b610e0284610cb3565b9250610e1060208501610cd0565b915060408401358015158114610e2557600080fd5b809150509250925092565b803560028110610ccb57600080fd5b60008060008060608587031215610e5557600080fd5b610e5e85610cd0565b9350610e6c60208601610e30565b9250604085013567ffffffffffffffff80821115610e8957600080fd5b818701915087601f830112610e9d57600080fd5b813581811115610eac57600080fd5b8860208260051b8501011115610ec157600080fd5b95989497505060200194505050565b60008060408385031215610ee357600080fd5b610eec83610cd0565b9150610d1e60208401610e30565b600067ffffffffffffffff808316818103610f3e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6001019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215610f8957600080fd5b610d4282610cd0565b602081016104638284610d7856fea2646970667358221220b406ce8c9b5a3cbbfc2e8a9c88a6ba404135be5063734e166c0f9e246b746b1164736f6c63430008160033",
1250
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106103155760003560e01c80637d0819b7116101a7578063a9059cbb116100ee578063e521136f11610097578063f6ed201711610071578063f6ed20171461074c578063fbd6948f1461075f578063fd5e94201461077257600080fd5b8063e521136f1461071e578063e5a6b10f14610731578063ec0cf3dc1461073957600080fd5b8063d547741f116100c8578063d547741f146106cd578063dd62ed3e146106e0578063e44f0b121461070b57600080fd5b8063a9059cbb1461067c578063ac4ab3fb1461068f578063b6a3f59a146106ba57600080fd5b8063929c25391161015057806395d89b411161012a57806395d89b411461062d5780639c4bad2914610635578063a7d690991461066957600080fd5b8063929c2539146105f4578063940a4e451461060757806395777d591461061a57600080fd5b80638bb9c5bf116101815780638bb9c5bf146105ad5780638ef39dce146105c05780638f770ad0146105eb57600080fd5b80637d0819b71461056b57806382aefa241461057e5780638456cb59146105a557600080fd5b8063360b8ed91161026b57806342966c6811610214578063638bc4a3116101ee578063638bc4a31461053a57806370a0823114610542578063726ce3241461056257600080fd5b806342966c68146105075780634593223f1461051a5780635c975abb1461052d57600080fd5b806338f23b0b1161024557806338f23b0b146104d95780633f4ba83a146104ec57806340c10f19146104f457600080fd5b8063360b8ed91461044c578063372500ab146104aa578063389ed267146104b257600080fd5b8063217a4b70116102cd578063309756fb116102a7578063309756fb146103ef578063313ce5671461041657806332ad9be81461042557600080fd5b8063217a4b701461039e57806323b872dd146103c95780632f2ff15d146103dc57600080fd5b8063095ea7b3116102fe578063095ea7b31461034d57806318160ddd146103705780631e4e00911461038b57600080fd5b806305dbb5e01461031a57806306fdde031461032f575b600080fd5b61032d6103283660046134bd565b610785565b005b61033761091f565b604051610344919061350d565b60405180910390f35b61036061035b3660046134bd565b6109ad565b6040519015158152602001610344565b6007546001600160801b03165b604051908152602001610344565b61032d610399366004613540565b610a1a565b6005546103b1906001600160a01b031681565b6040516001600160a01b039091168152602001610344565b6103606103d7366004613562565b610a9f565b61032d6103ea3660046135a3565b610cbc565b61037d7f265b220c5a8891efdd9e1b1b7fa72f257bd5169f8d87e319cf3dad6ff52b94ae81565b60405160068152602001610344565b61037d7f7408fdc0d31c7bcb349eab611f5d1168acd4303574993f8cdc98b1cd18c41cae81565b61048561045a3660046135d3565b600e602052600090815260409020805460018201546002909201546001600160a01b03909116919083565b604080516001600160a01b039094168452602084019290925290820152606001610344565b61037d610d6b565b61037d7f139c2898040ef16910dc9f44dc697df79363da767d8bc92f2e310312b816e46d81565b61032d6104e7366004613540565b611049565b61032d61115d565b61032d6105023660046134bd565b6111fa565b61032d6105153660046135f7565b611298565b61032d6105283660046135d3565b611371565b600a546103609060ff1681565b61032d61155f565b61037d6105503660046135d3565b60086020526000908152604090205481565b61037d600c5481565b6006546103b1906001600160a01b031681565b61037d7f114e74f6ea3bd819998f78687bfcb11b140da08e9b7d222fa9c1f1ba1f2aa12281565b61032d6116c6565b61032d6105bb3660046135f7565b611761565b600d546105d3906001600160801b031681565b6040516001600160801b039091168152602001610344565b61037d600b5481565b610360610602366004613610565b6117f2565b61032d6106153660046135f7565b611b0d565b61032d610628366004613656565b611cf0565b610337611f52565b60065461065090600160a01b900467ffffffffffffffff1681565b60405167ffffffffffffffff9091168152602001610344565b61032d610677366004613656565b611f5f565b61036061068a3660046134bd565b612111565b61036061069d3660046134bd565b600060208181529281526040808220909352908152205460ff1681565b61032d6106c83660046135f7565b61232c565b61032d6106db3660046135a3565b612420565b61037d6106ee36600461368b565b600960209081526000928352604080842090915290825290205481565b61032d610719366004613656565b6124be565b61032d61072c3660046135d3565b6125b9565b6103376128a9565b61032d6107473660046134bd565b6128b6565b61037d61075a3660046135d3565b612ad0565b61036061076d366004613562565b612b6f565b61032d6107803660046136b9565b612d9f565b600a5460ff16156107a95760405163ab35696f60e01b815260040160405180910390fd5b3373feec000000000000000000000000000000000000146107c957600080fd5b6001600160a01b0382166107dc57600080fd5b6001600160a01b03821660009081526008602052604090205481111561085e576001600160a01b038216600090815260086020526040908190205490517f832f98b50000000000000000000000000000000000000000000000000000000081526004810191909152602481018290523060448201526064015b60405180910390fd5b600061086983612f27565b90506001600160a01b038116156108bd57600d80548391906000906108989084906001600160801b0316613712565b92506101000a8154816001600160801b0302191690836001600160801b031602179055505b506001600160a01b0390911660009081526008602052604081208054839003905573feec00000000000000000000000000000000000090527ffe9f059231087294c19e08742d222f13345d2d0f1bb02bf7b0068d0dfaf7db2c80549091019055565b6002805461092c90613739565b80601f016020809104026020016040519081016040528092919081815260200182805461095890613739565b80156109a55780601f1061097a576101008083540402835291602001916109a5565b820191906000526020600020905b81548152906001019060200180831161098857829003601f168201915b505050505081565b3360008181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610a089086815260200190565b60405180910390a35060015b92915050565b6000828152600160209081526040808320543384528383528184208185529092529091205460ff16610a5e576040516282b42960e81b815260040160405180910390fd5b600083815260016020526040808220849055513391849186917f70d85637458e639f63e6106179309eadde21dacce320d9549168d49d0a9d698291a4505050565b600a5460009060ff1615610ac65760405163ab35696f60e01b815260040160405180910390fd5b826001600160a01b0381161580610afa57506b20c0000000000000000000006bffffffffffffffffffffffff604083901c16145b15610b31576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600654604051632ad08bcf60e11b8152600160a01b90910467ffffffffffffffff1660048201526001600160a01b038087166024830152869186917f000000000000000000000000000000000000000000000000000000000000000016906355a1179e90604401602060405180830381865afa158015610bb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd99190613786565b1580610c865750600654604051632ad08bcf60e11b8152600160a01b90910467ffffffffffffffff1660048201526001600160a01b0382811660248301527f000000000000000000000000000000000000000000000000000000000000000016906355a1179e90604401602060405180830381865afa158015610c60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c849190613786565b155b15610ca4576040516354cfe65960e01b815260040160405180910390fd5b610caf878787613006565b5060019695505050505050565b6000828152600160209081526040808320543384528383528184208185529092529091205460ff16610d00576040516282b42960e81b815260040160405180910390fd5b6001600160a01b038216600081815260208181526040808320878452825291829020805460ff19166001908117909155915191825233929186917f4811f35680ba814bed6b0b926a2949c8a1000f4f2443cfe9978745d46a251aec91015b60405180910390a4505050565b600a5460009060ff1615610d925760405163ab35696f60e01b815260040160405180910390fd5b600654604051632ad08bcf60e11b8152600160a01b90910467ffffffffffffffff1660048201523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906355a1179e90604401602060405180830381865afa158015610e10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e349190613786565b1580610edf5750600654604051632ad08bcf60e11b8152600160a01b90910467ffffffffffffffff1660048201523360248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906355a1179e90604401602060405180830381865afa158015610eb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610edd9190613786565b155b15610efd576040516354cfe65960e01b815260040160405180910390fd5b610f0633612f27565b50336000908152600e6020908152604080832060020154308452600890925290912054818111610f365780610f38565b815b336000908152600e6020526040812060020180549295508592909190610f5f9084906137a8565b90915550503060009081526008602052604081208054859290610f839084906137a8565b9091555050336000908152600e60205260409020546001600160a01b031615610fe957600d8054849190600090610fc49084906001600160801b03166137bb565b92506101000a8154816001600160801b0302191690836001600160801b031602179055505b33600090815260086020526040812080548592906110089084906137db565b9091555050604051838152339030907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505090565b336000908152602081815260408083207f114e74f6ea3bd819998f78687bfcb11b140da08e9b7d222fa9c1f1ba1f2aa12280855292529091205460ff166110a2576040516282b42960e81b815260040160405180910390fd5b6110ae336000856130c5565b600780546001600160801b03808216869003167fffffffffffffffffffffffffffffffff00000000000000000000000000000000909116179055604051838152829060009033907f57bc7354aa85aed339e000bccffabbc529466af35f0772c8f8ee1145927de7f09060200160405180910390a460405183815233907fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5906020015b60405180910390a2505050565b336000908152602081815260408083207f265b220c5a8891efdd9e1b1b7fa72f257bd5169f8d87e319cf3dad6ff52b94ae80855292529091205460ff166111b6576040516282b42960e81b815260040160405180910390fd5b600a805460ff191690556040516000815233907ff79595a776ff71356be9e7ff196226a16d0f4d637ff39031256c0eafd7af6b5e906020015b60405180910390a250565b336000908152602081815260408083207f114e74f6ea3bd819998f78687bfcb11b140da08e9b7d222fa9c1f1ba1f2aa12280855292529091205460ff16611253576040516282b42960e81b815260040160405180910390fd5b61125d838361329e565b826001600160a01b03167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968858360405161115091815260200190565b336000908152602081815260408083207f114e74f6ea3bd819998f78687bfcb11b140da08e9b7d222fa9c1f1ba1f2aa12280855292529091205460ff166112f1576040516282b42960e81b815260040160405180910390fd5b6112fd336000846130c5565b600780546001600160801b03808216859003167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090911617905560405182815233907fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5906020015b60405180910390a25050565b3360009081526020818152604080832083805290915281205460ff166113a9576040516282b42960e81b815260040160405180910390fd5b604080518082018252600381527f5553440000000000000000000000000000000000000000000000000000000000602090910152517fc4ae21aac0c6549d71dd96035b7e0bdb6c79ebdba8891b666115bc976d16a29e9061140c906004906137ee565b6040518091039020036114fa576040518060400160405280600381526020017f555344000000000000000000000000000000000000000000000000000000000081525080519060200120826001600160a01b031663e5a6b10f6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611494573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526114bc91908101906138d7565b80519060200120146114fa576040517fd15b4fe200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03841690811790915560405133907f509c22f85ddeb1f3a347c45d225acd96afb87104e38b781e22a9376f0842a83a90600090a35050565b3360009081526020818152604080832083805290915281205460ff16611597576040516282b42960e81b815260040160405180910390fd5b6006546001600160a01b03165b6001600160a01b0381161561165e57306001600160a01b038216036115f5576040517fd15b4fe200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806001600160a01b031663217a4b706040518163ffffffff1660e01b8152600401602060405180830381865afa158015611633573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116579190613984565b90506115a4565b600654600580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216918217905560405133907fa2bc96949c0ac82a2c9b213d46c45d745e1e2567d1496b5e117d9c808ef004f390600090a35050565b336000908152602081815260408083207f139c2898040ef16910dc9f44dc697df79363da767d8bc92f2e310312b816e46d80855292529091205460ff1661171f576040516282b42960e81b815260040160405180910390fd5b600a805460ff1916600190811790915560405190815233907ff79595a776ff71356be9e7ff196226a16d0f4d637ff39031256c0eafd7af6b5e906020016111ef565b33600090815260208181526040808320848452909152902054819060ff1661179b576040516282b42960e81b815260040160405180910390fd5b336000818152602081815260408083208684528252808320805460ff1916905551918252829185917f4811f35680ba814bed6b0b926a2949c8a1000f4f2443cfe9978745d46a251aec910160405180910390a45050565b600a5460009060ff16156118195760405163ab35696f60e01b815260040160405180910390fd5b836001600160a01b038116158061184d57506b20c0000000000000000000006bffffffffffffffffffffffff604083901c16145b15611884576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600654604051632ad08bcf60e11b8152600160a01b90910467ffffffffffffffff1660048201526001600160a01b038088166024830152879187917f000000000000000000000000000000000000000000000000000000000000000016906355a1179e90604401602060405180830381865afa158015611908573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192c9190613786565b15806119d95750600654604051632ad08bcf60e11b8152600160a01b90910467ffffffffffffffff1660048201526001600160a01b0382811660248301527f000000000000000000000000000000000000000000000000000000000000000016906355a1179e90604401602060405180830381865afa1580156119b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d79190613786565b155b156119f7576040516354cfe65960e01b815260040160405180910390fd5b6001600160a01b038816600090815260096020908152604080832033845290915290205480871115611a55576040517f13be252b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611aa5576001600160a01b0389166000908152600960209081526040808320338452909152902087820390555b611ab08989896130c5565b85886001600160a01b03168a6001600160a01b03167f57bc7354aa85aed339e000bccffabbc529466af35f0772c8f8ee1145927de7f08a604051611af691815260200190565b60405180910390a450600198975050505050505050565b600a5460ff1615611b315760405163ab35696f60e01b815260040160405180910390fd5b80600003611b6b576040517f2c5211c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600654604051632ad08bcf60e11b8152600160a01b90910467ffffffffffffffff1660048201523360248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906355a1179e90604401602060405180830381865afa158015611be9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c0d9190613786565b611c2a576040516354cfe65960e01b815260040160405180910390fd5b611c353330836130c5565b600d546001600160801b0316600003611c7a576040517fe845980e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600d546000906001600160801b0316611c9b670de0b6b3a7640000846139a1565b611ca591906139b8565b905080600c6000828254611cb991906137db565b909155505060405182815233907fe34918ff1c7084970068b53fd71ad6d8b04e9f15d3886cbf006443e6cdc52ea690602001611365565b600a5460ff1615611d145760405163ab35696f60e01b815260040160405180910390fd5b826001600160a01b0381161580611d4857506b20c0000000000000000000006bffffffffffffffffffffffff604083901c16145b15611d7f576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600654604051632ad08bcf60e11b8152600160a01b90910467ffffffffffffffff16600482015233602482018190529085907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906355a1179e90604401602060405180830381865afa158015611e02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e269190613786565b1580611ed35750600654604051632ad08bcf60e11b8152600160a01b90910467ffffffffffffffff1660048201526001600160a01b0382811660248301527f000000000000000000000000000000000000000000000000000000000000000016906355a1179e90604401602060405180830381865afa158015611ead573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ed19190613786565b155b15611ef1576040516354cfe65960e01b815260040160405180910390fd5b611efc3387876130c5565b83866001600160a01b0316336001600160a01b03167f57bc7354aa85aed339e000bccffabbc529466af35f0772c8f8ee1145927de7f088604051611f4291815260200190565b60405180910390a4505050505050565b6003805461092c90613739565b3373feec00000000000000000000000000000000000014611f7f57600080fd5b6001600160a01b038316611f9257600080fd5b73feec00000000000000000000000000000000000060005260086020527ffe9f059231087294c19e08742d222f13345d2d0f1bb02bf7b0068d0dfaf7db2c548083111561201b576040517f832f98b50000000000000000000000000000000000000000000000000000000081526004810182905260248101849052306044820152606401610855565b600061202685612f27565b90506001600160a01b0381161561207a57600d80548591906000906120559084906001600160801b03166137bb565b92506101000a8154816001600160801b0302191690836001600160801b031602179055505b600860209081527ffe9f059231087294c19e08742d222f13345d2d0f1bb02bf7b0068d0dfaf7db2c805486900390556001600160a01b03861660008181526040908190208054880190555185815273feec000000000000000000000000000000000000927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91015b60405180910390a35050505050565b600a5460009060ff16156121385760405163ab35696f60e01b815260040160405180910390fd5b826001600160a01b038116158061216c57506b20c0000000000000000000006bffffffffffffffffffffffff604083901c16145b156121a3576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600654604051632ad08bcf60e11b8152600160a01b90910467ffffffffffffffff16600482015233602482018190529085907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906355a1179e90604401602060405180830381865afa158015612226573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061224a9190613786565b15806122f75750600654604051632ad08bcf60e11b8152600160a01b90910467ffffffffffffffff1660048201526001600160a01b0382811660248301527f000000000000000000000000000000000000000000000000000000000000000016906355a1179e90604401602060405180830381865afa1580156122d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122f59190613786565b155b15612315576040516354cfe65960e01b815260040160405180910390fd5b6123203387876130c5565b50600195945050505050565b3360009081526020818152604080832083805290915281205460ff16612364576040516282b42960e81b815260040160405180910390fd5b6007546001600160801b03168210156123a9576040517fc0d76d9200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160801b038211156123ea576040517ff58f733a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600b829055604051829033907f6d7e6630766134be7e051b11b8882e6f47926ddd2fd1268bebd168c30f055c4f90600090a35050565b6000828152600160209081526040808320543384528383528184208185529092529091205460ff16612464576040516282b42960e81b815260040160405180910390fd5b6001600160a01b0382166000818152602081815260408083208784528252808320805460ff191690555191825233929186917f4811f35680ba814bed6b0b926a2949c8a1000f4f2443cfe9978745d46a251aec9101610d5e565b336000908152602081815260408083207f114e74f6ea3bd819998f78687bfcb11b140da08e9b7d222fa9c1f1ba1f2aa12280855292529091205460ff16612517576040516282b42960e81b815260040160405180910390fd5b612521848461329e565b81846001600160a01b031660006001600160a01b03167f57bc7354aa85aed339e000bccffabbc529466af35f0772c8f8ee1145927de7f08660405161256891815260200190565b60405180910390a4836001600160a01b03167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885846040516125ab91815260200190565b60405180910390a250505050565b600a5460ff16156125dd5760405163ab35696f60e01b815260040160405180910390fd5b6001600160a01b0381161561275957600654604051632ad08bcf60e11b8152600160a01b90910467ffffffffffffffff1660048201523360248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906355a1179e90604401602060405180830381865afa15801561266a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061268e9190613786565b158061273b5750600654604051632ad08bcf60e11b8152600160a01b90910467ffffffffffffffff1660048201526001600160a01b0382811660248301527f000000000000000000000000000000000000000000000000000000000000000016906355a1179e90604401602060405180830381865afa158015612715573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127399190613786565b155b15612759576040516354cfe65960e01b815260040160405180910390fd5b600061276433612f27565b90506001600160a01b038116156127d9576001600160a01b0382166127d45733600090815260086020526040812054600d8054919290916127af9084906001600160801b0316613712565b92506101000a8154816001600160801b0302191690836001600160801b031602179055505b612839565b6001600160a01b038216156128395733600090815260086020526040812054600d8054919290916128149084906001600160801b03166137bb565b92506101000a8154816001600160801b0302191690836001600160801b031602179055505b336000818152600e602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03871690811790915590519092917fbbf8c20751167a65b38d4dd87c3eba00bfae01d85fb809a89eee1ba842673b9891a35050565b6004805461092c90613739565b336000908152602081815260408083207f7408fdc0d31c7bcb349eab611f5d1168acd4303574993f8cdc98b1cd18c41cae80855292529091205460ff1661290f576040516282b42960e81b815260040160405180910390fd5b6001600160a01b03831673feec000000000000000000000000000000000000148061295657506001600160a01b03831673dec0000000000000000000000000000000000000145b1561298d576040517fe132007900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600654604051632ad08bcf60e11b8152600160a01b90910467ffffffffffffffff1660048201526001600160a01b0384811660248301527f000000000000000000000000000000000000000000000000000000000000000016906355a1179e90604401602060405180830381865afa158015612a0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a319190613786565b15612a4f576040516354cfe65960e01b815260040160405180910390fd5b612a5b836000846130c5565b600780546001600160801b03808216859003167fffffffffffffffffffffffffffffffff000000000000000000000000000000009091161790556040518281526001600160a01b038416907feff07194896bfa6254e521809f217f70dbdd9cefa6b894f5326af3ce8402c32090602001611150565b6001600160a01b038082166000818152600e602052604090206002810154815490939192911603612b69576001600160a01b0383166000908152600860205260409020548015612b675760008260010154600c54612b2e91906137a8565b90508015612b65576000670de0b6b3a7640000612b4b83856139a1565b612b5591906139b8565b9050612b6181866137db565b9450505b505b505b50919050565b600a5460009060ff1615612b965760405163ab35696f60e01b815260040160405180910390fd5b826001600160a01b0381161580612bca57506b20c0000000000000000000006bffffffffffffffffffffffff604083901c16145b15612c01576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600654604051632ad08bcf60e11b8152600160a01b90910467ffffffffffffffff1660048201526001600160a01b038087166024830152869186917f000000000000000000000000000000000000000000000000000000000000000016906355a1179e90604401602060405180830381865afa158015612c85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ca99190613786565b1580612d565750600654604051632ad08bcf60e11b8152600160a01b90910467ffffffffffffffff1660048201526001600160a01b0382811660248301527f000000000000000000000000000000000000000000000000000000000000000016906355a1179e90604401602060405180830381865afa158015612d30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d549190613786565b155b15612d74576040516354cfe65960e01b815260040160405180910390fd5b3373feec00000000000000000000000000000000000014612d9457600080fd5b610caf8787876130c5565b3360009081526020818152604080832083805290915281205460ff16612dd7576040516282b42960e81b815260040160405180910390fd5b6040517f330f563700000000000000000000000000000000000000000000000000000000815267ffffffffffffffff831660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063330f563790602401602060405180830381865afa158015612e5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e829190613786565b612eb8576040517f7b94a16b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600680547fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff16600160a01b67ffffffffffffffff85169081029190911790915560405133907fa870ab07b4f8e8e92e8876245ea0ec666bc09ccf6814a1fb6a8e6984b1932cce90600090a35050565b6001600160a01b038082166000908152600e602052604081208054600c54600190920154931692909190612f5b90836137a8565b90508015612b67576001600160a01b03831615612fe1576001600160a01b038416600090815260086020526040812054670de0b6b3a764000090612fa09084906139a1565b612faa91906139b8565b6001600160a01b0385166000908152600e6020526040812060020180549293508392909190612fda9084906137db565b9091555050505b6001600160a01b0384166000908152600e602052604090206001018290555050919050565b6001600160a01b038316600090815260096020908152604080832033845290915290205480821115613064576040517f13be252b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146130b4576001600160a01b0384166000908152600960209081526040808320338452909152902082820390555b6130bf8484846130c5565b50505050565b6001600160a01b038316600090815260086020526040902054811115613142576001600160a01b038316600090815260086020526040908190205490517f832f98b5000000000000000000000000000000000000000000000000000000008152600481019190915260248101829052306044820152606401610855565b600061314d84612f27565b9050600061315a84612f27565b90506001600160a01b038216156131c1576001600160a01b0381166131bc57600d80548491906000906131979084906001600160801b0316613712565b92506101000a8154816001600160801b0302191690836001600160801b031602179055505b613213565b6001600160a01b0381161561321357600d80548491906000906131ee9084906001600160801b03166137bb565b92506101000a8154816001600160801b0302191690836001600160801b031602179055505b6001600160a01b03808616600090815260086020526040902080548590039055841615613259576001600160a01b03841660009081526008602052604090208054840190555b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161210291815260200190565b600654604051632ad08bcf60e11b8152600160a01b90910467ffffffffffffffff1660048201526001600160a01b0383811660248301527f000000000000000000000000000000000000000000000000000000000000000016906355a1179e90604401602060405180830381865afa15801561331e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133429190613786565b61335f576040516354cfe65960e01b815260040160405180910390fd5b600b546007546133799083906001600160801b03166137db565b11156133b1576040517ff58f733a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006133bc83612f27565b90506001600160a01b0381161561341057600d80548391906000906133eb9084906001600160801b03166137bb565b92506101000a8154816001600160801b0302191690836001600160801b031602179055505b600780546001600160801b038082168501167fffffffffffffffffffffffffffffffff000000000000000000000000000000009091161790556001600160a01b038316600081815260086020526040808220805486019055517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906134989086815260200190565b60405180910390a3505050565b6001600160a01b03811681146134ba57600080fd5b50565b600080604083850312156134d057600080fd5b82356134db816134a5565b946020939093013593505050565b60005b838110156135045781810151838201526020016134ec565b50506000910152565b602081526000825180602084015261352c8160408501602087016134e9565b601f01601f19169190910160400192915050565b6000806040838503121561355357600080fd5b50508035926020909101359150565b60008060006060848603121561357757600080fd5b8335613582816134a5565b92506020840135613592816134a5565b929592945050506040919091013590565b600080604083850312156135b657600080fd5b8235915060208301356135c8816134a5565b809150509250929050565b6000602082840312156135e557600080fd5b81356135f0816134a5565b9392505050565b60006020828403121561360957600080fd5b5035919050565b6000806000806080858703121561362657600080fd5b8435613631816134a5565b93506020850135613641816134a5565b93969395505050506040820135916060013590565b60008060006060848603121561366b57600080fd5b8335613676816134a5565b95602085013595506040909401359392505050565b6000806040838503121561369e57600080fd5b82356136a9816134a5565b915060208301356135c8816134a5565b6000602082840312156136cb57600080fd5b813567ffffffffffffffff811681146135f057600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6001600160801b03828116828216039080821115613732576137326136e3565b5092915050565b600181811c9082168061374d57607f821691505b602082108103612b69577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006020828403121561379857600080fd5b815180151581146135f057600080fd5b81810381811115610a1457610a146136e3565b6001600160801b03818116838216019080821115613732576137326136e3565b80820180821115610a1457610a146136e3565b60008083548160018260011c9150600183168061380c57607f831692505b60208084108203613844577f4e487b710000000000000000000000000000000000000000000000000000000086526022600452602486fd5b818015613858576001811461386d5761389a565b60ff198616895284151585028901965061389a565b60008a81526020902060005b868110156138925781548b820152908501908301613879565b505084890196505b509498975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156138e957600080fd5b815167ffffffffffffffff8082111561390157600080fd5b818401915084601f83011261391557600080fd5b815181811115613927576139276138a8565b604051601f8201601f19908116603f0116810190838211818310171561394f5761394f6138a8565b8160405282815287602084870101111561396857600080fd5b6139798360208301602088016134e9565b979650505050505050565b60006020828403121561399657600080fd5b81516135f0816134a5565b8082028115828204841417610a1457610a146136e3565b6000826139ee577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea2646970667358221220fff81b52022389d26004543aca003eb1c32a39e32ebb91946ab01e86f448078964736f6c63430008160033",
1251
+ "linkReferences": {},
1252
+ "deployedLinkReferences": {}
1253
+ }