@ensuro/core 2.7.0 → 2.8.0-beta2

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 (79) hide show
  1. package/README.md +13 -7
  2. package/contracts/AccessManager.sol +3 -13
  3. package/contracts/EToken.sol +29 -95
  4. package/contracts/LPManualWhitelist.sol +11 -26
  5. package/contracts/LiquidityThresholdAssetManager.sol +10 -21
  6. package/contracts/Policy.sol +10 -20
  7. package/contracts/PolicyPool.sol +110 -127
  8. package/contracts/PolicyPoolComponent.sol +9 -32
  9. package/contracts/PremiumsAccount.sol +41 -47
  10. package/contracts/Reserve.sol +10 -16
  11. package/contracts/RiskModule.sol +74 -83
  12. package/contracts/SignedBucketRiskModule.sol +18 -80
  13. package/contracts/SignedQuoteRiskModule.sol +13 -44
  14. package/contracts/TieredSignedQuoteRiskModule.sol +7 -13
  15. package/contracts/TimeScaled.sol +8 -39
  16. package/contracts/TrustfulRiskModule.sol +47 -42
  17. package/contracts/interfaces/IAccessManager.sol +2 -11
  18. package/contracts/interfaces/IEToken.sol +1 -5
  19. package/contracts/interfaces/ILPWhitelist.sol +2 -10
  20. package/contracts/interfaces/IPolicyHolder.sol +2 -11
  21. package/contracts/interfaces/IPolicyPool.sol +59 -3
  22. package/contracts/interfaces/IPremiumsAccount.sol +17 -5
  23. package/contracts/migration/LPManualWhitelistV20.sol +3 -15
  24. package/contracts/migration/LPManualWhitelistV20Upgraded.sol +1 -5
  25. package/contracts/mocks/FixedRateVault.sol +1 -6
  26. package/contracts/mocks/InterfaceIdCalculator.sol +2 -0
  27. package/contracts/mocks/PolicyHolderMock.sol +3 -13
  28. package/contracts/mocks/PolicyPoolComponentMock.sol +1 -3
  29. package/contracts/mocks/PolicyPoolMock.sol +25 -25
  30. package/contracts/mocks/RiskModuleMock.sol +39 -16
  31. package/contracts/mocks/TestNFT.sol +1 -1
  32. package/js/deploy.js +44 -39
  33. package/js/test-utils.js +30 -19
  34. package/js/utils.js +62 -29
  35. package/package.json +1 -1
  36. package/scripts/utils.sh +23 -12
  37. package/build/contracts/AccessManager.sol/AccessManager.json +0 -618
  38. package/build/contracts/ERC4626AssetManager.sol/ERC4626AssetManager.json +0 -238
  39. package/build/contracts/EToken.sol/EToken.json +0 -1277
  40. package/build/contracts/LPManualWhitelist.sol/LPManualWhitelist.json +0 -647
  41. package/build/contracts/LiquidityThresholdAssetManager.sol/LiquidityThresholdAssetManager.json +0 -222
  42. package/build/contracts/Policy.sol/Policy.json +0 -10
  43. package/build/contracts/PolicyPool.sol/PolicyPool.json +0 -1416
  44. package/build/contracts/PolicyPoolComponent.sol/PolicyPoolComponent.json +0 -332
  45. package/build/contracts/PremiumsAccount.sol/PremiumsAccount.json +0 -970
  46. package/build/contracts/Reserve.sol/Reserve.json +0 -403
  47. package/build/contracts/RiskModule.sol/RiskModule.json +0 -559
  48. package/build/contracts/SignedBucketRiskModule.sol/SignedBucketRiskModule.json +0 -1262
  49. package/build/contracts/SignedQuoteRiskModule.sol/SignedQuoteRiskModule.json +0 -1110
  50. package/build/contracts/TieredSignedQuoteRiskModule.sol/TieredSignedQuoteRiskModule.json +0 -1316
  51. package/build/contracts/TimeScaled.sol/TimeScaled.json +0 -10
  52. package/build/contracts/TrustfulRiskModule.sol/TrustfulRiskModule.json +0 -984
  53. package/build/contracts/dependencies/ERC1967Proxy.sol/ERC1967Proxy.json +0 -64
  54. package/build/contracts/dependencies/IERC20Metadata.sol/IERC20Metadata.json +0 -233
  55. package/build/contracts/dependencies/WadRayMath.sol/WadRayMath.json +0 -10
  56. package/build/contracts/interfaces/IAccessManager.sol/IAccessManager.json +0 -343
  57. package/build/contracts/interfaces/IAssetManager.sol/IAssetManager.json +0 -128
  58. package/build/contracts/interfaces/IEToken.sol/IEToken.json +0 -460
  59. package/build/contracts/interfaces/ILPWhitelist.sol/ILPWhitelist.json +0 -103
  60. package/build/contracts/interfaces/IPolicyHolder.sol/IPolicyHolder.json +0 -108
  61. package/build/contracts/interfaces/IPolicyPool.sol/IPolicyPool.json +0 -501
  62. package/build/contracts/interfaces/IPolicyPoolComponent.sol/IPolicyPoolComponent.json +0 -43
  63. package/build/contracts/interfaces/IPremiumsAccount.sol/IPremiumsAccount.json +0 -315
  64. package/build/contracts/interfaces/IRiskModule.sol/IRiskModule.json +0 -165
  65. package/build/contracts/migration/LPManualWhitelistV20.sol/LPManualWhitelistV20.json +0 -481
  66. package/build/contracts/migration/LPManualWhitelistV20Upgraded.sol/LPManualWhitelistV20Upgraded.json +0 -492
  67. package/build/contracts/mocks/FixedRateVault.sol/FixedRateVault.json +0 -736
  68. package/build/contracts/mocks/ForwardProxy.sol/ForwardProxy.json +0 -43
  69. package/build/contracts/mocks/IMintableERC20.sol/IMintableERC20.json +0 -47
  70. package/build/contracts/mocks/InterfaceIdCalculator.sol/InterfaceIdCalculator.json +0 -180
  71. package/build/contracts/mocks/PolicyHolderMock.sol/PolicyHolderMock.json +0 -319
  72. package/build/contracts/mocks/PolicyPoolComponentMock.sol/PolicyPoolComponentMock.json +0 -54
  73. package/build/contracts/mocks/PolicyPoolMock.sol/PolicyPoolMock.json +0 -721
  74. package/build/contracts/mocks/PolicyPoolMock.sol/PolicyPoolMockForward.json +0 -92
  75. package/build/contracts/mocks/RiskModuleMock.sol/RiskModuleMock.json +0 -783
  76. package/build/contracts/mocks/TestCurrency.sol/TestCurrency.json +0 -343
  77. package/build/contracts/mocks/TestNFT.sol/TestNFT.json +0 -388
  78. package/contracts/dependencies/ERC1967Proxy.sol +0 -19
  79. package/contracts/dependencies/IERC20Metadata.sol +0 -19
