@gooddollar/goodprotocol 2.0.9 → 2.0.11

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 (186) hide show
  1. package/artifacts/abis/BuyGDClone.min.json +1 -1
  2. package/artifacts/abis/BuyGDCloneFactory.min.json +1 -1
  3. package/artifacts/abis/FuseStakingV3.min.json +1 -1
  4. package/artifacts/contracts/DAOStackInterfaces.sol/Avatar.dbg.json +1 -1
  5. package/artifacts/contracts/DAOStackInterfaces.sol/Controller.dbg.json +1 -1
  6. package/artifacts/contracts/DAOStackInterfaces.sol/GlobalConstraintInterface.dbg.json +1 -1
  7. package/artifacts/contracts/DAOStackInterfaces.sol/IntVoteInterface.dbg.json +1 -1
  8. package/artifacts/contracts/DAOStackInterfaces.sol/ReputationInterface.dbg.json +1 -1
  9. package/artifacts/contracts/DAOStackInterfaces.sol/SchemeRegistrar.dbg.json +1 -1
  10. package/artifacts/contracts/Interfaces.sol/AggregatorV3Interface.dbg.json +1 -1
  11. package/artifacts/contracts/Interfaces.sol/ERC20.dbg.json +1 -1
  12. package/artifacts/contracts/Interfaces.sol/IAaveIncentivesController.dbg.json +1 -1
  13. package/artifacts/contracts/Interfaces.sol/IAdminWallet.dbg.json +1 -1
  14. package/artifacts/contracts/Interfaces.sol/IDonationStaking.dbg.json +1 -1
  15. package/artifacts/contracts/Interfaces.sol/IERC2917.dbg.json +1 -1
  16. package/artifacts/contracts/Interfaces.sol/IFirstClaimPool.dbg.json +1 -1
  17. package/artifacts/contracts/Interfaces.sol/IGoodDollar.dbg.json +1 -1
  18. package/artifacts/contracts/Interfaces.sol/IGoodStaking.dbg.json +1 -1
  19. package/artifacts/contracts/Interfaces.sol/IHasRouter.dbg.json +1 -1
  20. package/artifacts/contracts/Interfaces.sol/IIdentity.dbg.json +1 -1
  21. package/artifacts/contracts/Interfaces.sol/IIdentityV2.dbg.json +1 -1
  22. package/artifacts/contracts/Interfaces.sol/ILendingPool.dbg.json +1 -1
  23. package/artifacts/contracts/Interfaces.sol/IMultichainRouter.dbg.json +1 -1
  24. package/artifacts/contracts/Interfaces.sol/INameService.dbg.json +1 -1
  25. package/artifacts/contracts/Interfaces.sol/IUBIScheme.dbg.json +1 -1
  26. package/artifacts/contracts/Interfaces.sol/ProxyAdmin.dbg.json +1 -1
  27. package/artifacts/contracts/Interfaces.sol/Reserve.dbg.json +1 -1
  28. package/artifacts/contracts/Interfaces.sol/Staking.dbg.json +1 -1
  29. package/artifacts/contracts/Interfaces.sol/Uniswap.dbg.json +1 -1
  30. package/artifacts/contracts/Interfaces.sol/UniswapFactory.dbg.json +1 -1
  31. package/artifacts/contracts/Interfaces.sol/UniswapPair.dbg.json +1 -1
  32. package/artifacts/contracts/Interfaces.sol/cERC20.dbg.json +1 -1
  33. package/artifacts/contracts/fuseFaucet/Faucet.sol/Faucet.dbg.json +1 -1
  34. package/artifacts/contracts/fuseFaucet/FuseFaucet.sol/FuseFaucet.dbg.json +1 -1
  35. package/artifacts/contracts/fuseFaucet/FuseFaucetV2.sol/FuseFaucetV2.dbg.json +1 -1
  36. package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.dbg.json +1 -1
  37. package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.dbg.json +1 -1
  38. package/artifacts/contracts/governance/GReputation.sol/GReputation.dbg.json +1 -1
  39. package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.dbg.json +1 -1
  40. package/artifacts/contracts/governance/GoodDollarStaking.sol/IGovernanceStaking.dbg.json +1 -1
  41. package/artifacts/contracts/governance/GoodDollarStaking.sol/IStakingUpgrade.dbg.json +1 -1
  42. package/artifacts/contracts/governance/GoodDollarStaking.sol/RewardsMinter.dbg.json +1 -1
  43. package/artifacts/contracts/governance/GovernanceStaking.sol/GovernanceStaking.dbg.json +1 -1
  44. package/artifacts/contracts/governance/MultiBaseGovernanceShareField.sol/MultiBaseGovernanceShareField.dbg.json +1 -1
  45. package/artifacts/contracts/governance/Reputation.sol/Reputation.dbg.json +1 -1
  46. package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.dbg.json +1 -1
  47. package/artifacts/contracts/identity/IdentityV2.sol/IdentityV2.dbg.json +1 -1
  48. package/artifacts/contracts/invite/InvitesFuseV2.sol/InvitesFuseV2.dbg.json +1 -1
  49. package/artifacts/contracts/invite/InvitesV1.sol/InvitesV1.dbg.json +1 -1
  50. package/artifacts/contracts/invite/InvitesV2.sol/InvitesV2.dbg.json +1 -1
  51. package/artifacts/contracts/mocks/AaveMock.sol/AaveMock.dbg.json +1 -1
  52. package/artifacts/contracts/mocks/AaveUSDMockOracle.sol/AaveUSDMockOracle.dbg.json +1 -1
  53. package/artifacts/contracts/mocks/BatUSDMockOracle.sol/BatUSDMockOracle.dbg.json +1 -1
  54. package/artifacts/contracts/mocks/CompUsdMockOracle.sol/CompUSDMockOracle.dbg.json +1 -1
  55. package/artifacts/contracts/mocks/DAIMock.sol/DAIMock.dbg.json +1 -1
  56. package/artifacts/contracts/mocks/DaiEthPriceMockOracle.sol/DaiEthPriceMockOracle.dbg.json +1 -1
  57. package/artifacts/contracts/mocks/DecimalsMock.sol/DecimalsMock.dbg.json +1 -1
  58. package/artifacts/contracts/mocks/DistributionBridgeMock.sol/DistributionBridgeMock.dbg.json +1 -1
  59. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest.dbg.json +1 -1
  60. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.dbg.json +1 -1
  61. package/artifacts/contracts/mocks/EthUSDMockOracle.sol/EthUSDMockOracle.dbg.json +1 -1
  62. package/artifacts/contracts/mocks/FeesFormularMock.sol/FeesFormulaMock.dbg.json +1 -1
  63. package/artifacts/contracts/mocks/GasPriceMockOracle.sol/GasPriceMockOracle.dbg.json +1 -1
  64. package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.dbg.json +1 -1
  65. package/artifacts/contracts/mocks/GoodDollarStakingMock.sol/GoodDollarStakingMock.dbg.json +1 -1
  66. package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.dbg.json +1 -1
  67. package/artifacts/contracts/mocks/IdentityMock.sol/IdentityMock.dbg.json +1 -1
  68. package/artifacts/contracts/mocks/IncentiveControllerMock.sol/IncentiveControllerMock.dbg.json +1 -1
  69. package/artifacts/contracts/mocks/LendingPoolMock.sol/LendingPoolMock.dbg.json +1 -1
  70. package/artifacts/contracts/mocks/MultichainRouterMock.sol/IWrapper.dbg.json +1 -1
  71. package/artifacts/contracts/mocks/MultichainRouterMock.sol/MultichainRouterMock.dbg.json +1 -1
  72. package/artifacts/contracts/mocks/OverMintTester.sol/IGoodDollarStakingTest.dbg.json +1 -1
  73. package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.dbg.json +1 -1
  74. package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.dbg.json +1 -1
  75. package/artifacts/contracts/mocks/PayableMock.sol/PayableMock.dbg.json +1 -1
  76. package/artifacts/contracts/mocks/SixteenDecimalsTokenMock.sol/SixteenDecimalsTokenMock.dbg.json +1 -1
  77. package/artifacts/contracts/mocks/StakingMockFixedAPY.sol/StakingMockFixedAPY.dbg.json +1 -1
  78. package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.dbg.json +1 -1
  79. package/artifacts/contracts/mocks/TwentyDecimalsTokenMock.sol/TwentyDecimalsTokenMock.dbg.json +1 -1
  80. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.dbg.json +1 -1
  81. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.dbg.json +1 -1
  82. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.dbg.json +1 -1
  83. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.dbg.json +1 -1
  84. package/artifacts/contracts/mocks/UsdcMock.sol/USDCMock.dbg.json +1 -1
  85. package/artifacts/contracts/mocks/cBATMock.sol/cBATMock.dbg.json +1 -1
  86. package/artifacts/contracts/mocks/cDAILowWorthMock.sol/cDAILowWorthMock.dbg.json +1 -1
  87. package/artifacts/contracts/mocks/cDAIMock.sol/cDAIMock.dbg.json +1 -1
  88. package/artifacts/contracts/mocks/cDAINonMintableMock.sol/cDAINonMintableMock.dbg.json +1 -1
  89. package/artifacts/contracts/mocks/cDecimalsMock.sol/cDecimalsMock.dbg.json +1 -1
  90. package/artifacts/contracts/mocks/cSDTMock.sol/cSDTMock.dbg.json +1 -1
  91. package/artifacts/contracts/mocks/cUSDCMock.sol/cUSDCMock.dbg.json +1 -1
  92. package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.dbg.json +1 -1
  93. package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.dbg.json +1 -1
  94. package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.dbg.json +1 -1
  95. package/artifacts/contracts/reserve/GoodReserveCDai.sol/ContributionCalc.dbg.json +1 -1
  96. package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.dbg.json +1 -1
  97. package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.dbg.json +1 -1
  98. package/artifacts/contracts/staking/BaseShareFieldV2.sol/BaseShareFieldV2.dbg.json +1 -1
  99. package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.dbg.json +1 -1
  100. package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.dbg.json +1 -1
  101. package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.json +66 -2
  102. package/artifacts/contracts/staking/FuseStakingV3.sol/IConsensus.dbg.json +1 -1
  103. package/artifacts/contracts/staking/FuseStakingV3.sol/PegSwap.dbg.json +1 -1
  104. package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.dbg.json +1 -1
  105. package/artifacts/contracts/staking/SimpleStaking.sol/SimpleStaking.dbg.json +1 -1
  106. package/artifacts/contracts/staking/SimpleStakingV2.sol/SimpleStakingV2.dbg.json +1 -1
  107. package/artifacts/contracts/staking/UniswapV2SwapHelper.sol/UniswapV2SwapHelper.dbg.json +1 -1
  108. package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.dbg.json +1 -1
  109. package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.dbg.json +1 -1
  110. package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.dbg.json +1 -1
  111. package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.dbg.json +1 -1
  112. package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.dbg.json +1 -1
  113. package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.dbg.json +1 -1
  114. package/artifacts/contracts/staking/utils/Math64X64.sol/Math64x64.dbg.json +1 -1
  115. package/artifacts/contracts/staking/utils/StakingRewardsFixedAPY.sol/StakingRewardsFixedAPY.dbg.json +1 -1
  116. package/artifacts/contracts/token/ERC20PresetMinterPauserUpgradeable.sol/ERC20PresetMinterPauserUpgradeable.dbg.json +1 -1
  117. package/artifacts/contracts/token/ERC677.sol/ERC677.dbg.json +1 -1
  118. package/artifacts/contracts/token/ERC677.sol/ERC677Receiver.dbg.json +1 -1
  119. package/artifacts/contracts/token/FeesFormula.sol/IFeesFormula.dbg.json +1 -1
  120. package/artifacts/contracts/token/GoodDollar.sol/GoodDollar.dbg.json +1 -1
  121. package/artifacts/contracts/token/superfluid/ERC20Permit.sol/ERC20Permit.dbg.json +1 -1
  122. package/artifacts/contracts/token/superfluid/ERC20Permit.sol/SelfApprove.dbg.json +1 -1
  123. package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/IGoodDollarCustom.dbg.json +1 -1
  124. package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/ISuperGoodDollar.dbg.json +1 -1
  125. package/artifacts/contracts/token/superfluid/SuperGoodDollar.sol/SuperGoodDollar.dbg.json +1 -1
  126. package/artifacts/contracts/token/superfluid/SuperToken.sol/SuperToken.dbg.json +1 -1
  127. package/artifacts/contracts/token/superfluid/SuperfluidToken.sol/SuperfluidToken.dbg.json +1 -1
  128. package/artifacts/contracts/token/superfluid/UUPSProxiable.sol/UUPSProxiable.dbg.json +1 -1
  129. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/Proxy.dbg.json +1 -1
  130. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSProxy.dbg.json +1 -1
  131. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSUtils.dbg.json +1 -1
  132. package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.dbg.json +1 -1
  133. package/artifacts/contracts/ubi/UBISchemeV2.sol/UBISchemeV2.dbg.json +1 -1
  134. package/artifacts/contracts/utils/AdminWallet.sol/AdminWallet.dbg.json +1 -1
  135. package/artifacts/contracts/utils/AdminWalletFuse.sol/AdminWalletFuse.dbg.json +1 -1
  136. package/artifacts/contracts/utils/BancorFormula.sol/BancorFormula.dbg.json +1 -1
  137. package/artifacts/contracts/utils/BulkProof.sol/BulkProof.dbg.json +1 -1
  138. package/artifacts/contracts/utils/BuyAndBridgeHelper.sol/BuyAndBridgeHelper.dbg.json +1 -1
  139. package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDClone.dbg.json +1 -1
  140. package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDClone.json +27 -2
  141. package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDCloneFactory.dbg.json +1 -1
  142. package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDCloneFactory.json +52 -2
  143. package/artifacts/contracts/utils/BuyGDClone.sol/ISwapRouter.dbg.json +1 -1
  144. package/artifacts/contracts/utils/DAOContract.sol/DAOContract.dbg.json +1 -1
  145. package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.dbg.json +1 -1
  146. package/artifacts/contracts/utils/DSMath.sol/DSMath.dbg.json +1 -1
  147. package/artifacts/contracts/utils/DataTypes.sol/DataTypes.dbg.json +1 -1
  148. package/artifacts/contracts/utils/GDFaucet.sol/GDFaucet.dbg.json +1 -1
  149. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.dbg.json +1 -1
  150. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/IRouter.dbg.json +1 -1
  151. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/PausableControl.dbg.json +1 -1
  152. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/TokenOperation.dbg.json +1 -1
  153. package/artifacts/contracts/utils/IdentityFix.sol/IdentityFix.dbg.json +1 -1
  154. package/artifacts/contracts/utils/MultiCall.sol/Multicall.dbg.json +1 -1
  155. package/artifacts/contracts/utils/MultichainBridgeHelper.sol/MultichainBridgeHelper.dbg.json +1 -1
  156. package/artifacts/contracts/utils/NameService.sol/NameService.dbg.json +1 -1
  157. package/artifacts/contracts/utils/OneTimePayments.sol/OneTimePayments.dbg.json +1 -1
  158. package/artifacts/contracts/utils/OneTimePaymentsV2.sol/OneTimePaymentsV2.dbg.json +1 -1
  159. package/artifacts/contracts/utils/ProtocolUpgrade.sol/OldMarketMaker.dbg.json +1 -1
  160. package/artifacts/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade.dbg.json +1 -1
  161. package/artifacts/contracts/utils/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.dbg.json +1 -1
  162. package/artifacts/contracts/utils/ProtocolUpgradeFuseRecover.sol/ProtocolUpgradeFuseRecover.dbg.json +1 -1
  163. package/artifacts/contracts/utils/ProtocolUpgradeRecover.sol/ProtocolUpgradeRecover.dbg.json +1 -1
  164. package/artifacts/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy.dbg.json +1 -1
  165. package/artifacts/contracts/utils/ProxyFactory1967.sol/ProxyFactory1967.dbg.json +1 -1
  166. package/artifacts/contracts/utils/ReputationTestHelper.sol/ReputationTestHelper.dbg.json +1 -1
  167. package/contracts/staking/FuseStakingV3.sol +79 -67
  168. package/contracts/utils/BuyGDClone.sol +59 -58
  169. package/package.json +3 -1
  170. package/releases/deployment.json +3 -1
  171. package/types/BuyGDClone.ts +42 -12
  172. package/types/BuyGDCloneFactory.ts +68 -0
  173. package/types/FuseStakingV3.ts +111 -0
  174. package/types/IStaticOracle.ts +507 -0
  175. package/types/IUniswapV3Factory.ts +333 -0
  176. package/types/factories/BuyGDCloneFactory__factory.ts +51 -1
  177. package/types/factories/BuyGDClone__factory.ts +26 -1
  178. package/types/factories/FuseStakingV3__factory.ts +65 -1
  179. package/types/factories/IStaticOracle__factory.ts +316 -0
  180. package/types/factories/IUniswapV3Factory__factory.ts +222 -0
  181. package/types/hardhat.d.ts +18 -9
  182. package/types/index.ts +4 -2
  183. package/yarn.lock +116 -2
  184. package/artifacts/abis/IStaticOracle.min.json +0 -1
  185. package/artifacts/contracts/utils/BuyGDClone.sol/IStaticOracle.dbg.json +0 -4
  186. package/artifacts/contracts/utils/BuyGDClone.sol/IStaticOracle.json +0 -79
