@gooddollar/goodprotocol 1.0.29-beta.3 → 1.0.29-beta.5

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 (339) hide show
  1. package/artifacts/abis/ERC20PresetMinterPauserUpgradeable.min.json +1 -0
  2. package/artifacts/abis/ERC677.min.json +1 -0
  3. package/artifacts/abis/ERC677Receiver.min.json +1 -0
  4. package/artifacts/abis/GoodDollar.min.json +1 -0
  5. package/artifacts/abis/IFeesFormula.min.json +1 -0
  6. package/artifacts/abis/IIdentity.min.json +1 -1
  7. package/artifacts/abis/IIdentityV2.min.json +1 -1
  8. package/artifacts/abis/IdentityV2.min.json +1 -1
  9. package/artifacts/abis/InvitesV2.min.json +1 -1
  10. package/artifacts/contracts/DAOStackInterfaces.sol/Avatar.dbg.json +1 -1
  11. package/artifacts/contracts/DAOStackInterfaces.sol/Controller.dbg.json +1 -1
  12. package/artifacts/contracts/DAOStackInterfaces.sol/GlobalConstraintInterface.dbg.json +1 -1
  13. package/artifacts/contracts/DAOStackInterfaces.sol/IntVoteInterface.dbg.json +1 -1
  14. package/artifacts/contracts/DAOStackInterfaces.sol/ReputationInterface.dbg.json +1 -1
  15. package/artifacts/contracts/DAOStackInterfaces.sol/SchemeRegistrar.dbg.json +1 -1
  16. package/artifacts/contracts/Interfaces.sol/AggregatorV3Interface.dbg.json +1 -1
  17. package/artifacts/contracts/Interfaces.sol/ERC20.dbg.json +1 -1
  18. package/artifacts/contracts/Interfaces.sol/IAaveIncentivesController.dbg.json +1 -1
  19. package/artifacts/contracts/Interfaces.sol/IAdminWallet.dbg.json +1 -1
  20. package/artifacts/contracts/Interfaces.sol/IDonationStaking.dbg.json +1 -1
  21. package/artifacts/contracts/Interfaces.sol/IERC2917.dbg.json +1 -1
  22. package/artifacts/contracts/Interfaces.sol/IFirstClaimPool.dbg.json +1 -1
  23. package/artifacts/contracts/Interfaces.sol/IGoodDollar.dbg.json +1 -1
  24. package/artifacts/contracts/Interfaces.sol/IGoodStaking.dbg.json +1 -1
  25. package/artifacts/contracts/Interfaces.sol/IHasRouter.dbg.json +1 -1
  26. package/artifacts/contracts/Interfaces.sol/IIdentity.dbg.json +1 -1
  27. package/artifacts/contracts/Interfaces.sol/IIdentity.json +19 -0
  28. package/artifacts/contracts/Interfaces.sol/IIdentityV2.dbg.json +1 -1
  29. package/artifacts/contracts/Interfaces.sol/IIdentityV2.json +19 -0
  30. package/artifacts/contracts/Interfaces.sol/ILendingPool.dbg.json +1 -1
  31. package/artifacts/contracts/Interfaces.sol/IMultichainRouter.dbg.json +1 -1
  32. package/artifacts/contracts/Interfaces.sol/INameService.dbg.json +1 -1
  33. package/artifacts/contracts/Interfaces.sol/IUBIScheme.dbg.json +1 -1
  34. package/artifacts/contracts/Interfaces.sol/ProxyAdmin.dbg.json +1 -1
  35. package/artifacts/contracts/Interfaces.sol/Reserve.dbg.json +1 -1
  36. package/artifacts/contracts/Interfaces.sol/Staking.dbg.json +1 -1
  37. package/artifacts/contracts/Interfaces.sol/Uniswap.dbg.json +1 -1
  38. package/artifacts/contracts/Interfaces.sol/UniswapFactory.dbg.json +1 -1
  39. package/artifacts/contracts/Interfaces.sol/UniswapPair.dbg.json +1 -1
  40. package/artifacts/contracts/Interfaces.sol/cERC20.dbg.json +1 -1
  41. package/artifacts/contracts/fuseFaucet/Faucet.sol/Faucet.dbg.json +1 -1
  42. package/artifacts/contracts/fuseFaucet/Faucet.sol/Faucet.json +2 -2
  43. package/artifacts/contracts/fuseFaucet/FuseFaucet.sol/FuseFaucet.dbg.json +1 -1
  44. package/artifacts/contracts/fuseFaucet/FuseFaucet.sol/FuseFaucet.json +2 -2
  45. package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.dbg.json +1 -1
  46. package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.json +2 -2
  47. package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.dbg.json +1 -1
  48. package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.json +2 -2
  49. package/artifacts/contracts/governance/GReputation.sol/GReputation.dbg.json +1 -1
  50. package/artifacts/contracts/governance/GReputation.sol/GReputation.json +2 -2
  51. package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.dbg.json +1 -1
  52. package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.json +2 -2
  53. package/artifacts/contracts/governance/GoodDollarStaking.sol/IGovernanceStaking.dbg.json +1 -1
  54. package/artifacts/contracts/governance/GoodDollarStaking.sol/RewardsMinter.dbg.json +1 -1
  55. package/artifacts/contracts/governance/GovernanceStaking.sol/GovernanceStaking.dbg.json +1 -1
  56. package/artifacts/contracts/governance/GovernanceStaking.sol/GovernanceStaking.json +2 -2
  57. package/artifacts/contracts/governance/MultiBaseGovernanceShareField.sol/MultiBaseGovernanceShareField.dbg.json +1 -1
  58. package/artifacts/contracts/governance/Reputation.sol/Reputation.dbg.json +1 -1
  59. package/artifacts/contracts/governance/Reputation.sol/Reputation.json +2 -2
  60. package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.dbg.json +1 -1
  61. package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.json +2 -2
  62. package/artifacts/contracts/identity/IdentityV2.sol/IdentityV2.dbg.json +1 -1
  63. package/artifacts/contracts/identity/IdentityV2.sol/IdentityV2.json +33 -2
  64. package/artifacts/contracts/invite/InvitesV1.sol/InvitesV1.dbg.json +1 -1
  65. package/artifacts/contracts/invite/InvitesV1.sol/InvitesV1.json +2 -2
  66. package/artifacts/contracts/invite/InvitesV2.sol/InvitesV2.dbg.json +1 -1
  67. package/artifacts/contracts/invite/InvitesV2.sol/InvitesV2.json +38 -10
  68. package/artifacts/contracts/mocks/AaveMock.sol/AaveMock.dbg.json +1 -1
  69. package/artifacts/contracts/mocks/DAIMock.sol/DAIMock.dbg.json +1 -1
  70. package/artifacts/contracts/mocks/DecimalsMock.sol/DecimalsMock.dbg.json +1 -1
  71. package/artifacts/contracts/mocks/DistributionBridgeMock.sol/DistributionBridgeMock.dbg.json +1 -1
  72. package/artifacts/contracts/mocks/DistributionBridgeMock.sol/DistributionBridgeMock.json +2 -2
  73. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest.dbg.json +1 -1
  74. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest.json +2 -2
  75. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.dbg.json +1 -1
  76. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.json +2 -2
  77. package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.dbg.json +1 -1
  78. package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.json +2 -2
  79. package/artifacts/contracts/mocks/GoodDollarStakingMock.sol/GoodDollarStakingMock.dbg.json +1 -1
  80. package/artifacts/contracts/mocks/GoodDollarStakingMock.sol/GoodDollarStakingMock.json +2 -2
  81. package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.dbg.json +1 -1
  82. package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.json +2 -2
  83. package/artifacts/contracts/mocks/IncentiveControllerMock.sol/IncentiveControllerMock.dbg.json +1 -1
  84. package/artifacts/contracts/mocks/LendingPoolMock.sol/LendingPoolMock.dbg.json +1 -1
  85. package/artifacts/contracts/mocks/MultichainRouterMock.sol/IWrapper.dbg.json +1 -1
  86. package/artifacts/contracts/mocks/MultichainRouterMock.sol/MultichainRouterMock.dbg.json +1 -1
  87. package/artifacts/contracts/mocks/MultichainRouterMock.sol/MultichainRouterMock.json +2 -2
  88. package/artifacts/contracts/mocks/OverMintTester.sol/IGoodDollarStakingTest.dbg.json +1 -1
  89. package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.dbg.json +1 -1
  90. package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.json +2 -2
  91. package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.dbg.json +1 -1
  92. package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.json +2 -2
  93. package/artifacts/contracts/mocks/SixteenDecimalsTokenMock.sol/SixteenDecimalsTokenMock.dbg.json +1 -1
  94. package/artifacts/contracts/mocks/StakingMockFixedAPY.sol/StakingMockFixedAPY.dbg.json +1 -1
  95. package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.dbg.json +1 -1
  96. package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.json +2 -2
  97. package/artifacts/contracts/mocks/TwentyDecimalsTokenMock.sol/TwentyDecimalsTokenMock.dbg.json +1 -1
  98. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.dbg.json +1 -1
  99. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.json +2 -2
  100. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.dbg.json +1 -1
  101. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.json +2 -2
  102. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.dbg.json +1 -1
  103. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.json +2 -2
  104. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.dbg.json +1 -1
  105. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.json +2 -2
  106. package/artifacts/contracts/mocks/UsdcMock.sol/USDCMock.dbg.json +1 -1
  107. package/artifacts/contracts/mocks/cBATMock.sol/cBATMock.dbg.json +1 -1
  108. package/artifacts/contracts/mocks/cDAILowWorthMock.sol/cDAILowWorthMock.dbg.json +1 -1
  109. package/artifacts/contracts/mocks/cDAIMock.sol/cDAIMock.dbg.json +1 -1
  110. package/artifacts/contracts/mocks/cDAINonMintableMock.sol/cDAINonMintableMock.dbg.json +1 -1
  111. package/artifacts/contracts/mocks/cDecimalsMock.sol/cDecimalsMock.dbg.json +1 -1
  112. package/artifacts/contracts/mocks/cSDTMock.sol/cSDTMock.dbg.json +1 -1
  113. package/artifacts/contracts/mocks/cUSDCMock.sol/cUSDCMock.dbg.json +1 -1
  114. package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.dbg.json +1 -1
  115. package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.json +2 -2
  116. package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.dbg.json +1 -1
  117. package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.json +2 -2
  118. package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.dbg.json +1 -1
  119. package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.json +2 -2
  120. package/artifacts/contracts/reserve/GoodReserveCDai.sol/ContributionCalc.dbg.json +1 -1
  121. package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.dbg.json +1 -1
  122. package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.json +2 -2
  123. package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.dbg.json +1 -1
  124. package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.json +2 -2
  125. package/artifacts/contracts/staking/BaseShareFieldV2.sol/BaseShareFieldV2.dbg.json +1 -1
  126. package/artifacts/contracts/staking/BaseShareFieldV2.sol/BaseShareFieldV2.json +2 -2
  127. package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.dbg.json +1 -1
  128. package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.json +2 -2
  129. package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.dbg.json +1 -1
  130. package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.json +2 -2
  131. package/artifacts/contracts/staking/FuseStakingV3.sol/IConsensus.dbg.json +1 -1
  132. package/artifacts/contracts/staking/FuseStakingV3.sol/PegSwap.dbg.json +1 -1
  133. package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.dbg.json +1 -1
  134. package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.json +2 -2
  135. package/artifacts/contracts/staking/SimpleStaking.sol/SimpleStaking.dbg.json +1 -1
  136. package/artifacts/contracts/staking/SimpleStakingV2.sol/SimpleStakingV2.dbg.json +1 -1
  137. package/artifacts/contracts/staking/UniswapV2SwapHelper.sol/UniswapV2SwapHelper.dbg.json +1 -1
  138. package/artifacts/contracts/staking/UniswapV2SwapHelper.sol/UniswapV2SwapHelper.json +2 -2
  139. package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.dbg.json +1 -1
  140. package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.json +2 -2
  141. package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.dbg.json +1 -1
  142. package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.json +2 -2
  143. package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.dbg.json +1 -1
  144. package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.json +2 -2
  145. package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.dbg.json +1 -1
  146. package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.json +2 -2
  147. package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.dbg.json +1 -1
  148. package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.json +2 -2
  149. package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.dbg.json +1 -1
  150. package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.json +2 -2
  151. package/artifacts/contracts/staking/utils/Math64X64.sol/Math64x64.dbg.json +1 -1
  152. package/artifacts/contracts/staking/utils/StakingRewardsFixedAPY.sol/StakingRewardsFixedAPY.dbg.json +1 -1
  153. package/artifacts/contracts/token/ERC20PresetMinterPauserUpgradeable.sol/ERC20PresetMinterPauserUpgradeable.dbg.json +4 -0
  154. package/artifacts/contracts/token/ERC20PresetMinterPauserUpgradeable.sol/ERC20PresetMinterPauserUpgradeable.json +755 -0
  155. package/artifacts/contracts/token/ERC677.sol/ERC677.dbg.json +4 -0
  156. package/artifacts/contracts/token/ERC677.sol/ERC677.json +66 -0
  157. package/artifacts/contracts/token/ERC677.sol/ERC677Receiver.dbg.json +4 -0
  158. package/artifacts/contracts/token/ERC677.sol/ERC677Receiver.json +40 -0
  159. package/artifacts/contracts/token/FeesFormula.sol/IFeesFormula.dbg.json +4 -0
  160. package/artifacts/contracts/token/FeesFormula.sol/IFeesFormula.json +45 -0
  161. package/artifacts/contracts/token/GoodDollar.sol/GoodDollar.dbg.json +4 -0
  162. package/artifacts/contracts/token/GoodDollar.sol/GoodDollar.json +1180 -0
  163. package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.dbg.json +1 -1
  164. package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.json +2 -2
  165. package/artifacts/contracts/utils/AdminWallet.sol/AdminWallet.dbg.json +1 -1
  166. package/artifacts/contracts/utils/AdminWallet.sol/AdminWallet.json +2 -2
  167. package/artifacts/contracts/utils/BancorFormula.sol/BancorFormula.dbg.json +1 -1
  168. package/artifacts/contracts/utils/BulkProof.sol/BulkProof.dbg.json +1 -1
  169. package/artifacts/contracts/utils/BulkProof.sol/BulkProof.json +2 -2
  170. package/artifacts/contracts/utils/DAOContract.sol/DAOContract.dbg.json +1 -1
  171. package/artifacts/contracts/utils/DAOContract.sol/DAOContract.json +2 -2
  172. package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.dbg.json +1 -1
  173. package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.json +2 -2
  174. package/artifacts/contracts/utils/DSMath.sol/DSMath.dbg.json +1 -1
  175. package/artifacts/contracts/utils/DataTypes.sol/DataTypes.dbg.json +1 -1
  176. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.dbg.json +1 -1
  177. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.json +2 -2
  178. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/IRouter.dbg.json +1 -1
  179. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/PausableControl.dbg.json +1 -1
  180. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/TokenOperation.dbg.json +1 -1
  181. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/TokenOperation.json +2 -2
  182. package/artifacts/contracts/utils/MultichainBridgeHelper.sol/MultichainBridgeHelper.dbg.json +1 -1
  183. package/artifacts/contracts/utils/MultichainBridgeHelper.sol/MultichainBridgeHelper.json +2 -2
  184. package/artifacts/contracts/utils/NameService.sol/NameService.dbg.json +1 -1
  185. package/artifacts/contracts/utils/ProtocolUpgrade.sol/OldMarketMaker.dbg.json +1 -1
  186. package/artifacts/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade.dbg.json +1 -1
  187. package/artifacts/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade.json +2 -2
  188. package/artifacts/contracts/utils/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.dbg.json +1 -1
  189. package/artifacts/contracts/utils/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.json +2 -2
  190. package/artifacts/contracts/utils/ProtocolUpgradeFuseRecover.sol/ProtocolUpgradeFuseRecover.dbg.json +1 -1
  191. package/artifacts/contracts/utils/ProtocolUpgradeFuseRecover.sol/ProtocolUpgradeFuseRecover.json +2 -2
  192. package/artifacts/contracts/utils/ProtocolUpgradeRecover.sol/ProtocolUpgradeRecover.dbg.json +1 -1
  193. package/artifacts/contracts/utils/ProtocolUpgradeRecover.sol/ProtocolUpgradeRecover.json +2 -2
  194. package/artifacts/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy.dbg.json +1 -1
  195. package/artifacts/contracts/utils/ProxyFactory1967.sol/ProxyFactory1967.dbg.json +1 -1
  196. package/artifacts/contracts/utils/ReputationTestHelper.sol/ReputationTestHelper.dbg.json +1 -1
  197. package/artifacts/contracts/utils/ReputationTestHelper.sol/ReputationTestHelper.json +2 -2
  198. package/contracts/Interfaces.sol +2 -0
  199. package/contracts/fuseFaucet/Faucet.sol +5 -3
  200. package/contracts/fuseFaucet/FuseFaucet.sol +1 -2
  201. package/contracts/governance/GReputation.sol +24 -10
  202. package/contracts/identity/IdentityV2.sol +79 -28
  203. package/contracts/invite/InvitesV1.sol +5 -24
  204. package/contracts/invite/InvitesV2.sol +8 -15
  205. package/contracts/mocks/UpgradableMocks.sol +5 -3
  206. package/contracts/token/ERC20PresetMinterPauserUpgradeable.sol +140 -0
  207. package/contracts/token/ERC677.sol +74 -0
  208. package/contracts/token/FeesFormula.sol +10 -0
  209. package/contracts/token/GoodDollar.sol +234 -0
  210. package/hardhat.config.ts +5 -5
  211. package/package.json +3 -2
  212. package/releases/deployment.json +9 -5
  213. package/scripts/multichain-deploy/1_basicdao-deploy.ts +45 -28
  214. package/scripts/multichain-deploy/2_helpers-deploy.ts +1 -7
  215. package/scripts/multichain-deploy/verifyEtherscan.ts +33 -5
  216. package/test/faucet/Faucet.test.ts +184 -0
  217. package/test/{FuseFaucet.test.ts → faucet/FuseFaucet.test.ts} +4 -3
  218. package/test/governance/ClaimersDistribution.test.ts +3 -2
  219. package/test/governance/CompoundVotingMachine.castvote.test.ts +3 -2
  220. package/test/governance/CompoundVotingMachine.crossblockchain.ts +3 -2
  221. package/test/governance/CompoundVotingMachine.daoscheme.ts +3 -2
  222. package/test/governance/CompoundVotingMachine.delegate.test.ts +3 -2
  223. package/test/governance/CompoundVotingMachine.guardian.test.ts +3 -2
  224. package/test/governance/CompoundVotingMachine.propose.test.ts +3 -2
  225. package/test/governance/CompoundVotingMachine.state.test.ts +3 -2
  226. package/test/governance/GReputation.test.ts +22 -14
  227. package/test/governance/GoodDollarStaking.gd.test.ts +2 -1
  228. package/test/governance/GoodDollarStaking.good.test.ts +2 -1
  229. package/test/governance/GovernanceStaking.test.ts +4 -3
  230. package/test/governance/Reputation.test.ts +2 -1
  231. package/test/governance/StakersDistribution.test.ts +26 -12
  232. package/test/helpers.ts +61 -29
  233. package/test/identity/IdentityV2.test.ts +481 -0
  234. package/test/{InvitesV1.test.ts → invite/InvitesV1.test.ts} +4 -3
  235. package/test/invite/InvitesV2.test.ts +355 -0
  236. package/test/reserve/DistributionHelper.test.ts +2 -1
  237. package/test/reserve/GoodMarketMaker.test.ts +15 -8
  238. package/test/reserve/GoodReserveCDai.cap.test.ts +8 -1
  239. package/test/reserve/GoodReserveCDai.distribution.test.ts +2 -1
  240. package/test/reserve/GoodReserveCDai.gdx.test.ts +2 -1
  241. package/test/reserve/GoodReserveCDai.pause.test.ts +2 -1
  242. package/test/reserve/GoodReserveCDai.test.ts +11 -28
  243. package/test/reserve/GoodReserveCDai.uniswap.test.ts +20 -18
  244. package/test/staking/CompoundStakingFactory.test.ts +8 -4
  245. package/test/staking/DifferentStakingTokens.test.ts +3 -2
  246. package/test/staking/DonationsStaking.test.ts +33 -24
  247. package/test/staking/FuseStaking.test.ts +2 -2
  248. package/test/staking/GoodAaveStakingFactory.test.ts +36 -30
  249. package/test/staking/SimpleDAIStaking.test.ts +12 -16
  250. package/test/staking/StakingRewards.test.ts +22 -18
  251. package/test/staking/StakingRewardsFixedAPY.test.ts +2 -1
  252. package/test/staking/SwapHelper.test.ts +20 -17
  253. package/test/staking/UsdcAaveStaking.test.ts +36 -33
  254. package/test/token/GoodDollar.test.ts +277 -0
  255. package/test/ubi/UBIScheme.e2e.test.ts +4 -3
  256. package/test/ubi/UBIScheme.test.ts +3 -2
  257. package/test/ubi/UBISchemeCycle.test.ts +2 -1
  258. package/test/utils/AdminWallet.test.ts +2 -1
  259. package/test/utils/DAOUpgradeableContract.test.ts +3 -2
  260. package/test/utils/GoodDollarMintBurnWrapper.test.ts +2 -1
  261. package/test/utils/NameService.test.ts +37 -21
  262. package/test/utils/ProtocolUpgrade.test.ts +1 -0
  263. package/test/utils/ProxyFactory.test.ts +1 -0
  264. package/types/ERC20PermitUpgradeable.ts +522 -0
  265. package/types/ERC20PresetMinterPauserUpgradeable.ts +105 -1
  266. package/types/ERC677.ts +131 -0
  267. package/types/ERC677Receiver.ts +115 -0
  268. package/types/GoodDollar.ts +1705 -0
  269. package/types/IERC20PermitUpgradeable.ts +176 -0
  270. package/types/IFeesFormula.ts +111 -0
  271. package/types/IIdentity.ts +31 -0
  272. package/types/IIdentityV2.ts +31 -0
  273. package/types/IdentityV2.ts +69 -5
  274. package/types/InvitesV2.ts +61 -7
  275. package/types/factories/AaveStakingFactory__factory.ts +1 -1
  276. package/types/factories/AdminWallet__factory.ts +1 -1
  277. package/types/factories/BaseShareFieldV2__factory.ts +1 -1
  278. package/types/factories/BaseShareField__factory.ts +1 -1
  279. package/types/factories/ClaimersDistribution__factory.ts +1 -1
  280. package/types/factories/CompoundStakingFactory__factory.ts +1 -1
  281. package/types/factories/CompoundVotingMachine__factory.ts +1 -1
  282. package/types/factories/DAOContract__factory.ts +1 -1
  283. package/types/factories/DAOUpgradeableContract__factory.ts +1 -1
  284. package/types/factories/DistributionBridgeMock__factory.ts +1 -1
  285. package/types/factories/DistributionHelperTestHelper__factory.ts +1 -1
  286. package/types/factories/DistributionHelperTest__factory.ts +1 -1
  287. package/types/factories/DistributionHelper__factory.ts +1 -1
  288. package/types/factories/DonationsStaking__factory.ts +1 -1
  289. package/types/factories/ERC20PermitUpgradeable__factory.ts +375 -0
  290. package/types/factories/ERC20PresetMinterPauserUpgradeable__factory.ts +83 -2
  291. package/types/factories/ERC677Receiver__factory.ts +55 -0
  292. package/types/factories/ERC677__factory.ts +75 -0
  293. package/types/factories/ExchangeHelper__factory.ts +1 -1
  294. package/types/factories/Faucet__factory.ts +1 -1
  295. package/types/factories/FuseFaucet__factory.ts +1 -1
  296. package/types/factories/FuseStakingV3__factory.ts +1 -1
  297. package/types/factories/GReputation__factory.ts +1 -1
  298. package/types/factories/GoodAaveStakingV2__factory.ts +1 -1
  299. package/types/factories/GoodAaveStaking__factory.ts +1 -1
  300. package/types/factories/GoodCompoundStakingTest__factory.ts +1 -1
  301. package/types/factories/GoodCompoundStakingV2__factory.ts +1 -1
  302. package/types/factories/GoodCompoundStaking__factory.ts +1 -1
  303. package/types/factories/GoodDollarMintBurnWrapper__factory.ts +1 -1
  304. package/types/factories/GoodDollarStakingMock__factory.ts +1 -1
  305. package/types/factories/GoodDollarStaking__factory.ts +1 -1
  306. package/types/factories/GoodDollar__factory.ts +1228 -0
  307. package/types/factories/GoodFundManagerTest__factory.ts +1 -1
  308. package/types/factories/GoodFundManager__factory.ts +1 -1
  309. package/types/factories/GoodMarketMaker__factory.ts +1 -1
  310. package/types/factories/GoodReserveCDai__factory.ts +1 -1
  311. package/types/factories/GovernanceStaking__factory.ts +1 -1
  312. package/types/factories/IERC20PermitUpgradeable__factory.ts +105 -0
  313. package/types/factories/IFeesFormula__factory.ts +57 -0
  314. package/types/factories/IIdentityV2__factory.ts +19 -0
  315. package/types/factories/IIdentity__factory.ts +19 -0
  316. package/types/factories/IdentityV2__factory.ts +32 -1
  317. package/types/factories/InvitesV1__factory.ts +1 -1
  318. package/types/factories/InvitesV2__factory.ts +37 -9
  319. package/types/factories/MultichainBridgeHelper__factory.ts +1 -1
  320. package/types/factories/MultichainRouterMock__factory.ts +1 -1
  321. package/types/factories/OverMintTesterRegularStake__factory.ts +1 -1
  322. package/types/factories/OverMintTester__factory.ts +1 -1
  323. package/types/factories/ProtocolUpgradeFuseRecover__factory.ts +1 -1
  324. package/types/factories/ProtocolUpgradeFuse__factory.ts +1 -1
  325. package/types/factories/ProtocolUpgradeRecover__factory.ts +1 -1
  326. package/types/factories/ProtocolUpgrade__factory.ts +1 -1
  327. package/types/factories/ReputationTestHelper__factory.ts +1 -1
  328. package/types/factories/Reputation__factory.ts +1 -1
  329. package/types/factories/StakersDistribution__factory.ts +1 -1
  330. package/types/factories/SwapHelperTest__factory.ts +1 -1
  331. package/types/factories/UBIScheme__factory.ts +1 -1
  332. package/types/factories/UniswapV2SwapHelper__factory.ts +1 -1
  333. package/types/factories/UpgradableMock2__factory.ts +1 -1
  334. package/types/factories/UpgradableMock3__factory.ts +1 -1
  335. package/types/factories/UpgradableMock4__factory.ts +1 -1
  336. package/types/factories/UpgradableMock__factory.ts +1 -1
  337. package/types/hardhat.d.ts +63 -0
  338. package/types/index.ts +12 -0
  339. package/yarn.lock +11 -29