@@ -1,492 +0,0 @@
1
- {
2
- "_format": "hh-sol-artifact-1",
3
- "contractName": "LPManualWhitelistV20Upgraded",
4
- "sourceName": "contracts/migration/LPManualWhitelistV20Upgraded.sol",
5
- "abi": [
6
- {
7
- "inputs": [
8
- {
9
- "internalType": "contract IPolicyPool",
10
- "name": "policyPool_",
11
- "type": "address"
12
- }
13
- ],
14
- "stateMutability": "nonpayable",
15
- "type": "constructor"
16
- },
17
- {
18
- "anonymous": false,
19
- "inputs": [
20
- {
21
- "indexed": false,
22
- "internalType": "address",
23
- "name": "previousAdmin",
24
- "type": "address"
25
- },
26
- {
27
- "indexed": false,
28
- "internalType": "address",
29
- "name": "newAdmin",
30
- "type": "address"
31
- }
32
- ],
33
- "name": "AdminChanged",
34
- "type": "event"
35
- },
36
- {
37
- "anonymous": false,
38
- "inputs": [
39
- {
40
- "indexed": true,
41
- "internalType": "address",
42
- "name": "beacon",
43
- "type": "address"
44
- }
45
- ],
46
- "name": "BeaconUpgraded",
47
- "type": "event"
48
- },
49
- {
50
- "anonymous": false,
51
- "inputs": [
52
- {
53
- "indexed": true,
54
- "internalType": "enum IAccessManager.GovernanceActions",
55
- "name": "action",
56
- "type": "uint8"
57
- },
58
- {
59
- "indexed": false,
60
- "internalType": "address",
61
- "name": "value",
62
- "type": "address"
63
- }
64
- ],
65
- "name": "ComponentChanged",
66
- "type": "event"
67
- },
68
- {
69
- "anonymous": false,
70
- "inputs": [
71
- {
72
- "indexed": true,
73
- "internalType": "enum IAccessManager.GovernanceActions",
74
- "name": "action",
75
- "type": "uint8"
76
- },
77
- {
78
- "indexed": false,
79
- "internalType": "uint256",
80
- "name": "value",
81
- "type": "uint256"
82
- }
83
- ],
84
- "name": "GovernanceAction",
85
- "type": "event"
86
- },
87
- {
88
- "anonymous": false,
89
- "inputs": [
90
- {
91
- "indexed": false,
92
- "internalType": "uint8",
93
- "name": "version",
94
- "type": "uint8"
95
- }
96
- ],
97
- "name": "Initialized",
98
- "type": "event"
99
- },
100
- {
101
- "anonymous": false,
102
- "inputs": [
103
- {
104
- "indexed": false,
105
- "internalType": "address",
106
- "name": "provider",
107
- "type": "address"
108
- },
109
- {
110
- "indexed": false,
111
- "internalType": "bool",
112
- "name": "whitelisted",
113
- "type": "bool"
114
- }
115
- ],
116
- "name": "LPWhitelisted",
117
- "type": "event"
118
- },
119
- {
120
- "anonymous": false,
121
- "inputs": [
122
- {
123
- "indexed": false,
124
- "internalType": "address",
125
- "name": "account",
126
- "type": "address"
127
- }
128
- ],
129
- "name": "Paused",
130
- "type": "event"
131
- },
132
- {
133
- "anonymous": false,
134
- "inputs": [
135
- {
136
- "indexed": false,
137
- "internalType": "address",
138
- "name": "account",
139
- "type": "address"
140
- }
141
- ],
142
- "name": "Unpaused",
143
- "type": "event"
144
- },
145
- {
146
- "anonymous": false,
147
- "inputs": [
148
- {
149
- "indexed": true,
150
- "internalType": "address",
151
- "name": "implementation",
152
- "type": "address"
153
- }
154
- ],
155
- "name": "Upgraded",
156
- "type": "event"
157
- },
158
- {
159
- "inputs": [],
160
- "name": "GUARDIAN_ROLE",
161
- "outputs": [
162
- {
163
- "internalType": "bytes32",
164
- "name": "",
165
- "type": "bytes32"
166
- }
167
- ],
168
- "stateMutability": "view",
169
- "type": "function"
170
- },
171
- {
172
- "inputs": [],
173
- "name": "LEVEL1_ROLE",
174
- "outputs": [
175
- {
176
- "internalType": "bytes32",
177
- "name": "",
178
- "type": "bytes32"
179
- }
180
- ],
181
- "stateMutability": "view",
182
- "type": "function"
183
- },
184
- {
185
- "inputs": [],
186
- "name": "LEVEL2_ROLE",
187
- "outputs": [
188
- {
189
- "internalType": "bytes32",
190
- "name": "",
191
- "type": "bytes32"
192
- }
193
- ],
194
- "stateMutability": "view",
195
- "type": "function"
196
- },
197
- {
198
- "inputs": [],
199
- "name": "LEVEL3_ROLE",
200
- "outputs": [
201
- {
202
- "internalType": "bytes32",
203
- "name": "",
204
- "type": "bytes32"
205
- }
206
- ],
207
- "stateMutability": "view",
208
- "type": "function"
209
- },
210
- {
211
- "inputs": [],
212
- "name": "LP_WHITELIST_ROLE",
213
- "outputs": [
214
- {
215
- "internalType": "bytes32",
216
- "name": "",
217
- "type": "bytes32"
218
- }
219
- ],
220
- "stateMutability": "view",
221
- "type": "function"
222
- },
223
- {
224
- "inputs": [],
225
- "name": "TWEAK_EXPIRATION",
226
- "outputs": [
227
- {
228
- "internalType": "uint40",
229
- "name": "",
230
- "type": "uint40"
231
- }
232
- ],
233
- "stateMutability": "view",
234
- "type": "function"
235
- },
236
- {
237
- "inputs": [
238
- {
239
- "internalType": "contract IEToken",
240
- "name": "",
241
- "type": "address"
242
- },
243
- {
244
- "internalType": "address",
245
- "name": "provider",
246
- "type": "address"
247
- },
248
- {
249
- "internalType": "uint256",
250
- "name": "",
251
- "type": "uint256"
252
- }
253
- ],
254
- "name": "acceptsDeposit",
255
- "outputs": [
256
- {
257
- "internalType": "bool",
258
- "name": "",
259
- "type": "bool"
260
- }
261
- ],
262
- "stateMutability": "view",
263
- "type": "function"
264
- },
265
- {
266
- "inputs": [
267
- {
268
- "internalType": "contract IEToken",
269
- "name": "",
270
- "type": "address"
271
- },
272
- {
273
- "internalType": "address",
274
- "name": "",
275
- "type": "address"
276
- },
277
- {
278
- "internalType": "address",
279
- "name": "providerTo",
280
- "type": "address"
281
- },
282
- {
283
- "internalType": "uint256",
284
- "name": "",
285
- "type": "uint256"
286
- }
287
- ],
288
- "name": "acceptsTransfer",
289
- "outputs": [
290
- {
291
- "internalType": "bool",
292
- "name": "",
293
- "type": "bool"
294
- }
295
- ],
296
- "stateMutability": "view",
297
- "type": "function"
298
- },
299
- {
300
- "inputs": [
301
- {
302
- "internalType": "contract IEToken",
303
- "name": "etk",
304
- "type": "address"
305
- },
306
- {
307
- "internalType": "address",
308
- "name": "provider",
309
- "type": "address"
310
- },
311
- {
312
- "internalType": "uint256",
313
- "name": "amount",
314
- "type": "uint256"
315
- }
316
- ],
317
- "name": "acceptsWithdrawal",
318
- "outputs": [
319
- {
320
- "internalType": "bool",
321
- "name": "",
322
- "type": "bool"
323
- }
324
- ],
325
- "stateMutability": "view",
326
- "type": "function"
327
- },
328
- {
329
- "inputs": [],
330
- "name": "currency",
331
- "outputs": [
332
- {
333
- "internalType": "contract IERC20Metadata",
334
- "name": "",
335
- "type": "address"
336
- }
337
- ],
338
- "stateMutability": "view",
339
- "type": "function"
340
- },
341
- {
342
- "inputs": [],
343
- "name": "initialize",
344
- "outputs": [],
345
- "stateMutability": "nonpayable",
346
- "type": "function"
347
- },
348
- {
349
- "inputs": [],
350
- "name": "lastTweak",
351
- "outputs": [
352
- {
353
- "internalType": "uint40",
354
- "name": "",
355
- "type": "uint40"
356
- },
357
- {
358
- "internalType": "uint56",
359
- "name": "",
360
- "type": "uint56"
361
- }
362
- ],
363
- "stateMutability": "view",
364
- "type": "function"
365
- },
366
- {
367
- "inputs": [],
368
- "name": "pause",
369
- "outputs": [],
370
- "stateMutability": "nonpayable",
371
- "type": "function"
372
- },
373
- {
374
- "inputs": [],
375
- "name": "paused",
376
- "outputs": [
377
- {
378
- "internalType": "bool",
379
- "name": "",
380
- "type": "bool"
381
- }
382
- ],
383
- "stateMutability": "view",
384
- "type": "function"
385
- },
386
- {
387
- "inputs": [],
388
- "name": "policyPool",
389
- "outputs": [
390
- {
391
- "internalType": "contract IPolicyPool",
392
- "name": "",
393
- "type": "address"
394
- }
395
- ],
396
- "stateMutability": "view",
397
- "type": "function"
398
- },
399
- {
400
- "inputs": [],
401
- "name": "proxiableUUID",
402
- "outputs": [
403
- {
404
- "internalType": "bytes32",
405
- "name": "",
406
- "type": "bytes32"
407
- }
408
- ],
409
- "stateMutability": "view",
410
- "type": "function"
411
- },
412
- {
413
- "inputs": [
414
- {
415
- "internalType": "bytes4",
416
- "name": "interfaceId",
417
- "type": "bytes4"
418
- }
419
- ],
420
- "name": "supportsInterface",
421
- "outputs": [
422
- {
423
- "internalType": "bool",
424
- "name": "",
425
- "type": "bool"
426
- }
427
- ],
428
- "stateMutability": "view",
429
- "type": "function"
430
- },
431
- {
432
- "inputs": [],
433
- "name": "unpause",
434
- "outputs": [],
435
- "stateMutability": "nonpayable",
436
- "type": "function"
437
- },
438
- {
439
- "inputs": [
440
- {
441
- "internalType": "address",
442
- "name": "newImplementation",
443
- "type": "address"
444
- }
445
- ],
446
- "name": "upgradeTo",
447
- "outputs": [],
448
- "stateMutability": "nonpayable",
449
- "type": "function"
450
- },
451
- {
452
- "inputs": [
453
- {
454
- "internalType": "address",
455
- "name": "newImplementation",
456
- "type": "address"
457
- },
458
- {
459
- "internalType": "bytes",
460
- "name": "data",
461
- "type": "bytes"
462
- }
463
- ],
464
- "name": "upgradeToAndCall",
465
- "outputs": [],
466
- "stateMutability": "payable",
467
- "type": "function"
468
- },
469
- {
470
- "inputs": [
471
- {
472
- "internalType": "address",
473
- "name": "provider",
474
- "type": "address"
475
- },
476
- {
477
- "internalType": "bool",
478
- "name": "whitelisted",
479
- "type": "bool"
480
- }
481
- ],
482
- "name": "whitelistAddress",
483
- "outputs": [],
484
- "stateMutability": "nonpayable",
485
- "type": "function"
486
- }
487
- ],
488
- "bytecode": "0x60c0604052306080523480156200001557600080fd5b5060405162001baf38038062001baf833981016040819052620000389162000199565b80806001600160a01b038116620000bc5760405162461bcd60e51b815260206004820152603660248201527f506f6c696379506f6f6c436f6d706f6e656e743a20706f6c696379506f6f6c2060448201527f63616e6e6f74206265207a65726f20616464726573730000000000000000000060648201526084015b60405180910390fd5b620000c6620000db565b6001600160a01b031660a05250620001cb9050565b600054610100900460ff1615620001455760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401620000b3565b60005460ff9081161462000197576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b600060208284031215620001ac57600080fd5b81516001600160a01b0381168114620001c457600080fd5b9392505050565b60805160a0516119786200023760003960008181610286015281816105ac0152818161097901528181610b1d01528181610cac01528181610d9901526110d301526000818161049c015281816104e5015281816106be015281816106fe015261078d01526119786000f3fe60806040526004361061012a5760003560e01c80635b494dd5116100ab5780638456cb591161006f5780638456cb59146103945780639051c763146103a9578063aad4148c146103c9578063b9a45aac146103fd578063e5a6b10f1461041d578063f67b2bad1461043257600080fd5b80635b494dd5146102e65780635c975abb1461031a5780635fcdca37146103325780637ed5acfa146103525780638129fc1c1461037f57600080fd5b8063468a8c9f116100f2578063468a8c9f146102075780634a47a3e0146102435780634d15eb03146102775780634f1ef286146102be57806352d1902d146102d157600080fd5b806301ffc9a71461012f57806324ea54f4146101645780633659cfe61461019457806337ee20dd146101b65780633f4ba83a146101f2575b600080fd5b34801561013b57600080fd5b5061014f61014a366004611523565b610466565b60405190151581526020015b60405180910390f35b34801561017057600080fd5b5061018660008051602061192383398151915281565b60405190815260200161015b565b3480156101a057600080fd5b506101b46101af366004611562565b610492565b005b3480156101c257600080fd5b5061014f6101d136600461157f565b506001600160a01b0316600090815260fb602052604090205460ff16919050565b3480156101fe57600080fd5b506101b461057a565b34801561021357600080fd5b5060c9546040805164ffffffffff831681526501000000000090920466ffffffffffffff1660208301520161015b565b34801561024f57600080fd5b506101867fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c081565b34801561028357600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b03909116815260200161015b565b6101b46102cc3660046115d6565b6106b4565b3480156102dd57600080fd5b50610186610780565b3480156102f257600080fd5b506101867f5ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c2781565b34801561032657600080fd5b5060975460ff1661014f565b34801561033e57600080fd5b5061014f61034d36600461169a565b610833565b34801561035e57600080fd5b506103696201518081565b60405164ffffffffff909116815260200161015b565b34801561038b57600080fd5b506101b4610858565b3480156103a057600080fd5b506101b4610968565b3480156103b557600080fd5b5061014f6103c436600461157f565b610a80565b3480156103d557600080fd5b506101867fb494869573b0a0ce9caac5394e1d0d255d146ec7e2d30d643a4e1d78980f323581565b34801561040957600080fd5b506101b46104183660046116f9565b610afa565b34801561042957600080fd5b506102a6610ca8565b34801561043e57600080fd5b506101867fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb281565b600061047182610d31565b8061048c57506001600160e01b0319821663f8722d8960e01b145b92915050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104e35760405162461bcd60e51b81526004016104da90611732565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661052c6000805160206118dc833981519152546001600160a01b031690565b6001600160a01b0316146105525760405162461bcd60e51b81526004016104da9061177e565b61055b81610d67565b6040805160008082526020820190925261057791839190610e9e565b50565b6000805160206119238339815191527fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb27f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610608573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062c91906117ca565b60408051632b1cff1f60e01b815230600482015260248101859052604481018490523360648201526001608482015290516001600160a01b039290921691632b1cff1f9160a480820192600092909190829003018186803b15801561069057600080fd5b505afa1580156106a4573d6000803e3d6000fd5b505050506106b0611009565b5050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106fc5760405162461bcd60e51b81526004016104da90611732565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107456000805160206118dc833981519152546001600160a01b031690565b6001600160a01b03161461076b5760405162461bcd60e51b81526004016104da9061177e565b61077482610d67565b6106b082826001610e9e565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108205760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016104da565b506000805160206118dc83398151915290565b6001600160a01b038216600090815260fb602052604090205460ff165b949350505050565b600054610100900460ff16158080156108785750600054600160ff909116105b806108925750303b158015610892575060005460ff166001145b6108f55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016104da565b6000805460ff191660011790558015610918576000805461ff0019166101001790555b61092061105b565b8015610577576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b6000805160206119238339815191527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f991906117ca565b6001600160a01b0316635ff57d2030833360405160e085901b6001600160e01b03191681526001600160a01b039384166004820152602481019290925290911660448201526001606482015260840160006040518083038186803b158015610a6057600080fd5b505afa158015610a74573d6000803e3d6000fd5b50505050610577611094565b6040516337ee20dd60e01b81526001600160a01b038085166004830152831660248201526044810182905260009030906337ee20dd90606401602060405180830381865afa158015610ad6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085091906117e7565b7fb494869573b0a0ce9caac5394e1d0d255d146ec7e2d30d643a4e1d78980f32357f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9d91906117ca565b6001600160a01b0316635ff57d2030833360405160e085901b6001600160e01b03191681526001600160a01b039384166004820152602481019290925290911660448201526000606482015260840160006040518083038186803b158015610c0457600080fd5b505afa158015610c18573d6000803e3d6000fd5b5050506001600160a01b038416600090815260fb602052604090205460ff161515831515149050610ca3576001600160a01b038316600081815260fb6020908152604091829020805460ff19168615159081179091558251938452908301527f8ef34cf5cfaa6ce2f80f1ba2912749c912a8b07c4fb8e9949e928e7cb592918f910160405180910390a15b505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e5a6b10f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2c91906117ca565b905090565b60006001600160e01b031982166301ffc9a760e01b148061048c57506001600160e01b03198216634d15eb0360e01b1492915050565b6000805160206119238339815191527fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb27f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610df5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1991906117ca565b60408051632b1cff1f60e01b815230600482015260248101859052604481018490523360648201526001608482015290516001600160a01b039290921691632b1cff1f9160a480820192600092909190829003018186803b158015610e7d57600080fd5b505afa158015610e91573d6000803e3d6000fd5b50505050610ca3836110d1565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610ed157610ca3836111c2565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610f2b575060408051601f3d908101601f19168201909252610f2891810190611804565b60015b610f8e5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016104da565b6000805160206118dc8339815191528114610ffd5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016104da565b50610ca383838361125e565b611011611289565b6097805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600054610100900460ff166110825760405162461bcd60e51b81526004016104da9061181d565b61108a6112d2565b6110926112f9565b565b61109c611328565b6097805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861103e3390565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316634d15eb036040518163ffffffff1660e01b8152600401602060405180830381865afa158015611139573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115d91906117ca565b6001600160a01b0316146105775760405162461bcd60e51b815260206004820152602660248201527f43616e27742075706772616465206368616e67696e672074686520506f6c696360448201526579506f6f6c2160d01b60648201526084016104da565b6001600160a01b0381163b61122f5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016104da565b6000805160206118dc83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6112678361136e565b6000825111806112745750805b15610ca35761128383836113ae565b50505050565b60975460ff166110925760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016104da565b600054610100900460ff166110925760405162461bcd60e51b81526004016104da9061181d565b600054610100900460ff166113205760405162461bcd60e51b81526004016104da9061181d565b6110926113da565b60975460ff16156110925760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016104da565b611377816111c2565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606113d383836040518060600160405280602781526020016118fc6027913961140d565b9392505050565b600054610100900460ff166114015760405162461bcd60e51b81526004016104da9061181d565b6097805460ff19169055565b6060600080856001600160a01b03168560405161142a919061188c565b600060405180830381855af49150503d8060008114611465576040519150601f19603f3d011682016040523d82523d6000602084013e61146a565b606091505b509150915061147b86838387611485565b9695505050505050565b606083156114f45782516000036114ed576001600160a01b0385163b6114ed5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016104da565b5081610850565b61085083838151156115095781518083602001fd5b8060405162461bcd60e51b81526004016104da91906118a8565b60006020828403121561153557600080fd5b81356001600160e01b0319811681146113d357600080fd5b6001600160a01b038116811461057757600080fd5b60006020828403121561157457600080fd5b81356113d38161154d565b60008060006060848603121561159457600080fd5b833561159f8161154d565b925060208401356115af8161154d565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156115e957600080fd5b82356115f48161154d565b9150602083013567ffffffffffffffff8082111561161157600080fd5b818501915085601f83011261162557600080fd5b813581811115611637576116376115c0565b604051601f8201601f19908116603f0116810190838211818310171561165f5761165f6115c0565b8160405282815288602084870101111561167857600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b600080600080608085870312156116b057600080fd5b84356116bb8161154d565b935060208501356116cb8161154d565b925060408501356116db8161154d565b9396929550929360600135925050565b801515811461057757600080fd5b6000806040838503121561170c57600080fd5b82356117178161154d565b91506020830135611727816116eb565b809150509250929050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6000602082840312156117dc57600080fd5b81516113d38161154d565b6000602082840312156117f957600080fd5b81516113d3816116eb565b60006020828403121561181657600080fd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60005b8381101561188357818101518382015260200161186b565b50506000910152565b6000825161189e818460208701611868565b9190910192915050565b60208152600082518060208401526118c7816040850160208701611868565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656455435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a2646970667358221220415de63b22cefe70efce82c8a375c1dad521368d1f238e87f2a2dce5b26c40c764736f6c63430008100033",
489
- "deployedBytecode": "0x60806040526004361061012a5760003560e01c80635b494dd5116100ab5780638456cb591161006f5780638456cb59146103945780639051c763146103a9578063aad4148c146103c9578063b9a45aac146103fd578063e5a6b10f1461041d578063f67b2bad1461043257600080fd5b80635b494dd5146102e65780635c975abb1461031a5780635fcdca37146103325780637ed5acfa146103525780638129fc1c1461037f57600080fd5b8063468a8c9f116100f2578063468a8c9f146102075780634a47a3e0146102435780634d15eb03146102775780634f1ef286146102be57806352d1902d146102d157600080fd5b806301ffc9a71461012f57806324ea54f4146101645780633659cfe61461019457806337ee20dd146101b65780633f4ba83a146101f2575b600080fd5b34801561013b57600080fd5b5061014f61014a366004611523565b610466565b60405190151581526020015b60405180910390f35b34801561017057600080fd5b5061018660008051602061192383398151915281565b60405190815260200161015b565b3480156101a057600080fd5b506101b46101af366004611562565b610492565b005b3480156101c257600080fd5b5061014f6101d136600461157f565b506001600160a01b0316600090815260fb602052604090205460ff16919050565b3480156101fe57600080fd5b506101b461057a565b34801561021357600080fd5b5060c9546040805164ffffffffff831681526501000000000090920466ffffffffffffff1660208301520161015b565b34801561024f57600080fd5b506101867fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c081565b34801561028357600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b03909116815260200161015b565b6101b46102cc3660046115d6565b6106b4565b3480156102dd57600080fd5b50610186610780565b3480156102f257600080fd5b506101867f5ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c2781565b34801561032657600080fd5b5060975460ff1661014f565b34801561033e57600080fd5b5061014f61034d36600461169a565b610833565b34801561035e57600080fd5b506103696201518081565b60405164ffffffffff909116815260200161015b565b34801561038b57600080fd5b506101b4610858565b3480156103a057600080fd5b506101b4610968565b3480156103b557600080fd5b5061014f6103c436600461157f565b610a80565b3480156103d557600080fd5b506101867fb494869573b0a0ce9caac5394e1d0d255d146ec7e2d30d643a4e1d78980f323581565b34801561040957600080fd5b506101b46104183660046116f9565b610afa565b34801561042957600080fd5b506102a6610ca8565b34801561043e57600080fd5b506101867fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb281565b600061047182610d31565b8061048c57506001600160e01b0319821663f8722d8960e01b145b92915050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104e35760405162461bcd60e51b81526004016104da90611732565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661052c6000805160206118dc833981519152546001600160a01b031690565b6001600160a01b0316146105525760405162461bcd60e51b81526004016104da9061177e565b61055b81610d67565b6040805160008082526020820190925261057791839190610e9e565b50565b6000805160206119238339815191527fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb27f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610608573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062c91906117ca565b60408051632b1cff1f60e01b815230600482015260248101859052604481018490523360648201526001608482015290516001600160a01b039290921691632b1cff1f9160a480820192600092909190829003018186803b15801561069057600080fd5b505afa1580156106a4573d6000803e3d6000fd5b505050506106b0611009565b5050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106fc5760405162461bcd60e51b81526004016104da90611732565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107456000805160206118dc833981519152546001600160a01b031690565b6001600160a01b03161461076b5760405162461bcd60e51b81526004016104da9061177e565b61077482610d67565b6106b082826001610e9e565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108205760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016104da565b506000805160206118dc83398151915290565b6001600160a01b038216600090815260fb602052604090205460ff165b949350505050565b600054610100900460ff16158080156108785750600054600160ff909116105b806108925750303b158015610892575060005460ff166001145b6108f55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016104da565b6000805460ff191660011790558015610918576000805461ff0019166101001790555b61092061105b565b8015610577576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b6000805160206119238339815191527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f991906117ca565b6001600160a01b0316635ff57d2030833360405160e085901b6001600160e01b03191681526001600160a01b039384166004820152602481019290925290911660448201526001606482015260840160006040518083038186803b158015610a6057600080fd5b505afa158015610a74573d6000803e3d6000fd5b50505050610577611094565b6040516337ee20dd60e01b81526001600160a01b038085166004830152831660248201526044810182905260009030906337ee20dd90606401602060405180830381865afa158015610ad6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085091906117e7565b7fb494869573b0a0ce9caac5394e1d0d255d146ec7e2d30d643a4e1d78980f32357f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9d91906117ca565b6001600160a01b0316635ff57d2030833360405160e085901b6001600160e01b03191681526001600160a01b039384166004820152602481019290925290911660448201526000606482015260840160006040518083038186803b158015610c0457600080fd5b505afa158015610c18573d6000803e3d6000fd5b5050506001600160a01b038416600090815260fb602052604090205460ff161515831515149050610ca3576001600160a01b038316600081815260fb6020908152604091829020805460ff19168615159081179091558251938452908301527f8ef34cf5cfaa6ce2f80f1ba2912749c912a8b07c4fb8e9949e928e7cb592918f910160405180910390a15b505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e5a6b10f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2c91906117ca565b905090565b60006001600160e01b031982166301ffc9a760e01b148061048c57506001600160e01b03198216634d15eb0360e01b1492915050565b6000805160206119238339815191527fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb27f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610df5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1991906117ca565b60408051632b1cff1f60e01b815230600482015260248101859052604481018490523360648201526001608482015290516001600160a01b039290921691632b1cff1f9160a480820192600092909190829003018186803b158015610e7d57600080fd5b505afa158015610e91573d6000803e3d6000fd5b50505050610ca3836110d1565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610ed157610ca3836111c2565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610f2b575060408051601f3d908101601f19168201909252610f2891810190611804565b60015b610f8e5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016104da565b6000805160206118dc8339815191528114610ffd5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016104da565b50610ca383838361125e565b611011611289565b6097805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600054610100900460ff166110825760405162461bcd60e51b81526004016104da9061181d565b61108a6112d2565b6110926112f9565b565b61109c611328565b6097805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861103e3390565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316634d15eb036040518163ffffffff1660e01b8152600401602060405180830381865afa158015611139573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115d91906117ca565b6001600160a01b0316146105775760405162461bcd60e51b815260206004820152602660248201527f43616e27742075706772616465206368616e67696e672074686520506f6c696360448201526579506f6f6c2160d01b60648201526084016104da565b6001600160a01b0381163b61122f5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016104da565b6000805160206118dc83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6112678361136e565b6000825111806112745750805b15610ca35761128383836113ae565b50505050565b60975460ff166110925760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016104da565b600054610100900460ff166110925760405162461bcd60e51b81526004016104da9061181d565b600054610100900460ff166113205760405162461bcd60e51b81526004016104da9061181d565b6110926113da565b60975460ff16156110925760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016104da565b611377816111c2565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606113d383836040518060600160405280602781526020016118fc6027913961140d565b9392505050565b600054610100900460ff166114015760405162461bcd60e51b81526004016104da9061181d565b6097805460ff19169055565b6060600080856001600160a01b03168560405161142a919061188c565b600060405180830381855af49150503d8060008114611465576040519150601f19603f3d011682016040523d82523d6000602084013e61146a565b606091505b509150915061147b86838387611485565b9695505050505050565b606083156114f45782516000036114ed576001600160a01b0385163b6114ed5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016104da565b5081610850565b61085083838151156115095781518083602001fd5b8060405162461bcd60e51b81526004016104da91906118a8565b60006020828403121561153557600080fd5b81356001600160e01b0319811681146113d357600080fd5b6001600160a01b038116811461057757600080fd5b60006020828403121561157457600080fd5b81356113d38161154d565b60008060006060848603121561159457600080fd5b833561159f8161154d565b925060208401356115af8161154d565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156115e957600080fd5b82356115f48161154d565b9150602083013567ffffffffffffffff8082111561161157600080fd5b818501915085601f83011261162557600080fd5b813581811115611637576116376115c0565b604051601f8201601f19908116603f0116810190838211818310171561165f5761165f6115c0565b8160405282815288602084870101111561167857600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b600080600080608085870312156116b057600080fd5b84356116bb8161154d565b935060208501356116cb8161154d565b925060408501356116db8161154d565b9396929550929360600135925050565b801515811461057757600080fd5b6000806040838503121561170c57600080fd5b82356117178161154d565b91506020830135611727816116eb565b809150509250929050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6000602082840312156117dc57600080fd5b81516113d38161154d565b6000602082840312156117f957600080fd5b81516113d3816116eb565b60006020828403121561181657600080fd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60005b8381101561188357818101518382015260200161186b565b50506000910152565b6000825161189e818460208701611868565b9190910192915050565b60208152600082518060208401526118c7816040850160208701611868565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656455435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a2646970667358221220415de63b22cefe70efce82c8a375c1dad521368d1f238e87f2a2dce5b26c40c764736f6c63430008100033",
490
- "linkReferences": {},
491
- "deployedLinkReferences": {}
492
- }