@@ -279,6 +279,19 @@ const _abi = [
279
279
  stateMutability: "nonpayable",
280
280
  type: "function",
281
281
  },
282
+ {
283
+ inputs: [],
284
+ name: "communityPool",
285
+ outputs: [
286
+ {
287
+ internalType: "address payable",
288
+ name: "",
289
+ type: "address",
290
+ },
291
+ ],
292
+ stateMutability: "view",
293
+ type: "function",
294
+ },
282
295
  {
283
296
  inputs: [],
284
297
  name: "communityPoolBalance",
@@ -331,6 +344,19 @@ const _abi = [
331
344
  stateMutability: "view",
332
345
  type: "function",
333
346
  },
347
+ {
348
+ inputs: [],
349
+ name: "gasFaucet",
350
+ outputs: [
351
+ {
352
+ internalType: "address payable",
353
+ name: "",
354
+ type: "address",
355
+ },
356
+ ],
357
+ stateMutability: "view",
358
+ type: "function",
359
+ },
334
360
  {
335
361
  inputs: [],
336
362
  name: "guardian",
@@ -388,6 +414,19 @@ const _abi = [
388
414
  stateMutability: "view",
389
415
  type: "function",
390
416
  },
417
+ {
418
+ inputs: [],
419
+ name: "lastFaucetBalance",
420
+ outputs: [
421
+ {
422
+ internalType: "uint256",
423
+ name: "",
424
+ type: "uint256",
425
+ },
426
+ ],
427
+ stateMutability: "view",
428
+ type: "function",
429
+ },
391
430
  {
392
431
  inputs: [],
393
432
  name: "maxSlippageRatio",
@@ -641,6 +680,31 @@ const _abi = [
641
680
  stateMutability: "view",
642
681
  type: "function",
643
682
  },
683
+ {
684
+ inputs: [
685
+ {
686
+ internalType: "uint256",
687
+ name: "_stakeBackRatio",
688
+ type: "uint256",
689
+ },
690
+ {
691
+ internalType: "uint256",
692
+ name: "_communityPoolRatio",
693
+ type: "uint256",
694
+ },
695
+ ],
696
+ name: "updateSettings",
697
+ outputs: [],
698
+ stateMutability: "nonpayable",
699
+ type: "function",
700
+ },
701
+ {
702
+ inputs: [],
703
+ name: "upgrade",
704
+ outputs: [],
705
+ stateMutability: "nonpayable",
706
+ type: "function",
707
+ },
644
708
  {
645
709
  inputs: [
646
710
  {
@@ -693,7 +757,7 @@ const _abi = [
693
757
  ];
694
758
 
695
759
  const _bytecode =
696
- "0x608060405234801561001057600080fd5b50613153806100206000396000f3fe6080604052600436106101da5760003560e01c806304d26ebf146101e6578063094e23f91461020f57806312424e3f1461023c578063150d7e471461025357806316c38b3c1461026957806317dfb94d1461028957806326476204146102be5780632681f7e4146102e15780632c336822146103015780632e1a7d4d1461032157806335aa2e44146103415780633a4b66f1146103615780633fb1ccf11461036957806340a141ff14610389578063452a9320146103a9578063485cc955146103c95780634d238c8e146103e95780635c975abb146104095780636021a9d51461042a57806370a0823114610440578063715018a61461047657806374a7262e1461048b5780637c557046146104a157806380d04de8146104c157806381028f67146104d6578063853828b6146104f65780638918c4a21461050b57806389a30271146105215780638a0dac4a146105415780638bdb2afa146105615780638da5cb5b146105815780638ef3f761146105965780639168ae72146105b6578063a5a90636146105e3578063bc8d9580146105f8578063bf79c67f1461060e578063c11a56301461062e578063c816841b14610644578063d22e9b0614610664578063d3a8c5f61461067a578063f2fde38b1461069a57600080fd5b366101e157005b600080fd5b3480156101f257600080fd5b506101fc606f5481565b6040519081526020015b60405180910390f35b34801561021b57600080fd5b5060765461022f906001600160a01b031681565b6040516102069190612b9a565b34801561024857600080fd5b506102516106ba565b005b34801561025f57600080fd5b506101fc60705481565b34801561027557600080fd5b50610251610284366004612bbc565b6107b4565b34801561029557600080fd5b506102a96102a4366004612bd9565b610805565b60408051928352602083019190915201610206565b6102d16102cc366004612c07565b610983565b6040519015158152602001610206565b3480156102ed57600080fd5b5060685461022f906001600160a01b031681565b34801561030d57600080fd5b5061025161031c366004612c07565b610b4f565b34801561032d57600080fd5b506101fc61033c366004612bd9565b610b79565b34801561034d57600080fd5b5061022f61035c366004612bd9565b610e1f565b6102d1610e49565b34801561037557600080fd5b5060695461022f906001600160a01b031681565b34801561039557600080fd5b506102516103a4366004612c07565b610e5a565b3480156103b557600080fd5b5060775461022f906001600160a01b031681565b3480156103d557600080fd5b506102516103e4366004612c24565b61101e565b3480156103f557600080fd5b50610251610404366004612c07565b6113d4565b34801561041557600080fd5b506076546102d190600160a01b900460ff1681565b34801561043657600080fd5b506101fc606e5481565b34801561044c57600080fd5b506101fc61045b366004612c07565b6001600160a01b031660009081526065602052604090205490565b34801561048257600080fd5b5061025161141c565b34801561049757600080fd5b506101fc60745481565b3480156104ad57600080fd5b506102a96104bc366004612bd9565b611430565b3480156104cd57600080fd5b506101fc61171b565b3480156104e257600080fd5b50606a5461022f906001600160a01b031681565b34801561050257600080fd5b506102516117f7565b34801561051757600080fd5b506101fc606d5481565b34801561052d57600080fd5b5060755461022f906001600160a01b031681565b34801561054d57600080fd5b5061025161055c366004612c07565b6119aa565b34801561056d57600080fd5b50606b5461022f906001600160a01b031681565b34801561058d57600080fd5b5061022f6119f6565b3480156105a257600080fd5b5060675461022f906001600160a01b031681565b3480156105c257600080fd5b506101fc6105d1366004612c07565b60656020526000908152604090205481565b3480156105ef57600080fd5b50610251611a05565b34801561060457600080fd5b506101fc60735481565b34801561061a57600080fd5b506102a9610629366004612c5d565b611e28565b34801561063a57600080fd5b506101fc60715481565b34801561065057600080fd5b50606c5461022f906001600160a01b031681565b34801561067057600080fd5b506101fc60725481565b34801561068657600080fd5b50610251610695366004612c89565b611e6e565b3480156106a657600080fd5b506102516106b5366004612c07565b611f24565b60765460785460405163095ea7b360e01b81526001600160a01b039283169263095ea7b3926106f29291169060001990600401612cb5565b6020604051808303816000875af1158015610711573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107359190612cce565b5060755460685460405163095ea7b360e01b81526001600160a01b039283169263095ea7b39261076e9291169060001990600401612cb5565b6020604051808303816000875af115801561078d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b19190612cce565b50565b6077546001600160a01b031633146107e75760405162461bcd60e51b81526004016107de90612ceb565b60405180910390fd5b60768054911515600160a01b0260ff60a01b19909216919091179055565b606b54606854604080516315ab88c960e31b815290516000938493849384936001600160a01b039384169363e6a4390593169163ad5c46489160048083019260209291908290030181865afa158015610862573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108869190612d11565b6069546040516001600160e01b031960e085901b1681526108b492916001600160a01b031690600401612d2e565b602060405180830381865afa1580156108d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f59190612d11565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610932573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109569190612d5f565b506001600160701b031691506001600160701b03169150610978828287611e28565b935093505050915091565b6077546000906001600160a01b031633146109b05760405162461bcd60e51b81526004016107de90612ceb565b600034116109f45760405162461bcd60e51b815260206004820152601160248201527007374616b65206d757374206265203e203607c1b60448201526064016107de565b606654610a3c5760405162461bcd60e51b81526020600482015260166024820152756e6f20617070726f7665642076616c696461746f727360501b60448201526064016107de565b6000805b6001600160a01b03841615801590610a59575060665481105b15610ab057836001600160a01b031660668281548110610a7b57610a7b612daf565b6000918252602090912001546001600160a01b031614610a9e5760019150610ab0565b80610aa881612ddb565b915050610a40565b506001600160a01b0383161580610ac45750805b610b105760405162461bcd60e51b815260206004820152601e60248201527f76616c696461746f72206e6f7420696e20617070726f766564206c697374000060448201526064016107de565b6000610b1c3485611f9a565b33600090815260656020526040812080549293503492909190610b40908490612df4565b9091555090925050505b919050565b610b57612203565b606a80546001600160a01b0319166001600160a01b0392909216919091179055565b60003031818315610b8a5783610b9b565b336000908152606560205260409020545b9050808015801590610bbc5750336000908152606560205260409020548211155b610c025760405162461bcd60e51b81526020600482015260176024820152761a5b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b60448201526064016107de565b606654600090610c13908790612262565b905060005b606654811015610d8257606754606680546000926001600160a01b0316916321429e609130919086908110610c4f57610c4f612daf565b6000918252602090912001546040516001600160e01b031960e085901b168152610c8692916001600160a01b031690600401612d2e565b602060405180830381865afa158015610ca3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc79190612e07565b905080600003610cd75750610d70565b828111610d2157610d0f60668381548110610cf457610cf4612daf565b6000918252602090912001546001600160a01b031682612275565b50610d1a848261234c565b9350610d60565b610d5260668381548110610d3757610d37612daf565b6000918252602090912001546001600160a01b031684612275565b50610d5d848461234c565b93505b83600003610d6e5750610d82565b505b80610d7a81612ddb565b915050610c18565b50610d8e30318561234c565b935083831115610d9c578392505b33600090815260656020526040902054610db6908461234c565b336000908152606560205260409020558215610e155760405133908490600081818185875af1925050503d8060008114610e0c576040519150601f19603f3d011682016040523d82523d6000602084013e610e11565b606091505b5050505b5090949350505050565b60668181548110610e2f57600080fd5b6000918252602090912001546001600160a01b0316905081565b6000610e556000610983565b905090565b610e62612203565b60675460405163010a14f360e51b81526000916001600160a01b0316906321429e6090610e959030908690600401612d2e565b602060405180830381865afa158015610eb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed69190612e07565b90508015610efa573031610eea8383612275565b5080303103610ef857505050565b505b60005b60665481101561101957826001600160a01b031660668281548110610f2457610f24612daf565b6000918252602090912001546001600160a01b03160361100757606654610f4d90600190612e20565b811015610fcf5760668054610f6490600190612e20565b81548110610f7457610f74612daf565b600091825260209091200154606680546001600160a01b039092169183908110610fa057610fa0612daf565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b6066805480610fe057610fe0612e33565b600082815260209020810160001990810180546001600160a01b0319169055019055505050565b8061101181612ddb565b915050610efd565b505050565b600054610100900460ff161580801561103e5750600054600160ff909116105b806110585750303b158015611058575060005460ff166001145b6110bb5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016107de565b6000805460ff1916600117905580156110de576000805461ff0019166101001790555b6110e6612358565b606780546001600160a01b0319908116733014ca10b91cb3d0ad85fef7a3cb95bcac9c0f7917909155606680546001810182556000919091526000805160206130fe83398151915201805490911673cb876a393f05a6677a8a029f1c6d7603b416c0a6179055618235606e819055607255610bb8606f55601e607055620186a06071556001600160a01b0383161561117e5782611194565b73e3f85aad0c8dd7337427b9df5d0fb741d65eeeb55b606880546001600160a01b039283166001600160a01b031991821681179092556069805493861693909116929092179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015611201573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112259190612d11565b606b80546001600160a01b0319166001600160a01b03928316908117909155606854604080516315ab88c960e31b81529051929363e6a439059392169163ad5c4648916004808201926020929091908290030181865afa15801561128d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b19190612d11565b846040518363ffffffff1660e01b81526004016112cf929190612d2e565b602060405180830381865afa1580156112ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113109190612d11565b606c80546001600160a01b03929092166001600160a01b031992831617905560788054821673dfe016328e7bcd6fa06614fe3af3877e931f7e0a17905560758054821673620fd5fa44be6af63715ef4e65ddfa0387ad13f51790556076805490911673249be57637d8b013ad64785404b24aebae9b098b1790558015611019576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b6113dc612203565b606680546001810182556000919091526000805160206130fe8339815191520180546001600160a01b0319166001600160a01b0392909216919091179055565b611424612203565b61142e60006123c8565b565b606b54606854604080516315ab88c960e31b81529051600093849384936001600160a01b039283169363e6a43905939092169163ad5c4648916004808201926020929091908290030181865afa15801561148e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b29190612d11565b6076546040516001600160e01b031960e085901b1681526114e092916001600160a01b031690600401612d2e565b602060405180830381865afa1580156114fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115219190612d11565b606b5460695460755460405163e6a4390560e01b81529394506000936001600160a01b039384169363e6a43905936115629390821692911690600401612d2e565b602060405180830381865afa15801561157f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a39190612d11565b9050600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156115e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061160a9190612d5f565b506001600160701b031691506001600160701b03169150600080856001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611662573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116869190612d5f565b506001600160701b03918216935016905060006116b5826116af85670de0b6b3a764000061241a565b90612262565b905060006116cf826116af8d670de0b6b3a764000061241a565b90506000806116ed6116e68864e8d4a51000612e49565b8985611e28565b9b5091508a905061170a670de0b6b3a76400006116af848761241a565b9b5050505050505050505050915091565b600080805b6066548110156117f157606754606680546000926001600160a01b0316916321429e60913091908690811061175757611757612daf565b6000918252602090912001546040516001600160e01b031960e085901b16815261178e92916001600160a01b031690600401612d2e565b602060405180830381865afa1580156117ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117cf9190612e07565b90506117db8184612df4565b92505080806117e990612ddb565b915050611720565b50919050565b6077546001600160a01b031633146118215760405162461bcd60e51b81526004016107de90612ceb565b60005b60665481101561190e57606754606680546000926001600160a01b0316916321429e60913091908690811061185b5761185b612daf565b6000918252602090912001546040516001600160e01b031960e085901b16815261189292916001600160a01b031690600401612d2e565b602060405180830381865afa1580156118af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d39190612e07565b9050806000036118e357506118fc565b6118f960668381548110610cf457610cf4612daf565b50505b8061190681612ddb565b915050611824565b506000607455303180156107b157604051600090339083908381818185875af1925050503d806000811461195e576040519150601f19603f3d011682016040523d82523d6000602084013e611963565b606091505b50509050806119a65760405162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b60448201526064016107de565b5050565b6077546001600160a01b031633146119d45760405162461bcd60e51b81526004016107de90612ceb565b607780546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031690565b607654600160a01b900460ff1615611a5b5760405162461bcd60e51b81526020600482015260196024820152781d589a4818dbdb1b1958dd1a5bdb881a5cc81c185d585cd959603a1b60448201526064016107de565b606a5460408051635c9302c960e01b815290516000926001600160a01b031691635c9302c99160048083019260209291908290030181865afa158015611aa5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac99190612e07565b9050606d548103611b285760405162461bcd60e51b8152602060048201526024808201527f63616e20636f6c6c656374206f6e6c79206f6e636520696e206120756269206360448201526379636c6560e01b60648201526084016107de565b6000607454611b35303190565b611b3f9190612e20565b9050600081607454611b519190612df4565b11611b975760405162461bcd60e51b81526020600482015260166024820152751b9bc819585c9b9a5b99dcc81d1bc818dbdb1b1958dd60521b60448201526064016107de565b606d829055607154606e54600091611bbe916116af90611bb79083612e20565b859061241a565b90506000611bcc8284612e20565b90506000611be660745484611be19190612df4565b612426565b905080600081518110611bfb57611bfb612daf565b602002602001015160745484611c119190612df4565b611c1b9190612e20565b607455611c29826000611f9a565b5060008160018351611c3b9190612e20565b81518110611c4b57611c4b612daf565b602002602001015190506000611c726071546116af6070548561241a90919063ffffffff16565b90508015611cf15760695460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb90611cac9033908590600401612cb5565b6020604051808303816000875af1158015611ccb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cef9190612cce565b505b611cfb8183612e20565b91506000611d1a6071546116af6072548661241a90919063ffffffff16565b90506000611d28848361234c565b606954606a5460405163a9059cbb60e01b81529293506001600160a01b039182169263a9059cbb92611d609216908590600401612cb5565b6020604051808303816000875af1158015611d7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da39190612cce565b508160736000828254611db69190612df4565b90915550506074546040805183815260208101859052908101869052606081018a905260808101919091523360a082015260c0810184905289907f49a079c90e07ed02ae8283e86eaeb643c637381d30aa7ba06d155e5b744a85439060e00160405180910390a2505050505050505050565b600080607154606f5486611e3c9190612e49565b611e469190612e68565b9150828210611e555782611e57565b815b9150611e64828686612745565b9050935093915050565b6077546001600160a01b03163314611e985760405162461bcd60e51b81526004016107de90612ceb565b8060736000828254611eaa9190612e20565b909155505060695460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb90611ee19085908590600401612cb5565b6020604051808303816000875af1158015611f00573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110199190612cce565b611f2c612203565b6001600160a01b038116611f915760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107de565b6107b1816123c8565b6066546000908103611fae575060006121fd565b6001600160a01b0382161561202a576067546040516317066a5760e21b81526001600160a01b0390911690635c19a95c908590611fef908690600401612b9a565b6000604051808303818588803b15801561200857600080fd5b505af115801561201c573d6000803e3d6000fd5b5050505050600190506121fd565b6066546000908461203961171b565b6120439190612df4565b61204d9190612e68565b90508360005b606654811080156120645750600082115b156121f557606754606680546000926001600160a01b0316916321429e60913091908690811061209657612096612daf565b6000918252602090912001546040516001600160e01b031960e085901b1681526120cd92916001600160a01b031690600401612d2e565b602060405180830381865afa1580156120ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210e9190612e07565b9050838110156121e2576000612124858361234c565b90508381106121335783612135565b805b606754606680549293506001600160a01b0390911691635c19a95c9184918790811061216357612163612daf565b6000918252602090912001546040516001600160e01b031960e085901b168152612199916001600160a01b031690600401612b9a565b6000604051808303818588803b1580156121b257600080fd5b505af11580156121c6573d6000803e3d6000fd5b50505050506121de818561234c90919063ffffffff16565b9350505b50806121ed81612ddb565b915050612053565b506001925050505b92915050565b3361220c6119f6565b6001600160a01b03161461142e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107de565b600061226e8284612e68565b9392505050565b60675460405163f3fef3a360e01b81526000916001600160a01b03169063f3fef3a3906122a89086908690600401612cb5565b600060405180830381600087803b1580156122c257600080fd5b505af19250505080156122d3575060015b612344576122df612e8a565b806308c379a00361230857506122f3612ee8565b806122fe575061230a565b60009150506121fd565b505b3d808015612334576040519150601f19603f3d011682016040523d82523d6000602084013e612339565b606091505b5060009150506121fd565b5060016121fd565b600061226e8284612e20565b600054610100900460ff166123c35760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016107de565b61142e335b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600061226e8284612e49565b6060600082116124485760405162461bcd60e51b81526004016107de90612f71565b60008061245484610805565b9150915060008061246486611430565b9150915060608285106125ee576040805160028082526060820183529091602083019080368337505060695482519293506001600160a01b03169183915060019081106124b3576124b3612daf565b6001600160a01b03928316602091820292909201810191909152606854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561250c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125309190612d11565b8160008151811061254357612543612daf565b6001600160a01b03928316602091820292909201015260685416637ff36ab586606461257088605f612e49565b61257a9190612e68565b8430426040518663ffffffff1660e01b815260040161259c9493929190612fe6565b60006040518083038185885af11580156125ba573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526125e3919081019061301b565b979650505050505050565b6000806125fa85612789565b60408051600280825260608201909252929450909250816020016020820280368337505060695482519295506001600160a01b031691859150600190811061264457612644612daf565b6001600160a01b0392831660209182029290920101526075548451911690849060009061267357612673612daf565b6001600160a01b039283166020918202929092010152606854600091166338ed17398460646126a389605f612e49565b6126ad9190612e68565b8730426040518663ffffffff1660e01b81526004016126d09594939291906130c1565b6000604051808303816000875af11580156126ef573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612717919081019061301b565b9050818160008151811061272d5761272d612daf565b60209081029190910101529998505050505050505050565b600080612754856103e5612e49565b905060006127628483612e49565b9050600082612773876103e8612e49565b61277d9190612df4565b90506125e38183612e68565b600080600083116127ac5760405162461bcd60e51b81526004016107de90612f71565b606b54606854604080516315ab88c960e31b815290516000936001600160a01b039081169363e6a439059391169163ad5c4648916004808201926020929091908290030181865afa158015612805573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128299190612d11565b6076546040516001600160e01b031960e085901b16815261285792916001600160a01b031690600401612d2e565b602060405180830381865afa158015612874573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128989190612d11565b9050600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156128db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128ff9190612d5f565b506001600160701b031691506001600160701b0316915060008061292484848a611e28565b60408051600280825260608201835293955091935060009290602083019080368337505060765482519293506001600160a01b031691839150600190811061296e5761296e612daf565b6001600160a01b03928316602091820292909201810191909152606854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156129c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129eb9190612d11565b816000815181106129fe576129fe612daf565b6001600160a01b03928316602091820292909201015260685460009116637ff36ab5856064612a2e87605f612e49565b612a389190612e68565b8530426040518663ffffffff1660e01b8152600401612a5a9493929190612fe6565b60006040518083038185885af1158015612a78573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052612aa1919081019061301b565b60785481519192506001600160a01b031690632b7f09239083906001908110612acc57612acc612daf565b602090810291909101015160765460755460405160e085901b6001600160e01b031916815260048101939093526001600160a01b039182166024840152166044820152606401600060405180830381600087803b158015612b2c57600080fd5b505af1158015612b40573d6000803e3d6000fd5b5050505080600081518110612b5757612b57612daf565b6020026020010151975064e8d4a5100081600181518110612b7a57612b7a612daf565b6020026020010151612b8c9190612e68565b985050505050505050915091565b6001600160a01b0391909116815260200190565b80151581146107b157600080fd5b600060208284031215612bce57600080fd5b813561226e81612bae565b600060208284031215612beb57600080fd5b5035919050565b6001600160a01b03811681146107b157600080fd5b600060208284031215612c1957600080fd5b813561226e81612bf2565b60008060408385031215612c3757600080fd5b8235612c4281612bf2565b91506020830135612c5281612bf2565b809150509250929050565b600080600060608486031215612c7257600080fd5b505081359360208301359350604090920135919050565b60008060408385031215612c9c57600080fd5b8235612ca781612bf2565b946020939093013593505050565b6001600160a01b03929092168252602082015260400190565b600060208284031215612ce057600080fd5b815161226e81612bae565b6020808252600c908201526b3737ba1033bab0b93234b0b760a11b604082015260600190565b600060208284031215612d2357600080fd5b815161226e81612bf2565b6001600160a01b0392831681529116602082015260400190565b80516001600160701b0381168114610b4a57600080fd5b600080600060608486031215612d7457600080fd5b612d7d84612d48565b9250612d8b60208501612d48565b9150604084015163ffffffff81168114612da457600080fd5b809150509250925092565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612ded57612ded612dc5565b5060010190565b808201808211156121fd576121fd612dc5565b600060208284031215612e1957600080fd5b5051919050565b818103818111156121fd576121fd612dc5565b634e487b7160e01b600052603160045260246000fd5b6000816000190483118215151615612e6357612e63612dc5565b500290565b600082612e8557634e487b7160e01b600052601260045260246000fd5b500490565b600060033d1115612ea35760046000803e5060005160e01c5b90565b634e487b7160e01b600052604160045260246000fd5b601f8201601f191681016001600160401b0381118282101715612ee157612ee1612ea6565b6040525050565b600060443d1015612ef65790565b6040516003193d81016004833e81513d6001600160401b038083116024840183101715612f2557505050505090565b8285019150815181811115612f3d5750505050505090565b843d8701016020828501011115612f575750505050505090565b612f6660208286010187612ebc565b509095945050505050565b60208082526017908201527606275792076616c75652073686f756c64206265203e203604c1b604082015260600190565b600081518084526020808501945080840160005b83811015612fdb5781516001600160a01b031687529582019590820190600101612fb6565b509495945050505050565b848152608060208201526000612fff6080830186612fa2565b6001600160a01b03949094166040830152506060015292915050565b6000602080838503121561302e57600080fd5b82516001600160401b038082111561304557600080fd5b818501915085601f83011261305957600080fd5b81518181111561306b5761306b612ea6565b8060051b915060405161308085840182612ebc565b8181529183018401918481018884111561309957600080fd5b938501935b838510156130b5578451815293850193850161309e565b50979650505050505050565b85815284602082015260a0604082015260006130e060a0830186612fa2565b6001600160a01b039490941660608301525060800152939250505056fe46501879b8ca8525e8c2fd519e2fbfcfa2ebea26501294aa02cbfcfb12e94354a264697066735822122057842d7114bf054d91230666d3530d6d91edfd6949b9f4517422c07c71bf3f4664736f6c63430008100033";
760
+ "0x608060405234801561001057600080fd5b5061341d806100206000396000f3fe6080604052600436106102115760003560e01c8063015af8ee1461021d57806304d26ebf1461023f578063094e23f91461026857806312424e3f1461029557806314d140b0146102aa578063150d7e47146102ca57806316c38b3c146102e057806317dfb94d1461030057806326476204146103355780632681f7e4146103585780632c336822146103785780632e1a7d4d1461039857806335aa2e44146103b85780633a4b66f1146103d85780633fb1ccf1146103e057806340a141ff14610400578063452a932014610420578063485cc955146104405780634d238c8e146104605780635c975abb146104805780636021a9d5146104a157806370a08231146104b7578063715018a6146104ed57806374a7262e146105025780637c5570461461051857806380d04de81461053857806381028f671461054d57806381213f1a1461056d578063853828b6146105835780638918c4a21461059857806389a30271146105ae5780638a0dac4a146105ce5780638bdb2afa146105ee5780638da5cb5b1461060e5780638ef3f761146106235780639168ae7214610643578063a5a9063614610670578063bc8d958014610685578063bf79c67f1461069b578063c11a5630146106bb578063c816841b146106d1578063d22e9b06146106f1578063d3a8c5f614610707578063d55ec69714610727578063dd8f19101461073c578063f2fde38b1461075c57600080fd5b3661021857005b600080fd5b34801561022957600080fd5b5061023d610238366004612e42565b61077c565b005b34801561024b57600080fd5b50610255606f5481565b6040519081526020015b60405180910390f35b34801561027457600080fd5b50607654610288906001600160a01b031681565b60405161025f9190612e64565b3480156102a157600080fd5b5061023d6107b7565b3480156102b657600080fd5b50607a54610288906001600160a01b031681565b3480156102d657600080fd5b5061025560705481565b3480156102ec57600080fd5b5061023d6102fb366004612e86565b6108b1565b34801561030c57600080fd5b5061032061031b366004612ea3565b6108f9565b6040805192835260208301919091520161025f565b610348610343366004612ed1565b610a77565b604051901515815260200161025f565b34801561036457600080fd5b50606854610288906001600160a01b031681565b34801561038457600080fd5b5061023d610393366004612ed1565b610c43565b3480156103a457600080fd5b506102556103b3366004612ea3565b610c6d565b3480156103c457600080fd5b506102886103d3366004612ea3565b610f13565b610348610f3d565b3480156103ec57600080fd5b50606954610288906001600160a01b031681565b34801561040c57600080fd5b5061023d61041b366004612ed1565b610f4e565b34801561042c57600080fd5b50607754610288906001600160a01b031681565b34801561044c57600080fd5b5061023d61045b366004612eee565b611112565b34801561046c57600080fd5b5061023d61047b366004612ed1565b6114c8565b34801561048c57600080fd5b5060765461034890600160a01b900460ff1681565b3480156104ad57600080fd5b50610255606e5481565b3480156104c357600080fd5b506102556104d2366004612ed1565b6001600160a01b031660009081526065602052604090205490565b3480156104f957600080fd5b5061023d611510565b34801561050e57600080fd5b5061025560745481565b34801561052457600080fd5b50610320610533366004612ea3565b611524565b34801561054457600080fd5b5061025561180f565b34801561055957600080fd5b50606a54610288906001600160a01b031681565b34801561057957600080fd5b50610255607b5481565b34801561058f57600080fd5b5061023d6118eb565b3480156105a457600080fd5b50610255606d5481565b3480156105ba57600080fd5b50607554610288906001600160a01b031681565b3480156105da57600080fd5b5061023d6105e9366004612ed1565b611a9e565b3480156105fa57600080fd5b50606b54610288906001600160a01b031681565b34801561061a57600080fd5b50610288611aea565b34801561062f57600080fd5b50606754610288906001600160a01b031681565b34801561064f57600080fd5b5061025561065e366004612ed1565b60656020526000908152604090205481565b34801561067c57600080fd5b5061023d611af9565b34801561069157600080fd5b5061025560735481565b3480156106a757600080fd5b506103206106b6366004612f27565b611f99565b3480156106c757600080fd5b5061025560715481565b3480156106dd57600080fd5b50606c54610288906001600160a01b031681565b3480156106fd57600080fd5b5061025560725481565b34801561071357600080fd5b5061023d610722366004612f53565b611fdf565b34801561073357600080fd5b5061023d612095565b34801561074857600080fd5b50607954610288906001600160a01b031681565b34801561076857600080fd5b5061023d610777366004612ed1565b612109565b6077546001600160a01b031633146107af5760405162461bcd60e51b81526004016107a690612f7f565b60405180910390fd5b607255606e55565b60765460785460405163095ea7b360e01b81526001600160a01b039283169263095ea7b3926107ef9291169060001990600401612fa5565b6020604051808303816000875af115801561080e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108329190612fbe565b5060755460685460405163095ea7b360e01b81526001600160a01b039283169263095ea7b39261086b9291169060001990600401612fa5565b6020604051808303816000875af115801561088a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ae9190612fbe565b50565b6077546001600160a01b031633146108db5760405162461bcd60e51b81526004016107a690612f7f565b60768054911515600160a01b0260ff60a01b19909216919091179055565b606b54606854604080516315ab88c960e31b815290516000938493849384936001600160a01b039384169363e6a4390593169163ad5c46489160048083019260209291908290030181865afa158015610956573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097a9190612fdb565b6069546040516001600160e01b031960e085901b1681526109a892916001600160a01b031690600401612ff8565b602060405180830381865afa1580156109c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e99190612fdb565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610a26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4a9190613029565b506001600160701b031691506001600160701b03169150610a6c828287611f99565b935093505050915091565b6077546000906001600160a01b03163314610aa45760405162461bcd60e51b81526004016107a690612f7f565b60003411610ae85760405162461bcd60e51b815260206004820152601160248201527007374616b65206d757374206265203e203607c1b60448201526064016107a6565b606654610b305760405162461bcd60e51b81526020600482015260166024820152756e6f20617070726f7665642076616c696461746f727360501b60448201526064016107a6565b6000805b6001600160a01b03841615801590610b4d575060665481105b15610ba457836001600160a01b031660668281548110610b6f57610b6f613079565b6000918252602090912001546001600160a01b031614610b925760019150610ba4565b80610b9c816130a5565b915050610b34565b506001600160a01b0383161580610bb85750805b610c045760405162461bcd60e51b815260206004820152601e60248201527f76616c696461746f72206e6f7420696e20617070726f766564206c697374000060448201526064016107a6565b6000610c10348561217f565b33600090815260656020526040812080549293503492909190610c349084906130be565b9091555090925050505b919050565b610c4b6123e8565b606a80546001600160a01b0319166001600160a01b0392909216919091179055565b60003031818315610c7e5783610c8f565b336000908152606560205260409020545b9050808015801590610cb05750336000908152606560205260409020548211155b610cf65760405162461bcd60e51b81526020600482015260176024820152761a5b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b60448201526064016107a6565b606654600090610d07908790612447565b905060005b606654811015610e7657606754606680546000926001600160a01b0316916321429e609130919086908110610d4357610d43613079565b6000918252602090912001546040516001600160e01b031960e085901b168152610d7a92916001600160a01b031690600401612ff8565b602060405180830381865afa158015610d97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dbb91906130d1565b905080600003610dcb5750610e64565b828111610e1557610e0360668381548110610de857610de8613079565b6000918252602090912001546001600160a01b03168261245a565b50610e0e8482612531565b9350610e54565b610e4660668381548110610e2b57610e2b613079565b6000918252602090912001546001600160a01b03168461245a565b50610e518484612531565b93505b83600003610e625750610e76565b505b80610e6e816130a5565b915050610d0c565b50610e82303185612531565b935083831115610e90578392505b33600090815260656020526040902054610eaa9084612531565b336000908152606560205260409020558215610f095760405133908490600081818185875af1925050503d8060008114610f00576040519150601f19603f3d011682016040523d82523d6000602084013e610f05565b606091505b5050505b5090949350505050565b60668181548110610f2357600080fd5b6000918252602090912001546001600160a01b0316905081565b6000610f496000610a77565b905090565b610f566123e8565b60675460405163010a14f360e51b81526000916001600160a01b0316906321429e6090610f899030908690600401612ff8565b602060405180830381865afa158015610fa6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fca91906130d1565b90508015610fee573031610fde838361245a565b5080303103610fec57505050565b505b60005b60665481101561110d57826001600160a01b03166066828154811061101857611018613079565b6000918252602090912001546001600160a01b0316036110fb57606654611041906001906130ea565b8110156110c35760668054611058906001906130ea565b8154811061106857611068613079565b600091825260209091200154606680546001600160a01b03909216918390811061109457611094613079565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b60668054806110d4576110d46130fd565b600082815260209020810160001990810180546001600160a01b0319169055019055505050565b80611105816130a5565b915050610ff1565b505050565b600054610100900460ff16158080156111325750600054600160ff909116105b8061114c5750303b15801561114c575060005460ff166001145b6111af5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016107a6565b6000805460ff1916600117905580156111d2576000805461ff0019166101001790555b6111da61253d565b606780546001600160a01b0319908116733014ca10b91cb3d0ad85fef7a3cb95bcac9c0f7917909155606680546001810182556000919091526000805160206133c883398151915201805490911673cb876a393f05a6677a8a029f1c6d7603b416c0a6179055618235606e819055607255610bb8606f55601e607055620186a06071556001600160a01b038316156112725782611288565b73e3f85aad0c8dd7337427b9df5d0fb741d65eeeb55b606880546001600160a01b039283166001600160a01b031991821681179092556069805493861693909116929092179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156112f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113199190612fdb565b606b80546001600160a01b0319166001600160a01b03928316908117909155606854604080516315ab88c960e31b81529051929363e6a439059392169163ad5c4648916004808201926020929091908290030181865afa158015611381573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a59190612fdb565b846040518363ffffffff1660e01b81526004016113c3929190612ff8565b602060405180830381865afa1580156113e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114049190612fdb565b606c80546001600160a01b03929092166001600160a01b031992831617905560788054821673dfe016328e7bcd6fa06614fe3af3877e931f7e0a17905560758054821673620fd5fa44be6af63715ef4e65ddfa0387ad13f51790556076805490911673249be57637d8b013ad64785404b24aebae9b098b179055801561110d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b6114d06123e8565b606680546001810182556000919091526000805160206133c88339815191520180546001600160a01b0319166001600160a01b0392909216919091179055565b6115186123e8565b61152260006125ad565b565b606b54606854604080516315ab88c960e31b81529051600093849384936001600160a01b039283169363e6a43905939092169163ad5c4648916004808201926020929091908290030181865afa158015611582573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a69190612fdb565b6076546040516001600160e01b031960e085901b1681526115d492916001600160a01b031690600401612ff8565b602060405180830381865afa1580156115f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116159190612fdb565b606b5460695460755460405163e6a4390560e01b81529394506000936001600160a01b039384169363e6a43905936116569390821692911690600401612ff8565b602060405180830381865afa158015611673573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116979190612fdb565b9050600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156116da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116fe9190613029565b506001600160701b031691506001600160701b03169150600080856001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611756573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177a9190613029565b506001600160701b03918216935016905060006117a9826117a385670de0b6b3a76400006125ff565b90612447565b905060006117c3826117a38d670de0b6b3a76400006125ff565b90506000806117e16117da8864e8d4a51000613113565b8985611f99565b9b5091508a90506117fe670de0b6b3a76400006117a384876125ff565b9b5050505050505050505050915091565b600080805b6066548110156118e557606754606680546000926001600160a01b0316916321429e60913091908690811061184b5761184b613079565b6000918252602090912001546040516001600160e01b031960e085901b16815261188292916001600160a01b031690600401612ff8565b602060405180830381865afa15801561189f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c391906130d1565b90506118cf81846130be565b92505080806118dd906130a5565b915050611814565b50919050565b6077546001600160a01b031633146119155760405162461bcd60e51b81526004016107a690612f7f565b60005b606654811015611a0257606754606680546000926001600160a01b0316916321429e60913091908690811061194f5761194f613079565b6000918252602090912001546040516001600160e01b031960e085901b16815261198692916001600160a01b031690600401612ff8565b602060405180830381865afa1580156119a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c791906130d1565b9050806000036119d757506119f0565b6119ed60668381548110610de857610de8613079565b50505b806119fa816130a5565b915050611918565b506000607455303180156108ae57604051600090339083908381818185875af1925050503d8060008114611a52576040519150601f19603f3d011682016040523d82523d6000602084013e611a57565b606091505b5050905080611a9a5760405162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b60448201526064016107a6565b5050565b6077546001600160a01b03163314611ac85760405162461bcd60e51b81526004016107a690612f7f565b607780546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031690565b607654600160a01b900460ff1615611b4f5760405162461bcd60e51b81526020600482015260196024820152781d589a4818dbdb1b1958dd1a5bdb881a5cc81c185d585cd959603a1b60448201526064016107a6565b606a5460408051635c9302c960e01b815290516000926001600160a01b031691635c9302c99160048083019260209291908290030181865afa158015611b99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bbd91906130d1565b9050606d548103611c1c5760405162461bcd60e51b8152602060048201526024808201527f63616e20636f6c6c656374206f6e6c79206f6e636520696e206120756269206360448201526379636c6560e01b60648201526084016107a6565b6000607454611c29303190565b611c3391906130ea565b9050600081607454611c4591906130be565b11611c8b5760405162461bcd60e51b81526020600482015260166024820152751b9bc819585c9b9a5b99dcc81d1bc818dbdb1b1958dd60521b60448201526064016107a6565b606d829055607154606e54600091611cb2916117a390611cab90836130ea565b85906125ff565b90506000611cc082846130ea565b90506000611ccd8261260b565b9050611cd981836130ea565b91506000611cf360745485611cee91906130be565b6126ce565b905080600081518110611d0857611d08613079565b602002602001015160745485611d1e91906130be565b611d2891906130ea565b607455611d3683600061217f565b5060008160018351611d4891906130ea565b81518110611d5857611d58613079565b602002602001015190506000611d7f6071546117a3607054856125ff90919063ffffffff16565b90508015611dfe5760695460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb90611db99033908590600401612fa5565b6020604051808303816000875af1158015611dd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dfc9190612fbe565b505b611e0881836130ea565b91506000611e276071546117a3607254866125ff90919063ffffffff16565b90506000611e358483612531565b606954606a5460405163a9059cbb60e01b81529293506001600160a01b039182169263a9059cbb92611e6d9216908590600401612fa5565b6020604051808303816000875af1158015611e8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eb09190612fbe565b50606954607a5460405163a9059cbb60e01b81526001600160a01b039283169263a9059cbb92611ee7929116908690600401612fa5565b6020604051808303816000875af1158015611f06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f2a9190612fbe565b506074546040805183815260208101859052908101869052606081018b905260808101919091523360a082015260c081018490528a907f49a079c90e07ed02ae8283e86eaeb643c637381d30aa7ba06d155e5b744a85439060e00160405180910390a250505050505050505050565b600080607154606f5486611fad9190613113565b611fb79190613132565b9150828210611fc65782611fc8565b815b9150611fd58286866129ed565b9050935093915050565b6077546001600160a01b031633146120095760405162461bcd60e51b81526004016107a690612f7f565b806073600082825461201b91906130ea565b909155505060695460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb906120529085908590600401612fa5565b6020604051808303816000875af1158015612071573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110d9190612fbe565b6077546001600160a01b031633146120bf5760405162461bcd60e51b81526004016107a690612f7f565b607980546001600160a01b03199081167301ab5966c1d742ae0cff7f14cc0f4d85156e83d917909155607a805490911673ce69892cbda078bbfaa3e5ae7a4b4d2bf3e5c412179055565b6121116123e8565b6001600160a01b0381166121765760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107a6565b6108ae816125ad565b6066546000908103612193575060006123e2565b6001600160a01b0382161561220f576067546040516317066a5760e21b81526001600160a01b0390911690635c19a95c9085906121d4908690600401612e64565b6000604051808303818588803b1580156121ed57600080fd5b505af1158015612201573d6000803e3d6000fd5b5050505050600190506123e2565b6066546000908461221e61180f565b61222891906130be565b6122329190613132565b90508360005b606654811080156122495750600082115b156123da57606754606680546000926001600160a01b0316916321429e60913091908690811061227b5761227b613079565b6000918252602090912001546040516001600160e01b031960e085901b1681526122b292916001600160a01b031690600401612ff8565b602060405180830381865afa1580156122cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122f391906130d1565b9050838110156123c75760006123098583612531565b9050838110612318578361231a565b805b606754606680549293506001600160a01b0390911691635c19a95c9184918790811061234857612348613079565b6000918252602090912001546040516001600160e01b031960e085901b16815261237e916001600160a01b031690600401612e64565b6000604051808303818588803b15801561239757600080fd5b505af11580156123ab573d6000803e3d6000fd5b50505050506123c3818561253190919063ffffffff16565b9350505b50806123d2816130a5565b915050612238565b506001925050505b92915050565b336123f1611aea565b6001600160a01b0316146115225760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107a6565b60006124538284613132565b9392505050565b60675460405163f3fef3a360e01b81526000916001600160a01b03169063f3fef3a39061248d9086908690600401612fa5565b600060405180830381600087803b1580156124a757600080fd5b505af19250505080156124b8575060015b612529576124c4613154565b806308c379a0036124ed57506124d86131b2565b806124e357506124ef565b60009150506123e2565b505b3d808015612519576040519150601f19603f3d011682016040523d82523d6000602084013e61251e565b606091505b5060009150506123e2565b5060016123e2565b600061245382846130ea565b600054610100900460ff166125a85760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016107a6565b611522335b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006124538284613113565b6079546000906001600160a01b0316158015906126375750607954607b546001600160a01b0390911631105b156126b957607954607b54612656916001600160a01b031631906130ea565b9050818111156126635750805b6079546040516001600160a01b03909116908290600081818185875af1925050503d80600081146126b0576040519150601f19603f3d011682016040523d82523d6000602084013e6126b5565b606091505b5050505b6079546001600160a01b031631607b55919050565b6060600082116126f05760405162461bcd60e51b81526004016107a69061323b565b6000806126fc846108f9565b9150915060008061270c86611524565b915091506060828510612896576040805160028082526060820183529091602083019080368337505060695482519293506001600160a01b031691839150600190811061275b5761275b613079565b6001600160a01b03928316602091820292909201810191909152606854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156127b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127d89190612fdb565b816000815181106127eb576127eb613079565b6001600160a01b03928316602091820292909201015260685416637ff36ab586606461281888605f613113565b6128229190613132565b8430426040518663ffffffff1660e01b815260040161284494939291906132b0565b60006040518083038185885af1158015612862573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261288b91908101906132e5565b979650505050505050565b6000806128a285612a31565b60408051600280825260608201909252929450909250816020016020820280368337505060695482519295506001600160a01b03169185915060019081106128ec576128ec613079565b6001600160a01b0392831660209182029290920101526075548451911690849060009061291b5761291b613079565b6001600160a01b039283166020918202929092010152606854600091166338ed173984606461294b89605f613113565b6129559190613132565b8730426040518663ffffffff1660e01b815260040161297895949392919061338b565b6000604051808303816000875af1158015612997573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526129bf91908101906132e5565b905081816000815181106129d5576129d5613079565b60209081029190910101529998505050505050505050565b6000806129fc856103e5613113565b90506000612a0a8483613113565b9050600082612a1b876103e8613113565b612a2591906130be565b905061288b8183613132565b60008060008311612a545760405162461bcd60e51b81526004016107a69061323b565b606b54606854604080516315ab88c960e31b815290516000936001600160a01b039081169363e6a439059391169163ad5c4648916004808201926020929091908290030181865afa158015612aad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ad19190612fdb565b6076546040516001600160e01b031960e085901b168152612aff92916001600160a01b031690600401612ff8565b602060405180830381865afa158015612b1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b409190612fdb565b9050600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015612b83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ba79190613029565b506001600160701b031691506001600160701b03169150600080612bcc84848a611f99565b60408051600280825260608201835293955091935060009290602083019080368337505060765482519293506001600160a01b0316918391506001908110612c1657612c16613079565b6001600160a01b03928316602091820292909201810191909152606854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612c6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c939190612fdb565b81600081518110612ca657612ca6613079565b6001600160a01b03928316602091820292909201015260685460009116637ff36ab5856064612cd687605f613113565b612ce09190613132565b8530426040518663ffffffff1660e01b8152600401612d0294939291906132b0565b60006040518083038185885af1158015612d20573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052612d4991908101906132e5565b60785481519192506001600160a01b031690632b7f09239083906001908110612d7457612d74613079565b602090810291909101015160765460755460405160e085901b6001600160e01b031916815260048101939093526001600160a01b039182166024840152166044820152606401600060405180830381600087803b158015612dd457600080fd5b505af1158015612de8573d6000803e3d6000fd5b5050505080600081518110612dff57612dff613079565b6020026020010151975064e8d4a5100081600181518110612e2257612e22613079565b6020026020010151612e349190613132565b985050505050505050915091565b60008060408385031215612e5557600080fd5b50508035926020909101359150565b6001600160a01b0391909116815260200190565b80151581146108ae57600080fd5b600060208284031215612e9857600080fd5b813561245381612e78565b600060208284031215612eb557600080fd5b5035919050565b6001600160a01b03811681146108ae57600080fd5b600060208284031215612ee357600080fd5b813561245381612ebc565b60008060408385031215612f0157600080fd5b8235612f0c81612ebc565b91506020830135612f1c81612ebc565b809150509250929050565b600080600060608486031215612f3c57600080fd5b505081359360208301359350604090920135919050565b60008060408385031215612f6657600080fd5b8235612f7181612ebc565b946020939093013593505050565b6020808252600c908201526b3737ba1033bab0b93234b0b760a11b604082015260600190565b6001600160a01b03929092168252602082015260400190565b600060208284031215612fd057600080fd5b815161245381612e78565b600060208284031215612fed57600080fd5b815161245381612ebc565b6001600160a01b0392831681529116602082015260400190565b80516001600160701b0381168114610c3e57600080fd5b60008060006060848603121561303e57600080fd5b61304784613012565b925061305560208501613012565b9150604084015163ffffffff8116811461306e57600080fd5b809150509250925092565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016130b7576130b761308f565b5060010190565b808201808211156123e2576123e261308f565b6000602082840312156130e357600080fd5b5051919050565b818103818111156123e2576123e261308f565b634e487b7160e01b600052603160045260246000fd5b600081600019048311821515161561312d5761312d61308f565b500290565b60008261314f57634e487b7160e01b600052601260045260246000fd5b500490565b600060033d111561316d5760046000803e5060005160e01c5b90565b634e487b7160e01b600052604160045260246000fd5b601f8201601f191681016001600160401b03811182821017156131ab576131ab613170565b6040525050565b600060443d10156131c05790565b6040516003193d81016004833e81513d6001600160401b0380831160248401831017156131ef57505050505090565b82850191508151818111156132075750505050505090565b843d87010160208285010111156132215750505050505090565b61323060208286010187613186565b509095945050505050565b60208082526017908201527606275792076616c75652073686f756c64206265203e203604c1b604082015260600190565b600081518084526020808501945080840160005b838110156132a55781516001600160a01b031687529582019590820190600101613280565b509495945050505050565b8481526080602082015260006132c9608083018661326c565b6001600160a01b03949094166040830152506060015292915050565b600060208083850312156132f857600080fd5b82516001600160401b038082111561330f57600080fd5b818501915085601f83011261332357600080fd5b81518181111561333557613335613170565b8060051b915060405161334a85840182613186565b8181529183018401918481018884111561336357600080fd5b938501935b8385101561337f5784518152938501938501613368565b50979650505050505050565b85815284602082015260a0604082015260006133aa60a083018661326c565b6001600160a01b039490941660608301525060800152939250505056fe46501879b8ca8525e8c2fd519e2fbfcfa2ebea26501294aa02cbfcfb12e94354a2646970667358221220c9e43b53647c889a52c1a02a9b3efa36c568d106a40e2a66f52431b6ab43c81f64736f6c63430008100033";
697
761
 
698
762
  type FuseStakingV3ConstructorParams =
699
763
  | [signer?: Signer]
@@ -7,6 +7,93 @@ import { Provider } from "@ethersproject/providers";
7
7
  import type { IStaticOracle, IStaticOracleInterface } from "../IStaticOracle";
8
8
 
9
9
  const _abi = [
10
+ {
11
+ inputs: [],
12
+ name: "CARDINALITY_PER_MINUTE",
13
+ outputs: [
14
+ {
15
+ internalType: "uint8",
16
+ name: "",
17
+ type: "uint8",
18
+ },
19
+ ],
20
+ stateMutability: "view",
21
+ type: "function",
22
+ },
23
+ {
24
+ inputs: [],
25
+ name: "UNISWAP_V3_FACTORY",
26
+ outputs: [
27
+ {
28
+ internalType: "contract IUniswapV3Factory",
29
+ name: "",
30
+ type: "address",
31
+ },
32
+ ],
33
+ stateMutability: "view",
34
+ type: "function",
35
+ },
36
+ {
37
+ inputs: [
38
+ {
39
+ internalType: "uint24",
40
+ name: "feeTier",
41
+ type: "uint24",
42
+ },
43
+ ],
44
+ name: "addNewFeeTier",
45
+ outputs: [],
46
+ stateMutability: "nonpayable",
47
+ type: "function",
48
+ },
49
+ {
50
+ inputs: [
51
+ {
52
+ internalType: "address",
53
+ name: "tokenA",
54
+ type: "address",
55
+ },
56
+ {
57
+ internalType: "address",
58
+ name: "tokenB",
59
+ type: "address",
60
+ },
61
+ ],
62
+ name: "getAllPoolsForPair",
63
+ outputs: [
64
+ {
65
+ internalType: "address[]",
66
+ name: "",
67
+ type: "address[]",
68
+ },
69
+ ],
70
+ stateMutability: "view",
71
+ type: "function",
72
+ },
73
+ {
74
+ inputs: [
75
+ {
76
+ internalType: "address",
77
+ name: "tokenA",
78
+ type: "address",
79
+ },
80
+ {
81
+ internalType: "address",
82
+ name: "tokenB",
83
+ type: "address",
84
+ },
85
+ ],
86
+ name: "isPairSupported",
87
+ outputs: [
88
+ {
89
+ internalType: "bool",
90
+ name: "",
91
+ type: "bool",
92
+ },
93
+ ],
94
+ stateMutability: "view",
95
+ type: "function",
96
+ },
10
97
  {
11
98
  inputs: [
12
99
  {
@@ -36,6 +123,139 @@ const _abi = [
36
123
  stateMutability: "nonpayable",
37
124
  type: "function",
38
125
  },
126
+ {
127
+ inputs: [
128
+ {
129
+ internalType: "address",
130
+ name: "tokenA",
131
+ type: "address",
132
+ },
133
+ {
134
+ internalType: "address",
135
+ name: "tokenB",
136
+ type: "address",
137
+ },
138
+ {
139
+ internalType: "uint32",
140
+ name: "period",
141
+ type: "uint32",
142
+ },
143
+ ],
144
+ name: "prepareAllAvailablePoolsWithTimePeriod",
145
+ outputs: [
146
+ {
147
+ internalType: "address[]",
148
+ name: "preparedPools",
149
+ type: "address[]",
150
+ },
151
+ ],
152
+ stateMutability: "nonpayable",
153
+ type: "function",
154
+ },
155
+ {
156
+ inputs: [
157
+ {
158
+ internalType: "address",
159
+ name: "tokenA",
160
+ type: "address",
161
+ },
162
+ {
163
+ internalType: "address",
164
+ name: "tokenB",
165
+ type: "address",
166
+ },
167
+ {
168
+ internalType: "uint24[]",
169
+ name: "feeTiers",
170
+ type: "uint24[]",
171
+ },
172
+ {
173
+ internalType: "uint16",
174
+ name: "cardinality",
175
+ type: "uint16",
176
+ },
177
+ ],
178
+ name: "prepareSpecificFeeTiersWithCardinality",
179
+ outputs: [
180
+ {
181
+ internalType: "address[]",
182
+ name: "preparedPools",
183
+ type: "address[]",
184
+ },
185
+ ],
186
+ stateMutability: "nonpayable",
187
+ type: "function",
188
+ },
189
+ {
190
+ inputs: [
191
+ {
192
+ internalType: "address",
193
+ name: "tokenA",
194
+ type: "address",
195
+ },
196
+ {
197
+ internalType: "address",
198
+ name: "tokenB",
199
+ type: "address",
200
+ },
201
+ {
202
+ internalType: "uint24[]",
203
+ name: "feeTiers",
204
+ type: "uint24[]",
205
+ },
206
+ {
207
+ internalType: "uint32",
208
+ name: "period",
209
+ type: "uint32",
210
+ },
211
+ ],
212
+ name: "prepareSpecificFeeTiersWithTimePeriod",
213
+ outputs: [
214
+ {
215
+ internalType: "address[]",
216
+ name: "preparedPools",
217
+ type: "address[]",
218
+ },
219
+ ],
220
+ stateMutability: "nonpayable",
221
+ type: "function",
222
+ },
223
+ {
224
+ inputs: [
225
+ {
226
+ internalType: "address[]",
227
+ name: "pools",
228
+ type: "address[]",
229
+ },
230
+ {
231
+ internalType: "uint16",
232
+ name: "cardinality",
233
+ type: "uint16",
234
+ },
235
+ ],
236
+ name: "prepareSpecificPoolsWithCardinality",
237
+ outputs: [],
238
+ stateMutability: "nonpayable",
239
+ type: "function",
240
+ },
241
+ {
242
+ inputs: [
243
+ {
244
+ internalType: "address[]",
245
+ name: "pools",
246
+ type: "address[]",
247
+ },
248
+ {
249
+ internalType: "uint32",
250
+ name: "period",
251
+ type: "uint32",
252
+ },
253
+ ],
254
+ name: "prepareSpecificPoolsWithTimePeriod",
255
+ outputs: [],
256
+ stateMutability: "nonpayable",
257
+ type: "function",
258
+ },
39
259
  {
40
260
  inputs: [
41
261
  {
@@ -75,6 +295,102 @@ const _abi = [
75
295
  stateMutability: "view",
76
296
  type: "function",
77
297
  },
298
+ {
299
+ inputs: [
300
+ {
301
+ internalType: "uint128",
302
+ name: "baseAmount",
303
+ type: "uint128",
304
+ },
305
+ {
306
+ internalType: "address",
307
+ name: "baseToken",
308
+ type: "address",
309
+ },
310
+ {
311
+ internalType: "address",
312
+ name: "quoteToken",
313
+ type: "address",
314
+ },
315
+ {
316
+ internalType: "uint24[]",
317
+ name: "feeTiers",
318
+ type: "uint24[]",
319
+ },
320
+ {
321
+ internalType: "uint32",
322
+ name: "period",
323
+ type: "uint32",
324
+ },
325
+ ],
326
+ name: "quoteSpecificFeeTiersWithTimePeriod",
327
+ outputs: [
328
+ {
329
+ internalType: "uint256",
330
+ name: "quoteAmount",
331
+ type: "uint256",
332
+ },
333
+ {
334
+ internalType: "address[]",
335
+ name: "queriedPools",
336
+ type: "address[]",
337
+ },
338
+ ],
339
+ stateMutability: "view",
340
+ type: "function",
341
+ },
342
+ {
343
+ inputs: [
344
+ {
345
+ internalType: "uint128",
346
+ name: "baseAmount",
347
+ type: "uint128",
348
+ },
349
+ {
350
+ internalType: "address",
351
+ name: "baseToken",
352
+ type: "address",
353
+ },
354
+ {
355
+ internalType: "address",
356
+ name: "quoteToken",
357
+ type: "address",
358
+ },
359
+ {
360
+ internalType: "address[]",
361
+ name: "pools",
362
+ type: "address[]",
363
+ },
364
+ {
365
+ internalType: "uint32",
366
+ name: "period",
367
+ type: "uint32",
368
+ },
369
+ ],
370
+ name: "quoteSpecificPoolsWithTimePeriod",
371
+ outputs: [
372
+ {
373
+ internalType: "uint256",
374
+ name: "quoteAmount",
375
+ type: "uint256",
376
+ },
377
+ ],
378
+ stateMutability: "view",
379
+ type: "function",
380
+ },
381
+ {
382
+ inputs: [],
383
+ name: "supportedFeeTiers",
384
+ outputs: [
385
+ {
386
+ internalType: "uint24[]",
387
+ name: "",
388
+ type: "uint24[]",
389
+ },
390
+ ],
391
+ stateMutability: "view",
392
+ type: "function",
393
+ },
78
394
  ];
79
395
 
80
396
  export class IStaticOracle__factory {