@venusprotocol/isolated-pools 1.0.0-dev.1 → 1.0.0-dev.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (265) hide show
  1. package/README.md +1 -11
  2. package/artifacts/@openzeppelin/contracts/access/AccessControl.sol/AccessControl.dbg.json +4 -0
  3. package/artifacts/@openzeppelin/contracts/access/AccessControl.sol/AccessControl.json +215 -0
  4. package/artifacts/@openzeppelin/contracts/access/IAccessControl.sol/IAccessControl.dbg.json +4 -0
  5. package/artifacts/@openzeppelin/contracts/access/IAccessControl.sol/IAccessControl.json +183 -0
  6. package/artifacts/@openzeppelin/contracts/access/Ownable.sol/Ownable.dbg.json +4 -0
  7. package/artifacts/@openzeppelin/contracts/access/Ownable.sol/Ownable.json +63 -0
  8. package/artifacts/@openzeppelin/contracts/interfaces/IERC1967.sol/IERC1967.dbg.json +4 -0
  9. package/artifacts/@openzeppelin/contracts/interfaces/IERC1967.sol/IERC1967.json +56 -0
  10. package/artifacts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.dbg.json +4 -0
  11. package/artifacts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.json +24 -0
  12. package/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol/ERC1967Upgrade.dbg.json +4 -0
  13. package/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol/ERC1967Upgrade.json +56 -0
  14. package/artifacts/@openzeppelin/contracts/proxy/Proxy.sol/Proxy.dbg.json +4 -0
  15. package/artifacts/@openzeppelin/contracts/proxy/Proxy.sol/Proxy.json +19 -0
  16. package/artifacts/@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol/BeaconProxy.dbg.json +4 -0
  17. package/artifacts/@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol/BeaconProxy.json +80 -0
  18. package/artifacts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.dbg.json +4 -0
  19. package/artifacts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.json +24 -0
  20. package/artifacts/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol/UpgradeableBeacon.dbg.json +4 -0
  21. package/artifacts/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol/UpgradeableBeacon.json +113 -0
  22. package/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.dbg.json +4 -0
  23. package/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.json +297 -0
  24. package/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json +4 -0
  25. package/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.json +194 -0
  26. package/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.dbg.json +4 -0
  27. package/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.json +233 -0
  28. package/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json +4 -0
  29. package/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.json +10 -0
  30. package/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json +4 -0
  31. package/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.json +10 -0
  32. package/artifacts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.dbg.json +4 -0
  33. package/artifacts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.json +10 -0
  34. package/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json +4 -0
  35. package/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.json +10 -0
  36. package/artifacts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.dbg.json +4 -0
  37. package/artifacts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.json +30 -0
  38. package/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.dbg.json +4 -0
  39. package/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.json +30 -0
  40. package/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.dbg.json +4 -0
  41. package/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.json +10 -0
  42. package/artifacts/@openzeppelin/contracts/utils/math/SignedMath.sol/SignedMath.dbg.json +4 -0
  43. package/artifacts/@openzeppelin/contracts/utils/math/SignedMath.sol/SignedMath.json +10 -0
  44. package/artifacts/@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol/Ownable2StepUpgradeable.dbg.json +4 -0
  45. package/artifacts/@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol/Ownable2StepUpgradeable.json +115 -0
  46. package/artifacts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.dbg.json +4 -0
  47. package/artifacts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.json +76 -0
  48. package/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.dbg.json +4 -0
  49. package/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.json +24 -0
  50. package/artifacts/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol/ReentrancyGuardUpgradeable.dbg.json +4 -0
  51. package/artifacts/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol/ReentrancyGuardUpgradeable.json +24 -0
  52. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol/IERC20Upgradeable.dbg.json +4 -0
  53. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol/IERC20Upgradeable.json +194 -0
  54. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol/IERC20PermitUpgradeable.dbg.json +4 -0
  55. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol/IERC20PermitUpgradeable.json +86 -0
  56. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol/SafeERC20Upgradeable.dbg.json +4 -0
  57. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol/SafeERC20Upgradeable.json +10 -0
  58. package/artifacts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.dbg.json +4 -0
  59. package/artifacts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.json +10 -0
  60. package/artifacts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.dbg.json +4 -0
  61. package/artifacts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.json +24 -0
  62. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/AccessControlManager.sol/AccessControlManager.dbg.json +4 -0
  63. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/AccessControlManager.sol/AccessControlManager.json +369 -0
  64. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol/AccessControlledV8.dbg.json +4 -0
  65. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol/AccessControlledV8.json +181 -0
  66. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol/IAccessControlManagerV8.dbg.json +4 -0
  67. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol/IAccessControlManagerV8.json +282 -0
  68. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/BoundValidatorInterface.dbg.json +4 -0
  69. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/BoundValidatorInterface.json +40 -0
  70. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/OracleInterface.dbg.json +4 -0
  71. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/OracleInterface.json +30 -0
  72. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/ResilientOracleInterface.dbg.json +4 -0
  73. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/ResilientOracleInterface.json +43 -0
  74. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/TwapInterface.dbg.json +4 -0
  75. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/TwapInterface.json +49 -0
  76. package/artifacts/build-info/5d0b3e7c7d317c28bfc8eca20c31f64e.json +1 -0
  77. package/artifacts/build-info/f19d689bc99e63a20dd2a17a14e2b84a.json +1 -0
  78. package/artifacts/contracts/BaseJumpRateModelV2.sol/BaseJumpRateModelV2.dbg.json +4 -0
  79. package/artifacts/contracts/BaseJumpRateModelV2.sol/BaseJumpRateModelV2.json +276 -0
  80. package/artifacts/contracts/Comptroller.sol/Comptroller.dbg.json +4 -0
  81. package/artifacts/contracts/Comptroller.sol/Comptroller.json +1667 -0
  82. package/artifacts/contracts/ComptrollerInterface.sol/ComptrollerInterface.dbg.json +4 -0
  83. package/artifacts/contracts/ComptrollerInterface.sol/ComptrollerInterface.json +285 -0
  84. package/artifacts/contracts/ComptrollerInterface.sol/ComptrollerViewInterface.dbg.json +4 -0
  85. package/artifacts/contracts/ComptrollerInterface.sol/ComptrollerViewInterface.json +170 -0
  86. package/artifacts/contracts/ComptrollerStorage.sol/ComptrollerStorage.dbg.json +4 -0
  87. package/artifacts/contracts/ComptrollerStorage.sol/ComptrollerStorage.json +173 -0
  88. package/artifacts/contracts/ErrorReporter.sol/TokenErrorReporter.dbg.json +4 -0
  89. package/artifacts/contracts/ErrorReporter.sol/TokenErrorReporter.json +156 -0
  90. package/artifacts/contracts/ExponentialNoError.sol/ExponentialNoError.dbg.json +4 -0
  91. package/artifacts/contracts/ExponentialNoError.sol/ExponentialNoError.json +10 -0
  92. package/artifacts/contracts/IPancakeswapV2Router.sol/IPancakeswapV2Router.dbg.json +4 -0
  93. package/artifacts/contracts/IPancakeswapV2Router.sol/IPancakeswapV2Router.json +50 -0
  94. package/artifacts/contracts/InterestRateModel.sol/InterestRateModel.dbg.json +4 -0
  95. package/artifacts/contracts/InterestRateModel.sol/InterestRateModel.json +97 -0
  96. package/artifacts/contracts/JumpRateModelV2.sol/JumpRateModelV2.dbg.json +4 -0
  97. package/artifacts/contracts/JumpRateModelV2.sol/JumpRateModelV2.json +307 -0
  98. package/artifacts/contracts/Lens/PoolLens.sol/PoolLens.dbg.json +4 -0
  99. package/artifacts/contracts/Lens/PoolLens.sol/PoolLens.json +1087 -0
  100. package/artifacts/contracts/MaxLoopsLimitHelper.sol/MaxLoopsLimitHelper.dbg.json +4 -0
  101. package/artifacts/contracts/MaxLoopsLimitHelper.sol/MaxLoopsLimitHelper.json +59 -0
  102. package/artifacts/contracts/Pool/PoolRegistry.sol/PoolRegistry.dbg.json +4 -0
  103. package/artifacts/contracts/Pool/PoolRegistry.sol/PoolRegistry.json +689 -0
  104. package/artifacts/contracts/Pool/PoolRegistryInterface.sol/PoolRegistryInterface.dbg.json +4 -0
  105. package/artifacts/contracts/Pool/PoolRegistryInterface.sol/PoolRegistryInterface.json +176 -0
  106. package/artifacts/contracts/Rewards/RewardsDistributor.sol/RewardsDistributor.dbg.json +4 -0
  107. package/artifacts/contracts/Rewards/RewardsDistributor.sol/RewardsDistributor.json +928 -0
  108. package/artifacts/contracts/RiskFund/IProtocolShareReserve.sol/IProtocolShareReserve.dbg.json +4 -0
  109. package/artifacts/contracts/RiskFund/IProtocolShareReserve.sol/IProtocolShareReserve.json +29 -0
  110. package/artifacts/contracts/RiskFund/IRiskFund.sol/IRiskFund.dbg.json +4 -0
  111. package/artifacts/contracts/RiskFund/IRiskFund.sol/IRiskFund.json +101 -0
  112. package/artifacts/contracts/RiskFund/ProtocolShareReserve.sol/ProtocolShareReserve.dbg.json +4 -0
  113. package/artifacts/contracts/RiskFund/ProtocolShareReserve.sol/ProtocolShareReserve.json +296 -0
  114. package/artifacts/contracts/RiskFund/ReserveHelpers.sol/ReserveHelpers.dbg.json +4 -0
  115. package/artifacts/contracts/RiskFund/ReserveHelpers.sol/ReserveHelpers.json +83 -0
  116. package/artifacts/contracts/RiskFund/RiskFund.sol/RiskFund.dbg.json +4 -0
  117. package/artifacts/contracts/RiskFund/RiskFund.sol/RiskFund.json +596 -0
  118. package/artifacts/contracts/Shortfall/IShortfall.sol/IShortfall.dbg.json +4 -0
  119. package/artifacts/contracts/Shortfall/IShortfall.sol/IShortfall.json +24 -0
  120. package/artifacts/contracts/Shortfall/Shortfall.sol/Shortfall.dbg.json +4 -0
  121. package/artifacts/contracts/Shortfall/Shortfall.sol/Shortfall.json +761 -0
  122. package/artifacts/contracts/VToken.sol/VToken.dbg.json +4 -0
  123. package/artifacts/contracts/VToken.sol/VToken.json +1850 -0
  124. package/artifacts/contracts/VTokenInterfaces.sol/VTokenInterface.dbg.json +4 -0
  125. package/artifacts/contracts/VTokenInterfaces.sol/VTokenInterface.json +1398 -0
  126. package/artifacts/contracts/VTokenInterfaces.sol/VTokenStorage.dbg.json +4 -0
  127. package/artifacts/contracts/VTokenInterfaces.sol/VTokenStorage.json +219 -0
  128. package/artifacts/contracts/WhitePaperInterestRateModel.sol/WhitePaperInterestRateModel.dbg.json +4 -0
  129. package/artifacts/contracts/WhitePaperInterestRateModel.sol/WhitePaperInterestRateModel.json +192 -0
  130. package/artifacts/contracts/test/ComptrollerHarness.sol/ComptrollerHarness.dbg.json +4 -0
  131. package/artifacts/contracts/test/ComptrollerHarness.sol/ComptrollerHarness.json +1712 -0
  132. package/artifacts/contracts/test/ComptrollerHarness.sol/EchoTypesComptroller.dbg.json +4 -0
  133. package/artifacts/contracts/test/ComptrollerHarness.sol/EchoTypesComptroller.json +94 -0
  134. package/artifacts/contracts/test/ComptrollerScenario.sol/ComptrollerScenario.dbg.json +4 -0
  135. package/artifacts/contracts/test/ComptrollerScenario.sol/ComptrollerScenario.json +1744 -0
  136. package/artifacts/contracts/test/ERC20.sol/ERC20.dbg.json +4 -0
  137. package/artifacts/contracts/test/ERC20.sol/ERC20.json +194 -0
  138. package/artifacts/contracts/test/ERC20.sol/ERC20Base.dbg.json +4 -0
  139. package/artifacts/contracts/test/ERC20.sol/ERC20Base.json +141 -0
  140. package/artifacts/contracts/test/ERC20.sol/ERC20Harness.dbg.json +4 -0
  141. package/artifacts/contracts/test/ERC20.sol/ERC20Harness.json +351 -0
  142. package/artifacts/contracts/test/ERC20.sol/ERC20NS.dbg.json +4 -0
  143. package/artifacts/contracts/test/ERC20.sol/ERC20NS.json +182 -0
  144. package/artifacts/contracts/test/ERC20.sol/NonStandardToken.dbg.json +4 -0
  145. package/artifacts/contracts/test/ERC20.sol/NonStandardToken.json +247 -0
  146. package/artifacts/contracts/test/ERC20.sol/StandardToken.dbg.json +4 -0
  147. package/artifacts/contracts/test/ERC20.sol/StandardToken.json +259 -0
  148. package/artifacts/contracts/test/EvilToken.sol/EvilToken.dbg.json +4 -0
  149. package/artifacts/contracts/test/EvilToken.sol/EvilToken.json +303 -0
  150. package/artifacts/contracts/test/FaucetToken.sol/FaucetNonStandardToken.dbg.json +4 -0
  151. package/artifacts/contracts/test/FaucetToken.sol/FaucetNonStandardToken.json +265 -0
  152. package/artifacts/contracts/test/FaucetToken.sol/FaucetToken.dbg.json +4 -0
  153. package/artifacts/contracts/test/FaucetToken.sol/FaucetToken.json +277 -0
  154. package/artifacts/contracts/test/FaucetToken.sol/FaucetTokenReEntrantHarness.dbg.json +4 -0
  155. package/artifacts/contracts/test/FaucetToken.sol/FaucetTokenReEntrantHarness.json +313 -0
  156. package/artifacts/contracts/test/FeeToken.sol/FeeToken.dbg.json +4 -0
  157. package/artifacts/contracts/test/FeeToken.sol/FeeToken.json +313 -0
  158. package/artifacts/contracts/test/HarnessMaxLoopsLimitHelper.sol/HarnessMaxLoopsLimitHelper.dbg.json +4 -0
  159. package/artifacts/contracts/test/HarnessMaxLoopsLimitHelper.sol/HarnessMaxLoopsLimitHelper.json +85 -0
  160. package/artifacts/contracts/test/MockDeflationaryToken.sol/MockDeflatingToken.dbg.json +4 -0
  161. package/artifacts/contracts/test/MockDeflationaryToken.sol/MockDeflatingToken.json +332 -0
  162. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IERC20.dbg.json +4 -0
  163. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IERC20.json +233 -0
  164. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakeFactory.dbg.json +4 -0
  165. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakeFactory.json +187 -0
  166. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakePair.dbg.json +4 -0
  167. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakePair.json +668 -0
  168. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakeRouter01.dbg.json +4 -0
  169. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakeRouter01.json +760 -0
  170. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakeRouter02.dbg.json +4 -0
  171. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakeRouter02.json +962 -0
  172. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IWETH.dbg.json +4 -0
  173. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IWETH.json +55 -0
  174. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/PancakeLibrary.dbg.json +4 -0
  175. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/PancakeLibrary.json +10 -0
  176. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/PancakeRouter.dbg.json +4 -0
  177. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/PancakeRouter.json +982 -0
  178. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/SafeMath.dbg.json +4 -0
  179. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/SafeMath.json +10 -0
  180. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/TransferHelper.dbg.json +4 -0
  181. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/TransferHelper.json +10 -0
  182. package/artifacts/contracts/test/Mocks/MockPriceOracle.sol/MockPriceOracle.dbg.json +4 -0
  183. package/artifacts/contracts/test/Mocks/MockPriceOracle.sol/MockPriceOracle.json +85 -0
  184. package/artifacts/contracts/test/Mocks/MockToken.sol/MockToken.dbg.json +4 -0
  185. package/artifacts/contracts/test/Mocks/MockToken.sol/MockToken.json +315 -0
  186. package/artifacts/contracts/test/SafeMath.sol/SafeMath.dbg.json +4 -0
  187. package/artifacts/contracts/test/SafeMath.sol/SafeMath.json +10 -0
  188. package/artifacts/contracts/test/UpgradedVToken.sol/UpgradedVToken.dbg.json +4 -0
  189. package/artifacts/contracts/test/UpgradedVToken.sol/UpgradedVToken.json +1946 -0
  190. package/artifacts/contracts/test/VTokenHarness.sol/VTokenHarness.dbg.json +4 -0
  191. package/artifacts/contracts/test/VTokenHarness.sol/VTokenHarness.json +2306 -0
  192. package/contracts/BaseJumpRateModelV2.sol +4 -3
  193. package/contracts/Comptroller.sol +40 -15
  194. package/contracts/ComptrollerInterface.sol +10 -0
  195. package/contracts/ComptrollerStorage.sol +5 -0
  196. package/contracts/ErrorReporter.sol +5 -0
  197. package/contracts/ExponentialNoError.sol +0 -7
  198. package/contracts/Lens/PoolLens.sol +13 -0
  199. package/contracts/MaxLoopsLimitHelper.sol +5 -0
  200. package/contracts/Pool/PoolRegistry.sol +58 -206
  201. package/contracts/Pool/PoolRegistryInterface.sol +12 -7
  202. package/contracts/Rewards/RewardsDistributor.sol +15 -0
  203. package/contracts/RiskFund/IProtocolShareReserve.sol +5 -0
  204. package/contracts/RiskFund/IRiskFund.sol +5 -0
  205. package/contracts/RiskFund/ProtocolShareReserve.sol +5 -0
  206. package/contracts/RiskFund/ReserveHelpers.sol +5 -0
  207. package/contracts/RiskFund/RiskFund.sol +5 -5
  208. package/contracts/Shortfall/IShortfall.sol +5 -0
  209. package/contracts/Shortfall/Shortfall.sol +33 -22
  210. package/contracts/VToken.sol +31 -9
  211. package/contracts/VTokenInterfaces.sol +10 -0
  212. package/contracts/WhitePaperInterestRateModel.sol +1 -1
  213. package/contracts/lib/imports.sol +11 -0
  214. package/contracts/test/MockDeflationaryToken.sol +113 -0
  215. package/dist/deploy/001-deploy-mock-tokens.d.ts +3 -0
  216. package/dist/deploy/001-deploy-mock-tokens.js +23 -0
  217. package/dist/deploy/002-price-oracle.d.ts +2 -0
  218. package/dist/deploy/002-price-oracle.js +9 -0
  219. package/dist/deploy/003-price-oracle-configure-feeds.d.ts +2 -0
  220. package/dist/deploy/003-price-oracle-configure-feeds.js +9 -0
  221. package/{deploy/004-swap-router.ts → dist/deploy/004-swap-router.d.ts} +0 -3
  222. package/dist/deploy/004-swap-router.js +8 -0
  223. package/dist/deploy/005-access-control.d.ts +3 -0
  224. package/dist/deploy/005-access-control.js +16 -0
  225. package/dist/deploy/006-deploy-factories.d.ts +3 -0
  226. package/dist/deploy/006-deploy-factories.js +37 -0
  227. package/dist/deploy/007-access-control-configure.d.ts +3 -0
  228. package/dist/deploy/007-access-control-configure.js +69 -0
  229. package/dist/deploy/008-deploy-pool-lens.d.ts +3 -0
  230. package/dist/deploy/008-deploy-pool-lens.js +15 -0
  231. package/dist/deploy/009-deploy-pools.d.ts +3 -0
  232. package/dist/deploy/009-deploy-pools.js +186 -0
  233. package/dist/deploy/010-rewards.d.ts +3 -0
  234. package/dist/deploy/010-rewards.js +76 -0
  235. package/dist/deploy/011-transfer-pools-ownership.d.ts +3 -0
  236. package/dist/deploy/011-transfer-pools-ownership.js +75 -0
  237. package/dist/deploy/012-riskfund-protocolshare.d.ts +3 -0
  238. package/dist/deploy/012-riskfund-protocolshare.js +139 -0
  239. package/dist/deploy/013-transfer-funds-ownership.d.ts +3 -0
  240. package/dist/deploy/013-transfer-funds-ownership.js +46 -0
  241. package/dist/hardhat.config.d.ts +14 -0
  242. package/dist/hardhat.config.js +237 -0
  243. package/dist/helpers/deploymentConfig.d.ts +59 -0
  244. package/dist/helpers/deploymentConfig.js +836 -0
  245. package/dist/helpers/utils.d.ts +3 -0
  246. package/dist/helpers/utils.js +28 -0
  247. package/package.json +3 -11
  248. package/contracts/Factories/JumpRateModelFactory.sol +0 -26
  249. package/contracts/Factories/VTokenProxyFactory.sol +0 -53
  250. package/contracts/Factories/WhitePaperInterestRateModelFactory.sol +0 -12
  251. package/contracts/Proxy/UpgradeableBeacon.sol +0 -10
  252. package/deploy/001-deploy-mock-tokens.ts +0 -29
  253. package/deploy/002-price-oracle.ts +0 -7
  254. package/deploy/003-price-oracle-configure-feeds.ts +0 -7
  255. package/deploy/005-access-control.ts +0 -20
  256. package/deploy/006-deploy-factories.ts +0 -82
  257. package/deploy/007-access-control-configure.ts +0 -142
  258. package/deploy/008-deploy-pool-lens.ts +0 -19
  259. package/deploy/009-deploy-pools.ts +0 -171
  260. package/deploy/010-rewards.ts +0 -84
  261. package/deploy/011-transfer-pools-ownership.ts +0 -93
  262. package/deploy/012-riskfund-protocolshare.ts +0 -140
  263. package/deploy/013-transfer-funds-ownership.ts +0 -63
  264. package/helpers/deploymentConfig.ts +0 -897
  265. package/helpers/utils.ts +0 -24
