@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,721 +0,0 @@
1
- {
2
- "_format": "hh-sol-artifact-1",
3
- "contractName": "PolicyPoolMock",
4
- "sourceName": "contracts/mocks/PolicyPoolMock.sol",
5
- "abi": [
6
- {
7
- "inputs": [
8
- {
9
- "internalType": "contract IERC20Metadata",
10
- "name": "currency_",
11
- "type": "address"
12
- },
13
- {
14
- "internalType": "contract IAccessManager",
15
- "name": "access_",
16
- "type": "address"
17
- }
18
- ],
19
- "stateMutability": "nonpayable",
20
- "type": "constructor"
21
- },
22
- {
23
- "anonymous": false,
24
- "inputs": [
25
- {
26
- "indexed": true,
27
- "internalType": "contract IRiskModule",
28
- "name": "riskModule",
29
- "type": "address"
30
- },
31
- {
32
- "components": [
33
- {
34
- "internalType": "uint256",
35
- "name": "id",
36
- "type": "uint256"
37
- },
38
- {
39
- "internalType": "uint256",
40
- "name": "payout",
41
- "type": "uint256"
42
- },
43
- {
44
- "internalType": "uint256",
45
- "name": "premium",
46
- "type": "uint256"
47
- },
48
- {
49
- "internalType": "uint256",
50
- "name": "jrScr",
51
- "type": "uint256"
52
- },
53
- {
54
- "internalType": "uint256",
55
- "name": "srScr",
56
- "type": "uint256"
57
- },
58
- {
59
- "internalType": "uint256",
60
- "name": "lossProb",
61
- "type": "uint256"
62
- },
63
- {
64
- "internalType": "uint256",
65
- "name": "purePremium",
66
- "type": "uint256"
67
- },
68
- {
69
- "internalType": "uint256",
70
- "name": "ensuroCommission",
71
- "type": "uint256"
72
- },
73
- {
74
- "internalType": "uint256",
75
- "name": "partnerCommission",
76
- "type": "uint256"
77
- },
78
- {
79
- "internalType": "uint256",
80
- "name": "jrCoc",
81
- "type": "uint256"
82
- },
83
- {
84
- "internalType": "uint256",
85
- "name": "srCoc",
86
- "type": "uint256"
87
- },
88
- {
89
- "internalType": "contract IRiskModule",
90
- "name": "riskModule",
91
- "type": "address"
92
- },
93
- {
94
- "internalType": "uint40",
95
- "name": "start",
96
- "type": "uint40"
97
- },
98
- {
99
- "internalType": "uint40",
100
- "name": "expiration",
101
- "type": "uint40"
102
- }
103
- ],
104
- "indexed": false,
105
- "internalType": "struct Policy.PolicyData",
106
- "name": "policy",
107
- "type": "tuple"
108
- }
109
- ],
110
- "name": "NewPolicy",
111
- "type": "event"
112
- },
113
- {
114
- "anonymous": false,
115
- "inputs": [
116
- {
117
- "indexed": true,
118
- "internalType": "contract IRiskModule",
119
- "name": "riskModule",
120
- "type": "address"
121
- },
122
- {
123
- "indexed": true,
124
- "internalType": "uint256",
125
- "name": "policyId",
126
- "type": "uint256"
127
- },
128
- {
129
- "indexed": false,
130
- "internalType": "uint256",
131
- "name": "payout",
132
- "type": "uint256"
133
- }
134
- ],
135
- "name": "PolicyResolved",
136
- "type": "event"
137
- },
138
- {
139
- "inputs": [],
140
- "name": "MAX_INT",
141
- "outputs": [
142
- {
143
- "internalType": "uint256",
144
- "name": "",
145
- "type": "uint256"
146
- }
147
- ],
148
- "stateMutability": "view",
149
- "type": "function"
150
- },
151
- {
152
- "inputs": [],
153
- "name": "access",
154
- "outputs": [
155
- {
156
- "internalType": "contract IAccessManager",
157
- "name": "",
158
- "type": "address"
159
- }
160
- ],
161
- "stateMutability": "view",
162
- "type": "function"
163
- },
164
- {
165
- "inputs": [],
166
- "name": "currency",
167
- "outputs": [
168
- {
169
- "internalType": "contract IERC20Metadata",
170
- "name": "",
171
- "type": "address"
172
- }
173
- ],
174
- "stateMutability": "view",
175
- "type": "function"
176
- },
177
- {
178
- "inputs": [
179
- {
180
- "internalType": "contract IEToken",
181
- "name": "",
182
- "type": "address"
183
- },
184
- {
185
- "internalType": "uint256",
186
- "name": "",
187
- "type": "uint256"
188
- }
189
- ],
190
- "name": "deposit",
191
- "outputs": [],
192
- "stateMutability": "pure",
193
- "type": "function"
194
- },
195
- {
196
- "inputs": [
197
- {
198
- "components": [
199
- {
200
- "internalType": "uint256",
201
- "name": "id",
202
- "type": "uint256"
203
- },
204
- {
205
- "internalType": "uint256",
206
- "name": "payout",
207
- "type": "uint256"
208
- },
209
- {
210
- "internalType": "uint256",
211
- "name": "premium",
212
- "type": "uint256"
213
- },
214
- {
215
- "internalType": "uint256",
216
- "name": "jrScr",
217
- "type": "uint256"
218
- },
219
- {
220
- "internalType": "uint256",
221
- "name": "srScr",
222
- "type": "uint256"
223
- },
224
- {
225
- "internalType": "uint256",
226
- "name": "lossProb",
227
- "type": "uint256"
228
- },
229
- {
230
- "internalType": "uint256",
231
- "name": "purePremium",
232
- "type": "uint256"
233
- },
234
- {
235
- "internalType": "uint256",
236
- "name": "ensuroCommission",
237
- "type": "uint256"
238
- },
239
- {
240
- "internalType": "uint256",
241
- "name": "partnerCommission",
242
- "type": "uint256"
243
- },
244
- {
245
- "internalType": "uint256",
246
- "name": "jrCoc",
247
- "type": "uint256"
248
- },
249
- {
250
- "internalType": "uint256",
251
- "name": "srCoc",
252
- "type": "uint256"
253
- },
254
- {
255
- "internalType": "contract IRiskModule",
256
- "name": "riskModule",
257
- "type": "address"
258
- },
259
- {
260
- "internalType": "uint40",
261
- "name": "start",
262
- "type": "uint40"
263
- },
264
- {
265
- "internalType": "uint40",
266
- "name": "expiration",
267
- "type": "uint40"
268
- }
269
- ],
270
- "internalType": "struct Policy.PolicyData",
271
- "name": "policy",
272
- "type": "tuple"
273
- }
274
- ],
275
- "name": "expirePolicy",
276
- "outputs": [],
277
- "stateMutability": "nonpayable",
278
- "type": "function"
279
- },
280
- {
281
- "inputs": [
282
- {
283
- "internalType": "uint256",
284
- "name": "policyId",
285
- "type": "uint256"
286
- }
287
- ],
288
- "name": "getPolicyHash",
289
- "outputs": [
290
- {
291
- "internalType": "bytes32",
292
- "name": "",
293
- "type": "bytes32"
294
- }
295
- ],
296
- "stateMutability": "view",
297
- "type": "function"
298
- },
299
- {
300
- "inputs": [
301
- {
302
- "internalType": "contract IRiskModule",
303
- "name": "riskModule",
304
- "type": "address"
305
- },
306
- {
307
- "components": [
308
- {
309
- "internalType": "uint256",
310
- "name": "moc",
311
- "type": "uint256"
312
- },
313
- {
314
- "internalType": "uint256",
315
- "name": "jrCollRatio",
316
- "type": "uint256"
317
- },
318
- {
319
- "internalType": "uint256",
320
- "name": "collRatio",
321
- "type": "uint256"
322
- },
323
- {
324
- "internalType": "uint256",
325
- "name": "ensuroPpFee",
326
- "type": "uint256"
327
- },
328
- {
329
- "internalType": "uint256",
330
- "name": "ensuroCocFee",
331
- "type": "uint256"
332
- },
333
- {
334
- "internalType": "uint256",
335
- "name": "jrRoc",
336
- "type": "uint256"
337
- },
338
- {
339
- "internalType": "uint256",
340
- "name": "srRoc",
341
- "type": "uint256"
342
- }
343
- ],
344
- "internalType": "struct IRiskModule.Params",
345
- "name": "rmParams",
346
- "type": "tuple"
347
- },
348
- {
349
- "internalType": "uint256",
350
- "name": "premium",
351
- "type": "uint256"
352
- },
353
- {
354
- "internalType": "uint256",
355
- "name": "payout",
356
- "type": "uint256"
357
- },
358
- {
359
- "internalType": "uint256",
360
- "name": "lossProb",
361
- "type": "uint256"
362
- },
363
- {
364
- "internalType": "uint40",
365
- "name": "expiration",
366
- "type": "uint40"
367
- }
368
- ],
369
- "name": "initializeAndEmitPolicy",
370
- "outputs": [],
371
- "stateMutability": "nonpayable",
372
- "type": "function"
373
- },
374
- {
375
- "inputs": [
376
- {
377
- "internalType": "uint256",
378
- "name": "policyId",
379
- "type": "uint256"
380
- }
381
- ],
382
- "name": "isActive",
383
- "outputs": [
384
- {
385
- "internalType": "bool",
386
- "name": "",
387
- "type": "bool"
388
- }
389
- ],
390
- "stateMutability": "view",
391
- "type": "function"
392
- },
393
- {
394
- "inputs": [
395
- {
396
- "components": [
397
- {
398
- "internalType": "uint256",
399
- "name": "id",
400
- "type": "uint256"
401
- },
402
- {
403
- "internalType": "uint256",
404
- "name": "payout",
405
- "type": "uint256"
406
- },
407
- {
408
- "internalType": "uint256",
409
- "name": "premium",
410
- "type": "uint256"
411
- },
412
- {
413
- "internalType": "uint256",
414
- "name": "jrScr",
415
- "type": "uint256"
416
- },
417
- {
418
- "internalType": "uint256",
419
- "name": "srScr",
420
- "type": "uint256"
421
- },
422
- {
423
- "internalType": "uint256",
424
- "name": "lossProb",
425
- "type": "uint256"
426
- },
427
- {
428
- "internalType": "uint256",
429
- "name": "purePremium",
430
- "type": "uint256"
431
- },
432
- {
433
- "internalType": "uint256",
434
- "name": "ensuroCommission",
435
- "type": "uint256"
436
- },
437
- {
438
- "internalType": "uint256",
439
- "name": "partnerCommission",
440
- "type": "uint256"
441
- },
442
- {
443
- "internalType": "uint256",
444
- "name": "jrCoc",
445
- "type": "uint256"
446
- },
447
- {
448
- "internalType": "uint256",
449
- "name": "srCoc",
450
- "type": "uint256"
451
- },
452
- {
453
- "internalType": "contract IRiskModule",
454
- "name": "riskModule",
455
- "type": "address"
456
- },
457
- {
458
- "internalType": "uint40",
459
- "name": "start",
460
- "type": "uint40"
461
- },
462
- {
463
- "internalType": "uint40",
464
- "name": "expiration",
465
- "type": "uint40"
466
- }
467
- ],
468
- "internalType": "struct Policy.PolicyData",
469
- "name": "policy",
470
- "type": "tuple"
471
- },
472
- {
473
- "internalType": "address",
474
- "name": "",
475
- "type": "address"
476
- },
477
- {
478
- "internalType": "address",
479
- "name": "",
480
- "type": "address"
481
- },
482
- {
483
- "internalType": "uint96",
484
- "name": "internalId",
485
- "type": "uint96"
486
- }
487
- ],
488
- "name": "newPolicy",
489
- "outputs": [
490
- {
491
- "internalType": "uint256",
492
- "name": "",
493
- "type": "uint256"
494
- }
495
- ],
496
- "stateMutability": "nonpayable",
497
- "type": "function"
498
- },
499
- {
500
- "inputs": [
501
- {
502
- "components": [
503
- {
504
- "internalType": "uint256",
505
- "name": "id",
506
- "type": "uint256"
507
- },
508
- {
509
- "internalType": "uint256",
510
- "name": "payout",
511
- "type": "uint256"
512
- },
513
- {
514
- "internalType": "uint256",
515
- "name": "premium",
516
- "type": "uint256"
517
- },
518
- {
519
- "internalType": "uint256",
520
- "name": "jrScr",
521
- "type": "uint256"
522
- },
523
- {
524
- "internalType": "uint256",
525
- "name": "srScr",
526
- "type": "uint256"
527
- },
528
- {
529
- "internalType": "uint256",
530
- "name": "lossProb",
531
- "type": "uint256"
532
- },
533
- {
534
- "internalType": "uint256",
535
- "name": "purePremium",
536
- "type": "uint256"
537
- },
538
- {
539
- "internalType": "uint256",
540
- "name": "ensuroCommission",
541
- "type": "uint256"
542
- },
543
- {
544
- "internalType": "uint256",
545
- "name": "partnerCommission",
546
- "type": "uint256"
547
- },
548
- {
549
- "internalType": "uint256",
550
- "name": "jrCoc",
551
- "type": "uint256"
552
- },
553
- {
554
- "internalType": "uint256",
555
- "name": "srCoc",
556
- "type": "uint256"
557
- },
558
- {
559
- "internalType": "contract IRiskModule",
560
- "name": "riskModule",
561
- "type": "address"
562
- },
563
- {
564
- "internalType": "uint40",
565
- "name": "start",
566
- "type": "uint40"
567
- },
568
- {
569
- "internalType": "uint40",
570
- "name": "expiration",
571
- "type": "uint40"
572
- }
573
- ],
574
- "internalType": "struct Policy.PolicyData",
575
- "name": "policy",
576
- "type": "tuple"
577
- },
578
- {
579
- "internalType": "uint256",
580
- "name": "payout",
581
- "type": "uint256"
582
- }
583
- ],
584
- "name": "resolvePolicy",
585
- "outputs": [],
586
- "stateMutability": "nonpayable",
587
- "type": "function"
588
- },
589
- {
590
- "inputs": [
591
- {
592
- "components": [
593
- {
594
- "internalType": "uint256",
595
- "name": "id",
596
- "type": "uint256"
597
- },
598
- {
599
- "internalType": "uint256",
600
- "name": "payout",
601
- "type": "uint256"
602
- },
603
- {
604
- "internalType": "uint256",
605
- "name": "premium",
606
- "type": "uint256"
607
- },
608
- {
609
- "internalType": "uint256",
610
- "name": "jrScr",
611
- "type": "uint256"
612
- },
613
- {
614
- "internalType": "uint256",
615
- "name": "srScr",
616
- "type": "uint256"
617
- },
618
- {
619
- "internalType": "uint256",
620
- "name": "lossProb",
621
- "type": "uint256"
622
- },
623
- {
624
- "internalType": "uint256",
625
- "name": "purePremium",
626
- "type": "uint256"
627
- },
628
- {
629
- "internalType": "uint256",
630
- "name": "ensuroCommission",
631
- "type": "uint256"
632
- },
633
- {
634
- "internalType": "uint256",
635
- "name": "partnerCommission",
636
- "type": "uint256"
637
- },
638
- {
639
- "internalType": "uint256",
640
- "name": "jrCoc",
641
- "type": "uint256"
642
- },
643
- {
644
- "internalType": "uint256",
645
- "name": "srCoc",
646
- "type": "uint256"
647
- },
648
- {
649
- "internalType": "contract IRiskModule",
650
- "name": "riskModule",
651
- "type": "address"
652
- },
653
- {
654
- "internalType": "uint40",
655
- "name": "start",
656
- "type": "uint40"
657
- },
658
- {
659
- "internalType": "uint40",
660
- "name": "expiration",
661
- "type": "uint40"
662
- }
663
- ],
664
- "internalType": "struct Policy.PolicyData",
665
- "name": "policy",
666
- "type": "tuple"
667
- },
668
- {
669
- "internalType": "bool",
670
- "name": "customerWon",
671
- "type": "bool"
672
- }
673
- ],
674
- "name": "resolvePolicyFullPayout",
675
- "outputs": [],
676
- "stateMutability": "nonpayable",
677
- "type": "function"
678
- },
679
- {
680
- "inputs": [],
681
- "name": "treasury",
682
- "outputs": [
683
- {
684
- "internalType": "address",
685
- "name": "",
686
- "type": "address"
687
- }
688
- ],
689
- "stateMutability": "pure",
690
- "type": "function"
691
- },
692
- {
693
- "inputs": [
694
- {
695
- "internalType": "contract IEToken",
696
- "name": "",
697
- "type": "address"
698
- },
699
- {
700
- "internalType": "uint256",
701
- "name": "",
702
- "type": "uint256"
703
- }
704
- ],
705
- "name": "withdraw",
706
- "outputs": [
707
- {
708
- "internalType": "uint256",
709
- "name": "",
710
- "type": "uint256"
711
- }
712
- ],
713
- "stateMutability": "pure",
714
- "type": "function"
715
- }
716
- ],
717
- "bytecode": "0x608060405234801561001057600080fd5b5060405161100638038061100683398101604081905261002f91610078565b600080546001600160a01b039384166001600160a01b031991821617909155600180549290931691161790556100b2565b6001600160a01b038116811461007557600080fd5b50565b6000806040838503121561008b57600080fd5b825161009681610060565b60208401519092506100a781610060565b809150509250929050565b610f45806100c16000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063792da09e1161008c57806392be29701161006657806392be2970146101bc578063e5a6b10f146101cf578063f3fef3a3146101e0578063ffa600e3146101f357600080fd5b8063792da09e146101575780637a702b3c1461017757806382afd23b1461018a57600080fd5b8063098d3228146100d457806347e7ef24146100f057806361d027b3146101055780636769a76f146101205780636af6f1ef1461013357806371907f1714610146575b600080fd5b6100dd60001981565b6040519081526020015b60405180910390f35b6101036100fe366004610a23565b610206565b005b60005b6040516001600160a01b0390911681526020016100e7565b6100dd61012e366004610b9f565b610253565b610103610141366004610c28565b6102e4565b6001546001600160a01b0316610108565b6100dd610165366004610c4c565b60009081526003602052604090205490565b610103610185366004610c65565b610300565b6101ac610198366004610c4c565b600090815260036020526040902054151590565b60405190151581526020016100e7565b6101036101ca366004610c92565b61031c565b6000546001600160a01b0316610108565b6100dd6101ee366004610a23565b610378565b610103610201366004610d4d565b6103c3565b60405162461bcd60e51b815260206004820152601760248201527f4e6f7420496d706c656d656e746564206465706f73697400000000000000000060448201526064015b60405180910390fd5b6000816bffffffffffffffffffffffff1660608661016001516001600160a01b0316901b6102819190610da2565b855261028c856103eb565b855160009081526003602052604090819020919091555133907f38f420e3792044ba61536a1f83956eefc878b3fb09a7d4a28790f05b6a3eaf3b906102d2908890610dbb565b60405180910390a25050915192915050565b6102fd6102f636839003830183610e79565b600061046a565b50565b61031861031236849003840184610e79565b8261046a565b5050565b600061032c878787878787610643565b9050866001600160a01b03167f38f420e3792044ba61536a1f83956eefc878b3fb09a7d4a28790f05b6a3eaf3b826040516103679190610dbb565b60405180910390a250505050505050565b60405162461bcd60e51b815260206004820152601860248201527f4e6f7420496d706c656d656e7465642077697468647261770000000000000000604482015260009060640161024a565b6103186103d536849003840184610e79565b826103e157600061046a565b836020013561046a565b6000816040516020016103fe9190610dbb565b60408051601f1981840301815291905280516020909101209050806104655760405162461bcd60e51b815260206004820152601860248201527f506f6c6963793a20686173682063616e6e6f7420626520300000000000000000604482015260640161024a565b919050565b81516000036104ae5760405162461bcd60e51b815260206004820152601060248201526f141bdb1a58de481b9bdd08199bdd5b9960821b604482015260640161024a565b81516000908152600360205260409020546104c8836103eb565b1461050a5760405162461bcd60e51b8152602060048201526012602482015271090c2e6d040c8decae6dc4ee840dac2e8c6d60731b604482015260640161024a565b8161016001516001600160a01b0316336001600160a01b03161461058c5760405162461bcd60e51b815260206004820152603360248201527f4f6e6c79207269736b4d6f64756c6520697320617574686f72697a656420746f604482015272207265736f6c76652074686520706f6c69637960681b606482015260840161024a565b81516000908152600260208181526040808420848155600181018590559283018490556003808401859055600484018590556005840185905560068401859055600784018590556008840185905560098401859055600a8401859055600b90930180546001600160f01b0319169055855184529181528183209290925583519051838152909133917f54f4a270ea08f88dc23b2520d6b063fecb24d956c4496f447926d736338f545e910160405180910390a35050565b61064b610988565b838511156106a65760405162461bcd60e51b815260206004820152602260248201527f5072656d69756d2063616e6e6f74206265206d6f7265207468616e207061796f6044820152611d5d60f21b606482015260840161024a565b6106ae610988565b6001600160a01b038816610160820152604081018690526020810185905260a0810184905264ffffffffff42811661018083015283166101a08201528651610702906106fb908690610950565b8690610950565b60c08201526020870151610717908690610950565b6060820181905260c08201511015610747578060c001518160600181815161073f9190610e96565b90525061074f565b600060608201525b604087015161075f908690610950565b6080820152606081015160c08201516107789190610da2565b816080015111156107b05780606001518160c001516107979190610da2565b816080018181516107a89190610e96565b9052506107b8565b600060808201525b6108016301e13380826101800151836101a001516107d69190610ea9565b64ffffffffff168960a001516107ec9190610ece565b6107f69190610eed565b606083015190610950565b6101208201526101808101516101a0820151610852916301e13380916108279190610ea9565b64ffffffffff168960c0015161083d9190610ece565b6108479190610eed565b608083015190610950565b610140820181905261012082015160009161086c91610da2565b905061088588608001518261095090919063ffffffff16565b606089015160c084015161089891610950565b6108a29190610da2565b60e0830181905260c0830151889183916108bc9190610da2565b6108c69190610da2565b11156109145760405162461bcd60e51b815260206004820152601960248201527f5072656d69756d206c657373207468616e206d696e696d756d00000000000000604482015260640161024a565b8160e00151818360c001518961092a9190610e96565b6109349190610e96565b61093e9190610e96565b61010083015250979650505050505050565b600081156706f05b59d3b20000198390048411151761096e57600080fd5b50670de0b6b3a764000091026706f05b59d3b20000010490565b604051806101c00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b03168152602001600064ffffffffff168152602001600064ffffffffff1681525090565b6001600160a01b03811681146102fd57600080fd5b60008060408385031215610a3657600080fd5b8235610a4181610a0e565b946020939093013593505050565b6040516101c0810167ffffffffffffffff81118282101715610a8157634e487b7160e01b600052604160045260246000fd5b60405290565b60405160e0810167ffffffffffffffff81118282101715610a8157634e487b7160e01b600052604160045260246000fd5b803561046581610a0e565b803564ffffffffff8116811461046557600080fd5b60006101c08284031215610aeb57600080fd5b610af3610a4f565b9050813581526020820135602082015260408201356040820152606082013560608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e0820152610100808301358183015250610120808301358183015250610140808301358183015250610160610b71818401610ab8565b90820152610180610b83838201610ac3565b908201526101a0610b95838201610ac3565b9082015292915050565b6000806000806102208587031215610bb657600080fd5b610bc08686610ad8565b93506101c0850135610bd181610a0e565b92506101e0850135610be281610a0e565b91506102008501356bffffffffffffffffffffffff81168114610c0457600080fd5b939692955090935050565b60006101c08284031215610c2257600080fd5b50919050565b60006101c08284031215610c3b57600080fd5b610c458383610c0f565b9392505050565b600060208284031215610c5e57600080fd5b5035919050565b6000806101e08385031215610c7957600080fd5b610c838484610c0f565b946101c0939093013593505050565b600080600080600080868803610180811215610cad57600080fd5b8735610cb881610a0e565b965060e0601f1982011215610ccc57600080fd5b50610cd5610a87565b6020880135815260408801356020820152606088013560408201526080880135606082015260a0880135608082015260c088013560a082015260e088013560c082015280955050610100870135935061012087013592506101408701359150610d416101608801610ac3565b90509295509295509295565b6000806101e08385031215610d6157600080fd5b610d6b8484610c0f565b91506101c08301358015158114610d8157600080fd5b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610db557610db5610d8c565b92915050565b60006101c082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151818401525061014080840151818401525061016080840151610e4d828501826001600160a01b03169052565b50506101808381015164ffffffffff908116918401919091526101a09384015116929091019190915290565b60006101c08284031215610e8c57600080fd5b610c458383610ad8565b81810381811115610db557610db5610d8c565b64ffffffffff828116828216039080821115610ec757610ec7610d8c565b5092915050565b6000816000190483118215151615610ee857610ee8610d8c565b500290565b600082610f0a57634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220e302229cf563affa97f111df1da7374b3a5fd1ee88c96d5b895500bbd8ddec1364736f6c63430008100033",
718
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063792da09e1161008c57806392be29701161006657806392be2970146101bc578063e5a6b10f146101cf578063f3fef3a3146101e0578063ffa600e3146101f357600080fd5b8063792da09e146101575780637a702b3c1461017757806382afd23b1461018a57600080fd5b8063098d3228146100d457806347e7ef24146100f057806361d027b3146101055780636769a76f146101205780636af6f1ef1461013357806371907f1714610146575b600080fd5b6100dd60001981565b6040519081526020015b60405180910390f35b6101036100fe366004610a23565b610206565b005b60005b6040516001600160a01b0390911681526020016100e7565b6100dd61012e366004610b9f565b610253565b610103610141366004610c28565b6102e4565b6001546001600160a01b0316610108565b6100dd610165366004610c4c565b60009081526003602052604090205490565b610103610185366004610c65565b610300565b6101ac610198366004610c4c565b600090815260036020526040902054151590565b60405190151581526020016100e7565b6101036101ca366004610c92565b61031c565b6000546001600160a01b0316610108565b6100dd6101ee366004610a23565b610378565b610103610201366004610d4d565b6103c3565b60405162461bcd60e51b815260206004820152601760248201527f4e6f7420496d706c656d656e746564206465706f73697400000000000000000060448201526064015b60405180910390fd5b6000816bffffffffffffffffffffffff1660608661016001516001600160a01b0316901b6102819190610da2565b855261028c856103eb565b855160009081526003602052604090819020919091555133907f38f420e3792044ba61536a1f83956eefc878b3fb09a7d4a28790f05b6a3eaf3b906102d2908890610dbb565b60405180910390a25050915192915050565b6102fd6102f636839003830183610e79565b600061046a565b50565b61031861031236849003840184610e79565b8261046a565b5050565b600061032c878787878787610643565b9050866001600160a01b03167f38f420e3792044ba61536a1f83956eefc878b3fb09a7d4a28790f05b6a3eaf3b826040516103679190610dbb565b60405180910390a250505050505050565b60405162461bcd60e51b815260206004820152601860248201527f4e6f7420496d706c656d656e7465642077697468647261770000000000000000604482015260009060640161024a565b6103186103d536849003840184610e79565b826103e157600061046a565b836020013561046a565b6000816040516020016103fe9190610dbb565b60408051601f1981840301815291905280516020909101209050806104655760405162461bcd60e51b815260206004820152601860248201527f506f6c6963793a20686173682063616e6e6f7420626520300000000000000000604482015260640161024a565b919050565b81516000036104ae5760405162461bcd60e51b815260206004820152601060248201526f141bdb1a58de481b9bdd08199bdd5b9960821b604482015260640161024a565b81516000908152600360205260409020546104c8836103eb565b1461050a5760405162461bcd60e51b8152602060048201526012602482015271090c2e6d040c8decae6dc4ee840dac2e8c6d60731b604482015260640161024a565b8161016001516001600160a01b0316336001600160a01b03161461058c5760405162461bcd60e51b815260206004820152603360248201527f4f6e6c79207269736b4d6f64756c6520697320617574686f72697a656420746f604482015272207265736f6c76652074686520706f6c69637960681b606482015260840161024a565b81516000908152600260208181526040808420848155600181018590559283018490556003808401859055600484018590556005840185905560068401859055600784018590556008840185905560098401859055600a8401859055600b90930180546001600160f01b0319169055855184529181528183209290925583519051838152909133917f54f4a270ea08f88dc23b2520d6b063fecb24d956c4496f447926d736338f545e910160405180910390a35050565b61064b610988565b838511156106a65760405162461bcd60e51b815260206004820152602260248201527f5072656d69756d2063616e6e6f74206265206d6f7265207468616e207061796f6044820152611d5d60f21b606482015260840161024a565b6106ae610988565b6001600160a01b038816610160820152604081018690526020810185905260a0810184905264ffffffffff42811661018083015283166101a08201528651610702906106fb908690610950565b8690610950565b60c08201526020870151610717908690610950565b6060820181905260c08201511015610747578060c001518160600181815161073f9190610e96565b90525061074f565b600060608201525b604087015161075f908690610950565b6080820152606081015160c08201516107789190610da2565b816080015111156107b05780606001518160c001516107979190610da2565b816080018181516107a89190610e96565b9052506107b8565b600060808201525b6108016301e13380826101800151836101a001516107d69190610ea9565b64ffffffffff168960a001516107ec9190610ece565b6107f69190610eed565b606083015190610950565b6101208201526101808101516101a0820151610852916301e13380916108279190610ea9565b64ffffffffff168960c0015161083d9190610ece565b6108479190610eed565b608083015190610950565b610140820181905261012082015160009161086c91610da2565b905061088588608001518261095090919063ffffffff16565b606089015160c084015161089891610950565b6108a29190610da2565b60e0830181905260c0830151889183916108bc9190610da2565b6108c69190610da2565b11156109145760405162461bcd60e51b815260206004820152601960248201527f5072656d69756d206c657373207468616e206d696e696d756d00000000000000604482015260640161024a565b8160e00151818360c001518961092a9190610e96565b6109349190610e96565b61093e9190610e96565b61010083015250979650505050505050565b600081156706f05b59d3b20000198390048411151761096e57600080fd5b50670de0b6b3a764000091026706f05b59d3b20000010490565b604051806101c00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b03168152602001600064ffffffffff168152602001600064ffffffffff1681525090565b6001600160a01b03811681146102fd57600080fd5b60008060408385031215610a3657600080fd5b8235610a4181610a0e565b946020939093013593505050565b6040516101c0810167ffffffffffffffff81118282101715610a8157634e487b7160e01b600052604160045260246000fd5b60405290565b60405160e0810167ffffffffffffffff81118282101715610a8157634e487b7160e01b600052604160045260246000fd5b803561046581610a0e565b803564ffffffffff8116811461046557600080fd5b60006101c08284031215610aeb57600080fd5b610af3610a4f565b9050813581526020820135602082015260408201356040820152606082013560608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e0820152610100808301358183015250610120808301358183015250610140808301358183015250610160610b71818401610ab8565b90820152610180610b83838201610ac3565b908201526101a0610b95838201610ac3565b9082015292915050565b6000806000806102208587031215610bb657600080fd5b610bc08686610ad8565b93506101c0850135610bd181610a0e565b92506101e0850135610be281610a0e565b91506102008501356bffffffffffffffffffffffff81168114610c0457600080fd5b939692955090935050565b60006101c08284031215610c2257600080fd5b50919050565b60006101c08284031215610c3b57600080fd5b610c458383610c0f565b9392505050565b600060208284031215610c5e57600080fd5b5035919050565b6000806101e08385031215610c7957600080fd5b610c838484610c0f565b946101c0939093013593505050565b600080600080600080868803610180811215610cad57600080fd5b8735610cb881610a0e565b965060e0601f1982011215610ccc57600080fd5b50610cd5610a87565b6020880135815260408801356020820152606088013560408201526080880135606082015260a0880135608082015260c088013560a082015260e088013560c082015280955050610100870135935061012087013592506101408701359150610d416101608801610ac3565b90509295509295509295565b6000806101e08385031215610d6157600080fd5b610d6b8484610c0f565b91506101c08301358015158114610d8157600080fd5b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610db557610db5610d8c565b92915050565b60006101c082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151818401525061014080840151818401525061016080840151610e4d828501826001600160a01b03169052565b50506101808381015164ffffffffff908116918401919091526101a09384015116929091019190915290565b60006101c08284031215610e8c57600080fd5b610c458383610ad8565b81810381811115610db557610db5610d8c565b64ffffffffff828116828216039080821115610ec757610ec7610d8c565b5092915050565b6000816000190483118215151615610ee857610ee8610d8c565b500290565b600082610f0a57634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220e302229cf563affa97f111df1da7374b3a5fd1ee88c96d5b895500bbd8ddec1364736f6c63430008100033",
719
- "linkReferences": {},
720
- "deployedLinkReferences": {}
721
- }