@@ -497,6 +497,19 @@
497
497
  "stateMutability": "view",
498
498
  "type": "function"
499
499
  },
500
+ {
501
+ "inputs": [
502
+ {
503
+ "internalType": "address",
504
+ "name": "_connected",
505
+ "type": "address"
506
+ }
507
+ ],
508
+ "name": "disconnectAccount",
509
+ "outputs": [],
510
+ "stateMutability": "nonpayable",
511
+ "type": "function"
512
+ },
500
513
  {
501
514
  "inputs": [
502
515
  {
@@ -909,6 +922,24 @@
909
922
  "stateMutability": "nonpayable",
910
923
  "type": "function"
911
924
  },
925
+ {
926
+ "inputs": [
927
+ {
928
+ "internalType": "address",
929
+ "name": "account",
930
+ "type": "address"
931
+ },
932
+ {
933
+ "internalType": "string",
934
+ "name": "did",
935
+ "type": "string"
936
+ }
937
+ ],
938
+ "name": "setDID",
939
+ "outputs": [],
940
+ "stateMutability": "nonpayable",
941
+ "type": "function"
942
+ },
912
943
  {
913
944
  "inputs": [
914
945
  {
@@ -993,8 +1024,8 @@
993
1024
  "type": "function"
994
1025
  }
995
1026
  ],
996
- "bytecode": "0x60a06040523060601b60805234801561001757600080fd5b5060805160601c61360961004b60003960008181610f0b01528181610f4b01528181611230015261127001526136096000f3fe6080604052600436106102185760003560e01c806301ffc9a71461021d57806302329a291461025257806308e0d29d1461027457806310154bad14610294578063188efc16146102b45780631aaff63c146102d45780631b027099146103045780631b3c90a8146103245780632236684414610339578063248a9ca31461034d578063274a827b1461036d578063291d95491461038d5780632b14dda8146103ad5780632d0e9b46146103cd5780632f2ff15d146103fa57806331b376e21461041a57806336568abe146104315780633659cfe6146104515780633af32abf146104715780633e6326fc146104915780634125f0f2146104b15780634162169f146104d2578063485cc955146104f25780634f1ef2861461051257806354f9f7a3146105255780635aef7de6146105525780635c975abb146105725780635f539d691461058b57806361320040146105ab57806367c75937146105e257806391d1485414610619578063a217fddf14610639578063b2a1de221461064e578063b30f7e7f14610665578063c375c2ef1461067c578063c6a276c21461069c578063c73cc4ae146106bc578063d547741f146106dc578063d6cd9473146106fc578063e1758bd814610711578063e1e360ba14610726578063e63ab1e91461075d578063e737031a1461077f578063f653b81e1461079f578063f85ebeb1146107d0578063fe575a87146107f0578063fff930d414610810575b600080fd5b34801561022957600080fd5b5061023d610238366004612cda565b610830565b60405190151581526020015b60405180910390f35b34801561025e57600080fd5b5061027261026d366004612d05565b610867565b005b34801561028057600080fd5b5061027261028f366004612d37565b61089a565b3480156102a057600080fd5b506102726102af366004612d37565b610975565b3480156102c057600080fd5b506102726102cf366004612d37565b6109bc565b3480156102e057600080fd5b506102f660008051602061352d83398151915281565b604051908152602001610249565b34801561031057600080fd5b5061027261031f366004612e1f565b610a4a565b34801561033057600080fd5b50610272610a97565b34801561034557600080fd5b50600161023d565b34801561035957600080fd5b506102f6610368366004612e6e565b610bdc565b34801561037957600080fd5b50610272610388366004612e87565b610bf1565b34801561039957600080fd5b506102726103a8366004612d37565b610cf7565b3480156103b957600080fd5b506102726103c8366004612d37565b610d3d565b3480156103d957600080fd5b506103ed6103e8366004612d37565b610e03565b6040516102499190612ef8565b34801561040657600080fd5b50610272610415366004612f0c565b610e69565b34801561042657600080fd5b506102f66101645481565b34801561043d57600080fd5b5061027261044c366004612f0c565b610e86565b34801561045d57600080fd5b5061027261046c366004612d37565b610f00565b34801561047d57600080fd5b5061023d61048c366004612d37565b610fc9565b34801561049d57600080fd5b506067546103ed906001600160a01b031681565b3480156104bd57600080fd5b50610168546103ed906001600160a01b031681565b3480156104de57600080fd5b506065546103ed906001600160a01b031681565b3480156104fe57600080fd5b5061027261050d366004612f3c565b6110e8565b610272610520366004612f6a565b611225565b34801561053157600080fd5b50610545610540366004612d37565b6112db565b604051610249919061301b565b34801561055e57600080fd5b506066546103ed906001600160a01b031681565b34801561057e57600080fd5b506101305460ff1661023d565b34801561059757600080fd5b506102726105a6366004612d37565b611427565b3480156105b757600080fd5b506103ed6105c6366004612d37565b610167602052600090815260409020546001600160a01b031681565b3480156105ee57600080fd5b506103ed6105fd366004612e6e565b610166602052600090815260409020546001600160a01b031681565b34801561062557600080fd5b5061023d610634366004612f0c565b61150d565b34801561064557600080fd5b506102f6600081565b34801561065a57600080fd5b506102f66101625481565b34801561067157600080fd5b506102f66101635481565b34801561068857600080fd5b50610272610697366004612d37565b611538565b3480156106a857600080fd5b506102726106b7366004612d37565b6115b6565b3480156106c857600080fd5b5061023d6106d7366004612d37565b6116b1565b3480156106e857600080fd5b506102726106f7366004612f0c565b611778565b34801561070857600080fd5b50610272611795565b34801561071d57600080fd5b506103ed6117c4565b34801561073257600080fd5b506102f6610741366004612d37565b6001600160a01b03166000908152610165602052604090205490565b34801561076957600080fd5b506102f660008051602061356d83398151915281565b34801561078b57600080fd5b5061027261079a36600461302e565b611860565b3480156107ab57600080fd5b506107bf6107ba366004612d37565b6118d2565b60405161024995949392919061308d565b3480156107dc57600080fd5b506102726107eb366004612f6a565b61198e565b3480156107fc57600080fd5b5061023d61080b366004612d37565b611b15565b34801561081c57600080fd5b5061027261082b366004612e6e565b611b88565b60006001600160e01b03198216637965db0b60e01b148061086157506301ffc9a760e01b6001600160e01b03198316145b92915050565b60008051602061356d8339815191526108808133611bba565b81156108925761088e611c1e565b5050565b61088e611c8f565b60008051602061352d8339815191526108b38133611bba565b6101305460ff16156108e05760405162461bcd60e51b81526004016108d7906130c7565b60405180910390fd5b6001600160a01b0382166000908152610165602052604090206004015460ff1660011461091f5760405162461bcd60e51b81526004016108d7906130f1565b6001600160a01b03821660008181526101656020908152604091829020429081905591519182527fb2a82fce6d8c7a633efe9579f77b4edb96bfdf171a49bfc2ce666dc543a1f500910160405180910390a25050565b60008051602061352d83398151915261098e8133611bba565b6101305460ff16156109b25760405162461bcd60e51b81526004016108d7906130c7565b61088e8246611d0b565b60008051602061352d8339815191526109d58133611bba565b6101305460ff16156109f95760405162461bcd60e51b81526004016108d7906130c7565b6001600160a01b03821660008181526101656020526040808220600401805460ff191660ff179055517f44d5fe68b00f68950fb9c1ff0a61ef7f747b1a36359a7e3a7f3324db4b8789679190a25050565b60008051602061352d833981519152610a638133611bba565b6101305460ff1615610a875760405162461bcd60e51b81526004016108d7906130c7565b610a92838346611dd8565b505050565b60675460405163bf40fac160e01b815260206004820152600a60248201526921a7a72a2927a62622a960b11b60448201526001600160a01b039091169063bf40fac19060640160206040518083038186803b158015610af557600080fd5b505afa158015610b09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b2d919061311a565b606580546001600160a01b0319166001600160a01b0392909216918217905560408051632d77bef360e11b81529051635aef7de691600480820192602092909190829003018186803b158015610b8257600080fd5b505afa158015610b96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bba919061311a565b606680546001600160a01b0319166001600160a01b0392909216919091179055565b600090815260fe602052604090206001015490565b610bfa33610fc9565b610c165760405162461bcd60e51b81526004016108d7906130f1565b60008282604051610c28929190613137565b6040805191829003909120600081815261016660205291909120549091506001600160a01b031615610c6c5760405162461bcd60e51b81526004016108d790613147565b33600090815261016560205260408082209051610c8c91600201906131b2565b60408051918290039091206000818152610166602090815283822080546001600160a01b0319169055338252610165905291909120909150610cd2906002018585612b81565b505060009081526101666020526040902080546001600160a01b031916331790555050565b60008051602061352d833981519152610d108133611bba565b6101305460ff1615610d345760405162461bcd60e51b81526004016108d7906130c7565b61088e82611e83565b6000610d498133611bba565b6067546001600160a01b031615610d985760405162461bcd60e51b8152602060048201526013602482015272185b1c9958591e481a5b9a5d1a585b1a5e9959606a1b60448201526064016108d7565b610da1826120ea565b606654610db9906000906001600160a01b031661210d565b606654610dde9060008051602061356d833981519152906001600160a01b031661210d565b60665461088e9060008051602061352d833981519152906001600160a01b031661210d565b6000610e0e82610fc9565b15610e17575090565b6001600160a01b0380831660009081526101676020526040902054610e3c9116610fc9565b15610e6157506001600160a01b03908116600090815261016760205260409020541690565b506000919050565b610e7282610bdc565b610e7c8133611bba565b610a928383612113565b6001600160a01b0381163314610ef65760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016108d7565b61088e8282612199565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610f495760405162461bcd60e51b81526004016108d79061324e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610f7b612200565b6001600160a01b031614610fa15760405162461bcd60e51b81526004016108d790613288565b610faa8161221c565b60408051600080825260208201909252610fc691839190612224565b50565b6001600160a01b0381166000908152610165602052604081205481906201518090610ff490426132d8565b610ffe91906132ef565b905061016454811115801561103257506001600160a01b0383166000908152610165602052604090206004015460ff166001145b156110405750600192915050565b610168546001600160a01b0316156110df5761016854604051633af32abf60e01b81526001600160a01b0390911690633af32abf90611083908690600401612ef8565b60206040518083038186803b15801561109b57600080fd5b505afa9250505080156110cb575060408051601f3d908101601f191682019092526110c891810190613311565b60015b6110d85750600092915050565b9392505050565b50600092915050565b600054610100900460ff1680611101575060005460ff16155b61111d5760405162461bcd60e51b81526004016108d79061332e565b600054610100900460ff1615801561113f576000805461ffff19166101011790555b611147612364565b61114f6123cf565b6104476101645560665461116e906000906001600160a01b031661210d565b61117960008461210d565b60665461119e9060008051602061356d833981519152906001600160a01b031661210d565b6111b660008051602061356d8339815191528461210d565b6111ce60008051602061352d8339815191528461210d565b6066546111f39060008051602061352d833981519152906001600160a01b031661210d565b61016880546001600160a01b0319166001600160a01b0384161790558015610a92576000805461ff0019169055505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561126e5760405162461bcd60e51b81526004016108d79061324e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166112a0612200565b6001600160a01b0316146112c65760405162461bcd60e51b81526004016108d790613288565b6112cf8261221c565b61088e82826001612224565b336000908152610165602052604090206002018054606091906112fd90613177565b80601f016020809104026020016040519081016040528092919081815260200182805461132990613177565b80156113765780601f1061134b57610100808354040283529160200191611376565b820191906000526020600020905b81548152906001019060200180831161135957829003601f168201915b5050505050905060008151111561138c57919050565b610168546040516354f9f7a360e01b81526001600160a01b03909116906354f9f7a3906113bd908590600401612ef8565b60006040518083038186803b1580156113d557600080fd5b505afa92505050801561140a57506040513d6000823e601f3d908101601f19168201604052611407919081019061337c565b60015b61086157505060408051602081019091526000815290565b919050565b60008051602061352d8339815191526114408133611bba565b6101305460ff16156114645760405162461bcd60e51b81526004016108d7906130c7565b813b6114b25760405162461bcd60e51b815260206004820152601f60248201527f476976656e2061646472657373206973206e6f74206120636f6e74726163740060448201526064016108d7565b6114bc8246611d0b565b6001600160a01b03821660008181526101656020526040808220600401805460ff19166002179055517f89c66952b48f3e96bf1d8ba1b63189520fd988a6979b8b740bd5c5d8dc53e2059190a25050565b600091825260fe602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60008051602061352d8339815191526115518133611bba565b6101305460ff16156115755760405162461bcd60e51b81526004016108d7906130c7565b61157e82611e83565b6040516001600160a01b038316907f8d30d41865a0b811b9545d879520d2dde9f4cc49e4241f486ad9752bc904b56590600090a25050565b60008051602061352d8339815191526115cf8133611bba565b6101305460ff16156115f35760405162461bcd60e51b81526004016108d7906130c7565b610168546001600160a01b03161561166357610168546040516363513b6160e11b81526001600160a01b039091169063c6a276c290611636908590600401612ef8565b600060405180830381600087803b15801561165057600080fd5b505af1925050508015611661575060015b505b6001600160a01b03821660008181526101656020526040808220600401805460ff19169055517f1747ca720b1a174a464b6513ace29b1d3190b5f632b9f34147017c81425bfde89190a25050565b6001600160a01b0381166000908152610165602052604081206004015460ff16600214156116e157506001919050565b610168546001600160a01b031615610e61576101685460405163639e625760e11b81526001600160a01b039091169063c73cc4ae90611724908590600401612ef8565b60206040518083038186803b15801561173c57600080fd5b505afa92505050801561176c575060408051601f3d908101601f1916820190925261176991810190613311565b60015b61086157506000919050565b61178182610bdc565b61178b8133611bba565b610a928383612199565b6101305460ff16156117b95760405162461bcd60e51b81526004016108d7906130c7565b6117c233611e83565b565b60675460405163bf40fac160e01b815260206004820152600a60248201526923a7a7a22227a62620a960b11b60448201526000916001600160a01b03169063bf40fac19060640160206040518083038186803b15801561182357600080fd5b505afa158015611837573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185b919061311a565b905090565b60008051602061352d8339815191526118798133611bba565b6101305460ff161561189d5760405162461bcd60e51b81526004016108d7906130c7565b6118a8858585611dd8565b81156118cb576001600160a01b0385166000908152610165602052604090208290555b5050505050565b61016560205260009081526040902080546001820154600283018054929391926118fb90613177565b80601f016020809104026020016040519081016040528092919081815260200182805461192790613177565b80156119745780601f1061194957610100808354040283529160200191611974565b820191906000526020600020905b81548152906001019060200180831161195757829003601f168201915b50505050600383015460049093015491929160ff16905085565b61199733610fc9565b6119b35760405162461bcd60e51b81526004016108d7906130f1565b6119bc82610fc9565b1580156119cf57506119cd82611b15565b155b611a0d5760405162461bcd60e51b815260206004820152600f60248201526e1a5b9d985b1a59081858d8dbdd5b9d608a1b60448201526064016108d7565b6001600160a01b03828116600090815261016760205260409020541615611a6a5760405162461bcd60e51b8152602060048201526011602482015270185b1c9958591e4818dbdb9b9958dd1959607a1b60448201526064016108d7565b604080513360208201526001600160a01b03841691810191909152611aaa9083906060016040516020818303038152906040528051906020012083612445565b611aea5760405162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b60448201526064016108d7565b506001600160a01b031660009081526101676020526040902080546001600160a01b03191633179055565b6001600160a01b0381166000908152610165602052604081206004015460ff9081161415611b4557506001919050565b610168546001600160a01b031615611422576101685460405163fe575a8760e01b81526001600160a01b039091169063fe575a8790611724908590600401612ef8565b6101305460ff1615611bac5760405162461bcd60e51b81526004016108d7906130c7565b611bb4612591565b61016455565b611bc4828261150d565b61088e57611bdc816001600160a01b03166014612663565b611be7836020612663565b604051602001611bf89291906133e9565b60408051601f198184030181529082905262461bcd60e51b82526108d79160040161301b565b6101305460ff1615611c425760405162461bcd60e51b81526004016108d7906130c7565b610130805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611c783390565b604051611c859190612ef8565b60405180910390a1565b6101305460ff16611cd95760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016108d7565b610130805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33611c78565b60016101626000828254611d1f9190613458565b90915550506001600160a01b03821660009081526101656020908152604080832060048101805460ff19166001908117909155429082018190558155600301849055610167909152902080546001600160a01b0319169055611d81823b151590565b15611da05760016101636000828254611d9a9190613458565b90915550505b6040516001600160a01b038316907fee1504a83b6d4a361f4c1dc78ab59bfa30d6a3b6612c403e86bb01ef2984295f90600090a25050565b815160208084019190912060008181526101669092526040909120546001600160a01b031615611e1a5760405162461bcd60e51b81526004016108d790613147565b6001600160a01b0384166000908152610165602090815260409091208451611e4a92600290920191860190612c05565b5060008181526101666020526040902080546001600160a01b0319166001600160a01b038616179055611e7d8483611d0b565b50505050565b60016101626000828254611e9791906132d8565b9091555050803b15611f2c5760016101636000828254611eb791906132d8565b9091555050610168546001600160a01b031615611f2c576101685460405163c375c2ef60e01b81526001600160a01b039091169063c375c2ef90611eff908490600401612ef8565b600060405180830381600087803b158015611f1957600080fd5b505af1925050508015611f2a575060015b505b610168546001600160a01b031615611f9c576101685460405163291d954960e01b81526001600160a01b039091169063291d954990611f6f908490600401612ef8565b600060405180830381600087803b158015611f8957600080fd5b505af1925050508015611f9a575060015b505b6001600160a01b0381166000908152610165602052604081206002018054611fc390613177565b80601f0160208091040260200160405190810160405280929190818152602001828054611fef90613177565b801561203c5780601f106120115761010080835404028352916020019161203c565b820191906000526020600020905b81548152906001019060200180831161201f57829003601f168201915b505083516020808601919091206001600160a01b03881660009081526101659092526040822082815560018101839055959650949350915061208390506002830182612c79565b506000600382018190556004909101805460ff19169055818152610166602052604080822080546001600160a01b0319169055516001600160a01b038516917f270d9b30cf5b0793bbfd54c9d5b94aeb49462b8148399000265144a8722da6b691a2505050565b606780546001600160a01b0319166001600160a01b038316179055610fc6610a97565b61088e82825b61211d828261150d565b61088e57600082815260fe602090815260408083206001600160a01b03851684529091529020805460ff191660011790556121553390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6121a3828261150d565b1561088e57600082815260fe602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60008051602061358d833981519152546001600160a01b031690565b610fc6612591565b600061222e612200565b9050612239846127fe565b6000835111806122465750815b15612257576122558484612891565b505b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143805460ff166118cb57805460ff191660011781556040516122d29086906122a3908590602401612ef8565b60408051601f198184030181529190526020810180516001600160e01b0316631b2ce7f360e11b179052612891565b50805460ff191681556122e3612200565b6001600160a01b0316826001600160a01b03161461235b5760405162461bcd60e51b815260206004820152602f60248201527f45524331393637557067726164653a207570677261646520627265616b73206660448201526e75727468657220757067726164657360881b60648201526084016108d7565b6118cb8561297c565b600054610100900460ff168061237d575060005460ff16155b6123995760405162461bcd60e51b81526004016108d79061332e565b600054610100900460ff161580156123bb576000805461ffff19166101011790555b8015610fc6576000805461ff001916905550565b600054610100900460ff16806123e8575060005460ff16155b6124045760405162461bcd60e51b81526004016108d79061332e565b600054610100900460ff16158015612426576000805461ffff19166101011790555b610130805460ff191690558015610fc6576000805461ff001916905550565b600080600061245485856129bc565b9092509050600081600481111561246d5761246d613470565b14801561248b5750856001600160a01b0316826001600160a01b0316145b1561249b576001925050506110d8565b600080876001600160a01b0316631626ba7e60e01b88886040516024016124c3929190613486565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161250191906134a7565b600060405180830381855afa9150503d806000811461253c576040519150601f19603f3d011682016040523d82523d6000602084013e612541565b606091505b5091509150818015612554575080516020145b801561258557508051630b135d3f60e11b9061257990830160209081019084016134c3565b6001600160e01b031916145b98975050505050505050565b60655460408051632d77bef360e11b8152905133926001600160a01b031691635aef7de6916004808301926020929190829003018186803b1580156125d557600080fd5b505afa1580156125e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061260d919061311a565b6001600160a01b0316146117c25760405162461bcd60e51b815260206004820181905260248201527f6f6e6c79206176617461722063616e2063616c6c2074686973206d6574686f6460448201526064016108d7565b606060006126728360026134e0565b61267d906002613458565b6001600160401b0381111561269457612694612d54565b6040519080825280601f01601f1916602001820160405280156126be576020820181803683370190505b509050600360fc1b816000815181106126d9576126d96134ff565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110612708576127086134ff565b60200101906001600160f81b031916908160001a905350600061272c8460026134e0565b612737906001613458565b90505b60018111156127af576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061276b5761276b6134ff565b1a60f81b828281518110612781576127816134ff565b60200101906001600160f81b031916908160001a90535060049490941c936127a881613515565b905061273a565b5083156110d85760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016108d7565b803b6128625760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016108d7565b60008051602061358d83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060823b6128f05760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016108d7565b600080846001600160a01b03168460405161290b91906134a7565b600060405180830381855af49150503d8060008114612946576040519150601f19603f3d011682016040523d82523d6000602084013e61294b565b606091505b509150915061297382826040518060600160405280602781526020016135ad60279139612a2c565b95945050505050565b612985816127fe565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6000808251604114156129f35760208301516040840151606085015160001a6129e787828585612a65565b94509450505050612a25565b825160401415612a1d5760208301516040840151612a12868383612b48565b935093505050612a25565b506000905060025b9250929050565b60608315612a3b5750816110d8565b825115612a4b5782518084602001fd5b8160405162461bcd60e51b81526004016108d7919061301b565b6000806fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831115612a925750600090506003612b3f565b8460ff16601b14158015612aaa57508460ff16601c14155b15612abb5750600090506004612b3f565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612b0f573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116612b3857600060019250925050612b3f565b9150600090505b94509492505050565b6000806001600160ff1b03831681612b6560ff86901c601b613458565b9050612b7387828885612a65565b935093505050935093915050565b828054612b8d90613177565b90600052602060002090601f016020900481019282612baf5760008555612bf5565b82601f10612bc85782800160ff19823516178555612bf5565b82800160010185558215612bf5579182015b82811115612bf5578235825591602001919060010190612bda565b50612c01929150612caf565b5090565b828054612c1190613177565b90600052602060002090601f016020900481019282612c335760008555612bf5565b82601f10612c4c57805160ff1916838001178555612bf5565b82800160010185558215612bf5579182015b82811115612bf5578251825591602001919060010190612c5e565b508054612c8590613177565b6000825580601f10612c95575050565b601f016020900490600052602060002090810190610fc691905b5b80821115612c015760008155600101612cb0565b6001600160e01b031981168114610fc657600080fd5b600060208284031215612cec57600080fd5b81356110d881612cc4565b8015158114610fc657600080fd5b600060208284031215612d1757600080fd5b81356110d881612cf7565b6001600160a01b0381168114610fc657600080fd5b600060208284031215612d4957600080fd5b81356110d881612d22565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612d9257612d92612d54565b604052919050565b60006001600160401b03821115612db357612db3612d54565b50601f01601f191660200190565b6000612dd4612dcf84612d9a565b612d6a565b9050828152838383011115612de857600080fd5b828260208301376000602084830101529392505050565b600082601f830112612e1057600080fd5b6110d883833560208501612dc1565b60008060408385031215612e3257600080fd5b8235612e3d81612d22565b915060208301356001600160401b03811115612e5857600080fd5b612e6485828601612dff565b9150509250929050565b600060208284031215612e8057600080fd5b5035919050565b60008060208385031215612e9a57600080fd5b82356001600160401b0380821115612eb157600080fd5b818501915085601f830112612ec557600080fd5b813581811115612ed457600080fd5b866020828501011115612ee657600080fd5b60209290920196919550909350505050565b6001600160a01b0391909116815260200190565b60008060408385031215612f1f57600080fd5b823591506020830135612f3181612d22565b809150509250929050565b60008060408385031215612f4f57600080fd5b8235612f5a81612d22565b91506020830135612f3181612d22565b60008060408385031215612f7d57600080fd5b8235612f8881612d22565b915060208301356001600160401b03811115612fa357600080fd5b8301601f81018513612fb457600080fd5b612e6485823560208401612dc1565b60005b83811015612fde578181015183820152602001612fc6565b83811115611e7d5750506000910152565b60008151808452613007816020860160208601612fc3565b601f01601f19169290920160200192915050565b6020815260006110d86020830184612fef565b6000806000806080858703121561304457600080fd5b843561304f81612d22565b935060208501356001600160401b0381111561306a57600080fd5b61307687828801612dff565b949794965050505060408301359260600135919050565b85815284602082015260a0604082015260006130ac60a0830186612fef565b905083606083015260ff831660808301529695505050505050565b60208082526010908201526f14185d5cd8589b194e881c185d5cd95960821b604082015260600190565b6020808252600f908201526e1b9bdd081dda1a5d195b1a5cdd1959608a1b604082015260600190565b60006020828403121561312c57600080fd5b81516110d881612d22565b8183823760009101908152919050565b60208082526016908201527511125108185b1c9958591e481c9959da5cdd195c995960521b604082015260600190565b600181811c9082168061318b57607f821691505b602082108114156131ac57634e487b7160e01b600052602260045260246000fd5b50919050565b600080835481600182811c9150808316806131ce57607f831692505b60208084108214156131ee57634e487b7160e01b86526022600452602486fd5b818015613202576001811461321357613240565b60ff19861689528489019650613240565b60008a81526020902060005b868110156132385781548b82015290850190830161321f565b505084890196505b509498975050505050505050565b6020808252602c9082015260008051602061354d83398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c9082015260008051602061354d83398151915260408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b6000828210156132ea576132ea6132c2565b500390565b60008261330c57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561332357600080fd5b81516110d881612cf7565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b60006020828403121561338e57600080fd5b81516001600160401b038111156133a457600080fd5b8201601f810184136133b557600080fd5b80516133c3612dcf82612d9a565b8181528560208385010111156133d857600080fd5b612973826020830160208601612fc3565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b81526000835161341b816017850160208801612fc3565b7001034b99036b4b9b9b4b733903937b6329607d1b601791840191820152835161344c816028840160208801612fc3565b01602801949350505050565b6000821982111561346b5761346b6132c2565b500190565b634e487b7160e01b600052602160045260246000fd5b82815260406020820152600061349f6040830184612fef565b949350505050565b600082516134b9818460208701612fc3565b9190910192915050565b6000602082840312156134d557600080fd5b81516110d881612cc4565b60008160001904831182151516156134fa576134fa6132c2565b500290565b634e487b7160e01b600052603260045260246000fd5b600081613524576135246132c2565b50600019019056fe091941537c453917ef5b0c67f46f29060aca926ebd752fe441d5625e85c3a57646756e6374696f6e206d7573742062652063616c6c6564207468726f756768200b0f1f48172a2124d5545a38711e7e9d2e7a6c0b46b85cf1c1788e7a11ba5bf2360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212200f787e88dd0f982ce5e85d939bde07610321eaa06dd503dde7713dc0bce909d464736f6c63430008080033",
997
- "deployedBytecode": "0x6080604052600436106102185760003560e01c806301ffc9a71461021d57806302329a291461025257806308e0d29d1461027457806310154bad14610294578063188efc16146102b45780631aaff63c146102d45780631b027099146103045780631b3c90a8146103245780632236684414610339578063248a9ca31461034d578063274a827b1461036d578063291d95491461038d5780632b14dda8146103ad5780632d0e9b46146103cd5780632f2ff15d146103fa57806331b376e21461041a57806336568abe146104315780633659cfe6146104515780633af32abf146104715780633e6326fc146104915780634125f0f2146104b15780634162169f146104d2578063485cc955146104f25780634f1ef2861461051257806354f9f7a3146105255780635aef7de6146105525780635c975abb146105725780635f539d691461058b57806361320040146105ab57806367c75937146105e257806391d1485414610619578063a217fddf14610639578063b2a1de221461064e578063b30f7e7f14610665578063c375c2ef1461067c578063c6a276c21461069c578063c73cc4ae146106bc578063d547741f146106dc578063d6cd9473146106fc578063e1758bd814610711578063e1e360ba14610726578063e63ab1e91461075d578063e737031a1461077f578063f653b81e1461079f578063f85ebeb1146107d0578063fe575a87146107f0578063fff930d414610810575b600080fd5b34801561022957600080fd5b5061023d610238366004612cda565b610830565b60405190151581526020015b60405180910390f35b34801561025e57600080fd5b5061027261026d366004612d05565b610867565b005b34801561028057600080fd5b5061027261028f366004612d37565b61089a565b3480156102a057600080fd5b506102726102af366004612d37565b610975565b3480156102c057600080fd5b506102726102cf366004612d37565b6109bc565b3480156102e057600080fd5b506102f660008051602061352d83398151915281565b604051908152602001610249565b34801561031057600080fd5b5061027261031f366004612e1f565b610a4a565b34801561033057600080fd5b50610272610a97565b34801561034557600080fd5b50600161023d565b34801561035957600080fd5b506102f6610368366004612e6e565b610bdc565b34801561037957600080fd5b50610272610388366004612e87565b610bf1565b34801561039957600080fd5b506102726103a8366004612d37565b610cf7565b3480156103b957600080fd5b506102726103c8366004612d37565b610d3d565b3480156103d957600080fd5b506103ed6103e8366004612d37565b610e03565b6040516102499190612ef8565b34801561040657600080fd5b50610272610415366004612f0c565b610e69565b34801561042657600080fd5b506102f66101645481565b34801561043d57600080fd5b5061027261044c366004612f0c565b610e86565b34801561045d57600080fd5b5061027261046c366004612d37565b610f00565b34801561047d57600080fd5b5061023d61048c366004612d37565b610fc9565b34801561049d57600080fd5b506067546103ed906001600160a01b031681565b3480156104bd57600080fd5b50610168546103ed906001600160a01b031681565b3480156104de57600080fd5b506065546103ed906001600160a01b031681565b3480156104fe57600080fd5b5061027261050d366004612f3c565b6110e8565b610272610520366004612f6a565b611225565b34801561053157600080fd5b50610545610540366004612d37565b6112db565b604051610249919061301b565b34801561055e57600080fd5b506066546103ed906001600160a01b031681565b34801561057e57600080fd5b506101305460ff1661023d565b34801561059757600080fd5b506102726105a6366004612d37565b611427565b3480156105b757600080fd5b506103ed6105c6366004612d37565b610167602052600090815260409020546001600160a01b031681565b3480156105ee57600080fd5b506103ed6105fd366004612e6e565b610166602052600090815260409020546001600160a01b031681565b34801561062557600080fd5b5061023d610634366004612f0c565b61150d565b34801561064557600080fd5b506102f6600081565b34801561065a57600080fd5b506102f66101625481565b34801561067157600080fd5b506102f66101635481565b34801561068857600080fd5b50610272610697366004612d37565b611538565b3480156106a857600080fd5b506102726106b7366004612d37565b6115b6565b3480156106c857600080fd5b5061023d6106d7366004612d37565b6116b1565b3480156106e857600080fd5b506102726106f7366004612f0c565b611778565b34801561070857600080fd5b50610272611795565b34801561071d57600080fd5b506103ed6117c4565b34801561073257600080fd5b506102f6610741366004612d37565b6001600160a01b03166000908152610165602052604090205490565b34801561076957600080fd5b506102f660008051602061356d83398151915281565b34801561078b57600080fd5b5061027261079a36600461302e565b611860565b3480156107ab57600080fd5b506107bf6107ba366004612d37565b6118d2565b60405161024995949392919061308d565b3480156107dc57600080fd5b506102726107eb366004612f6a565b61198e565b3480156107fc57600080fd5b5061023d61080b366004612d37565b611b15565b34801561081c57600080fd5b5061027261082b366004612e6e565b611b88565b60006001600160e01b03198216637965db0b60e01b148061086157506301ffc9a760e01b6001600160e01b03198316145b92915050565b60008051602061356d8339815191526108808133611bba565b81156108925761088e611c1e565b5050565b61088e611c8f565b60008051602061352d8339815191526108b38133611bba565b6101305460ff16156108e05760405162461bcd60e51b81526004016108d7906130c7565b60405180910390fd5b6001600160a01b0382166000908152610165602052604090206004015460ff1660011461091f5760405162461bcd60e51b81526004016108d7906130f1565b6001600160a01b03821660008181526101656020908152604091829020429081905591519182527fb2a82fce6d8c7a633efe9579f77b4edb96bfdf171a49bfc2ce666dc543a1f500910160405180910390a25050565b60008051602061352d83398151915261098e8133611bba565b6101305460ff16156109b25760405162461bcd60e51b81526004016108d7906130c7565b61088e8246611d0b565b60008051602061352d8339815191526109d58133611bba565b6101305460ff16156109f95760405162461bcd60e51b81526004016108d7906130c7565b6001600160a01b03821660008181526101656020526040808220600401805460ff191660ff179055517f44d5fe68b00f68950fb9c1ff0a61ef7f747b1a36359a7e3a7f3324db4b8789679190a25050565b60008051602061352d833981519152610a638133611bba565b6101305460ff1615610a875760405162461bcd60e51b81526004016108d7906130c7565b610a92838346611dd8565b505050565b60675460405163bf40fac160e01b815260206004820152600a60248201526921a7a72a2927a62622a960b11b60448201526001600160a01b039091169063bf40fac19060640160206040518083038186803b158015610af557600080fd5b505afa158015610b09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b2d919061311a565b606580546001600160a01b0319166001600160a01b0392909216918217905560408051632d77bef360e11b81529051635aef7de691600480820192602092909190829003018186803b158015610b8257600080fd5b505afa158015610b96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bba919061311a565b606680546001600160a01b0319166001600160a01b0392909216919091179055565b600090815260fe602052604090206001015490565b610bfa33610fc9565b610c165760405162461bcd60e51b81526004016108d7906130f1565b60008282604051610c28929190613137565b6040805191829003909120600081815261016660205291909120549091506001600160a01b031615610c6c5760405162461bcd60e51b81526004016108d790613147565b33600090815261016560205260408082209051610c8c91600201906131b2565b60408051918290039091206000818152610166602090815283822080546001600160a01b0319169055338252610165905291909120909150610cd2906002018585612b81565b505060009081526101666020526040902080546001600160a01b031916331790555050565b60008051602061352d833981519152610d108133611bba565b6101305460ff1615610d345760405162461bcd60e51b81526004016108d7906130c7565b61088e82611e83565b6000610d498133611bba565b6067546001600160a01b031615610d985760405162461bcd60e51b8152602060048201526013602482015272185b1c9958591e481a5b9a5d1a585b1a5e9959606a1b60448201526064016108d7565b610da1826120ea565b606654610db9906000906001600160a01b031661210d565b606654610dde9060008051602061356d833981519152906001600160a01b031661210d565b60665461088e9060008051602061352d833981519152906001600160a01b031661210d565b6000610e0e82610fc9565b15610e17575090565b6001600160a01b0380831660009081526101676020526040902054610e3c9116610fc9565b15610e6157506001600160a01b03908116600090815261016760205260409020541690565b506000919050565b610e7282610bdc565b610e7c8133611bba565b610a928383612113565b6001600160a01b0381163314610ef65760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016108d7565b61088e8282612199565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610f495760405162461bcd60e51b81526004016108d79061324e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610f7b612200565b6001600160a01b031614610fa15760405162461bcd60e51b81526004016108d790613288565b610faa8161221c565b60408051600080825260208201909252610fc691839190612224565b50565b6001600160a01b0381166000908152610165602052604081205481906201518090610ff490426132d8565b610ffe91906132ef565b905061016454811115801561103257506001600160a01b0383166000908152610165602052604090206004015460ff166001145b156110405750600192915050565b610168546001600160a01b0316156110df5761016854604051633af32abf60e01b81526001600160a01b0390911690633af32abf90611083908690600401612ef8565b60206040518083038186803b15801561109b57600080fd5b505afa9250505080156110cb575060408051601f3d908101601f191682019092526110c891810190613311565b60015b6110d85750600092915050565b9392505050565b50600092915050565b600054610100900460ff1680611101575060005460ff16155b61111d5760405162461bcd60e51b81526004016108d79061332e565b600054610100900460ff1615801561113f576000805461ffff19166101011790555b611147612364565b61114f6123cf565b6104476101645560665461116e906000906001600160a01b031661210d565b61117960008461210d565b60665461119e9060008051602061356d833981519152906001600160a01b031661210d565b6111b660008051602061356d8339815191528461210d565b6111ce60008051602061352d8339815191528461210d565b6066546111f39060008051602061352d833981519152906001600160a01b031661210d565b61016880546001600160a01b0319166001600160a01b0384161790558015610a92576000805461ff0019169055505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561126e5760405162461bcd60e51b81526004016108d79061324e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166112a0612200565b6001600160a01b0316146112c65760405162461bcd60e51b81526004016108d790613288565b6112cf8261221c565b61088e82826001612224565b336000908152610165602052604090206002018054606091906112fd90613177565b80601f016020809104026020016040519081016040528092919081815260200182805461132990613177565b80156113765780601f1061134b57610100808354040283529160200191611376565b820191906000526020600020905b81548152906001019060200180831161135957829003601f168201915b5050505050905060008151111561138c57919050565b610168546040516354f9f7a360e01b81526001600160a01b03909116906354f9f7a3906113bd908590600401612ef8565b60006040518083038186803b1580156113d557600080fd5b505afa92505050801561140a57506040513d6000823e601f3d908101601f19168201604052611407919081019061337c565b60015b61086157505060408051602081019091526000815290565b919050565b60008051602061352d8339815191526114408133611bba565b6101305460ff16156114645760405162461bcd60e51b81526004016108d7906130c7565b813b6114b25760405162461bcd60e51b815260206004820152601f60248201527f476976656e2061646472657373206973206e6f74206120636f6e74726163740060448201526064016108d7565b6114bc8246611d0b565b6001600160a01b03821660008181526101656020526040808220600401805460ff19166002179055517f89c66952b48f3e96bf1d8ba1b63189520fd988a6979b8b740bd5c5d8dc53e2059190a25050565b600091825260fe602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60008051602061352d8339815191526115518133611bba565b6101305460ff16156115755760405162461bcd60e51b81526004016108d7906130c7565b61157e82611e83565b6040516001600160a01b038316907f8d30d41865a0b811b9545d879520d2dde9f4cc49e4241f486ad9752bc904b56590600090a25050565b60008051602061352d8339815191526115cf8133611bba565b6101305460ff16156115f35760405162461bcd60e51b81526004016108d7906130c7565b610168546001600160a01b03161561166357610168546040516363513b6160e11b81526001600160a01b039091169063c6a276c290611636908590600401612ef8565b600060405180830381600087803b15801561165057600080fd5b505af1925050508015611661575060015b505b6001600160a01b03821660008181526101656020526040808220600401805460ff19169055517f1747ca720b1a174a464b6513ace29b1d3190b5f632b9f34147017c81425bfde89190a25050565b6001600160a01b0381166000908152610165602052604081206004015460ff16600214156116e157506001919050565b610168546001600160a01b031615610e61576101685460405163639e625760e11b81526001600160a01b039091169063c73cc4ae90611724908590600401612ef8565b60206040518083038186803b15801561173c57600080fd5b505afa92505050801561176c575060408051601f3d908101601f1916820190925261176991810190613311565b60015b61086157506000919050565b61178182610bdc565b61178b8133611bba565b610a928383612199565b6101305460ff16156117b95760405162461bcd60e51b81526004016108d7906130c7565b6117c233611e83565b565b60675460405163bf40fac160e01b815260206004820152600a60248201526923a7a7a22227a62620a960b11b60448201526000916001600160a01b03169063bf40fac19060640160206040518083038186803b15801561182357600080fd5b505afa158015611837573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185b919061311a565b905090565b60008051602061352d8339815191526118798133611bba565b6101305460ff161561189d5760405162461bcd60e51b81526004016108d7906130c7565b6118a8858585611dd8565b81156118cb576001600160a01b0385166000908152610165602052604090208290555b5050505050565b61016560205260009081526040902080546001820154600283018054929391926118fb90613177565b80601f016020809104026020016040519081016040528092919081815260200182805461192790613177565b80156119745780601f1061194957610100808354040283529160200191611974565b820191906000526020600020905b81548152906001019060200180831161195757829003601f168201915b50505050600383015460049093015491929160ff16905085565b61199733610fc9565b6119b35760405162461bcd60e51b81526004016108d7906130f1565b6119bc82610fc9565b1580156119cf57506119cd82611b15565b155b611a0d5760405162461bcd60e51b815260206004820152600f60248201526e1a5b9d985b1a59081858d8dbdd5b9d608a1b60448201526064016108d7565b6001600160a01b03828116600090815261016760205260409020541615611a6a5760405162461bcd60e51b8152602060048201526011602482015270185b1c9958591e4818dbdb9b9958dd1959607a1b60448201526064016108d7565b604080513360208201526001600160a01b03841691810191909152611aaa9083906060016040516020818303038152906040528051906020012083612445565b611aea5760405162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b60448201526064016108d7565b506001600160a01b031660009081526101676020526040902080546001600160a01b03191633179055565b6001600160a01b0381166000908152610165602052604081206004015460ff9081161415611b4557506001919050565b610168546001600160a01b031615611422576101685460405163fe575a8760e01b81526001600160a01b039091169063fe575a8790611724908590600401612ef8565b6101305460ff1615611bac5760405162461bcd60e51b81526004016108d7906130c7565b611bb4612591565b61016455565b611bc4828261150d565b61088e57611bdc816001600160a01b03166014612663565b611be7836020612663565b604051602001611bf89291906133e9565b60408051601f198184030181529082905262461bcd60e51b82526108d79160040161301b565b6101305460ff1615611c425760405162461bcd60e51b81526004016108d7906130c7565b610130805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611c783390565b604051611c859190612ef8565b60405180910390a1565b6101305460ff16611cd95760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016108d7565b610130805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33611c78565b60016101626000828254611d1f9190613458565b90915550506001600160a01b03821660009081526101656020908152604080832060048101805460ff19166001908117909155429082018190558155600301849055610167909152902080546001600160a01b0319169055611d81823b151590565b15611da05760016101636000828254611d9a9190613458565b90915550505b6040516001600160a01b038316907fee1504a83b6d4a361f4c1dc78ab59bfa30d6a3b6612c403e86bb01ef2984295f90600090a25050565b815160208084019190912060008181526101669092526040909120546001600160a01b031615611e1a5760405162461bcd60e51b81526004016108d790613147565b6001600160a01b0384166000908152610165602090815260409091208451611e4a92600290920191860190612c05565b5060008181526101666020526040902080546001600160a01b0319166001600160a01b038616179055611e7d8483611d0b565b50505050565b60016101626000828254611e9791906132d8565b9091555050803b15611f2c5760016101636000828254611eb791906132d8565b9091555050610168546001600160a01b031615611f2c576101685460405163c375c2ef60e01b81526001600160a01b039091169063c375c2ef90611eff908490600401612ef8565b600060405180830381600087803b158015611f1957600080fd5b505af1925050508015611f2a575060015b505b610168546001600160a01b031615611f9c576101685460405163291d954960e01b81526001600160a01b039091169063291d954990611f6f908490600401612ef8565b600060405180830381600087803b158015611f8957600080fd5b505af1925050508015611f9a575060015b505b6001600160a01b0381166000908152610165602052604081206002018054611fc390613177565b80601f0160208091040260200160405190810160405280929190818152602001828054611fef90613177565b801561203c5780601f106120115761010080835404028352916020019161203c565b820191906000526020600020905b81548152906001019060200180831161201f57829003601f168201915b505083516020808601919091206001600160a01b03881660009081526101659092526040822082815560018101839055959650949350915061208390506002830182612c79565b506000600382018190556004909101805460ff19169055818152610166602052604080822080546001600160a01b0319169055516001600160a01b038516917f270d9b30cf5b0793bbfd54c9d5b94aeb49462b8148399000265144a8722da6b691a2505050565b606780546001600160a01b0319166001600160a01b038316179055610fc6610a97565b61088e82825b61211d828261150d565b61088e57600082815260fe602090815260408083206001600160a01b03851684529091529020805460ff191660011790556121553390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6121a3828261150d565b1561088e57600082815260fe602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60008051602061358d833981519152546001600160a01b031690565b610fc6612591565b600061222e612200565b9050612239846127fe565b6000835111806122465750815b15612257576122558484612891565b505b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143805460ff166118cb57805460ff191660011781556040516122d29086906122a3908590602401612ef8565b60408051601f198184030181529190526020810180516001600160e01b0316631b2ce7f360e11b179052612891565b50805460ff191681556122e3612200565b6001600160a01b0316826001600160a01b03161461235b5760405162461bcd60e51b815260206004820152602f60248201527f45524331393637557067726164653a207570677261646520627265616b73206660448201526e75727468657220757067726164657360881b60648201526084016108d7565b6118cb8561297c565b600054610100900460ff168061237d575060005460ff16155b6123995760405162461bcd60e51b81526004016108d79061332e565b600054610100900460ff161580156123bb576000805461ffff19166101011790555b8015610fc6576000805461ff001916905550565b600054610100900460ff16806123e8575060005460ff16155b6124045760405162461bcd60e51b81526004016108d79061332e565b600054610100900460ff16158015612426576000805461ffff19166101011790555b610130805460ff191690558015610fc6576000805461ff001916905550565b600080600061245485856129bc565b9092509050600081600481111561246d5761246d613470565b14801561248b5750856001600160a01b0316826001600160a01b0316145b1561249b576001925050506110d8565b600080876001600160a01b0316631626ba7e60e01b88886040516024016124c3929190613486565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161250191906134a7565b600060405180830381855afa9150503d806000811461253c576040519150601f19603f3d011682016040523d82523d6000602084013e612541565b606091505b5091509150818015612554575080516020145b801561258557508051630b135d3f60e11b9061257990830160209081019084016134c3565b6001600160e01b031916145b98975050505050505050565b60655460408051632d77bef360e11b8152905133926001600160a01b031691635aef7de6916004808301926020929190829003018186803b1580156125d557600080fd5b505afa1580156125e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061260d919061311a565b6001600160a01b0316146117c25760405162461bcd60e51b815260206004820181905260248201527f6f6e6c79206176617461722063616e2063616c6c2074686973206d6574686f6460448201526064016108d7565b606060006126728360026134e0565b61267d906002613458565b6001600160401b0381111561269457612694612d54565b6040519080825280601f01601f1916602001820160405280156126be576020820181803683370190505b509050600360fc1b816000815181106126d9576126d96134ff565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110612708576127086134ff565b60200101906001600160f81b031916908160001a905350600061272c8460026134e0565b612737906001613458565b90505b60018111156127af576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061276b5761276b6134ff565b1a60f81b828281518110612781576127816134ff565b60200101906001600160f81b031916908160001a90535060049490941c936127a881613515565b905061273a565b5083156110d85760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016108d7565b803b6128625760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016108d7565b60008051602061358d83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060823b6128f05760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016108d7565b600080846001600160a01b03168460405161290b91906134a7565b600060405180830381855af49150503d8060008114612946576040519150601f19603f3d011682016040523d82523d6000602084013e61294b565b606091505b509150915061297382826040518060600160405280602781526020016135ad60279139612a2c565b95945050505050565b612985816127fe565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6000808251604114156129f35760208301516040840151606085015160001a6129e787828585612a65565b94509450505050612a25565b825160401415612a1d5760208301516040840151612a12868383612b48565b935093505050612a25565b506000905060025b9250929050565b60608315612a3b5750816110d8565b825115612a4b5782518084602001fd5b8160405162461bcd60e51b81526004016108d7919061301b565b6000806fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831115612a925750600090506003612b3f565b8460ff16601b14158015612aaa57508460ff16601c14155b15612abb5750600090506004612b3f565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612b0f573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116612b3857600060019250925050612b3f565b9150600090505b94509492505050565b6000806001600160ff1b03831681612b6560ff86901c601b613458565b9050612b7387828885612a65565b935093505050935093915050565b828054612b8d90613177565b90600052602060002090601f016020900481019282612baf5760008555612bf5565b82601f10612bc85782800160ff19823516178555612bf5565b82800160010185558215612bf5579182015b82811115612bf5578235825591602001919060010190612bda565b50612c01929150612caf565b5090565b828054612c1190613177565b90600052602060002090601f016020900481019282612c335760008555612bf5565b82601f10612c4c57805160ff1916838001178555612bf5565b82800160010185558215612bf5579182015b82811115612bf5578251825591602001919060010190612c5e565b508054612c8590613177565b6000825580601f10612c95575050565b601f016020900490600052602060002090810190610fc691905b5b80821115612c015760008155600101612cb0565b6001600160e01b031981168114610fc657600080fd5b600060208284031215612cec57600080fd5b81356110d881612cc4565b8015158114610fc657600080fd5b600060208284031215612d1757600080fd5b81356110d881612cf7565b6001600160a01b0381168114610fc657600080fd5b600060208284031215612d4957600080fd5b81356110d881612d22565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612d9257612d92612d54565b604052919050565b60006001600160401b03821115612db357612db3612d54565b50601f01601f191660200190565b6000612dd4612dcf84612d9a565b612d6a565b9050828152838383011115612de857600080fd5b828260208301376000602084830101529392505050565b600082601f830112612e1057600080fd5b6110d883833560208501612dc1565b60008060408385031215612e3257600080fd5b8235612e3d81612d22565b915060208301356001600160401b03811115612e5857600080fd5b612e6485828601612dff565b9150509250929050565b600060208284031215612e8057600080fd5b5035919050565b60008060208385031215612e9a57600080fd5b82356001600160401b0380821115612eb157600080fd5b818501915085601f830112612ec557600080fd5b813581811115612ed457600080fd5b866020828501011115612ee657600080fd5b60209290920196919550909350505050565b6001600160a01b0391909116815260200190565b60008060408385031215612f1f57600080fd5b823591506020830135612f3181612d22565b809150509250929050565b60008060408385031215612f4f57600080fd5b8235612f5a81612d22565b91506020830135612f3181612d22565b60008060408385031215612f7d57600080fd5b8235612f8881612d22565b915060208301356001600160401b03811115612fa357600080fd5b8301601f81018513612fb457600080fd5b612e6485823560208401612dc1565b60005b83811015612fde578181015183820152602001612fc6565b83811115611e7d5750506000910152565b60008151808452613007816020860160208601612fc3565b601f01601f19169290920160200192915050565b6020815260006110d86020830184612fef565b6000806000806080858703121561304457600080fd5b843561304f81612d22565b935060208501356001600160401b0381111561306a57600080fd5b61307687828801612dff565b949794965050505060408301359260600135919050565b85815284602082015260a0604082015260006130ac60a0830186612fef565b905083606083015260ff831660808301529695505050505050565b60208082526010908201526f14185d5cd8589b194e881c185d5cd95960821b604082015260600190565b6020808252600f908201526e1b9bdd081dda1a5d195b1a5cdd1959608a1b604082015260600190565b60006020828403121561312c57600080fd5b81516110d881612d22565b8183823760009101908152919050565b60208082526016908201527511125108185b1c9958591e481c9959da5cdd195c995960521b604082015260600190565b600181811c9082168061318b57607f821691505b602082108114156131ac57634e487b7160e01b600052602260045260246000fd5b50919050565b600080835481600182811c9150808316806131ce57607f831692505b60208084108214156131ee57634e487b7160e01b86526022600452602486fd5b818015613202576001811461321357613240565b60ff19861689528489019650613240565b60008a81526020902060005b868110156132385781548b82015290850190830161321f565b505084890196505b509498975050505050505050565b6020808252602c9082015260008051602061354d83398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c9082015260008051602061354d83398151915260408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b6000828210156132ea576132ea6132c2565b500390565b60008261330c57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561332357600080fd5b81516110d881612cf7565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b60006020828403121561338e57600080fd5b81516001600160401b038111156133a457600080fd5b8201601f810184136133b557600080fd5b80516133c3612dcf82612d9a565b8181528560208385010111156133d857600080fd5b612973826020830160208601612fc3565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b81526000835161341b816017850160208801612fc3565b7001034b99036b4b9b9b4b733903937b6329607d1b601791840191820152835161344c816028840160208801612fc3565b01602801949350505050565b6000821982111561346b5761346b6132c2565b500190565b634e487b7160e01b600052602160045260246000fd5b82815260406020820152600061349f6040830184612fef565b949350505050565b600082516134b9818460208701612fc3565b9190910192915050565b6000602082840312156134d557600080fd5b81516110d881612cc4565b60008160001904831182151516156134fa576134fa6132c2565b500290565b634e487b7160e01b600052603260045260246000fd5b600081613524576135246132c2565b50600019019056fe091941537c453917ef5b0c67f46f29060aca926ebd752fe441d5625e85c3a57646756e6374696f6e206d7573742062652063616c6c6564207468726f756768200b0f1f48172a2124d5545a38711e7e9d2e7a6c0b46b85cf1c1788e7a11ba5bf2360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212200f787e88dd0f982ce5e85d939bde07610321eaa06dd503dde7713dc0bce909d464736f6c63430008080033",
1027
+ "bytecode": "0x60a06040523060601b60805234801561001757600080fd5b5060805160601c613a8061004b60003960008181610e9b01528181610edb0152818161125401526112940152613a806000f3fe60806040526004361061022e5760003560e01c806301ffc9a71461023357806302329a291461026857806308e0d29d1461028a57806310154bad146102aa578063188efc16146102ca5780631aaff63c146102ea5780631b0270991461031a5780631b3c90a81461033a578063223668441461034f578063248a9ca314610363578063274a827b14610383578063291d9549146103a35780632b14dda8146103c35780632d0e9b46146103e35780632f2ff15d1461041057806331b376e21461043057806336568abe146104475780633659cfe61461046757806337a1a987146104875780633af32abf146104a75780633e6326fc146104c75780634125f0f2146104e75780634162169f14610508578063485cc955146105285780634f1ef2861461054857806354f9f7a31461055b5780635aef7de6146105885780635c975abb146105a85780635f539d69146105c157806361320040146105e157806367c759371461061857806391d148541461064f578063a217fddf1461066f578063b2a1de2214610684578063b30f7e7f1461069b578063c375c2ef146106b2578063c6a276c2146106d2578063c73cc4ae146106f2578063d326281614610712578063d547741f14610732578063d6cd947314610752578063e1758bd814610767578063e1e360ba1461077c578063e63ab1e9146107b3578063e737031a146107d5578063f653b81e146107f5578063f85ebeb114610826578063fe575a8714610846578063fff930d414610866575b600080fd5b34801561023f57600080fd5b5061025361024e3660046130fc565b610886565b60405190151581526020015b60405180910390f35b34801561027457600080fd5b50610288610283366004613127565b6108bd565b005b34801561029657600080fd5b506102886102a5366004613159565b6108f0565b3480156102b657600080fd5b506102886102c5366004613159565b6109cb565b3480156102d657600080fd5b506102886102e5366004613159565b610a12565b3480156102f657600080fd5b5061030c6000805160206139a483398151915281565b60405190815260200161025f565b34801561032657600080fd5b50610288610335366004613241565b610aa0565b34801561034657600080fd5b50610288610aed565b34801561035b57600080fd5b506001610253565b34801561036f57600080fd5b5061030c61037e366004613290565b610c32565b34801561038f57600080fd5b5061028861039e3660046132ea565b610c47565b3480156103af57600080fd5b506102886103be366004613159565b610c87565b3480156103cf57600080fd5b506102886103de366004613159565b610ccd565b3480156103ef57600080fd5b506104036103fe366004613159565b610d93565b60405161025f919061332b565b34801561041c57600080fd5b5061028861042b36600461333f565b610df9565b34801561043c57600080fd5b5061030c6101645481565b34801561045357600080fd5b5061028861046236600461333f565b610e16565b34801561047357600080fd5b50610288610482366004613159565b610e90565b34801561049357600080fd5b506102886104a2366004613159565b610f59565b3480156104b357600080fd5b506102536104c2366004613159565b610fed565b3480156104d357600080fd5b50606754610403906001600160a01b031681565b3480156104f357600080fd5b5061016854610403906001600160a01b031681565b34801561051457600080fd5b50606554610403906001600160a01b031681565b34801561053457600080fd5b5061028861054336600461336f565b61110c565b61028861055636600461339d565b611249565b34801561056757600080fd5b5061057b610576366004613159565b6112ff565b60405161025f919061344e565b34801561059457600080fd5b50606654610403906001600160a01b031681565b3480156105b457600080fd5b506101305460ff16610253565b3480156105cd57600080fd5b506102886105dc366004613159565b6114a3565b3480156105ed57600080fd5b506104036105fc366004613159565b610167602052600090815260409020546001600160a01b031681565b34801561062457600080fd5b50610403610633366004613290565b610166602052600090815260409020546001600160a01b031681565b34801561065b57600080fd5b5061025361066a36600461333f565b611589565b34801561067b57600080fd5b5061030c600081565b34801561069057600080fd5b5061030c6101625481565b3480156106a757600080fd5b5061030c6101635481565b3480156106be57600080fd5b506102886106cd366004613159565b6115b4565b3480156106de57600080fd5b506102886106ed366004613159565b6116a8565b3480156106fe57600080fd5b5061025361070d366004613159565b6117a9565b34801561071e57600080fd5b5061028861072d366004613461565b611870565b34801561073e57600080fd5b5061028861074d36600461333f565b6118cf565b34801561075e57600080fd5b506102886118ec565b34801561077357600080fd5b50610403611940565b34801561078857600080fd5b5061030c610797366004613159565b6001600160a01b03166000908152610165602052604090205490565b3480156107bf57600080fd5b5061030c6000805160206139e483398151915281565b3480156107e157600080fd5b506102886107f03660046134b5565b6119dc565b34801561080157600080fd5b50610815610810366004613159565b611a4e565b60405161025f959493929190613514565b34801561083257600080fd5b5061028861084136600461339d565b611b0a565b34801561085257600080fd5b50610253610861366004613159565b611cd3565b34801561087257600080fd5b50610288610881366004613290565b611d46565b60006001600160e01b03198216637965db0b60e01b14806108b757506301ffc9a760e01b6001600160e01b03198316145b92915050565b6000805160206139e48339815191526108d68133611d78565b81156108e8576108e4611ddc565b5050565b6108e4611e4d565b6000805160206139a48339815191526109098133611d78565b6101305460ff16156109365760405162461bcd60e51b815260040161092d9061354e565b60405180910390fd5b6001600160a01b0382166000908152610165602052604090206004015460ff166001146109755760405162461bcd60e51b815260040161092d90613578565b6001600160a01b03821660008181526101656020908152604091829020429081905591519182527fb2a82fce6d8c7a633efe9579f77b4edb96bfdf171a49bfc2ce666dc543a1f500910160405180910390a25050565b6000805160206139a48339815191526109e48133611d78565b6101305460ff1615610a085760405162461bcd60e51b815260040161092d9061354e565b6108e48246611ec9565b6000805160206139a4833981519152610a2b8133611d78565b6101305460ff1615610a4f5760405162461bcd60e51b815260040161092d9061354e565b6001600160a01b03821660008181526101656020526040808220600401805460ff191660ff179055517f44d5fe68b00f68950fb9c1ff0a61ef7f747b1a36359a7e3a7f3324db4b8789679190a25050565b6000805160206139a4833981519152610ab98133611d78565b6101305460ff1615610add5760405162461bcd60e51b815260040161092d9061354e565b610ae8838346611ff8565b505050565b60675460405163bf40fac160e01b815260206004820152600a60248201526921a7a72a2927a62622a960b11b60448201526001600160a01b039091169063bf40fac19060640160206040518083038186803b158015610b4b57600080fd5b505afa158015610b5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8391906135a1565b606580546001600160a01b0319166001600160a01b0392909216918217905560408051632d77bef360e11b81529051635aef7de691600480820192602092909190829003018186803b158015610bd857600080fd5b505afa158015610bec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1091906135a1565b606680546001600160a01b0319166001600160a01b0392909216919091179055565b600090815260fe602052604090206001015490565b6108e43383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061209d92505050565b6000805160206139a4833981519152610ca08133611d78565b6101305460ff1615610cc45760405162461bcd60e51b815260040161092d9061354e565b6108e482612337565b6000610cd98133611d78565b6067546001600160a01b031615610d285760405162461bcd60e51b8152602060048201526013602482015272185b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015260640161092d565b610d3182612580565b606654610d49906000906001600160a01b03166125a3565b606654610d6e906000805160206139e4833981519152906001600160a01b03166125a3565b6066546108e4906000805160206139a4833981519152906001600160a01b03166125a3565b6000610d9e82610fed565b15610da7575090565b6001600160a01b0380831660009081526101676020526040902054610dcc9116610fed565b15610df157506001600160a01b03908116600090815261016760205260409020541690565b506000919050565b610e0282610c32565b610e0c8133611d78565b610ae883836125a9565b6001600160a01b0381163314610e865760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b606482015260840161092d565b6108e4828261262f565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610ed95760405162461bcd60e51b815260040161092d906135be565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610f0b612696565b6001600160a01b031614610f315760405162461bcd60e51b815260040161092d906135f8565b610f3a816126b2565b60408051600080825260208201909252610f56918391906126ba565b50565b6001600160a01b038181166000908152610167602052604090205416331480610f8a5750336001600160a01b038216145b610fc55760405162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015260640161092d565b6001600160a01b031660009081526101676020526040902080546001600160a01b0319169055565b6001600160a01b03811660009081526101656020526040812054819062015180906110189042613648565b611022919061365f565b905061016454811115801561105657506001600160a01b0383166000908152610165602052604090206004015460ff166001145b156110645750600192915050565b610168546001600160a01b0316156111035761016854604051633af32abf60e01b81526001600160a01b0390911690633af32abf906110a790869060040161332b565b60206040518083038186803b1580156110bf57600080fd5b505afa9250505080156110ef575060408051601f3d908101601f191682019092526110ec91810190613681565b60015b6110fc5750600092915050565b9392505050565b50600092915050565b600054610100900460ff1680611125575060005460ff16155b6111415760405162461bcd60e51b815260040161092d9061369e565b600054610100900460ff16158015611163576000805461ffff19166101011790555b61116b6127fa565b611173612865565b61044761016455606654611192906000906001600160a01b03166125a3565b61119d6000846125a3565b6066546111c2906000805160206139e4833981519152906001600160a01b03166125a3565b6111da6000805160206139e4833981519152846125a3565b6111f26000805160206139a4833981519152846125a3565b606654611217906000805160206139a4833981519152906001600160a01b03166125a3565b61016880546001600160a01b0319166001600160a01b0384161790558015610ae8576000805461ff0019169055505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156112925760405162461bcd60e51b815260040161092d906135be565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166112c4612696565b6001600160a01b0316146112ea5760405162461bcd60e51b815260040161092d906135f8565b6112f3826126b2565b6108e4828260016126ba565b6001600160a01b03811660009081526101656020526040902060020180546060919061132a906136ec565b80601f0160208091040260200160405190810160405280929190818152602001828054611356906136ec565b80156113a35780601f10611378576101008083540402835291602001916113a3565b820191906000526020600020905b81548152906001019060200180831161138657829003601f168201915b505083516020808601919091206000818152610166909252604090912054949550936001600160a01b038781169116141592506113e39150505750919050565b610168546001600160a01b03161561148d57610168546040516354f9f7a360e01b81526001600160a01b03909116906354f9f7a39061142690869060040161332b565b60006040518083038186803b15801561143e57600080fd5b505afa92505050801561147357506040513d6000823e601f3d908101601f191682016040526114709190810190613727565b60015b6110fc575050604080516020810190915260008152919050565b5050604080516020810190915260008152919050565b6000805160206139a48339815191526114bc8133611d78565b6101305460ff16156114e05760405162461bcd60e51b815260040161092d9061354e565b813b61152e5760405162461bcd60e51b815260206004820152601f60248201527f476976656e2061646472657373206973206e6f74206120636f6e747261637400604482015260640161092d565b6115388246611ec9565b6001600160a01b03821660008181526101656020526040808220600401805460ff19166002179055517f89c66952b48f3e96bf1d8ba1b63189520fd988a6979b8b740bd5c5d8dc53e2059190a25050565b600091825260fe602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6000805160206139a48339815191526115cd8133611d78565b6101305460ff16156115f15760405162461bcd60e51b815260040161092d9061354e565b610168546001600160a01b031615611667576101685460405163c375c2ef60e01b81526001600160a01b039091169063c375c2ef9061163490859060040161332b565b600060405180830381600087803b15801561164e57600080fd5b505af1158015611662573d6000803e3d6000fd5b505050505b61167082612337565b6040516001600160a01b038316907f8d30d41865a0b811b9545d879520d2dde9f4cc49e4241f486ad9752bc904b56590600090a25050565b6000805160206139a48339815191526116c18133611d78565b6101305460ff16156116e55760405162461bcd60e51b815260040161092d9061354e565b610168546001600160a01b03161561175b57610168546040516363513b6160e11b81526001600160a01b039091169063c6a276c29061172890859060040161332b565b600060405180830381600087803b15801561174257600080fd5b505af1158015611756573d6000803e3d6000fd5b505050505b6001600160a01b03821660008181526101656020526040808220600401805460ff19169055517f1747ca720b1a174a464b6513ace29b1d3190b5f632b9f34147017c81425bfde89190a25050565b6001600160a01b0381166000908152610165602052604081206004015460ff16600214156117d957506001919050565b610168546001600160a01b031615610df1576101685460405163639e625760e11b81526001600160a01b039091169063c73cc4ae9061181c90859060040161332b565b60206040518083038186803b15801561183457600080fd5b505afa925050508015611864575060408051601f3d908101601f1916820190925261186191810190613681565b60015b6108b757506000919050565b6000805160206139a48339815191526118898133611d78565b6118c98484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061209d92505050565b50505050565b6118d882610c32565b6118e28133611d78565b610ae8838361262f565b6101305460ff16156119105760405162461bcd60e51b815260040161092d9061354e565b61191933610fed565b6119355760405162461bcd60e51b815260040161092d90613578565b61193e33612337565b565b60675460405163bf40fac160e01b815260206004820152600a60248201526923a7a7a22227a62620a960b11b60448201526000916001600160a01b03169063bf40fac19060640160206040518083038186803b15801561199f57600080fd5b505afa1580156119b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d791906135a1565b905090565b6000805160206139a48339815191526119f58133611d78565b6101305460ff1615611a195760405162461bcd60e51b815260040161092d9061354e565b611a24858585611ff8565b8115611a47576001600160a01b0385166000908152610165602052604090208290555b5050505050565b6101656020526000908152604090208054600182015460028301805492939192611a77906136ec565b80601f0160208091040260200160405190810160405280929190818152602001828054611aa3906136ec565b8015611af05780601f10611ac557610100808354040283529160200191611af0565b820191906000526020600020905b815481529060010190602001808311611ad357829003601f168201915b50505050600383015460049093015491929160ff16905085565b611b1333610fed565b611b2f5760405162461bcd60e51b815260040161092d90613578565b611b3882610fed565b158015611b4b5750611b4982611cd3565b155b611b895760405162461bcd60e51b815260206004820152600f60248201526e1a5b9d985b1a59081858d8dbdd5b9d608a1b604482015260640161092d565b6001600160a01b03828116600090815261016760205260409020541615611be65760405162461bcd60e51b8152602060048201526011602482015270185b1c9958591e4818dbdb9b9958dd1959607a1b604482015260640161092d565b60408051336020808301919091526001600160a01b038516828401528251808303840181526060830184528051908201207b0ca2ba3432b932bab69029b4b3b732b21026b2b9b9b0b3b29d05199960211b6080840152609c808401919091528351808403909101815260bc9092019092528051910120611c68908390836128db565b611ca85760405162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015260640161092d565b506001600160a01b031660009081526101676020526040902080546001600160a01b03191633179055565b6001600160a01b0381166000908152610165602052604081206004015460ff9081161415611d0357506001919050565b610168546001600160a01b031615610df1576101685460405163fe575a8760e01b81526001600160a01b039091169063fe575a879061181c90859060040161332b565b6101305460ff1615611d6a5760405162461bcd60e51b815260040161092d9061354e565b611d72612a27565b61016455565b611d828282611589565b6108e457611d9a816001600160a01b03166014612af9565b611da5836020612af9565b604051602001611db6929190613794565b60408051601f198184030181529082905262461bcd60e51b825261092d9160040161344e565b6101305460ff1615611e005760405162461bcd60e51b815260040161092d9061354e565b610130805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611e363390565b604051611e43919061332b565b60405180910390a1565b6101305460ff16611e975760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015260640161092d565b610130805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33611e36565b6001600160a01b0382166000908152610165602052604090206004015460ff1615611f2b5760405162461bcd60e51b8152602060048201526012602482015271616c7265616479206861732073746174757360701b604482015260640161092d565b60016101626000828254611f3f9190613803565b90915550506001600160a01b03821660009081526101656020908152604080832060048101805460ff19166001908117909155429082018190558155600301849055610167909152902080546001600160a01b0319169055611fa1823b151590565b15611fc05760016101636000828254611fba9190613803565b90915550505b6040516001600160a01b038316907fee1504a83b6d4a361f4c1dc78ab59bfa30d6a3b6612c403e86bb01ef2984295f90600090a25050565b815160208084019190912060008181526101669092526040909120546001600160a01b03161561203a5760405162461bcd60e51b815260040161092d9061381b565b6001600160a01b038416600090815261016560209081526040909120845161206a92600290920191860190613017565b5060008181526101666020526040902080546001600160a01b0319166001600160a01b0386161790556118c98483611ec9565b6120a682610fed565b6120c25760405162461bcd60e51b815260040161092d90613578565b60008151116120ff5760405162461bcd60e51b815260206004820152600960248201526864696420656d70747960b81b604482015260640161092d565b805160208083019190912060008181526101669092526040909120546001600160a01b0316156121415760405162461bcd60e51b815260040161092d9061381b565b610168546001600160a01b03161561228657610168546040516367c7593760e01b8152600481018390526000916001600160a01b0316906367c759379060240160206040518083038186803b15801561219957600080fd5b505afa9250505080156121c9575060408051601f3d908101601f191682019092526121c6918101906135a1565b60015b6121d2576121d5565b90505b6001600160a01b03811615806121fc5750836001600160a01b0316816001600160a01b0316145b8061222d57506001600160a01b0381166000908152610165602052604081206002018054612229906136ec565b9050115b6122845760405162461bcd60e51b815260206004820152602260248201527f44494420616c72656164792072656769737465726564206f6c644964656e7469604482015261747960f01b606482015260840161092d565b505b6001600160a01b0383166000908152610165602052604080822090516122af916002019061384b565b60408051918290039091206000818152610166602090815283822080546001600160a01b03191690556001600160a01b0388168252610165815292902085519193506123049260029091019190860190613017565b505060009081526101666020526040902080546001600160a01b0319166001600160a01b03939093169290921790915550565b6001600160a01b0381166000908152610165602052604090206004015460ff166001148061238457506001600160a01b0381166000908152610165602052604090206004015460ff166002145b1561250f576001610162600082825461239d9190613648565b9091555050803b156123c357600161016360008282546123bd9190613648565b90915550505b6001600160a01b03811660009081526101656020526040812060020180546123ea906136ec565b80601f0160208091040260200160405190810160405280929190818152602001828054612416906136ec565b80156124635780601f1061243857610100808354040283529160200191612463565b820191906000526020600020905b81548152906001019060200180831161244657829003601f168201915b505083516020808601919091206001600160a01b0388166000908152610165909252604082208281556001810183905595965094935091506124aa9050600283018261309b565b506000600382018190556004909101805460ff19169055818152610166602052604080822080546001600160a01b0319169055516001600160a01b038516917f270d9b30cf5b0793bbfd54c9d5b94aeb49462b8148399000265144a8722da6b691a250505b610168546001600160a01b031615610f56576101685460405163291d954960e01b81526001600160a01b039091169063291d95499061255290849060040161332b565b600060405180830381600087803b15801561256c57600080fd5b505af1158015611a47573d6000803e3d6000fd5b606780546001600160a01b0319166001600160a01b038316179055610f56610aed565b6108e482825b6125b38282611589565b6108e457600082815260fe602090815260408083206001600160a01b03851684529091529020805460ff191660011790556125eb3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6126398282611589565b156108e457600082815260fe602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600080516020613a04833981519152546001600160a01b031690565b610f56612a27565b60006126c4612696565b90506126cf84612c94565b6000835111806126dc5750815b156126ed576126eb8484612d27565b505b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143805460ff16611a4757805460ff1916600117815560405161276890869061273990859060240161332b565b60408051601f198184030181529190526020810180516001600160e01b0316631b2ce7f360e11b179052612d27565b50805460ff19168155612779612696565b6001600160a01b0316826001600160a01b0316146127f15760405162461bcd60e51b815260206004820152602f60248201527f45524331393637557067726164653a207570677261646520627265616b73206660448201526e75727468657220757067726164657360881b606482015260840161092d565b611a4785612e12565b600054610100900460ff1680612813575060005460ff16155b61282f5760405162461bcd60e51b815260040161092d9061369e565b600054610100900460ff16158015612851576000805461ffff19166101011790555b8015610f56576000805461ff001916905550565b600054610100900460ff168061287e575060005460ff16155b61289a5760405162461bcd60e51b815260040161092d9061369e565b600054610100900460ff161580156128bc576000805461ffff19166101011790555b610130805460ff191690558015610f56576000805461ff001916905550565b60008060006128ea8585612e52565b90925090506000816004811115612903576129036138e7565b1480156129215750856001600160a01b0316826001600160a01b0316145b15612931576001925050506110fc565b600080876001600160a01b0316631626ba7e60e01b88886040516024016129599291906138fd565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051612997919061391e565b600060405180830381855afa9150503d80600081146129d2576040519150601f19603f3d011682016040523d82523d6000602084013e6129d7565b606091505b50915091508180156129ea575080516020145b8015612a1b57508051630b135d3f60e11b90612a0f908301602090810190840161393a565b6001600160e01b031916145b98975050505050505050565b60655460408051632d77bef360e11b8152905133926001600160a01b031691635aef7de6916004808301926020929190829003018186803b158015612a6b57600080fd5b505afa158015612a7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aa391906135a1565b6001600160a01b03161461193e5760405162461bcd60e51b815260206004820181905260248201527f6f6e6c79206176617461722063616e2063616c6c2074686973206d6574686f64604482015260640161092d565b60606000612b08836002613957565b612b13906002613803565b6001600160401b03811115612b2a57612b2a613176565b6040519080825280601f01601f191660200182016040528015612b54576020820181803683370190505b509050600360fc1b81600081518110612b6f57612b6f613976565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110612b9e57612b9e613976565b60200101906001600160f81b031916908160001a9053506000612bc2846002613957565b612bcd906001613803565b90505b6001811115612c45576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110612c0157612c01613976565b1a60f81b828281518110612c1757612c17613976565b60200101906001600160f81b031916908160001a90535060049490941c93612c3e8161398c565b9050612bd0565b5083156110fc5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161092d565b803b612cf85760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161092d565b600080516020613a0483398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060823b612d865760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840161092d565b600080846001600160a01b031684604051612da1919061391e565b600060405180830381855af49150503d8060008114612ddc576040519150601f19603f3d011682016040523d82523d6000602084013e612de1565b606091505b5091509150612e098282604051806060016040528060278152602001613a2460279139612ec2565b95945050505050565b612e1b81612c94565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b600080825160411415612e895760208301516040840151606085015160001a612e7d87828585612efb565b94509450505050612ebb565b825160401415612eb35760208301516040840151612ea8868383612fde565b935093505050612ebb565b506000905060025b9250929050565b60608315612ed15750816110fc565b825115612ee15782518084602001fd5b8160405162461bcd60e51b815260040161092d919061344e565b6000806fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831115612f285750600090506003612fd5565b8460ff16601b14158015612f4057508460ff16601c14155b15612f515750600090506004612fd5565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612fa5573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116612fce57600060019250925050612fd5565b9150600090505b94509492505050565b6000806001600160ff1b03831681612ffb60ff86901c601b613803565b905061300987828885612efb565b935093505050935093915050565b828054613023906136ec565b90600052602060002090601f016020900481019282613045576000855561308b565b82601f1061305e57805160ff191683800117855561308b565b8280016001018555821561308b579182015b8281111561308b578251825591602001919060010190613070565b506130979291506130d1565b5090565b5080546130a7906136ec565b6000825580601f106130b7575050565b601f016020900490600052602060002090810190610f5691905b5b8082111561309757600081556001016130d2565b6001600160e01b031981168114610f5657600080fd5b60006020828403121561310e57600080fd5b81356110fc816130e6565b8015158114610f5657600080fd5b60006020828403121561313957600080fd5b81356110fc81613119565b6001600160a01b0381168114610f5657600080fd5b60006020828403121561316b57600080fd5b81356110fc81613144565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156131b4576131b4613176565b604052919050565b60006001600160401b038211156131d5576131d5613176565b50601f01601f191660200190565b60006131f66131f1846131bc565b61318c565b905082815283838301111561320a57600080fd5b828260208301376000602084830101529392505050565b600082601f83011261323257600080fd5b6110fc838335602085016131e3565b6000806040838503121561325457600080fd5b823561325f81613144565b915060208301356001600160401b0381111561327a57600080fd5b61328685828601613221565b9150509250929050565b6000602082840312156132a257600080fd5b5035919050565b60008083601f8401126132bb57600080fd5b5081356001600160401b038111156132d257600080fd5b602083019150836020828501011115612ebb57600080fd5b600080602083850312156132fd57600080fd5b82356001600160401b0381111561331357600080fd5b61331f858286016132a9565b90969095509350505050565b6001600160a01b0391909116815260200190565b6000806040838503121561335257600080fd5b82359150602083013561336481613144565b809150509250929050565b6000806040838503121561338257600080fd5b823561338d81613144565b9150602083013561336481613144565b600080604083850312156133b057600080fd5b82356133bb81613144565b915060208301356001600160401b038111156133d657600080fd5b8301601f810185136133e757600080fd5b613286858235602084016131e3565b60005b838110156134115781810151838201526020016133f9565b838111156118c95750506000910152565b6000815180845261343a8160208601602086016133f6565b601f01601f19169290920160200192915050565b6020815260006110fc6020830184613422565b60008060006040848603121561347657600080fd5b833561348181613144565b925060208401356001600160401b0381111561349c57600080fd5b6134a8868287016132a9565b9497909650939450505050565b600080600080608085870312156134cb57600080fd5b84356134d681613144565b935060208501356001600160401b038111156134f157600080fd5b6134fd87828801613221565b949794965050505060408301359260600135919050565b85815284602082015260a06040820152600061353360a0830186613422565b905083606083015260ff831660808301529695505050505050565b60208082526010908201526f14185d5cd8589b194e881c185d5cd95960821b604082015260600190565b6020808252600f908201526e1b9bdd081dda1a5d195b1a5cdd1959608a1b604082015260600190565b6000602082840312156135b357600080fd5b81516110fc81613144565b6020808252602c908201526000805160206139c483398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201526000805160206139c483398151915260408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008282101561365a5761365a613632565b500390565b60008261367c57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561369357600080fd5b81516110fc81613119565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b600181811c9082168061370057607f821691505b6020821081141561372157634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561373957600080fd5b81516001600160401b0381111561374f57600080fd5b8201601f8101841361376057600080fd5b805161376e6131f1826131bc565b81815285602083850101111561378357600080fd5b612e098260208301602086016133f6565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8152600083516137c68160178501602088016133f6565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516137f78160288401602088016133f6565b01602801949350505050565b6000821982111561381657613816613632565b500190565b60208082526016908201527511125108185b1c9958591e481c9959da5cdd195c995960521b604082015260600190565b600080835481600182811c91508083168061386757607f831692505b602080841082141561388757634e487b7160e01b86526022600452602486fd5b81801561389b57600181146138ac576138d9565b60ff198616895284890196506138d9565b60008a81526020902060005b868110156138d15781548b8201529085019083016138b8565b505084890196505b509498975050505050505050565b634e487b7160e01b600052602160045260246000fd5b8281526040602082015260006139166040830184613422565b949350505050565b600082516139308184602087016133f6565b9190910192915050565b60006020828403121561394c57600080fd5b81516110fc816130e6565b600081600019048311821515161561397157613971613632565b500290565b634e487b7160e01b600052603260045260246000fd5b60008161399b5761399b613632565b50600019019056fe091941537c453917ef5b0c67f46f29060aca926ebd752fe441d5625e85c3a57646756e6374696f6e206d7573742062652063616c6c6564207468726f756768200b0f1f48172a2124d5545a38711e7e9d2e7a6c0b46b85cf1c1788e7a11ba5bf2360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220e0869cfea68c5e7fae2df95aa9e2a8682decd94938dd877b6de158485b4aa8f864736f6c63430008080033",
1028
+ "deployedBytecode": "0x60806040526004361061022e5760003560e01c806301ffc9a71461023357806302329a291461026857806308e0d29d1461028a57806310154bad146102aa578063188efc16146102ca5780631aaff63c146102ea5780631b0270991461031a5780631b3c90a81461033a578063223668441461034f578063248a9ca314610363578063274a827b14610383578063291d9549146103a35780632b14dda8146103c35780632d0e9b46146103e35780632f2ff15d1461041057806331b376e21461043057806336568abe146104475780633659cfe61461046757806337a1a987146104875780633af32abf146104a75780633e6326fc146104c75780634125f0f2146104e75780634162169f14610508578063485cc955146105285780634f1ef2861461054857806354f9f7a31461055b5780635aef7de6146105885780635c975abb146105a85780635f539d69146105c157806361320040146105e157806367c759371461061857806391d148541461064f578063a217fddf1461066f578063b2a1de2214610684578063b30f7e7f1461069b578063c375c2ef146106b2578063c6a276c2146106d2578063c73cc4ae146106f2578063d326281614610712578063d547741f14610732578063d6cd947314610752578063e1758bd814610767578063e1e360ba1461077c578063e63ab1e9146107b3578063e737031a146107d5578063f653b81e146107f5578063f85ebeb114610826578063fe575a8714610846578063fff930d414610866575b600080fd5b34801561023f57600080fd5b5061025361024e3660046130fc565b610886565b60405190151581526020015b60405180910390f35b34801561027457600080fd5b50610288610283366004613127565b6108bd565b005b34801561029657600080fd5b506102886102a5366004613159565b6108f0565b3480156102b657600080fd5b506102886102c5366004613159565b6109cb565b3480156102d657600080fd5b506102886102e5366004613159565b610a12565b3480156102f657600080fd5b5061030c6000805160206139a483398151915281565b60405190815260200161025f565b34801561032657600080fd5b50610288610335366004613241565b610aa0565b34801561034657600080fd5b50610288610aed565b34801561035b57600080fd5b506001610253565b34801561036f57600080fd5b5061030c61037e366004613290565b610c32565b34801561038f57600080fd5b5061028861039e3660046132ea565b610c47565b3480156103af57600080fd5b506102886103be366004613159565b610c87565b3480156103cf57600080fd5b506102886103de366004613159565b610ccd565b3480156103ef57600080fd5b506104036103fe366004613159565b610d93565b60405161025f919061332b565b34801561041c57600080fd5b5061028861042b36600461333f565b610df9565b34801561043c57600080fd5b5061030c6101645481565b34801561045357600080fd5b5061028861046236600461333f565b610e16565b34801561047357600080fd5b50610288610482366004613159565b610e90565b34801561049357600080fd5b506102886104a2366004613159565b610f59565b3480156104b357600080fd5b506102536104c2366004613159565b610fed565b3480156104d357600080fd5b50606754610403906001600160a01b031681565b3480156104f357600080fd5b5061016854610403906001600160a01b031681565b34801561051457600080fd5b50606554610403906001600160a01b031681565b34801561053457600080fd5b5061028861054336600461336f565b61110c565b61028861055636600461339d565b611249565b34801561056757600080fd5b5061057b610576366004613159565b6112ff565b60405161025f919061344e565b34801561059457600080fd5b50606654610403906001600160a01b031681565b3480156105b457600080fd5b506101305460ff16610253565b3480156105cd57600080fd5b506102886105dc366004613159565b6114a3565b3480156105ed57600080fd5b506104036105fc366004613159565b610167602052600090815260409020546001600160a01b031681565b34801561062457600080fd5b50610403610633366004613290565b610166602052600090815260409020546001600160a01b031681565b34801561065b57600080fd5b5061025361066a36600461333f565b611589565b34801561067b57600080fd5b5061030c600081565b34801561069057600080fd5b5061030c6101625481565b3480156106a757600080fd5b5061030c6101635481565b3480156106be57600080fd5b506102886106cd366004613159565b6115b4565b3480156106de57600080fd5b506102886106ed366004613159565b6116a8565b3480156106fe57600080fd5b5061025361070d366004613159565b6117a9565b34801561071e57600080fd5b5061028861072d366004613461565b611870565b34801561073e57600080fd5b5061028861074d36600461333f565b6118cf565b34801561075e57600080fd5b506102886118ec565b34801561077357600080fd5b50610403611940565b34801561078857600080fd5b5061030c610797366004613159565b6001600160a01b03166000908152610165602052604090205490565b3480156107bf57600080fd5b5061030c6000805160206139e483398151915281565b3480156107e157600080fd5b506102886107f03660046134b5565b6119dc565b34801561080157600080fd5b50610815610810366004613159565b611a4e565b60405161025f959493929190613514565b34801561083257600080fd5b5061028861084136600461339d565b611b0a565b34801561085257600080fd5b50610253610861366004613159565b611cd3565b34801561087257600080fd5b50610288610881366004613290565b611d46565b60006001600160e01b03198216637965db0b60e01b14806108b757506301ffc9a760e01b6001600160e01b03198316145b92915050565b6000805160206139e48339815191526108d68133611d78565b81156108e8576108e4611ddc565b5050565b6108e4611e4d565b6000805160206139a48339815191526109098133611d78565b6101305460ff16156109365760405162461bcd60e51b815260040161092d9061354e565b60405180910390fd5b6001600160a01b0382166000908152610165602052604090206004015460ff166001146109755760405162461bcd60e51b815260040161092d90613578565b6001600160a01b03821660008181526101656020908152604091829020429081905591519182527fb2a82fce6d8c7a633efe9579f77b4edb96bfdf171a49bfc2ce666dc543a1f500910160405180910390a25050565b6000805160206139a48339815191526109e48133611d78565b6101305460ff1615610a085760405162461bcd60e51b815260040161092d9061354e565b6108e48246611ec9565b6000805160206139a4833981519152610a2b8133611d78565b6101305460ff1615610a4f5760405162461bcd60e51b815260040161092d9061354e565b6001600160a01b03821660008181526101656020526040808220600401805460ff191660ff179055517f44d5fe68b00f68950fb9c1ff0a61ef7f747b1a36359a7e3a7f3324db4b8789679190a25050565b6000805160206139a4833981519152610ab98133611d78565b6101305460ff1615610add5760405162461bcd60e51b815260040161092d9061354e565b610ae8838346611ff8565b505050565b60675460405163bf40fac160e01b815260206004820152600a60248201526921a7a72a2927a62622a960b11b60448201526001600160a01b039091169063bf40fac19060640160206040518083038186803b158015610b4b57600080fd5b505afa158015610b5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8391906135a1565b606580546001600160a01b0319166001600160a01b0392909216918217905560408051632d77bef360e11b81529051635aef7de691600480820192602092909190829003018186803b158015610bd857600080fd5b505afa158015610bec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1091906135a1565b606680546001600160a01b0319166001600160a01b0392909216919091179055565b600090815260fe602052604090206001015490565b6108e43383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061209d92505050565b6000805160206139a4833981519152610ca08133611d78565b6101305460ff1615610cc45760405162461bcd60e51b815260040161092d9061354e565b6108e482612337565b6000610cd98133611d78565b6067546001600160a01b031615610d285760405162461bcd60e51b8152602060048201526013602482015272185b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015260640161092d565b610d3182612580565b606654610d49906000906001600160a01b03166125a3565b606654610d6e906000805160206139e4833981519152906001600160a01b03166125a3565b6066546108e4906000805160206139a4833981519152906001600160a01b03166125a3565b6000610d9e82610fed565b15610da7575090565b6001600160a01b0380831660009081526101676020526040902054610dcc9116610fed565b15610df157506001600160a01b03908116600090815261016760205260409020541690565b506000919050565b610e0282610c32565b610e0c8133611d78565b610ae883836125a9565b6001600160a01b0381163314610e865760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b606482015260840161092d565b6108e4828261262f565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610ed95760405162461bcd60e51b815260040161092d906135be565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610f0b612696565b6001600160a01b031614610f315760405162461bcd60e51b815260040161092d906135f8565b610f3a816126b2565b60408051600080825260208201909252610f56918391906126ba565b50565b6001600160a01b038181166000908152610167602052604090205416331480610f8a5750336001600160a01b038216145b610fc55760405162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015260640161092d565b6001600160a01b031660009081526101676020526040902080546001600160a01b0319169055565b6001600160a01b03811660009081526101656020526040812054819062015180906110189042613648565b611022919061365f565b905061016454811115801561105657506001600160a01b0383166000908152610165602052604090206004015460ff166001145b156110645750600192915050565b610168546001600160a01b0316156111035761016854604051633af32abf60e01b81526001600160a01b0390911690633af32abf906110a790869060040161332b565b60206040518083038186803b1580156110bf57600080fd5b505afa9250505080156110ef575060408051601f3d908101601f191682019092526110ec91810190613681565b60015b6110fc5750600092915050565b9392505050565b50600092915050565b600054610100900460ff1680611125575060005460ff16155b6111415760405162461bcd60e51b815260040161092d9061369e565b600054610100900460ff16158015611163576000805461ffff19166101011790555b61116b6127fa565b611173612865565b61044761016455606654611192906000906001600160a01b03166125a3565b61119d6000846125a3565b6066546111c2906000805160206139e4833981519152906001600160a01b03166125a3565b6111da6000805160206139e4833981519152846125a3565b6111f26000805160206139a4833981519152846125a3565b606654611217906000805160206139a4833981519152906001600160a01b03166125a3565b61016880546001600160a01b0319166001600160a01b0384161790558015610ae8576000805461ff0019169055505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156112925760405162461bcd60e51b815260040161092d906135be565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166112c4612696565b6001600160a01b0316146112ea5760405162461bcd60e51b815260040161092d906135f8565b6112f3826126b2565b6108e4828260016126ba565b6001600160a01b03811660009081526101656020526040902060020180546060919061132a906136ec565b80601f0160208091040260200160405190810160405280929190818152602001828054611356906136ec565b80156113a35780601f10611378576101008083540402835291602001916113a3565b820191906000526020600020905b81548152906001019060200180831161138657829003601f168201915b505083516020808601919091206000818152610166909252604090912054949550936001600160a01b038781169116141592506113e39150505750919050565b610168546001600160a01b03161561148d57610168546040516354f9f7a360e01b81526001600160a01b03909116906354f9f7a39061142690869060040161332b565b60006040518083038186803b15801561143e57600080fd5b505afa92505050801561147357506040513d6000823e601f3d908101601f191682016040526114709190810190613727565b60015b6110fc575050604080516020810190915260008152919050565b5050604080516020810190915260008152919050565b6000805160206139a48339815191526114bc8133611d78565b6101305460ff16156114e05760405162461bcd60e51b815260040161092d9061354e565b813b61152e5760405162461bcd60e51b815260206004820152601f60248201527f476976656e2061646472657373206973206e6f74206120636f6e747261637400604482015260640161092d565b6115388246611ec9565b6001600160a01b03821660008181526101656020526040808220600401805460ff19166002179055517f89c66952b48f3e96bf1d8ba1b63189520fd988a6979b8b740bd5c5d8dc53e2059190a25050565b600091825260fe602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6000805160206139a48339815191526115cd8133611d78565b6101305460ff16156115f15760405162461bcd60e51b815260040161092d9061354e565b610168546001600160a01b031615611667576101685460405163c375c2ef60e01b81526001600160a01b039091169063c375c2ef9061163490859060040161332b565b600060405180830381600087803b15801561164e57600080fd5b505af1158015611662573d6000803e3d6000fd5b505050505b61167082612337565b6040516001600160a01b038316907f8d30d41865a0b811b9545d879520d2dde9f4cc49e4241f486ad9752bc904b56590600090a25050565b6000805160206139a48339815191526116c18133611d78565b6101305460ff16156116e55760405162461bcd60e51b815260040161092d9061354e565b610168546001600160a01b03161561175b57610168546040516363513b6160e11b81526001600160a01b039091169063c6a276c29061172890859060040161332b565b600060405180830381600087803b15801561174257600080fd5b505af1158015611756573d6000803e3d6000fd5b505050505b6001600160a01b03821660008181526101656020526040808220600401805460ff19169055517f1747ca720b1a174a464b6513ace29b1d3190b5f632b9f34147017c81425bfde89190a25050565b6001600160a01b0381166000908152610165602052604081206004015460ff16600214156117d957506001919050565b610168546001600160a01b031615610df1576101685460405163639e625760e11b81526001600160a01b039091169063c73cc4ae9061181c90859060040161332b565b60206040518083038186803b15801561183457600080fd5b505afa925050508015611864575060408051601f3d908101601f1916820190925261186191810190613681565b60015b6108b757506000919050565b6000805160206139a48339815191526118898133611d78565b6118c98484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061209d92505050565b50505050565b6118d882610c32565b6118e28133611d78565b610ae8838361262f565b6101305460ff16156119105760405162461bcd60e51b815260040161092d9061354e565b61191933610fed565b6119355760405162461bcd60e51b815260040161092d90613578565b61193e33612337565b565b60675460405163bf40fac160e01b815260206004820152600a60248201526923a7a7a22227a62620a960b11b60448201526000916001600160a01b03169063bf40fac19060640160206040518083038186803b15801561199f57600080fd5b505afa1580156119b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d791906135a1565b905090565b6000805160206139a48339815191526119f58133611d78565b6101305460ff1615611a195760405162461bcd60e51b815260040161092d9061354e565b611a24858585611ff8565b8115611a47576001600160a01b0385166000908152610165602052604090208290555b5050505050565b6101656020526000908152604090208054600182015460028301805492939192611a77906136ec565b80601f0160208091040260200160405190810160405280929190818152602001828054611aa3906136ec565b8015611af05780601f10611ac557610100808354040283529160200191611af0565b820191906000526020600020905b815481529060010190602001808311611ad357829003601f168201915b50505050600383015460049093015491929160ff16905085565b611b1333610fed565b611b2f5760405162461bcd60e51b815260040161092d90613578565b611b3882610fed565b158015611b4b5750611b4982611cd3565b155b611b895760405162461bcd60e51b815260206004820152600f60248201526e1a5b9d985b1a59081858d8dbdd5b9d608a1b604482015260640161092d565b6001600160a01b03828116600090815261016760205260409020541615611be65760405162461bcd60e51b8152602060048201526011602482015270185b1c9958591e4818dbdb9b9958dd1959607a1b604482015260640161092d565b60408051336020808301919091526001600160a01b038516828401528251808303840181526060830184528051908201207b0ca2ba3432b932bab69029b4b3b732b21026b2b9b9b0b3b29d05199960211b6080840152609c808401919091528351808403909101815260bc9092019092528051910120611c68908390836128db565b611ca85760405162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015260640161092d565b506001600160a01b031660009081526101676020526040902080546001600160a01b03191633179055565b6001600160a01b0381166000908152610165602052604081206004015460ff9081161415611d0357506001919050565b610168546001600160a01b031615610df1576101685460405163fe575a8760e01b81526001600160a01b039091169063fe575a879061181c90859060040161332b565b6101305460ff1615611d6a5760405162461bcd60e51b815260040161092d9061354e565b611d72612a27565b61016455565b611d828282611589565b6108e457611d9a816001600160a01b03166014612af9565b611da5836020612af9565b604051602001611db6929190613794565b60408051601f198184030181529082905262461bcd60e51b825261092d9160040161344e565b6101305460ff1615611e005760405162461bcd60e51b815260040161092d9061354e565b610130805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611e363390565b604051611e43919061332b565b60405180910390a1565b6101305460ff16611e975760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015260640161092d565b610130805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33611e36565b6001600160a01b0382166000908152610165602052604090206004015460ff1615611f2b5760405162461bcd60e51b8152602060048201526012602482015271616c7265616479206861732073746174757360701b604482015260640161092d565b60016101626000828254611f3f9190613803565b90915550506001600160a01b03821660009081526101656020908152604080832060048101805460ff19166001908117909155429082018190558155600301849055610167909152902080546001600160a01b0319169055611fa1823b151590565b15611fc05760016101636000828254611fba9190613803565b90915550505b6040516001600160a01b038316907fee1504a83b6d4a361f4c1dc78ab59bfa30d6a3b6612c403e86bb01ef2984295f90600090a25050565b815160208084019190912060008181526101669092526040909120546001600160a01b03161561203a5760405162461bcd60e51b815260040161092d9061381b565b6001600160a01b038416600090815261016560209081526040909120845161206a92600290920191860190613017565b5060008181526101666020526040902080546001600160a01b0319166001600160a01b0386161790556118c98483611ec9565b6120a682610fed565b6120c25760405162461bcd60e51b815260040161092d90613578565b60008151116120ff5760405162461bcd60e51b815260206004820152600960248201526864696420656d70747960b81b604482015260640161092d565b805160208083019190912060008181526101669092526040909120546001600160a01b0316156121415760405162461bcd60e51b815260040161092d9061381b565b610168546001600160a01b03161561228657610168546040516367c7593760e01b8152600481018390526000916001600160a01b0316906367c759379060240160206040518083038186803b15801561219957600080fd5b505afa9250505080156121c9575060408051601f3d908101601f191682019092526121c6918101906135a1565b60015b6121d2576121d5565b90505b6001600160a01b03811615806121fc5750836001600160a01b0316816001600160a01b0316145b8061222d57506001600160a01b0381166000908152610165602052604081206002018054612229906136ec565b9050115b6122845760405162461bcd60e51b815260206004820152602260248201527f44494420616c72656164792072656769737465726564206f6c644964656e7469604482015261747960f01b606482015260840161092d565b505b6001600160a01b0383166000908152610165602052604080822090516122af916002019061384b565b60408051918290039091206000818152610166602090815283822080546001600160a01b03191690556001600160a01b0388168252610165815292902085519193506123049260029091019190860190613017565b505060009081526101666020526040902080546001600160a01b0319166001600160a01b03939093169290921790915550565b6001600160a01b0381166000908152610165602052604090206004015460ff166001148061238457506001600160a01b0381166000908152610165602052604090206004015460ff166002145b1561250f576001610162600082825461239d9190613648565b9091555050803b156123c357600161016360008282546123bd9190613648565b90915550505b6001600160a01b03811660009081526101656020526040812060020180546123ea906136ec565b80601f0160208091040260200160405190810160405280929190818152602001828054612416906136ec565b80156124635780601f1061243857610100808354040283529160200191612463565b820191906000526020600020905b81548152906001019060200180831161244657829003601f168201915b505083516020808601919091206001600160a01b0388166000908152610165909252604082208281556001810183905595965094935091506124aa9050600283018261309b565b506000600382018190556004909101805460ff19169055818152610166602052604080822080546001600160a01b0319169055516001600160a01b038516917f270d9b30cf5b0793bbfd54c9d5b94aeb49462b8148399000265144a8722da6b691a250505b610168546001600160a01b031615610f56576101685460405163291d954960e01b81526001600160a01b039091169063291d95499061255290849060040161332b565b600060405180830381600087803b15801561256c57600080fd5b505af1158015611a47573d6000803e3d6000fd5b606780546001600160a01b0319166001600160a01b038316179055610f56610aed565b6108e482825b6125b38282611589565b6108e457600082815260fe602090815260408083206001600160a01b03851684529091529020805460ff191660011790556125eb3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6126398282611589565b156108e457600082815260fe602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600080516020613a04833981519152546001600160a01b031690565b610f56612a27565b60006126c4612696565b90506126cf84612c94565b6000835111806126dc5750815b156126ed576126eb8484612d27565b505b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143805460ff16611a4757805460ff1916600117815560405161276890869061273990859060240161332b565b60408051601f198184030181529190526020810180516001600160e01b0316631b2ce7f360e11b179052612d27565b50805460ff19168155612779612696565b6001600160a01b0316826001600160a01b0316146127f15760405162461bcd60e51b815260206004820152602f60248201527f45524331393637557067726164653a207570677261646520627265616b73206660448201526e75727468657220757067726164657360881b606482015260840161092d565b611a4785612e12565b600054610100900460ff1680612813575060005460ff16155b61282f5760405162461bcd60e51b815260040161092d9061369e565b600054610100900460ff16158015612851576000805461ffff19166101011790555b8015610f56576000805461ff001916905550565b600054610100900460ff168061287e575060005460ff16155b61289a5760405162461bcd60e51b815260040161092d9061369e565b600054610100900460ff161580156128bc576000805461ffff19166101011790555b610130805460ff191690558015610f56576000805461ff001916905550565b60008060006128ea8585612e52565b90925090506000816004811115612903576129036138e7565b1480156129215750856001600160a01b0316826001600160a01b0316145b15612931576001925050506110fc565b600080876001600160a01b0316631626ba7e60e01b88886040516024016129599291906138fd565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051612997919061391e565b600060405180830381855afa9150503d80600081146129d2576040519150601f19603f3d011682016040523d82523d6000602084013e6129d7565b606091505b50915091508180156129ea575080516020145b8015612a1b57508051630b135d3f60e11b90612a0f908301602090810190840161393a565b6001600160e01b031916145b98975050505050505050565b60655460408051632d77bef360e11b8152905133926001600160a01b031691635aef7de6916004808301926020929190829003018186803b158015612a6b57600080fd5b505afa158015612a7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aa391906135a1565b6001600160a01b03161461193e5760405162461bcd60e51b815260206004820181905260248201527f6f6e6c79206176617461722063616e2063616c6c2074686973206d6574686f64604482015260640161092d565b60606000612b08836002613957565b612b13906002613803565b6001600160401b03811115612b2a57612b2a613176565b6040519080825280601f01601f191660200182016040528015612b54576020820181803683370190505b509050600360fc1b81600081518110612b6f57612b6f613976565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110612b9e57612b9e613976565b60200101906001600160f81b031916908160001a9053506000612bc2846002613957565b612bcd906001613803565b90505b6001811115612c45576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110612c0157612c01613976565b1a60f81b828281518110612c1757612c17613976565b60200101906001600160f81b031916908160001a90535060049490941c93612c3e8161398c565b9050612bd0565b5083156110fc5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161092d565b803b612cf85760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161092d565b600080516020613a0483398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060823b612d865760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840161092d565b600080846001600160a01b031684604051612da1919061391e565b600060405180830381855af49150503d8060008114612ddc576040519150601f19603f3d011682016040523d82523d6000602084013e612de1565b606091505b5091509150612e098282604051806060016040528060278152602001613a2460279139612ec2565b95945050505050565b612e1b81612c94565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b600080825160411415612e895760208301516040840151606085015160001a612e7d87828585612efb565b94509450505050612ebb565b825160401415612eb35760208301516040840151612ea8868383612fde565b935093505050612ebb565b506000905060025b9250929050565b60608315612ed15750816110fc565b825115612ee15782518084602001fd5b8160405162461bcd60e51b815260040161092d919061344e565b6000806fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831115612f285750600090506003612fd5565b8460ff16601b14158015612f4057508460ff16601c14155b15612f515750600090506004612fd5565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612fa5573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116612fce57600060019250925050612fd5565b9150600090505b94509492505050565b6000806001600160ff1b03831681612ffb60ff86901c601b613803565b905061300987828885612efb565b935093505050935093915050565b828054613023906136ec565b90600052602060002090601f016020900481019282613045576000855561308b565b82601f1061305e57805160ff191683800117855561308b565b8280016001018555821561308b579182015b8281111561308b578251825591602001919060010190613070565b506130979291506130d1565b5090565b5080546130a7906136ec565b6000825580601f106130b7575050565b601f016020900490600052602060002090810190610f5691905b5b8082111561309757600081556001016130d2565b6001600160e01b031981168114610f5657600080fd5b60006020828403121561310e57600080fd5b81356110fc816130e6565b8015158114610f5657600080fd5b60006020828403121561313957600080fd5b81356110fc81613119565b6001600160a01b0381168114610f5657600080fd5b60006020828403121561316b57600080fd5b81356110fc81613144565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156131b4576131b4613176565b604052919050565b60006001600160401b038211156131d5576131d5613176565b50601f01601f191660200190565b60006131f66131f1846131bc565b61318c565b905082815283838301111561320a57600080fd5b828260208301376000602084830101529392505050565b600082601f83011261323257600080fd5b6110fc838335602085016131e3565b6000806040838503121561325457600080fd5b823561325f81613144565b915060208301356001600160401b0381111561327a57600080fd5b61328685828601613221565b9150509250929050565b6000602082840312156132a257600080fd5b5035919050565b60008083601f8401126132bb57600080fd5b5081356001600160401b038111156132d257600080fd5b602083019150836020828501011115612ebb57600080fd5b600080602083850312156132fd57600080fd5b82356001600160401b0381111561331357600080fd5b61331f858286016132a9565b90969095509350505050565b6001600160a01b0391909116815260200190565b6000806040838503121561335257600080fd5b82359150602083013561336481613144565b809150509250929050565b6000806040838503121561338257600080fd5b823561338d81613144565b9150602083013561336481613144565b600080604083850312156133b057600080fd5b82356133bb81613144565b915060208301356001600160401b038111156133d657600080fd5b8301601f810185136133e757600080fd5b613286858235602084016131e3565b60005b838110156134115781810151838201526020016133f9565b838111156118c95750506000910152565b6000815180845261343a8160208601602086016133f6565b601f01601f19169290920160200192915050565b6020815260006110fc6020830184613422565b60008060006040848603121561347657600080fd5b833561348181613144565b925060208401356001600160401b0381111561349c57600080fd5b6134a8868287016132a9565b9497909650939450505050565b600080600080608085870312156134cb57600080fd5b84356134d681613144565b935060208501356001600160401b038111156134f157600080fd5b6134fd87828801613221565b949794965050505060408301359260600135919050565b85815284602082015260a06040820152600061353360a0830186613422565b905083606083015260ff831660808301529695505050505050565b60208082526010908201526f14185d5cd8589b194e881c185d5cd95960821b604082015260600190565b6020808252600f908201526e1b9bdd081dda1a5d195b1a5cdd1959608a1b604082015260600190565b6000602082840312156135b357600080fd5b81516110fc81613144565b6020808252602c908201526000805160206139c483398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201526000805160206139c483398151915260408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008282101561365a5761365a613632565b500390565b60008261367c57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561369357600080fd5b81516110fc81613119565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b600181811c9082168061370057607f821691505b6020821081141561372157634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561373957600080fd5b81516001600160401b0381111561374f57600080fd5b8201601f8101841361376057600080fd5b805161376e6131f1826131bc565b81815285602083850101111561378357600080fd5b612e098260208301602086016133f6565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8152600083516137c68160178501602088016133f6565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516137f78160288401602088016133f6565b01602801949350505050565b6000821982111561381657613816613632565b500190565b60208082526016908201527511125108185b1c9958591e481c9959da5cdd195c995960521b604082015260600190565b600080835481600182811c91508083168061386757607f831692505b602080841082141561388757634e487b7160e01b86526022600452602486fd5b81801561389b57600181146138ac576138d9565b60ff198616895284890196506138d9565b60008a81526020902060005b868110156138d15781548b8201529085019083016138b8565b505084890196505b509498975050505050505050565b634e487b7160e01b600052602160045260246000fd5b8281526040602082015260006139166040830184613422565b949350505050565b600082516139308184602087016133f6565b9190910192915050565b60006020828403121561394c57600080fd5b81516110fc816130e6565b600081600019048311821515161561397157613971613632565b500290565b634e487b7160e01b600052603260045260246000fd5b60008161399b5761399b613632565b50600019019056fe091941537c453917ef5b0c67f46f29060aca926ebd752fe441d5625e85c3a57646756e6374696f6e206d7573742062652063616c6c6564207468726f756768200b0f1f48172a2124d5545a38711e7e9d2e7a6c0b46b85cf1c1788e7a11ba5bf2360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220e0869cfea68c5e7fae2df95aa9e2a8682decd94938dd877b6de158485b4aa8f864736f6c63430008080033",
998
1029
  "linkReferences": {},
999
1030
  "deployedLinkReferences": {}
1000
1031
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/be3263c5d007e213bd68b492abfc033e.json"
3
+ "buildInfo": "../../../build-info/6baad3eaae28e0c76cfde263b2e57c29.json"
4
4
  }
@@ -485,8 +485,8 @@
485
485
  "type": "function"
486
486
  }
487
487
  ],
