@venusprotocol/oracle 2.15.0-slim-dev.6 → 2.15.0-slim-dev.8

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 (86) hide show
  1. package/artifacts/contracts/DeviationBoundedOracle.sol/DeviationBoundedOracle.json +1383 -0
  2. package/artifacts/contracts/interfaces/IDeviationBoundedOracle.sol/IDeviationBoundedOracle.json +1052 -0
  3. package/artifacts/contracts/test/DeviationBoundedOracleCaller.sol/DeviationBoundedOracleCaller.json +212 -0
  4. package/artifacts-zk/contracts/DeviationBoundedOracle.sol/DeviationBoundedOracle.dbg.json +4 -0
  5. package/artifacts-zk/contracts/DeviationBoundedOracle.sol/DeviationBoundedOracle.json +1384 -0
  6. package/artifacts-zk/contracts/ReferenceOracle.sol/ReferenceOracle.dbg.json +1 -1
  7. package/artifacts-zk/contracts/ResilientOracle.sol/ResilientOracle.dbg.json +1 -1
  8. package/artifacts-zk/contracts/interfaces/FeedRegistryInterface.sol/FeedRegistryInterface.dbg.json +1 -1
  9. package/artifacts-zk/contracts/interfaces/IAccountant.sol/IAccountant.dbg.json +1 -1
  10. package/artifacts-zk/contracts/interfaces/IAnkrBNB.sol/IAnkrBNB.dbg.json +1 -1
  11. package/artifacts-zk/contracts/interfaces/IAsBNB.sol/IAsBNB.dbg.json +1 -1
  12. package/artifacts-zk/contracts/interfaces/IAsBNBMinter.sol/IAsBNBMinter.dbg.json +1 -1
  13. package/artifacts-zk/contracts/interfaces/ICappedOracle.sol/ICappedOracle.dbg.json +1 -1
  14. package/artifacts-zk/contracts/interfaces/IDeviationBoundedOracle.sol/IDeviationBoundedOracle.dbg.json +4 -0
  15. package/artifacts-zk/contracts/interfaces/IDeviationBoundedOracle.sol/IDeviationBoundedOracle.json +1053 -0
  16. package/artifacts-zk/contracts/interfaces/IERC4626.sol/IERC4626.dbg.json +1 -1
  17. package/artifacts-zk/contracts/interfaces/IEtherFiLiquidityPool.sol/IEtherFiLiquidityPool.dbg.json +1 -1
  18. package/artifacts-zk/contracts/interfaces/IPStakePool.sol/IPStakePool.dbg.json +1 -1
  19. package/artifacts-zk/contracts/interfaces/IPendlePtOracle.sol/IPendlePtOracle.dbg.json +1 -1
  20. package/artifacts-zk/contracts/interfaces/ISFrax.sol/ISFrax.dbg.json +1 -1
  21. package/artifacts-zk/contracts/interfaces/ISfrxEthFraxOracle.sol/ISfrxEthFraxOracle.dbg.json +1 -1
  22. package/artifacts-zk/contracts/interfaces/IStETH.sol/IStETH.dbg.json +1 -1
  23. package/artifacts-zk/contracts/interfaces/IStaderStakeManager.sol/IStaderStakeManager.dbg.json +1 -1
  24. package/artifacts-zk/contracts/interfaces/ISynclubStakeManager.sol/ISynclubStakeManager.dbg.json +1 -1
  25. package/artifacts-zk/contracts/interfaces/IWBETH.sol/IWBETH.dbg.json +1 -1
  26. package/artifacts-zk/contracts/interfaces/IZkETH.sol/IZkETH.dbg.json +1 -1
  27. package/artifacts-zk/contracts/interfaces/OracleInterface.sol/BoundValidatorInterface.dbg.json +1 -1
  28. package/artifacts-zk/contracts/interfaces/OracleInterface.sol/OracleInterface.dbg.json +1 -1
  29. package/artifacts-zk/contracts/interfaces/OracleInterface.sol/ResilientOracleInterface.dbg.json +1 -1
  30. package/artifacts-zk/contracts/interfaces/PublicResolverInterface.sol/PublicResolverInterface.dbg.json +1 -1
  31. package/artifacts-zk/contracts/interfaces/SIDRegistryInterface.sol/SIDRegistryInterface.dbg.json +1 -1
  32. package/artifacts-zk/contracts/interfaces/VBep20Interface.sol/VBep20Interface.dbg.json +1 -1
  33. package/artifacts-zk/contracts/lib/Transient.sol/Transient.dbg.json +1 -1
  34. package/artifacts-zk/contracts/oracles/AnkrBNBOracle.sol/AnkrBNBOracle.dbg.json +1 -1
  35. package/artifacts-zk/contracts/oracles/AsBNBOracle.sol/AsBNBOracle.dbg.json +1 -1
  36. package/artifacts-zk/contracts/oracles/BNBxOracle.sol/BNBxOracle.dbg.json +1 -1
  37. package/artifacts-zk/contracts/oracles/BinanceOracle.sol/BinanceOracle.dbg.json +1 -1
  38. package/artifacts-zk/contracts/oracles/BoundValidator.sol/BoundValidator.dbg.json +1 -1
  39. package/artifacts-zk/contracts/oracles/ChainlinkOracle.sol/ChainlinkOracle.dbg.json +1 -1
  40. package/artifacts-zk/contracts/oracles/ERC4626Oracle.sol/ERC4626Oracle.dbg.json +1 -1
  41. package/artifacts-zk/contracts/oracles/EtherfiAccountantOracle.sol/EtherfiAccountantOracle.dbg.json +1 -1
  42. package/artifacts-zk/contracts/oracles/OneJumpOracle.sol/OneJumpOracle.dbg.json +1 -1
  43. package/artifacts-zk/contracts/oracles/PendleOracle.sol/PendleOracle.dbg.json +1 -1
  44. package/artifacts-zk/contracts/oracles/SFraxOracle.sol/SFraxOracle.dbg.json +1 -1
  45. package/artifacts-zk/contracts/oracles/SFrxETHOracle.sol/SFrxETHOracle.dbg.json +1 -1
  46. package/artifacts-zk/contracts/oracles/SequencerChainlinkOracle.sol/SequencerChainlinkOracle.dbg.json +1 -1
  47. package/artifacts-zk/contracts/oracles/SlisBNBOracle.sol/SlisBNBOracle.dbg.json +1 -1
  48. package/artifacts-zk/contracts/oracles/StableUsdtPriceFeed.sol/StableUsdtPriceFeed.dbg.json +1 -1
  49. package/artifacts-zk/contracts/oracles/StkBNBOracle.sol/StkBNBOracle.dbg.json +1 -1
  50. package/artifacts-zk/contracts/oracles/WBETHOracle.sol/WBETHOracle.dbg.json +1 -1
  51. package/artifacts-zk/contracts/oracles/WeETHAccountantOracle.sol/WeETHAccountantOracle.dbg.json +1 -1
  52. package/artifacts-zk/contracts/oracles/WeETHOracle.sol/WeETHOracle.dbg.json +1 -1
  53. package/artifacts-zk/contracts/oracles/WstETHOracle.sol/WstETHOracle.dbg.json +1 -1
  54. package/artifacts-zk/contracts/oracles/WstETHOracleV2.sol/WstETHOracleV2.dbg.json +1 -1
  55. package/artifacts-zk/contracts/oracles/ZkETHOracle.sol/ZkETHOracle.dbg.json +1 -1
  56. package/artifacts-zk/contracts/oracles/common/CorrelatedTokenOracle.sol/CorrelatedTokenOracle.dbg.json +1 -1
  57. package/artifacts-zk/contracts/oracles/mocks/MockAccountant.sol/MockAccountant.dbg.json +1 -1
  58. package/artifacts-zk/contracts/oracles/mocks/MockBinanceFeedRegistry.sol/MockBinanceFeedRegistry.dbg.json +1 -1
  59. package/artifacts-zk/contracts/oracles/mocks/MockBinanceOracle.sol/MockBinanceOracle.dbg.json +1 -1
  60. package/artifacts-zk/contracts/oracles/mocks/MockChainlinkOracle.sol/MockChainlinkOracle.dbg.json +1 -1
  61. package/artifacts-zk/contracts/oracles/mocks/MockPendlePtOracle.sol/MockPendlePtOracle.dbg.json +1 -1
  62. package/artifacts-zk/contracts/oracles/mocks/MockSFrxEthFraxOracle.sol/MockSfrxEthFraxOracle.dbg.json +1 -1
  63. package/artifacts-zk/contracts/test/BEP20Harness.sol/BEP20Harness.dbg.json +1 -1
  64. package/artifacts-zk/contracts/test/DeviationBoundedOracleCaller.sol/DeviationBoundedOracleCaller.dbg.json +4 -0
  65. package/artifacts-zk/contracts/test/DeviationBoundedOracleCaller.sol/DeviationBoundedOracleCaller.json +213 -0
  66. package/artifacts-zk/contracts/test/MockAnkrBNB.sol/MockAnkrBNB.dbg.json +1 -1
  67. package/artifacts-zk/contracts/test/MockAsBNB.sol/MockAsBNB.dbg.json +1 -1
  68. package/artifacts-zk/contracts/test/MockAsBNBMinter.sol/MockAsBNBMinter.dbg.json +1 -1
  69. package/artifacts-zk/contracts/test/MockCallPrice.sol/CorrelatedTokenOracleInterface.dbg.json +1 -1
  70. package/artifacts-zk/contracts/test/MockCallPrice.sol/MockCallPrice.dbg.json +1 -1
  71. package/artifacts-zk/contracts/test/MockEtherFiLiquidityPool.sol/MockEtherFiLiquidityPool.dbg.json +1 -1
  72. package/artifacts-zk/contracts/test/MockSFrax.sol/MockSFrax.dbg.json +1 -1
  73. package/artifacts-zk/contracts/test/MockSimpleOracle.sol/MockBoundValidator.dbg.json +1 -1
  74. package/artifacts-zk/contracts/test/MockSimpleOracle.sol/MockSimpleOracle.dbg.json +1 -1
  75. package/artifacts-zk/contracts/test/MockV3Aggregator.sol/MockV3Aggregator.dbg.json +1 -1
  76. package/artifacts-zk/contracts/test/MockWBETH.sol/MockWBETH.dbg.json +1 -1
  77. package/artifacts-zk/contracts/test/PancakePairHarness.sol/Math.dbg.json +1 -1
  78. package/artifacts-zk/contracts/test/PancakePairHarness.sol/PancakePairHarness.dbg.json +1 -1
  79. package/artifacts-zk/contracts/test/PancakePairHarness.sol/UQ112x112.dbg.json +1 -1
  80. package/artifacts-zk/contracts/test/VBEP20Harness.sol/VBEP20Harness.dbg.json +1 -1
  81. package/artifacts-zk/contracts/test/oracles/MockCorrelatedTokenOracle.sol/MockCorrelatedTokenOracle.dbg.json +1 -1
  82. package/artifacts-zk/contracts/test/oracles/MockERC20.sol/MockERC20.dbg.json +1 -1
  83. package/artifacts-zk/contracts/test/oracles/MockResilientOracle.sol/MockOracle.dbg.json +1 -1
  84. package/deployments/bscmainnet_addresses.json +12 -0
  85. package/deployments/bsctestnet_addresses.json +3 -0
  86. package/package.json +1 -1