@@ -0,0 +1,1744 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "ComptrollerScenario",
4
+ "sourceName": "contracts/test/ComptrollerScenario.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "address",
10
+ "name": "_poolRegistry",
11
+ "type": "address"
12
+ }
13
+ ],
14
+ "stateMutability": "nonpayable",
15
+ "type": "constructor"
16
+ },
17
+ {
18
+ "inputs": [
19
+ {
20
+ "internalType": "address",
21
+ "name": "market",
22
+ "type": "address"
23
+ },
24
+ {
25
+ "internalType": "enum ComptrollerStorage.Action",
26
+ "name": "action",
27
+ "type": "uint8"
28
+ }
29
+ ],
30
+ "name": "ActionPaused",
31
+ "type": "error"
32
+ },
33
+ {
34
+ "inputs": [
35
+ {
36
+ "internalType": "address",
37
+ "name": "market",
38
+ "type": "address"
39
+ },
40
+ {
41
+ "internalType": "uint256",
42
+ "name": "cap",
43
+ "type": "uint256"
44
+ }
45
+ ],
46
+ "name": "BorrowCapExceeded",
47
+ "type": "error"
48
+ },
49
+ {
50
+ "inputs": [
51
+ {
52
+ "internalType": "uint256",
53
+ "name": "expectedLessThanOrEqualTo",
54
+ "type": "uint256"
55
+ },
56
+ {
57
+ "internalType": "uint256",
58
+ "name": "actual",
59
+ "type": "uint256"
60
+ }
61
+ ],
62
+ "name": "CollateralExceedsThreshold",
63
+ "type": "error"
64
+ },
65
+ {
66
+ "inputs": [],
67
+ "name": "ComptrollerMismatch",
68
+ "type": "error"
69
+ },
70
+ {
71
+ "inputs": [
72
+ {
73
+ "internalType": "uint256",
74
+ "name": "collateralToSeize",
75
+ "type": "uint256"
76
+ },
77
+ {
78
+ "internalType": "uint256",
79
+ "name": "availableCollateral",
80
+ "type": "uint256"
81
+ }
82
+ ],
83
+ "name": "InsufficientCollateral",
84
+ "type": "error"
85
+ },
86
+ {
87
+ "inputs": [],
88
+ "name": "InsufficientLiquidity",
89
+ "type": "error"
90
+ },
91
+ {
92
+ "inputs": [],
93
+ "name": "InsufficientShortfall",
94
+ "type": "error"
95
+ },
96
+ {
97
+ "inputs": [],
98
+ "name": "InvalidCollateralFactor",
99
+ "type": "error"
100
+ },
101
+ {
102
+ "inputs": [],
103
+ "name": "InvalidLiquidationThreshold",
104
+ "type": "error"
105
+ },
106
+ {
107
+ "inputs": [
108
+ {
109
+ "internalType": "address",
110
+ "name": "market",
111
+ "type": "address"
112
+ }
113
+ ],
114
+ "name": "MarketAlreadyListed",
115
+ "type": "error"
116
+ },
117
+ {
118
+ "inputs": [
119
+ {
120
+ "internalType": "address",
121
+ "name": "vToken",
122
+ "type": "address"
123
+ },
124
+ {
125
+ "internalType": "address",
126
+ "name": "user",
127
+ "type": "address"
128
+ }
129
+ ],
130
+ "name": "MarketNotCollateral",
131
+ "type": "error"
132
+ },
133
+ {
134
+ "inputs": [
135
+ {
136
+ "internalType": "address",
137
+ "name": "market",
138
+ "type": "address"
139
+ }
140
+ ],
141
+ "name": "MarketNotListed",
142
+ "type": "error"
143
+ },
144
+ {
145
+ "inputs": [
146
+ {
147
+ "internalType": "uint256",
148
+ "name": "loopsLimit",
149
+ "type": "uint256"
150
+ },
151
+ {
152
+ "internalType": "uint256",
153
+ "name": "requiredLoops",
154
+ "type": "uint256"
155
+ }
156
+ ],
157
+ "name": "MaxLoopsLimitExceeded",
158
+ "type": "error"
159
+ },
160
+ {
161
+ "inputs": [
162
+ {
163
+ "internalType": "uint256",
164
+ "name": "expectedGreaterThan",
165
+ "type": "uint256"
166
+ },
167
+ {
168
+ "internalType": "uint256",
169
+ "name": "actual",
170
+ "type": "uint256"
171
+ }
172
+ ],
173
+ "name": "MinimalCollateralViolated",
174
+ "type": "error"
175
+ },
176
+ {
177
+ "inputs": [],
178
+ "name": "NonzeroBorrowBalance",
179
+ "type": "error"
180
+ },
181
+ {
182
+ "inputs": [
183
+ {
184
+ "internalType": "address",
185
+ "name": "vToken",
186
+ "type": "address"
187
+ }
188
+ ],
189
+ "name": "PriceError",
190
+ "type": "error"
191
+ },
192
+ {
193
+ "inputs": [
194
+ {
195
+ "internalType": "address",
196
+ "name": "vToken",
197
+ "type": "address"
198
+ },
199
+ {
200
+ "internalType": "address",
201
+ "name": "user",
202
+ "type": "address"
203
+ }
204
+ ],
205
+ "name": "SnapshotError",
206
+ "type": "error"
207
+ },
208
+ {
209
+ "inputs": [
210
+ {
211
+ "internalType": "address",
212
+ "name": "market",
213
+ "type": "address"
214
+ },
215
+ {
216
+ "internalType": "uint256",
217
+ "name": "cap",
218
+ "type": "uint256"
219
+ }
220
+ ],
221
+ "name": "SupplyCapExceeded",
222
+ "type": "error"
223
+ },
224
+ {
225
+ "inputs": [],
226
+ "name": "TooMuchRepay",
227
+ "type": "error"
228
+ },
229
+ {
230
+ "inputs": [
231
+ {
232
+ "internalType": "address",
233
+ "name": "sender",
234
+ "type": "address"
235
+ },
236
+ {
237
+ "internalType": "address",
238
+ "name": "calledContract",
239
+ "type": "address"
240
+ },
241
+ {
242
+ "internalType": "string",
243
+ "name": "methodSignature",
244
+ "type": "string"
245
+ }
246
+ ],
247
+ "name": "Unauthorized",
248
+ "type": "error"
249
+ },
250
+ {
251
+ "inputs": [
252
+ {
253
+ "internalType": "address",
254
+ "name": "expectedSender",
255
+ "type": "address"
256
+ },
257
+ {
258
+ "internalType": "address",
259
+ "name": "actualSender",
260
+ "type": "address"
261
+ }
262
+ ],
263
+ "name": "UnexpectedSender",
264
+ "type": "error"
265
+ },
266
+ {
267
+ "inputs": [],
268
+ "name": "ZeroAddressNotAllowed",
269
+ "type": "error"
270
+ },
271
+ {
272
+ "anonymous": false,
273
+ "inputs": [
274
+ {
275
+ "indexed": false,
276
+ "internalType": "contract VToken",
277
+ "name": "vToken",
278
+ "type": "address"
279
+ },
280
+ {
281
+ "indexed": false,
282
+ "internalType": "enum ComptrollerStorage.Action",
283
+ "name": "action",
284
+ "type": "uint8"
285
+ },
286
+ {
287
+ "indexed": false,
288
+ "internalType": "bool",
289
+ "name": "pauseState",
290
+ "type": "bool"
291
+ }
292
+ ],
293
+ "name": "ActionPausedMarket",
294
+ "type": "event"
295
+ },
296
+ {
297
+ "anonymous": false,
298
+ "inputs": [
299
+ {
300
+ "indexed": false,
301
+ "internalType": "uint8",
302
+ "name": "version",
303
+ "type": "uint8"
304
+ }
305
+ ],
306
+ "name": "Initialized",
307
+ "type": "event"
308
+ },
309
+ {
310
+ "anonymous": false,
311
+ "inputs": [
312
+ {
313
+ "indexed": true,
314
+ "internalType": "contract VToken",
315
+ "name": "vToken",
316
+ "type": "address"
317
+ },
318
+ {
319
+ "indexed": true,
320
+ "internalType": "address",
321
+ "name": "account",
322
+ "type": "address"
323
+ }
324
+ ],
325
+ "name": "MarketEntered",
326
+ "type": "event"
327
+ },
328
+ {
329
+ "anonymous": false,
330
+ "inputs": [
331
+ {
332
+ "indexed": true,
333
+ "internalType": "contract VToken",
334
+ "name": "vToken",
335
+ "type": "address"
336
+ },
337
+ {
338
+ "indexed": true,
339
+ "internalType": "address",
340
+ "name": "account",
341
+ "type": "address"
342
+ }
343
+ ],
344
+ "name": "MarketExited",
345
+ "type": "event"
346
+ },
347
+ {
348
+ "anonymous": false,
349
+ "inputs": [
350
+ {
351
+ "indexed": false,
352
+ "internalType": "contract VToken",
353
+ "name": "vToken",
354
+ "type": "address"
355
+ }
356
+ ],
357
+ "name": "MarketSupported",
358
+ "type": "event"
359
+ },
360
+ {
361
+ "anonymous": false,
362
+ "inputs": [
363
+ {
364
+ "indexed": false,
365
+ "internalType": "uint256",
366
+ "name": "oldMaxLoopsLimit",
367
+ "type": "uint256"
368
+ },
369
+ {
370
+ "indexed": false,
371
+ "internalType": "uint256",
372
+ "name": "newmaxLoopsLimit",
373
+ "type": "uint256"
374
+ }
375
+ ],
376
+ "name": "MaxLoopsLimitUpdated",
377
+ "type": "event"
378
+ },
379
+ {
380
+ "anonymous": false,
381
+ "inputs": [
382
+ {
383
+ "indexed": false,
384
+ "internalType": "address",
385
+ "name": "oldAccessControlManager",
386
+ "type": "address"
387
+ },
388
+ {
389
+ "indexed": false,
390
+ "internalType": "address",
391
+ "name": "newAccessControlManager",
392
+ "type": "address"
393
+ }
394
+ ],
395
+ "name": "NewAccessControlManager",
396
+ "type": "event"
397
+ },
398
+ {
399
+ "anonymous": false,
400
+ "inputs": [
401
+ {
402
+ "indexed": true,
403
+ "internalType": "contract VToken",
404
+ "name": "vToken",
405
+ "type": "address"
406
+ },
407
+ {
408
+ "indexed": false,
409
+ "internalType": "uint256",
410
+ "name": "newBorrowCap",
411
+ "type": "uint256"
412
+ }
413
+ ],
414
+ "name": "NewBorrowCap",
415
+ "type": "event"
416
+ },
417
+ {
418
+ "anonymous": false,
419
+ "inputs": [
420
+ {
421
+ "indexed": false,
422
+ "internalType": "uint256",
423
+ "name": "oldCloseFactorMantissa",
424
+ "type": "uint256"
425
+ },
426
+ {
427
+ "indexed": false,
428
+ "internalType": "uint256",
429
+ "name": "newCloseFactorMantissa",
430
+ "type": "uint256"
431
+ }
432
+ ],
433
+ "name": "NewCloseFactor",
434
+ "type": "event"
435
+ },
436
+ {
437
+ "anonymous": false,
438
+ "inputs": [
439
+ {
440
+ "indexed": false,
441
+ "internalType": "contract VToken",
442
+ "name": "vToken",
443
+ "type": "address"
444
+ },
445
+ {
446
+ "indexed": false,
447
+ "internalType": "uint256",
448
+ "name": "oldCollateralFactorMantissa",
449
+ "type": "uint256"
450
+ },
451
+ {
452
+ "indexed": false,
453
+ "internalType": "uint256",
454
+ "name": "newCollateralFactorMantissa",
455
+ "type": "uint256"
456
+ }
457
+ ],
458
+ "name": "NewCollateralFactor",
459
+ "type": "event"
460
+ },
461
+ {
462
+ "anonymous": false,
463
+ "inputs": [
464
+ {
465
+ "indexed": false,
466
+ "internalType": "uint256",
467
+ "name": "oldLiquidationIncentiveMantissa",
468
+ "type": "uint256"
469
+ },
470
+ {
471
+ "indexed": false,
472
+ "internalType": "uint256",
473
+ "name": "newLiquidationIncentiveMantissa",
474
+ "type": "uint256"
475
+ }
476
+ ],
477
+ "name": "NewLiquidationIncentive",
478
+ "type": "event"
479
+ },
480
+ {
481
+ "anonymous": false,
482
+ "inputs": [
483
+ {
484
+ "indexed": false,
485
+ "internalType": "contract VToken",
486
+ "name": "vToken",
487
+ "type": "address"
488
+ },
489
+ {
490
+ "indexed": false,
491
+ "internalType": "uint256",
492
+ "name": "oldLiquidationThresholdMantissa",
493
+ "type": "uint256"
494
+ },
495
+ {
496
+ "indexed": false,
497
+ "internalType": "uint256",
498
+ "name": "newLiquidationThresholdMantissa",
499
+ "type": "uint256"
500
+ }
501
+ ],
502
+ "name": "NewLiquidationThreshold",
503
+ "type": "event"
504
+ },
505
+ {
506
+ "anonymous": false,
507
+ "inputs": [
508
+ {
509
+ "indexed": false,
510
+ "internalType": "uint256",
511
+ "name": "oldMinLiquidatableCollateral",
512
+ "type": "uint256"
513
+ },
514
+ {
515
+ "indexed": false,
516
+ "internalType": "uint256",
517
+ "name": "newMinLiquidatableCollateral",
518
+ "type": "uint256"
519
+ }
520
+ ],
521
+ "name": "NewMinLiquidatableCollateral",
522
+ "type": "event"
523
+ },
524
+ {
525
+ "anonymous": false,
526
+ "inputs": [
527
+ {
528
+ "indexed": false,
529
+ "internalType": "contract ResilientOracleInterface",
530
+ "name": "oldPriceOracle",
531
+ "type": "address"
532
+ },
533
+ {
534
+ "indexed": false,
535
+ "internalType": "contract ResilientOracleInterface",
536
+ "name": "newPriceOracle",
537
+ "type": "address"
538
+ }
539
+ ],
540
+ "name": "NewPriceOracle",
541
+ "type": "event"
542
+ },
543
+ {
544
+ "anonymous": false,
545
+ "inputs": [
546
+ {
547
+ "indexed": true,
548
+ "internalType": "address",
549
+ "name": "rewardsDistributor",
550
+ "type": "address"
551
+ }
552
+ ],
553
+ "name": "NewRewardsDistributor",
554
+ "type": "event"
555
+ },
556
+ {
557
+ "anonymous": false,
558
+ "inputs": [
559
+ {
560
+ "indexed": true,
561
+ "internalType": "contract VToken",
562
+ "name": "vToken",
563
+ "type": "address"
564
+ },
565
+ {
566
+ "indexed": false,
567
+ "internalType": "uint256",
568
+ "name": "newSupplyCap",
569
+ "type": "uint256"
570
+ }
571
+ ],
572
+ "name": "NewSupplyCap",
573
+ "type": "event"
574
+ },
575
+ {
576
+ "anonymous": false,
577
+ "inputs": [
578
+ {
579
+ "indexed": true,
580
+ "internalType": "address",
581
+ "name": "previousOwner",
582
+ "type": "address"
583
+ },
584
+ {
585
+ "indexed": true,
586
+ "internalType": "address",
587
+ "name": "newOwner",
588
+ "type": "address"
589
+ }
590
+ ],
591
+ "name": "OwnershipTransferStarted",
592
+ "type": "event"
593
+ },
594
+ {
595
+ "anonymous": false,
596
+ "inputs": [
597
+ {
598
+ "indexed": true,
599
+ "internalType": "address",
600
+ "name": "previousOwner",
601
+ "type": "address"
602
+ },
603
+ {
604
+ "indexed": true,
605
+ "internalType": "address",
606
+ "name": "newOwner",
607
+ "type": "address"
608
+ }
609
+ ],
610
+ "name": "OwnershipTransferred",
611
+ "type": "event"
612
+ },
613
+ {
614
+ "inputs": [],
615
+ "name": "acceptOwnership",
616
+ "outputs": [],
617
+ "stateMutability": "nonpayable",
618
+ "type": "function"
619
+ },
620
+ {
621
+ "inputs": [],
622
+ "name": "accessControlManager",
623
+ "outputs": [
624
+ {
625
+ "internalType": "contract IAccessControlManagerV8",
626
+ "name": "",
627
+ "type": "address"
628
+ }
629
+ ],
630
+ "stateMutability": "view",
631
+ "type": "function"
632
+ },
633
+ {
634
+ "inputs": [
635
+ {
636
+ "internalType": "address",
637
+ "name": "",
638
+ "type": "address"
639
+ },
640
+ {
641
+ "internalType": "uint256",
642
+ "name": "",
643
+ "type": "uint256"
644
+ }
645
+ ],
646
+ "name": "accountAssets",
647
+ "outputs": [
648
+ {
649
+ "internalType": "contract VToken",
650
+ "name": "",
651
+ "type": "address"
652
+ }
653
+ ],
654
+ "stateMutability": "view",
655
+ "type": "function"
656
+ },
657
+ {
658
+ "inputs": [
659
+ {
660
+ "internalType": "address",
661
+ "name": "market",
662
+ "type": "address"
663
+ },
664
+ {
665
+ "internalType": "enum ComptrollerStorage.Action",
666
+ "name": "action",
667
+ "type": "uint8"
668
+ }
669
+ ],
670
+ "name": "actionPaused",
671
+ "outputs": [
672
+ {
673
+ "internalType": "bool",
674
+ "name": "",
675
+ "type": "bool"
676
+ }
677
+ ],
678
+ "stateMutability": "view",
679
+ "type": "function"
680
+ },
681
+ {
682
+ "inputs": [
683
+ {
684
+ "internalType": "contract RewardsDistributor",
685
+ "name": "_rewardsDistributor",
686
+ "type": "address"
687
+ }
688
+ ],
689
+ "name": "addRewardsDistributor",
690
+ "outputs": [],
691
+ "stateMutability": "nonpayable",
692
+ "type": "function"
693
+ },
694
+ {
695
+ "inputs": [
696
+ {
697
+ "internalType": "uint256",
698
+ "name": "",
699
+ "type": "uint256"
700
+ }
701
+ ],
702
+ "name": "allMarkets",
703
+ "outputs": [
704
+ {
705
+ "internalType": "contract VToken",
706
+ "name": "",
707
+ "type": "address"
708
+ }
709
+ ],
710
+ "stateMutability": "view",
711
+ "type": "function"
712
+ },
713
+ {
714
+ "inputs": [],
715
+ "name": "blockNumber",
716
+ "outputs": [
717
+ {
718
+ "internalType": "uint256",
719
+ "name": "",
720
+ "type": "uint256"
721
+ }
722
+ ],
723
+ "stateMutability": "view",
724
+ "type": "function"
725
+ },
726
+ {
727
+ "inputs": [
728
+ {
729
+ "internalType": "address",
730
+ "name": "",
731
+ "type": "address"
732
+ }
733
+ ],
734
+ "name": "borrowCaps",
735
+ "outputs": [
736
+ {
737
+ "internalType": "uint256",
738
+ "name": "",
739
+ "type": "uint256"
740
+ }
741
+ ],
742
+ "stateMutability": "view",
743
+ "type": "function"
744
+ },
745
+ {
746
+ "inputs": [
747
+ {
748
+ "internalType": "address",
749
+ "name": "account",
750
+ "type": "address"
751
+ },
752
+ {
753
+ "internalType": "contract VToken",
754
+ "name": "vToken",
755
+ "type": "address"
756
+ }
757
+ ],
758
+ "name": "checkMembership",
759
+ "outputs": [
760
+ {
761
+ "internalType": "bool",
762
+ "name": "",
763
+ "type": "bool"
764
+ }
765
+ ],
766
+ "stateMutability": "view",
767
+ "type": "function"
768
+ },
769
+ {
770
+ "inputs": [],
771
+ "name": "closeFactorMantissa",
772
+ "outputs": [
773
+ {
774
+ "internalType": "uint256",
775
+ "name": "",
776
+ "type": "uint256"
777
+ }
778
+ ],
779
+ "stateMutability": "view",
780
+ "type": "function"
781
+ },
782
+ {
783
+ "inputs": [
784
+ {
785
+ "internalType": "address[]",
786
+ "name": "vTokens",
787
+ "type": "address[]"
788
+ }
789
+ ],
790
+ "name": "enterMarkets",
791
+ "outputs": [
792
+ {
793
+ "internalType": "uint256[]",
794
+ "name": "",
795
+ "type": "uint256[]"
796
+ }
797
+ ],
798
+ "stateMutability": "nonpayable",
799
+ "type": "function"
800
+ },
801
+ {
802
+ "inputs": [
803
+ {
804
+ "internalType": "address",
805
+ "name": "vTokenAddress",
806
+ "type": "address"
807
+ }
808
+ ],
809
+ "name": "exitMarket",
810
+ "outputs": [
811
+ {
812
+ "internalType": "uint256",
813
+ "name": "",
814
+ "type": "uint256"
815
+ }
816
+ ],
817
+ "stateMutability": "nonpayable",
818
+ "type": "function"
819
+ },
820
+ {
821
+ "inputs": [
822
+ {
823
+ "internalType": "uint256",
824
+ "name": "blocks",
825
+ "type": "uint256"
826
+ }
827
+ ],
828
+ "name": "fastForward",
829
+ "outputs": [
830
+ {
831
+ "internalType": "uint256",
832
+ "name": "",
833
+ "type": "uint256"
834
+ }
835
+ ],
836
+ "stateMutability": "nonpayable",
837
+ "type": "function"
838
+ },
839
+ {
840
+ "inputs": [
841
+ {
842
+ "internalType": "address",
843
+ "name": "account",
844
+ "type": "address"
845
+ }
846
+ ],
847
+ "name": "getAccountLiquidity",
848
+ "outputs": [
849
+ {
850
+ "internalType": "uint256",
851
+ "name": "error",
852
+ "type": "uint256"
853
+ },
854
+ {
855
+ "internalType": "uint256",
856
+ "name": "liquidity",
857
+ "type": "uint256"
858
+ },
859
+ {
860
+ "internalType": "uint256",
861
+ "name": "shortfall",
862
+ "type": "uint256"
863
+ }
864
+ ],
865
+ "stateMutability": "view",
866
+ "type": "function"
867
+ },
868
+ {
869
+ "inputs": [],
870
+ "name": "getAllMarkets",
871
+ "outputs": [
872
+ {
873
+ "internalType": "contract VToken[]",
874
+ "name": "",
875
+ "type": "address[]"
876
+ }
877
+ ],
878
+ "stateMutability": "view",
879
+ "type": "function"
880
+ },
881
+ {
882
+ "inputs": [
883
+ {
884
+ "internalType": "address",
885
+ "name": "account",
886
+ "type": "address"
887
+ }
888
+ ],
889
+ "name": "getAssetsIn",
890
+ "outputs": [
891
+ {
892
+ "internalType": "contract VToken[]",
893
+ "name": "",
894
+ "type": "address[]"
895
+ }
896
+ ],
897
+ "stateMutability": "view",
898
+ "type": "function"
899
+ },
900
+ {
901
+ "inputs": [
902
+ {
903
+ "internalType": "address",
904
+ "name": "account",
905
+ "type": "address"
906
+ }
907
+ ],
908
+ "name": "getBorrowingPower",
909
+ "outputs": [
910
+ {
911
+ "internalType": "uint256",
912
+ "name": "error",
913
+ "type": "uint256"
914
+ },
915
+ {
916
+ "internalType": "uint256",
917
+ "name": "liquidity",
918
+ "type": "uint256"
919
+ },
920
+ {
921
+ "internalType": "uint256",
922
+ "name": "shortfall",
923
+ "type": "uint256"
924
+ }
925
+ ],
926
+ "stateMutability": "view",
927
+ "type": "function"
928
+ },
929
+ {
930
+ "inputs": [
931
+ {
932
+ "internalType": "address",
933
+ "name": "account",
934
+ "type": "address"
935
+ },
936
+ {
937
+ "internalType": "address",
938
+ "name": "vTokenModify",
939
+ "type": "address"
940
+ },
941
+ {
942
+ "internalType": "uint256",
943
+ "name": "redeemTokens",
944
+ "type": "uint256"
945
+ },
946
+ {
947
+ "internalType": "uint256",
948
+ "name": "borrowAmount",
949
+ "type": "uint256"
950
+ }
951
+ ],
952
+ "name": "getHypotheticalAccountLiquidity",
953
+ "outputs": [
954
+ {
955
+ "internalType": "uint256",
956
+ "name": "error",
957
+ "type": "uint256"
958
+ },
959
+ {
960
+ "internalType": "uint256",
961
+ "name": "liquidity",
962
+ "type": "uint256"
963
+ },
964
+ {
965
+ "internalType": "uint256",
966
+ "name": "shortfall",
967
+ "type": "uint256"
968
+ }
969
+ ],
970
+ "stateMutability": "view",
971
+ "type": "function"
972
+ },
973
+ {
974
+ "inputs": [],
975
+ "name": "getRewardDistributors",
976
+ "outputs": [
977
+ {
978
+ "internalType": "contract RewardsDistributor[]",
979
+ "name": "",
980
+ "type": "address[]"
981
+ }
982
+ ],
983
+ "stateMutability": "view",
984
+ "type": "function"
985
+ },
986
+ {
987
+ "inputs": [
988
+ {
989
+ "internalType": "address",
990
+ "name": "vToken",
991
+ "type": "address"
992
+ }
993
+ ],
994
+ "name": "getRewardsByMarket",
995
+ "outputs": [
996
+ {
997
+ "components": [
998
+ {
999
+ "internalType": "address",
1000
+ "name": "rewardToken",
1001
+ "type": "address"
1002
+ },
1003
+ {
1004
+ "internalType": "uint256",
1005
+ "name": "supplySpeed",
1006
+ "type": "uint256"
1007
+ },
1008
+ {
1009
+ "internalType": "uint256",
1010
+ "name": "borrowSpeed",
1011
+ "type": "uint256"
1012
+ }
1013
+ ],
1014
+ "internalType": "struct ComptrollerStorage.RewardSpeeds[]",
1015
+ "name": "rewardSpeeds",
1016
+ "type": "tuple[]"
1017
+ }
1018
+ ],
1019
+ "stateMutability": "view",
1020
+ "type": "function"
1021
+ },
1022
+ {
1023
+ "inputs": [
1024
+ {
1025
+ "internalType": "address",
1026
+ "name": "user",
1027
+ "type": "address"
1028
+ }
1029
+ ],
1030
+ "name": "healAccount",
1031
+ "outputs": [],
1032
+ "stateMutability": "nonpayable",
1033
+ "type": "function"
1034
+ },
1035
+ {
1036
+ "inputs": [
1037
+ {
1038
+ "internalType": "uint256",
1039
+ "name": "loopLimit",
1040
+ "type": "uint256"
1041
+ },
1042
+ {
1043
+ "internalType": "address",
1044
+ "name": "accessControlManager",
1045
+ "type": "address"
1046
+ }
1047
+ ],
1048
+ "name": "initialize",
1049
+ "outputs": [],
1050
+ "stateMutability": "nonpayable",
1051
+ "type": "function"
1052
+ },
1053
+ {
1054
+ "inputs": [],
1055
+ "name": "isComptroller",
1056
+ "outputs": [
1057
+ {
1058
+ "internalType": "bool",
1059
+ "name": "",
1060
+ "type": "bool"
1061
+ }
1062
+ ],
1063
+ "stateMutability": "pure",
1064
+ "type": "function"
1065
+ },
1066
+ {
1067
+ "inputs": [
1068
+ {
1069
+ "internalType": "contract VToken",
1070
+ "name": "vToken",
1071
+ "type": "address"
1072
+ }
1073
+ ],
1074
+ "name": "isDeprecated",
1075
+ "outputs": [
1076
+ {
1077
+ "internalType": "bool",
1078
+ "name": "",
1079
+ "type": "bool"
1080
+ }
1081
+ ],
1082
+ "stateMutability": "view",
1083
+ "type": "function"
1084
+ },
1085
+ {
1086
+ "inputs": [
1087
+ {
1088
+ "internalType": "contract VToken",
1089
+ "name": "vToken",
1090
+ "type": "address"
1091
+ }
1092
+ ],
1093
+ "name": "isMarketListed",
1094
+ "outputs": [
1095
+ {
1096
+ "internalType": "bool",
1097
+ "name": "",
1098
+ "type": "bool"
1099
+ }
1100
+ ],
1101
+ "stateMutability": "view",
1102
+ "type": "function"
1103
+ },
1104
+ {
1105
+ "inputs": [
1106
+ {
1107
+ "internalType": "address",
1108
+ "name": "borrower",
1109
+ "type": "address"
1110
+ },
1111
+ {
1112
+ "components": [
1113
+ {
1114
+ "internalType": "contract VToken",
1115
+ "name": "vTokenCollateral",
1116
+ "type": "address"
1117
+ },
1118
+ {
1119
+ "internalType": "contract VToken",
1120
+ "name": "vTokenBorrowed",
1121
+ "type": "address"
1122
+ },
1123
+ {
1124
+ "internalType": "uint256",
1125
+ "name": "repayAmount",
1126
+ "type": "uint256"
1127
+ }
1128
+ ],
1129
+ "internalType": "struct ComptrollerStorage.LiquidationOrder[]",
1130
+ "name": "orders",
1131
+ "type": "tuple[]"
1132
+ }
1133
+ ],
1134
+ "name": "liquidateAccount",
1135
+ "outputs": [],
1136
+ "stateMutability": "nonpayable",
1137
+ "type": "function"
1138
+ },
1139
+ {
1140
+ "inputs": [
1141
+ {
1142
+ "internalType": "address",
1143
+ "name": "vTokenBorrowed",
1144
+ "type": "address"
1145
+ },
1146
+ {
1147
+ "internalType": "address",
1148
+ "name": "vTokenCollateral",
1149
+ "type": "address"
1150
+ },
1151
+ {
1152
+ "internalType": "uint256",
1153
+ "name": "actualRepayAmount",
1154
+ "type": "uint256"
1155
+ }
1156
+ ],
1157
+ "name": "liquidateCalculateSeizeTokens",
1158
+ "outputs": [
1159
+ {
1160
+ "internalType": "uint256",
1161
+ "name": "error",
1162
+ "type": "uint256"
1163
+ },
1164
+ {
1165
+ "internalType": "uint256",
1166
+ "name": "tokensToSeize",
1167
+ "type": "uint256"
1168
+ }
1169
+ ],
1170
+ "stateMutability": "view",
1171
+ "type": "function"
1172
+ },
1173
+ {
1174
+ "inputs": [],
1175
+ "name": "liquidationIncentiveMantissa",
1176
+ "outputs": [
1177
+ {
1178
+ "internalType": "uint256",
1179
+ "name": "",
1180
+ "type": "uint256"
1181
+ }
1182
+ ],
1183
+ "stateMutability": "view",
1184
+ "type": "function"
1185
+ },
1186
+ {
1187
+ "inputs": [
1188
+ {
1189
+ "internalType": "address",
1190
+ "name": "",
1191
+ "type": "address"
1192
+ }
1193
+ ],
1194
+ "name": "markets",
1195
+ "outputs": [
1196
+ {
1197
+ "internalType": "bool",
1198
+ "name": "isListed",
1199
+ "type": "bool"
1200
+ },
1201
+ {
1202
+ "internalType": "uint256",
1203
+ "name": "collateralFactorMantissa",
1204
+ "type": "uint256"
1205
+ },
1206
+ {
1207
+ "internalType": "uint256",
1208
+ "name": "liquidationThresholdMantissa",
1209
+ "type": "uint256"
1210
+ }
1211
+ ],
1212
+ "stateMutability": "view",
1213
+ "type": "function"
1214
+ },
1215
+ {
1216
+ "inputs": [],
1217
+ "name": "maxLoopsLimit",
1218
+ "outputs": [
1219
+ {
1220
+ "internalType": "uint256",
1221
+ "name": "",
1222
+ "type": "uint256"
1223
+ }
1224
+ ],
1225
+ "stateMutability": "view",
1226
+ "type": "function"
1227
+ },
1228
+ {
1229
+ "inputs": [
1230
+ {
1231
+ "internalType": "contract VToken",
1232
+ "name": "vToken",
1233
+ "type": "address"
1234
+ }
1235
+ ],
1236
+ "name": "membershipLength",
1237
+ "outputs": [
1238
+ {
1239
+ "internalType": "uint256",
1240
+ "name": "",
1241
+ "type": "uint256"
1242
+ }
1243
+ ],
1244
+ "stateMutability": "view",
1245
+ "type": "function"
1246
+ },
1247
+ {
1248
+ "inputs": [],
1249
+ "name": "minLiquidatableCollateral",
1250
+ "outputs": [
1251
+ {
1252
+ "internalType": "uint256",
1253
+ "name": "",
1254
+ "type": "uint256"
1255
+ }
1256
+ ],
1257
+ "stateMutability": "view",
1258
+ "type": "function"
1259
+ },
1260
+ {
1261
+ "inputs": [],
1262
+ "name": "oracle",
1263
+ "outputs": [
1264
+ {
1265
+ "internalType": "contract ResilientOracleInterface",
1266
+ "name": "",
1267
+ "type": "address"
1268
+ }
1269
+ ],
1270
+ "stateMutability": "view",
1271
+ "type": "function"
1272
+ },
1273
+ {
1274
+ "inputs": [],
1275
+ "name": "owner",
1276
+ "outputs": [
1277
+ {
1278
+ "internalType": "address",
1279
+ "name": "",
1280
+ "type": "address"
1281
+ }
1282
+ ],
1283
+ "stateMutability": "view",
1284
+ "type": "function"
1285
+ },
1286
+ {
1287
+ "inputs": [],
1288
+ "name": "pendingOwner",
1289
+ "outputs": [
1290
+ {
1291
+ "internalType": "address",
1292
+ "name": "",
1293
+ "type": "address"
1294
+ }
1295
+ ],
1296
+ "stateMutability": "view",
1297
+ "type": "function"
1298
+ },
1299
+ {
1300
+ "inputs": [],
1301
+ "name": "poolRegistry",
1302
+ "outputs": [
1303
+ {
1304
+ "internalType": "address",
1305
+ "name": "",
1306
+ "type": "address"
1307
+ }
1308
+ ],
1309
+ "stateMutability": "view",
1310
+ "type": "function"
1311
+ },
1312
+ {
1313
+ "inputs": [
1314
+ {
1315
+ "internalType": "address",
1316
+ "name": "vToken",
1317
+ "type": "address"
1318
+ },
1319
+ {
1320
+ "internalType": "address",
1321
+ "name": "borrower",
1322
+ "type": "address"
1323
+ },
1324
+ {
1325
+ "internalType": "uint256",
1326
+ "name": "borrowAmount",
1327
+ "type": "uint256"
1328
+ }
1329
+ ],
1330
+ "name": "preBorrowHook",
1331
+ "outputs": [],
1332
+ "stateMutability": "nonpayable",
1333
+ "type": "function"
1334
+ },
1335
+ {
1336
+ "inputs": [
1337
+ {
1338
+ "internalType": "address",
1339
+ "name": "vTokenBorrowed",
1340
+ "type": "address"
1341
+ },
1342
+ {
1343
+ "internalType": "address",
1344
+ "name": "vTokenCollateral",
1345
+ "type": "address"
1346
+ },
1347
+ {
1348
+ "internalType": "address",
1349
+ "name": "borrower",
1350
+ "type": "address"
1351
+ },
1352
+ {
1353
+ "internalType": "uint256",
1354
+ "name": "repayAmount",
1355
+ "type": "uint256"
1356
+ },
1357
+ {
1358
+ "internalType": "bool",
1359
+ "name": "skipLiquidityCheck",
1360
+ "type": "bool"
1361
+ }
1362
+ ],
1363
+ "name": "preLiquidateHook",
1364
+ "outputs": [],
1365
+ "stateMutability": "nonpayable",
1366
+ "type": "function"
1367
+ },
1368
+ {
1369
+ "inputs": [
1370
+ {
1371
+ "internalType": "address",
1372
+ "name": "vToken",
1373
+ "type": "address"
1374
+ },
1375
+ {
1376
+ "internalType": "address",
1377
+ "name": "minter",
1378
+ "type": "address"
1379
+ },
1380
+ {
1381
+ "internalType": "uint256",
1382
+ "name": "mintAmount",
1383
+ "type": "uint256"
1384
+ }
1385
+ ],
1386
+ "name": "preMintHook",
1387
+ "outputs": [],
1388
+ "stateMutability": "nonpayable",
1389
+ "type": "function"
1390
+ },
1391
+ {
1392
+ "inputs": [
1393
+ {
1394
+ "internalType": "address",
1395
+ "name": "vToken",
1396
+ "type": "address"
1397
+ },
1398
+ {
1399
+ "internalType": "address",
1400
+ "name": "redeemer",
1401
+ "type": "address"
1402
+ },
1403
+ {
1404
+ "internalType": "uint256",
1405
+ "name": "redeemTokens",
1406
+ "type": "uint256"
1407
+ }
1408
+ ],
1409
+ "name": "preRedeemHook",
1410
+ "outputs": [],
1411
+ "stateMutability": "nonpayable",
1412
+ "type": "function"
1413
+ },
1414
+ {
1415
+ "inputs": [
1416
+ {
1417
+ "internalType": "address",
1418
+ "name": "vToken",
1419
+ "type": "address"
1420
+ },
1421
+ {
1422
+ "internalType": "address",
1423
+ "name": "borrower",
1424
+ "type": "address"
1425
+ }
1426
+ ],
1427
+ "name": "preRepayHook",
1428
+ "outputs": [],
1429
+ "stateMutability": "nonpayable",
1430
+ "type": "function"
1431
+ },
1432
+ {
1433
+ "inputs": [
1434
+ {
1435
+ "internalType": "address",
1436
+ "name": "vTokenCollateral",
1437
+ "type": "address"
1438
+ },
1439
+ {
1440
+ "internalType": "address",
1441
+ "name": "seizerContract",
1442
+ "type": "address"
1443
+ },
1444
+ {
1445
+ "internalType": "address",
1446
+ "name": "liquidator",
1447
+ "type": "address"
1448
+ },
1449
+ {
1450
+ "internalType": "address",
1451
+ "name": "borrower",
1452
+ "type": "address"
1453
+ }
1454
+ ],
1455
+ "name": "preSeizeHook",
1456
+ "outputs": [],
1457
+ "stateMutability": "nonpayable",
1458
+ "type": "function"
1459
+ },
1460
+ {
1461
+ "inputs": [
1462
+ {
1463
+ "internalType": "address",
1464
+ "name": "vToken",
1465
+ "type": "address"
1466
+ },
1467
+ {
1468
+ "internalType": "address",
1469
+ "name": "src",
1470
+ "type": "address"
1471
+ },
1472
+ {
1473
+ "internalType": "address",
1474
+ "name": "dst",
1475
+ "type": "address"
1476
+ },
1477
+ {
1478
+ "internalType": "uint256",
1479
+ "name": "transferTokens",
1480
+ "type": "uint256"
1481
+ }
1482
+ ],
1483
+ "name": "preTransferHook",
1484
+ "outputs": [],
1485
+ "stateMutability": "nonpayable",
1486
+ "type": "function"
1487
+ },
1488
+ {
1489
+ "inputs": [],
1490
+ "name": "renounceOwnership",
1491
+ "outputs": [],
1492
+ "stateMutability": "nonpayable",
1493
+ "type": "function"
1494
+ },
1495
+ {
1496
+ "inputs": [
1497
+ {
1498
+ "internalType": "address",
1499
+ "name": "accessControlManager_",
1500
+ "type": "address"
1501
+ }
1502
+ ],
1503
+ "name": "setAccessControlManager",
1504
+ "outputs": [],
1505
+ "stateMutability": "nonpayable",
1506
+ "type": "function"
1507
+ },
1508
+ {
1509
+ "inputs": [
1510
+ {
1511
+ "internalType": "contract VToken[]",
1512
+ "name": "marketsList",
1513
+ "type": "address[]"
1514
+ },
1515
+ {
1516
+ "internalType": "enum ComptrollerStorage.Action[]",
1517
+ "name": "actionsList",
1518
+ "type": "uint8[]"
1519
+ },
1520
+ {
1521
+ "internalType": "bool",
1522
+ "name": "paused",
1523
+ "type": "bool"
1524
+ }
1525
+ ],
1526
+ "name": "setActionsPaused",
1527
+ "outputs": [],
1528
+ "stateMutability": "nonpayable",
1529
+ "type": "function"
1530
+ },
1531
+ {
1532
+ "inputs": [
1533
+ {
1534
+ "internalType": "uint256",
1535
+ "name": "number",
1536
+ "type": "uint256"
1537
+ }
1538
+ ],
1539
+ "name": "setBlockNumber",
1540
+ "outputs": [],
1541
+ "stateMutability": "nonpayable",
1542
+ "type": "function"
1543
+ },
1544
+ {
1545
+ "inputs": [
1546
+ {
1547
+ "internalType": "uint256",
1548
+ "name": "newCloseFactorMantissa",
1549
+ "type": "uint256"
1550
+ }
1551
+ ],
1552
+ "name": "setCloseFactor",
1553
+ "outputs": [],
1554
+ "stateMutability": "nonpayable",
1555
+ "type": "function"
1556
+ },
1557
+ {
1558
+ "inputs": [
1559
+ {
1560
+ "internalType": "contract VToken",
1561
+ "name": "vToken",
1562
+ "type": "address"
1563
+ },
1564
+ {
1565
+ "internalType": "uint256",
1566
+ "name": "newCollateralFactorMantissa",
1567
+ "type": "uint256"
1568
+ },
1569
+ {
1570
+ "internalType": "uint256",
1571
+ "name": "newLiquidationThresholdMantissa",
1572
+ "type": "uint256"
1573
+ }
1574
+ ],
1575
+ "name": "setCollateralFactor",
1576
+ "outputs": [],
1577
+ "stateMutability": "nonpayable",
1578
+ "type": "function"
1579
+ },
1580
+ {
1581
+ "inputs": [
1582
+ {
1583
+ "internalType": "uint256",
1584
+ "name": "newLiquidationIncentiveMantissa",
1585
+ "type": "uint256"
1586
+ }
1587
+ ],
1588
+ "name": "setLiquidationIncentive",
1589
+ "outputs": [],
1590
+ "stateMutability": "nonpayable",
1591
+ "type": "function"
1592
+ },
1593
+ {
1594
+ "inputs": [
1595
+ {
1596
+ "internalType": "contract VToken[]",
1597
+ "name": "vTokens",
1598
+ "type": "address[]"
1599
+ },
1600
+ {
1601
+ "internalType": "uint256[]",
1602
+ "name": "newBorrowCaps",
1603
+ "type": "uint256[]"
1604
+ }
1605
+ ],
1606
+ "name": "setMarketBorrowCaps",
1607
+ "outputs": [],
1608
+ "stateMutability": "nonpayable",
1609
+ "type": "function"
1610
+ },
1611
+ {
1612
+ "inputs": [
1613
+ {
1614
+ "internalType": "contract VToken[]",
1615
+ "name": "vTokens",
1616
+ "type": "address[]"
1617
+ },
1618
+ {
1619
+ "internalType": "uint256[]",
1620
+ "name": "newSupplyCaps",
1621
+ "type": "uint256[]"
1622
+ }
1623
+ ],
1624
+ "name": "setMarketSupplyCaps",
1625
+ "outputs": [],
1626
+ "stateMutability": "nonpayable",
1627
+ "type": "function"
1628
+ },
1629
+ {
1630
+ "inputs": [
1631
+ {
1632
+ "internalType": "uint256",
1633
+ "name": "limit",
1634
+ "type": "uint256"
1635
+ }
1636
+ ],
1637
+ "name": "setMaxLoopsLimit",
1638
+ "outputs": [],
1639
+ "stateMutability": "nonpayable",
1640
+ "type": "function"
1641
+ },
1642
+ {
1643
+ "inputs": [
1644
+ {
1645
+ "internalType": "uint256",
1646
+ "name": "newMinLiquidatableCollateral",
1647
+ "type": "uint256"
1648
+ }
1649
+ ],
1650
+ "name": "setMinLiquidatableCollateral",
1651
+ "outputs": [],
1652
+ "stateMutability": "nonpayable",
1653
+ "type": "function"
1654
+ },
1655
+ {
1656
+ "inputs": [
1657
+ {
1658
+ "internalType": "contract ResilientOracleInterface",
1659
+ "name": "newOracle",
1660
+ "type": "address"
1661
+ }
1662
+ ],
1663
+ "name": "setPriceOracle",
1664
+ "outputs": [],
1665
+ "stateMutability": "nonpayable",
1666
+ "type": "function"
1667
+ },
1668
+ {
1669
+ "inputs": [
1670
+ {
1671
+ "internalType": "address",
1672
+ "name": "",
1673
+ "type": "address"
1674
+ }
1675
+ ],
1676
+ "name": "supplyCaps",
1677
+ "outputs": [
1678
+ {
1679
+ "internalType": "uint256",
1680
+ "name": "",
1681
+ "type": "uint256"
1682
+ }
1683
+ ],
1684
+ "stateMutability": "view",
1685
+ "type": "function"
1686
+ },
1687
+ {
1688
+ "inputs": [
1689
+ {
1690
+ "internalType": "contract VToken",
1691
+ "name": "vToken",
1692
+ "type": "address"
1693
+ }
1694
+ ],
1695
+ "name": "supportMarket",
1696
+ "outputs": [],
1697
+ "stateMutability": "nonpayable",
1698
+ "type": "function"
1699
+ },
1700
+ {
1701
+ "inputs": [
1702
+ {
1703
+ "internalType": "address",
1704
+ "name": "newOwner",
1705
+ "type": "address"
1706
+ }
1707
+ ],
1708
+ "name": "transferOwnership",
1709
+ "outputs": [],
1710
+ "stateMutability": "nonpayable",
1711
+ "type": "function"
1712
+ },
1713
+ {
1714
+ "inputs": [
1715
+ {
1716
+ "internalType": "contract VToken",
1717
+ "name": "vToken",
1718
+ "type": "address"
1719
+ }
1720
+ ],
1721
+ "name": "unlist",
1722
+ "outputs": [],
1723
+ "stateMutability": "nonpayable",
1724
+ "type": "function"
1725
+ },
1726
+ {
1727
+ "inputs": [
1728
+ {
1729
+ "internalType": "address",
1730
+ "name": "account",
1731
+ "type": "address"
1732
+ }
1733
+ ],
1734
+ "name": "updatePrices",
1735
+ "outputs": [],
1736
+ "stateMutability": "nonpayable",
1737
+ "type": "function"
1738
+ }
1739
+ ],
1740
+ "bytecode": "0x60a06040523480156200001157600080fd5b5060405162005b5b38038062005b5b83398101604081905262000034916200014e565b8062000040816200005f565b6001600160a01b038116608052620000576200008a565b5050620001d7565b6001600160a01b03811662000087576040516342bcdf7f60e11b815260040160405180910390fd5b50565b600054610100900460ff1615620000be5760405162461bcd60e51b8152600401620000b5906200017b565b60405180910390fd5b60005460ff9081161462000115576000805460ff191660ff9081179091556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498916200010c91620001c7565b60405180910390a15b565b60006001600160a01b0382165b92915050565b620001358162000117565b81146200008757600080fd5b805162000124816200012a565b600060208284031215620001655762000165600080fd5b600062000173848462000141565b949350505050565b602080825281016200012481602781527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469602082015266616c697a696e6760c81b604082015260600190565b60ff821681526020810162000124565b608051615961620001fa600039600081816107030152612a7a01526159616000f3fe608060405234801561001057600080fd5b50600436106103a35760003560e01c80638e8f294b116101e9578063c488847b1161010f578063e30c3978116100ad578063eade3eed1161007c578063eade3eed14610893578063ede4edd0146108a6578063f2fde38b146108b9578063fccbe7f6146108cc57600080fd5b8063e30c397814610853578063e85a296014610864578063e875544614610877578063e89d51ad1461088057600080fd5b8063da35a26f116100e9578063da35a26f14610811578063db5c65de14610824578063dce154491461082d578063df71403b1461084057600080fd5b8063c488847b146107ca578063cab4f84c146107eb578063d136af44146107fe57600080fd5b8063afcff50f11610187578063bde3672d11610156578063bde3672d1461075e578063be26317e1461078d578063c0891ba914610797578063c2998238146107aa57600080fd5b8063afcff50f146106fe578063b0772d0b14610725578063b2068e841461072d578063b4a0bdf31461074d57600080fd5b806394543c15116101c357806394543c15146106a4578063a8431081146106b7578063a8c3c850146106ca578063abfceffc146106de57600080fd5b80638e8f294b1461063c578063921363951461067e578063929fe9a11461069157600080fd5b806352d84d1e116102ce57806361252fd11161026c5780637dc0d1d01161023b5780637dc0d1d0146105e957806380d45a2d146105fc5780638da5cb5b1461060f5780638e6470ea1461062957600080fd5b806361252fd1146105b15780636d0be88d146105c6578063715018a6146105d957806379ba5097146105e157600080fd5b806357e871e7116102a857806357e871e71461056e5780635c21b6c5146105785780635cc4fdeb1461058b5780635ec88c791461059e57600080fd5b806352d84d1e14610528578063530e784f1461054857806356aaee2d1461055b57600080fd5b80632bce219c116103465780634bca0d8c116103155780634bca0d8c146104b75780634e79238f146104e0578063520b6c7414610502578063528a174c1461051557600080fd5b80632bce219c1461044f5780633d98a1e5146104625780634a5844321461048e5780634ada90af146104ae57600080fd5b806312348e961161038257806312348e9614610403578063186db48f146104165780631bc41f281461042957806324aaa2201461043c57600080fd5b80627e3dd2146103a857806302c3bcbb146103c15780630e32cb86146103ee575b600080fd5b60015b6040516103b891906145a5565b60405180910390f35b6103e16103cf3660046145e3565b60d16020526000908152604090205481565b6040516103b8919061460a565b6104016103fc3660046145e3565b6108df565b005b610401610411366004614629565b6108f3565b61040161042436600461469c565b6109cf565b610401610437366004614715565b610b26565b61040161044a36600461478c565b610ee6565b61040161045d366004614866565b610fb3565b6103ab6104703660046148e1565b6001600160a01b0316600090815260cd602052604090205460ff1690565b6103e161049c3660046145e3565b60cf6020526000908152604090205481565b6103e160cb5481565b6103e16104c53660046148e1565b6001600160a01b0316600090815260cc602052604090205490565b6104f36104ee366004614902565b61131a565b6040516103b89392919061495a565b610401610510366004614629565b61134b565b6104f36105233660046145e3565b6113a5565b61053b610536366004614629565b6113d0565b6040516103b89190614996565b6104016105563660046148e1565b6113fa565b6104016105693660046148e1565b61145e565b6103e16101395481565b6104016105863660046145e3565b611732565b6104016105993660046149a4565b61184f565b6104f36105ac3660046145e3565b611a61565b6105b9611a73565b6040516103b89190614a51565b6104016105d4366004614a62565b611ad5565b610401611c4e565b610401611c62565b60c95461053b906001600160a01b031681565b61040161060a366004614629565b611c97565b6033546001600160a01b03165b6040516103b89190614ab2565b610401610637366004614ac0565b611ca8565b61066f61064a3660046145e3565b60cd6020526000908152604090208054600182015460029092015460ff909116919083565b6040516103b893929190614af5565b61040161068c3660046145e3565b611dc1565b6103ab61069f366004614b03565b61217a565b6103ab6106b23660046148e1565b6121ae565b6104016106c5366004614629565b612256565b6104016106d8366004614629565b61013955565b6106f16106ec3660046145e3565b6122f6565b6040516103b89190614b7e565b61061c7f000000000000000000000000000000000000000000000000000000000000000081565b6106f161236c565b61074061073b3660046145e3565b6123cc565b6040516103b89190614c18565b6097546001600160a01b031661053b565b61040161076c3660046148e1565b6001600160a01b0316600090815260cd60205260409020805460ff19169055565b6103e16101075481565b6104016107a5366004614ac0565b612617565b6107bd6107b8366004614d30565b612893565b6040516103b89190614db5565b6107dd6107d8366004614ac0565b61294a565b6040516103b8929190614dc6565b6104016107f93660046148e1565b612a75565b61040161080c36600461469c565b612c6d565b61040161081f366004614de1565b612dd0565b6103e160d05481565b61053b61083b366004614e14565b612eaa565b61040161084e366004614ac0565b612ee2565b6065546001600160a01b031661061c565b6103ab610872366004614e5f565b613278565b6103e160ca5481565b61040161088e366004614e92565b6132cf565b6104016108a1366004614efd565b6134a8565b6103e16108b43660046145e3565b6136d2565b6104016108c73660046145e3565b613944565b6103e16108da366004614629565b6139b5565b6108e76139d9565b6108f081613a03565b50565b6109316040518060400160405280601781526020017f736574436c6f7365466163746f722875696e7432353629000000000000000000815250613a7c565b80670c7d713b49da000010156109625760405162461bcd60e51b815260040161095990614f6d565b60405180910390fd5b8066b1a2bc2ec5000011156109895760405162461bcd60e51b815260040161095990614fc8565b60ca8054908290556040517f3b9670cf975d26958e754b57098eaa2ac914d8d2a31b83257997b9f346110fd9906109c39083908590614dc6565b60405180910390a15050565b6109f060405180606001604052806028815260200161586160289139613a7c565b82818115801590610a0057508082145b610a1c5760405162461bcd60e51b815260040161095990614fff565b610a2582613b1a565b60005b82811015610b1d57848482818110610a4257610a4261500f565b9050602002013560cf6000898985818110610a5f57610a5f61500f565b9050602002016020810190610a7491906148e1565b6001600160a01b03168152602081019190915260400160002055868682818110610aa057610aa061500f565b9050602002016020810190610ab591906148e1565b6001600160a01b03167f6f1951b2aad10f3fc81b86d91105b413a5b3f847a34bbc5ce1904201b14438f6868684818110610af157610af161500f565b90506020020135604051610b05919061460a565b60405180910390a2610b168161503b565b9050610a28565b50505050505050565b610b31846004613b45565b6001600160a01b038416600090815260cd60205260409020805460ff16610b6d5784604051635a9a1eb960e11b81526004016109599190614ab2565b306001600160a01b03851603610c1557306001600160a01b0316856001600160a01b0316635fe3b5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be99190615060565b6001600160a01b031614610c1057604051630c73eb0560e01b815260040160405180910390fd5b610d44565b6001600160a01b038416600090815260cd602052604090205460ff16610c505783604051635a9a1eb960e11b81526004016109599190614ab2565b836001600160a01b0316635fe3b5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb29190615060565b6001600160a01b0316856001600160a01b0316635fe3b5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cf9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1d9190615060565b6001600160a01b031614610d4457604051630c73eb0560e01b815260040160405180910390fd5b6001600160a01b038216600090815260038201602052604090205460ff16610d83578482604051630cdfb2db60e31b8152600401610959929190615081565b60d35460005b81811015610b1d57600060d38281548110610da657610da661500f565b60009182526020909120015460405163051d1d4f60e11b81526001600160a01b0390911691508190630a3a3a9e90610de2908b90600401614ab2565b600060405180830381600087803b158015610dfc57600080fd5b505af1158015610e10573d6000803e3d6000fd5b505060405163db7954fd60e01b81526001600160a01b038416925063db7954fd9150610e42908b908990600401615081565b600060405180830381600087803b158015610e5c57600080fd5b505af1158015610e70573d6000803e3d6000fd5b505060405163db7954fd60e01b81526001600160a01b038416925063db7954fd9150610ea2908b908a90600401615081565b600060405180830381600087803b158015610ebc57600080fd5b505af1158015610ed0573d6000803e3d6000fd5b505050505080610edf9061503b565b9050610d89565b610f076040518060600160405280602a81526020016158da602a9139613a7c565b8382610f1b610f16828461509c565b613b1a565b60005b82811015610fa95760005b82811015610f9857610f88898984818110610f4657610f4661500f565b9050602002016020810190610f5b91906148e1565b888884818110610f6d57610f6d61500f565b9050602002016020810190610f8291906150bb565b87613b71565b610f918161503b565b9050610f29565b50610fa28161503b565b9050610f1e565b5050505050505050565b6000610fc184613c3e613c72565b905060d05481600001511115610ff15760d0548151604051631a451c0f60e21b8152610959929190600401614dc6565b6000611011604051806020016040528060cb548152508360400151613cc1565b82519091508110611039578151604051632c1f8ef160e21b8152610959918391600401614dc6565b8160a0015160000361105e5760405163095bf33360e01b815260040160405180910390fd5b8261106d610f166002836150f2565b60005b818110156112365760cd600087878481811061108e5761108e61500f565b90506060020160200160208101906110a691906148e1565b6001600160a01b0316815260208101919091526040016000205460ff1661110b578585828181106110d9576110d961500f565b90506060020160200160208101906110f191906148e1565b604051635a9a1eb960e11b81526004016109599190614ab2565b60cd60008787848181106111215761112161500f565b61113792602060609092020190810191506148e1565b6001600160a01b0316815260208101919091526040016000205460ff166111805785858281811061116a5761116a61500f565b6110f192602060609092020190810191506148e1565b368686838181106111935761119361500f565b90506060020190508060200160208101906111ae91906148e1565b6001600160a01b0316638bbdb6db338a60408501356111d060208701876148e1565b60016040518663ffffffff1660e01b81526004016111f2959493929190615106565b600060405180830381600087803b15801561120c57600080fd5b505af1158015611220573d6000803e3d6000fd5b50505050508061122f9061503b565b9050611070565b506001600160a01b038616600090815260cc60209081526040808320805482518185028101850190935280835291929091908301828280156112a157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611283575b505083519394506000925050505b8181101561130f5760006112dc8483815181106112ce576112ce61500f565b60200260200101518b613ce1565b5091505080156112fe5760405162461bcd60e51b815260040161095990615197565b506113088161503b565b90506112af565b505050505050505050565b60008060008061132f88888888613d88613dbc565b608081015160a09091015160009a919950975095505050505050565b61136c60405180606001604052806025815260200161588960259139613a7c565b60d08054908290556040517eb4f4f153ad7f1397564a8830fef092481e8cf6a2cd3ff04f96d10ba51200a5906109c39083908590614dc6565b6000806000806113b785613d88613c72565b608081015160a090910151600097919650945092505050565b60ce81815481106113e057600080fd5b6000918252602090912001546001600160a01b0316905081565b6114026139d9565b61140b81613ff1565b60c980546001600160a01b038381166001600160a01b03198316179092556040519116907fd52b2b9b7e9ee655fcb95d2e5b9e0c9f69e7ef2b8e9d2d0ea78402d576d22e22906109c390839085906151a7565b6114666139d9565b6001600160a01b038116600090815260d4602052604090205460ff161561149f5760405162461bcd60e51b8152600401610959906151e7565b60d35460005b818110156115d957600060d382815481106114c2576114c261500f565b600091825260209182902001546040805163f7c618c160e01b815290516001600160a01b039092169263f7c618c1926004808401938290030181865afa158015611510573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115349190615060565b9050836001600160a01b031663f7c618c16040518163ffffffff1660e01b8152600401602060405180830381865afa158015611574573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115989190615060565b6001600160a01b0316816001600160a01b0316036115c85760405162461bcd60e51b81526004016109599061523f565b506115d28161503b565b90506114a5565b5060d3546115eb610f1682600161524f565b60d3805460018082019092557f915c3eb987b20e1af620c1403197bf687fb7f18513b3a73fde6e78c7072c41a60180546001600160a01b0319166001600160a01b038616908117909155600090815260d460205260408120805460ff191690921790915560ce54905b818110156116f757846001600160a01b0316632a869a4d60ce838154811061167e5761167e61500f565b6000918252602090912001546040516001600160e01b031960e084901b1681526116b4916001600160a01b031690600401614ab2565b600060405180830381600087803b1580156116ce57600080fd5b505af11580156116e2573d6000803e3d6000fd5b50505050806116f09061503b565b9050611654565b506040516001600160a01b038516907f058fa9577dc29aece41d41c2d3bff2ed4e8d5085762198e8f7faab35039555da90600090a250505050565b6001600160a01b038116600090815260cc602090815260408083208054825181850281018501909352808352919290919083018282801561179c57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161177e575b5050835160c954949550936001600160a01b0316925060009150505b8281101561184857816001600160a01b03166396e85ced8583815181106117e1576117e161500f565b60200260200101516040518263ffffffff1660e01b81526004016118059190614ab2565b600060405180830381600087803b15801561181f57600080fd5b505af1158015611833573d6000803e3d6000fd5b50505050806118419061503b565b90506117b8565b5050505050565b6118706040518060600160405280602c81526020016158ae602c9139613a7c565b6001600160a01b038316600090815260cd60205260409020805460ff166118ac5783604051635a9a1eb960e11b81526004016109599190614ab2565b670c7d713b49da00008311156118d5576040516302f22cad60e61b815260040160405180910390fd5b670de0b6b3a76400008211156118fd5760405162f9474b60e61b815260040160405180910390fd5b8282101561191d5760405162f9474b60e61b815260040160405180910390fd5b821580159061199a575060c95460405163fc57d4df60e01b81526001600160a01b039091169063fc57d4df90611957908790600401614ab2565b602060405180830381865afa158015611974573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119989190615272565b155b156119b9578360405162e52a7d60e41b81526004016109599190614ab2565b6001810154838114611a0957600182018490556040517f70483e6592cd5182d45ac970e05bc62cdcc90e9d8ef2c2dbe686cf383bcd7fc590611a0090879084908890615293565b60405180910390a15b6002820154838114611a5957600283018490556040517f9e92c7d5fef69846094f3ddcadcb9402c6ba469c461368714f1cabd8ef48b59190611a5090889084908890615293565b60405180910390a15b505050505050565b6000806000806113b785613c3e613c72565b606060d3805480602002602001604051908101604052809291908181526020018280548015611acb57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611aad575b5050505050905090565b611ae0846006613b45565b611aeb848483614018565b60d35460005b81811015611a5957600060d38281548110611b0e57611b0e61500f565b60009182526020909120015460405163051d1d4f60e11b81526001600160a01b0390911691508190630a3a3a9e90611b4a908a90600401614ab2565b600060405180830381600087803b158015611b6457600080fd5b505af1158015611b78573d6000803e3d6000fd5b505060405163db7954fd60e01b81526001600160a01b038416925063db7954fd9150611baa908a908a90600401615081565b600060405180830381600087803b158015611bc457600080fd5b505af1158015611bd8573d6000803e3d6000fd5b505060405163db7954fd60e01b81526001600160a01b038416925063db7954fd9150611c0a908a908990600401615081565b600060405180830381600087803b158015611c2457600080fd5b505af1158015611c38573d6000803e3d6000fd5b505050505080611c479061503b565b9050611af1565b611c566139d9565b611c6060006140bd565b565b60655433906001600160a01b03168114611c8e5760405162461bcd60e51b8152600401610959906152e7565b6108f0816140bd565b611c9f6139d9565b6108f0816140d6565b611cb3836001613b45565b611cbe838383614018565b60d35460005b8181101561184857600060d38281548110611ce157611ce161500f565b60009182526020909120015460405163051d1d4f60e11b81526001600160a01b0390911691508190630a3a3a9e90611d1d908990600401614ab2565b600060405180830381600087803b158015611d3757600080fd5b505af1158015611d4b573d6000803e3d6000fd5b505060405163db7954fd60e01b81526001600160a01b038416925063db7954fd9150611d7d9089908990600401615081565b600060405180830381600087803b158015611d9757600080fd5b505af1158015611dab573d6000803e3d6000fd5b505050505080611dba9061503b565b9050611cc4565b6001600160a01b038116600090815260cc6020908152604080832080548251818502810185019093528083529192909190830182828015611e2b57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611e0d575b5050835160c954949550933393506001600160a01b03169150600090505b83811015611f5757848181518110611e6357611e6361500f565b60200260200101516001600160a01b031663a6afed956040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611eaa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ece9190615272565b50816001600160a01b03166396e85ced868381518110611ef057611ef061500f565b60200260200101516040518263ffffffff1660e01b8152600401611f149190614ab2565b600060405180830381600087803b158015611f2e57600080fd5b505af1158015611f42573d6000803e3d6000fd5b5050505080611f509061503b565b9050611e49565b50506000611f6785613c3e613c72565b905060d05481600001511115611f975760d0548151604051631a451c0f60e21b8152610959929190600401614dc6565b8060a00151600003611fbc5760405163095bf33360e01b815260040160405180910390fd5b60408051602080820183528351825282518082018452848401518152835191820190935260cb5481529091600091611ff49190614133565b90506000612002838361417b565b90506120266040518060200160405280670de0b6b3a7640000815250825190511090565b1561204a5781518351604051631a451c0f60e21b8152610959929190600401614dc6565b60005b8681101561130f5760008882815181106120695761206961500f565b60200260200101519050600080612080838d613ce1565b509150915060006120918683613cc1565b905082156120fc57836001600160a01b031663b2a02ff18b8f866040518463ffffffff1660e01b81526004016120c9939291906152f7565b600060405180830381600087803b1580156120e357600080fd5b505af11580156120f7573d6000803e3d6000fd5b505050505b811561216557836001600160a01b03166344fe6ffe8b8f846040518463ffffffff1660e01b8152600401612132939291906152f7565b600060405180830381600087803b15801561214c57600080fd5b505af1158015612160573d6000803e3d6000fd5b505050505b50505050806121739061503b565b905061204d565b6001600160a01b03808216600090815260cd60209081526040808320938616835260039093019052205460ff165b92915050565b6001600160a01b038116600090815260cd60205260408120600101541580156121dd57506121dd826002613278565b80156121a85750670de0b6b3a7640000826001600160a01b031663173b99046040518163ffffffff1660e01b8152600401602060405180830381865afa15801561222b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061224f9190615272565b1492915050565b670de0b6b3a764000081101561227e5760405162461bcd60e51b815260040161095990615360565b6122bc6040518060400160405280602081526020017f7365744c69717569646174696f6e496e63656e746976652875696e7432353629815250613a7c565b60cb8054908290556040517faeba5a6c40a8ac138134bff1aaa65debf25971188a58804bad717f82f0ec1316906109c39083908590614dc6565b6001600160a01b038116600090815260cc6020908152604080832080548251818502810185019093528083526060949383018282801561235f57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612341575b5093979650505050505050565b606060ce805480602002602001604051908101604052809291908181526020018280548015611acb576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611aad575050505050905090565b60d3546060908067ffffffffffffffff8111156123eb576123eb614c29565b60405190808252806020026020018201604052801561244957816020015b612436604051806060016040528060006001600160a01b0316815260200160008152602001600081525090565b8152602001906001900390816124095790505b50915060005b8181101561261057600060d3828154811061246c5761246c61500f565b60009182526020808320909101546040805163f7c618c160e01b815290516001600160a01b039092169450849263f7c618c1926004808401938290030181865afa1580156124be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124e29190615060565b90506040518060600160405280826001600160a01b03168152602001836001600160a01b03166374c4c1cc896040518263ffffffff1660e01b815260040161252a9190614ab2565b602060405180830381865afa158015612547573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061256b9190615272565b8152602001836001600160a01b0316637c05a7c5896040518263ffffffff1660e01b815260040161259c9190614ab2565b602060405180830381865afa1580156125b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125dd9190615272565b8152508584815181106125f2576125f261500f565b60200260200101819052505050806126099061503b565b905061244f565b5050919050565b612622836000613b45565b6001600160a01b038316600090815260cd602052604090205460ff1661265d5782604051635a9a1eb960e11b81526004016109599190614ab2565b6001600160a01b038316600090815260d160205260409020546000198114612790576000846001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126e39190615272565b905060006040518060200160405280876001600160a01b031663182df0f56040518163ffffffff1660e01b8152600401602060405180830381865afa158015612730573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127549190615272565b9052905060006127658284876141b5565b90508381111561278c57868460405163db33be3d60e01b8152600401610959929190615370565b5050505b60d35460005b81811015611a5957600060d382815481106127b3576127b361500f565b60009182526020909120015460405163051d1d4f60e11b81526001600160a01b0390911691508190630a3a3a9e906127ef908a90600401614ab2565b600060405180830381600087803b15801561280957600080fd5b505af115801561281d573d6000803e3d6000fd5b505060405163db7954fd60e01b81526001600160a01b038416925063db7954fd915061284f908a908a90600401615081565b600060405180830381600087803b15801561286957600080fd5b505af115801561287d573d6000803e3d6000fd5b50505050508061288c9061503b565b9050612796565b805160609060008167ffffffffffffffff8111156128b3576128b3614c29565b6040519080825280602002602001820160405280156128dc578160200160208202803683370190505b50905060005b828110156129425760008582815181106128fe576128fe61500f565b6020026020010151905061291281336141df565b60008383815181106129265761292661500f565b60209081029190910101525061293b8161503b565b90506128e2565b509392505050565b6000806000612958866142d2565b90506000612965866142d2565b90506000866001600160a01b031663182df0f56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129cb9190615272565b905060006129e56040518060200160405280600081525090565b60408051602080820183526000808352835180830185529081528351808301855260cb54815284519283019094528882529192612a2191614133565b9250612a49604051806020016040528088815250604051806020016040528088815250614133565b9150612a55838361417b565b9050612a61818b613cc1565b60009d909c509a5050505050505050505050565b612a9e7f000000000000000000000000000000000000000000000000000000000000000061436c565b6001600160a01b038116600090815260cd602052604090205460ff1615612ada578060405163d005ce4760e01b81526004016109599190614ab2565b806001600160a01b0316633d9ea3a16040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b3c9190615389565b612b585760405162461bcd60e51b8152600401610959906153de565b6001600160a01b038116600090815260cd60205260408120805460ff19166001908117825581018290556002810191909155612b9382614399565b60d35460005b81811015612c305760d38181548110612bb457612bb461500f565b600091825260209091200154604051632a869a4d60e01b81526001600160a01b0390911690632a869a4d90612bed908790600401614ab2565b600060405180830381600087803b158015612c0757600080fd5b505af1158015612c1b573d6000803e3d6000fd5b5050505080612c299061503b565b9050612b99565b507faf16ad15f9e29d5140e8e81a30a92a755aa8edff3d301053c84392b70c0d09a383604051612c609190614996565b60405180910390a1505050565b612c8e60405180606001604052806028815260200161590460289139613a7c565b826000819003612cb05760405162461bcd60e51b815260040161095990615422565b808214612ccf5760405162461bcd60e51b815260040161095990615422565b612cd881613b1a565b60005b81811015611a5957838382818110612cf557612cf561500f565b9050602002013560d16000888885818110612d1257612d1261500f565b9050602002016020810190612d2791906148e1565b6001600160a01b03168152602081019190915260400160002055858582818110612d5357612d5361500f565b9050602002016020810190612d6891906148e1565b6001600160a01b03167f9e0ad9cee10bdf36b7fbd38910c0bdff0f275ace679b45b922381c2723d676f8858584818110612da457612da461500f565b90506020020135604051612db8919061460a565b60405180910390a2612dc98161503b565b9050612cdb565b600054610100900460ff1615808015612df05750600054600160ff909116105b80612e0a5750303b158015612e0a575060005460ff166001145b612e265760405162461bcd60e51b81526004016109599061547d565b6000805460ff191660011790558015612e49576000805461ff0019166101001790555b612e5161445f565b612e5a8261448e565b612e63836140d6565b8015612ea5576000805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890612c60906001906154a1565b505050565b60cc6020528160005260406000208181548110612ec657600080fd5b6000918252602090912001546001600160a01b03169150829050565b612eed836002613b45565b6001600160a01b038316600090815260cd602052604090205460ff16612f285782604051635a9a1eb960e11b81526004016109599190614ab2565b6001600160a01b03808416600090815260cd60209081526040808320938616835260039093019052205460ff16612f6c57612f628361436c565b612f6c33836141df565b612f7582611732565b60c95460405163fc57d4df60e01b81526001600160a01b039091169063fc57d4df90612fa5908690600401614ab2565b602060405180830381865afa158015612fc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fe69190615272565b600003613007578260405162e52a7d60e41b81526004016109599190614ab2565b6001600160a01b038316600090815260cf602052604090205460001981146130c5576000846001600160a01b03166347bd37186040518163ffffffff1660e01b8152600401602060405180830381865afa158015613069573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061308d9190615272565b9050600061309b848361524f565b9050828111156130c2578583604051632e649eed60e01b8152600401610959929190615370565b50505b60006130d78486600086613d88613dbc565b60a0810151909150156130fd5760405163bb55fd2760e01b815260040160405180910390fd5b60006040518060200160405280876001600160a01b031663aa5af0fd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613148573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061316c9190615272565b905260d35490915060005b81811015610fa957600060d382815481106131945761319461500f565b600091825260209091200154604051632352607960e01b81526001600160a01b03909116915081906323526079906131d2908c9088906004016154c0565b600060405180830381600087803b1580156131ec57600080fd5b505af1158015613200573d6000803e3d6000fd5b5050604051636a95ddef60e01b81526001600160a01b0384169250636a95ddef9150613234908c908c9089906004016154db565b600060405180830381600087803b15801561324e57600080fd5b505af1158015613262573d6000803e3d6000fd5b5050505050806132719061503b565b9050613177565b6001600160a01b038216600090815260d260205260408120818360088111156132a3576132a3615503565b60088111156132b4576132b4615503565b815260208101919091526040016000205460ff169392505050565b6132da856005613b45565b6132e383611732565b6001600160a01b038516600090815260cd602052604090205460ff1661331e5784604051635a9a1eb960e11b81526004016109599190614ab2565b6001600160a01b038416600090815260cd602052604090205460ff166133595783604051635a9a1eb960e11b81526004016109599190614ab2565b6040516395dd919360e01b81526000906001600160a01b038716906395dd919390613388908790600401614ab2565b602060405180830381865afa1580156133a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133c99190615272565b905081806133db57506133db866121ae565b1561340757808311156134015760405163e46c155960e01b815260040160405180910390fd5b50611848565b600061341585613c3e613c72565b905060d0548160000151116134445760d0548151604051636e61bb0560e11b8152610959929190600401614dc6565b8060a001516000036134695760405163095bf33360e01b815260040160405180910390fd5b6000613485604051806020016040528060ca5481525084613cc1565b905080851115610fa95760405163e46c155960e01b815260040160405180910390fd5b6134b3826003613b45565b60c9546040516396e85ced60e01b81526001600160a01b03909116906396e85ced906134e3908590600401614ab2565b600060405180830381600087803b1580156134fd57600080fd5b505af1158015613511573d6000803e3d6000fd5b505050506001600160a01b038216600090815260cd602052604090205460ff166135505781604051635a9a1eb960e11b81526004016109599190614ab2565b60d35460005b818110156136cc5760006040518060200160405280866001600160a01b031663aa5af0fd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156135a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135cd9190615272565b8152509050600060d383815481106135e7576135e761500f565b600091825260209091200154604051632352607960e01b81526001600160a01b039091169150819063235260799061362590899086906004016154c0565b600060405180830381600087803b15801561363f57600080fd5b505af1158015613653573d6000803e3d6000fd5b5050604051636a95ddef60e01b81526001600160a01b0384169250636a95ddef9150613687908990899087906004016154db565b600060405180830381600087803b1580156136a157600080fd5b505af11580156136b5573d6000803e3d6000fd5b505050505050806136c59061503b565b9050613556565b50505050565b60006136df826008613b45565b816000806136ed8333613ce1565b5091509150806000146137135760405163f8a5d66d60e01b815260040160405180910390fd5b61371e853384614018565b6001600160a01b038316600090815260cd60209081526040808320338452600381019092529091205460ff1661375a5750600095945050505050565b3360009081526003820160209081526040808320805460ff1916905560cc8252808320805482518185028101850190935280835291929091908301828280156137cc57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116137ae575b5050835193945083925060009150505b8281101561382e57876001600160a01b03168482815181106138005761380061500f565b60200260200101516001600160a01b03160361381e5780915061382e565b6138278161503b565b90506137dc565b5081811061383e5761383e615519565b33600090815260cc602052604090208054819061385d9060019061552f565b8154811061386d5761386d61500f565b9060005260206000200160009054906101000a90046001600160a01b031681838154811061389d5761389d61500f565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550808054806138db576138db615546565b600082815260208120820160001990810180546001600160a01b031916905590910190915560405133916001600160a01b038b16917fe699a64c18b07ac5b7301aa273f36a2287239eb9501d81950672794afba29a0d9190a35060009998505050505050505050565b61394c6139d9565b606580546001600160a01b0383166001600160a01b0319909116811790915561397d6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60008161013960008282546139ca919061524f565b90915550506101395492915050565b6033546001600160a01b03163314611c605760405162461bcd60e51b81526004016109599061558e565b6001600160a01b038116613a295760405162461bcd60e51b8152600401610959906155e0565b609780546001600160a01b038381166001600160a01b03198316179092556040519116907f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa0906109c39083908590615081565b6097546040516318c5e8ab60e01b81526000916001600160a01b0316906318c5e8ab90613aaf903390869060040161564e565b602060405180830381865afa158015613acc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613af09190615389565b905080613b1657333083604051634a3fa29360e01b81526004016109599392919061566e565b5050565b610107548111156108f057610107548160405163792bfb1b60e11b8152600401610959929190614dc6565b613b4f8282613278565b15613b165781816040516313b3ccb160e31b81526004016109599291906156c9565b6001600160a01b038316600090815260cd602052604090205460ff16613ba95760405162461bcd60e51b815260040161095990615729565b6001600160a01b038316600090815260d2602052604081208291846008811115613bd557613bd5615503565b6008811115613be657613be6615503565b815260200190815260200160002060006101000a81548160ff0219169083151502179055507f35007a986bcd36d2f73fc7f1b73762e12eadb4406dd163194950fd3b5a6a827d838383604051612c6093929190615739565b6040805160208082018352600091829052825180820184526001600160a01b0394909416825260cd90522060020154815290565b613cab6040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b613cba83600080600086613dbc565b9392505050565b600080613cce84846144b5565b9050613cd9816144dd565b949350505050565b600080600080856001600160a01b031663c37f68e2866040518263ffffffff1660e01b8152600401613d139190614ab2565b608060405180830381865afa158015613d30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d549190615761565b9196509450925090508015613d8057858560405163015e34d960e61b8152600401610959929190615081565b509250925092565b6040805160208082018352600091829052825180820184526001600160a01b0394909416825260cd90522060010154815290565b613df56040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6001600160a01b038616600090815260cc6020908152604080832080548251818502810185019093528083529192909190830182828015613e5f57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613e41575b505083519394506000925050505b81811015613f93576000838281518110613e8957613e8961500f565b602002602001015190506000806000613ea2848e613ce1565b92509250925060006040518060200160405280613ebe876142d2565b81525090506000613edd60405180602001604052808581525083614133565b90506000613ef7613ef1888e63ffffffff16565b83614133565b9050613f0881878d602001516141b5565b60208c01528a51613f1c90839088906141b5565b8b5260408b0151613f3090849087906141b5565b8b60400181815250508e6001600160a01b0316876001600160a01b031603613f7b57613f61818f8d606001516141b5565b60608c01819052613f759084908f906141b5565b60608c01525b5050505050505080613f8c9061503b565b9050613e6d565b50600083606001518460400151613faa919061524f565b90508084602001511115613fd15760208401518190036080850152600060a0850152613fe5565b600060808501526020840151810360a08501525b50505095945050505050565b6001600160a01b0381166108f0576040516342bcdf7f60e11b815260040160405180910390fd5b6001600160a01b038316600090815260cd60205260409020805460ff166140545783604051635a9a1eb960e11b81526004016109599190614ab2565b6001600160a01b038316600090815260038201602052604090205460ff1661407c5750505050565b61408583611732565b60006140978486856000613d88613dbc565b60a0810151909150156118485760405163bb55fd2760e01b815260040160405180910390fd5b606580546001600160a01b03191690556108f0816144f5565b6101075481116140f85760405162461bcd60e51b8152600401610959906157f8565b6101078054908290556040517fc2d09fef144f7c8a86f71ea459f8fc17f675768eb1ae369cbd77fb31d467aafa906109c39083908590614dc6565b6040805160208101909152600081526040518060200160405280670de0b6b3a764000061416886600001518660000151614547565b61417291906150f2565b90529392505050565b60408051602081019091526000815260405180602001604052806141726141ae8660000151670de0b6b3a7640000614547565b8551614553565b6000806141c285856144b5565b90506141d66141d0826144dd565b8461455f565b95945050505050565b6141ea826007613b45565b6001600160a01b038216600090815260cd60205260409020805460ff166142265782604051635a9a1eb960e11b81526004016109599190614ab2565b6001600160a01b038216600090815260038201602052604090205460ff161561424e57505050565b6001600160a01b0380831660008181526003840160209081526040808320805460ff1916600190811790915560cc835281842080549182018155845291832090910180549488166001600160a01b031990951685179055519192917f3ab23ab0d51cccc0c3085aec51f99228625aa1a922b3a8ca89a26b0f2027a1a59190a3505050565b60c95460405163fc57d4df60e01b815260009182916001600160a01b039091169063fc57d4df90614307908690600401614ab2565b602060405180830381865afa158015614324573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143489190615272565b9050806000036121a8578260405162e52a7d60e41b81526004016109599190614ab2565b336001600160a01b038216146108f0578033604051634e9383fb60e11b8152600401610959929190615081565b60ce5460005b8181101561440957826001600160a01b031660ce82815481106143c4576143c461500f565b6000918252602090912001546001600160a01b0316036143f9578260405163d005ce4760e01b81526004016109599190614ab2565b6144028161503b565b905061439f565b505060ce805460018101825560008290527fd36cd1c74ef8d7326d8021b776c18fb5a5724b7f7bc93c2f42e43e10ef27d12a0180546001600160a01b0319166001600160a01b03841617905554613b1681613b1a565b600054610100900460ff166144865760405162461bcd60e51b815260040161095990615850565b611c6061456b565b600054610100900460ff166108e75760405162461bcd60e51b815260040161095990615850565b6040805160208101909152600081526040518060200160405280614172856000015185614547565b80516000906121a890670de0b6b3a7640000906150f2565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000613cba828461509c565b6000613cba82846150f2565b6000613cba828461524f565b600054610100900460ff166145925760405162461bcd60e51b815260040161095990615850565b611c60336140bd565b8015155b82525050565b602081016121a8828461459b565b60006001600160a01b0382166121a8565b6145cd816145b3565b81146108f057600080fd5b80356121a8816145c4565b6000602082840312156145f8576145f8600080fd5b6000613cd984846145d8565b8061459f565b602081016121a88284614604565b806145cd565b80356121a881614618565b60006020828403121561463e5761463e600080fd5b6000613cd9848461461e565b60008083601f84011261465f5761465f600080fd5b50813567ffffffffffffffff81111561467a5761467a600080fd5b60208301915083602082028301111561469557614695600080fd5b9250929050565b600080600080604085870312156146b5576146b5600080fd5b843567ffffffffffffffff8111156146cf576146cf600080fd5b6146db8782880161464a565b9450945050602085013567ffffffffffffffff8111156146fd576146fd600080fd5b6147098782880161464a565b95989497509550505050565b6000806000806080858703121561472e5761472e600080fd5b600061473a87876145d8565b945050602061474b878288016145d8565b935050604061475c878288016145d8565b925050606061476d878288016145d8565b91505092959194509250565b8015156145cd565b80356121a881614779565b6000806000806000606086880312156147a7576147a7600080fd5b853567ffffffffffffffff8111156147c1576147c1600080fd5b6147cd8882890161464a565b9550955050602086013567ffffffffffffffff8111156147ef576147ef600080fd5b6147fb8882890161464a565b9350935050604061480e88828901614781565b9150509295509295909350565b60008083601f84011261483057614830600080fd5b50813567ffffffffffffffff81111561484b5761484b600080fd5b60208301915083606082028301111561469557614695600080fd5b60008060006040848603121561487e5761487e600080fd5b600061488a86866145d8565b935050602084013567ffffffffffffffff8111156148aa576148aa600080fd5b6148b68682870161481b565b92509250509250925092565b60006121a8826145b3565b6145cd816148c2565b80356121a8816148cd565b6000602082840312156148f6576148f6600080fd5b6000613cd984846148d6565b6000806000806080858703121561491b5761491b600080fd5b600061492787876145d8565b9450506020614938878288016145d8565b93505060406149498782880161461e565b925050606061476d8782880161461e565b606081016149688286614604565b6149756020830185614604565b613cd96040830184614604565b60006121a8826148c2565b61459f81614982565b602081016121a8828461498d565b6000806000606084860312156149bc576149bc600080fd5b60006149c886866148d6565b93505060206149d98682870161461e565b92505060406149ea8682870161461e565b9150509250925092565b6000614a00838361498d565b505060200190565b6000614a12825190565b80845260209384019383018060005b83811015614a46578151614a3588826149f4565b975060208301925050600101614a21565b509495945050505050565b60208082528101613cba8184614a08565b60008060008060808587031215614a7b57614a7b600080fd5b6000614a8787876145d8565b9450506020614a98878288016145d8565b9350506040614949878288016145d8565b61459f816145b3565b602081016121a88284614aa9565b600080600060608486031215614ad857614ad8600080fd5b6000614ae486866145d8565b93505060206149d9868287016145d8565b60608101614968828661459b565b60008060408385031215614b1957614b19600080fd5b6000614b2585856145d8565b9250506020614b36858286016148d6565b9150509250929050565b6000614b4a825190565b80845260209384019383018060005b83811015614a46578151614b6d88826149f4565b975060208301925050600101614b59565b60208082528101613cba8184614b40565b80516060830190614ba08482614aa9565b506020820151614bb36020850182614604565b5060408201516136cc6040850182614604565b6000614bd28383614b8f565b505060600190565b6000614be4825190565b80845260209384019383018060005b83811015614a46578151614c078882614bc6565b975060208301925050600101614bf3565b60208082528101613cba8184614bda565b634e487b7160e01b600052604160045260246000fd5b601f19601f830116810181811067ffffffffffffffff82111715614c6557614c65614c29565b6040525050565b6000614c7760405190565b9050614c838282614c3f565b919050565b600067ffffffffffffffff821115614ca257614ca2614c29565b5060209081020190565b6000614cbf614cba84614c88565b614c6c565b83815290506020808201908402830185811115614cde57614cde600080fd5b835b81811015614d025780614cf388826145d8565b84525060209283019201614ce0565b5050509392505050565b600082601f830112614d2057614d20600080fd5b8135613cd9848260208601614cac565b600060208284031215614d4557614d45600080fd5b813567ffffffffffffffff811115614d5f57614d5f600080fd5b613cd984828501614d0c565b6000614a008383614604565b6000614d81825190565b80845260209384019383018060005b83811015614a46578151614da48882614d6b565b975060208301925050600101614d90565b60208082528101613cba8184614d77565b60408101614dd48285614604565b613cba6020830184614604565b60008060408385031215614df757614df7600080fd5b6000614e03858561461e565b9250506020614b36858286016145d8565b60008060408385031215614e2a57614e2a600080fd5b6000614e3685856145d8565b9250506020614b368582860161461e565b600981106108f057600080fd5b80356121a881614e47565b60008060408385031215614e7557614e75600080fd5b6000614e8185856145d8565b9250506020614b3685828601614e54565b600080600080600060a08688031215614ead57614ead600080fd5b6000614eb988886145d8565b9550506020614eca888289016145d8565b9450506040614edb888289016145d8565b9350506060614eec8882890161461e565b925050608061480e88828901614781565b60008060408385031215614f1357614f13600080fd5b6000614e0385856145d8565b602e81526000602082017f436c6f736520666163746f722067726561746572207468616e206d6178696d7581526d369031b637b9b2903330b1ba37b960911b602082015291505b5060400190565b602080825281016121a881614f1f565b602e81526000602082017f436c6f736520666163746f7220736d616c6c6572207468616e206d696e696d7581526d369031b637b9b2903330b1ba37b960911b60208201529150614f66565b602080825281016121a881614f7d565b600d81526000602082016c1a5b9d985b1a59081a5b9c1d5d609a1b815291505b5060200190565b602080825281016121a881614fd8565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019820361504e5761504e615025565b5060010190565b80516121a8816148cd565b60006020828403121561507557615075600080fd5b6000613cd98484615055565b6040810161508f8285614aa9565b613cba6020830184614aa9565b60008160001904831182151516156150b6576150b6615025565b500290565b6000602082840312156150d0576150d0600080fd5b6000613cd98484614e54565b634e487b7160e01b600052601260045260246000fd5b600082615101576151016150dc565b500490565b60a081016151148288614aa9565b6151216020830187614aa9565b61512e6040830186614604565b61513b606083018561498d565b615148608083018461459b565b9695505050505050565b602881526000602082017f4e6f6e7a65726f20626f72726f772062616c616e6365206166746572206c69718152673ab4b230ba34b7b760c11b60208201529150614f66565b602080825281016121a881615152565b604081016151b5828561498d565b613cba602083018461498d565b600e81526000602082016d616c72656164792065786973747360901b81529150614ff8565b602080825281016121a8816151c2565b602b81526000602082017f6469737472696275746f7220616c72656164792065786973747320776974682081526a1d1a1a5cc81c995dd85c9960aa1b60208201529150614f66565b602080825281016121a8816151f7565b6000821982111561526257615262615025565b500190565b80516121a881614618565b60006020828403121561528757615287600080fd5b6000613cd98484615267565b60608101614968828661498d565b602981526000602082017f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865208152683732bb9037bbb732b960b91b60208201529150614f66565b602080825281016121a8816152a1565b606081016153058286614aa9565b6149756020830185614aa9565b603181526000602082017f6c69717569646174696f6e20696e63656e746976652073686f756c64206265208152700cee4cac2e8cae440e8d0c2dc4062ca627607b1b60208201529150614f66565b602080825281016121a881615312565b60408101614dd48285614aa9565b80516121a881614779565b60006020828403121561539e5761539e600080fd5b6000613cd9848461537e565b601b81526000602082017f436f6d7074726f6c6c65723a20496e76616c69642076546f6b656e000000000081529150614ff8565b602080825281016121a8816153aa565b601981526000602082017f696e76616c6964206e756d626572206f66206d61726b6574730000000000000081529150614ff8565b602080825281016121a8816153ee565b602e81526000602082017f496e697469616c697a61626c653a20636f6e747261637420697320616c72656181526d191e481a5b9a5d1a585b1a5e995960921b60208201529150614f66565b602080825281016121a881615432565b600060ff82166121a8565b61459f8161548d565b602081016121a88284615498565b805160208301906136cc8482614604565b604081016154ce8285614aa9565b613cba60208301846154af565b606081016154e98286614aa9565b6154f66020830185614aa9565b613cd960408301846154af565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052600160045260246000fd5b60008282101561554157615541615025565b500390565b634e487b7160e01b600052603160045260246000fd5b60208082527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657291019081526000614ff8565b602080825281016121a88161555c565b602581526000602082017f696e76616c696420616365737320636f6e74726f6c206d616e61676572206164815264647265737360d81b60208201529150614f66565b602080825281016121a88161559e565b60005b8381101561560b5781810151838201526020016155f3565b838111156136cc5750506000910152565b6000615626825190565b80845260208401935061563d8185602086016155f0565b601f01601f19169290920192915050565b6040810161565c8285614aa9565b8181036020830152613cd9818461561c565b6060810161567c8286614aa9565b6156896020830185614aa9565b81810360408301526141d6818461561c565b600981106108f0576108f0615503565b80614c838161569b565b60006121a8826156ab565b61459f816156b5565b604081016156d78285614aa9565b613cba60208301846156c0565b602881526000602082017f63616e6e6f742070617573652061206d61726b65742074686174206973206e6f8152671d081b1a5cdd195960c21b60208201529150614f66565b602080825281016121a8816156e4565b60608101615747828661498d565b61575460208301856156c0565b613cd9604083018461459b565b6000806000806080858703121561577a5761577a600080fd5b60006157868787615267565b945050602061579787828801615267565b93505060406157a887828801615267565b925050606061476d87828801615267565b602281526000602082017f436f6d7074726f6c6c65723a20496e76616c6964206d61784c6f6f70734c696d8152611a5d60f21b60208201529150614f66565b602080825281016121a8816157b9565b602b81526000602082017f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206981526a6e697469616c697a696e6760a81b60208201529150614f66565b602080825281016121a88161580856fe7365744d61726b6574426f72726f774361707328616464726573735b5d2c75696e743235365b5d297365744d696e4c6971756964617461626c65436f6c6c61746572616c2875696e7432353629736574436f6c6c61746572616c466163746f7228616464726573732c75696e743235362c75696e7432353629736574416374696f6e7350617573656428616464726573735b5d2c75696e743235365b5d2c626f6f6c297365744d61726b6574537570706c794361707328616464726573735b5d2c75696e743235365b5d29a264697066735822122008d1ed16d3e3bcec1c4fdc965503990e0596512b2cfd6228c307652b040bcb2264736f6c634300080d0033",
1741
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106103a35760003560e01c80638e8f294b116101e9578063c488847b1161010f578063e30c3978116100ad578063eade3eed1161007c578063eade3eed14610893578063ede4edd0146108a6578063f2fde38b146108b9578063fccbe7f6146108cc57600080fd5b8063e30c397814610853578063e85a296014610864578063e875544614610877578063e89d51ad1461088057600080fd5b8063da35a26f116100e9578063da35a26f14610811578063db5c65de14610824578063dce154491461082d578063df71403b1461084057600080fd5b8063c488847b146107ca578063cab4f84c146107eb578063d136af44146107fe57600080fd5b8063afcff50f11610187578063bde3672d11610156578063bde3672d1461075e578063be26317e1461078d578063c0891ba914610797578063c2998238146107aa57600080fd5b8063afcff50f146106fe578063b0772d0b14610725578063b2068e841461072d578063b4a0bdf31461074d57600080fd5b806394543c15116101c357806394543c15146106a4578063a8431081146106b7578063a8c3c850146106ca578063abfceffc146106de57600080fd5b80638e8f294b1461063c578063921363951461067e578063929fe9a11461069157600080fd5b806352d84d1e116102ce57806361252fd11161026c5780637dc0d1d01161023b5780637dc0d1d0146105e957806380d45a2d146105fc5780638da5cb5b1461060f5780638e6470ea1461062957600080fd5b806361252fd1146105b15780636d0be88d146105c6578063715018a6146105d957806379ba5097146105e157600080fd5b806357e871e7116102a857806357e871e71461056e5780635c21b6c5146105785780635cc4fdeb1461058b5780635ec88c791461059e57600080fd5b806352d84d1e14610528578063530e784f1461054857806356aaee2d1461055b57600080fd5b80632bce219c116103465780634bca0d8c116103155780634bca0d8c146104b75780634e79238f146104e0578063520b6c7414610502578063528a174c1461051557600080fd5b80632bce219c1461044f5780633d98a1e5146104625780634a5844321461048e5780634ada90af146104ae57600080fd5b806312348e961161038257806312348e9614610403578063186db48f146104165780631bc41f281461042957806324aaa2201461043c57600080fd5b80627e3dd2146103a857806302c3bcbb146103c15780630e32cb86146103ee575b600080fd5b60015b6040516103b891906145a5565b60405180910390f35b6103e16103cf3660046145e3565b60d16020526000908152604090205481565b6040516103b8919061460a565b6104016103fc3660046145e3565b6108df565b005b610401610411366004614629565b6108f3565b61040161042436600461469c565b6109cf565b610401610437366004614715565b610b26565b61040161044a36600461478c565b610ee6565b61040161045d366004614866565b610fb3565b6103ab6104703660046148e1565b6001600160a01b0316600090815260cd602052604090205460ff1690565b6103e161049c3660046145e3565b60cf6020526000908152604090205481565b6103e160cb5481565b6103e16104c53660046148e1565b6001600160a01b0316600090815260cc602052604090205490565b6104f36104ee366004614902565b61131a565b6040516103b89392919061495a565b610401610510366004614629565b61134b565b6104f36105233660046145e3565b6113a5565b61053b610536366004614629565b6113d0565b6040516103b89190614996565b6104016105563660046148e1565b6113fa565b6104016105693660046148e1565b61145e565b6103e16101395481565b6104016105863660046145e3565b611732565b6104016105993660046149a4565b61184f565b6104f36105ac3660046145e3565b611a61565b6105b9611a73565b6040516103b89190614a51565b6104016105d4366004614a62565b611ad5565b610401611c4e565b610401611c62565b60c95461053b906001600160a01b031681565b61040161060a366004614629565b611c97565b6033546001600160a01b03165b6040516103b89190614ab2565b610401610637366004614ac0565b611ca8565b61066f61064a3660046145e3565b60cd6020526000908152604090208054600182015460029092015460ff909116919083565b6040516103b893929190614af5565b61040161068c3660046145e3565b611dc1565b6103ab61069f366004614b03565b61217a565b6103ab6106b23660046148e1565b6121ae565b6104016106c5366004614629565b612256565b6104016106d8366004614629565b61013955565b6106f16106ec3660046145e3565b6122f6565b6040516103b89190614b7e565b61061c7f000000000000000000000000000000000000000000000000000000000000000081565b6106f161236c565b61074061073b3660046145e3565b6123cc565b6040516103b89190614c18565b6097546001600160a01b031661053b565b61040161076c3660046148e1565b6001600160a01b0316600090815260cd60205260409020805460ff19169055565b6103e16101075481565b6104016107a5366004614ac0565b612617565b6107bd6107b8366004614d30565b612893565b6040516103b89190614db5565b6107dd6107d8366004614ac0565b61294a565b6040516103b8929190614dc6565b6104016107f93660046148e1565b612a75565b61040161080c36600461469c565b612c6d565b61040161081f366004614de1565b612dd0565b6103e160d05481565b61053b61083b366004614e14565b612eaa565b61040161084e366004614ac0565b612ee2565b6065546001600160a01b031661061c565b6103ab610872366004614e5f565b613278565b6103e160ca5481565b61040161088e366004614e92565b6132cf565b6104016108a1366004614efd565b6134a8565b6103e16108b43660046145e3565b6136d2565b6104016108c73660046145e3565b613944565b6103e16108da366004614629565b6139b5565b6108e76139d9565b6108f081613a03565b50565b6109316040518060400160405280601781526020017f736574436c6f7365466163746f722875696e7432353629000000000000000000815250613a7c565b80670c7d713b49da000010156109625760405162461bcd60e51b815260040161095990614f6d565b60405180910390fd5b8066b1a2bc2ec5000011156109895760405162461bcd60e51b815260040161095990614fc8565b60ca8054908290556040517f3b9670cf975d26958e754b57098eaa2ac914d8d2a31b83257997b9f346110fd9906109c39083908590614dc6565b60405180910390a15050565b6109f060405180606001604052806028815260200161586160289139613a7c565b82818115801590610a0057508082145b610a1c5760405162461bcd60e51b815260040161095990614fff565b610a2582613b1a565b60005b82811015610b1d57848482818110610a4257610a4261500f565b9050602002013560cf6000898985818110610a5f57610a5f61500f565b9050602002016020810190610a7491906148e1565b6001600160a01b03168152602081019190915260400160002055868682818110610aa057610aa061500f565b9050602002016020810190610ab591906148e1565b6001600160a01b03167f6f1951b2aad10f3fc81b86d91105b413a5b3f847a34bbc5ce1904201b14438f6868684818110610af157610af161500f565b90506020020135604051610b05919061460a565b60405180910390a2610b168161503b565b9050610a28565b50505050505050565b610b31846004613b45565b6001600160a01b038416600090815260cd60205260409020805460ff16610b6d5784604051635a9a1eb960e11b81526004016109599190614ab2565b306001600160a01b03851603610c1557306001600160a01b0316856001600160a01b0316635fe3b5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be99190615060565b6001600160a01b031614610c1057604051630c73eb0560e01b815260040160405180910390fd5b610d44565b6001600160a01b038416600090815260cd602052604090205460ff16610c505783604051635a9a1eb960e11b81526004016109599190614ab2565b836001600160a01b0316635fe3b5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb29190615060565b6001600160a01b0316856001600160a01b0316635fe3b5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cf9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1d9190615060565b6001600160a01b031614610d4457604051630c73eb0560e01b815260040160405180910390fd5b6001600160a01b038216600090815260038201602052604090205460ff16610d83578482604051630cdfb2db60e31b8152600401610959929190615081565b60d35460005b81811015610b1d57600060d38281548110610da657610da661500f565b60009182526020909120015460405163051d1d4f60e11b81526001600160a01b0390911691508190630a3a3a9e90610de2908b90600401614ab2565b600060405180830381600087803b158015610dfc57600080fd5b505af1158015610e10573d6000803e3d6000fd5b505060405163db7954fd60e01b81526001600160a01b038416925063db7954fd9150610e42908b908990600401615081565b600060405180830381600087803b158015610e5c57600080fd5b505af1158015610e70573d6000803e3d6000fd5b505060405163db7954fd60e01b81526001600160a01b038416925063db7954fd9150610ea2908b908a90600401615081565b600060405180830381600087803b158015610ebc57600080fd5b505af1158015610ed0573d6000803e3d6000fd5b505050505080610edf9061503b565b9050610d89565b610f076040518060600160405280602a81526020016158da602a9139613a7c565b8382610f1b610f16828461509c565b613b1a565b60005b82811015610fa95760005b82811015610f9857610f88898984818110610f4657610f4661500f565b9050602002016020810190610f5b91906148e1565b888884818110610f6d57610f6d61500f565b9050602002016020810190610f8291906150bb565b87613b71565b610f918161503b565b9050610f29565b50610fa28161503b565b9050610f1e565b5050505050505050565b6000610fc184613c3e613c72565b905060d05481600001511115610ff15760d0548151604051631a451c0f60e21b8152610959929190600401614dc6565b6000611011604051806020016040528060cb548152508360400151613cc1565b82519091508110611039578151604051632c1f8ef160e21b8152610959918391600401614dc6565b8160a0015160000361105e5760405163095bf33360e01b815260040160405180910390fd5b8261106d610f166002836150f2565b60005b818110156112365760cd600087878481811061108e5761108e61500f565b90506060020160200160208101906110a691906148e1565b6001600160a01b0316815260208101919091526040016000205460ff1661110b578585828181106110d9576110d961500f565b90506060020160200160208101906110f191906148e1565b604051635a9a1eb960e11b81526004016109599190614ab2565b60cd60008787848181106111215761112161500f565b61113792602060609092020190810191506148e1565b6001600160a01b0316815260208101919091526040016000205460ff166111805785858281811061116a5761116a61500f565b6110f192602060609092020190810191506148e1565b368686838181106111935761119361500f565b90506060020190508060200160208101906111ae91906148e1565b6001600160a01b0316638bbdb6db338a60408501356111d060208701876148e1565b60016040518663ffffffff1660e01b81526004016111f2959493929190615106565b600060405180830381600087803b15801561120c57600080fd5b505af1158015611220573d6000803e3d6000fd5b50505050508061122f9061503b565b9050611070565b506001600160a01b038616600090815260cc60209081526040808320805482518185028101850190935280835291929091908301828280156112a157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611283575b505083519394506000925050505b8181101561130f5760006112dc8483815181106112ce576112ce61500f565b60200260200101518b613ce1565b5091505080156112fe5760405162461bcd60e51b815260040161095990615197565b506113088161503b565b90506112af565b505050505050505050565b60008060008061132f88888888613d88613dbc565b608081015160a09091015160009a919950975095505050505050565b61136c60405180606001604052806025815260200161588960259139613a7c565b60d08054908290556040517eb4f4f153ad7f1397564a8830fef092481e8cf6a2cd3ff04f96d10ba51200a5906109c39083908590614dc6565b6000806000806113b785613d88613c72565b608081015160a090910151600097919650945092505050565b60ce81815481106113e057600080fd5b6000918252602090912001546001600160a01b0316905081565b6114026139d9565b61140b81613ff1565b60c980546001600160a01b038381166001600160a01b03198316179092556040519116907fd52b2b9b7e9ee655fcb95d2e5b9e0c9f69e7ef2b8e9d2d0ea78402d576d22e22906109c390839085906151a7565b6114666139d9565b6001600160a01b038116600090815260d4602052604090205460ff161561149f5760405162461bcd60e51b8152600401610959906151e7565b60d35460005b818110156115d957600060d382815481106114c2576114c261500f565b600091825260209182902001546040805163f7c618c160e01b815290516001600160a01b039092169263f7c618c1926004808401938290030181865afa158015611510573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115349190615060565b9050836001600160a01b031663f7c618c16040518163ffffffff1660e01b8152600401602060405180830381865afa158015611574573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115989190615060565b6001600160a01b0316816001600160a01b0316036115c85760405162461bcd60e51b81526004016109599061523f565b506115d28161503b565b90506114a5565b5060d3546115eb610f1682600161524f565b60d3805460018082019092557f915c3eb987b20e1af620c1403197bf687fb7f18513b3a73fde6e78c7072c41a60180546001600160a01b0319166001600160a01b038616908117909155600090815260d460205260408120805460ff191690921790915560ce54905b818110156116f757846001600160a01b0316632a869a4d60ce838154811061167e5761167e61500f565b6000918252602090912001546040516001600160e01b031960e084901b1681526116b4916001600160a01b031690600401614ab2565b600060405180830381600087803b1580156116ce57600080fd5b505af11580156116e2573d6000803e3d6000fd5b50505050806116f09061503b565b9050611654565b506040516001600160a01b038516907f058fa9577dc29aece41d41c2d3bff2ed4e8d5085762198e8f7faab35039555da90600090a250505050565b6001600160a01b038116600090815260cc602090815260408083208054825181850281018501909352808352919290919083018282801561179c57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161177e575b5050835160c954949550936001600160a01b0316925060009150505b8281101561184857816001600160a01b03166396e85ced8583815181106117e1576117e161500f565b60200260200101516040518263ffffffff1660e01b81526004016118059190614ab2565b600060405180830381600087803b15801561181f57600080fd5b505af1158015611833573d6000803e3d6000fd5b50505050806118419061503b565b90506117b8565b5050505050565b6118706040518060600160405280602c81526020016158ae602c9139613a7c565b6001600160a01b038316600090815260cd60205260409020805460ff166118ac5783604051635a9a1eb960e11b81526004016109599190614ab2565b670c7d713b49da00008311156118d5576040516302f22cad60e61b815260040160405180910390fd5b670de0b6b3a76400008211156118fd5760405162f9474b60e61b815260040160405180910390fd5b8282101561191d5760405162f9474b60e61b815260040160405180910390fd5b821580159061199a575060c95460405163fc57d4df60e01b81526001600160a01b039091169063fc57d4df90611957908790600401614ab2565b602060405180830381865afa158015611974573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119989190615272565b155b156119b9578360405162e52a7d60e41b81526004016109599190614ab2565b6001810154838114611a0957600182018490556040517f70483e6592cd5182d45ac970e05bc62cdcc90e9d8ef2c2dbe686cf383bcd7fc590611a0090879084908890615293565b60405180910390a15b6002820154838114611a5957600283018490556040517f9e92c7d5fef69846094f3ddcadcb9402c6ba469c461368714f1cabd8ef48b59190611a5090889084908890615293565b60405180910390a15b505050505050565b6000806000806113b785613c3e613c72565b606060d3805480602002602001604051908101604052809291908181526020018280548015611acb57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611aad575b5050505050905090565b611ae0846006613b45565b611aeb848483614018565b60d35460005b81811015611a5957600060d38281548110611b0e57611b0e61500f565b60009182526020909120015460405163051d1d4f60e11b81526001600160a01b0390911691508190630a3a3a9e90611b4a908a90600401614ab2565b600060405180830381600087803b158015611b6457600080fd5b505af1158015611b78573d6000803e3d6000fd5b505060405163db7954fd60e01b81526001600160a01b038416925063db7954fd9150611baa908a908a90600401615081565b600060405180830381600087803b158015611bc457600080fd5b505af1158015611bd8573d6000803e3d6000fd5b505060405163db7954fd60e01b81526001600160a01b038416925063db7954fd9150611c0a908a908990600401615081565b600060405180830381600087803b158015611c2457600080fd5b505af1158015611c38573d6000803e3d6000fd5b505050505080611c479061503b565b9050611af1565b611c566139d9565b611c6060006140bd565b565b60655433906001600160a01b03168114611c8e5760405162461bcd60e51b8152600401610959906152e7565b6108f0816140bd565b611c9f6139d9565b6108f0816140d6565b611cb3836001613b45565b611cbe838383614018565b60d35460005b8181101561184857600060d38281548110611ce157611ce161500f565b60009182526020909120015460405163051d1d4f60e11b81526001600160a01b0390911691508190630a3a3a9e90611d1d908990600401614ab2565b600060405180830381600087803b158015611d3757600080fd5b505af1158015611d4b573d6000803e3d6000fd5b505060405163db7954fd60e01b81526001600160a01b038416925063db7954fd9150611d7d9089908990600401615081565b600060405180830381600087803b158015611d9757600080fd5b505af1158015611dab573d6000803e3d6000fd5b505050505080611dba9061503b565b9050611cc4565b6001600160a01b038116600090815260cc6020908152604080832080548251818502810185019093528083529192909190830182828015611e2b57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611e0d575b5050835160c954949550933393506001600160a01b03169150600090505b83811015611f5757848181518110611e6357611e6361500f565b60200260200101516001600160a01b031663a6afed956040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611eaa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ece9190615272565b50816001600160a01b03166396e85ced868381518110611ef057611ef061500f565b60200260200101516040518263ffffffff1660e01b8152600401611f149190614ab2565b600060405180830381600087803b158015611f2e57600080fd5b505af1158015611f42573d6000803e3d6000fd5b5050505080611f509061503b565b9050611e49565b50506000611f6785613c3e613c72565b905060d05481600001511115611f975760d0548151604051631a451c0f60e21b8152610959929190600401614dc6565b8060a00151600003611fbc5760405163095bf33360e01b815260040160405180910390fd5b60408051602080820183528351825282518082018452848401518152835191820190935260cb5481529091600091611ff49190614133565b90506000612002838361417b565b90506120266040518060200160405280670de0b6b3a7640000815250825190511090565b1561204a5781518351604051631a451c0f60e21b8152610959929190600401614dc6565b60005b8681101561130f5760008882815181106120695761206961500f565b60200260200101519050600080612080838d613ce1565b509150915060006120918683613cc1565b905082156120fc57836001600160a01b031663b2a02ff18b8f866040518463ffffffff1660e01b81526004016120c9939291906152f7565b600060405180830381600087803b1580156120e357600080fd5b505af11580156120f7573d6000803e3d6000fd5b505050505b811561216557836001600160a01b03166344fe6ffe8b8f846040518463ffffffff1660e01b8152600401612132939291906152f7565b600060405180830381600087803b15801561214c57600080fd5b505af1158015612160573d6000803e3d6000fd5b505050505b50505050806121739061503b565b905061204d565b6001600160a01b03808216600090815260cd60209081526040808320938616835260039093019052205460ff165b92915050565b6001600160a01b038116600090815260cd60205260408120600101541580156121dd57506121dd826002613278565b80156121a85750670de0b6b3a7640000826001600160a01b031663173b99046040518163ffffffff1660e01b8152600401602060405180830381865afa15801561222b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061224f9190615272565b1492915050565b670de0b6b3a764000081101561227e5760405162461bcd60e51b815260040161095990615360565b6122bc6040518060400160405280602081526020017f7365744c69717569646174696f6e496e63656e746976652875696e7432353629815250613a7c565b60cb8054908290556040517faeba5a6c40a8ac138134bff1aaa65debf25971188a58804bad717f82f0ec1316906109c39083908590614dc6565b6001600160a01b038116600090815260cc6020908152604080832080548251818502810185019093528083526060949383018282801561235f57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612341575b5093979650505050505050565b606060ce805480602002602001604051908101604052809291908181526020018280548015611acb576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611aad575050505050905090565b60d3546060908067ffffffffffffffff8111156123eb576123eb614c29565b60405190808252806020026020018201604052801561244957816020015b612436604051806060016040528060006001600160a01b0316815260200160008152602001600081525090565b8152602001906001900390816124095790505b50915060005b8181101561261057600060d3828154811061246c5761246c61500f565b60009182526020808320909101546040805163f7c618c160e01b815290516001600160a01b039092169450849263f7c618c1926004808401938290030181865afa1580156124be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124e29190615060565b90506040518060600160405280826001600160a01b03168152602001836001600160a01b03166374c4c1cc896040518263ffffffff1660e01b815260040161252a9190614ab2565b602060405180830381865afa158015612547573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061256b9190615272565b8152602001836001600160a01b0316637c05a7c5896040518263ffffffff1660e01b815260040161259c9190614ab2565b602060405180830381865afa1580156125b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125dd9190615272565b8152508584815181106125f2576125f261500f565b60200260200101819052505050806126099061503b565b905061244f565b5050919050565b612622836000613b45565b6001600160a01b038316600090815260cd602052604090205460ff1661265d5782604051635a9a1eb960e11b81526004016109599190614ab2565b6001600160a01b038316600090815260d160205260409020546000198114612790576000846001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126e39190615272565b905060006040518060200160405280876001600160a01b031663182df0f56040518163ffffffff1660e01b8152600401602060405180830381865afa158015612730573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127549190615272565b9052905060006127658284876141b5565b90508381111561278c57868460405163db33be3d60e01b8152600401610959929190615370565b5050505b60d35460005b81811015611a5957600060d382815481106127b3576127b361500f565b60009182526020909120015460405163051d1d4f60e11b81526001600160a01b0390911691508190630a3a3a9e906127ef908a90600401614ab2565b600060405180830381600087803b15801561280957600080fd5b505af115801561281d573d6000803e3d6000fd5b505060405163db7954fd60e01b81526001600160a01b038416925063db7954fd915061284f908a908a90600401615081565b600060405180830381600087803b15801561286957600080fd5b505af115801561287d573d6000803e3d6000fd5b50505050508061288c9061503b565b9050612796565b805160609060008167ffffffffffffffff8111156128b3576128b3614c29565b6040519080825280602002602001820160405280156128dc578160200160208202803683370190505b50905060005b828110156129425760008582815181106128fe576128fe61500f565b6020026020010151905061291281336141df565b60008383815181106129265761292661500f565b60209081029190910101525061293b8161503b565b90506128e2565b509392505050565b6000806000612958866142d2565b90506000612965866142d2565b90506000866001600160a01b031663182df0f56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129cb9190615272565b905060006129e56040518060200160405280600081525090565b60408051602080820183526000808352835180830185529081528351808301855260cb54815284519283019094528882529192612a2191614133565b9250612a49604051806020016040528088815250604051806020016040528088815250614133565b9150612a55838361417b565b9050612a61818b613cc1565b60009d909c509a5050505050505050505050565b612a9e7f000000000000000000000000000000000000000000000000000000000000000061436c565b6001600160a01b038116600090815260cd602052604090205460ff1615612ada578060405163d005ce4760e01b81526004016109599190614ab2565b806001600160a01b0316633d9ea3a16040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b3c9190615389565b612b585760405162461bcd60e51b8152600401610959906153de565b6001600160a01b038116600090815260cd60205260408120805460ff19166001908117825581018290556002810191909155612b9382614399565b60d35460005b81811015612c305760d38181548110612bb457612bb461500f565b600091825260209091200154604051632a869a4d60e01b81526001600160a01b0390911690632a869a4d90612bed908790600401614ab2565b600060405180830381600087803b158015612c0757600080fd5b505af1158015612c1b573d6000803e3d6000fd5b5050505080612c299061503b565b9050612b99565b507faf16ad15f9e29d5140e8e81a30a92a755aa8edff3d301053c84392b70c0d09a383604051612c609190614996565b60405180910390a1505050565b612c8e60405180606001604052806028815260200161590460289139613a7c565b826000819003612cb05760405162461bcd60e51b815260040161095990615422565b808214612ccf5760405162461bcd60e51b815260040161095990615422565b612cd881613b1a565b60005b81811015611a5957838382818110612cf557612cf561500f565b9050602002013560d16000888885818110612d1257612d1261500f565b9050602002016020810190612d2791906148e1565b6001600160a01b03168152602081019190915260400160002055858582818110612d5357612d5361500f565b9050602002016020810190612d6891906148e1565b6001600160a01b03167f9e0ad9cee10bdf36b7fbd38910c0bdff0f275ace679b45b922381c2723d676f8858584818110612da457612da461500f565b90506020020135604051612db8919061460a565b60405180910390a2612dc98161503b565b9050612cdb565b600054610100900460ff1615808015612df05750600054600160ff909116105b80612e0a5750303b158015612e0a575060005460ff166001145b612e265760405162461bcd60e51b81526004016109599061547d565b6000805460ff191660011790558015612e49576000805461ff0019166101001790555b612e5161445f565b612e5a8261448e565b612e63836140d6565b8015612ea5576000805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890612c60906001906154a1565b505050565b60cc6020528160005260406000208181548110612ec657600080fd5b6000918252602090912001546001600160a01b03169150829050565b612eed836002613b45565b6001600160a01b038316600090815260cd602052604090205460ff16612f285782604051635a9a1eb960e11b81526004016109599190614ab2565b6001600160a01b03808416600090815260cd60209081526040808320938616835260039093019052205460ff16612f6c57612f628361436c565b612f6c33836141df565b612f7582611732565b60c95460405163fc57d4df60e01b81526001600160a01b039091169063fc57d4df90612fa5908690600401614ab2565b602060405180830381865afa158015612fc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fe69190615272565b600003613007578260405162e52a7d60e41b81526004016109599190614ab2565b6001600160a01b038316600090815260cf602052604090205460001981146130c5576000846001600160a01b03166347bd37186040518163ffffffff1660e01b8152600401602060405180830381865afa158015613069573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061308d9190615272565b9050600061309b848361524f565b9050828111156130c2578583604051632e649eed60e01b8152600401610959929190615370565b50505b60006130d78486600086613d88613dbc565b60a0810151909150156130fd5760405163bb55fd2760e01b815260040160405180910390fd5b60006040518060200160405280876001600160a01b031663aa5af0fd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613148573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061316c9190615272565b905260d35490915060005b81811015610fa957600060d382815481106131945761319461500f565b600091825260209091200154604051632352607960e01b81526001600160a01b03909116915081906323526079906131d2908c9088906004016154c0565b600060405180830381600087803b1580156131ec57600080fd5b505af1158015613200573d6000803e3d6000fd5b5050604051636a95ddef60e01b81526001600160a01b0384169250636a95ddef9150613234908c908c9089906004016154db565b600060405180830381600087803b15801561324e57600080fd5b505af1158015613262573d6000803e3d6000fd5b5050505050806132719061503b565b9050613177565b6001600160a01b038216600090815260d260205260408120818360088111156132a3576132a3615503565b60088111156132b4576132b4615503565b815260208101919091526040016000205460ff169392505050565b6132da856005613b45565b6132e383611732565b6001600160a01b038516600090815260cd602052604090205460ff1661331e5784604051635a9a1eb960e11b81526004016109599190614ab2565b6001600160a01b038416600090815260cd602052604090205460ff166133595783604051635a9a1eb960e11b81526004016109599190614ab2565b6040516395dd919360e01b81526000906001600160a01b038716906395dd919390613388908790600401614ab2565b602060405180830381865afa1580156133a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133c99190615272565b905081806133db57506133db866121ae565b1561340757808311156134015760405163e46c155960e01b815260040160405180910390fd5b50611848565b600061341585613c3e613c72565b905060d0548160000151116134445760d0548151604051636e61bb0560e11b8152610959929190600401614dc6565b8060a001516000036134695760405163095bf33360e01b815260040160405180910390fd5b6000613485604051806020016040528060ca5481525084613cc1565b905080851115610fa95760405163e46c155960e01b815260040160405180910390fd5b6134b3826003613b45565b60c9546040516396e85ced60e01b81526001600160a01b03909116906396e85ced906134e3908590600401614ab2565b600060405180830381600087803b1580156134fd57600080fd5b505af1158015613511573d6000803e3d6000fd5b505050506001600160a01b038216600090815260cd602052604090205460ff166135505781604051635a9a1eb960e11b81526004016109599190614ab2565b60d35460005b818110156136cc5760006040518060200160405280866001600160a01b031663aa5af0fd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156135a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135cd9190615272565b8152509050600060d383815481106135e7576135e761500f565b600091825260209091200154604051632352607960e01b81526001600160a01b039091169150819063235260799061362590899086906004016154c0565b600060405180830381600087803b15801561363f57600080fd5b505af1158015613653573d6000803e3d6000fd5b5050604051636a95ddef60e01b81526001600160a01b0384169250636a95ddef9150613687908990899087906004016154db565b600060405180830381600087803b1580156136a157600080fd5b505af11580156136b5573d6000803e3d6000fd5b505050505050806136c59061503b565b9050613556565b50505050565b60006136df826008613b45565b816000806136ed8333613ce1565b5091509150806000146137135760405163f8a5d66d60e01b815260040160405180910390fd5b61371e853384614018565b6001600160a01b038316600090815260cd60209081526040808320338452600381019092529091205460ff1661375a5750600095945050505050565b3360009081526003820160209081526040808320805460ff1916905560cc8252808320805482518185028101850190935280835291929091908301828280156137cc57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116137ae575b5050835193945083925060009150505b8281101561382e57876001600160a01b03168482815181106138005761380061500f565b60200260200101516001600160a01b03160361381e5780915061382e565b6138278161503b565b90506137dc565b5081811061383e5761383e615519565b33600090815260cc602052604090208054819061385d9060019061552f565b8154811061386d5761386d61500f565b9060005260206000200160009054906101000a90046001600160a01b031681838154811061389d5761389d61500f565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550808054806138db576138db615546565b600082815260208120820160001990810180546001600160a01b031916905590910190915560405133916001600160a01b038b16917fe699a64c18b07ac5b7301aa273f36a2287239eb9501d81950672794afba29a0d9190a35060009998505050505050505050565b61394c6139d9565b606580546001600160a01b0383166001600160a01b0319909116811790915561397d6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60008161013960008282546139ca919061524f565b90915550506101395492915050565b6033546001600160a01b03163314611c605760405162461bcd60e51b81526004016109599061558e565b6001600160a01b038116613a295760405162461bcd60e51b8152600401610959906155e0565b609780546001600160a01b038381166001600160a01b03198316179092556040519116907f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa0906109c39083908590615081565b6097546040516318c5e8ab60e01b81526000916001600160a01b0316906318c5e8ab90613aaf903390869060040161564e565b602060405180830381865afa158015613acc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613af09190615389565b905080613b1657333083604051634a3fa29360e01b81526004016109599392919061566e565b5050565b610107548111156108f057610107548160405163792bfb1b60e11b8152600401610959929190614dc6565b613b4f8282613278565b15613b165781816040516313b3ccb160e31b81526004016109599291906156c9565b6001600160a01b038316600090815260cd602052604090205460ff16613ba95760405162461bcd60e51b815260040161095990615729565b6001600160a01b038316600090815260d2602052604081208291846008811115613bd557613bd5615503565b6008811115613be657613be6615503565b815260200190815260200160002060006101000a81548160ff0219169083151502179055507f35007a986bcd36d2f73fc7f1b73762e12eadb4406dd163194950fd3b5a6a827d838383604051612c6093929190615739565b6040805160208082018352600091829052825180820184526001600160a01b0394909416825260cd90522060020154815290565b613cab6040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b613cba83600080600086613dbc565b9392505050565b600080613cce84846144b5565b9050613cd9816144dd565b949350505050565b600080600080856001600160a01b031663c37f68e2866040518263ffffffff1660e01b8152600401613d139190614ab2565b608060405180830381865afa158015613d30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d549190615761565b9196509450925090508015613d8057858560405163015e34d960e61b8152600401610959929190615081565b509250925092565b6040805160208082018352600091829052825180820184526001600160a01b0394909416825260cd90522060010154815290565b613df56040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6001600160a01b038616600090815260cc6020908152604080832080548251818502810185019093528083529192909190830182828015613e5f57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613e41575b505083519394506000925050505b81811015613f93576000838281518110613e8957613e8961500f565b602002602001015190506000806000613ea2848e613ce1565b92509250925060006040518060200160405280613ebe876142d2565b81525090506000613edd60405180602001604052808581525083614133565b90506000613ef7613ef1888e63ffffffff16565b83614133565b9050613f0881878d602001516141b5565b60208c01528a51613f1c90839088906141b5565b8b5260408b0151613f3090849087906141b5565b8b60400181815250508e6001600160a01b0316876001600160a01b031603613f7b57613f61818f8d606001516141b5565b60608c01819052613f759084908f906141b5565b60608c01525b5050505050505080613f8c9061503b565b9050613e6d565b50600083606001518460400151613faa919061524f565b90508084602001511115613fd15760208401518190036080850152600060a0850152613fe5565b600060808501526020840151810360a08501525b50505095945050505050565b6001600160a01b0381166108f0576040516342bcdf7f60e11b815260040160405180910390fd5b6001600160a01b038316600090815260cd60205260409020805460ff166140545783604051635a9a1eb960e11b81526004016109599190614ab2565b6001600160a01b038316600090815260038201602052604090205460ff1661407c5750505050565b61408583611732565b60006140978486856000613d88613dbc565b60a0810151909150156118485760405163bb55fd2760e01b815260040160405180910390fd5b606580546001600160a01b03191690556108f0816144f5565b6101075481116140f85760405162461bcd60e51b8152600401610959906157f8565b6101078054908290556040517fc2d09fef144f7c8a86f71ea459f8fc17f675768eb1ae369cbd77fb31d467aafa906109c39083908590614dc6565b6040805160208101909152600081526040518060200160405280670de0b6b3a764000061416886600001518660000151614547565b61417291906150f2565b90529392505050565b60408051602081019091526000815260405180602001604052806141726141ae8660000151670de0b6b3a7640000614547565b8551614553565b6000806141c285856144b5565b90506141d66141d0826144dd565b8461455f565b95945050505050565b6141ea826007613b45565b6001600160a01b038216600090815260cd60205260409020805460ff166142265782604051635a9a1eb960e11b81526004016109599190614ab2565b6001600160a01b038216600090815260038201602052604090205460ff161561424e57505050565b6001600160a01b0380831660008181526003840160209081526040808320805460ff1916600190811790915560cc835281842080549182018155845291832090910180549488166001600160a01b031990951685179055519192917f3ab23ab0d51cccc0c3085aec51f99228625aa1a922b3a8ca89a26b0f2027a1a59190a3505050565b60c95460405163fc57d4df60e01b815260009182916001600160a01b039091169063fc57d4df90614307908690600401614ab2565b602060405180830381865afa158015614324573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143489190615272565b9050806000036121a8578260405162e52a7d60e41b81526004016109599190614ab2565b336001600160a01b038216146108f0578033604051634e9383fb60e11b8152600401610959929190615081565b60ce5460005b8181101561440957826001600160a01b031660ce82815481106143c4576143c461500f565b6000918252602090912001546001600160a01b0316036143f9578260405163d005ce4760e01b81526004016109599190614ab2565b6144028161503b565b905061439f565b505060ce805460018101825560008290527fd36cd1c74ef8d7326d8021b776c18fb5a5724b7f7bc93c2f42e43e10ef27d12a0180546001600160a01b0319166001600160a01b03841617905554613b1681613b1a565b600054610100900460ff166144865760405162461bcd60e51b815260040161095990615850565b611c6061456b565b600054610100900460ff166108e75760405162461bcd60e51b815260040161095990615850565b6040805160208101909152600081526040518060200160405280614172856000015185614547565b80516000906121a890670de0b6b3a7640000906150f2565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000613cba828461509c565b6000613cba82846150f2565b6000613cba828461524f565b600054610100900460ff166145925760405162461bcd60e51b815260040161095990615850565b611c60336140bd565b8015155b82525050565b602081016121a8828461459b565b60006001600160a01b0382166121a8565b6145cd816145b3565b81146108f057600080fd5b80356121a8816145c4565b6000602082840312156145f8576145f8600080fd5b6000613cd984846145d8565b8061459f565b602081016121a88284614604565b806145cd565b80356121a881614618565b60006020828403121561463e5761463e600080fd5b6000613cd9848461461e565b60008083601f84011261465f5761465f600080fd5b50813567ffffffffffffffff81111561467a5761467a600080fd5b60208301915083602082028301111561469557614695600080fd5b9250929050565b600080600080604085870312156146b5576146b5600080fd5b843567ffffffffffffffff8111156146cf576146cf600080fd5b6146db8782880161464a565b9450945050602085013567ffffffffffffffff8111156146fd576146fd600080fd5b6147098782880161464a565b95989497509550505050565b6000806000806080858703121561472e5761472e600080fd5b600061473a87876145d8565b945050602061474b878288016145d8565b935050604061475c878288016145d8565b925050606061476d878288016145d8565b91505092959194509250565b8015156145cd565b80356121a881614779565b6000806000806000606086880312156147a7576147a7600080fd5b853567ffffffffffffffff8111156147c1576147c1600080fd5b6147cd8882890161464a565b9550955050602086013567ffffffffffffffff8111156147ef576147ef600080fd5b6147fb8882890161464a565b9350935050604061480e88828901614781565b9150509295509295909350565b60008083601f84011261483057614830600080fd5b50813567ffffffffffffffff81111561484b5761484b600080fd5b60208301915083606082028301111561469557614695600080fd5b60008060006040848603121561487e5761487e600080fd5b600061488a86866145d8565b935050602084013567ffffffffffffffff8111156148aa576148aa600080fd5b6148b68682870161481b565b92509250509250925092565b60006121a8826145b3565b6145cd816148c2565b80356121a8816148cd565b6000602082840312156148f6576148f6600080fd5b6000613cd984846148d6565b6000806000806080858703121561491b5761491b600080fd5b600061492787876145d8565b9450506020614938878288016145d8565b93505060406149498782880161461e565b925050606061476d8782880161461e565b606081016149688286614604565b6149756020830185614604565b613cd96040830184614604565b60006121a8826148c2565b61459f81614982565b602081016121a8828461498d565b6000806000606084860312156149bc576149bc600080fd5b60006149c886866148d6565b93505060206149d98682870161461e565b92505060406149ea8682870161461e565b9150509250925092565b6000614a00838361498d565b505060200190565b6000614a12825190565b80845260209384019383018060005b83811015614a46578151614a3588826149f4565b975060208301925050600101614a21565b509495945050505050565b60208082528101613cba8184614a08565b60008060008060808587031215614a7b57614a7b600080fd5b6000614a8787876145d8565b9450506020614a98878288016145d8565b9350506040614949878288016145d8565b61459f816145b3565b602081016121a88284614aa9565b600080600060608486031215614ad857614ad8600080fd5b6000614ae486866145d8565b93505060206149d9868287016145d8565b60608101614968828661459b565b60008060408385031215614b1957614b19600080fd5b6000614b2585856145d8565b9250506020614b36858286016148d6565b9150509250929050565b6000614b4a825190565b80845260209384019383018060005b83811015614a46578151614b6d88826149f4565b975060208301925050600101614b59565b60208082528101613cba8184614b40565b80516060830190614ba08482614aa9565b506020820151614bb36020850182614604565b5060408201516136cc6040850182614604565b6000614bd28383614b8f565b505060600190565b6000614be4825190565b80845260209384019383018060005b83811015614a46578151614c078882614bc6565b975060208301925050600101614bf3565b60208082528101613cba8184614bda565b634e487b7160e01b600052604160045260246000fd5b601f19601f830116810181811067ffffffffffffffff82111715614c6557614c65614c29565b6040525050565b6000614c7760405190565b9050614c838282614c3f565b919050565b600067ffffffffffffffff821115614ca257614ca2614c29565b5060209081020190565b6000614cbf614cba84614c88565b614c6c565b83815290506020808201908402830185811115614cde57614cde600080fd5b835b81811015614d025780614cf388826145d8565b84525060209283019201614ce0565b5050509392505050565b600082601f830112614d2057614d20600080fd5b8135613cd9848260208601614cac565b600060208284031215614d4557614d45600080fd5b813567ffffffffffffffff811115614d5f57614d5f600080fd5b613cd984828501614d0c565b6000614a008383614604565b6000614d81825190565b80845260209384019383018060005b83811015614a46578151614da48882614d6b565b975060208301925050600101614d90565b60208082528101613cba8184614d77565b60408101614dd48285614604565b613cba6020830184614604565b60008060408385031215614df757614df7600080fd5b6000614e03858561461e565b9250506020614b36858286016145d8565b60008060408385031215614e2a57614e2a600080fd5b6000614e3685856145d8565b9250506020614b368582860161461e565b600981106108f057600080fd5b80356121a881614e47565b60008060408385031215614e7557614e75600080fd5b6000614e8185856145d8565b9250506020614b3685828601614e54565b600080600080600060a08688031215614ead57614ead600080fd5b6000614eb988886145d8565b9550506020614eca888289016145d8565b9450506040614edb888289016145d8565b9350506060614eec8882890161461e565b925050608061480e88828901614781565b60008060408385031215614f1357614f13600080fd5b6000614e0385856145d8565b602e81526000602082017f436c6f736520666163746f722067726561746572207468616e206d6178696d7581526d369031b637b9b2903330b1ba37b960911b602082015291505b5060400190565b602080825281016121a881614f1f565b602e81526000602082017f436c6f736520666163746f7220736d616c6c6572207468616e206d696e696d7581526d369031b637b9b2903330b1ba37b960911b60208201529150614f66565b602080825281016121a881614f7d565b600d81526000602082016c1a5b9d985b1a59081a5b9c1d5d609a1b815291505b5060200190565b602080825281016121a881614fd8565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019820361504e5761504e615025565b5060010190565b80516121a8816148cd565b60006020828403121561507557615075600080fd5b6000613cd98484615055565b6040810161508f8285614aa9565b613cba6020830184614aa9565b60008160001904831182151516156150b6576150b6615025565b500290565b6000602082840312156150d0576150d0600080fd5b6000613cd98484614e54565b634e487b7160e01b600052601260045260246000fd5b600082615101576151016150dc565b500490565b60a081016151148288614aa9565b6151216020830187614aa9565b61512e6040830186614604565b61513b606083018561498d565b615148608083018461459b565b9695505050505050565b602881526000602082017f4e6f6e7a65726f20626f72726f772062616c616e6365206166746572206c69718152673ab4b230ba34b7b760c11b60208201529150614f66565b602080825281016121a881615152565b604081016151b5828561498d565b613cba602083018461498d565b600e81526000602082016d616c72656164792065786973747360901b81529150614ff8565b602080825281016121a8816151c2565b602b81526000602082017f6469737472696275746f7220616c72656164792065786973747320776974682081526a1d1a1a5cc81c995dd85c9960aa1b60208201529150614f66565b602080825281016121a8816151f7565b6000821982111561526257615262615025565b500190565b80516121a881614618565b60006020828403121561528757615287600080fd5b6000613cd98484615267565b60608101614968828661498d565b602981526000602082017f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865208152683732bb9037bbb732b960b91b60208201529150614f66565b602080825281016121a8816152a1565b606081016153058286614aa9565b6149756020830185614aa9565b603181526000602082017f6c69717569646174696f6e20696e63656e746976652073686f756c64206265208152700cee4cac2e8cae440e8d0c2dc4062ca627607b1b60208201529150614f66565b602080825281016121a881615312565b60408101614dd48285614aa9565b80516121a881614779565b60006020828403121561539e5761539e600080fd5b6000613cd9848461537e565b601b81526000602082017f436f6d7074726f6c6c65723a20496e76616c69642076546f6b656e000000000081529150614ff8565b602080825281016121a8816153aa565b601981526000602082017f696e76616c6964206e756d626572206f66206d61726b6574730000000000000081529150614ff8565b602080825281016121a8816153ee565b602e81526000602082017f496e697469616c697a61626c653a20636f6e747261637420697320616c72656181526d191e481a5b9a5d1a585b1a5e995960921b60208201529150614f66565b602080825281016121a881615432565b600060ff82166121a8565b61459f8161548d565b602081016121a88284615498565b805160208301906136cc8482614604565b604081016154ce8285614aa9565b613cba60208301846154af565b606081016154e98286614aa9565b6154f66020830185614aa9565b613cd960408301846154af565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052600160045260246000fd5b60008282101561554157615541615025565b500390565b634e487b7160e01b600052603160045260246000fd5b60208082527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657291019081526000614ff8565b602080825281016121a88161555c565b602581526000602082017f696e76616c696420616365737320636f6e74726f6c206d616e61676572206164815264647265737360d81b60208201529150614f66565b602080825281016121a88161559e565b60005b8381101561560b5781810151838201526020016155f3565b838111156136cc5750506000910152565b6000615626825190565b80845260208401935061563d8185602086016155f0565b601f01601f19169290920192915050565b6040810161565c8285614aa9565b8181036020830152613cd9818461561c565b6060810161567c8286614aa9565b6156896020830185614aa9565b81810360408301526141d6818461561c565b600981106108f0576108f0615503565b80614c838161569b565b60006121a8826156ab565b61459f816156b5565b604081016156d78285614aa9565b613cba60208301846156c0565b602881526000602082017f63616e6e6f742070617573652061206d61726b65742074686174206973206e6f8152671d081b1a5cdd195960c21b60208201529150614f66565b602080825281016121a8816156e4565b60608101615747828661498d565b61575460208301856156c0565b613cd9604083018461459b565b6000806000806080858703121561577a5761577a600080fd5b60006157868787615267565b945050602061579787828801615267565b93505060406157a887828801615267565b925050606061476d87828801615267565b602281526000602082017f436f6d7074726f6c6c65723a20496e76616c6964206d61784c6f6f70734c696d8152611a5d60f21b60208201529150614f66565b602080825281016121a8816157b9565b602b81526000602082017f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206981526a6e697469616c697a696e6760a81b60208201529150614f66565b602080825281016121a88161580856fe7365744d61726b6574426f72726f774361707328616464726573735b5d2c75696e743235365b5d297365744d696e4c6971756964617461626c65436f6c6c61746572616c2875696e7432353629736574436f6c6c61746572616c466163746f7228616464726573732c75696e743235362c75696e7432353629736574416374696f6e7350617573656428616464726573735b5d2c75696e743235365b5d2c626f6f6c297365744d61726b6574537570706c794361707328616464726573735b5d2c75696e743235365b5d29a264697066735822122008d1ed16d3e3bcec1c4fdc965503990e0596512b2cfd6228c307652b040bcb2264736f6c634300080d0033",
1742
+ "linkReferences": {},
1743
+ "deployedLinkReferences": {}
1744
+ }