488
- "bytecode": "0x608060405234801561001057600080fd5b50611933806100206000396000f3fe608060405234801561001057600080fd5b506004361061011d5760003560e01c806302fb0c5e14610122578063119e5bf31461014b57806321132aad1461016b5780632c159a1a1461018057806341155d5e1461019357806354fd4d50146101b45780635aef7de6146101db5780635b419a65146101ee5780636d619ef8146102015780638da5cb5b14610214578063a1df6fd314610227578063a87430ba14610234578063acec338a146102e0578063af6346b0146102f3578063b2596a67146102fb578063b6567cd514610345578063b9fb2d1814610358578063ba6f56801461036b578063cf756fdf14610394578063d80528ae146103a7578063e951a3aa146103b9578063e9881a5e146103d9578063efbe1c1c146103ec575b600080fd5b60075461013690600160a01b900460ff1681565b60405190151581526020015b60405180910390f35b60075461015e906001600160a01b031681565b604051610142919061156d565b61017e610179366004611592565b6103f4565b005b60065461015e906001600160a01b031681565b6101a66101a13660046115c4565b61044f565b604051908152602001610142565b60408051808201825260058152640312e352e360dc1b6020820152905161014291906115e1565b60035461015e906001600160a01b031681565b61017e6101fc366004611636565b61051c565b61013661020f3660046115c4565b610756565b60055461015e906001600160a01b031681565b6010546101369060ff1681565b6102956102423660046115c4565b6002602081905260009182526040909120805460018201549282015460058301546006840154600785015460088601546009909601546001600160a01b03909516969560ff909416949293919290919088565b604080516001600160a01b0390991689526020890197909752941515958701959095526060860192909252608085015260a084015260c083019190915260e082015261010001610142565b61017e6102ee366004611592565b61094b565b61017e6109a8565b61032a610309366004611658565b60046020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610142565b6101a66103533660046115c4565b610b25565b61017e610366366004611671565b610ba4565b61015e610379366004611658565b6001602052600090815260409020546001600160a01b031681565b61017e6103a23660046116a3565b610c03565b600854600954600a5461032a92919083565b6103cc6103c73660046115c4565b610d47565b60405161014291906116f4565b6103cc6103e73660046115c4565b610f32565b61017e610fab565b6005546001600160a01b031633148061041757506003546001600160a01b031633145b61043c5760405162461bcd60e51b815260040161043390611741565b60405180910390fd5b6010805460ff1916911515919091179055565b6001600160a01b0381166000908152600260209081526040808320600401805482518185028101850190935280835284938301828280156104b957602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161049b575b505050505090506000805b8251811015610514576104ef8382815181106104e2576104e261178d565b6020026020010151610756565b1561050257816104fe816117b9565b9250505b8061050c816117b9565b9150506104c4565b509392505050565b600754600160a01b900460ff1661053257600080fd5b6000828152600160205260409020546001600160a01b0316158061056c57506000828152600160205260409020546001600160a01b031633145b6105b55760405162461bcd60e51b815260206004820152601a602482015279696e7669746520636f646520616c726561647920696e2075736560301b6044820152606401610433565b336000908152600260209081526040808320848452600192839052922054908201546001600160a01b0390911690158061060a575081546001600160a01b031615801561060a57506001600160a01b03811615155b61064c5760405162461bcd60e51b81526020600482015260136024820152721d5cd95c88185b1c9958591e481a9bda5b9959606a1b6044820152606401610433565b600182015461068a5760018083018590554260068401819055600984015560008581526020919091526040902080546001600160a01b031916331790555b6001600160a01b0381161561071a5781546001600160a01b0382166001600160a01b0319918216811784556000908152600260209081526040822060038101805460018181018355918552838520018054861633908117909155600490920180548083018255908552928420909201805490941617909255600a80549091906107149084906117d4565b90915550505b60405133906001600160a01b038316907fd8c638d8979e2ba5dba1f0d66246ee4b1c54b838f0e0a2b601365345eb23b05190600090a350505050565b6001600160a01b0380821660009081526002602081815260408084205490941680845284842060050154845260049091529282200154601054919291839060ff16151560011480156107a85750600082115b80156107f357506001600160a01b038084166000908152600260205260408082206006015492881682529020600901546107f09162015180916107ea91611156565b90611169565b82105b90506001600160a01b0383161580159061082a57506001600160a01b0385166000908152600260208190526040909120015460ff16155b80156108b15750600654604051633af32abf60e01b81526001600160a01b0390911690633af32abf9061086190889060040161156d565b60206040518083038186803b15801561087957600080fd5b505afa15801561088d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b191906117ec565b80156109385750600654604051633af32abf60e01b81526001600160a01b0390911690633af32abf906108e890869060040161156d565b60206040518083038186803b15801561090057600080fd5b505afa158015610914573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093891906117ec565b8015610942575080155b95945050505050565b6005546001600160a01b031633148061096e57506003546001600160a01b031633145b61098a5760405162461bcd60e51b815260040161043390611741565b60078054911515600160a01b0260ff60a01b19909216919091179055565b600754600160a01b900460ff166109be57600080fd5b336000908152600260205260408120600401805490919081906109e390600190611809565b90505b60008112610a9457620186a05a10156109fe57610a94565b6000838281548110610a1257610a1261178d565b6000918252602090912001546001600160a01b03169050610a3281610756565b15610a8157610a42816000611175565b610a4c90846117d4565b925083805480610a5e57610a5e611848565b600082815260209020810160001990810180546001600160a01b03191690550190555b5080610a8c8161185e565b9150506109e6565b508015610b215760075460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb90610acd903390859060040161187c565b602060405180830381600087803b158015610ae757600080fd5b505af1158015610afb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1f91906117ec565b505b5050565b600754600090600160a01b900460ff16610b3e57600080fd5b610b4782610756565b610b935760405162461bcd60e51b815260206004820181905260248201527f75736572206e6f7420656c6c6967626c6520666f7220626f756e7479207965746044820152606401610433565b610b9e826001611175565b92915050565b6005546001600160a01b0316331480610bc757506003546001600160a01b031633145b610be35760405162461bcd60e51b815260040161043390611741565b600093845260046020526040909320918255600282019290925560010155565b600054610100900460ff1680610c1c575060005460ff16155b610c7f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610433565b600054610100900460ff16158015610ca1576000805461ffff19166101011790555b60058054336001600160a01b0319918216179091556006805482166001600160a01b0387811691909117909155600780546000805260046020527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ed869055600160a01b6001600160a81b031990911687841617179055600380549092169087161790556010805460ff191690558015610d40576000805461ff00191690555b5050505050565b6001600160a01b0381166000908152600260209081526040808320600401805482518185028101850190935280835260609493830182828015610db357602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d95575b5050505050905060008060005b8351811015610e2d5760026000858381518110610ddf57610ddf61178d565b6020908102919091018101516001600160a01b031682528101919091526040016000206002015460ff16610e1b5781610e17816117b9565b9250505b80610e25816117b9565b915050610dc0565b506000816001600160401b03811115610e4857610e48611895565b604051908082528060200260200182016040528015610e71578160200160208202803683370190505b50905060005b8451811015610f285760026000868381518110610e9657610e9661178d565b6020908102919091018101516001600160a01b031682528101919091526040016000206002015460ff16610f1657848181518110610ed657610ed661178d565b6020026020010151828581518110610ef057610ef061178d565b6001600160a01b039092166020928302919091019091015283610f12816117b9565b9450505b80610f20816117b9565b915050610e77565b5095945050505050565b6001600160a01b038116600090815260026020908152604091829020600301805483518184028101840190945280845260609392830182828015610f9f57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610f81575b50505050509050919050565b6005546001600160a01b0316331480610fce57506003546001600160a01b031633145b610fea5760405162461bcd60e51b815260040161043390611741565b600754600160a01b900460ff1661100057600080fd5b6007546040516370a0823160e01b81526000916001600160a01b0316906370a082319061103190309060040161156d565b60206040518083038186803b15801561104957600080fd5b505afa15801561105d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108191906118ab565b60075460035460405163a9059cbb60e01b81529293506001600160a01b039182169263a9059cbb926110b9921690859060040161187c565b602060405180830381600087803b1580156110d357600080fd5b505af11580156110e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110b91906117ec565b506003546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611145573d6000803e3d6000fd5b50506007805460ff60a01b19169055565b600061116282846118c4565b9392505050565b600061116282846118db565b6001600160a01b038281166000908152600260208181526040808420805460099091015495168085528185206005908101548652600484528286208351608081018552815481526001820154958101959095529485015484840152825160a081019384905295969195919487949390926060850192909160038501919082845b8154815260200190600101908083116111f5575050505050815250509050600080826040015111801561124257506001600160a01b03841660009081526002602052604090206006015483115b801561128057506001600160a01b0384166000908152600260205260409020600601546112799062015180906107ea908690611156565b8260400151105b6001600160a01b038089166000908152600260208190526040808320909101805460ff1916600190811790915592881682528120600701805493945091926112c99084906117d4565b90915550506020808301516001600160a01b03861660009081526002909252604082206008018054919290916113009084906117d4565b9091555050600880546001919060009061131b9084906117d4565b90915550506020820151600980546000906113379084906117d4565b909155505081516000901580159061136b575082516001600160a01b03861660009081526002602052604090206007015410155b8015611375575081155b156113ce576001600160a01b03851660009081526002602052604081206005018054600192906113a69084906117d4565b9091555050506001600160a01b03841660009081526002602052604090204260069091015560015b861561145e57600754602084015160405163a9059cbb60e01b81526001600160a01b039092169163a9059cbb9161140a9189919060040161187c565b602060405180830381600087803b15801561142457600080fd5b505af1158015611438573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145c91906117ec565b505b60075460208401516001600160a01b039091169063a9059cbb908a90611485906002611169565b6040518363ffffffff1660e01b81526004016114a292919061187c565b602060405180830381600087803b1580156114bc57600080fd5b505af11580156114d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f491906117ec565b506020838101516001600160a01b0387811660008181526002855260409081902060050154815194855294840194909452841515838501529251908b1692917f6081787cd1bd02ab1576c52f03e8710d792d460e7881c3155d77d23893f3768b919081900360600190a350506020015195945050505050565b6001600160a01b0391909116815260200190565b801515811461158f57600080fd5b50565b6000602082840312156115a457600080fd5b813561116281611581565b6001600160a01b038116811461158f57600080fd5b6000602082840312156115d657600080fd5b8135611162816115af565b600060208083528351808285015260005b8181101561160e578581018301518582016040015282016115f2565b81811115611620576000604083870101525b50601f01601f1916929092016040019392505050565b6000806040838503121561164957600080fd5b50508035926020909101359150565b60006020828403121561166a57600080fd5b5035919050565b6000806000806080858703121561168757600080fd5b5050823594602084013594506040840135936060013592509050565b600080600080608085870312156116b957600080fd5b84356116c4816115af565b935060208501356116d4816115af565b925060408501356116e4816115af565b9396929550929360600135925050565b6020808252825182820181905260009190848201906040850190845b818110156117355783516001600160a01b031683529284019291840191600101611710565b50909695505050505050565b6020808252602c908201527f4f6e6c79206f776e6572206f72206176617461722063616e20706572666f726d60408201526b103a3434b99030b1ba34b7b760a11b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156117cd576117cd6117a3565b5060010190565b600082198211156117e7576117e76117a3565b500190565b6000602082840312156117fe57600080fd5b815161116281611581565b60008083128015600160ff1b850184121615611827576118276117a3565b6001600160ff1b0384018313811615611842576118426117a3565b50500390565b634e487b7160e01b600052603160045260246000fd5b6000600160ff1b821415611874576118746117a3565b506000190190565b6001600160a01b03929092168252602082015260400190565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156118bd57600080fd5b5051919050565b6000828210156118d6576118d66117a3565b500390565b6000826118f857634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220fa0b73340e60d275d1aacea989cce8688bac13c64d849c8bd586952039ebf23364736f6c63430008080033",
489
- "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061011d5760003560e01c806302fb0c5e14610122578063119e5bf31461014b57806321132aad1461016b5780632c159a1a1461018057806341155d5e1461019357806354fd4d50146101b45780635aef7de6146101db5780635b419a65146101ee5780636d619ef8146102015780638da5cb5b14610214578063a1df6fd314610227578063a87430ba14610234578063acec338a146102e0578063af6346b0146102f3578063b2596a67146102fb578063b6567cd514610345578063b9fb2d1814610358578063ba6f56801461036b578063cf756fdf14610394578063d80528ae146103a7578063e951a3aa146103b9578063e9881a5e146103d9578063efbe1c1c146103ec575b600080fd5b60075461013690600160a01b900460ff1681565b60405190151581526020015b60405180910390f35b60075461015e906001600160a01b031681565b604051610142919061156d565b61017e610179366004611592565b6103f4565b005b60065461015e906001600160a01b031681565b6101a66101a13660046115c4565b61044f565b604051908152602001610142565b60408051808201825260058152640312e352e360dc1b6020820152905161014291906115e1565b60035461015e906001600160a01b031681565b61017e6101fc366004611636565b61051c565b61013661020f3660046115c4565b610756565b60055461015e906001600160a01b031681565b6010546101369060ff1681565b6102956102423660046115c4565b6002602081905260009182526040909120805460018201549282015460058301546006840154600785015460088601546009909601546001600160a01b03909516969560ff909416949293919290919088565b604080516001600160a01b0390991689526020890197909752941515958701959095526060860192909252608085015260a084015260c083019190915260e082015261010001610142565b61017e6102ee366004611592565b61094b565b61017e6109a8565b61032a610309366004611658565b60046020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610142565b6101a66103533660046115c4565b610b25565b61017e610366366004611671565b610ba4565b61015e610379366004611658565b6001602052600090815260409020546001600160a01b031681565b61017e6103a23660046116a3565b610c03565b600854600954600a5461032a92919083565b6103cc6103c73660046115c4565b610d47565b60405161014291906116f4565b6103cc6103e73660046115c4565b610f32565b61017e610fab565b6005546001600160a01b031633148061041757506003546001600160a01b031633145b61043c5760405162461bcd60e51b815260040161043390611741565b60405180910390fd5b6010805460ff1916911515919091179055565b6001600160a01b0381166000908152600260209081526040808320600401805482518185028101850190935280835284938301828280156104b957602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161049b575b505050505090506000805b8251811015610514576104ef8382815181106104e2576104e261178d565b6020026020010151610756565b1561050257816104fe816117b9565b9250505b8061050c816117b9565b9150506104c4565b509392505050565b600754600160a01b900460ff1661053257600080fd5b6000828152600160205260409020546001600160a01b0316158061056c57506000828152600160205260409020546001600160a01b031633145b6105b55760405162461bcd60e51b815260206004820152601a602482015279696e7669746520636f646520616c726561647920696e2075736560301b6044820152606401610433565b336000908152600260209081526040808320848452600192839052922054908201546001600160a01b0390911690158061060a575081546001600160a01b031615801561060a57506001600160a01b03811615155b61064c5760405162461bcd60e51b81526020600482015260136024820152721d5cd95c88185b1c9958591e481a9bda5b9959606a1b6044820152606401610433565b600182015461068a5760018083018590554260068401819055600984015560008581526020919091526040902080546001600160a01b031916331790555b6001600160a01b0381161561071a5781546001600160a01b0382166001600160a01b0319918216811784556000908152600260209081526040822060038101805460018181018355918552838520018054861633908117909155600490920180548083018255908552928420909201805490941617909255600a80549091906107149084906117d4565b90915550505b60405133906001600160a01b038316907fd8c638d8979e2ba5dba1f0d66246ee4b1c54b838f0e0a2b601365345eb23b05190600090a350505050565b6001600160a01b0380821660009081526002602081815260408084205490941680845284842060050154845260049091529282200154601054919291839060ff16151560011480156107a85750600082115b80156107f357506001600160a01b038084166000908152600260205260408082206006015492881682529020600901546107f09162015180916107ea91611156565b90611169565b82105b90506001600160a01b0383161580159061082a57506001600160a01b0385166000908152600260208190526040909120015460ff16155b80156108b15750600654604051633af32abf60e01b81526001600160a01b0390911690633af32abf9061086190889060040161156d565b60206040518083038186803b15801561087957600080fd5b505afa15801561088d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b191906117ec565b80156109385750600654604051633af32abf60e01b81526001600160a01b0390911690633af32abf906108e890869060040161156d565b60206040518083038186803b15801561090057600080fd5b505afa158015610914573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093891906117ec565b8015610942575080155b95945050505050565b6005546001600160a01b031633148061096e57506003546001600160a01b031633145b61098a5760405162461bcd60e51b815260040161043390611741565b60078054911515600160a01b0260ff60a01b19909216919091179055565b600754600160a01b900460ff166109be57600080fd5b336000908152600260205260408120600401805490919081906109e390600190611809565b90505b60008112610a9457620186a05a10156109fe57610a94565b6000838281548110610a1257610a1261178d565b6000918252602090912001546001600160a01b03169050610a3281610756565b15610a8157610a42816000611175565b610a4c90846117d4565b925083805480610a5e57610a5e611848565b600082815260209020810160001990810180546001600160a01b03191690550190555b5080610a8c8161185e565b9150506109e6565b508015610b215760075460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb90610acd903390859060040161187c565b602060405180830381600087803b158015610ae757600080fd5b505af1158015610afb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1f91906117ec565b505b5050565b600754600090600160a01b900460ff16610b3e57600080fd5b610b4782610756565b610b935760405162461bcd60e51b815260206004820181905260248201527f75736572206e6f7420656c6c6967626c6520666f7220626f756e7479207965746044820152606401610433565b610b9e826001611175565b92915050565b6005546001600160a01b0316331480610bc757506003546001600160a01b031633145b610be35760405162461bcd60e51b815260040161043390611741565b600093845260046020526040909320918255600282019290925560010155565b600054610100900460ff1680610c1c575060005460ff16155b610c7f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610433565b600054610100900460ff16158015610ca1576000805461ffff19166101011790555b60058054336001600160a01b0319918216179091556006805482166001600160a01b0387811691909117909155600780546000805260046020527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ed869055600160a01b6001600160a81b031990911687841617179055600380549092169087161790556010805460ff191690558015610d40576000805461ff00191690555b5050505050565b6001600160a01b0381166000908152600260209081526040808320600401805482518185028101850190935280835260609493830182828015610db357602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d95575b5050505050905060008060005b8351811015610e2d5760026000858381518110610ddf57610ddf61178d565b6020908102919091018101516001600160a01b031682528101919091526040016000206002015460ff16610e1b5781610e17816117b9565b9250505b80610e25816117b9565b915050610dc0565b506000816001600160401b03811115610e4857610e48611895565b604051908082528060200260200182016040528015610e71578160200160208202803683370190505b50905060005b8451811015610f285760026000868381518110610e9657610e9661178d565b6020908102919091018101516001600160a01b031682528101919091526040016000206002015460ff16610f1657848181518110610ed657610ed661178d565b6020026020010151828581518110610ef057610ef061178d565b6001600160a01b039092166020928302919091019091015283610f12816117b9565b9450505b80610f20816117b9565b915050610e77565b5095945050505050565b6001600160a01b038116600090815260026020908152604091829020600301805483518184028101840190945280845260609392830182828015610f9f57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610f81575b50505050509050919050565b6005546001600160a01b0316331480610fce57506003546001600160a01b031633145b610fea5760405162461bcd60e51b815260040161043390611741565b600754600160a01b900460ff1661100057600080fd5b6007546040516370a0823160e01b81526000916001600160a01b0316906370a082319061103190309060040161156d565b60206040518083038186803b15801561104957600080fd5b505afa15801561105d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108191906118ab565b60075460035460405163a9059cbb60e01b81529293506001600160a01b039182169263a9059cbb926110b9921690859060040161187c565b602060405180830381600087803b1580156110d357600080fd5b505af11580156110e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110b91906117ec565b506003546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611145573d6000803e3d6000fd5b50506007805460ff60a01b19169055565b600061116282846118c4565b9392505050565b600061116282846118db565b6001600160a01b038281166000908152600260208181526040808420805460099091015495168085528185206005908101548652600484528286208351608081018552815481526001820154958101959095529485015484840152825160a081019384905295969195919487949390926060850192909160038501919082845b8154815260200190600101908083116111f5575050505050815250509050600080826040015111801561124257506001600160a01b03841660009081526002602052604090206006015483115b801561128057506001600160a01b0384166000908152600260205260409020600601546112799062015180906107ea908690611156565b8260400151105b6001600160a01b038089166000908152600260208190526040808320909101805460ff1916600190811790915592881682528120600701805493945091926112c99084906117d4565b90915550506020808301516001600160a01b03861660009081526002909252604082206008018054919290916113009084906117d4565b9091555050600880546001919060009061131b9084906117d4565b90915550506020820151600980546000906113379084906117d4565b909155505081516000901580159061136b575082516001600160a01b03861660009081526002602052604090206007015410155b8015611375575081155b156113ce576001600160a01b03851660009081526002602052604081206005018054600192906113a69084906117d4565b9091555050506001600160a01b03841660009081526002602052604090204260069091015560015b861561145e57600754602084015160405163a9059cbb60e01b81526001600160a01b039092169163a9059cbb9161140a9189919060040161187c565b602060405180830381600087803b15801561142457600080fd5b505af1158015611438573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145c91906117ec565b505b60075460208401516001600160a01b039091169063a9059cbb908a90611485906002611169565b6040518363ffffffff1660e01b81526004016114a292919061187c565b602060405180830381600087803b1580156114bc57600080fd5b505af11580156114d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f491906117ec565b506020838101516001600160a01b0387811660008181526002855260409081902060050154815194855294840194909452841515838501529251908b1692917f6081787cd1bd02ab1576c52f03e8710d792d460e7881c3155d77d23893f3768b919081900360600190a350506020015195945050505050565b6001600160a01b0391909116815260200190565b801515811461158f57600080fd5b50565b6000602082840312156115a457600080fd5b813561116281611581565b6001600160a01b038116811461158f57600080fd5b6000602082840312156115d657600080fd5b8135611162816115af565b600060208083528351808285015260005b8181101561160e578581018301518582016040015282016115f2565b81811115611620576000604083870101525b50601f01601f1916929092016040019392505050565b6000806040838503121561164957600080fd5b50508035926020909101359150565b60006020828403121561166a57600080fd5b5035919050565b6000806000806080858703121561168757600080fd5b5050823594602084013594506040840135936060013592509050565b600080600080608085870312156116b957600080fd5b84356116c4816115af565b935060208501356116d4816115af565b925060408501356116e4816115af565b9396929550929360600135925050565b6020808252825182820181905260009190848201906040850190845b818110156117355783516001600160a01b031683529284019291840191600101611710565b50909695505050505050565b6020808252602c908201527f4f6e6c79206f776e6572206f72206176617461722063616e20706572666f726d60408201526b103a3434b99030b1ba34b7b760a11b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156117cd576117cd6117a3565b5060010190565b600082198211156117e7576117e76117a3565b500190565b6000602082840312156117fe57600080fd5b815161116281611581565b60008083128015600160ff1b850184121615611827576118276117a3565b6001600160ff1b0384018313811615611842576118426117a3565b50500390565b634e487b7160e01b600052603160045260246000fd5b6000600160ff1b821415611874576118746117a3565b506000190190565b6001600160a01b03929092168252602082015260400190565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156118bd57600080fd5b5051919050565b6000828210156118d6576118d66117a3565b500390565b6000826118f857634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220fa0b73340e60d275d1aacea989cce8688bac13c64d849c8bd586952039ebf23364736f6c63430008080033",
488
+ "bytecode": "0x608060405234801561001057600080fd5b506119a3806100206000396000f3fe608060405234801561001057600080fd5b506004361061011d5760003560e01c806302fb0c5e14610122578063119e5bf31461014b57806321132aad1461016b5780632c159a1a1461018057806341155d5e1461019357806354fd4d50146101b45780635aef7de6146101db5780635b419a65146101ee5780636d619ef8146102015780638da5cb5b14610214578063a1df6fd314610227578063a87430ba14610234578063acec338a146102e0578063af6346b0146102f3578063b2596a67146102fb578063b6567cd514610345578063b9fb2d1814610358578063ba6f56801461036b578063cf756fdf14610394578063d80528ae146103a7578063e951a3aa146103b9578063e9881a5e146103d9578063efbe1c1c146103ec575b600080fd5b60075461013690600160a01b900460ff1681565b60405190151581526020015b60405180910390f35b60075461015e906001600160a01b031681565b60405161014291906115b9565b61017e6101793660046115de565b6103f4565b005b60065461015e906001600160a01b031681565b6101a66101a1366004611610565b61044f565b604051908152602001610142565b60408051808201825260058152640312e352e360dc1b60208201529051610142919061162d565b60035461015e906001600160a01b031681565b61017e6101fc366004611682565b61051c565b61013661020f366004611610565b610769565b60055461015e906001600160a01b031681565b6010546101369060ff1681565b610295610242366004611610565b6002602081905260009182526040909120805460018201549282015460058301546006840154600785015460088601546009909601546001600160a01b03909516969560ff909416949293919290919088565b604080516001600160a01b0390991689526020890197909752941515958701959095526060860192909252608085015260a084015260c083019190915260e082015261010001610142565b61017e6102ee3660046115de565b61095e565b61017e6109bb565b61032a6103093660046116a4565b60046020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610142565b6101a6610353366004611610565b610b4b565b61017e6103663660046116bd565b610bdd565b61015e6103793660046116a4565b6001602052600090815260409020546001600160a01b031681565b61017e6103a23660046116ef565b610c3c565b600854600954600a5461032a92919083565b6103cc6103c7366004611610565b610d80565b6040516101429190611740565b6103cc6103e7366004611610565b610f6b565b61017e610fe4565b6005546001600160a01b031633148061041757506003546001600160a01b031633145b61043c5760405162461bcd60e51b81526004016104339061178d565b60405180910390fd5b6010805460ff1916911515919091179055565b6001600160a01b0381166000908152600260209081526040808320600401805482518185028101850190935280835284938301828280156104b957602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161049b575b505050505090506000805b8251811015610514576104ef8382815181106104e2576104e26117d9565b6020026020010151610769565b1561050257816104fe81611805565b9250505b8061050c81611805565b9150506104c4565b509392505050565b600754600160a01b900460ff166105455760405162461bcd60e51b815260040161043390611820565b6000828152600160205260409020546001600160a01b0316158061057f57506000828152600160205260409020546001600160a01b031633145b6105c85760405162461bcd60e51b815260206004820152601a602482015279696e7669746520636f646520616c726561647920696e2075736560301b6044820152606401610433565b336000908152600260209081526040808320848452600192839052922054908201546001600160a01b0390911690158061061d575081546001600160a01b031615801561061d57506001600160a01b03811615155b61065f5760405162461bcd60e51b81526020600482015260136024820152721d5cd95c88185b1c9958591e481a9bda5b9959606a1b6044820152606401610433565b600182015461069d5760018083018590554260068401819055600984015560008581526020919091526040902080546001600160a01b031916331790555b6001600160a01b0381161561072d5781546001600160a01b0382166001600160a01b0319918216811784556000908152600260209081526040822060038101805460018181018355918552838520018054861633908117909155600490920180548083018255908552928420909201805490941617909255600a8054909190610727908490611844565b90915550505b60405133906001600160a01b038316907fd8c638d8979e2ba5dba1f0d66246ee4b1c54b838f0e0a2b601365345eb23b05190600090a350505050565b6001600160a01b0380821660009081526002602081815260408084205490941680845284842060050154845260049091529282200154601054919291839060ff16151560011480156107bb5750600082115b801561080657506001600160a01b038084166000908152600260205260408082206006015492881682529020600901546108039162015180916107fd916111a2565b906111b5565b82105b90506001600160a01b0383161580159061083d57506001600160a01b0385166000908152600260208190526040909120015460ff16155b80156108c45750600654604051633af32abf60e01b81526001600160a01b0390911690633af32abf906108749088906004016115b9565b60206040518083038186803b15801561088c57600080fd5b505afa1580156108a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c4919061185c565b801561094b5750600654604051633af32abf60e01b81526001600160a01b0390911690633af32abf906108fb9086906004016115b9565b60206040518083038186803b15801561091357600080fd5b505afa158015610927573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061094b919061185c565b8015610955575080155b95945050505050565b6005546001600160a01b031633148061098157506003546001600160a01b031633145b61099d5760405162461bcd60e51b81526004016104339061178d565b60078054911515600160a01b0260ff60a01b19909216919091179055565b600754600160a01b900460ff166109e45760405162461bcd60e51b815260040161043390611820565b33600090815260026020526040812060040180549091908190610a0990600190611879565b90505b60008112610aba57620186a05a1015610a2457610aba565b6000838281548110610a3857610a386117d9565b6000918252602090912001546001600160a01b03169050610a5881610769565b15610aa757610a688160006111c1565b610a729084611844565b925083805480610a8457610a846118b8565b600082815260209020810160001990810180546001600160a01b03191690550190555b5080610ab2816118ce565b915050610a0c565b508015610b475760075460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb90610af390339085906004016118ec565b602060405180830381600087803b158015610b0d57600080fd5b505af1158015610b21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b45919061185c565b505b5050565b600754600090600160a01b900460ff16610b775760405162461bcd60e51b815260040161043390611820565b610b8082610769565b610bcc5760405162461bcd60e51b815260206004820181905260248201527f75736572206e6f7420656c6c6967626c6520666f7220626f756e7479207965746044820152606401610433565b610bd78260016111c1565b92915050565b6005546001600160a01b0316331480610c0057506003546001600160a01b031633145b610c1c5760405162461bcd60e51b81526004016104339061178d565b600093845260046020526040909320918255600282019290925560010155565b600054610100900460ff1680610c55575060005460ff16155b610cb85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610433565b600054610100900460ff16158015610cda576000805461ffff19166101011790555b60058054336001600160a01b0319918216179091556006805482166001600160a01b0387811691909117909155600780546000805260046020527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ed869055600160a01b6001600160a81b031990911687841617179055600380549092169087161790556010805460ff191690558015610d79576000805461ff00191690555b5050505050565b6001600160a01b0381166000908152600260209081526040808320600401805482518185028101850190935280835260609493830182828015610dec57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610dce575b5050505050905060008060005b8351811015610e665760026000858381518110610e1857610e186117d9565b6020908102919091018101516001600160a01b031682528101919091526040016000206002015460ff16610e545781610e5081611805565b9250505b80610e5e81611805565b915050610df9565b506000816001600160401b03811115610e8157610e81611905565b604051908082528060200260200182016040528015610eaa578160200160208202803683370190505b50905060005b8451811015610f615760026000868381518110610ecf57610ecf6117d9565b6020908102919091018101516001600160a01b031682528101919091526040016000206002015460ff16610f4f57848181518110610f0f57610f0f6117d9565b6020026020010151828581518110610f2957610f296117d9565b6001600160a01b039092166020928302919091019091015283610f4b81611805565b9450505b80610f5981611805565b915050610eb0565b5095945050505050565b6001600160a01b038116600090815260026020908152604091829020600301805483518184028101840190945280845260609392830182828015610fd857602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610fba575b50505050509050919050565b6005546001600160a01b031633148061100757506003546001600160a01b031633145b6110235760405162461bcd60e51b81526004016104339061178d565b600754600160a01b900460ff1661104c5760405162461bcd60e51b815260040161043390611820565b6007546040516370a0823160e01b81526000916001600160a01b0316906370a082319061107d9030906004016115b9565b60206040518083038186803b15801561109557600080fd5b505afa1580156110a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110cd919061191b565b60075460035460405163a9059cbb60e01b81529293506001600160a01b039182169263a9059cbb9261110592169085906004016118ec565b602060405180830381600087803b15801561111f57600080fd5b505af1158015611133573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611157919061185c565b506003546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611191573d6000803e3d6000fd5b50506007805460ff60a01b19169055565b60006111ae8284611934565b9392505050565b60006111ae828461194b565b6001600160a01b038281166000908152600260208181526040808420805460099091015495168085528185206005908101548652600484528286208351608081018552815481526001820154958101959095529485015484840152825160a081019384905295969195919487949390926060850192909160038501919082845b815481526020019060010190808311611241575050505050815250509050600080826040015111801561128e57506001600160a01b03841660009081526002602052604090206006015483115b80156112cc57506001600160a01b0384166000908152600260205260409020600601546112c59062015180906107fd9086906111a2565b8260400151105b6001600160a01b038089166000908152600260208190526040808320909101805460ff191660019081179091559288168252812060070180549394509192611315908490611844565b90915550506020808301516001600160a01b038616600090815260029092526040822060080180549192909161134c908490611844565b90915550506008805460019190600090611367908490611844565b9091555050602082015160098054600090611383908490611844565b90915550508151600090158015906113b7575082516001600160a01b03861660009081526002602052604090206007015410155b80156113c1575081155b1561141a576001600160a01b03851660009081526002602052604081206005018054600192906113f2908490611844565b9091555050506001600160a01b03841660009081526002602052604090204260069091015560015b86156114aa57600754602084015160405163a9059cbb60e01b81526001600160a01b039092169163a9059cbb91611456918991906004016118ec565b602060405180830381600087803b15801561147057600080fd5b505af1158015611484573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a8919061185c565b505b60075460208401516001600160a01b039091169063a9059cbb908a906114d19060026111b5565b6040518363ffffffff1660e01b81526004016114ee9291906118ec565b602060405180830381600087803b15801561150857600080fd5b505af115801561151c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611540919061185c565b506020838101516001600160a01b0387811660008181526002855260409081902060050154815194855294840194909452841515838501529251908b1692917f6081787cd1bd02ab1576c52f03e8710d792d460e7881c3155d77d23893f3768b919081900360600190a350506020015195945050505050565b6001600160a01b0391909116815260200190565b80151581146115db57600080fd5b50565b6000602082840312156115f057600080fd5b81356111ae816115cd565b6001600160a01b03811681146115db57600080fd5b60006020828403121561162257600080fd5b81356111ae816115fb565b600060208083528351808285015260005b8181101561165a5785810183015185820160400152820161163e565b8181111561166c576000604083870101525b50601f01601f1916929092016040019392505050565b6000806040838503121561169557600080fd5b50508035926020909101359150565b6000602082840312156116b657600080fd5b5035919050565b600080600080608085870312156116d357600080fd5b5050823594602084013594506040840135936060013592509050565b6000806000806080858703121561170557600080fd5b8435611710816115fb565b93506020850135611720816115fb565b92506040850135611730816115fb565b9396929550929360600135925050565b6020808252825182820181905260009190848201906040850190845b818110156117815783516001600160a01b03168352928401929184019160010161175c565b50909695505050505050565b6020808252602c908201527f4f6e6c79206f776e6572206f72206176617461722063616e20706572666f726d60408201526b103a3434b99030b1ba34b7b760a11b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415611819576118196117ef565b5060010190565b6020808252600a90820152696e6f742061637469766560b01b604082015260600190565b60008219821115611857576118576117ef565b500190565b60006020828403121561186e57600080fd5b81516111ae816115cd565b60008083128015600160ff1b850184121615611897576118976117ef565b6001600160ff1b03840183138116156118b2576118b26117ef565b50500390565b634e487b7160e01b600052603160045260246000fd5b6000600160ff1b8214156118e4576118e46117ef565b506000190190565b6001600160a01b03929092168252602082015260400190565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561192d57600080fd5b5051919050565b600082821015611946576119466117ef565b500390565b60008261196857634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220629df2a126f6bcc6b6ddea7c10d01c3562ec0f3f9fac97379314b285b0bb274964736f6c63430008080033",
489
+ "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061011d5760003560e01c806302fb0c5e14610122578063119e5bf31461014b57806321132aad1461016b5780632c159a1a1461018057806341155d5e1461019357806354fd4d50146101b45780635aef7de6146101db5780635b419a65146101ee5780636d619ef8146102015780638da5cb5b14610214578063a1df6fd314610227578063a87430ba14610234578063acec338a146102e0578063af6346b0146102f3578063b2596a67146102fb578063b6567cd514610345578063b9fb2d1814610358578063ba6f56801461036b578063cf756fdf14610394578063d80528ae146103a7578063e951a3aa146103b9578063e9881a5e146103d9578063efbe1c1c146103ec575b600080fd5b60075461013690600160a01b900460ff1681565b60405190151581526020015b60405180910390f35b60075461015e906001600160a01b031681565b60405161014291906115b9565b61017e6101793660046115de565b6103f4565b005b60065461015e906001600160a01b031681565b6101a66101a1366004611610565b61044f565b604051908152602001610142565b60408051808201825260058152640312e352e360dc1b60208201529051610142919061162d565b60035461015e906001600160a01b031681565b61017e6101fc366004611682565b61051c565b61013661020f366004611610565b610769565b60055461015e906001600160a01b031681565b6010546101369060ff1681565b610295610242366004611610565b6002602081905260009182526040909120805460018201549282015460058301546006840154600785015460088601546009909601546001600160a01b03909516969560ff909416949293919290919088565b604080516001600160a01b0390991689526020890197909752941515958701959095526060860192909252608085015260a084015260c083019190915260e082015261010001610142565b61017e6102ee3660046115de565b61095e565b61017e6109bb565b61032a6103093660046116a4565b60046020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610142565b6101a6610353366004611610565b610b4b565b61017e6103663660046116bd565b610bdd565b61015e6103793660046116a4565b6001602052600090815260409020546001600160a01b031681565b61017e6103a23660046116ef565b610c3c565b600854600954600a5461032a92919083565b6103cc6103c7366004611610565b610d80565b6040516101429190611740565b6103cc6103e7366004611610565b610f6b565b61017e610fe4565b6005546001600160a01b031633148061041757506003546001600160a01b031633145b61043c5760405162461bcd60e51b81526004016104339061178d565b60405180910390fd5b6010805460ff1916911515919091179055565b6001600160a01b0381166000908152600260209081526040808320600401805482518185028101850190935280835284938301828280156104b957602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161049b575b505050505090506000805b8251811015610514576104ef8382815181106104e2576104e26117d9565b6020026020010151610769565b1561050257816104fe81611805565b9250505b8061050c81611805565b9150506104c4565b509392505050565b600754600160a01b900460ff166105455760405162461bcd60e51b815260040161043390611820565b6000828152600160205260409020546001600160a01b0316158061057f57506000828152600160205260409020546001600160a01b031633145b6105c85760405162461bcd60e51b815260206004820152601a602482015279696e7669746520636f646520616c726561647920696e2075736560301b6044820152606401610433565b336000908152600260209081526040808320848452600192839052922054908201546001600160a01b0390911690158061061d575081546001600160a01b031615801561061d57506001600160a01b03811615155b61065f5760405162461bcd60e51b81526020600482015260136024820152721d5cd95c88185b1c9958591e481a9bda5b9959606a1b6044820152606401610433565b600182015461069d5760018083018590554260068401819055600984015560008581526020919091526040902080546001600160a01b031916331790555b6001600160a01b0381161561072d5781546001600160a01b0382166001600160a01b0319918216811784556000908152600260209081526040822060038101805460018181018355918552838520018054861633908117909155600490920180548083018255908552928420909201805490941617909255600a8054909190610727908490611844565b90915550505b60405133906001600160a01b038316907fd8c638d8979e2ba5dba1f0d66246ee4b1c54b838f0e0a2b601365345eb23b05190600090a350505050565b6001600160a01b0380821660009081526002602081815260408084205490941680845284842060050154845260049091529282200154601054919291839060ff16151560011480156107bb5750600082115b801561080657506001600160a01b038084166000908152600260205260408082206006015492881682529020600901546108039162015180916107fd916111a2565b906111b5565b82105b90506001600160a01b0383161580159061083d57506001600160a01b0385166000908152600260208190526040909120015460ff16155b80156108c45750600654604051633af32abf60e01b81526001600160a01b0390911690633af32abf906108749088906004016115b9565b60206040518083038186803b15801561088c57600080fd5b505afa1580156108a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c4919061185c565b801561094b5750600654604051633af32abf60e01b81526001600160a01b0390911690633af32abf906108fb9086906004016115b9565b60206040518083038186803b15801561091357600080fd5b505afa158015610927573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061094b919061185c565b8015610955575080155b95945050505050565b6005546001600160a01b031633148061098157506003546001600160a01b031633145b61099d5760405162461bcd60e51b81526004016104339061178d565b60078054911515600160a01b0260ff60a01b19909216919091179055565b600754600160a01b900460ff166109e45760405162461bcd60e51b815260040161043390611820565b33600090815260026020526040812060040180549091908190610a0990600190611879565b90505b60008112610aba57620186a05a1015610a2457610aba565b6000838281548110610a3857610a386117d9565b6000918252602090912001546001600160a01b03169050610a5881610769565b15610aa757610a688160006111c1565b610a729084611844565b925083805480610a8457610a846118b8565b600082815260209020810160001990810180546001600160a01b03191690550190555b5080610ab2816118ce565b915050610a0c565b508015610b475760075460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb90610af390339085906004016118ec565b602060405180830381600087803b158015610b0d57600080fd5b505af1158015610b21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b45919061185c565b505b5050565b600754600090600160a01b900460ff16610b775760405162461bcd60e51b815260040161043390611820565b610b8082610769565b610bcc5760405162461bcd60e51b815260206004820181905260248201527f75736572206e6f7420656c6c6967626c6520666f7220626f756e7479207965746044820152606401610433565b610bd78260016111c1565b92915050565b6005546001600160a01b0316331480610c0057506003546001600160a01b031633145b610c1c5760405162461bcd60e51b81526004016104339061178d565b600093845260046020526040909320918255600282019290925560010155565b600054610100900460ff1680610c55575060005460ff16155b610cb85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610433565b600054610100900460ff16158015610cda576000805461ffff19166101011790555b60058054336001600160a01b0319918216179091556006805482166001600160a01b0387811691909117909155600780546000805260046020527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ed869055600160a01b6001600160a81b031990911687841617179055600380549092169087161790556010805460ff191690558015610d79576000805461ff00191690555b5050505050565b6001600160a01b0381166000908152600260209081526040808320600401805482518185028101850190935280835260609493830182828015610dec57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610dce575b5050505050905060008060005b8351811015610e665760026000858381518110610e1857610e186117d9565b6020908102919091018101516001600160a01b031682528101919091526040016000206002015460ff16610e545781610e5081611805565b9250505b80610e5e81611805565b915050610df9565b506000816001600160401b03811115610e8157610e81611905565b604051908082528060200260200182016040528015610eaa578160200160208202803683370190505b50905060005b8451811015610f615760026000868381518110610ecf57610ecf6117d9565b6020908102919091018101516001600160a01b031682528101919091526040016000206002015460ff16610f4f57848181518110610f0f57610f0f6117d9565b6020026020010151828581518110610f2957610f296117d9565b6001600160a01b039092166020928302919091019091015283610f4b81611805565b9450505b80610f5981611805565b915050610eb0565b5095945050505050565b6001600160a01b038116600090815260026020908152604091829020600301805483518184028101840190945280845260609392830182828015610fd857602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610fba575b50505050509050919050565b6005546001600160a01b031633148061100757506003546001600160a01b031633145b6110235760405162461bcd60e51b81526004016104339061178d565b600754600160a01b900460ff1661104c5760405162461bcd60e51b815260040161043390611820565b6007546040516370a0823160e01b81526000916001600160a01b0316906370a082319061107d9030906004016115b9565b60206040518083038186803b15801561109557600080fd5b505afa1580156110a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110cd919061191b565b60075460035460405163a9059cbb60e01b81529293506001600160a01b039182169263a9059cbb9261110592169085906004016118ec565b602060405180830381600087803b15801561111f57600080fd5b505af1158015611133573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611157919061185c565b506003546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611191573d6000803e3d6000fd5b50506007805460ff60a01b19169055565b60006111ae8284611934565b9392505050565b60006111ae828461194b565b6001600160a01b038281166000908152600260208181526040808420805460099091015495168085528185206005908101548652600484528286208351608081018552815481526001820154958101959095529485015484840152825160a081019384905295969195919487949390926060850192909160038501919082845b815481526020019060010190808311611241575050505050815250509050600080826040015111801561128e57506001600160a01b03841660009081526002602052604090206006015483115b80156112cc57506001600160a01b0384166000908152600260205260409020600601546112c59062015180906107fd9086906111a2565b8260400151105b6001600160a01b038089166000908152600260208190526040808320909101805460ff191660019081179091559288168252812060070180549394509192611315908490611844565b90915550506020808301516001600160a01b038616600090815260029092526040822060080180549192909161134c908490611844565b90915550506008805460019190600090611367908490611844565b9091555050602082015160098054600090611383908490611844565b90915550508151600090158015906113b7575082516001600160a01b03861660009081526002602052604090206007015410155b80156113c1575081155b1561141a576001600160a01b03851660009081526002602052604081206005018054600192906113f2908490611844565b9091555050506001600160a01b03841660009081526002602052604090204260069091015560015b86156114aa57600754602084015160405163a9059cbb60e01b81526001600160a01b039092169163a9059cbb91611456918991906004016118ec565b602060405180830381600087803b15801561147057600080fd5b505af1158015611484573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a8919061185c565b505b60075460208401516001600160a01b039091169063a9059cbb908a906114d19060026111b5565b6040518363ffffffff1660e01b81526004016114ee9291906118ec565b602060405180830381600087803b15801561150857600080fd5b505af115801561151c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611540919061185c565b506020838101516001600160a01b0387811660008181526002855260409081902060050154815194855294840194909452841515838501529251908b1692917f6081787cd1bd02ab1576c52f03e8710d792d460e7881c3155d77d23893f3768b919081900360600190a350506020015195945050505050565b6001600160a01b0391909116815260200190565b80151581146115db57600080fd5b50565b6000602082840312156115f057600080fd5b81356111ae816115cd565b6001600160a01b03811681146115db57600080fd5b60006020828403121561162257600080fd5b81356111ae816115fb565b600060208083528351808285015260005b8181101561165a5785810183015185820160400152820161163e565b8181111561166c576000604083870101525b50601f01601f1916929092016040019392505050565b6000806040838503121561169557600080fd5b50508035926020909101359150565b6000602082840312156116b657600080fd5b5035919050565b600080600080608085870312156116d357600080fd5b5050823594602084013594506040840135936060013592509050565b6000806000806080858703121561170557600080fd5b8435611710816115fb565b93506020850135611720816115fb565b92506040850135611730816115fb565b9396929550929360600135925050565b6020808252825182820181905260009190848201906040850190845b818110156117815783516001600160a01b03168352928401929184019160010161175c565b50909695505050505050565b6020808252602c908201527f4f6e6c79206f776e6572206f72206176617461722063616e20706572666f726d60408201526b103a3434b99030b1ba34b7b760a11b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415611819576118196117ef565b5060010190565b6020808252600a90820152696e6f742061637469766560b01b604082015260600190565b60008219821115611857576118576117ef565b500190565b60006020828403121561186e57600080fd5b81516111ae816115cd565b60008083128015600160ff1b850184121615611897576118976117ef565b6001600160ff1b03840183138116156118b2576118b26117ef565b50500390565b634e487b7160e01b600052603160045260246000fd5b6000600160ff1b8214156118e4576118e46117ef565b506000190190565b6001600160a01b03929092168252602082015260400190565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561192d57600080fd5b5051919050565b600082821015611946576119466117ef565b500390565b60008261196857634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220629df2a126f6bcc6b6ddea7c10d01c3562ec0f3f9fac97379314b285b0bb274964736f6c63430008080033",
490
490
  "linkReferences": {},
491
491
  "deployedLinkReferences": {}
492
492
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/be3263c5d007e213bd68b492abfc033e.json"
3
+ "buildInfo": "../../../build-info/6baad3eaae28e0c76cfde263b2e57c29.json"
4
4
  }