@ensuro/core 1.2.5 → 2.0.0-beta1

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 (92) hide show
  1. package/README.md +44 -17
  2. package/build/contracts/EToken.sol/EToken.json +141 -177
  3. package/build/contracts/FlightDelayRiskModule.sol/FlightDelayRiskModule.json +112 -315
  4. package/build/contracts/LPManualWhitelist.sol/LPManualWhitelist.json +34 -2
  5. package/build/contracts/Policy.sol/Policy.json +2 -2
  6. package/build/contracts/PolicyNFT.sol/PolicyNFT.json +16 -3
  7. package/build/contracts/PolicyPool.sol/PolicyPool.json +105 -351
  8. package/build/contracts/PolicyPoolComponent.sol/PolicyPoolComponent.json +32 -0
  9. package/build/contracts/PolicyPoolConfig.sol/PolicyPoolConfig.json +77 -72
  10. package/build/contracts/PremiumsAccount.sol/PremiumsAccount.json +761 -0
  11. package/build/contracts/{BaseAssetManager.sol/BaseAssetManager.json → Reserve.sol/Reserve.json} +23 -191
  12. package/build/contracts/RiskModule.sol/RiskModule.json +94 -302
  13. package/build/contracts/TimeScaled.sol/TimeScaled.json +24 -0
  14. package/build/contracts/TrustfulRiskModule.sol/TrustfulRiskModule.json +142 -325
  15. package/build/contracts/dependencies/ChainlinkClientUpgradeable.sol/ChainlinkClientUpgradeable.json +15 -2
  16. package/build/contracts/dependencies/ERC1967Proxy.sol/ERC1967Proxy.json +64 -0
  17. package/build/{interfaces/IExchange.sol/IExchange.json → contracts/dependencies/IERC20Metadata.sol/IERC20Metadata.json} +83 -79
  18. package/build/{interfaces → contracts/interfaces}/IEToken.sol/IEToken.json +32 -97
  19. package/build/{interfaces → contracts/interfaces}/ILPWhitelist.sol/ILPWhitelist.json +1 -1
  20. package/build/{interfaces → contracts/interfaces}/IPolicyHolder.sol/IPolicyHolder.json +1 -1
  21. package/build/{interfaces → contracts/interfaces}/IPolicyNFT.sol/IPolicyNFT.json +1 -1
  22. package/build/{interfaces → contracts/interfaces}/IPolicyPool.sol/IPolicyPool.json +121 -108
  23. package/build/{interfaces → contracts/interfaces}/IPolicyPoolComponent.sol/IPolicyPoolComponent.json +1 -1
  24. package/build/{interfaces → contracts/interfaces}/IPolicyPoolConfig.sol/IPolicyPoolConfig.json +20 -36
  25. package/build/contracts/interfaces/IPremiumsAccount.sol/IPremiumsAccount.json +302 -0
  26. package/build/{interfaces → contracts/interfaces}/IRiskModule.sol/IRiskModule.json +58 -34
  27. package/build/contracts/mocks/ForwardProxy.sol/ForwardProxy.json +43 -0
  28. package/build/{interfaces/IInsolvencyHook.sol/IInsolvencyHook.json → contracts/mocks/IMintableERC20.sol/IMintableERC20.json} +13 -8
  29. package/build/contracts/mocks/LinkTokenMock.sol/LinkTokenMock.json +370 -0
  30. package/build/contracts/mocks/PolicyHolderMock.sol/PolicyHolderMock.json +202 -0
  31. package/build/contracts/mocks/PolicyPoolComponentMock.sol/PolicyPoolComponentMock.json +35 -0
  32. package/build/contracts/mocks/PolicyPoolMock.sol/PolicyPoolMock.json +603 -0
  33. package/build/contracts/mocks/PolicyPoolMock.sol/PolicyPoolMockForward.json +92 -0
  34. package/build/contracts/mocks/TestCurrency.sol/TestCurrency.json +343 -0
  35. package/build/contracts/mocks/TestCurrencyUUPS.sol/TestCurrencyUUPS.json +353 -0
  36. package/build/contracts/mocks/TestNFT.sol/TestNFT.json +388 -0
  37. package/build/contracts/upgraded/PolicyNFTv1.sol/PolicyNFTv1.json +16 -3
  38. package/build/contracts/upgraded/PolicyNFTv1.sol/PolicyNFTv1_Upgrade.json +16 -3
  39. package/contracts/EToken.sol +188 -273
  40. package/contracts/FlightDelayRiskModule.sol +30 -21
  41. package/contracts/LPManualWhitelist.sol +3 -3
  42. package/contracts/Policy.sol +48 -44
  43. package/contracts/PolicyNFT.sol +2 -2
  44. package/contracts/PolicyPool.sol +114 -467
  45. package/contracts/PolicyPoolComponent.sol +14 -3
  46. package/contracts/PolicyPoolConfig.sol +30 -73
  47. package/contracts/PremiumsAccount.sol +274 -0
  48. package/contracts/Reserve.sol +34 -0
  49. package/contracts/RiskModule.sol +216 -164
  50. package/contracts/TimeScaled.sol +134 -0
  51. package/contracts/TrustfulRiskModule.sol +23 -21
  52. package/contracts/dependencies/ERC1967Proxy.sol +19 -0
  53. package/contracts/dependencies/IERC20Metadata.sol +19 -0
  54. package/contracts/interfaces/IEToken.sol +172 -0
  55. package/{interfaces → contracts/interfaces}/ILPWhitelist.sol +0 -0
  56. package/{interfaces → contracts/interfaces}/IPolicyHolder.sol +0 -0
  57. package/{interfaces → contracts/interfaces}/IPolicyNFT.sol +0 -0
  58. package/contracts/interfaces/IPolicyPool.sol +138 -0
  59. package/{interfaces → contracts/interfaces}/IPolicyPoolComponent.sol +0 -0
  60. package/{interfaces → contracts/interfaces}/IPolicyPoolConfig.sol +31 -20
  61. package/contracts/interfaces/IPremiumsAccount.sol +71 -0
  62. package/contracts/interfaces/IRiskModule.sol +60 -0
  63. package/contracts/mocks/ForwardProxy.sol +66 -0
  64. package/contracts/mocks/IMintableERC20.sol +13 -0
  65. package/contracts/mocks/LinkTokenMock.sol +30 -0
  66. package/contracts/mocks/PolicyHolderMock.sol +68 -0
  67. package/contracts/mocks/PolicyPoolComponentMock.sol +17 -0
  68. package/contracts/mocks/PolicyPoolMock.sol +122 -0
  69. package/contracts/mocks/TestCurrency.sol +35 -0
  70. package/contracts/mocks/TestNFT.sol +23 -0
  71. package/contracts/upgraded/PolicyNFTv1.sol +1 -1
  72. package/js/test-utils.js +278 -0
  73. package/package.json +2 -2
  74. package/build/contracts/AaveAssetManager.sol/AaveAssetManager.json +0 -723
  75. package/build/contracts/DataTypes.sol/DataTypes.json +0 -10
  76. package/build/contracts/Exchange.sol/Exchange.json +0 -546
  77. package/build/contracts/extras/IPriceRiskModule.sol/IPriceRiskModule.json +0 -253
  78. package/build/contracts/extras/PriceRiskModule.sol/PriceRiskModule.json +0 -1036
  79. package/build/interfaces/IAssetManager.sol/IAssetManager.json +0 -31
  80. package/build/interfaces/IExchange.sol/IPriceOracle.json +0 -30
  81. package/contracts/AaveAssetManager.sol +0 -298
  82. package/contracts/BaseAssetManager.sol +0 -301
  83. package/contracts/DataTypes.sol +0 -287
  84. package/contracts/Exchange.sol +0 -173
  85. package/contracts/extras/IPriceRiskModule.sol +0 -41
  86. package/contracts/extras/PriceRiskModule.sol +0 -243
  87. package/interfaces/IAssetManager.sol +0 -23
  88. package/interfaces/IEToken.sol +0 -48
  89. package/interfaces/IExchange.sol +0 -59
  90. package/interfaces/IInsolvencyHook.sol +0 -27
  91. package/interfaces/IPolicyPool.sol +0 -44
  92. package/interfaces/IRiskModule.sol +0 -29