@@ -0,0 +1,1383 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "DeviationBoundedOracle",
4
+ "sourceName": "contracts/DeviationBoundedOracle.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "contract ResilientOracleInterface",
10
+ "name": "_resilientOracle",
11
+ "type": "address"
12
+ },
13
+ {
14
+ "internalType": "address",
15
+ "name": "nativeMarketAddress",
16
+ "type": "address"
17
+ },
18
+ {
19
+ "internalType": "address",
20
+ "name": "vaiAddress",
21
+ "type": "address"
22
+ }
23
+ ],
24
+ "stateMutability": "nonpayable",
25
+ "type": "constructor"
26
+ },
27
+ {
28
+ "inputs": [
29
+ {
30
+ "internalType": "address",
31
+ "name": "asset",
32
+ "type": "address"
33
+ },
34
+ {
35
+ "internalType": "uint64",
36
+ "name": "lastProtectionTriggeredAt",
37
+ "type": "uint64"
38
+ },
39
+ {
40
+ "internalType": "uint64",
41
+ "name": "cooldownPeriod",
42
+ "type": "uint64"
43
+ }
44
+ ],
45
+ "name": "CooldownNotElapsed",
46
+ "type": "error"
47
+ },
48
+ {
49
+ "inputs": [],
50
+ "name": "InvalidArrayLength",
51
+ "type": "error"
52
+ },
53
+ {
54
+ "inputs": [
55
+ {
56
+ "internalType": "uint8",
57
+ "name": "action",
58
+ "type": "uint8"
59
+ }
60
+ ],
61
+ "name": "InvalidKeeperAction",
62
+ "type": "error"
63
+ },
64
+ {
65
+ "inputs": [
66
+ {
67
+ "internalType": "address",
68
+ "name": "asset",
69
+ "type": "address"
70
+ },
71
+ {
72
+ "internalType": "uint128",
73
+ "name": "newMax",
74
+ "type": "uint128"
75
+ },
76
+ {
77
+ "internalType": "uint256",
78
+ "name": "currentSpot",
79
+ "type": "uint256"
80
+ }
81
+ ],
82
+ "name": "InvalidMaxPrice",
83
+ "type": "error"
84
+ },
85
+ {
86
+ "inputs": [
87
+ {
88
+ "internalType": "address",
89
+ "name": "asset",
90
+ "type": "address"
91
+ },
92
+ {
93
+ "internalType": "uint128",
94
+ "name": "newMin",
95
+ "type": "uint128"
96
+ },
97
+ {
98
+ "internalType": "uint256",
99
+ "name": "currentSpot",
100
+ "type": "uint256"
101
+ }
102
+ ],
103
+ "name": "InvalidMinPrice",
104
+ "type": "error"
105
+ },
106
+ {
107
+ "inputs": [
108
+ {
109
+ "internalType": "uint256",
110
+ "name": "resetThreshold",
111
+ "type": "uint256"
112
+ }
113
+ ],
114
+ "name": "InvalidResetThreshold",
115
+ "type": "error"
116
+ },
117
+ {
118
+ "inputs": [
119
+ {
120
+ "internalType": "address",
121
+ "name": "asset",
122
+ "type": "address"
123
+ }
124
+ ],
125
+ "name": "MarketAlreadyInitialized",
126
+ "type": "error"
127
+ },
128
+ {
129
+ "inputs": [
130
+ {
131
+ "internalType": "address",
132
+ "name": "asset",
133
+ "type": "address"
134
+ }
135
+ ],
136
+ "name": "MarketNotInitialized",
137
+ "type": "error"
138
+ },
139
+ {
140
+ "inputs": [
141
+ {
142
+ "internalType": "uint256",
143
+ "name": "price",
144
+ "type": "uint256"
145
+ }
146
+ ],
147
+ "name": "PriceExceedsUint128",
148
+ "type": "error"
149
+ },
150
+ {
151
+ "inputs": [
152
+ {
153
+ "internalType": "address",
154
+ "name": "asset",
155
+ "type": "address"
156
+ },
157
+ {
158
+ "internalType": "uint256",
159
+ "name": "currentRangeRatio",
160
+ "type": "uint256"
161
+ },
162
+ {
163
+ "internalType": "uint256",
164
+ "name": "resetThreshold",
165
+ "type": "uint256"
166
+ }
167
+ ],
168
+ "name": "PriceRangeNotConverged",
169
+ "type": "error"
170
+ },
171
+ {
172
+ "inputs": [
173
+ {
174
+ "internalType": "address",
175
+ "name": "asset",
176
+ "type": "address"
177
+ }
178
+ ],
179
+ "name": "ProtectedPriceActive",
180
+ "type": "error"
181
+ },
182
+ {
183
+ "inputs": [
184
+ {
185
+ "internalType": "address",
186
+ "name": "asset",
187
+ "type": "address"
188
+ }
189
+ ],
190
+ "name": "ProtectedPriceInactive",
191
+ "type": "error"
192
+ },
193
+ {
194
+ "inputs": [
195
+ {
196
+ "internalType": "uint256",
197
+ "name": "threshold",
198
+ "type": "uint256"
199
+ },
200
+ {
201
+ "internalType": "uint256",
202
+ "name": "maximum",
203
+ "type": "uint256"
204
+ }
205
+ ],
206
+ "name": "ThresholdAboveMaximum",
207
+ "type": "error"
208
+ },
209
+ {
210
+ "inputs": [
211
+ {
212
+ "internalType": "uint256",
213
+ "name": "threshold",
214
+ "type": "uint256"
215
+ },
216
+ {
217
+ "internalType": "uint256",
218
+ "name": "minimum",
219
+ "type": "uint256"
220
+ }
221
+ ],
222
+ "name": "ThresholdBelowMinimum",
223
+ "type": "error"
224
+ },
225
+ {
226
+ "inputs": [
227
+ {
228
+ "internalType": "address",
229
+ "name": "sender",
230
+ "type": "address"
231
+ },
232
+ {
233
+ "internalType": "address",
234
+ "name": "calledContract",
235
+ "type": "address"
236
+ },
237
+ {
238
+ "internalType": "string",
239
+ "name": "methodSignature",
240
+ "type": "string"
241
+ }
242
+ ],
243
+ "name": "Unauthorized",
244
+ "type": "error"
245
+ },
246
+ {
247
+ "inputs": [],
248
+ "name": "VAINotAllowed",
249
+ "type": "error"
250
+ },
251
+ {
252
+ "inputs": [],
253
+ "name": "ZeroAddressNotAllowed",
254
+ "type": "error"
255
+ },
256
+ {
257
+ "inputs": [],
258
+ "name": "ZeroPriceNotAllowed",
259
+ "type": "error"
260
+ },
261
+ {
262
+ "inputs": [],
263
+ "name": "ZeroValueNotAllowed",
264
+ "type": "error"
265
+ },
266
+ {
267
+ "anonymous": false,
268
+ "inputs": [
269
+ {
270
+ "indexed": true,
271
+ "internalType": "address",
272
+ "name": "asset",
273
+ "type": "address"
274
+ },
275
+ {
276
+ "indexed": false,
277
+ "internalType": "bool",
278
+ "name": "whitelisted",
279
+ "type": "bool"
280
+ }
281
+ ],
282
+ "name": "BoundedPricingWhitelistUpdated",
283
+ "type": "event"
284
+ },
285
+ {
286
+ "anonymous": false,
287
+ "inputs": [
288
+ {
289
+ "indexed": true,
290
+ "internalType": "address",
291
+ "name": "asset",
292
+ "type": "address"
293
+ },
294
+ {
295
+ "indexed": false,
296
+ "internalType": "bool",
297
+ "name": "oldEnabled",
298
+ "type": "bool"
299
+ },
300
+ {
301
+ "indexed": false,
302
+ "internalType": "bool",
303
+ "name": "newEnabled",
304
+ "type": "bool"
305
+ }
306
+ ],
307
+ "name": "CachingEnabledUpdated",
308
+ "type": "event"
309
+ },
310
+ {
311
+ "anonymous": false,
312
+ "inputs": [
313
+ {
314
+ "indexed": true,
315
+ "internalType": "address",
316
+ "name": "asset",
317
+ "type": "address"
318
+ },
319
+ {
320
+ "indexed": false,
321
+ "internalType": "uint64",
322
+ "name": "oldCooldown",
323
+ "type": "uint64"
324
+ },
325
+ {
326
+ "indexed": false,
327
+ "internalType": "uint64",
328
+ "name": "newCooldown",
329
+ "type": "uint64"
330
+ }
331
+ ],
332
+ "name": "CooldownPeriodSet",
333
+ "type": "event"
334
+ },
335
+ {
336
+ "anonymous": false,
337
+ "inputs": [
338
+ {
339
+ "indexed": false,
340
+ "internalType": "uint8",
341
+ "name": "version",
342
+ "type": "uint8"
343
+ }
344
+ ],
345
+ "name": "Initialized",
346
+ "type": "event"
347
+ },
348
+ {
349
+ "anonymous": false,
350
+ "inputs": [
351
+ {
352
+ "indexed": true,
353
+ "internalType": "address",
354
+ "name": "asset",
355
+ "type": "address"
356
+ },
357
+ {
358
+ "indexed": false,
359
+ "internalType": "uint128",
360
+ "name": "oldMax",
361
+ "type": "uint128"
362
+ },
363
+ {
364
+ "indexed": false,
365
+ "internalType": "uint128",
366
+ "name": "newMax",
367
+ "type": "uint128"
368
+ }
369
+ ],
370
+ "name": "MaxPriceUpdated",
371
+ "type": "event"
372
+ },
373
+ {
374
+ "anonymous": false,
375
+ "inputs": [
376
+ {
377
+ "indexed": true,
378
+ "internalType": "address",
379
+ "name": "asset",
380
+ "type": "address"
381
+ },
382
+ {
383
+ "indexed": false,
384
+ "internalType": "uint128",
385
+ "name": "oldMin",
386
+ "type": "uint128"
387
+ },
388
+ {
389
+ "indexed": false,
390
+ "internalType": "uint128",
391
+ "name": "newMin",
392
+ "type": "uint128"
393
+ }
394
+ ],
395
+ "name": "MinPriceUpdated",
396
+ "type": "event"
397
+ },
398
+ {
399
+ "anonymous": false,
400
+ "inputs": [
401
+ {
402
+ "indexed": false,
403
+ "internalType": "address",
404
+ "name": "oldAccessControlManager",
405
+ "type": "address"
406
+ },
407
+ {
408
+ "indexed": false,
409
+ "internalType": "address",
410
+ "name": "newAccessControlManager",
411
+ "type": "address"
412
+ }
413
+ ],
414
+ "name": "NewAccessControlManager",
415
+ "type": "event"
416
+ },
417
+ {
418
+ "anonymous": false,
419
+ "inputs": [
420
+ {
421
+ "indexed": true,
422
+ "internalType": "address",
423
+ "name": "previousOwner",
424
+ "type": "address"
425
+ },
426
+ {
427
+ "indexed": true,
428
+ "internalType": "address",
429
+ "name": "newOwner",
430
+ "type": "address"
431
+ }
432
+ ],
433
+ "name": "OwnershipTransferStarted",
434
+ "type": "event"
435
+ },
436
+ {
437
+ "anonymous": false,
438
+ "inputs": [
439
+ {
440
+ "indexed": true,
441
+ "internalType": "address",
442
+ "name": "previousOwner",
443
+ "type": "address"
444
+ },
445
+ {
446
+ "indexed": true,
447
+ "internalType": "address",
448
+ "name": "newOwner",
449
+ "type": "address"
450
+ }
451
+ ],
452
+ "name": "OwnershipTransferred",
453
+ "type": "event"
454
+ },
455
+ {
456
+ "anonymous": false,
457
+ "inputs": [
458
+ {
459
+ "indexed": true,
460
+ "internalType": "address",
461
+ "name": "asset",
462
+ "type": "address"
463
+ },
464
+ {
465
+ "indexed": false,
466
+ "internalType": "uint128",
467
+ "name": "minPrice",
468
+ "type": "uint128"
469
+ },
470
+ {
471
+ "indexed": false,
472
+ "internalType": "uint128",
473
+ "name": "maxPrice",
474
+ "type": "uint128"
475
+ },
476
+ {
477
+ "indexed": false,
478
+ "internalType": "uint64",
479
+ "name": "cooldownPeriod",
480
+ "type": "uint64"
481
+ },
482
+ {
483
+ "indexed": false,
484
+ "internalType": "uint256",
485
+ "name": "triggerThreshold",
486
+ "type": "uint256"
487
+ }
488
+ ],
489
+ "name": "ProtectionInitialized",
490
+ "type": "event"
491
+ },
492
+ {
493
+ "anonymous": false,
494
+ "inputs": [
495
+ {
496
+ "indexed": true,
497
+ "internalType": "address",
498
+ "name": "asset",
499
+ "type": "address"
500
+ }
501
+ ],
502
+ "name": "ProtectionModeExited",
503
+ "type": "event"
504
+ },
505
+ {
506
+ "anonymous": false,
507
+ "inputs": [
508
+ {
509
+ "indexed": true,
510
+ "internalType": "address",
511
+ "name": "asset",
512
+ "type": "address"
513
+ },
514
+ {
515
+ "indexed": false,
516
+ "internalType": "uint256",
517
+ "name": "spotPrice",
518
+ "type": "uint256"
519
+ },
520
+ {
521
+ "indexed": false,
522
+ "internalType": "uint128",
523
+ "name": "minPrice",
524
+ "type": "uint128"
525
+ },
526
+ {
527
+ "indexed": false,
528
+ "internalType": "uint128",
529
+ "name": "maxPrice",
530
+ "type": "uint128"
531
+ }
532
+ ],
533
+ "name": "ProtectionTriggered",
534
+ "type": "event"
535
+ },
536
+ {
537
+ "anonymous": false,
538
+ "inputs": [
539
+ {
540
+ "indexed": true,
541
+ "internalType": "address",
542
+ "name": "asset",
543
+ "type": "address"
544
+ },
545
+ {
546
+ "indexed": false,
547
+ "internalType": "uint256",
548
+ "name": "oldExitThreshold",
549
+ "type": "uint256"
550
+ },
551
+ {
552
+ "indexed": false,
553
+ "internalType": "uint256",
554
+ "name": "newExitThreshold",
555
+ "type": "uint256"
556
+ }
557
+ ],
558
+ "name": "ResetThresholdSet",
559
+ "type": "event"
560
+ },
561
+ {
562
+ "anonymous": false,
563
+ "inputs": [
564
+ {
565
+ "indexed": true,
566
+ "internalType": "address",
567
+ "name": "asset",
568
+ "type": "address"
569
+ },
570
+ {
571
+ "indexed": false,
572
+ "internalType": "uint256",
573
+ "name": "oldThreshold",
574
+ "type": "uint256"
575
+ },
576
+ {
577
+ "indexed": false,
578
+ "internalType": "uint256",
579
+ "name": "newThreshold",
580
+ "type": "uint256"
581
+ }
582
+ ],
583
+ "name": "TriggerThresholdSet",
584
+ "type": "event"
585
+ },
586
+ {
587
+ "inputs": [],
588
+ "name": "COLLATERAL_PRICE_CACHE_SLOT",
589
+ "outputs": [
590
+ {
591
+ "internalType": "bytes32",
592
+ "name": "",
593
+ "type": "bytes32"
594
+ }
595
+ ],
596
+ "stateMutability": "view",
597
+ "type": "function"
598
+ },
599
+ {
600
+ "inputs": [],
601
+ "name": "DEBT_PRICE_CACHE_SLOT",
602
+ "outputs": [
603
+ {
604
+ "internalType": "bytes32",
605
+ "name": "",
606
+ "type": "bytes32"
607
+ }
608
+ ],
609
+ "stateMutability": "view",
610
+ "type": "function"
611
+ },
612
+ {
613
+ "inputs": [],
614
+ "name": "KEEPER_DEADBAND",
615
+ "outputs": [
616
+ {
617
+ "internalType": "uint256",
618
+ "name": "",
619
+ "type": "uint256"
620
+ }
621
+ ],
622
+ "stateMutability": "view",
623
+ "type": "function"
624
+ },
625
+ {
626
+ "inputs": [],
627
+ "name": "MAX_THRESHOLD",
628
+ "outputs": [
629
+ {
630
+ "internalType": "uint256",
631
+ "name": "",
632
+ "type": "uint256"
633
+ }
634
+ ],
635
+ "stateMutability": "view",
636
+ "type": "function"
637
+ },
638
+ {
639
+ "inputs": [],
640
+ "name": "MIN_THRESHOLD",
641
+ "outputs": [
642
+ {
643
+ "internalType": "uint256",
644
+ "name": "",
645
+ "type": "uint256"
646
+ }
647
+ ],
648
+ "stateMutability": "view",
649
+ "type": "function"
650
+ },
651
+ {
652
+ "inputs": [],
653
+ "name": "NATIVE_TOKEN_ADDR",
654
+ "outputs": [
655
+ {
656
+ "internalType": "address",
657
+ "name": "",
658
+ "type": "address"
659
+ }
660
+ ],
661
+ "stateMutability": "view",
662
+ "type": "function"
663
+ },
664
+ {
665
+ "inputs": [],
666
+ "name": "RESILIENT_ORACLE",
667
+ "outputs": [
668
+ {
669
+ "internalType": "contract ResilientOracleInterface",
670
+ "name": "",
671
+ "type": "address"
672
+ }
673
+ ],
674
+ "stateMutability": "view",
675
+ "type": "function"
676
+ },
677
+ {
678
+ "inputs": [],
679
+ "name": "acceptOwnership",
680
+ "outputs": [],
681
+ "stateMutability": "nonpayable",
682
+ "type": "function"
683
+ },
684
+ {
685
+ "inputs": [],
686
+ "name": "accessControlManager",
687
+ "outputs": [
688
+ {
689
+ "internalType": "contract IAccessControlManagerV8",
690
+ "name": "",
691
+ "type": "address"
692
+ }
693
+ ],
694
+ "stateMutability": "view",
695
+ "type": "function"
696
+ },
697
+ {
698
+ "inputs": [
699
+ {
700
+ "internalType": "uint256",
701
+ "name": "",
702
+ "type": "uint256"
703
+ }
704
+ ],
705
+ "name": "allAssets",
706
+ "outputs": [
707
+ {
708
+ "internalType": "address",
709
+ "name": "",
710
+ "type": "address"
711
+ }
712
+ ],
713
+ "stateMutability": "view",
714
+ "type": "function"
715
+ },
716
+ {
717
+ "inputs": [
718
+ {
719
+ "internalType": "address",
720
+ "name": "",
721
+ "type": "address"
722
+ }
723
+ ],
724
+ "name": "assetProtectionConfig",
725
+ "outputs": [
726
+ {
727
+ "internalType": "uint128",
728
+ "name": "minPrice",
729
+ "type": "uint128"
730
+ },
731
+ {
732
+ "internalType": "uint128",
733
+ "name": "maxPrice",
734
+ "type": "uint128"
735
+ },
736
+ {
737
+ "internalType": "bool",
738
+ "name": "currentlyUsingProtectedPrice",
739
+ "type": "bool"
740
+ },
741
+ {
742
+ "internalType": "bool",
743
+ "name": "isBoundedPricingEnabled",
744
+ "type": "bool"
745
+ },
746
+ {
747
+ "internalType": "uint64",
748
+ "name": "lastProtectionTriggeredAt",
749
+ "type": "uint64"
750
+ },
751
+ {
752
+ "internalType": "uint64",
753
+ "name": "cooldownPeriod",
754
+ "type": "uint64"
755
+ },
756
+ {
757
+ "internalType": "address",
758
+ "name": "asset",
759
+ "type": "address"
760
+ },
761
+ {
762
+ "internalType": "uint128",
763
+ "name": "triggerThreshold",
764
+ "type": "uint128"
765
+ },
766
+ {
767
+ "internalType": "uint128",
768
+ "name": "resetThreshold",
769
+ "type": "uint128"
770
+ },
771
+ {
772
+ "internalType": "bool",
773
+ "name": "cachingEnabled",
774
+ "type": "bool"
775
+ }
776
+ ],
777
+ "stateMutability": "view",
778
+ "type": "function"
779
+ },
780
+ {
781
+ "inputs": [
782
+ {
783
+ "internalType": "address",
784
+ "name": "asset",
785
+ "type": "address"
786
+ }
787
+ ],
788
+ "name": "canExitProtection",
789
+ "outputs": [
790
+ {
791
+ "internalType": "bool",
792
+ "name": "",
793
+ "type": "bool"
794
+ }
795
+ ],
796
+ "stateMutability": "view",
797
+ "type": "function"
798
+ },
799
+ {
800
+ "inputs": [
801
+ {
802
+ "internalType": "address[]",
803
+ "name": "assets",
804
+ "type": "address[]"
805
+ },
806
+ {
807
+ "internalType": "uint128[]",
808
+ "name": "proposedMins",
809
+ "type": "uint128[]"
810
+ },
811
+ {
812
+ "internalType": "uint128[]",
813
+ "name": "proposedMaxs",
814
+ "type": "uint128[]"
815
+ }
816
+ ],
817
+ "name": "checkAndGetWindowDrift",
818
+ "outputs": [
819
+ {
820
+ "internalType": "bool[]",
821
+ "name": "needsMinUpdate",
822
+ "type": "bool[]"
823
+ },
824
+ {
825
+ "internalType": "bool[]",
826
+ "name": "needsMaxUpdate",
827
+ "type": "bool[]"
828
+ }
829
+ ],
830
+ "stateMutability": "view",
831
+ "type": "function"
832
+ },
833
+ {
834
+ "inputs": [
835
+ {
836
+ "internalType": "address",
837
+ "name": "asset",
838
+ "type": "address"
839
+ }
840
+ ],
841
+ "name": "currentlyUsingProtectedPrice",
842
+ "outputs": [
843
+ {
844
+ "internalType": "bool",
845
+ "name": "",
846
+ "type": "bool"
847
+ }
848
+ ],
849
+ "stateMutability": "view",
850
+ "type": "function"
851
+ },
852
+ {
853
+ "inputs": [
854
+ {
855
+ "internalType": "address",
856
+ "name": "asset",
857
+ "type": "address"
858
+ }
859
+ ],
860
+ "name": "exitProtectionMode",
861
+ "outputs": [],
862
+ "stateMutability": "nonpayable",
863
+ "type": "function"
864
+ },
865
+ {
866
+ "inputs": [],
867
+ "name": "getAllBoundedPricingEnabledAssets",
868
+ "outputs": [
869
+ {
870
+ "internalType": "address[]",
871
+ "name": "",
872
+ "type": "address[]"
873
+ }
874
+ ],
875
+ "stateMutability": "view",
876
+ "type": "function"
877
+ },
878
+ {
879
+ "inputs": [
880
+ {
881
+ "internalType": "address",
882
+ "name": "vToken",
883
+ "type": "address"
884
+ }
885
+ ],
886
+ "name": "getBoundedCollateralPrice",
887
+ "outputs": [
888
+ {
889
+ "internalType": "uint256",
890
+ "name": "collateralPrice",
891
+ "type": "uint256"
892
+ }
893
+ ],
894
+ "stateMutability": "nonpayable",
895
+ "type": "function"
896
+ },
897
+ {
898
+ "inputs": [
899
+ {
900
+ "internalType": "address",
901
+ "name": "vToken",
902
+ "type": "address"
903
+ }
904
+ ],
905
+ "name": "getBoundedCollateralPriceView",
906
+ "outputs": [
907
+ {
908
+ "internalType": "uint256",
909
+ "name": "collateralPrice",
910
+ "type": "uint256"
911
+ }
912
+ ],
913
+ "stateMutability": "view",
914
+ "type": "function"
915
+ },
916
+ {
917
+ "inputs": [
918
+ {
919
+ "internalType": "address",
920
+ "name": "vToken",
921
+ "type": "address"
922
+ }
923
+ ],
924
+ "name": "getBoundedDebtPrice",
925
+ "outputs": [
926
+ {
927
+ "internalType": "uint256",
928
+ "name": "debtPrice",
929
+ "type": "uint256"
930
+ }
931
+ ],
932
+ "stateMutability": "nonpayable",
933
+ "type": "function"
934
+ },
935
+ {
936
+ "inputs": [
937
+ {
938
+ "internalType": "address",
939
+ "name": "vToken",
940
+ "type": "address"
941
+ }
942
+ ],
943
+ "name": "getBoundedDebtPriceView",
944
+ "outputs": [
945
+ {
946
+ "internalType": "uint256",
947
+ "name": "debtPrice",
948
+ "type": "uint256"
949
+ }
950
+ ],
951
+ "stateMutability": "view",
952
+ "type": "function"
953
+ },
954
+ {
955
+ "inputs": [
956
+ {
957
+ "internalType": "address",
958
+ "name": "vToken",
959
+ "type": "address"
960
+ }
961
+ ],
962
+ "name": "getBoundedPrices",
963
+ "outputs": [
964
+ {
965
+ "internalType": "uint256",
966
+ "name": "collateralPrice",
967
+ "type": "uint256"
968
+ },
969
+ {
970
+ "internalType": "uint256",
971
+ "name": "debtPrice",
972
+ "type": "uint256"
973
+ }
974
+ ],
975
+ "stateMutability": "nonpayable",
976
+ "type": "function"
977
+ },
978
+ {
979
+ "inputs": [
980
+ {
981
+ "internalType": "address",
982
+ "name": "vToken",
983
+ "type": "address"
984
+ }
985
+ ],
986
+ "name": "getBoundedPricesView",
987
+ "outputs": [
988
+ {
989
+ "internalType": "uint256",
990
+ "name": "collateralPrice",
991
+ "type": "uint256"
992
+ },
993
+ {
994
+ "internalType": "uint256",
995
+ "name": "debtPrice",
996
+ "type": "uint256"
997
+ }
998
+ ],
999
+ "stateMutability": "view",
1000
+ "type": "function"
1001
+ },
1002
+ {
1003
+ "inputs": [],
1004
+ "name": "getInitializedAssets",
1005
+ "outputs": [
1006
+ {
1007
+ "internalType": "address[]",
1008
+ "name": "",
1009
+ "type": "address[]"
1010
+ }
1011
+ ],
1012
+ "stateMutability": "view",
1013
+ "type": "function"
1014
+ },
1015
+ {
1016
+ "inputs": [
1017
+ {
1018
+ "internalType": "address",
1019
+ "name": "accessControlManager_",
1020
+ "type": "address"
1021
+ }
1022
+ ],
1023
+ "name": "initialize",
1024
+ "outputs": [],
1025
+ "stateMutability": "nonpayable",
1026
+ "type": "function"
1027
+ },
1028
+ {
1029
+ "inputs": [
1030
+ {
1031
+ "internalType": "address",
1032
+ "name": "asset",
1033
+ "type": "address"
1034
+ }
1035
+ ],
1036
+ "name": "isBoundedPricingEnabled",
1037
+ "outputs": [
1038
+ {
1039
+ "internalType": "bool",
1040
+ "name": "",
1041
+ "type": "bool"
1042
+ }
1043
+ ],
1044
+ "stateMutability": "view",
1045
+ "type": "function"
1046
+ },
1047
+ {
1048
+ "inputs": [],
1049
+ "name": "nativeMarket",
1050
+ "outputs": [
1051
+ {
1052
+ "internalType": "address",
1053
+ "name": "",
1054
+ "type": "address"
1055
+ }
1056
+ ],
1057
+ "stateMutability": "view",
1058
+ "type": "function"
1059
+ },
1060
+ {
1061
+ "inputs": [],
1062
+ "name": "owner",
1063
+ "outputs": [
1064
+ {
1065
+ "internalType": "address",
1066
+ "name": "",
1067
+ "type": "address"
1068
+ }
1069
+ ],
1070
+ "stateMutability": "view",
1071
+ "type": "function"
1072
+ },
1073
+ {
1074
+ "inputs": [],
1075
+ "name": "pendingOwner",
1076
+ "outputs": [
1077
+ {
1078
+ "internalType": "address",
1079
+ "name": "",
1080
+ "type": "address"
1081
+ }
1082
+ ],
1083
+ "stateMutability": "view",
1084
+ "type": "function"
1085
+ },
1086
+ {
1087
+ "inputs": [],
1088
+ "name": "renounceOwnership",
1089
+ "outputs": [],
1090
+ "stateMutability": "nonpayable",
1091
+ "type": "function"
1092
+ },
1093
+ {
1094
+ "inputs": [
1095
+ {
1096
+ "internalType": "address",
1097
+ "name": "accessControlManager_",
1098
+ "type": "address"
1099
+ }
1100
+ ],
1101
+ "name": "setAccessControlManager",
1102
+ "outputs": [],
1103
+ "stateMutability": "nonpayable",
1104
+ "type": "function"
1105
+ },
1106
+ {
1107
+ "inputs": [
1108
+ {
1109
+ "internalType": "address",
1110
+ "name": "asset",
1111
+ "type": "address"
1112
+ },
1113
+ {
1114
+ "internalType": "bool",
1115
+ "name": "enabled",
1116
+ "type": "bool"
1117
+ }
1118
+ ],
1119
+ "name": "setAssetBoundedPricingEnabled",
1120
+ "outputs": [],
1121
+ "stateMutability": "nonpayable",
1122
+ "type": "function"
1123
+ },
1124
+ {
1125
+ "inputs": [
1126
+ {
1127
+ "internalType": "address",
1128
+ "name": "asset",
1129
+ "type": "address"
1130
+ },
1131
+ {
1132
+ "internalType": "bool",
1133
+ "name": "enabled",
1134
+ "type": "bool"
1135
+ }
1136
+ ],
1137
+ "name": "setCachingEnabled",
1138
+ "outputs": [],
1139
+ "stateMutability": "nonpayable",
1140
+ "type": "function"
1141
+ },
1142
+ {
1143
+ "inputs": [
1144
+ {
1145
+ "internalType": "address",
1146
+ "name": "asset",
1147
+ "type": "address"
1148
+ },
1149
+ {
1150
+ "internalType": "uint64",
1151
+ "name": "newCooldown",
1152
+ "type": "uint64"
1153
+ }
1154
+ ],
1155
+ "name": "setCooldownPeriod",
1156
+ "outputs": [],
1157
+ "stateMutability": "nonpayable",
1158
+ "type": "function"
1159
+ },
1160
+ {
1161
+ "inputs": [
1162
+ {
1163
+ "internalType": "address",
1164
+ "name": "asset",
1165
+ "type": "address"
1166
+ },
1167
+ {
1168
+ "internalType": "uint256",
1169
+ "name": "newTriggerThreshold",
1170
+ "type": "uint256"
1171
+ },
1172
+ {
1173
+ "internalType": "uint256",
1174
+ "name": "newResetThreshold",
1175
+ "type": "uint256"
1176
+ }
1177
+ ],
1178
+ "name": "setThresholds",
1179
+ "outputs": [],
1180
+ "stateMutability": "nonpayable",
1181
+ "type": "function"
1182
+ },
1183
+ {
1184
+ "inputs": [
1185
+ {
1186
+ "components": [
1187
+ {
1188
+ "internalType": "address",
1189
+ "name": "asset",
1190
+ "type": "address"
1191
+ },
1192
+ {
1193
+ "internalType": "uint64",
1194
+ "name": "cooldownPeriod",
1195
+ "type": "uint64"
1196
+ },
1197
+ {
1198
+ "internalType": "uint256",
1199
+ "name": "triggerThreshold",
1200
+ "type": "uint256"
1201
+ },
1202
+ {
1203
+ "internalType": "uint256",
1204
+ "name": "resetThreshold",
1205
+ "type": "uint256"
1206
+ },
1207
+ {
1208
+ "internalType": "bool",
1209
+ "name": "enableBoundedPricing",
1210
+ "type": "bool"
1211
+ },
1212
+ {
1213
+ "internalType": "bool",
1214
+ "name": "enableCaching",
1215
+ "type": "bool"
1216
+ }
1217
+ ],
1218
+ "internalType": "struct IDeviationBoundedOracle.TokenConfigInput",
1219
+ "name": "tokenConfig_",
1220
+ "type": "tuple"
1221
+ }
1222
+ ],
1223
+ "name": "setTokenConfig",
1224
+ "outputs": [],
1225
+ "stateMutability": "nonpayable",
1226
+ "type": "function"
1227
+ },
1228
+ {
1229
+ "inputs": [
1230
+ {
1231
+ "components": [
1232
+ {
1233
+ "internalType": "address",
1234
+ "name": "asset",
1235
+ "type": "address"
1236
+ },
1237
+ {
1238
+ "internalType": "uint64",
1239
+ "name": "cooldownPeriod",
1240
+ "type": "uint64"
1241
+ },
1242
+ {
1243
+ "internalType": "uint256",
1244
+ "name": "triggerThreshold",
1245
+ "type": "uint256"
1246
+ },
1247
+ {
1248
+ "internalType": "uint256",
1249
+ "name": "resetThreshold",
1250
+ "type": "uint256"
1251
+ },
1252
+ {
1253
+ "internalType": "bool",
1254
+ "name": "enableBoundedPricing",
1255
+ "type": "bool"
1256
+ },
1257
+ {
1258
+ "internalType": "bool",
1259
+ "name": "enableCaching",
1260
+ "type": "bool"
1261
+ }
1262
+ ],
1263
+ "internalType": "struct IDeviationBoundedOracle.TokenConfigInput[]",
1264
+ "name": "tokenConfigs_",
1265
+ "type": "tuple[]"
1266
+ }
1267
+ ],
1268
+ "name": "setTokenConfigs",
1269
+ "outputs": [],
1270
+ "stateMutability": "nonpayable",
1271
+ "type": "function"
1272
+ },
1273
+ {
1274
+ "inputs": [
1275
+ {
1276
+ "components": [
1277
+ {
1278
+ "internalType": "address",
1279
+ "name": "asset",
1280
+ "type": "address"
1281
+ },
1282
+ {
1283
+ "internalType": "enum IDeviationBoundedOracle.KeeperAction",
1284
+ "name": "action",
1285
+ "type": "uint8"
1286
+ },
1287
+ {
1288
+ "internalType": "uint256",
1289
+ "name": "value",
1290
+ "type": "uint256"
1291
+ }
1292
+ ],
1293
+ "internalType": "struct IDeviationBoundedOracle.KeeperActionItem[]",
1294
+ "name": "actions",
1295
+ "type": "tuple[]"
1296
+ }
1297
+ ],
1298
+ "name": "syncPriceBoundsAndProtections",
1299
+ "outputs": [],
1300
+ "stateMutability": "nonpayable",
1301
+ "type": "function"
1302
+ },
1303
+ {
1304
+ "inputs": [
1305
+ {
1306
+ "internalType": "address",
1307
+ "name": "newOwner",
1308
+ "type": "address"
1309
+ }
1310
+ ],
1311
+ "name": "transferOwnership",
1312
+ "outputs": [],
1313
+ "stateMutability": "nonpayable",
1314
+ "type": "function"
1315
+ },
1316
+ {
1317
+ "inputs": [
1318
+ {
1319
+ "internalType": "address",
1320
+ "name": "asset",
1321
+ "type": "address"
1322
+ },
1323
+ {
1324
+ "internalType": "uint128",
1325
+ "name": "newMax",
1326
+ "type": "uint128"
1327
+ }
1328
+ ],
1329
+ "name": "updateMaxPrice",
1330
+ "outputs": [],
1331
+ "stateMutability": "nonpayable",
1332
+ "type": "function"
1333
+ },
1334
+ {
1335
+ "inputs": [
1336
+ {
1337
+ "internalType": "address",
1338
+ "name": "asset",
1339
+ "type": "address"
1340
+ },
1341
+ {
1342
+ "internalType": "uint128",
1343
+ "name": "newMin",
1344
+ "type": "uint128"
1345
+ }
1346
+ ],
1347
+ "name": "updateMinPrice",
1348
+ "outputs": [],
1349
+ "stateMutability": "nonpayable",
1350
+ "type": "function"
1351
+ },
1352
+ {
1353
+ "inputs": [
1354
+ {
1355
+ "internalType": "address",
1356
+ "name": "vToken",
1357
+ "type": "address"
1358
+ }
1359
+ ],
1360
+ "name": "updateProtectionState",
1361
+ "outputs": [],
1362
+ "stateMutability": "nonpayable",
1363
+ "type": "function"
1364
+ },
1365
+ {
1366
+ "inputs": [],
1367
+ "name": "vai",
1368
+ "outputs": [
1369
+ {
1370
+ "internalType": "address",
1371
+ "name": "",
1372
+ "type": "address"
1373
+ }
1374
+ ],
1375
+ "stateMutability": "view",
1376
+ "type": "function"
1377
+ }
1378
+ ],
1379
+ "bytecode": "0x60e060405234801561000f575f80fd5b5060405161381a38038061381a83398101604081905261002e91610165565b61003783610069565b61004082610069565b6001600160a01b0380841660805282811660a052811660c052610061610093565b50505061020b565b6001600160a01b038116610090576040516342bcdf7f60e11b815260040160405180910390fd5b50565b5f54610100900460ff16156100c35760405162461bcd60e51b81526004016100ba906101b1565b60405180910390fd5b5f5460ff90811614610115575f805460ff191660ff9081179091556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989161010c916101fc565b60405180910390a15b565b5f6001600160a01b0382165b92915050565b5f61012382610117565b61013c81610129565b8114610090575f80fd5b805161012381610133565b61013c81610117565b805161012381610151565b5f805f6060848603121561017a5761017a5f80fd5b5f6101858686610146565b93505060206101968682870161015a565b92505060406101a78682870161015a565b9150509250925092565b6020808252810161012381602781527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469602082015266616c697a696e6760c81b604082015260600190565b60ff8216815260208101610123565b60805160a05160c0516135c26102585f395f818161058001528181611a8c0152818161234a015261238401525f818161047b01526122f601525f81816104ec015261180d01526135c25ff3fe608060405234801561000f575f80fd5b5060043610610255575f3560e01c806388142b6b11610140578063b540894f116100bf578063cf1412c011610084578063cf1412c014610656578063dcc8896214610669578063e2201bb81461067c578063e30c39781461068f578063e40c2fed146106a0578063f2fde38b146106b3575f80fd5b8063b540894f1461055a578063b62e4c921461057b578063bd11c4c0146103f3578063c3821757146105a2578063c4d66de814610643575f80fd5b8063a31ebe5811610105578063a31ebe58146104d4578063a4edcd4c146104e7578063a9534f8a1461051b578063a9c3cab114610536578063b4a0bdf314610549575f80fd5b806388142b6b146104635780638a2f7f6d146104765780638cf38bb11461049d5780638da5cb5b146104b0578063969f58d3146104c1575f80fd5b80634912c452116101d757806376489e381161019c57806376489e38146103ab57806379ba5097146103eb5780637f5e1328146103f35780637fa6ea5014610401578063870dc597146104225780638769b23114610435575f80fd5b80634912c4521461034a57806352a6bce31461035d578063578e5c22146103705780636121316814610390578063715018a6146103a3575f80fd5b80631be74faf1161021d5780631be74faf146102f457806323013b83146103095780632f7b5dd71461031c5780633b4ecdb21461032f578063412b6ec714610337575f80fd5b806308af5431146102595780630a5fa04d1461027e5780630e32cb86146102a55780631169d5a6146102ba57806315a53122146102e1575b5f80fd5b6102686706f05b59d3b2000081565b6040516102759190612895565b60405180910390f35b6102687f84d6ca795decc666d3d1d524cbbadd8a1e0e0279db766fe7a1b41b1eb897060081565b6102b86102b33660046128d1565b6106c6565b005b6102687f7bd9fcecef8429101f34baefb335883a97edd91e0d8fdc455d73ab727abf700081565b6102b86102ef366004612909565b6106da565b6102fc610727565b60405161027591906129a6565b6102b86103173660046129ca565b6108da565b6102b861032a366004612a47565b6109fb565b6102fc610ac4565b6102b86103453660046129ca565b610b24565b6102b8610358366004612a9c565b610bd2565b61026861036b3660046128d1565b610dbf565b61038361037e366004612ae8565b610dd0565b6040516102759190612b06565b6102b861039e366004612b2d565b610df8565b6102b8610e29565b6103de6103b93660046128d1565b6001600160a01b03165f90815260c96020526040902060010154610100900460ff1690565b6040516102759190612b53565b6102b8610e3c565b61026866b1a2bc2ec5000081565b61041461040f3660046128d1565b610e71565b604051610275929190612b61565b6102b8610430366004612bc2565b610e85565b6103de6104433660046128d1565b6001600160a01b03165f90815260c9602052604090206001015460ff1690565b6104146104713660046128d1565b610feb565b6103837f000000000000000000000000000000000000000000000000000000000000000081565b6102b86104ab3660046128d1565b610ff6565b6033546001600160a01b0316610383565b6102b86104cf366004612909565b61103d565b6102b86104e2366004612c14565b611087565b61050e7f000000000000000000000000000000000000000000000000000000000000000081565b6040516102759190612c83565b61038373bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb81565b6102b86105443660046128d1565b611158565b6097546001600160a01b031661050e565b61056d610568366004612cd7565b611166565b604051610275929190612dc1565b6103837f000000000000000000000000000000000000000000000000000000000000000081565b61062d6105b03660046128d1565b60c96020525f9081526040902080546001820154600283015460038401546004909401546001600160801b0380851695600160801b9586900482169560ff8087169661010081048216966001600160401b03620100008304811697600160501b90930416956001600160a01b03909116948082169490041691168a565b6040516102759a99989796959493929190612e04565b6102b86106513660046128d1565b61132c565b6102686106643660046128d1565b6113f6565b6103de6106773660046128d1565b611407565b61026861068a3660046128d1565b611493565b6065546001600160a01b0316610383565b6102686106ae3660046128d1565b61149d565b6102b86106c13660046128d1565b6114a7565b6106ce611518565b6106d781611542565b50565b6107186040518060400160405280601f81526020017f7570646174654d696e507269636528616464726573732c75696e7431323829008152506115bb565b61072382825f611652565b5050565b60ca546060905f816001600160401b0381111561074657610746612e99565b60405190808252806020026020018201604052801561076f578160200160208202803683370190505b5090505f805b838110156108355760c95f60ca838154811061079357610793612ead565b5f9182526020808320909101546001600160a01b0316835282019290925260400190206001015460ff610100909104161561082d5760ca81815481106107db576107db612ead565b5f918252602090912001546001600160a01b031683836107fa81612ed5565b94508151811061080c5761080c612ead565b60200260200101906001600160a01b031690816001600160a01b0316815250505b600101610775565b505f816001600160401b0381111561084f5761084f612e99565b604051908082528060200260200182016040528015610878578160200160208202803683370190505b5090505f5b828110156108d15783818151811061089757610897612ead565b60200260200101518282815181106108b1576108b1612ead565b6001600160a01b039092166020928302919091019091015260010161087d565b50949350505050565b6108fb6040518060600160405280602b815260200161346c602b91396115bb565b61090482611789565b5f61090e836117b0565b9050811580156109225750600181015460ff165b1561094b57826040516310ce5af160e11b81526004016109429190612b06565b60405180910390fd5b8115158160010160019054906101000a900460ff1615150361096c57505050565b811561099e575f61098461097f856117f4565b611887565b90506109918285836118b6565b61099c828583611924565b505b60018101805461ff001916610100841515021790556040516001600160a01b038416907fde52a1c70ed1ca343b25cca640873d949641bd6ec7a2c2d0e67374ce54ff89cd906109ee908590612b53565b60405180910390a2505050565b610a1c6040518060600160405280603d8152602001613497603d91396115bb565b805f819003610a3e57604051634ec4810560e11b815260040160405180910390fd5b5f5b81811015610abe5736848483818110610a5b57610a5b612ead565b60c002919091019150610ab59050610a7660208301836128d1565b610a866040840160208501612eed565b60408401356060850135610aa060a0870160808801612f0b565b610ab060c0880160a08901612f0b565b611996565b50600101610a40565b50505050565b606060ca805480602002602001604051908101604052809291908181526020018280548015610b1a57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610afc575b5050505050905090565b610b626040518060400160405280601f81526020017f73657443616368696e67456e61626c656428616464726573732c626f6f6c29008152506115bb565b5f610b6c836117b0565b60048101546040519192506001600160a01b038516917f80b87a057217c1d7743a43adf6fcf8a06553fde1205440ebbfb539f6f0e0442491610bb59160ff909116908690612f29565b60405180910390a2600401805460ff191691151591909117905550565b610bf36040518060600160405280602681526020016134d4602691396115bb565b610bfc83611789565b610c0582611e08565b610c0e81611e08565b66b1a2bc2ec50000821015610c41578166b1a2bc2ec50000604051630f4d736160e01b8152600401610942929190612b61565b6706f05b59d3b20000821115610c7657816706f05b59d3b200006040516350ddbb7560e11b8152600401610942929190612b61565b818110610c985780604051632021db5560e21b81526004016109429190612895565b5f610ca2846117b0565b60038101549091506001600160801b03168314610d295760038101546040516001600160a01b038616917f605baae98875f2133a40a8d489531e195b473e8cdb0c860a2d2b51d430eff58891610d03916001600160801b0316908790612f61565b60405180910390a26003810180546001600160801b0319166001600160801b0385161790555b6003810154600160801b90046001600160801b03168214610abe5760038101546040516001600160a01b038616917f75c087963c80520a0d86e6333991c95d79462341f6960f2904396c23def23dd491610d9591600160801b90046001600160801b0316908690612f61565b60405180910390a26003810180546001600160801b03808516600160801b02911617905550505050565b5f610dc982611e28565b9392505050565b60ca8181548110610ddf575f80fd5b5f918252602090912001546001600160a01b0316905081565b610e196040518060600160405280603a81526020016134fa603a91396115bb565b6106d7610a7660208301836128d1565b610e31611518565b610e3a5f611f06565b565b60655433906001600160a01b03168114610e685760405162461bcd60e51b815260040161094290612fb7565b6106d781611f06565b5f80610e7c83611e28565b91509150915091565b610ea6604051806060016040528060388152602001613534603891396115bb565b805f5b81811015610abe5736848483818110610ec457610ec4612ead565b6060029190910191505f9050610ee06040830160208401612ff2565b6002811115610ef157610ef1612fc7565b03610f1e57610f19610f0660208301836128d1565b610f138360400135611887565b5f611652565b610fe2565b6001610f306040830160208401612ff2565b6002811115610f4157610f41612fc7565b03610f6a57610f19610f5660208301836128d1565b610f638360400135611887565b6001611652565b6002610f7c6040830160208401612ff2565b6002811115610f8d57610f8d612fc7565b03610fa757610f19610fa260208301836128d1565b611f1f565b610fb76040820160208301612ff2565b6002811115610fc857610fc8612fc7565b604051635374467d60e11b81526004016109429190613019565b50600101610ea9565b5f80610e7c83612083565b6110346040518060400160405280601b81526020017f6578697450726f74656374696f6e4d6f646528616464726573732900000000008152506115bb565b6106d781611f1f565b61107b6040518060400160405280601f81526020017f7570646174654d6178507269636528616464726573732c75696e7431323829008152506115bb565b61072382826001611652565b6110a860405180606001604052806021815260200161356c602191396115bb565b6110b182611789565b6110c3816001600160401b0316611e08565b5f6110cd836117b0565b9050826001600160a01b03167f890c8f3ce148a0c50a68d44c085aa3228b8e72273a03dba4ecfd402f94033c1e82600101600a9054906101000a90046001600160401b031684604051611121929190613027565b60405180910390a260010180546001600160401b03909216600160501b0267ffffffffffffffff60501b1990921691909117905550565b61116181611e28565b505050565b6060808685811415806111795750808414155b1561119757604051634ec4810560e11b815260040160405180910390fd5b806001600160401b038111156111af576111af612e99565b6040519080825280602002602001820160405280156111d8578160200160208202803683370190505b509250806001600160401b038111156111f3576111f3612e99565b60405190808252806020026020018201604052801561121c578160200160208202803683370190505b5091505f5b8181101561131f575f60c95f8c8c8581811061123f5761123f612ead565b905060200201602081019061125491906128d1565b6001600160a01b0316815260208101919091526040015f2080549091506112aa906001600160801b03168a8a8581811061129057611290612ead565b90506020020160208101906112a59190613042565b6121c2565b8583815181106112bc576112bc612ead565b9115156020928302919091019091015280546112f490600160801b90046001600160801b031688888581811061129057611290612ead565b84838151811061130657611306612ead565b9115156020928302919091019091015250600101611221565b5050965096945050505050565b5f54610100900460ff161580801561134a57505f54600160ff909116105b806113635750303b15801561136357505f5460ff166001145b61137f5760405162461bcd60e51b8152600401610942906130aa565b5f805460ff1916600117905580156113a0575f805461ff0019166101001790555b6113a98261226b565b8015610723575f805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906113ea906001906130cd565b60405180910390a15050565b5f61140082611e28565b5092915050565b6001600160a01b0381165f90815260c960205260408120600181015460ff16801561145857506001810154611454906001600160401b03600160501b8204811691620100009004166130db565b4210155b8015610dc95750600381015481546001600160801b03600160801b9283900481169261148b9280831692919004166122a2565b109392505050565b5f610dc982612083565b5f61140082612083565b6114af611518565b606580546001600160a01b0383166001600160a01b031990911681179091556114e06033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6033546001600160a01b03163314610e3a5760405162461bcd60e51b8152600401610942906130ee565b6001600160a01b0381166115685760405162461bcd60e51b815260040161094290613169565b609780546001600160a01b038381166001600160a01b03198316179092556040519116907f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa0906113ea9083908590613179565b6097546040516318c5e8ab60e01b81525f916001600160a01b0316906318c5e8ab906115ed90339086906004016131d0565b602060405180830381865afa158015611608573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061162c91906131fb565b90508061072357333083604051634a3fa29360e01b815260040161094293929190613219565b61165b83611789565b816001600160801b03165f036116845760405163a2b326dd60e01b815260040160405180910390fd5b5f61168e846117b0565b90505f61169a856117f4565b90505f8360018111156116af576116af612fc7565b036117165781546001600160801b03600160801b909104811690851611806116df575080846001600160801b0316115b156117065784848260405160016203590160e31b031981526004016109429392919061324f565b6117118286866118b6565b611782565b600183600181111561172a5761172a612fc7565b036117825781546001600160801b039081169085161080611753575080846001600160801b0316105b1561177757848482604051636df018fb60e11b81526004016109429392919061324f565b611782828686611924565b5050505050565b6001600160a01b0381166106d7576040516342bcdf7f60e11b815260040160405180910390fd5b6001600160a01b038082165f90815260c96020526040902060028101549091166117ef57816040516349c9b68960e11b81526004016109429190612b06565b919050565b6040516341976e0960e01b81525f906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906341976e0990611842908590600401612b06565b602060405180830381865afa15801561185d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118819190613282565b92915050565b5f6001600160801b038211156118b2578160405163339718d960e11b81526004016109429190612895565b5090565b82546040516001600160a01b038416917f532579a79f45c3e02b749f0817d46bab6b256e8d1dae660d2f432d8032f21f2d916118fd916001600160801b03169085906132a0565b60405180910390a282546001600160801b0319166001600160801b03919091161790915550565b82546040516001600160a01b038416917f067a69521c594f269500a8d1fd306d6cade49e09512a3fdf637a16aa1694dd889161197291600160801b90046001600160801b03169085906132a0565b60405180910390a282546001600160801b03918216600160801b0291161790915550565b61199f86611789565b6119b1856001600160401b0316611e08565b6119ba84611e08565b6119c383611e08565b6001600160a01b038681165f90815260c960205260409020600201541615611a005785604051630d8cdd9d60e01b81526004016109429190612b06565b66b1a2bc2ec50000841015611a33578366b1a2bc2ec50000604051630f4d736160e01b8152600401610942929190612b61565b6706f05b59d3b20000841115611a6857836706f05b59d3b200006040516350ddbb7560e11b8152600401610942929190612b61565b838310611a8a5782604051632021db5560e21b81526004016109429190612895565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b031603611adc5760405163c992a64b60e01b815260040160405180910390fd5b5f611ae961097f886117f4565b9050604051806101400160405280826001600160801b03168152602001826001600160801b031681526020015f1515815260200184151581526020015f6001600160401b03168152602001876001600160401b03168152602001886001600160a01b03168152602001866001600160801b03168152602001856001600160801b0316815260200183151581525060c95f896001600160a01b03166001600160a01b031681526020019081526020015f205f820151815f015f6101000a8154816001600160801b0302191690836001600160801b031602179055506020820151815f0160106101000a8154816001600160801b0302191690836001600160801b031602179055506040820151816001015f6101000a81548160ff02191690831515021790555060608201518160010160016101000a81548160ff02191690831515021790555060808201518160010160026101000a8154816001600160401b0302191690836001600160401b0316021790555060a082015181600101600a6101000a8154816001600160401b0302191690836001600160401b0316021790555060c0820151816002015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555060e0820151816003015f6101000a8154816001600160801b0302191690836001600160801b031602179055506101008201518160030160106101000a8154816001600160801b0302191690836001600160801b03160217905550610120820151816004015f6101000a81548160ff02191690831515021790555090505060ca87908060018154018082558091505060019003905f5260205f20015f9091909190916101000a8154816001600160a01b0302191690836001600160a01b03160217905550866001600160a01b03167feaeb53cd979b528911d7ed793f11a25e44e5076bef70f458f60049acb4c322b682838989604051611db694939291906132bb565b60405180910390a2866001600160a01b03167fde52a1c70ed1ca343b25cca640873d949641bd6ec7a2c2d0e67374ce54ff89cd84604051611df79190612b53565b60405180910390a250505050505050565b805f036106d75760405163273e150360e21b815260040160405180910390fd5b5f805f611e34846122ea565b9050611e3f81612408565b90935091508215801590611e5257508115155b15611e5d5750915091565b5f611e67826117f4565b6001600160a01b0383165f90815260c960205260409020600181015491925090610100900460ff16611ea957611e9e838384612493565b509485945092505050565b5f805f611eb7848688612510565b9250925092505f611eca85878985612591565b9050611eea8187866001600160801b0316866001600160801b0316612692565b9099509750611efa878a8a612493565b50505050505050915091565b606580546001600160a01b03191690556106d7816126cf565b611f2881611789565b5f611f32826117b0565b600181015490915060ff16611f5c5781604051638e001e1f60e01b81526004016109429190612b06565b6001810154611f83906001600160401b03600160501b8204811691620100009004166130db565b421015611fc4576001810154604051630874f3a160e01b81526109429184916001600160401b03620100008304811692600160501b900416906004016132f0565b80545f90611fe5906001600160801b0380821691600160801b9004166122a2565b6003830154909150600160801b90046001600160801b031681106120365760038201546040516311c9371560e01b81526109429185918491600160801b90046001600160801b031690600401613318565b60018201805469ffffffffffffffff00ff191690556040516001600160a01b038416907f6977cf3ab0aaccc6ceeb77ddaf93b2e1f1b9e6c7e39c7fb08314efbbea365741905f90a2505050565b5f805f61208f846122ea565b905061209a81612408565b909350915082158015906120ad57508115155b156120b85750915091565b5f6120c2826117f4565b6001600160a01b0383165f90815260c960205260409020600181015491925090610100900460ff166120f957509485945092505050565b5f61210383611887565b82549091505f906001600160801b031684106121295782546001600160801b031661212b565b815b83549091505f90600160801b90046001600160801b0316851161215f578354600160801b90046001600160801b0316612161565b825b60018501549091505f9060ff168061219157506003850154612191908790859085906001600160801b0316612720565b90506121b18187856001600160801b0316856001600160801b0316612692565b909b909a5098505050505050505050565b5f6001600160801b03831615806121e057506001600160801b038216155b156121ec57505f611881565b5f826001600160801b0316846001600160801b03161161221e576122108484613340565b6001600160801b0316612232565b6122288385613340565b6001600160801b03165b905066b1a2bc2ec500006001600160801b038516612258670de0b6b3a764000084613363565b612262919061338f565b11949350505050565b5f54610100900460ff166122915760405162461bcd60e51b8152600401610942906133e9565b61229961279f565b6106d7816127cd565b5f806122ba6001600160801b038086169085166133f9565b90506001600160801b0384166122d8670de0b6b3a764000083613363565b6122e2919061338f565b949350505050565b5f6122f482611789565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603612348575073bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb919050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316036123a857507f0000000000000000000000000000000000000000000000000000000000000000919050565b816001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123e4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118819190613417565b6001600160a01b0381165f90815260c96020526040812060040154819060ff1661243657505f928392509050565b6124607f7bd9fcecef8429101f34baefb335883a97edd91e0d8fdc455d73ab727abf7000846127f3565b915061248c7f84d6ca795decc666d3d1d524cbbadd8a1e0e0279db766fe7a1b41b1eb8970600846127f3565b9050915091565b6001600160a01b0383165f90815260c9602052604090206004015460ff166124ba57505050565b6124e57f7bd9fcecef8429101f34baefb335883a97edd91e0d8fdc455d73ab727abf70008484612829565b6111617f84d6ca795decc666d3d1d524cbbadd8a1e0e0279db766fe7a1b41b1eb89706008483612829565b5f805f8061251d86611887565b87549091506001600160801b0380821691600160801b90048116905f9084168311156125555761254e8a89866118b6565b5082915060015b816001600160801b0316846001600160801b031611156125815761257a8a8986611924565b5082905060015b9199909850909650945050505050565b835460038501545f916125bd9186916001600160801b0380821692600160801b90920481169116612720565b1561267a57600185015460ff161580806125d45750825b156125ff5760018601805469ffffffffffffffff0000191662010000426001600160401b0316021790555b8015612616576001868101805460ff191690911790555b85546040516001600160a01b038616917f0e25941e7a04e3bd937c28c403c9431e5fe5cf87df19322b5352bf457f8b1c5f916126689189916001600160801b0380831692600160801b90041690613435565b60405180910390a260019150506122e2565b600185015460ff16156122e257506001949350505050565b5f80856126a35750839050806126c6565b8385106126b057836126b2565b845b8386116126bf57836126c1565b855b915091505b94509492505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f80670de0b6b3a764000061273584826130db565b612748906001600160801b038816613363565b612752919061338f565b90505f670de0b6b3a764000061276885826133f9565b61277b906001600160801b038816613363565b612785919061338f565b90508187118061279457508087105b979650505050505050565b5f54610100900460ff166127c55760405162461bcd60e51b8152600401610942906133e9565b610e3a61285e565b5f54610100900460ff166106ce5760405162461bcd60e51b8152600401610942906133e9565b5f80838360405160200161280892919061345d565b60408051601f1981840301815291905280516020909101205c949350505050565b5f838360405160200161283d92919061345d565b60405160208183030381529060405280519060200120905081815d50505050565b5f54610100900460ff166128845760405162461bcd60e51b8152600401610942906133e9565b610e3a33611f06565b805b82525050565b60208101611881828461288d565b5f6001600160a01b038216611881565b6128bc816128a3565b81146106d7575f80fd5b8035611881816128b3565b5f602082840312156128e4576128e45f80fd5b5f6122e284846128c6565b6001600160801b0381166128bc565b8035611881816128ef565b5f806040838503121561291d5761291d5f80fd5b5f61292885856128c6565b9250506020612939858286016128fe565b9150509250929050565b61288f816128a3565b5f6129578383612943565b505060200190565b5f612968825190565b8084526020938401938301805f5b8381101561299b57815161298a888261294c565b975060208301925050600101612976565b509495945050505050565b60208082528101610dc9818461295f565b8015156128bc565b8035611881816129b7565b5f80604083850312156129de576129de5f80fd5b5f6129e985856128c6565b9250506020612939858286016129bf565b5f8083601f840112612a0d57612a0d5f80fd5b5081356001600160401b03811115612a2657612a265f80fd5b6020830191508360c0820283011115612a4057612a405f80fd5b9250929050565b5f8060208385031215612a5b57612a5b5f80fd5b82356001600160401b03811115612a7357612a735f80fd5b612a7f858286016129fa565b92509250509250929050565b806128bc565b803561188181612a8b565b5f805f60608486031215612ab157612ab15f80fd5b5f612abc86866128c6565b9350506020612acd86828701612a91565b9250506040612ade86828701612a91565b9150509250925092565b5f60208284031215612afb57612afb5f80fd5b5f6122e28484612a91565b602081016118818284612943565b5f60c08284031215612b2757612b275f80fd5b50919050565b5f60c08284031215612b4057612b405f80fd5b5f6122e28484612b14565b80151561288f565b602081016118818284612b4b565b60408101612b6f828561288d565b610dc9602083018461288d565b5f8083601f840112612b8f57612b8f5f80fd5b5081356001600160401b03811115612ba857612ba85f80fd5b602083019150836060820283011115612a4057612a405f80fd5b5f8060208385031215612bd657612bd65f80fd5b82356001600160401b03811115612bee57612bee5f80fd5b612a7f85828601612b7c565b6001600160401b0381166128bc565b803561188181612bfa565b5f8060408385031215612c2857612c285f80fd5b5f612c3385856128c6565b925050602061293985828601612c09565b5f6118816001600160a01b038316612c5a565b90565b6001600160a01b031690565b5f61188182612c44565b5f61188182612c66565b61288f81612c70565b602081016118818284612c7a565b5f8083601f840112612ca457612ca45f80fd5b5081356001600160401b03811115612cbd57612cbd5f80fd5b602083019150836020820283011115612a4057612a405f80fd5b5f805f805f8060608789031215612cef57612cef5f80fd5b86356001600160401b03811115612d0757612d075f80fd5b612d1389828a01612c91565b965096505060208701356001600160401b03811115612d3357612d335f80fd5b612d3f89828a01612c91565b945094505060408701356001600160401b03811115612d5f57612d5f5f80fd5b612d6b89828a01612c91565b92509250509295509295509295565b5f6129578383612b4b565b5f612d8e825190565b8084526020938401938301805f5b8381101561299b578151612db08882612d7a565b975060208301925050600101612d9c565b60408082528101612dd28185612d85565b905081810360208301526122e28184612d85565b6001600160801b03811661288f565b6001600160401b03811661288f565b6101408101612e13828d612de6565b612e20602083018c612de6565b612e2d604083018b612b4b565b612e3a606083018a612b4b565b612e476080830189612df5565b612e5460a0830188612df5565b612e6160c0830187612943565b612e6e60e0830186612de6565b612e7c610100830185612de6565b612e8a610120830184612b4b565b9b9a5050505050505050505050565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f5f198203612ee657612ee6612ec1565b5060010190565b5f60208284031215612f0057612f005f80fd5b5f6122e28484612c09565b5f60208284031215612f1e57612f1e5f80fd5b5f6122e284846129bf565b60408101612f378285612b4b565b610dc96020830184612b4b565b5f611881612c576001600160801b03841681565b61288f81612f44565b60408101612b6f8285612f58565b602981525f602082017f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865208152683732bb9037bbb732b960b91b602082015291505b5060400190565b6020808252810161188181612f6f565b634e487b7160e01b5f52602160045260245ffd5b600381106106d7575f80fd5b803561188181612fdb565b5f60208284031215613005576130055f80fd5b5f6122e28484612fe7565b60ff811661288f565b602081016118818284613010565b604081016130358285612df5565b610dc96020830184612df5565b5f60208284031215613055576130555f80fd5b5f6122e284846128fe565b602e81525f602082017f496e697469616c697a61626c653a20636f6e747261637420697320616c72656181526d191e481a5b9a5d1a585b1a5e995960921b60208201529150612fb0565b6020808252810161188181613060565b5f60ff8216611881565b61288f816130ba565b6020810161188182846130c4565b8082018082111561188157611881612ec1565b60208082528181019081527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604083015260608201611881565b602581525f602082017f696e76616c696420616365737320636f6e74726f6c206d616e61676572206164815264647265737360d81b60208201529150612fb0565b6020808252810161188181613128565b604081016131878285612943565b610dc96020830184612943565b8281835e505f910152565b5f6131a8825190565b8084526020840193506131bf818560208601613194565b601f01601f19169290920192915050565b604081016131de8285612943565b81810360208301526122e2818461319f565b8051611881816129b7565b5f6020828403121561320e5761320e5f80fd5b5f6122e284846131f0565b606081016132278286612943565b6132346020830185612943565b8181036040830152613246818461319f565b95945050505050565b6060810161325d8286612943565b61326a6020830185612de6565b6122e2604083018461288d565b805161188181612a8b565b5f60208284031215613295576132955f80fd5b5f6122e28484613277565b604081016132ae8285612de6565b610dc96020830184612de6565b608081016132c98287612de6565b6132d66020830186612de6565b6132e36040830185612df5565b613246606083018461288d565b606081016132fe8286612943565b61330b6020830185612df5565b6122e26040830184612df5565b606081016133268286612943565b613333602083018561288d565b6122e26040830184612f58565b6001600160801b0391821691908116908282039081111561188157611881612ec1565b81810280821583820485141761140057611400612ec1565b634e487b7160e01b5f52601260045260245ffd5b5f8261339d5761339d61337b565b500490565b602b81525f602082017f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206981526a6e697469616c697a696e6760a81b60208201529150612fb0565b60208082528101611881816133a2565b8181038181111561188157611881612ec1565b8051611881816128b3565b5f6020828403121561342a5761342a5f80fd5b5f6122e2848461340c565b60608101613443828661288d565b6134506020830185612de6565b6122e26040830184612de6565b60408101613187828561288d56fe7365744173736574426f756e64656450726963696e67456e61626c656428616464726573732c626f6f6c29736574546f6b656e436f6e666967732828616464726573732c75696e7436342c75696e743235362c75696e743235362c626f6f6c2c626f6f6c295b5d297365745468726573686f6c647328616464726573732c75696e743235362c75696e7432353629736574546f6b656e436f6e6669672828616464726573732c75696e7436342c75696e743235362c75696e743235362c626f6f6c2c626f6f6c292973796e635072696365426f756e6473416e6450726f74656374696f6e732828616464726573732c75696e74382c75696e74323536295b5d29736574436f6f6c646f776e506572696f6428616464726573732c75696e74363429a2646970667358221220989778a9709802c851687ac0a0b9280e6ae3466b1c5a8a63122310bfd5ebdca164736f6c63430008190033",
1380
+ "deployedBytecode": "0x608060405234801561000f575f80fd5b5060043610610255575f3560e01c806388142b6b11610140578063b540894f116100bf578063cf1412c011610084578063cf1412c014610656578063dcc8896214610669578063e2201bb81461067c578063e30c39781461068f578063e40c2fed146106a0578063f2fde38b146106b3575f80fd5b8063b540894f1461055a578063b62e4c921461057b578063bd11c4c0146103f3578063c3821757146105a2578063c4d66de814610643575f80fd5b8063a31ebe5811610105578063a31ebe58146104d4578063a4edcd4c146104e7578063a9534f8a1461051b578063a9c3cab114610536578063b4a0bdf314610549575f80fd5b806388142b6b146104635780638a2f7f6d146104765780638cf38bb11461049d5780638da5cb5b146104b0578063969f58d3146104c1575f80fd5b80634912c452116101d757806376489e381161019c57806376489e38146103ab57806379ba5097146103eb5780637f5e1328146103f35780637fa6ea5014610401578063870dc597146104225780638769b23114610435575f80fd5b80634912c4521461034a57806352a6bce31461035d578063578e5c22146103705780636121316814610390578063715018a6146103a3575f80fd5b80631be74faf1161021d5780631be74faf146102f457806323013b83146103095780632f7b5dd71461031c5780633b4ecdb21461032f578063412b6ec714610337575f80fd5b806308af5431146102595780630a5fa04d1461027e5780630e32cb86146102a55780631169d5a6146102ba57806315a53122146102e1575b5f80fd5b6102686706f05b59d3b2000081565b6040516102759190612895565b60405180910390f35b6102687f84d6ca795decc666d3d1d524cbbadd8a1e0e0279db766fe7a1b41b1eb897060081565b6102b86102b33660046128d1565b6106c6565b005b6102687f7bd9fcecef8429101f34baefb335883a97edd91e0d8fdc455d73ab727abf700081565b6102b86102ef366004612909565b6106da565b6102fc610727565b60405161027591906129a6565b6102b86103173660046129ca565b6108da565b6102b861032a366004612a47565b6109fb565b6102fc610ac4565b6102b86103453660046129ca565b610b24565b6102b8610358366004612a9c565b610bd2565b61026861036b3660046128d1565b610dbf565b61038361037e366004612ae8565b610dd0565b6040516102759190612b06565b6102b861039e366004612b2d565b610df8565b6102b8610e29565b6103de6103b93660046128d1565b6001600160a01b03165f90815260c96020526040902060010154610100900460ff1690565b6040516102759190612b53565b6102b8610e3c565b61026866b1a2bc2ec5000081565b61041461040f3660046128d1565b610e71565b604051610275929190612b61565b6102b8610430366004612bc2565b610e85565b6103de6104433660046128d1565b6001600160a01b03165f90815260c9602052604090206001015460ff1690565b6104146104713660046128d1565b610feb565b6103837f000000000000000000000000000000000000000000000000000000000000000081565b6102b86104ab3660046128d1565b610ff6565b6033546001600160a01b0316610383565b6102b86104cf366004612909565b61103d565b6102b86104e2366004612c14565b611087565b61050e7f000000000000000000000000000000000000000000000000000000000000000081565b6040516102759190612c83565b61038373bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb81565b6102b86105443660046128d1565b611158565b6097546001600160a01b031661050e565b61056d610568366004612cd7565b611166565b604051610275929190612dc1565b6103837f000000000000000000000000000000000000000000000000000000000000000081565b61062d6105b03660046128d1565b60c96020525f9081526040902080546001820154600283015460038401546004909401546001600160801b0380851695600160801b9586900482169560ff8087169661010081048216966001600160401b03620100008304811697600160501b90930416956001600160a01b03909116948082169490041691168a565b6040516102759a99989796959493929190612e04565b6102b86106513660046128d1565b61132c565b6102686106643660046128d1565b6113f6565b6103de6106773660046128d1565b611407565b61026861068a3660046128d1565b611493565b6065546001600160a01b0316610383565b6102686106ae3660046128d1565b61149d565b6102b86106c13660046128d1565b6114a7565b6106ce611518565b6106d781611542565b50565b6107186040518060400160405280601f81526020017f7570646174654d696e507269636528616464726573732c75696e7431323829008152506115bb565b61072382825f611652565b5050565b60ca546060905f816001600160401b0381111561074657610746612e99565b60405190808252806020026020018201604052801561076f578160200160208202803683370190505b5090505f805b838110156108355760c95f60ca838154811061079357610793612ead565b5f9182526020808320909101546001600160a01b0316835282019290925260400190206001015460ff610100909104161561082d5760ca81815481106107db576107db612ead565b5f918252602090912001546001600160a01b031683836107fa81612ed5565b94508151811061080c5761080c612ead565b60200260200101906001600160a01b031690816001600160a01b0316815250505b600101610775565b505f816001600160401b0381111561084f5761084f612e99565b604051908082528060200260200182016040528015610878578160200160208202803683370190505b5090505f5b828110156108d15783818151811061089757610897612ead565b60200260200101518282815181106108b1576108b1612ead565b6001600160a01b039092166020928302919091019091015260010161087d565b50949350505050565b6108fb6040518060600160405280602b815260200161346c602b91396115bb565b61090482611789565b5f61090e836117b0565b9050811580156109225750600181015460ff165b1561094b57826040516310ce5af160e11b81526004016109429190612b06565b60405180910390fd5b8115158160010160019054906101000a900460ff1615150361096c57505050565b811561099e575f61098461097f856117f4565b611887565b90506109918285836118b6565b61099c828583611924565b505b60018101805461ff001916610100841515021790556040516001600160a01b038416907fde52a1c70ed1ca343b25cca640873d949641bd6ec7a2c2d0e67374ce54ff89cd906109ee908590612b53565b60405180910390a2505050565b610a1c6040518060600160405280603d8152602001613497603d91396115bb565b805f819003610a3e57604051634ec4810560e11b815260040160405180910390fd5b5f5b81811015610abe5736848483818110610a5b57610a5b612ead565b60c002919091019150610ab59050610a7660208301836128d1565b610a866040840160208501612eed565b60408401356060850135610aa060a0870160808801612f0b565b610ab060c0880160a08901612f0b565b611996565b50600101610a40565b50505050565b606060ca805480602002602001604051908101604052809291908181526020018280548015610b1a57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610afc575b5050505050905090565b610b626040518060400160405280601f81526020017f73657443616368696e67456e61626c656428616464726573732c626f6f6c29008152506115bb565b5f610b6c836117b0565b60048101546040519192506001600160a01b038516917f80b87a057217c1d7743a43adf6fcf8a06553fde1205440ebbfb539f6f0e0442491610bb59160ff909116908690612f29565b60405180910390a2600401805460ff191691151591909117905550565b610bf36040518060600160405280602681526020016134d4602691396115bb565b610bfc83611789565b610c0582611e08565b610c0e81611e08565b66b1a2bc2ec50000821015610c41578166b1a2bc2ec50000604051630f4d736160e01b8152600401610942929190612b61565b6706f05b59d3b20000821115610c7657816706f05b59d3b200006040516350ddbb7560e11b8152600401610942929190612b61565b818110610c985780604051632021db5560e21b81526004016109429190612895565b5f610ca2846117b0565b60038101549091506001600160801b03168314610d295760038101546040516001600160a01b038616917f605baae98875f2133a40a8d489531e195b473e8cdb0c860a2d2b51d430eff58891610d03916001600160801b0316908790612f61565b60405180910390a26003810180546001600160801b0319166001600160801b0385161790555b6003810154600160801b90046001600160801b03168214610abe5760038101546040516001600160a01b038616917f75c087963c80520a0d86e6333991c95d79462341f6960f2904396c23def23dd491610d9591600160801b90046001600160801b0316908690612f61565b60405180910390a26003810180546001600160801b03808516600160801b02911617905550505050565b5f610dc982611e28565b9392505050565b60ca8181548110610ddf575f80fd5b5f918252602090912001546001600160a01b0316905081565b610e196040518060600160405280603a81526020016134fa603a91396115bb565b6106d7610a7660208301836128d1565b610e31611518565b610e3a5f611f06565b565b60655433906001600160a01b03168114610e685760405162461bcd60e51b815260040161094290612fb7565b6106d781611f06565b5f80610e7c83611e28565b91509150915091565b610ea6604051806060016040528060388152602001613534603891396115bb565b805f5b81811015610abe5736848483818110610ec457610ec4612ead565b6060029190910191505f9050610ee06040830160208401612ff2565b6002811115610ef157610ef1612fc7565b03610f1e57610f19610f0660208301836128d1565b610f138360400135611887565b5f611652565b610fe2565b6001610f306040830160208401612ff2565b6002811115610f4157610f41612fc7565b03610f6a57610f19610f5660208301836128d1565b610f638360400135611887565b6001611652565b6002610f7c6040830160208401612ff2565b6002811115610f8d57610f8d612fc7565b03610fa757610f19610fa260208301836128d1565b611f1f565b610fb76040820160208301612ff2565b6002811115610fc857610fc8612fc7565b604051635374467d60e11b81526004016109429190613019565b50600101610ea9565b5f80610e7c83612083565b6110346040518060400160405280601b81526020017f6578697450726f74656374696f6e4d6f646528616464726573732900000000008152506115bb565b6106d781611f1f565b61107b6040518060400160405280601f81526020017f7570646174654d6178507269636528616464726573732c75696e7431323829008152506115bb565b61072382826001611652565b6110a860405180606001604052806021815260200161356c602191396115bb565b6110b182611789565b6110c3816001600160401b0316611e08565b5f6110cd836117b0565b9050826001600160a01b03167f890c8f3ce148a0c50a68d44c085aa3228b8e72273a03dba4ecfd402f94033c1e82600101600a9054906101000a90046001600160401b031684604051611121929190613027565b60405180910390a260010180546001600160401b03909216600160501b0267ffffffffffffffff60501b1990921691909117905550565b61116181611e28565b505050565b6060808685811415806111795750808414155b1561119757604051634ec4810560e11b815260040160405180910390fd5b806001600160401b038111156111af576111af612e99565b6040519080825280602002602001820160405280156111d8578160200160208202803683370190505b509250806001600160401b038111156111f3576111f3612e99565b60405190808252806020026020018201604052801561121c578160200160208202803683370190505b5091505f5b8181101561131f575f60c95f8c8c8581811061123f5761123f612ead565b905060200201602081019061125491906128d1565b6001600160a01b0316815260208101919091526040015f2080549091506112aa906001600160801b03168a8a8581811061129057611290612ead565b90506020020160208101906112a59190613042565b6121c2565b8583815181106112bc576112bc612ead565b9115156020928302919091019091015280546112f490600160801b90046001600160801b031688888581811061129057611290612ead565b84838151811061130657611306612ead565b9115156020928302919091019091015250600101611221565b5050965096945050505050565b5f54610100900460ff161580801561134a57505f54600160ff909116105b806113635750303b15801561136357505f5460ff166001145b61137f5760405162461bcd60e51b8152600401610942906130aa565b5f805460ff1916600117905580156113a0575f805461ff0019166101001790555b6113a98261226b565b8015610723575f805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906113ea906001906130cd565b60405180910390a15050565b5f61140082611e28565b5092915050565b6001600160a01b0381165f90815260c960205260408120600181015460ff16801561145857506001810154611454906001600160401b03600160501b8204811691620100009004166130db565b4210155b8015610dc95750600381015481546001600160801b03600160801b9283900481169261148b9280831692919004166122a2565b109392505050565b5f610dc982612083565b5f61140082612083565b6114af611518565b606580546001600160a01b0383166001600160a01b031990911681179091556114e06033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6033546001600160a01b03163314610e3a5760405162461bcd60e51b8152600401610942906130ee565b6001600160a01b0381166115685760405162461bcd60e51b815260040161094290613169565b609780546001600160a01b038381166001600160a01b03198316179092556040519116907f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa0906113ea9083908590613179565b6097546040516318c5e8ab60e01b81525f916001600160a01b0316906318c5e8ab906115ed90339086906004016131d0565b602060405180830381865afa158015611608573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061162c91906131fb565b90508061072357333083604051634a3fa29360e01b815260040161094293929190613219565b61165b83611789565b816001600160801b03165f036116845760405163a2b326dd60e01b815260040160405180910390fd5b5f61168e846117b0565b90505f61169a856117f4565b90505f8360018111156116af576116af612fc7565b036117165781546001600160801b03600160801b909104811690851611806116df575080846001600160801b0316115b156117065784848260405160016203590160e31b031981526004016109429392919061324f565b6117118286866118b6565b611782565b600183600181111561172a5761172a612fc7565b036117825781546001600160801b039081169085161080611753575080846001600160801b0316105b1561177757848482604051636df018fb60e11b81526004016109429392919061324f565b611782828686611924565b5050505050565b6001600160a01b0381166106d7576040516342bcdf7f60e11b815260040160405180910390fd5b6001600160a01b038082165f90815260c96020526040902060028101549091166117ef57816040516349c9b68960e11b81526004016109429190612b06565b919050565b6040516341976e0960e01b81525f906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906341976e0990611842908590600401612b06565b602060405180830381865afa15801561185d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118819190613282565b92915050565b5f6001600160801b038211156118b2578160405163339718d960e11b81526004016109429190612895565b5090565b82546040516001600160a01b038416917f532579a79f45c3e02b749f0817d46bab6b256e8d1dae660d2f432d8032f21f2d916118fd916001600160801b03169085906132a0565b60405180910390a282546001600160801b0319166001600160801b03919091161790915550565b82546040516001600160a01b038416917f067a69521c594f269500a8d1fd306d6cade49e09512a3fdf637a16aa1694dd889161197291600160801b90046001600160801b03169085906132a0565b60405180910390a282546001600160801b03918216600160801b0291161790915550565b61199f86611789565b6119b1856001600160401b0316611e08565b6119ba84611e08565b6119c383611e08565b6001600160a01b038681165f90815260c960205260409020600201541615611a005785604051630d8cdd9d60e01b81526004016109429190612b06565b66b1a2bc2ec50000841015611a33578366b1a2bc2ec50000604051630f4d736160e01b8152600401610942929190612b61565b6706f05b59d3b20000841115611a6857836706f05b59d3b200006040516350ddbb7560e11b8152600401610942929190612b61565b838310611a8a5782604051632021db5560e21b81526004016109429190612895565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b031603611adc5760405163c992a64b60e01b815260040160405180910390fd5b5f611ae961097f886117f4565b9050604051806101400160405280826001600160801b03168152602001826001600160801b031681526020015f1515815260200184151581526020015f6001600160401b03168152602001876001600160401b03168152602001886001600160a01b03168152602001866001600160801b03168152602001856001600160801b0316815260200183151581525060c95f896001600160a01b03166001600160a01b031681526020019081526020015f205f820151815f015f6101000a8154816001600160801b0302191690836001600160801b031602179055506020820151815f0160106101000a8154816001600160801b0302191690836001600160801b031602179055506040820151816001015f6101000a81548160ff02191690831515021790555060608201518160010160016101000a81548160ff02191690831515021790555060808201518160010160026101000a8154816001600160401b0302191690836001600160401b0316021790555060a082015181600101600a6101000a8154816001600160401b0302191690836001600160401b0316021790555060c0820151816002015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555060e0820151816003015f6101000a8154816001600160801b0302191690836001600160801b031602179055506101008201518160030160106101000a8154816001600160801b0302191690836001600160801b03160217905550610120820151816004015f6101000a81548160ff02191690831515021790555090505060ca87908060018154018082558091505060019003905f5260205f20015f9091909190916101000a8154816001600160a01b0302191690836001600160a01b03160217905550866001600160a01b03167feaeb53cd979b528911d7ed793f11a25e44e5076bef70f458f60049acb4c322b682838989604051611db694939291906132bb565b60405180910390a2866001600160a01b03167fde52a1c70ed1ca343b25cca640873d949641bd6ec7a2c2d0e67374ce54ff89cd84604051611df79190612b53565b60405180910390a250505050505050565b805f036106d75760405163273e150360e21b815260040160405180910390fd5b5f805f611e34846122ea565b9050611e3f81612408565b90935091508215801590611e5257508115155b15611e5d5750915091565b5f611e67826117f4565b6001600160a01b0383165f90815260c960205260409020600181015491925090610100900460ff16611ea957611e9e838384612493565b509485945092505050565b5f805f611eb7848688612510565b9250925092505f611eca85878985612591565b9050611eea8187866001600160801b0316866001600160801b0316612692565b9099509750611efa878a8a612493565b50505050505050915091565b606580546001600160a01b03191690556106d7816126cf565b611f2881611789565b5f611f32826117b0565b600181015490915060ff16611f5c5781604051638e001e1f60e01b81526004016109429190612b06565b6001810154611f83906001600160401b03600160501b8204811691620100009004166130db565b421015611fc4576001810154604051630874f3a160e01b81526109429184916001600160401b03620100008304811692600160501b900416906004016132f0565b80545f90611fe5906001600160801b0380821691600160801b9004166122a2565b6003830154909150600160801b90046001600160801b031681106120365760038201546040516311c9371560e01b81526109429185918491600160801b90046001600160801b031690600401613318565b60018201805469ffffffffffffffff00ff191690556040516001600160a01b038416907f6977cf3ab0aaccc6ceeb77ddaf93b2e1f1b9e6c7e39c7fb08314efbbea365741905f90a2505050565b5f805f61208f846122ea565b905061209a81612408565b909350915082158015906120ad57508115155b156120b85750915091565b5f6120c2826117f4565b6001600160a01b0383165f90815260c960205260409020600181015491925090610100900460ff166120f957509485945092505050565b5f61210383611887565b82549091505f906001600160801b031684106121295782546001600160801b031661212b565b815b83549091505f90600160801b90046001600160801b0316851161215f578354600160801b90046001600160801b0316612161565b825b60018501549091505f9060ff168061219157506003850154612191908790859085906001600160801b0316612720565b90506121b18187856001600160801b0316856001600160801b0316612692565b909b909a5098505050505050505050565b5f6001600160801b03831615806121e057506001600160801b038216155b156121ec57505f611881565b5f826001600160801b0316846001600160801b03161161221e576122108484613340565b6001600160801b0316612232565b6122288385613340565b6001600160801b03165b905066b1a2bc2ec500006001600160801b038516612258670de0b6b3a764000084613363565b612262919061338f565b11949350505050565b5f54610100900460ff166122915760405162461bcd60e51b8152600401610942906133e9565b61229961279f565b6106d7816127cd565b5f806122ba6001600160801b038086169085166133f9565b90506001600160801b0384166122d8670de0b6b3a764000083613363565b6122e2919061338f565b949350505050565b5f6122f482611789565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603612348575073bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb919050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316036123a857507f0000000000000000000000000000000000000000000000000000000000000000919050565b816001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123e4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118819190613417565b6001600160a01b0381165f90815260c96020526040812060040154819060ff1661243657505f928392509050565b6124607f7bd9fcecef8429101f34baefb335883a97edd91e0d8fdc455d73ab727abf7000846127f3565b915061248c7f84d6ca795decc666d3d1d524cbbadd8a1e0e0279db766fe7a1b41b1eb8970600846127f3565b9050915091565b6001600160a01b0383165f90815260c9602052604090206004015460ff166124ba57505050565b6124e57f7bd9fcecef8429101f34baefb335883a97edd91e0d8fdc455d73ab727abf70008484612829565b6111617f84d6ca795decc666d3d1d524cbbadd8a1e0e0279db766fe7a1b41b1eb89706008483612829565b5f805f8061251d86611887565b87549091506001600160801b0380821691600160801b90048116905f9084168311156125555761254e8a89866118b6565b5082915060015b816001600160801b0316846001600160801b031611156125815761257a8a8986611924565b5082905060015b9199909850909650945050505050565b835460038501545f916125bd9186916001600160801b0380821692600160801b90920481169116612720565b1561267a57600185015460ff161580806125d45750825b156125ff5760018601805469ffffffffffffffff0000191662010000426001600160401b0316021790555b8015612616576001868101805460ff191690911790555b85546040516001600160a01b038616917f0e25941e7a04e3bd937c28c403c9431e5fe5cf87df19322b5352bf457f8b1c5f916126689189916001600160801b0380831692600160801b90041690613435565b60405180910390a260019150506122e2565b600185015460ff16156122e257506001949350505050565b5f80856126a35750839050806126c6565b8385106126b057836126b2565b845b8386116126bf57836126c1565b855b915091505b94509492505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f80670de0b6b3a764000061273584826130db565b612748906001600160801b038816613363565b612752919061338f565b90505f670de0b6b3a764000061276885826133f9565b61277b906001600160801b038816613363565b612785919061338f565b90508187118061279457508087105b979650505050505050565b5f54610100900460ff166127c55760405162461bcd60e51b8152600401610942906133e9565b610e3a61285e565b5f54610100900460ff166106ce5760405162461bcd60e51b8152600401610942906133e9565b5f80838360405160200161280892919061345d565b60408051601f1981840301815291905280516020909101205c949350505050565b5f838360405160200161283d92919061345d565b60405160208183030381529060405280519060200120905081815d50505050565b5f54610100900460ff166128845760405162461bcd60e51b8152600401610942906133e9565b610e3a33611f06565b805b82525050565b60208101611881828461288d565b5f6001600160a01b038216611881565b6128bc816128a3565b81146106d7575f80fd5b8035611881816128b3565b5f602082840312156128e4576128e45f80fd5b5f6122e284846128c6565b6001600160801b0381166128bc565b8035611881816128ef565b5f806040838503121561291d5761291d5f80fd5b5f61292885856128c6565b9250506020612939858286016128fe565b9150509250929050565b61288f816128a3565b5f6129578383612943565b505060200190565b5f612968825190565b8084526020938401938301805f5b8381101561299b57815161298a888261294c565b975060208301925050600101612976565b509495945050505050565b60208082528101610dc9818461295f565b8015156128bc565b8035611881816129b7565b5f80604083850312156129de576129de5f80fd5b5f6129e985856128c6565b9250506020612939858286016129bf565b5f8083601f840112612a0d57612a0d5f80fd5b5081356001600160401b03811115612a2657612a265f80fd5b6020830191508360c0820283011115612a4057612a405f80fd5b9250929050565b5f8060208385031215612a5b57612a5b5f80fd5b82356001600160401b03811115612a7357612a735f80fd5b612a7f858286016129fa565b92509250509250929050565b806128bc565b803561188181612a8b565b5f805f60608486031215612ab157612ab15f80fd5b5f612abc86866128c6565b9350506020612acd86828701612a91565b9250506040612ade86828701612a91565b9150509250925092565b5f60208284031215612afb57612afb5f80fd5b5f6122e28484612a91565b602081016118818284612943565b5f60c08284031215612b2757612b275f80fd5b50919050565b5f60c08284031215612b4057612b405f80fd5b5f6122e28484612b14565b80151561288f565b602081016118818284612b4b565b60408101612b6f828561288d565b610dc9602083018461288d565b5f8083601f840112612b8f57612b8f5f80fd5b5081356001600160401b03811115612ba857612ba85f80fd5b602083019150836060820283011115612a4057612a405f80fd5b5f8060208385031215612bd657612bd65f80fd5b82356001600160401b03811115612bee57612bee5f80fd5b612a7f85828601612b7c565b6001600160401b0381166128bc565b803561188181612bfa565b5f8060408385031215612c2857612c285f80fd5b5f612c3385856128c6565b925050602061293985828601612c09565b5f6118816001600160a01b038316612c5a565b90565b6001600160a01b031690565b5f61188182612c44565b5f61188182612c66565b61288f81612c70565b602081016118818284612c7a565b5f8083601f840112612ca457612ca45f80fd5b5081356001600160401b03811115612cbd57612cbd5f80fd5b602083019150836020820283011115612a4057612a405f80fd5b5f805f805f8060608789031215612cef57612cef5f80fd5b86356001600160401b03811115612d0757612d075f80fd5b612d1389828a01612c91565b965096505060208701356001600160401b03811115612d3357612d335f80fd5b612d3f89828a01612c91565b945094505060408701356001600160401b03811115612d5f57612d5f5f80fd5b612d6b89828a01612c91565b92509250509295509295509295565b5f6129578383612b4b565b5f612d8e825190565b8084526020938401938301805f5b8381101561299b578151612db08882612d7a565b975060208301925050600101612d9c565b60408082528101612dd28185612d85565b905081810360208301526122e28184612d85565b6001600160801b03811661288f565b6001600160401b03811661288f565b6101408101612e13828d612de6565b612e20602083018c612de6565b612e2d604083018b612b4b565b612e3a606083018a612b4b565b612e476080830189612df5565b612e5460a0830188612df5565b612e6160c0830187612943565b612e6e60e0830186612de6565b612e7c610100830185612de6565b612e8a610120830184612b4b565b9b9a5050505050505050505050565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f5f198203612ee657612ee6612ec1565b5060010190565b5f60208284031215612f0057612f005f80fd5b5f6122e28484612c09565b5f60208284031215612f1e57612f1e5f80fd5b5f6122e284846129bf565b60408101612f378285612b4b565b610dc96020830184612b4b565b5f611881612c576001600160801b03841681565b61288f81612f44565b60408101612b6f8285612f58565b602981525f602082017f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865208152683732bb9037bbb732b960b91b602082015291505b5060400190565b6020808252810161188181612f6f565b634e487b7160e01b5f52602160045260245ffd5b600381106106d7575f80fd5b803561188181612fdb565b5f60208284031215613005576130055f80fd5b5f6122e28484612fe7565b60ff811661288f565b602081016118818284613010565b604081016130358285612df5565b610dc96020830184612df5565b5f60208284031215613055576130555f80fd5b5f6122e284846128fe565b602e81525f602082017f496e697469616c697a61626c653a20636f6e747261637420697320616c72656181526d191e481a5b9a5d1a585b1a5e995960921b60208201529150612fb0565b6020808252810161188181613060565b5f60ff8216611881565b61288f816130ba565b6020810161188182846130c4565b8082018082111561188157611881612ec1565b60208082528181019081527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604083015260608201611881565b602581525f602082017f696e76616c696420616365737320636f6e74726f6c206d616e61676572206164815264647265737360d81b60208201529150612fb0565b6020808252810161188181613128565b604081016131878285612943565b610dc96020830184612943565b8281835e505f910152565b5f6131a8825190565b8084526020840193506131bf818560208601613194565b601f01601f19169290920192915050565b604081016131de8285612943565b81810360208301526122e2818461319f565b8051611881816129b7565b5f6020828403121561320e5761320e5f80fd5b5f6122e284846131f0565b606081016132278286612943565b6132346020830185612943565b8181036040830152613246818461319f565b95945050505050565b6060810161325d8286612943565b61326a6020830185612de6565b6122e2604083018461288d565b805161188181612a8b565b5f60208284031215613295576132955f80fd5b5f6122e28484613277565b604081016132ae8285612de6565b610dc96020830184612de6565b608081016132c98287612de6565b6132d66020830186612de6565b6132e36040830185612df5565b613246606083018461288d565b606081016132fe8286612943565b61330b6020830185612df5565b6122e26040830184612df5565b606081016133268286612943565b613333602083018561288d565b6122e26040830184612f58565b6001600160801b0391821691908116908282039081111561188157611881612ec1565b81810280821583820485141761140057611400612ec1565b634e487b7160e01b5f52601260045260245ffd5b5f8261339d5761339d61337b565b500490565b602b81525f602082017f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206981526a6e697469616c697a696e6760a81b60208201529150612fb0565b60208082528101611881816133a2565b8181038181111561188157611881612ec1565b8051611881816128b3565b5f6020828403121561342a5761342a5f80fd5b5f6122e2848461340c565b60608101613443828661288d565b6134506020830185612de6565b6122e26040830184612de6565b60408101613187828561288d56fe7365744173736574426f756e64656450726963696e67456e61626c656428616464726573732c626f6f6c29736574546f6b656e436f6e666967732828616464726573732c75696e7436342c75696e743235362c75696e743235362c626f6f6c2c626f6f6c295b5d297365745468726573686f6c647328616464726573732c75696e743235362c75696e7432353629736574546f6b656e436f6e6669672828616464726573732c75696e7436342c75696e743235362c75696e743235362c626f6f6c2c626f6f6c292973796e635072696365426f756e6473416e6450726f74656374696f6e732828616464726573732c75696e74382c75696e74323536295b5d29736574436f6f6c646f776e506572696f6428616464726573732c75696e74363429a2646970667358221220989778a9709802c851687ac0a0b9280e6ae3466b1c5a8a63122310bfd5ebdca164736f6c63430008190033",
1381
+ "linkReferences": {},
1382
+ "deployedLinkReferences": {}
1383
+ }