@@ -1,10 +0,0 @@
1
- {
2
- "_format": "hh-sol-artifact-1",
3
- "contractName": "DataTypes",
4
- "sourceName": "contracts/DataTypes.sol",
5
- "abi": [],
6
- "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e7a3c8e4ad77c48f515ff26c59598737f2143fe03a5972a77bfb88f3cccdea6564736f6c63430008060033",
7
- "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e7a3c8e4ad77c48f515ff26c59598737f2143fe03a5972a77bfb88f3cccdea6564736f6c63430008060033",
8
- "linkReferences": {},
9
- "deployedLinkReferences": {}
10
- }
@@ -1,546 +0,0 @@
1
- {
2
- "_format": "hh-sol-artifact-1",
3
- "contractName": "Exchange",
4
- "sourceName": "contracts/Exchange.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 IPolicyPoolConfig.GovernanceActions",
55
- "name": "action",
56
- "type": "uint8"
57
- },
58
- {
59
- "indexed": false,
60
- "internalType": "uint256",
61
- "name": "value",
62
- "type": "uint256"
63
- }
64
- ],
65
- "name": "GovernanceAction",
66
- "type": "event"
67
- },
68
- {
69
- "anonymous": false,
70
- "inputs": [
71
- {
72
- "indexed": false,
73
- "internalType": "address",
74
- "name": "account",
75
- "type": "address"
76
- }
77
- ],
78
- "name": "Paused",
79
- "type": "event"
80
- },
81
- {
82
- "anonymous": false,
83
- "inputs": [
84
- {
85
- "indexed": false,
86
- "internalType": "address",
87
- "name": "account",
88
- "type": "address"
89
- }
90
- ],
91
- "name": "Unpaused",
92
- "type": "event"
93
- },
94
- {
95
- "anonymous": false,
96
- "inputs": [
97
- {
98
- "indexed": true,
99
- "internalType": "address",
100
- "name": "implementation",
101
- "type": "address"
102
- }
103
- ],
104
- "name": "Upgraded",
105
- "type": "event"
106
- },
107
- {
108
- "inputs": [],
109
- "name": "GUARDIAN_ROLE",
110
- "outputs": [
111
- {
112
- "internalType": "bytes32",
113
- "name": "",
114
- "type": "bytes32"
115
- }
116
- ],
117
- "stateMutability": "view",
118
- "type": "function"
119
- },
120
- {
121
- "inputs": [],
122
- "name": "LEVEL1_ROLE",
123
- "outputs": [
124
- {
125
- "internalType": "bytes32",
126
- "name": "",
127
- "type": "bytes32"
128
- }
129
- ],
130
- "stateMutability": "view",
131
- "type": "function"
132
- },
133
- {
134
- "inputs": [],
135
- "name": "LEVEL2_ROLE",
136
- "outputs": [
137
- {
138
- "internalType": "bytes32",
139
- "name": "",
140
- "type": "bytes32"
141
- }
142
- ],
143
- "stateMutability": "view",
144
- "type": "function"
145
- },
146
- {
147
- "inputs": [],
148
- "name": "LEVEL3_ROLE",
149
- "outputs": [
150
- {
151
- "internalType": "bytes32",
152
- "name": "",
153
- "type": "bytes32"
154
- }
155
- ],
156
- "stateMutability": "view",
157
- "type": "function"
158
- },
159
- {
160
- "inputs": [],
161
- "name": "TWEAK_EXPIRATION",
162
- "outputs": [
163
- {
164
- "internalType": "uint40",
165
- "name": "",
166
- "type": "uint40"
167
- }
168
- ],
169
- "stateMutability": "view",
170
- "type": "function"
171
- },
172
- {
173
- "inputs": [
174
- {
175
- "internalType": "address",
176
- "name": "assetIn",
177
- "type": "address"
178
- },
179
- {
180
- "internalType": "address",
181
- "name": "assetOut",
182
- "type": "address"
183
- },
184
- {
185
- "internalType": "uint256",
186
- "name": "amountOutExact",
187
- "type": "uint256"
188
- },
189
- {
190
- "internalType": "address",
191
- "name": "outAddr",
192
- "type": "address"
193
- },
194
- {
195
- "internalType": "uint256",
196
- "name": "deadline",
197
- "type": "uint256"
198
- }
199
- ],
200
- "name": "buy",
201
- "outputs": [
202
- {
203
- "internalType": "bytes",
204
- "name": "",
205
- "type": "bytes"
206
- }
207
- ],
208
- "stateMutability": "view",
209
- "type": "function"
210
- },
211
- {
212
- "inputs": [
213
- {
214
- "internalType": "address",
215
- "name": "assetFrom",
216
- "type": "address"
217
- },
218
- {
219
- "internalType": "address",
220
- "name": "assetTo",
221
- "type": "address"
222
- },
223
- {
224
- "internalType": "uint256",
225
- "name": "amount",
226
- "type": "uint256"
227
- }
228
- ],
229
- "name": "convert",
230
- "outputs": [
231
- {
232
- "internalType": "uint256",
233
- "name": "",
234
- "type": "uint256"
235
- }
236
- ],
237
- "stateMutability": "view",
238
- "type": "function"
239
- },
240
- {
241
- "inputs": [],
242
- "name": "currency",
243
- "outputs": [
244
- {
245
- "internalType": "contract IERC20Metadata",
246
- "name": "",
247
- "type": "address"
248
- }
249
- ],
250
- "stateMutability": "view",
251
- "type": "function"
252
- },
253
- {
254
- "inputs": [
255
- {
256
- "internalType": "bytes",
257
- "name": "responseData",
258
- "type": "bytes"
259
- }
260
- ],
261
- "name": "decodeSwapOut",
262
- "outputs": [
263
- {
264
- "internalType": "uint256",
265
- "name": "",
266
- "type": "uint256"
267
- }
268
- ],
269
- "stateMutability": "pure",
270
- "type": "function"
271
- },
272
- {
273
- "inputs": [
274
- {
275
- "internalType": "address",
276
- "name": "assetIn",
277
- "type": "address"
278
- },
279
- {
280
- "internalType": "address",
281
- "name": "assetOut",
282
- "type": "address"
283
- },
284
- {
285
- "internalType": "uint256",
286
- "name": "amountOut",
287
- "type": "uint256"
288
- }
289
- ],
290
- "name": "getAmountIn",
291
- "outputs": [
292
- {
293
- "internalType": "uint256",
294
- "name": "",
295
- "type": "uint256"
296
- }
297
- ],
298
- "stateMutability": "view",
299
- "type": "function"
300
- },
301
- {
302
- "inputs": [
303
- {
304
- "internalType": "address",
305
- "name": "asset",
306
- "type": "address"
307
- },
308
- {
309
- "internalType": "address",
310
- "name": "expressedInAsset",
311
- "type": "address"
312
- }
313
- ],
314
- "name": "getExchangeRate",
315
- "outputs": [
316
- {
317
- "internalType": "uint256",
318
- "name": "",
319
- "type": "uint256"
320
- }
321
- ],
322
- "stateMutability": "view",
323
- "type": "function"
324
- },
325
- {
326
- "inputs": [],
327
- "name": "getPriceOracle",
328
- "outputs": [
329
- {
330
- "internalType": "contract IPriceOracle",
331
- "name": "",
332
- "type": "address"
333
- }
334
- ],
335
- "stateMutability": "view",
336
- "type": "function"
337
- },
338
- {
339
- "inputs": [],
340
- "name": "getSwapRouter",
341
- "outputs": [
342
- {
343
- "internalType": "address",
344
- "name": "",
345
- "type": "address"
346
- }
347
- ],
348
- "stateMutability": "view",
349
- "type": "function"
350
- },
351
- {
352
- "inputs": [
353
- {
354
- "internalType": "contract IPriceOracle",
355
- "name": "oracle_",
356
- "type": "address"
357
- },
358
- {
359
- "internalType": "contract IUniswapV2Router02",
360
- "name": "swapRouter_",
361
- "type": "address"
362
- },
363
- {
364
- "internalType": "uint256",
365
- "name": "maxSlippage_",
366
- "type": "uint256"
367
- }
368
- ],
369
- "name": "initialize",
370
- "outputs": [],
371
- "stateMutability": "nonpayable",
372
- "type": "function"
373
- },
374
- {
375
- "inputs": [],
376
- "name": "lastTweak",
377
- "outputs": [
378
- {
379
- "internalType": "uint40",
380
- "name": "",
381
- "type": "uint40"
382
- },
383
- {
384
- "internalType": "uint56",
385
- "name": "",
386
- "type": "uint56"
387
- }
388
- ],
389
- "stateMutability": "view",
390
- "type": "function"
391
- },
392
- {
393
- "inputs": [],
394
- "name": "maxSlippage",
395
- "outputs": [
396
- {
397
- "internalType": "uint256",
398
- "name": "",
399
- "type": "uint256"
400
- }
401
- ],
402
- "stateMutability": "view",
403
- "type": "function"
404
- },
405
- {
406
- "inputs": [],
407
- "name": "pause",
408
- "outputs": [],
409
- "stateMutability": "nonpayable",
410
- "type": "function"
411
- },
412
- {
413
- "inputs": [],
414
- "name": "paused",
415
- "outputs": [
416
- {
417
- "internalType": "bool",
418
- "name": "",
419
- "type": "bool"
420
- }
421
- ],
422
- "stateMutability": "view",
423
- "type": "function"
424
- },
425
- {
426
- "inputs": [],
427
- "name": "policyPool",
428
- "outputs": [
429
- {
430
- "internalType": "contract IPolicyPool",
431
- "name": "",
432
- "type": "address"
433
- }
434
- ],
435
- "stateMutability": "view",
436
- "type": "function"
437
- },
438
- {
439
- "inputs": [],
440
- "name": "proxiableUUID",
441
- "outputs": [
442
- {
443
- "internalType": "bytes32",
444
- "name": "",
445
- "type": "bytes32"
446
- }
447
- ],
448
- "stateMutability": "view",
449
- "type": "function"
450
- },
451
- {
452
- "inputs": [
453
- {
454
- "internalType": "address",
455
- "name": "assetIn",
456
- "type": "address"
457
- },
458
- {
459
- "internalType": "address",
460
- "name": "assetOut",
461
- "type": "address"
462
- },
463
- {
464
- "internalType": "uint256",
465
- "name": "amountInExact",
466
- "type": "uint256"
467
- },
468
- {
469
- "internalType": "address",
470
- "name": "outAddr",
471
- "type": "address"
472
- },
473
- {
474
- "internalType": "uint256",
475
- "name": "deadline",
476
- "type": "uint256"
477
- }
478
- ],
479
- "name": "sell",
480
- "outputs": [
481
- {
482
- "internalType": "bytes",
483
- "name": "",
484
- "type": "bytes"
485
- }
486
- ],
487
- "stateMutability": "view",
488
- "type": "function"
489
- },
490
- {
491
- "inputs": [
492
- {
493
- "internalType": "uint256",
494
- "name": "newValue",
495
- "type": "uint256"
496
- }
497
- ],
498
- "name": "setMaxSlippage",
499
- "outputs": [],
500
- "stateMutability": "nonpayable",
501
- "type": "function"
502
- },
503
- {
504
- "inputs": [],
505
- "name": "unpause",
506
- "outputs": [],
507
- "stateMutability": "nonpayable",
508
- "type": "function"
509
- },
510
- {
511
- "inputs": [
512
- {
513
- "internalType": "address",
514
- "name": "newImplementation",
515
- "type": "address"
516
- }
517
- ],
518
- "name": "upgradeTo",
519
- "outputs": [],
520
- "stateMutability": "nonpayable",
521
- "type": "function"
522
- },
523
- {
524
- "inputs": [
525
- {
526
- "internalType": "address",
527
- "name": "newImplementation",
528
- "type": "address"
529
- },
530
- {
531
- "internalType": "bytes",
532
- "name": "data",
533
- "type": "bytes"
534
- }
535
- ],
536
- "name": "upgradeToAndCall",
537
- "outputs": [],
538
- "stateMutability": "payable",
539
- "type": "function"
540
- }
541
- ],
542
- "bytecode": "0x60c06040523060601b6080523480156200001857600080fd5b50604051620028dc380380620028dc8339810160408190526200003b9162000051565b60601b6001600160601b03191660a05262000083565b6000602082840312156200006457600080fd5b81516001600160a01b03811681146200007c57600080fd5b9392505050565b60805160601c60a05160601c6127e7620000f5600039600081816102b4015281816106be0152818161080401528181610d35015281816110ce0152818161139401526116a50152600081816105b7015281816105f7015281816109f201528181610a320152610ac101526127e76000f3fe6080604052600436106101665760003560e01c80635b494dd5116100d15780638456cb591161008a578063e11cfcbc11610064578063e11cfcbc1461046d578063e5a6b10f1461048d578063f67b2bad146104a2578063fca513a8146104d657600080fd5b80638456cb59146104235780638c04166f14610438578063baaa61be1461044d57600080fd5b80635b494dd5146103345780635c975abb14610368578063655450f51461038b57806367767f4e146103b8578063725c9c49146103d85780637ed5acfa146103f657600080fd5b8063468a8c9f11610123578063468a8c9f146102375780634a47a3e0146102715780634d15eb03146102a55780634f1ef286146102ec57806352d1902d146102ff57806353b609b51461031457600080fd5b80631794bb3c1461016b578063248391ff1461018d57806324ea54f4146101c05780633659cfe6146101e25780633f4ba83a1461020257806343f68a4914610217575b600080fd5b34801561017757600080fd5b5061018b610186366004612010565b6104fb565b005b34801561019957600080fd5b506101ad6101a8366004612010565b61058c565b6040519081526020015b60405180910390f35b3480156101cc57600080fd5b506101ad60008051602061279283398151915281565b3480156101ee57600080fd5b5061018b6101fd366004611fba565b6105ac565b34801561020e57600080fd5b5061018b61068c565b34801561022357600080fd5b5061018b610232366004612236565b6107c0565b34801561024357600080fd5b5060c9546040805164ffffffffff83168152600160281b90920466ffffffffffffff166020830152016101b7565b34801561027d57600080fd5b506101ad7fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c081565b3480156102b157600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020016101b7565b61018b6102fa3660046120ac565b6109e7565b34801561030b57600080fd5b506101ad610ab4565b34801561032057600080fd5b506101ad61032f366004612010565b610b67565b34801561034057600080fd5b506101ad7f5ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c2781565b34801561037457600080fd5b5060975460ff1660405190151581526020016101b7565b34801561039757600080fd5b506103ab6103a6366004612051565b610c1a565b6040516101b791906122fe565b3480156103c457600080fd5b506103ab6103d3366004612051565b610ca2565b3480156103e457600080fd5b5060ca546001600160a01b03166102d4565b34801561040257600080fd5b5061040d6201518081565b60405164ffffffffff90911681526020016101b7565b34801561042f57600080fd5b5061018b610d24565b34801561044457600080fd5b5060cb546101ad565b34801561045957600080fd5b506101ad610468366004611fd7565b610e2c565b34801561047957600080fd5b506101ad6104883660046121e4565b611093565b34801561049957600080fd5b506102d46110ca565b3480156104ae57600080fd5b506101ad7fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb281565b3480156104e257600080fd5b5060c954600160601b90046001600160a01b03166102d4565b600054610100900460ff166105165760005460ff161561051a565b303b155b61053f5760405162461bcd60e51b8152600401610536906123a9565b60405180910390fd5b600054610100900460ff16158015610561576000805461ffff19166101011790555b610569611162565b6105748484846111e3565b8015610586576000805461ff00191690555b50505050565b60006105a261059b8585610e2c565b8390611291565b90505b9392505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156105f55760405162461bcd60e51b815260040161053690612311565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661063e60008051602061274b833981519152546001600160a01b031690565b6001600160a01b0316146106645760405162461bcd60e51b81526004016105369061235d565b61066d81611362565b604080516000808252602082019092526106899183919061148f565b50565b6000805160206127928339815191527fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb27f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166379502c556040518163ffffffff1660e01b815260040160206040518083038186803b15801561071557600080fd5b505afa158015610729573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074d9190612219565b60405163c5b8f5cf60e01b815260048101849052602481018390523360448201526001600160a01b03919091169063c5b8f5cf9060640160006040518083038186803b15801561079c57600080fd5b505afa1580156107b0573d6000803e3d6000fd5b505050506107bc61160e565b5050565b7fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c07f5ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c277f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166379502c556040518163ffffffff1660e01b815260040160206040518083038186803b15801561085b57600080fd5b505afa15801561086f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108939190612219565b60405163c5b8f5cf60e01b815260048101849052602481018390523360448201526001600160a01b03919091169063c5b8f5cf9060640160006040518083038186803b1580156108e257600080fd5b505afa1580156108f6573d6000803e3d6000fd5b5050505067016345785d8a00008311156109225760405162461bcd60e51b8152600401610536906123f7565b600061094d7fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c06116a1565b159050801580610970575061097060cb54856af8277896582678ac0000006117b4565b6109d65760405162461bcd60e51b815260206004820152603160248201527f547765616b2065786365656465643a206d6178536c69707061676520747765616044820152706b73206f6e6c7920757020746f2033302560781b6064820152608401610536565b60cb84905561058660188583611836565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610a305760405162461bcd60e51b815260040161053690612311565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610a7960008051602061274b833981519152546001600160a01b031690565b6001600160a01b031614610a9f5760405162461bcd60e51b81526004016105369061235d565b610aa882611362565b6107bc8282600161148f565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b545760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610536565b5060008051602061274b83398151915290565b60ca546000906001600160a01b0316631f00ca7483610b868787611897565b6040518363ffffffff1660e01b8152600401610ba3929190612484565b60006040518083038186803b158015610bbb57600080fd5b505afa158015610bcf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bf791908101906120fc565b600081518110610c0957610c09612709565b602002602001015190509392505050565b60606000610c4860cb54670de0b6b3a7640000610c379190612651565b610c4289898961058c565b90611291565b90508481610c568989611897565b8686604051602401610c6c95949392919061249d565b60408051601f198184030181529190526020810180516001600160e01b03166338ed173960e01b17905291505095945050505050565b60606000610cca60cb54670de0b6b3a7640000610cbf919061250a565b610c42888a8961058c565b90508481610cd88989611897565b8686604051602401610cee95949392919061249d565b60408051601f198184030181529190526020810180516001600160e01b0316634401edf760e11b17905291505095945050505050565b6000805160206127928339815191527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166379502c556040518163ffffffff1660e01b815260040160206040518083038186803b158015610d8c57600080fd5b505afa158015610da0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc49190612219565b6040516312d9a6ad60e01b8152600481018390523360248201526001600160a01b0391909116906312d9a6ad9060440160006040518083038186803b158015610e0c57600080fd5b505afa158015610e20573d6000803e3d6000fd5b50505050610689611924565b60c95460405163b3596f0760e01b81526001600160a01b0383811660048301526000928392610f4592600160601b9092049091169063b3596f079060240160206040518083038186803b158015610e8257600080fd5b505afa158015610e96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eba91906121cb565b60c95460405163b3596f0760e01b81526001600160a01b038881166004830152600160601b9092049091169063b3596f079060240160206040518083038186803b158015610f0757600080fd5b505afa158015610f1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3f91906121cb565b9061199f565b90506000846001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610f8257600080fd5b505afa158015610f96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fba919061224f565b90506000846001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610ff757600080fd5b505afa15801561100b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102f919061224f565b90508060ff168260ff16111561106557611049818361268e565b61105490600a612587565b61105e9084612522565b9250611087565b61106f828261268e565b61107a90600a612587565b6110849084612632565b92505b50909150505b92915050565b6000818060200190518101906110a991906120fc565b6001815181106110bb576110bb612709565b60200260200101519050919050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e5a6b10f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561112557600080fd5b505afa158015611139573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115d9190612219565b905090565b600054610100900460ff1661117d5760005460ff1615611181565b303b155b61119d5760405162461bcd60e51b8152600401610536906123a9565b600054610100900460ff161580156111bf576000805461ffff19166101011790555b6111c7611aa7565b6111cf611ad0565b8015610689576000805461ff001916905550565b600054610100900460ff166111fe5760005460ff1615611202565b303b155b61121e5760405162461bcd60e51b8152600401610536906123a9565b600054610100900460ff16158015611240576000805461ffff19166101011790555b60c980546bffffffffffffffffffffffff16600160601b6001600160a01b03878116919091029190911790915560ca80546001600160a01b03191691851691909117905560cb829055610574611aff565b600082158061129e575081155b156112ab5750600061108d565b816112bf6002670de0b6b3a7640000612522565b6112cb90600019612651565b6112d59190612522565b8311156113305760405162461bcd60e51b8152602060048201526024808201527f7761644d756c3a204d617468204d756c7469706c69636174696f6e204f766572604482015263666c6f7760e01b6064820152608401610536565b670de0b6b3a7640000611344600282612522565b61134e8486612632565b611358919061250a565b6105a59190612522565b6000805160206127928339815191527fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb27f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166379502c556040518163ffffffff1660e01b815260040160206040518083038186803b1580156113eb57600080fd5b505afa1580156113ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114239190612219565b60405163c5b8f5cf60e01b815260048101849052602481018390523360448201526001600160a01b03919091169063c5b8f5cf9060640160006040518083038186803b15801561147257600080fd5b505afa158015611486573d6000803e3d6000fd5b50505050505050565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156114c7576114c283611b80565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561150057600080fd5b505afa925050508015611530575060408051601f3d908101601f1916820190925261152d918101906121cb565b60015b6115935760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610536565b60008051602061274b83398151915281146116025760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610536565b506114c2838383611c1c565b60975460ff166116575760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610536565b6097805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166379502c556040518163ffffffff1660e01b815260040160206040518083038186803b1580156116fc57600080fd5b505afa158015611710573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117349190612219565b604051632474521560e21b8152600481018490523360248201526001600160a01b0391909116906391d148549060440160206040518083038186803b15801561177c57600080fd5b505afa158015611790573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108d91906121a9565b6000828414156117c6575060016105a5565b836117dd5750670de0b6b3a76400008110156105a5565b826117ea575060006105a5565b828410156118195781670de0b6b3a7640000611806858761199f565b6118109190612651565b111590506105a5565b81611824848661199f565b61181090670de0b6b3a7640000612651565b61183e611aff565b801561184d5761184d83611c41565b82601c81111561185f5761185f6126f3565b6040518381527f7bc647fe5043209e2019aa3503b79c1b0dd83eb61c56013d373a7584ff6bfb139060200160405180910390a2505050565b6040805160028082526060808301845292600092919060208301908036833701905050905083816000815181106118d0576118d0612709565b60200260200101906001600160a01b031690816001600160a01b031681525050828160018151811061190457611904612709565b6001600160a01b0390921660209283029190910190910152905092915050565b60975460ff161561196a5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610536565b6097805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586116843390565b6000816119ee5760405162461bcd60e51b815260206004820152601860248201527f7761644469763a204469766973696f6e206279207a65726f00000000000000006044820152606401610536565b60006119fb600284612522565b9050670de0b6b3a7640000611a1282600019612651565b611a1c9190612522565b841115611a775760405162461bcd60e51b8152602060048201526024808201527f7761644469763a204d617468204d756c7469706c69636174696f6e204f766572604482015263666c6f7760e01b6064820152608401610536565b8281611a8b670de0b6b3a764000087612632565b611a95919061250a565b611a9f9190612522565b949350505050565b600054610100900460ff16611ace5760405162461bcd60e51b815260040161053690612439565b565b600054610100900460ff16611af75760405162461bcd60e51b815260040161053690612439565b611ace611daa565b67016345785d8a000060cb541115611b295760405162461bcd60e51b8152600401610536906123f7565b60c954600160601b90046001600160a01b0316611ace5760405162461bcd60e51b815260206004820152601560248201527449206e6565642061207072696365206f7261636c6560581b6044820152606401610536565b6001600160a01b0381163b611bed5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610536565b60008051602061274b83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b611c2583611ddd565b600082511180611c325750805b156114c2576105868383611e1d565b6000600182601c811115611c5757611c576126f3565b611c61919061268e565b60c954600160ff929092169190911b91506201518090611c889064ffffffffff1642612668565b64ffffffffff161115611cca5760c9805466ffffffffffffff8316600160281b026bffffffffffffffffffffffff1990911664ffffffffff4216171790555050565b60c954600160281b9004811666ffffffffffffff16611d2c5760c9805464ffffffffff421664ffffffffff1966ffffffffffffff808616600160281b808604929092161702166bffffffffffffffffffffffff19909216919091171790555050565b60405162461bcd60e51b815260206004820152604760248201527f596f7520616c726561647920747765616b6564207468697320706172616d657460448201527f657220726563656e746c792e2057616974206265666f726520747765616b696e606482015266339030b3b0b4b760c91b608482015260a401610536565b600054610100900460ff16611dd15760405162461bcd60e51b815260040161053690612439565b6097805460ff19169055565b611de681611b80565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b611e855760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610536565b600080846001600160a01b031684604051611ea091906122e2565b600060405180830381855af49150503d8060008114611edb576040519150601f19603f3d011682016040523d82523d6000602084013e611ee0565b606091505b5091509150611f08828260405180606001604052806027815260200161276b60279139611f11565b95945050505050565b60608315611f205750816105a5565b825115611f305782518084602001fd5b8160405162461bcd60e51b815260040161053691906122fe565b600082601f830112611f5b57600080fd5b813567ffffffffffffffff811115611f7557611f7561271f565b611f88601f8201601f19166020016124d9565b818152846020838601011115611f9d57600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215611fcc57600080fd5b81356105a581612735565b60008060408385031215611fea57600080fd5b8235611ff581612735565b9150602083013561200581612735565b809150509250929050565b60008060006060848603121561202557600080fd5b833561203081612735565b9250602084013561204081612735565b929592945050506040919091013590565b600080600080600060a0868803121561206957600080fd5b853561207481612735565b9450602086013561208481612735565b935060408601359250606086013561209b81612735565b949793965091946080013592915050565b600080604083850312156120bf57600080fd5b82356120ca81612735565b9150602083013567ffffffffffffffff8111156120e657600080fd5b6120f285828601611f4a565b9150509250929050565b6000602080838503121561210f57600080fd5b825167ffffffffffffffff8082111561212757600080fd5b818501915085601f83011261213b57600080fd5b81518181111561214d5761214d61271f565b8060051b915061215e8483016124d9565b8181528481019084860184860187018a101561217957600080fd5b600095505b8386101561219c57805183526001959095019491860191860161217e565b5098975050505050505050565b6000602082840312156121bb57600080fd5b815180151581146105a557600080fd5b6000602082840312156121dd57600080fd5b5051919050565b6000602082840312156121f657600080fd5b813567ffffffffffffffff81111561220d57600080fd5b611a9f84828501611f4a565b60006020828403121561222b57600080fd5b81516105a581612735565b60006020828403121561224857600080fd5b5035919050565b60006020828403121561226157600080fd5b815160ff811681146105a557600080fd5b600081518084526020808501945080840160005b838110156122ab5781516001600160a01b031687529582019590820190600101612286565b509495945050505050565b600081518084526122ce8160208601602086016126b1565b601f01601f19169290920160200192915050565b600082516122f48184602087016126b1565b9190910192915050565b6020815260006105a560208301846122b6565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b60208082526022908201527f6d6178536c6970706167652063616e2774206265206d6f7265207468616e2031604082015261302560f01b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b8281526040602082015260006105a26040830184612272565b85815284602082015260a0604082015260006124bc60a0830186612272565b6001600160a01b0394909416606083015250608001529392505050565b604051601f8201601f1916810167ffffffffffffffff811182821017156125025761250261271f565b604052919050565b6000821982111561251d5761251d6126dd565b500190565b60008261253f57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b8085111561257f578160001904821115612565576125656126dd565b8085161561257257918102915b93841c9390800290612549565b509250929050565b60006105a560ff8416836000826125a05750600161108d565b816125ad5750600061108d565b81600181146125c357600281146125cd576125e9565b600191505061108d565b60ff8411156125de576125de6126dd565b50506001821b61108d565b5060208310610133831016604e8410600b841016171561260c575081810a61108d565b6126168383612544565b806000190482111561262a5761262a6126dd565b029392505050565b600081600019048311821515161561264c5761264c6126dd565b500290565b600082821015612663576126636126dd565b500390565b600064ffffffffff83811690831681811015612686576126866126dd565b039392505050565b600060ff821660ff8416808210156126a8576126a86126dd565b90039392505050565b60005b838110156126cc5781810151838201526020016126b4565b838111156105865750506000910152565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461068957600080fdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656455435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a26469706673582212204befacc368d18f77fb5bec8a3bb8d3b8b08677fed893ca8cfc192a6acc1721ba64736f6c63430008060033",
543
- "deployedBytecode": "0x6080604052600436106101665760003560e01c80635b494dd5116100d15780638456cb591161008a578063e11cfcbc11610064578063e11cfcbc1461046d578063e5a6b10f1461048d578063f67b2bad146104a2578063fca513a8146104d657600080fd5b80638456cb59146104235780638c04166f14610438578063baaa61be1461044d57600080fd5b80635b494dd5146103345780635c975abb14610368578063655450f51461038b57806367767f4e146103b8578063725c9c49146103d85780637ed5acfa146103f657600080fd5b8063468a8c9f11610123578063468a8c9f146102375780634a47a3e0146102715780634d15eb03146102a55780634f1ef286146102ec57806352d1902d146102ff57806353b609b51461031457600080fd5b80631794bb3c1461016b578063248391ff1461018d57806324ea54f4146101c05780633659cfe6146101e25780633f4ba83a1461020257806343f68a4914610217575b600080fd5b34801561017757600080fd5b5061018b610186366004612010565b6104fb565b005b34801561019957600080fd5b506101ad6101a8366004612010565b61058c565b6040519081526020015b60405180910390f35b3480156101cc57600080fd5b506101ad60008051602061279283398151915281565b3480156101ee57600080fd5b5061018b6101fd366004611fba565b6105ac565b34801561020e57600080fd5b5061018b61068c565b34801561022357600080fd5b5061018b610232366004612236565b6107c0565b34801561024357600080fd5b5060c9546040805164ffffffffff83168152600160281b90920466ffffffffffffff166020830152016101b7565b34801561027d57600080fd5b506101ad7fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c081565b3480156102b157600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020016101b7565b61018b6102fa3660046120ac565b6109e7565b34801561030b57600080fd5b506101ad610ab4565b34801561032057600080fd5b506101ad61032f366004612010565b610b67565b34801561034057600080fd5b506101ad7f5ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c2781565b34801561037457600080fd5b5060975460ff1660405190151581526020016101b7565b34801561039757600080fd5b506103ab6103a6366004612051565b610c1a565b6040516101b791906122fe565b3480156103c457600080fd5b506103ab6103d3366004612051565b610ca2565b3480156103e457600080fd5b5060ca546001600160a01b03166102d4565b34801561040257600080fd5b5061040d6201518081565b60405164ffffffffff90911681526020016101b7565b34801561042f57600080fd5b5061018b610d24565b34801561044457600080fd5b5060cb546101ad565b34801561045957600080fd5b506101ad610468366004611fd7565b610e2c565b34801561047957600080fd5b506101ad6104883660046121e4565b611093565b34801561049957600080fd5b506102d46110ca565b3480156104ae57600080fd5b506101ad7fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb281565b3480156104e257600080fd5b5060c954600160601b90046001600160a01b03166102d4565b600054610100900460ff166105165760005460ff161561051a565b303b155b61053f5760405162461bcd60e51b8152600401610536906123a9565b60405180910390fd5b600054610100900460ff16158015610561576000805461ffff19166101011790555b610569611162565b6105748484846111e3565b8015610586576000805461ff00191690555b50505050565b60006105a261059b8585610e2c565b8390611291565b90505b9392505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156105f55760405162461bcd60e51b815260040161053690612311565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661063e60008051602061274b833981519152546001600160a01b031690565b6001600160a01b0316146106645760405162461bcd60e51b81526004016105369061235d565b61066d81611362565b604080516000808252602082019092526106899183919061148f565b50565b6000805160206127928339815191527fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb27f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166379502c556040518163ffffffff1660e01b815260040160206040518083038186803b15801561071557600080fd5b505afa158015610729573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074d9190612219565b60405163c5b8f5cf60e01b815260048101849052602481018390523360448201526001600160a01b03919091169063c5b8f5cf9060640160006040518083038186803b15801561079c57600080fd5b505afa1580156107b0573d6000803e3d6000fd5b505050506107bc61160e565b5050565b7fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c07f5ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c277f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166379502c556040518163ffffffff1660e01b815260040160206040518083038186803b15801561085b57600080fd5b505afa15801561086f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108939190612219565b60405163c5b8f5cf60e01b815260048101849052602481018390523360448201526001600160a01b03919091169063c5b8f5cf9060640160006040518083038186803b1580156108e257600080fd5b505afa1580156108f6573d6000803e3d6000fd5b5050505067016345785d8a00008311156109225760405162461bcd60e51b8152600401610536906123f7565b600061094d7fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c06116a1565b159050801580610970575061097060cb54856af8277896582678ac0000006117b4565b6109d65760405162461bcd60e51b815260206004820152603160248201527f547765616b2065786365656465643a206d6178536c69707061676520747765616044820152706b73206f6e6c7920757020746f2033302560781b6064820152608401610536565b60cb84905561058660188583611836565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610a305760405162461bcd60e51b815260040161053690612311565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610a7960008051602061274b833981519152546001600160a01b031690565b6001600160a01b031614610a9f5760405162461bcd60e51b81526004016105369061235d565b610aa882611362565b6107bc8282600161148f565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b545760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610536565b5060008051602061274b83398151915290565b60ca546000906001600160a01b0316631f00ca7483610b868787611897565b6040518363ffffffff1660e01b8152600401610ba3929190612484565b60006040518083038186803b158015610bbb57600080fd5b505afa158015610bcf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bf791908101906120fc565b600081518110610c0957610c09612709565b602002602001015190509392505050565b60606000610c4860cb54670de0b6b3a7640000610c379190612651565b610c4289898961058c565b90611291565b90508481610c568989611897565b8686604051602401610c6c95949392919061249d565b60408051601f198184030181529190526020810180516001600160e01b03166338ed173960e01b17905291505095945050505050565b60606000610cca60cb54670de0b6b3a7640000610cbf919061250a565b610c42888a8961058c565b90508481610cd88989611897565b8686604051602401610cee95949392919061249d565b60408051601f198184030181529190526020810180516001600160e01b0316634401edf760e11b17905291505095945050505050565b6000805160206127928339815191527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166379502c556040518163ffffffff1660e01b815260040160206040518083038186803b158015610d8c57600080fd5b505afa158015610da0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc49190612219565b6040516312d9a6ad60e01b8152600481018390523360248201526001600160a01b0391909116906312d9a6ad9060440160006040518083038186803b158015610e0c57600080fd5b505afa158015610e20573d6000803e3d6000fd5b50505050610689611924565b60c95460405163b3596f0760e01b81526001600160a01b0383811660048301526000928392610f4592600160601b9092049091169063b3596f079060240160206040518083038186803b158015610e8257600080fd5b505afa158015610e96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eba91906121cb565b60c95460405163b3596f0760e01b81526001600160a01b038881166004830152600160601b9092049091169063b3596f079060240160206040518083038186803b158015610f0757600080fd5b505afa158015610f1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3f91906121cb565b9061199f565b90506000846001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610f8257600080fd5b505afa158015610f96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fba919061224f565b90506000846001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610ff757600080fd5b505afa15801561100b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102f919061224f565b90508060ff168260ff16111561106557611049818361268e565b61105490600a612587565b61105e9084612522565b9250611087565b61106f828261268e565b61107a90600a612587565b6110849084612632565b92505b50909150505b92915050565b6000818060200190518101906110a991906120fc565b6001815181106110bb576110bb612709565b60200260200101519050919050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e5a6b10f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561112557600080fd5b505afa158015611139573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115d9190612219565b905090565b600054610100900460ff1661117d5760005460ff1615611181565b303b155b61119d5760405162461bcd60e51b8152600401610536906123a9565b600054610100900460ff161580156111bf576000805461ffff19166101011790555b6111c7611aa7565b6111cf611ad0565b8015610689576000805461ff001916905550565b600054610100900460ff166111fe5760005460ff1615611202565b303b155b61121e5760405162461bcd60e51b8152600401610536906123a9565b600054610100900460ff16158015611240576000805461ffff19166101011790555b60c980546bffffffffffffffffffffffff16600160601b6001600160a01b03878116919091029190911790915560ca80546001600160a01b03191691851691909117905560cb829055610574611aff565b600082158061129e575081155b156112ab5750600061108d565b816112bf6002670de0b6b3a7640000612522565b6112cb90600019612651565b6112d59190612522565b8311156113305760405162461bcd60e51b8152602060048201526024808201527f7761644d756c3a204d617468204d756c7469706c69636174696f6e204f766572604482015263666c6f7760e01b6064820152608401610536565b670de0b6b3a7640000611344600282612522565b61134e8486612632565b611358919061250a565b6105a59190612522565b6000805160206127928339815191527fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb27f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166379502c556040518163ffffffff1660e01b815260040160206040518083038186803b1580156113eb57600080fd5b505afa1580156113ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114239190612219565b60405163c5b8f5cf60e01b815260048101849052602481018390523360448201526001600160a01b03919091169063c5b8f5cf9060640160006040518083038186803b15801561147257600080fd5b505afa158015611486573d6000803e3d6000fd5b50505050505050565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156114c7576114c283611b80565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561150057600080fd5b505afa925050508015611530575060408051601f3d908101601f1916820190925261152d918101906121cb565b60015b6115935760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610536565b60008051602061274b83398151915281146116025760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610536565b506114c2838383611c1c565b60975460ff166116575760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610536565b6097805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166379502c556040518163ffffffff1660e01b815260040160206040518083038186803b1580156116fc57600080fd5b505afa158015611710573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117349190612219565b604051632474521560e21b8152600481018490523360248201526001600160a01b0391909116906391d148549060440160206040518083038186803b15801561177c57600080fd5b505afa158015611790573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108d91906121a9565b6000828414156117c6575060016105a5565b836117dd5750670de0b6b3a76400008110156105a5565b826117ea575060006105a5565b828410156118195781670de0b6b3a7640000611806858761199f565b6118109190612651565b111590506105a5565b81611824848661199f565b61181090670de0b6b3a7640000612651565b61183e611aff565b801561184d5761184d83611c41565b82601c81111561185f5761185f6126f3565b6040518381527f7bc647fe5043209e2019aa3503b79c1b0dd83eb61c56013d373a7584ff6bfb139060200160405180910390a2505050565b6040805160028082526060808301845292600092919060208301908036833701905050905083816000815181106118d0576118d0612709565b60200260200101906001600160a01b031690816001600160a01b031681525050828160018151811061190457611904612709565b6001600160a01b0390921660209283029190910190910152905092915050565b60975460ff161561196a5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610536565b6097805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586116843390565b6000816119ee5760405162461bcd60e51b815260206004820152601860248201527f7761644469763a204469766973696f6e206279207a65726f00000000000000006044820152606401610536565b60006119fb600284612522565b9050670de0b6b3a7640000611a1282600019612651565b611a1c9190612522565b841115611a775760405162461bcd60e51b8152602060048201526024808201527f7761644469763a204d617468204d756c7469706c69636174696f6e204f766572604482015263666c6f7760e01b6064820152608401610536565b8281611a8b670de0b6b3a764000087612632565b611a95919061250a565b611a9f9190612522565b949350505050565b600054610100900460ff16611ace5760405162461bcd60e51b815260040161053690612439565b565b600054610100900460ff16611af75760405162461bcd60e51b815260040161053690612439565b611ace611daa565b67016345785d8a000060cb541115611b295760405162461bcd60e51b8152600401610536906123f7565b60c954600160601b90046001600160a01b0316611ace5760405162461bcd60e51b815260206004820152601560248201527449206e6565642061207072696365206f7261636c6560581b6044820152606401610536565b6001600160a01b0381163b611bed5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610536565b60008051602061274b83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b611c2583611ddd565b600082511180611c325750805b156114c2576105868383611e1d565b6000600182601c811115611c5757611c576126f3565b611c61919061268e565b60c954600160ff929092169190911b91506201518090611c889064ffffffffff1642612668565b64ffffffffff161115611cca5760c9805466ffffffffffffff8316600160281b026bffffffffffffffffffffffff1990911664ffffffffff4216171790555050565b60c954600160281b9004811666ffffffffffffff16611d2c5760c9805464ffffffffff421664ffffffffff1966ffffffffffffff808616600160281b808604929092161702166bffffffffffffffffffffffff19909216919091171790555050565b60405162461bcd60e51b815260206004820152604760248201527f596f7520616c726561647920747765616b6564207468697320706172616d657460448201527f657220726563656e746c792e2057616974206265666f726520747765616b696e606482015266339030b3b0b4b760c91b608482015260a401610536565b600054610100900460ff16611dd15760405162461bcd60e51b815260040161053690612439565b6097805460ff19169055565b611de681611b80565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b611e855760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610536565b600080846001600160a01b031684604051611ea091906122e2565b600060405180830381855af49150503d8060008114611edb576040519150601f19603f3d011682016040523d82523d6000602084013e611ee0565b606091505b5091509150611f08828260405180606001604052806027815260200161276b60279139611f11565b95945050505050565b60608315611f205750816105a5565b825115611f305782518084602001fd5b8160405162461bcd60e51b815260040161053691906122fe565b600082601f830112611f5b57600080fd5b813567ffffffffffffffff811115611f7557611f7561271f565b611f88601f8201601f19166020016124d9565b818152846020838601011115611f9d57600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215611fcc57600080fd5b81356105a581612735565b60008060408385031215611fea57600080fd5b8235611ff581612735565b9150602083013561200581612735565b809150509250929050565b60008060006060848603121561202557600080fd5b833561203081612735565b9250602084013561204081612735565b929592945050506040919091013590565b600080600080600060a0868803121561206957600080fd5b853561207481612735565b9450602086013561208481612735565b935060408601359250606086013561209b81612735565b949793965091946080013592915050565b600080604083850312156120bf57600080fd5b82356120ca81612735565b9150602083013567ffffffffffffffff8111156120e657600080fd5b6120f285828601611f4a565b9150509250929050565b6000602080838503121561210f57600080fd5b825167ffffffffffffffff8082111561212757600080fd5b818501915085601f83011261213b57600080fd5b81518181111561214d5761214d61271f565b8060051b915061215e8483016124d9565b8181528481019084860184860187018a101561217957600080fd5b600095505b8386101561219c57805183526001959095019491860191860161217e565b5098975050505050505050565b6000602082840312156121bb57600080fd5b815180151581146105a557600080fd5b6000602082840312156121dd57600080fd5b5051919050565b6000602082840312156121f657600080fd5b813567ffffffffffffffff81111561220d57600080fd5b611a9f84828501611f4a565b60006020828403121561222b57600080fd5b81516105a581612735565b60006020828403121561224857600080fd5b5035919050565b60006020828403121561226157600080fd5b815160ff811681146105a557600080fd5b600081518084526020808501945080840160005b838110156122ab5781516001600160a01b031687529582019590820190600101612286565b509495945050505050565b600081518084526122ce8160208601602086016126b1565b601f01601f19169290920160200192915050565b600082516122f48184602087016126b1565b9190910192915050565b6020815260006105a560208301846122b6565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b60208082526022908201527f6d6178536c6970706167652063616e2774206265206d6f7265207468616e2031604082015261302560f01b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b8281526040602082015260006105a26040830184612272565b85815284602082015260a0604082015260006124bc60a0830186612272565b6001600160a01b0394909416606083015250608001529392505050565b604051601f8201601f1916810167ffffffffffffffff811182821017156125025761250261271f565b604052919050565b6000821982111561251d5761251d6126dd565b500190565b60008261253f57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b8085111561257f578160001904821115612565576125656126dd565b8085161561257257918102915b93841c9390800290612549565b509250929050565b60006105a560ff8416836000826125a05750600161108d565b816125ad5750600061108d565b81600181146125c357600281146125cd576125e9565b600191505061108d565b60ff8411156125de576125de6126dd565b50506001821b61108d565b5060208310610133831016604e8410600b841016171561260c575081810a61108d565b6126168383612544565b806000190482111561262a5761262a6126dd565b029392505050565b600081600019048311821515161561264c5761264c6126dd565b500290565b600082821015612663576126636126dd565b500390565b600064ffffffffff83811690831681811015612686576126866126dd565b039392505050565b600060ff821660ff8416808210156126a8576126a86126dd565b90039392505050565b60005b838110156126cc5781810151838201526020016126b4565b838111156105865750506000910152565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461068957600080fdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656455435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a26469706673582212204befacc368d18f77fb5bec8a3bb8d3b8b08677fed893ca8cfc192a6acc1721ba64736f6c63430008060033",
544
- "linkReferences": {},
545
- "deployedLinkReferences": {}
546
- }