@across-protocol/contracts 0.1.0

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 (257) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/LICENSE +661 -0
  3. package/README.md +53 -0
  4. package/artifacts/@eth-optimism/contracts/L2/messaging/IL2ERC20Bridge.sol/IL2ERC20Bridge.dbg.json +4 -0
  5. package/artifacts/@eth-optimism/contracts/L2/messaging/IL2ERC20Bridge.sol/IL2ERC20Bridge.json +252 -0
  6. package/artifacts/@eth-optimism/contracts/libraries/bridge/CrossDomainEnabled.sol/CrossDomainEnabled.dbg.json +4 -0
  7. package/artifacts/@eth-optimism/contracts/libraries/bridge/CrossDomainEnabled.sol/CrossDomainEnabled.json +35 -0
  8. package/artifacts/@eth-optimism/contracts/libraries/bridge/ICrossDomainMessenger.sol/ICrossDomainMessenger.dbg.json +4 -0
  9. package/artifacts/@eth-optimism/contracts/libraries/bridge/ICrossDomainMessenger.sol/ICrossDomainMessenger.json +110 -0
  10. package/artifacts/@eth-optimism/contracts/libraries/constants/Lib_PredeployAddresses.sol/Lib_PredeployAddresses.dbg.json +4 -0
  11. package/artifacts/@eth-optimism/contracts/libraries/constants/Lib_PredeployAddresses.sol/Lib_PredeployAddresses.json +10 -0
  12. package/artifacts/@openzeppelin/contracts/access/AccessControl.sol/AccessControl.dbg.json +4 -0
  13. package/artifacts/@openzeppelin/contracts/access/AccessControl.sol/AccessControl.json +215 -0
  14. package/artifacts/@openzeppelin/contracts/access/AccessControl.sol/IAccessControl.dbg.json +4 -0
  15. package/artifacts/@openzeppelin/contracts/access/AccessControl.sol/IAccessControl.json +108 -0
  16. package/artifacts/@openzeppelin/contracts/access/Ownable.sol/Ownable.dbg.json +4 -0
  17. package/artifacts/@openzeppelin/contracts/access/Ownable.sol/Ownable.json +63 -0
  18. package/artifacts/@openzeppelin/contracts/security/Pausable.sol/Pausable.dbg.json +4 -0
  19. package/artifacts/@openzeppelin/contracts/security/Pausable.sol/Pausable.json +50 -0
  20. package/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.dbg.json +4 -0
  21. package/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.json +297 -0
  22. package/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json +4 -0
  23. package/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.json +194 -0
  24. package/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.dbg.json +4 -0
  25. package/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.json +233 -0
  26. package/artifacts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol/SafeERC20.dbg.json +4 -0
  27. package/artifacts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol/SafeERC20.json +10 -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/Strings.sol/Strings.dbg.json +4 -0
  33. package/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.json +10 -0
  34. package/artifacts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.dbg.json +4 -0
  35. package/artifacts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.json +30 -0
  36. package/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.dbg.json +4 -0
  37. package/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.json +30 -0
  38. package/artifacts/@openzeppelin/contracts/utils/math/SafeMath.sol/SafeMath.dbg.json +4 -0
  39. package/artifacts/@openzeppelin/contracts/utils/math/SafeMath.sol/SafeMath.json +10 -0
  40. package/artifacts/@openzeppelin/contracts/utils/math/SignedSafeMath.sol/SignedSafeMath.dbg.json +4 -0
  41. package/artifacts/@openzeppelin/contracts/utils/math/SignedSafeMath.sol/SignedSafeMath.json +10 -0
  42. package/artifacts/@uma/core/contracts/common/implementation/Lockable.sol/Lockable.dbg.json +4 -0
  43. package/artifacts/@uma/core/contracts/common/implementation/Lockable.sol/Lockable.json +16 -0
  44. package/artifacts/@uma/core/contracts/cross-chain-oracle/chain-adapters/Arbitrum_ParentMessenger.sol/Arbitrum_ParentMessenger.dbg.json +4 -0
  45. package/artifacts/@uma/core/contracts/cross-chain-oracle/chain-adapters/Arbitrum_ParentMessenger.sol/Arbitrum_ParentMessenger.json +611 -0
  46. package/artifacts/@uma/core/contracts/cross-chain-oracle/chain-adapters/ParentMessengerBase.sol/ParentMessengerBase.dbg.json +4 -0
  47. package/artifacts/@uma/core/contracts/cross-chain-oracle/chain-adapters/ParentMessengerBase.sol/ParentMessengerBase.json +297 -0
  48. package/artifacts/@uma/core/contracts/cross-chain-oracle/interfaces/ParentMessengerConsumerInterface.sol/ParentMessengerConsumerInterface.dbg.json +4 -0
  49. package/artifacts/@uma/core/contracts/cross-chain-oracle/interfaces/ParentMessengerConsumerInterface.sol/ParentMessengerConsumerInterface.json +29 -0
  50. package/artifacts/@uma/core/contracts/cross-chain-oracle/interfaces/ParentMessengerInterface.sol/ParentMessengerInterface.dbg.json +4 -0
  51. package/artifacts/@uma/core/contracts/cross-chain-oracle/interfaces/ParentMessengerInterface.sol/ParentMessengerInterface.json +37 -0
  52. package/artifacts/@uma/core/contracts/external/avm/interfaces/iArbitrum_Inbox.sol/IBridge.dbg.json +4 -0
  53. package/artifacts/@uma/core/contracts/external/avm/interfaces/iArbitrum_Inbox.sol/IBridge.json +24 -0
  54. package/artifacts/@uma/core/contracts/external/avm/interfaces/iArbitrum_Inbox.sol/iArbitrum_Inbox.dbg.json +4 -0
  55. package/artifacts/@uma/core/contracts/external/avm/interfaces/iArbitrum_Inbox.sol/iArbitrum_Inbox.json +78 -0
  56. package/artifacts/@uma/core/contracts/external/avm/interfaces/iArbitrum_Outbox.sol/iArbitrum_Outbox.dbg.json +4 -0
  57. package/artifacts/@uma/core/contracts/external/avm/interfaces/iArbitrum_Outbox.sol/iArbitrum_Outbox.json +24 -0
  58. package/artifacts/@uma/core/contracts/insured-bridge/avm/Arbitrum_CrossDomainEnabled.sol/Arbitrum_CrossDomainEnabled.dbg.json +4 -0
  59. package/artifacts/@uma/core/contracts/insured-bridge/avm/Arbitrum_CrossDomainEnabled.sol/Arbitrum_CrossDomainEnabled.json +24 -0
  60. package/artifacts/build-info/1cd64db7a8ac0a153df93d26826ad4e9.json +1653 -0
  61. package/artifacts/build-info/1f738b56edd7602183f2f8d2f23f6e90.json +1592 -0
  62. package/artifacts/build-info/343b9221be36acd9ddaca3f3b83d2e75.json +3943 -0
  63. package/artifacts/build-info/622e561692c193f4cd0ff989b5a231e2.json +5661 -0
  64. package/artifacts/build-info/8e408b49e0ff2873bc28d45221a7ff71.json +277715 -0
  65. package/artifacts/build-info/9d1a3182633612bd337d811d567d5d60.json +2072 -0
  66. package/artifacts/build-info/a8cd9c443d245fe513d6650634b60f93.json +23776 -0
  67. package/artifacts/build-info/d302d9d63fbafb5c8d635cc62cb1cc7c.json +167529 -0
  68. package/artifacts/contracts/common/implementation/AncillaryData.sol/AncillaryData.dbg.json +4 -0
  69. package/artifacts/contracts/common/implementation/AncillaryData.sol/AncillaryData.json +10 -0
  70. package/artifacts/contracts/common/implementation/FixedPoint.sol/FixedPoint.dbg.json +4 -0
  71. package/artifacts/contracts/common/implementation/FixedPoint.sol/FixedPoint.json +10 -0
  72. package/artifacts/contracts/common/implementation/Lockable.sol/Lockable.dbg.json +4 -0
  73. package/artifacts/contracts/common/implementation/Lockable.sol/Lockable.json +16 -0
  74. package/artifacts/contracts/common/implementation/MultiCaller.sol/MultiCaller.dbg.json +4 -0
  75. package/artifacts/contracts/common/implementation/MultiCaller.sol/MultiCaller.json +30 -0
  76. package/artifacts/contracts/common/implementation/Testable.sol/Testable.dbg.json +4 -0
  77. package/artifacts/contracts/common/implementation/Testable.sol/Testable.json +50 -0
  78. package/artifacts/contracts/common/implementation/Timer.sol/Timer.dbg.json +4 -0
  79. package/artifacts/contracts/common/implementation/Timer.sol/Timer.json +42 -0
  80. package/artifacts/contracts/common/interfaces/AddressWhitelistInterface.sol/AddressWhitelistInterface.dbg.json +4 -0
  81. package/artifacts/contracts/common/interfaces/AddressWhitelistInterface.sol/AddressWhitelistInterface.json +69 -0
  82. package/artifacts/contracts/external/avm/AVM_CrossDomainEnabled.sol/AVM_CrossDomainEnabled.dbg.json +4 -0
  83. package/artifacts/contracts/external/avm/AVM_CrossDomainEnabled.sol/AVM_CrossDomainEnabled.json +42 -0
  84. package/artifacts/contracts/external/avm/interfaces/ArbSys.sol/ArbSys.dbg.json +4 -0
  85. package/artifacts/contracts/external/avm/interfaces/ArbSys.sol/ArbSys.json +235 -0
  86. package/artifacts/contracts/external/avm/interfaces/iArbitrum_Inbox.sol/IBridge.dbg.json +4 -0
  87. package/artifacts/contracts/external/avm/interfaces/iArbitrum_Inbox.sol/IBridge.json +24 -0
  88. package/artifacts/contracts/external/avm/interfaces/iArbitrum_Inbox.sol/iArbitrum_Inbox.dbg.json +4 -0
  89. package/artifacts/contracts/external/avm/interfaces/iArbitrum_Inbox.sol/iArbitrum_Inbox.json +78 -0
  90. package/artifacts/contracts/external/avm/interfaces/iArbitrum_Outbox.sol/iArbitrum_Outbox.dbg.json +4 -0
  91. package/artifacts/contracts/external/avm/interfaces/iArbitrum_Outbox.sol/iArbitrum_Outbox.json +24 -0
  92. package/artifacts/contracts/external/chainbridge/Bridge.sol/Bridge.dbg.json +4 -0
  93. package/artifacts/contracts/external/chainbridge/Bridge.sol/Bridge.json +1019 -0
  94. package/artifacts/contracts/external/chainbridge/handlers/GenericHandler.sol/GenericHandler.dbg.json +4 -0
  95. package/artifacts/contracts/external/chainbridge/handlers/GenericHandler.sol/GenericHandler.json +314 -0
  96. package/artifacts/contracts/external/chainbridge/interfaces/IBridge.sol/IBridge.dbg.json +4 -0
  97. package/artifacts/contracts/external/chainbridge/interfaces/IBridge.sol/IBridge.json +47 -0
  98. package/artifacts/contracts/external/chainbridge/interfaces/IDepositExecute.sol/IDepositExecute.dbg.json +4 -0
  99. package/artifacts/contracts/external/chainbridge/interfaces/IDepositExecute.sol/IDepositExecute.json +62 -0
  100. package/artifacts/contracts/external/chainbridge/interfaces/IERCHandler.sol/IERCHandler.dbg.json +4 -0
  101. package/artifacts/contracts/external/chainbridge/interfaces/IERCHandler.sol/IERCHandler.json +65 -0
  102. package/artifacts/contracts/external/chainbridge/interfaces/IGenericHandler.sol/IGenericHandler.dbg.json +4 -0
  103. package/artifacts/contracts/external/chainbridge/interfaces/IGenericHandler.sol/IGenericHandler.json +39 -0
  104. package/artifacts/contracts/external/ovm/OVM_CrossDomainEnabled.sol/OVM_CrossDomainEnabled.dbg.json +4 -0
  105. package/artifacts/contracts/external/ovm/OVM_CrossDomainEnabled.sol/OVM_CrossDomainEnabled.json +35 -0
  106. package/artifacts/contracts/external/ovm/OVM_CrossDomainEnabled.sol/iOVM_CrossDomainMessenger.dbg.json +4 -0
  107. package/artifacts/contracts/external/ovm/OVM_CrossDomainEnabled.sol/iOVM_CrossDomainMessenger.json +86 -0
  108. package/artifacts/contracts/external/polygon/lib/Merkle.sol/Merkle.dbg.json +4 -0
  109. package/artifacts/contracts/external/polygon/lib/Merkle.sol/Merkle.json +10 -0
  110. package/artifacts/contracts/external/polygon/lib/MerklePatriciaProof.sol/MerklePatriciaProof.dbg.json +4 -0
  111. package/artifacts/contracts/external/polygon/lib/MerklePatriciaProof.sol/MerklePatriciaProof.json +10 -0
  112. package/artifacts/contracts/external/polygon/lib/RLPReader.sol/RLPReader.dbg.json +4 -0
  113. package/artifacts/contracts/external/polygon/lib/RLPReader.sol/RLPReader.json +10 -0
  114. package/artifacts/contracts/external/polygon/test/FxChildMock.sol/FxChildMock.dbg.json +4 -0
  115. package/artifacts/contracts/external/polygon/test/FxChildMock.sol/FxChildMock.json +104 -0
  116. package/artifacts/contracts/external/polygon/test/FxChildMock.sol/IFxMessageProcessor.dbg.json +4 -0
  117. package/artifacts/contracts/external/polygon/test/FxChildMock.sol/IFxMessageProcessor.json +34 -0
  118. package/artifacts/contracts/external/polygon/test/FxChildMock.sol/IStateReceiver.dbg.json +4 -0
  119. package/artifacts/contracts/external/polygon/test/FxChildMock.sol/IStateReceiver.json +29 -0
  120. package/artifacts/contracts/external/polygon/test/FxRootMock.sol/FxRootMock.dbg.json +4 -0
  121. package/artifacts/contracts/external/polygon/test/FxRootMock.sol/FxRootMock.json +79 -0
  122. package/artifacts/contracts/external/polygon/test/FxRootMock.sol/IFxStateSender.dbg.json +4 -0
  123. package/artifacts/contracts/external/polygon/test/FxRootMock.sol/IFxStateSender.json +29 -0
  124. package/artifacts/contracts/external/polygon/test/FxRootMock.sol/IStateSender.dbg.json +4 -0
  125. package/artifacts/contracts/external/polygon/test/FxRootMock.sol/IStateSender.json +29 -0
  126. package/artifacts/contracts/external/polygon/test/StateSyncMock.sol/StateSyncMock.dbg.json +4 -0
  127. package/artifacts/contracts/external/polygon/test/StateSyncMock.sol/StateSyncMock.json +54 -0
  128. package/artifacts/contracts/external/polygon/tunnel/FxBaseChildTunnel.sol/FxBaseChildTunnel.dbg.json +4 -0
  129. package/artifacts/contracts/external/polygon/tunnel/FxBaseChildTunnel.sol/FxBaseChildTunnel.json +86 -0
  130. package/artifacts/contracts/external/polygon/tunnel/FxBaseChildTunnel.sol/IFxMessageProcessor.dbg.json +4 -0
  131. package/artifacts/contracts/external/polygon/tunnel/FxBaseChildTunnel.sol/IFxMessageProcessor.json +34 -0
  132. package/artifacts/contracts/external/polygon/tunnel/FxBaseRootTunnel.sol/FxBaseRootTunnel.dbg.json +4 -0
  133. package/artifacts/contracts/external/polygon/tunnel/FxBaseRootTunnel.sol/FxBaseRootTunnel.json +108 -0
  134. package/artifacts/contracts/external/polygon/tunnel/FxBaseRootTunnel.sol/ICheckpointManager.dbg.json +4 -0
  135. package/artifacts/contracts/external/polygon/tunnel/FxBaseRootTunnel.sol/ICheckpointManager.json +50 -0
  136. package/artifacts/contracts/external/polygon/tunnel/FxBaseRootTunnel.sol/IFxStateSender.dbg.json +4 -0
  137. package/artifacts/contracts/external/polygon/tunnel/FxBaseRootTunnel.sol/IFxStateSender.json +29 -0
  138. package/artifacts/contracts/insured-bridge/BridgeAdmin.sol/BridgeAdmin.dbg.json +4 -0
  139. package/artifacts/contracts/insured-bridge/BridgeAdmin.sol/BridgeAdmin.json +662 -0
  140. package/artifacts/contracts/insured-bridge/BridgeDepositBox.sol/BridgeDepositBox.dbg.json +4 -0
  141. package/artifacts/contracts/insured-bridge/BridgeDepositBox.sol/BridgeDepositBox.json +391 -0
  142. package/artifacts/contracts/insured-bridge/BridgeDepositBox.sol/TokenLike.dbg.json +4 -0
  143. package/artifacts/contracts/insured-bridge/BridgeDepositBox.sol/TokenLike.json +30 -0
  144. package/artifacts/contracts/insured-bridge/BridgeDepositBox.sol/WETH9Like.dbg.json +4 -0
  145. package/artifacts/contracts/insured-bridge/BridgeDepositBox.sol/WETH9Like.json +31 -0
  146. package/artifacts/contracts/insured-bridge/BridgePool.sol/BridgePool.dbg.json +4 -0
  147. package/artifacts/contracts/insured-bridge/BridgePool.sol/BridgePool.json +1709 -0
  148. package/artifacts/contracts/insured-bridge/BridgePool.sol/BridgePoolProd.dbg.json +4 -0
  149. package/artifacts/contracts/insured-bridge/BridgePool.sol/BridgePoolProd.json +1709 -0
  150. package/artifacts/contracts/insured-bridge/BridgePool.sol/WETH9Like.dbg.json +4 -0
  151. package/artifacts/contracts/insured-bridge/BridgePool.sol/WETH9Like.json +31 -0
  152. package/artifacts/contracts/insured-bridge/avm/AVM_BridgeDepositBox.sol/AVM_BridgeDepositBox.dbg.json +4 -0
  153. package/artifacts/contracts/insured-bridge/avm/AVM_BridgeDepositBox.sol/AVM_BridgeDepositBox.json +564 -0
  154. package/artifacts/contracts/insured-bridge/avm/AVM_BridgeDepositBox.sol/StandardBridgeLike.dbg.json +4 -0
  155. package/artifacts/contracts/insured-bridge/avm/AVM_BridgeDepositBox.sol/StandardBridgeLike.json +45 -0
  156. package/artifacts/contracts/insured-bridge/avm/Arbitrum_CrossDomainEnabled.sol/Arbitrum_CrossDomainEnabled.dbg.json +4 -0
  157. package/artifacts/contracts/insured-bridge/avm/Arbitrum_CrossDomainEnabled.sol/Arbitrum_CrossDomainEnabled.json +24 -0
  158. package/artifacts/contracts/insured-bridge/avm/Arbitrum_Messenger.sol/Arbitrum_Messenger.dbg.json +4 -0
  159. package/artifacts/contracts/insured-bridge/avm/Arbitrum_Messenger.sol/Arbitrum_Messenger.json +191 -0
  160. package/artifacts/contracts/insured-bridge/interfaces/BridgeAdminInterface.sol/BridgeAdminInterface.dbg.json +4 -0
  161. package/artifacts/contracts/insured-bridge/interfaces/BridgeAdminInterface.sol/BridgeAdminInterface.json +319 -0
  162. package/artifacts/contracts/insured-bridge/interfaces/BridgePoolInterface.sol/BridgePoolInterface.dbg.json +4 -0
  163. package/artifacts/contracts/insured-bridge/interfaces/BridgePoolInterface.sol/BridgePoolInterface.json +63 -0
  164. package/artifacts/contracts/insured-bridge/interfaces/MessengerInterface.sol/MessengerInterface.dbg.json +4 -0
  165. package/artifacts/contracts/insured-bridge/interfaces/MessengerInterface.sol/MessengerInterface.json +54 -0
  166. package/artifacts/contracts/insured-bridge/ovm/OVM_BridgeDepositBox.sol/OVM_BridgeDepositBox.dbg.json +4 -0
  167. package/artifacts/contracts/insured-bridge/ovm/OVM_BridgeDepositBox.sol/OVM_BridgeDepositBox.json +528 -0
  168. package/artifacts/contracts/insured-bridge/ovm/OVM_CrossDomainEnabled.sol/OVM_CrossDomainEnabled.dbg.json +4 -0
  169. package/artifacts/contracts/insured-bridge/ovm/OVM_CrossDomainEnabled.sol/OVM_CrossDomainEnabled.json +35 -0
  170. package/artifacts/contracts/insured-bridge/ovm/OVM_OETH_BridgeDepositBox.sol/OVM_OETH_BridgeDepositBox.dbg.json +4 -0
  171. package/artifacts/contracts/insured-bridge/ovm/OVM_OETH_BridgeDepositBox.sol/OVM_OETH_BridgeDepositBox.json +572 -0
  172. package/artifacts/contracts/insured-bridge/ovm/Optimism_Messenger.sol/Optimism_Messenger.dbg.json +4 -0
  173. package/artifacts/contracts/insured-bridge/ovm/Optimism_Messenger.sol/Optimism_Messenger.json +130 -0
  174. package/artifacts/contracts/insured-bridge/ovm/Optimism_Wrapper.sol/Optimism_Wrapper.dbg.json +4 -0
  175. package/artifacts/contracts/insured-bridge/ovm/Optimism_Wrapper.sol/Optimism_Wrapper.json +142 -0
  176. package/artifacts/contracts/insured-bridge/ovm/Optimism_Wrapper.sol/WETH9Like.dbg.json +4 -0
  177. package/artifacts/contracts/insured-bridge/ovm/Optimism_Wrapper.sol/WETH9Like.json +55 -0
  178. package/artifacts/contracts/insured-bridge/ovm/iOVM_CrossDomainMessenger.sol/iOVM_CrossDomainMessenger.dbg.json +4 -0
  179. package/artifacts/contracts/insured-bridge/ovm/iOVM_CrossDomainMessenger.sol/iOVM_CrossDomainMessenger.json +86 -0
  180. package/artifacts/contracts/insured-bridge/test/Arbitrum_InboxMock.sol/Arbitrum_BridgeMock.dbg.json +4 -0
  181. package/artifacts/contracts/insured-bridge/test/Arbitrum_InboxMock.sol/Arbitrum_BridgeMock.json +68 -0
  182. package/artifacts/contracts/insured-bridge/test/Arbitrum_InboxMock.sol/Arbitrum_InboxMock.dbg.json +4 -0
  183. package/artifacts/contracts/insured-bridge/test/Arbitrum_InboxMock.sol/Arbitrum_InboxMock.json +78 -0
  184. package/artifacts/contracts/insured-bridge/test/Arbitrum_InboxMock.sol/Arbitrum_OutboxMock.dbg.json +4 -0
  185. package/artifacts/contracts/insured-bridge/test/Arbitrum_InboxMock.sol/Arbitrum_OutboxMock.json +24 -0
  186. package/artifacts/contracts/insured-bridge/test/BridgeDepositBoxMock.sol/BridgeDepositBoxMock.dbg.json +4 -0
  187. package/artifacts/contracts/insured-bridge/test/BridgeDepositBoxMock.sol/BridgeDepositBoxMock.json +510 -0
  188. package/artifacts/contracts/insured-bridge/test/MessengerMock.sol/MessengerMock.dbg.json +4 -0
  189. package/artifacts/contracts/insured-bridge/test/MessengerMock.sol/MessengerMock.json +85 -0
  190. package/artifacts/contracts/insured-bridge/test/OVM_L1CrossDomainMessengerMock.sol/OVM_L1CrossDomainMessengerMock.dbg.json +4 -0
  191. package/artifacts/contracts/insured-bridge/test/OVM_L1CrossDomainMessengerMock.sol/OVM_L1CrossDomainMessengerMock.json +110 -0
  192. package/artifacts/contracts/oracle/implementation/Constants.sol/OptimisticOracleConstraints.dbg.json +4 -0
  193. package/artifacts/contracts/oracle/implementation/Constants.sol/OptimisticOracleConstraints.json +24 -0
  194. package/artifacts/contracts/oracle/implementation/Constants.sol/OracleInterfaces.dbg.json +4 -0
  195. package/artifacts/contracts/oracle/implementation/Constants.sol/OracleInterfaces.json +141 -0
  196. package/artifacts/contracts/oracle/interfaces/FinderInterface.sol/FinderInterface.dbg.json +4 -0
  197. package/artifacts/contracts/oracle/interfaces/FinderInterface.sol/FinderInterface.json +48 -0
  198. package/artifacts/contracts/oracle/interfaces/IdentifierWhitelistInterface.sol/IdentifierWhitelistInterface.dbg.json +4 -0
  199. package/artifacts/contracts/oracle/interfaces/IdentifierWhitelistInterface.sol/IdentifierWhitelistInterface.json +56 -0
  200. package/artifacts/contracts/oracle/interfaces/OptimisticOracleInterface.sol/OptimisticOracleInterface.dbg.json +4 -0
  201. package/artifacts/contracts/oracle/interfaces/OptimisticOracleInterface.sol/OptimisticOracleInterface.json +555 -0
  202. package/artifacts/contracts/oracle/interfaces/SkinnyOptimisticOracleInterface.sol/SkinnyOptimisticOracleInterface.dbg.json +4 -0
  203. package/artifacts/contracts/oracle/interfaces/SkinnyOptimisticOracleInterface.sol/SkinnyOptimisticOracleInterface.json +853 -0
  204. package/artifacts/contracts/oracle/interfaces/StoreInterface.sol/StoreInterface.dbg.json +4 -0
  205. package/artifacts/contracts/oracle/interfaces/StoreInterface.sol/StoreInterface.json +124 -0
  206. package/contracts/common/implementation/AncillaryData.sol +144 -0
  207. package/contracts/common/implementation/FixedPoint.sol +763 -0
  208. package/contracts/common/implementation/Lockable.sol +61 -0
  209. package/contracts/common/implementation/MultiCaller.sol +27 -0
  210. package/contracts/common/implementation/Testable.sol +52 -0
  211. package/contracts/common/implementation/Timer.sol +30 -0
  212. package/contracts/common/interfaces/AddressWhitelistInterface.sol +12 -0
  213. package/contracts/external/avm/AVM_CrossDomainEnabled.sol +43 -0
  214. package/contracts/external/avm/interfaces/ArbSys.sol +79 -0
  215. package/contracts/external/avm/interfaces/iArbitrum_Inbox.sol +28 -0
  216. package/contracts/external/avm/interfaces/iArbitrum_Outbox.sol +26 -0
  217. package/contracts/external/chainbridge/Bridge.sol +454 -0
  218. package/contracts/external/chainbridge/handlers/GenericHandler.sol +237 -0
  219. package/contracts/external/chainbridge/interfaces/IBridge.sol +20 -0
  220. package/contracts/external/chainbridge/interfaces/IDepositExecute.sol +29 -0
  221. package/contracts/external/chainbridge/interfaces/IERCHandler.sol +33 -0
  222. package/contracts/external/chainbridge/interfaces/IGenericHandler.sol +23 -0
  223. package/contracts/external/ovm/OVM_CrossDomainEnabled.sol +114 -0
  224. package/contracts/external/polygon/lib/Merkle.sol +36 -0
  225. package/contracts/external/polygon/lib/MerklePatriciaProof.sol +139 -0
  226. package/contracts/external/polygon/lib/RLPReader.sol +251 -0
  227. package/contracts/external/polygon/test/FxChildMock.sol +42 -0
  228. package/contracts/external/polygon/test/FxRootMock.sol +32 -0
  229. package/contracts/external/polygon/test/StateSyncMock.sol +26 -0
  230. package/contracts/external/polygon/tunnel/FxBaseChildTunnel.sol +80 -0
  231. package/contracts/external/polygon/tunnel/FxBaseRootTunnel.sol +185 -0
  232. package/contracts/insured-bridge/BridgeAdmin.sol +394 -0
  233. package/contracts/insured-bridge/BridgeDepositBox.sol +245 -0
  234. package/contracts/insured-bridge/BridgePool.sol +980 -0
  235. package/contracts/insured-bridge/avm/AVM_BridgeDepositBox.sol +144 -0
  236. package/contracts/insured-bridge/avm/Arbitrum_CrossDomainEnabled.sol +67 -0
  237. package/contracts/insured-bridge/avm/Arbitrum_Messenger.sol +72 -0
  238. package/contracts/insured-bridge/interfaces/BridgeAdminInterface.sol +44 -0
  239. package/contracts/insured-bridge/interfaces/BridgePoolInterface.sol +14 -0
  240. package/contracts/insured-bridge/interfaces/MessengerInterface.sol +18 -0
  241. package/contracts/insured-bridge/ovm/OVM_BridgeDepositBox.sol +135 -0
  242. package/contracts/insured-bridge/ovm/OVM_CrossDomainEnabled.sol +84 -0
  243. package/contracts/insured-bridge/ovm/OVM_OETH_BridgeDepositBox.sol +89 -0
  244. package/contracts/insured-bridge/ovm/Optimism_Messenger.sol +34 -0
  245. package/contracts/insured-bridge/ovm/Optimism_Wrapper.sol +59 -0
  246. package/contracts/insured-bridge/ovm/iOVM_CrossDomainMessenger.sol +41 -0
  247. package/contracts/insured-bridge/test/Arbitrum_InboxMock.sol +50 -0
  248. package/contracts/insured-bridge/test/BridgeDepositBoxMock.sol +113 -0
  249. package/contracts/insured-bridge/test/MessengerMock.sol +32 -0
  250. package/contracts/insured-bridge/test/OVM_L1CrossDomainMessengerMock.sol +16 -0
  251. package/contracts/oracle/implementation/Constants.sol +29 -0
  252. package/contracts/oracle/interfaces/FinderInterface.sol +22 -0
  253. package/contracts/oracle/interfaces/IdentifierWhitelistInterface.sol +28 -0
  254. package/contracts/oracle/interfaces/OptimisticOracleInterface.sol +263 -0
  255. package/contracts/oracle/interfaces/SkinnyOptimisticOracleInterface.sol +251 -0
  256. package/contracts/oracle/interfaces/StoreInterface.sol +46 -0
  257. package/package.json +60 -0
@@ -0,0 +1,1709 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "BridgePoolProd",
4
+ "sourceName": "contracts/insured-bridge/BridgePool.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "string",
10
+ "name": "_lpTokenName",
11
+ "type": "string"
12
+ },
13
+ {
14
+ "internalType": "string",
15
+ "name": "_lpTokenSymbol",
16
+ "type": "string"
17
+ },
18
+ {
19
+ "internalType": "address",
20
+ "name": "_bridgeAdmin",
21
+ "type": "address"
22
+ },
23
+ {
24
+ "internalType": "address",
25
+ "name": "_l1Token",
26
+ "type": "address"
27
+ },
28
+ {
29
+ "internalType": "uint64",
30
+ "name": "_lpFeeRatePerSecond",
31
+ "type": "uint64"
32
+ },
33
+ {
34
+ "internalType": "bool",
35
+ "name": "_isWethPool",
36
+ "type": "bool"
37
+ },
38
+ {
39
+ "internalType": "address",
40
+ "name": "_timer",
41
+ "type": "address"
42
+ }
43
+ ],
44
+ "stateMutability": "nonpayable",
45
+ "type": "constructor"
46
+ },
47
+ {
48
+ "anonymous": false,
49
+ "inputs": [
50
+ {
51
+ "indexed": true,
52
+ "internalType": "address",
53
+ "name": "owner",
54
+ "type": "address"
55
+ },
56
+ {
57
+ "indexed": true,
58
+ "internalType": "address",
59
+ "name": "spender",
60
+ "type": "address"
61
+ },
62
+ {
63
+ "indexed": false,
64
+ "internalType": "uint256",
65
+ "name": "value",
66
+ "type": "uint256"
67
+ }
68
+ ],
69
+ "name": "Approval",
70
+ "type": "event"
71
+ },
72
+ {
73
+ "anonymous": false,
74
+ "inputs": [
75
+ {
76
+ "indexed": false,
77
+ "internalType": "address",
78
+ "name": "oldAdmin",
79
+ "type": "address"
80
+ },
81
+ {
82
+ "indexed": false,
83
+ "internalType": "address",
84
+ "name": "newAdmin",
85
+ "type": "address"
86
+ }
87
+ ],
88
+ "name": "BridgePoolAdminTransferred",
89
+ "type": "event"
90
+ },
91
+ {
92
+ "anonymous": false,
93
+ "inputs": [
94
+ {
95
+ "indexed": true,
96
+ "internalType": "bytes32",
97
+ "name": "depositHash",
98
+ "type": "bytes32"
99
+ },
100
+ {
101
+ "components": [
102
+ {
103
+ "internalType": "uint256",
104
+ "name": "chainId",
105
+ "type": "uint256"
106
+ },
107
+ {
108
+ "internalType": "uint64",
109
+ "name": "depositId",
110
+ "type": "uint64"
111
+ },
112
+ {
113
+ "internalType": "address payable",
114
+ "name": "l1Recipient",
115
+ "type": "address"
116
+ },
117
+ {
118
+ "internalType": "address",
119
+ "name": "l2Sender",
120
+ "type": "address"
121
+ },
122
+ {
123
+ "internalType": "uint256",
124
+ "name": "amount",
125
+ "type": "uint256"
126
+ },
127
+ {
128
+ "internalType": "uint64",
129
+ "name": "slowRelayFeePct",
130
+ "type": "uint64"
131
+ },
132
+ {
133
+ "internalType": "uint64",
134
+ "name": "instantRelayFeePct",
135
+ "type": "uint64"
136
+ },
137
+ {
138
+ "internalType": "uint32",
139
+ "name": "quoteTimestamp",
140
+ "type": "uint32"
141
+ }
142
+ ],
143
+ "indexed": false,
144
+ "internalType": "struct BridgePool.DepositData",
145
+ "name": "depositData",
146
+ "type": "tuple"
147
+ },
148
+ {
149
+ "components": [
150
+ {
151
+ "internalType": "enum BridgePool.RelayState",
152
+ "name": "relayState",
153
+ "type": "uint8"
154
+ },
155
+ {
156
+ "internalType": "address",
157
+ "name": "slowRelayer",
158
+ "type": "address"
159
+ },
160
+ {
161
+ "internalType": "uint32",
162
+ "name": "relayId",
163
+ "type": "uint32"
164
+ },
165
+ {
166
+ "internalType": "uint64",
167
+ "name": "realizedLpFeePct",
168
+ "type": "uint64"
169
+ },
170
+ {
171
+ "internalType": "uint32",
172
+ "name": "priceRequestTime",
173
+ "type": "uint32"
174
+ },
175
+ {
176
+ "internalType": "uint256",
177
+ "name": "proposerBond",
178
+ "type": "uint256"
179
+ },
180
+ {
181
+ "internalType": "uint256",
182
+ "name": "finalFee",
183
+ "type": "uint256"
184
+ }
185
+ ],
186
+ "indexed": false,
187
+ "internalType": "struct BridgePool.RelayData",
188
+ "name": "relay",
189
+ "type": "tuple"
190
+ },
191
+ {
192
+ "indexed": false,
193
+ "internalType": "bytes32",
194
+ "name": "relayAncillaryDataHash",
195
+ "type": "bytes32"
196
+ }
197
+ ],
198
+ "name": "DepositRelayed",
199
+ "type": "event"
200
+ },
201
+ {
202
+ "anonymous": false,
203
+ "inputs": [
204
+ {
205
+ "indexed": false,
206
+ "internalType": "uint256",
207
+ "name": "amount",
208
+ "type": "uint256"
209
+ },
210
+ {
211
+ "indexed": false,
212
+ "internalType": "uint256",
213
+ "name": "lpTokensMinted",
214
+ "type": "uint256"
215
+ },
216
+ {
217
+ "indexed": true,
218
+ "internalType": "address",
219
+ "name": "liquidityProvider",
220
+ "type": "address"
221
+ }
222
+ ],
223
+ "name": "LiquidityAdded",
224
+ "type": "event"
225
+ },
226
+ {
227
+ "anonymous": false,
228
+ "inputs": [
229
+ {
230
+ "indexed": false,
231
+ "internalType": "uint256",
232
+ "name": "amount",
233
+ "type": "uint256"
234
+ },
235
+ {
236
+ "indexed": false,
237
+ "internalType": "uint256",
238
+ "name": "lpTokensBurnt",
239
+ "type": "uint256"
240
+ },
241
+ {
242
+ "indexed": true,
243
+ "internalType": "address",
244
+ "name": "liquidityProvider",
245
+ "type": "address"
246
+ }
247
+ ],
248
+ "name": "LiquidityRemoved",
249
+ "type": "event"
250
+ },
251
+ {
252
+ "anonymous": false,
253
+ "inputs": [
254
+ {
255
+ "indexed": false,
256
+ "internalType": "uint64",
257
+ "name": "newLpFeeRatePerSecond",
258
+ "type": "uint64"
259
+ }
260
+ ],
261
+ "name": "LpFeeRateSet",
262
+ "type": "event"
263
+ },
264
+ {
265
+ "anonymous": false,
266
+ "inputs": [
267
+ {
268
+ "indexed": true,
269
+ "internalType": "bytes32",
270
+ "name": "depositHash",
271
+ "type": "bytes32"
272
+ },
273
+ {
274
+ "indexed": true,
275
+ "internalType": "bytes32",
276
+ "name": "relayHash",
277
+ "type": "bytes32"
278
+ },
279
+ {
280
+ "indexed": true,
281
+ "internalType": "address",
282
+ "name": "disputer",
283
+ "type": "address"
284
+ }
285
+ ],
286
+ "name": "RelayCanceled",
287
+ "type": "event"
288
+ },
289
+ {
290
+ "anonymous": false,
291
+ "inputs": [
292
+ {
293
+ "indexed": true,
294
+ "internalType": "bytes32",
295
+ "name": "depositHash",
296
+ "type": "bytes32"
297
+ },
298
+ {
299
+ "indexed": true,
300
+ "internalType": "bytes32",
301
+ "name": "relayHash",
302
+ "type": "bytes32"
303
+ },
304
+ {
305
+ "indexed": true,
306
+ "internalType": "address",
307
+ "name": "disputer",
308
+ "type": "address"
309
+ }
310
+ ],
311
+ "name": "RelayDisputed",
312
+ "type": "event"
313
+ },
314
+ {
315
+ "anonymous": false,
316
+ "inputs": [
317
+ {
318
+ "indexed": true,
319
+ "internalType": "bytes32",
320
+ "name": "depositHash",
321
+ "type": "bytes32"
322
+ },
323
+ {
324
+ "indexed": true,
325
+ "internalType": "address",
326
+ "name": "caller",
327
+ "type": "address"
328
+ },
329
+ {
330
+ "components": [
331
+ {
332
+ "internalType": "enum BridgePool.RelayState",
333
+ "name": "relayState",
334
+ "type": "uint8"
335
+ },
336
+ {
337
+ "internalType": "address",
338
+ "name": "slowRelayer",
339
+ "type": "address"
340
+ },
341
+ {
342
+ "internalType": "uint32",
343
+ "name": "relayId",
344
+ "type": "uint32"
345
+ },
346
+ {
347
+ "internalType": "uint64",
348
+ "name": "realizedLpFeePct",
349
+ "type": "uint64"
350
+ },
351
+ {
352
+ "internalType": "uint32",
353
+ "name": "priceRequestTime",
354
+ "type": "uint32"
355
+ },
356
+ {
357
+ "internalType": "uint256",
358
+ "name": "proposerBond",
359
+ "type": "uint256"
360
+ },
361
+ {
362
+ "internalType": "uint256",
363
+ "name": "finalFee",
364
+ "type": "uint256"
365
+ }
366
+ ],
367
+ "indexed": false,
368
+ "internalType": "struct BridgePool.RelayData",
369
+ "name": "relay",
370
+ "type": "tuple"
371
+ }
372
+ ],
373
+ "name": "RelaySettled",
374
+ "type": "event"
375
+ },
376
+ {
377
+ "anonymous": false,
378
+ "inputs": [
379
+ {
380
+ "indexed": true,
381
+ "internalType": "bytes32",
382
+ "name": "depositHash",
383
+ "type": "bytes32"
384
+ },
385
+ {
386
+ "indexed": true,
387
+ "internalType": "address",
388
+ "name": "instantRelayer",
389
+ "type": "address"
390
+ },
391
+ {
392
+ "components": [
393
+ {
394
+ "internalType": "enum BridgePool.RelayState",
395
+ "name": "relayState",
396
+ "type": "uint8"
397
+ },
398
+ {
399
+ "internalType": "address",
400
+ "name": "slowRelayer",
401
+ "type": "address"
402
+ },
403
+ {
404
+ "internalType": "uint32",
405
+ "name": "relayId",
406
+ "type": "uint32"
407
+ },
408
+ {
409
+ "internalType": "uint64",
410
+ "name": "realizedLpFeePct",
411
+ "type": "uint64"
412
+ },
413
+ {
414
+ "internalType": "uint32",
415
+ "name": "priceRequestTime",
416
+ "type": "uint32"
417
+ },
418
+ {
419
+ "internalType": "uint256",
420
+ "name": "proposerBond",
421
+ "type": "uint256"
422
+ },
423
+ {
424
+ "internalType": "uint256",
425
+ "name": "finalFee",
426
+ "type": "uint256"
427
+ }
428
+ ],
429
+ "indexed": false,
430
+ "internalType": "struct BridgePool.RelayData",
431
+ "name": "relay",
432
+ "type": "tuple"
433
+ }
434
+ ],
435
+ "name": "RelaySpedUp",
436
+ "type": "event"
437
+ },
438
+ {
439
+ "anonymous": false,
440
+ "inputs": [
441
+ {
442
+ "indexed": false,
443
+ "internalType": "bool",
444
+ "name": "newRelaysEnabled",
445
+ "type": "bool"
446
+ }
447
+ ],
448
+ "name": "RelaysEnabledSet",
449
+ "type": "event"
450
+ },
451
+ {
452
+ "anonymous": false,
453
+ "inputs": [
454
+ {
455
+ "indexed": true,
456
+ "internalType": "address",
457
+ "name": "from",
458
+ "type": "address"
459
+ },
460
+ {
461
+ "indexed": true,
462
+ "internalType": "address",
463
+ "name": "to",
464
+ "type": "address"
465
+ },
466
+ {
467
+ "indexed": false,
468
+ "internalType": "uint256",
469
+ "name": "value",
470
+ "type": "uint256"
471
+ }
472
+ ],
473
+ "name": "Transfer",
474
+ "type": "event"
475
+ },
476
+ {
477
+ "inputs": [
478
+ {
479
+ "internalType": "uint256",
480
+ "name": "l1TokenAmount",
481
+ "type": "uint256"
482
+ }
483
+ ],
484
+ "name": "addLiquidity",
485
+ "outputs": [],
486
+ "stateMutability": "payable",
487
+ "type": "function"
488
+ },
489
+ {
490
+ "inputs": [
491
+ {
492
+ "internalType": "address",
493
+ "name": "owner",
494
+ "type": "address"
495
+ },
496
+ {
497
+ "internalType": "address",
498
+ "name": "spender",
499
+ "type": "address"
500
+ }
501
+ ],
502
+ "name": "allowance",
503
+ "outputs": [
504
+ {
505
+ "internalType": "uint256",
506
+ "name": "",
507
+ "type": "uint256"
508
+ }
509
+ ],
510
+ "stateMutability": "view",
511
+ "type": "function"
512
+ },
513
+ {
514
+ "inputs": [
515
+ {
516
+ "internalType": "address",
517
+ "name": "spender",
518
+ "type": "address"
519
+ },
520
+ {
521
+ "internalType": "uint256",
522
+ "name": "amount",
523
+ "type": "uint256"
524
+ }
525
+ ],
526
+ "name": "approve",
527
+ "outputs": [
528
+ {
529
+ "internalType": "bool",
530
+ "name": "",
531
+ "type": "bool"
532
+ }
533
+ ],
534
+ "stateMutability": "nonpayable",
535
+ "type": "function"
536
+ },
537
+ {
538
+ "inputs": [
539
+ {
540
+ "internalType": "address",
541
+ "name": "account",
542
+ "type": "address"
543
+ }
544
+ ],
545
+ "name": "balanceOf",
546
+ "outputs": [
547
+ {
548
+ "internalType": "uint256",
549
+ "name": "",
550
+ "type": "uint256"
551
+ }
552
+ ],
553
+ "stateMutability": "view",
554
+ "type": "function"
555
+ },
556
+ {
557
+ "inputs": [],
558
+ "name": "bonds",
559
+ "outputs": [
560
+ {
561
+ "internalType": "uint256",
562
+ "name": "",
563
+ "type": "uint256"
564
+ }
565
+ ],
566
+ "stateMutability": "view",
567
+ "type": "function"
568
+ },
569
+ {
570
+ "inputs": [],
571
+ "name": "bridgeAdmin",
572
+ "outputs": [
573
+ {
574
+ "internalType": "contract BridgeAdminInterface",
575
+ "name": "",
576
+ "type": "address"
577
+ }
578
+ ],
579
+ "stateMutability": "view",
580
+ "type": "function"
581
+ },
582
+ {
583
+ "inputs": [
584
+ {
585
+ "internalType": "address",
586
+ "name": "_newAdmin",
587
+ "type": "address"
588
+ }
589
+ ],
590
+ "name": "changeAdmin",
591
+ "outputs": [],
592
+ "stateMutability": "nonpayable",
593
+ "type": "function"
594
+ },
595
+ {
596
+ "inputs": [],
597
+ "name": "decimals",
598
+ "outputs": [
599
+ {
600
+ "internalType": "uint8",
601
+ "name": "",
602
+ "type": "uint8"
603
+ }
604
+ ],
605
+ "stateMutability": "view",
606
+ "type": "function"
607
+ },
608
+ {
609
+ "inputs": [
610
+ {
611
+ "internalType": "address",
612
+ "name": "spender",
613
+ "type": "address"
614
+ },
615
+ {
616
+ "internalType": "uint256",
617
+ "name": "subtractedValue",
618
+ "type": "uint256"
619
+ }
620
+ ],
621
+ "name": "decreaseAllowance",
622
+ "outputs": [
623
+ {
624
+ "internalType": "bool",
625
+ "name": "",
626
+ "type": "bool"
627
+ }
628
+ ],
629
+ "stateMutability": "nonpayable",
630
+ "type": "function"
631
+ },
632
+ {
633
+ "inputs": [
634
+ {
635
+ "components": [
636
+ {
637
+ "internalType": "uint256",
638
+ "name": "chainId",
639
+ "type": "uint256"
640
+ },
641
+ {
642
+ "internalType": "uint64",
643
+ "name": "depositId",
644
+ "type": "uint64"
645
+ },
646
+ {
647
+ "internalType": "address payable",
648
+ "name": "l1Recipient",
649
+ "type": "address"
650
+ },
651
+ {
652
+ "internalType": "address",
653
+ "name": "l2Sender",
654
+ "type": "address"
655
+ },
656
+ {
657
+ "internalType": "uint256",
658
+ "name": "amount",
659
+ "type": "uint256"
660
+ },
661
+ {
662
+ "internalType": "uint64",
663
+ "name": "slowRelayFeePct",
664
+ "type": "uint64"
665
+ },
666
+ {
667
+ "internalType": "uint64",
668
+ "name": "instantRelayFeePct",
669
+ "type": "uint64"
670
+ },
671
+ {
672
+ "internalType": "uint32",
673
+ "name": "quoteTimestamp",
674
+ "type": "uint32"
675
+ }
676
+ ],
677
+ "internalType": "struct BridgePool.DepositData",
678
+ "name": "depositData",
679
+ "type": "tuple"
680
+ },
681
+ {
682
+ "components": [
683
+ {
684
+ "internalType": "enum BridgePool.RelayState",
685
+ "name": "relayState",
686
+ "type": "uint8"
687
+ },
688
+ {
689
+ "internalType": "address",
690
+ "name": "slowRelayer",
691
+ "type": "address"
692
+ },
693
+ {
694
+ "internalType": "uint32",
695
+ "name": "relayId",
696
+ "type": "uint32"
697
+ },
698
+ {
699
+ "internalType": "uint64",
700
+ "name": "realizedLpFeePct",
701
+ "type": "uint64"
702
+ },
703
+ {
704
+ "internalType": "uint32",
705
+ "name": "priceRequestTime",
706
+ "type": "uint32"
707
+ },
708
+ {
709
+ "internalType": "uint256",
710
+ "name": "proposerBond",
711
+ "type": "uint256"
712
+ },
713
+ {
714
+ "internalType": "uint256",
715
+ "name": "finalFee",
716
+ "type": "uint256"
717
+ }
718
+ ],
719
+ "internalType": "struct BridgePool.RelayData",
720
+ "name": "relayData",
721
+ "type": "tuple"
722
+ }
723
+ ],
724
+ "name": "disputeRelay",
725
+ "outputs": [],
726
+ "stateMutability": "nonpayable",
727
+ "type": "function"
728
+ },
729
+ {
730
+ "inputs": [],
731
+ "name": "exchangeRateCurrent",
732
+ "outputs": [
733
+ {
734
+ "internalType": "uint256",
735
+ "name": "",
736
+ "type": "uint256"
737
+ }
738
+ ],
739
+ "stateMutability": "nonpayable",
740
+ "type": "function"
741
+ },
742
+ {
743
+ "inputs": [],
744
+ "name": "getAccumulatedFees",
745
+ "outputs": [
746
+ {
747
+ "internalType": "uint256",
748
+ "name": "",
749
+ "type": "uint256"
750
+ }
751
+ ],
752
+ "stateMutability": "view",
753
+ "type": "function"
754
+ },
755
+ {
756
+ "inputs": [],
757
+ "name": "getCurrentTime",
758
+ "outputs": [
759
+ {
760
+ "internalType": "uint256",
761
+ "name": "",
762
+ "type": "uint256"
763
+ }
764
+ ],
765
+ "stateMutability": "view",
766
+ "type": "function"
767
+ },
768
+ {
769
+ "inputs": [
770
+ {
771
+ "internalType": "uint256",
772
+ "name": "relayedAmount",
773
+ "type": "uint256"
774
+ }
775
+ ],
776
+ "name": "getLiquidityUtilization",
777
+ "outputs": [
778
+ {
779
+ "internalType": "uint256",
780
+ "name": "utilizationCurrent",
781
+ "type": "uint256"
782
+ },
783
+ {
784
+ "internalType": "uint256",
785
+ "name": "utilizationPostRelay",
786
+ "type": "uint256"
787
+ }
788
+ ],
789
+ "stateMutability": "nonpayable",
790
+ "type": "function"
791
+ },
792
+ {
793
+ "inputs": [
794
+ {
795
+ "components": [
796
+ {
797
+ "internalType": "uint256",
798
+ "name": "chainId",
799
+ "type": "uint256"
800
+ },
801
+ {
802
+ "internalType": "uint64",
803
+ "name": "depositId",
804
+ "type": "uint64"
805
+ },
806
+ {
807
+ "internalType": "address payable",
808
+ "name": "l1Recipient",
809
+ "type": "address"
810
+ },
811
+ {
812
+ "internalType": "address",
813
+ "name": "l2Sender",
814
+ "type": "address"
815
+ },
816
+ {
817
+ "internalType": "uint256",
818
+ "name": "amount",
819
+ "type": "uint256"
820
+ },
821
+ {
822
+ "internalType": "uint64",
823
+ "name": "slowRelayFeePct",
824
+ "type": "uint64"
825
+ },
826
+ {
827
+ "internalType": "uint64",
828
+ "name": "instantRelayFeePct",
829
+ "type": "uint64"
830
+ },
831
+ {
832
+ "internalType": "uint32",
833
+ "name": "quoteTimestamp",
834
+ "type": "uint32"
835
+ }
836
+ ],
837
+ "internalType": "struct BridgePool.DepositData",
838
+ "name": "depositData",
839
+ "type": "tuple"
840
+ },
841
+ {
842
+ "components": [
843
+ {
844
+ "internalType": "enum BridgePool.RelayState",
845
+ "name": "relayState",
846
+ "type": "uint8"
847
+ },
848
+ {
849
+ "internalType": "address",
850
+ "name": "slowRelayer",
851
+ "type": "address"
852
+ },
853
+ {
854
+ "internalType": "uint32",
855
+ "name": "relayId",
856
+ "type": "uint32"
857
+ },
858
+ {
859
+ "internalType": "uint64",
860
+ "name": "realizedLpFeePct",
861
+ "type": "uint64"
862
+ },
863
+ {
864
+ "internalType": "uint32",
865
+ "name": "priceRequestTime",
866
+ "type": "uint32"
867
+ },
868
+ {
869
+ "internalType": "uint256",
870
+ "name": "proposerBond",
871
+ "type": "uint256"
872
+ },
873
+ {
874
+ "internalType": "uint256",
875
+ "name": "finalFee",
876
+ "type": "uint256"
877
+ }
878
+ ],
879
+ "internalType": "struct BridgePool.RelayData",
880
+ "name": "relayData",
881
+ "type": "tuple"
882
+ }
883
+ ],
884
+ "name": "getRelayAncillaryData",
885
+ "outputs": [
886
+ {
887
+ "internalType": "bytes",
888
+ "name": "",
889
+ "type": "bytes"
890
+ }
891
+ ],
892
+ "stateMutability": "view",
893
+ "type": "function"
894
+ },
895
+ {
896
+ "inputs": [],
897
+ "name": "identifier",
898
+ "outputs": [
899
+ {
900
+ "internalType": "bytes32",
901
+ "name": "",
902
+ "type": "bytes32"
903
+ }
904
+ ],
905
+ "stateMutability": "view",
906
+ "type": "function"
907
+ },
908
+ {
909
+ "inputs": [
910
+ {
911
+ "internalType": "address",
912
+ "name": "spender",
913
+ "type": "address"
914
+ },
915
+ {
916
+ "internalType": "uint256",
917
+ "name": "addedValue",
918
+ "type": "uint256"
919
+ }
920
+ ],
921
+ "name": "increaseAllowance",
922
+ "outputs": [
923
+ {
924
+ "internalType": "bool",
925
+ "name": "",
926
+ "type": "bool"
927
+ }
928
+ ],
929
+ "stateMutability": "nonpayable",
930
+ "type": "function"
931
+ },
932
+ {
933
+ "inputs": [
934
+ {
935
+ "internalType": "bytes32",
936
+ "name": "",
937
+ "type": "bytes32"
938
+ }
939
+ ],
940
+ "name": "instantRelays",
941
+ "outputs": [
942
+ {
943
+ "internalType": "address",
944
+ "name": "",
945
+ "type": "address"
946
+ }
947
+ ],
948
+ "stateMutability": "view",
949
+ "type": "function"
950
+ },
951
+ {
952
+ "inputs": [],
953
+ "name": "isWethPool",
954
+ "outputs": [
955
+ {
956
+ "internalType": "bool",
957
+ "name": "",
958
+ "type": "bool"
959
+ }
960
+ ],
961
+ "stateMutability": "view",
962
+ "type": "function"
963
+ },
964
+ {
965
+ "inputs": [],
966
+ "name": "l1Token",
967
+ "outputs": [
968
+ {
969
+ "internalType": "contract IERC20",
970
+ "name": "",
971
+ "type": "address"
972
+ }
973
+ ],
974
+ "stateMutability": "view",
975
+ "type": "function"
976
+ },
977
+ {
978
+ "inputs": [],
979
+ "name": "lastLpFeeUpdate",
980
+ "outputs": [
981
+ {
982
+ "internalType": "uint32",
983
+ "name": "",
984
+ "type": "uint32"
985
+ }
986
+ ],
987
+ "stateMutability": "view",
988
+ "type": "function"
989
+ },
990
+ {
991
+ "inputs": [],
992
+ "name": "liquidReserves",
993
+ "outputs": [
994
+ {
995
+ "internalType": "uint256",
996
+ "name": "",
997
+ "type": "uint256"
998
+ }
999
+ ],
1000
+ "stateMutability": "view",
1001
+ "type": "function"
1002
+ },
1003
+ {
1004
+ "inputs": [],
1005
+ "name": "liquidityUtilizationCurrent",
1006
+ "outputs": [
1007
+ {
1008
+ "internalType": "uint256",
1009
+ "name": "",
1010
+ "type": "uint256"
1011
+ }
1012
+ ],
1013
+ "stateMutability": "nonpayable",
1014
+ "type": "function"
1015
+ },
1016
+ {
1017
+ "inputs": [
1018
+ {
1019
+ "internalType": "uint256",
1020
+ "name": "relayedAmount",
1021
+ "type": "uint256"
1022
+ }
1023
+ ],
1024
+ "name": "liquidityUtilizationPostRelay",
1025
+ "outputs": [
1026
+ {
1027
+ "internalType": "uint256",
1028
+ "name": "",
1029
+ "type": "uint256"
1030
+ }
1031
+ ],
1032
+ "stateMutability": "nonpayable",
1033
+ "type": "function"
1034
+ },
1035
+ {
1036
+ "inputs": [],
1037
+ "name": "lpFeeRatePerSecond",
1038
+ "outputs": [
1039
+ {
1040
+ "internalType": "uint64",
1041
+ "name": "",
1042
+ "type": "uint64"
1043
+ }
1044
+ ],
1045
+ "stateMutability": "view",
1046
+ "type": "function"
1047
+ },
1048
+ {
1049
+ "inputs": [
1050
+ {
1051
+ "internalType": "bytes[]",
1052
+ "name": "data",
1053
+ "type": "bytes[]"
1054
+ }
1055
+ ],
1056
+ "name": "multicall",
1057
+ "outputs": [
1058
+ {
1059
+ "internalType": "bytes[]",
1060
+ "name": "results",
1061
+ "type": "bytes[]"
1062
+ }
1063
+ ],
1064
+ "stateMutability": "payable",
1065
+ "type": "function"
1066
+ },
1067
+ {
1068
+ "inputs": [],
1069
+ "name": "name",
1070
+ "outputs": [
1071
+ {
1072
+ "internalType": "string",
1073
+ "name": "",
1074
+ "type": "string"
1075
+ }
1076
+ ],
1077
+ "stateMutability": "view",
1078
+ "type": "function"
1079
+ },
1080
+ {
1081
+ "inputs": [],
1082
+ "name": "numberOfRelays",
1083
+ "outputs": [
1084
+ {
1085
+ "internalType": "uint32",
1086
+ "name": "",
1087
+ "type": "uint32"
1088
+ }
1089
+ ],
1090
+ "stateMutability": "view",
1091
+ "type": "function"
1092
+ },
1093
+ {
1094
+ "inputs": [],
1095
+ "name": "optimisticOracle",
1096
+ "outputs": [
1097
+ {
1098
+ "internalType": "contract SkinnyOptimisticOracleInterface",
1099
+ "name": "",
1100
+ "type": "address"
1101
+ }
1102
+ ],
1103
+ "stateMutability": "view",
1104
+ "type": "function"
1105
+ },
1106
+ {
1107
+ "inputs": [],
1108
+ "name": "optimisticOracleLiveness",
1109
+ "outputs": [
1110
+ {
1111
+ "internalType": "uint32",
1112
+ "name": "",
1113
+ "type": "uint32"
1114
+ }
1115
+ ],
1116
+ "stateMutability": "view",
1117
+ "type": "function"
1118
+ },
1119
+ {
1120
+ "inputs": [],
1121
+ "name": "pendingReserves",
1122
+ "outputs": [
1123
+ {
1124
+ "internalType": "uint256",
1125
+ "name": "",
1126
+ "type": "uint256"
1127
+ }
1128
+ ],
1129
+ "stateMutability": "view",
1130
+ "type": "function"
1131
+ },
1132
+ {
1133
+ "inputs": [],
1134
+ "name": "proposerBondPct",
1135
+ "outputs": [
1136
+ {
1137
+ "internalType": "uint64",
1138
+ "name": "",
1139
+ "type": "uint64"
1140
+ }
1141
+ ],
1142
+ "stateMutability": "view",
1143
+ "type": "function"
1144
+ },
1145
+ {
1146
+ "inputs": [
1147
+ {
1148
+ "components": [
1149
+ {
1150
+ "internalType": "uint256",
1151
+ "name": "chainId",
1152
+ "type": "uint256"
1153
+ },
1154
+ {
1155
+ "internalType": "uint64",
1156
+ "name": "depositId",
1157
+ "type": "uint64"
1158
+ },
1159
+ {
1160
+ "internalType": "address payable",
1161
+ "name": "l1Recipient",
1162
+ "type": "address"
1163
+ },
1164
+ {
1165
+ "internalType": "address",
1166
+ "name": "l2Sender",
1167
+ "type": "address"
1168
+ },
1169
+ {
1170
+ "internalType": "uint256",
1171
+ "name": "amount",
1172
+ "type": "uint256"
1173
+ },
1174
+ {
1175
+ "internalType": "uint64",
1176
+ "name": "slowRelayFeePct",
1177
+ "type": "uint64"
1178
+ },
1179
+ {
1180
+ "internalType": "uint64",
1181
+ "name": "instantRelayFeePct",
1182
+ "type": "uint64"
1183
+ },
1184
+ {
1185
+ "internalType": "uint32",
1186
+ "name": "quoteTimestamp",
1187
+ "type": "uint32"
1188
+ }
1189
+ ],
1190
+ "internalType": "struct BridgePool.DepositData",
1191
+ "name": "depositData",
1192
+ "type": "tuple"
1193
+ },
1194
+ {
1195
+ "internalType": "uint64",
1196
+ "name": "realizedLpFeePct",
1197
+ "type": "uint64"
1198
+ }
1199
+ ],
1200
+ "name": "relayAndSpeedUp",
1201
+ "outputs": [],
1202
+ "stateMutability": "nonpayable",
1203
+ "type": "function"
1204
+ },
1205
+ {
1206
+ "inputs": [
1207
+ {
1208
+ "components": [
1209
+ {
1210
+ "internalType": "uint256",
1211
+ "name": "chainId",
1212
+ "type": "uint256"
1213
+ },
1214
+ {
1215
+ "internalType": "uint64",
1216
+ "name": "depositId",
1217
+ "type": "uint64"
1218
+ },
1219
+ {
1220
+ "internalType": "address payable",
1221
+ "name": "l1Recipient",
1222
+ "type": "address"
1223
+ },
1224
+ {
1225
+ "internalType": "address",
1226
+ "name": "l2Sender",
1227
+ "type": "address"
1228
+ },
1229
+ {
1230
+ "internalType": "uint256",
1231
+ "name": "amount",
1232
+ "type": "uint256"
1233
+ },
1234
+ {
1235
+ "internalType": "uint64",
1236
+ "name": "slowRelayFeePct",
1237
+ "type": "uint64"
1238
+ },
1239
+ {
1240
+ "internalType": "uint64",
1241
+ "name": "instantRelayFeePct",
1242
+ "type": "uint64"
1243
+ },
1244
+ {
1245
+ "internalType": "uint32",
1246
+ "name": "quoteTimestamp",
1247
+ "type": "uint32"
1248
+ }
1249
+ ],
1250
+ "internalType": "struct BridgePool.DepositData",
1251
+ "name": "depositData",
1252
+ "type": "tuple"
1253
+ },
1254
+ {
1255
+ "internalType": "uint64",
1256
+ "name": "realizedLpFeePct",
1257
+ "type": "uint64"
1258
+ }
1259
+ ],
1260
+ "name": "relayDeposit",
1261
+ "outputs": [],
1262
+ "stateMutability": "nonpayable",
1263
+ "type": "function"
1264
+ },
1265
+ {
1266
+ "inputs": [
1267
+ {
1268
+ "internalType": "bytes32",
1269
+ "name": "",
1270
+ "type": "bytes32"
1271
+ }
1272
+ ],
1273
+ "name": "relays",
1274
+ "outputs": [
1275
+ {
1276
+ "internalType": "bytes32",
1277
+ "name": "",
1278
+ "type": "bytes32"
1279
+ }
1280
+ ],
1281
+ "stateMutability": "view",
1282
+ "type": "function"
1283
+ },
1284
+ {
1285
+ "inputs": [],
1286
+ "name": "relaysEnabled",
1287
+ "outputs": [
1288
+ {
1289
+ "internalType": "bool",
1290
+ "name": "",
1291
+ "type": "bool"
1292
+ }
1293
+ ],
1294
+ "stateMutability": "view",
1295
+ "type": "function"
1296
+ },
1297
+ {
1298
+ "inputs": [
1299
+ {
1300
+ "internalType": "uint256",
1301
+ "name": "lpTokenAmount",
1302
+ "type": "uint256"
1303
+ },
1304
+ {
1305
+ "internalType": "bool",
1306
+ "name": "sendEth",
1307
+ "type": "bool"
1308
+ }
1309
+ ],
1310
+ "name": "removeLiquidity",
1311
+ "outputs": [],
1312
+ "stateMutability": "nonpayable",
1313
+ "type": "function"
1314
+ },
1315
+ {
1316
+ "inputs": [
1317
+ {
1318
+ "internalType": "uint256",
1319
+ "name": "time",
1320
+ "type": "uint256"
1321
+ }
1322
+ ],
1323
+ "name": "setCurrentTime",
1324
+ "outputs": [],
1325
+ "stateMutability": "nonpayable",
1326
+ "type": "function"
1327
+ },
1328
+ {
1329
+ "inputs": [
1330
+ {
1331
+ "internalType": "uint64",
1332
+ "name": "_newLpFeeRatePerSecond",
1333
+ "type": "uint64"
1334
+ }
1335
+ ],
1336
+ "name": "setLpFeeRatePerSecond",
1337
+ "outputs": [],
1338
+ "stateMutability": "nonpayable",
1339
+ "type": "function"
1340
+ },
1341
+ {
1342
+ "inputs": [
1343
+ {
1344
+ "internalType": "bool",
1345
+ "name": "_relaysEnabled",
1346
+ "type": "bool"
1347
+ }
1348
+ ],
1349
+ "name": "setRelaysEnabled",
1350
+ "outputs": [],
1351
+ "stateMutability": "nonpayable",
1352
+ "type": "function"
1353
+ },
1354
+ {
1355
+ "inputs": [
1356
+ {
1357
+ "components": [
1358
+ {
1359
+ "internalType": "uint256",
1360
+ "name": "chainId",
1361
+ "type": "uint256"
1362
+ },
1363
+ {
1364
+ "internalType": "uint64",
1365
+ "name": "depositId",
1366
+ "type": "uint64"
1367
+ },
1368
+ {
1369
+ "internalType": "address payable",
1370
+ "name": "l1Recipient",
1371
+ "type": "address"
1372
+ },
1373
+ {
1374
+ "internalType": "address",
1375
+ "name": "l2Sender",
1376
+ "type": "address"
1377
+ },
1378
+ {
1379
+ "internalType": "uint256",
1380
+ "name": "amount",
1381
+ "type": "uint256"
1382
+ },
1383
+ {
1384
+ "internalType": "uint64",
1385
+ "name": "slowRelayFeePct",
1386
+ "type": "uint64"
1387
+ },
1388
+ {
1389
+ "internalType": "uint64",
1390
+ "name": "instantRelayFeePct",
1391
+ "type": "uint64"
1392
+ },
1393
+ {
1394
+ "internalType": "uint32",
1395
+ "name": "quoteTimestamp",
1396
+ "type": "uint32"
1397
+ }
1398
+ ],
1399
+ "internalType": "struct BridgePool.DepositData",
1400
+ "name": "depositData",
1401
+ "type": "tuple"
1402
+ },
1403
+ {
1404
+ "components": [
1405
+ {
1406
+ "internalType": "enum BridgePool.RelayState",
1407
+ "name": "relayState",
1408
+ "type": "uint8"
1409
+ },
1410
+ {
1411
+ "internalType": "address",
1412
+ "name": "slowRelayer",
1413
+ "type": "address"
1414
+ },
1415
+ {
1416
+ "internalType": "uint32",
1417
+ "name": "relayId",
1418
+ "type": "uint32"
1419
+ },
1420
+ {
1421
+ "internalType": "uint64",
1422
+ "name": "realizedLpFeePct",
1423
+ "type": "uint64"
1424
+ },
1425
+ {
1426
+ "internalType": "uint32",
1427
+ "name": "priceRequestTime",
1428
+ "type": "uint32"
1429
+ },
1430
+ {
1431
+ "internalType": "uint256",
1432
+ "name": "proposerBond",
1433
+ "type": "uint256"
1434
+ },
1435
+ {
1436
+ "internalType": "uint256",
1437
+ "name": "finalFee",
1438
+ "type": "uint256"
1439
+ }
1440
+ ],
1441
+ "internalType": "struct BridgePool.RelayData",
1442
+ "name": "relayData",
1443
+ "type": "tuple"
1444
+ }
1445
+ ],
1446
+ "name": "settleRelay",
1447
+ "outputs": [],
1448
+ "stateMutability": "nonpayable",
1449
+ "type": "function"
1450
+ },
1451
+ {
1452
+ "inputs": [
1453
+ {
1454
+ "components": [
1455
+ {
1456
+ "internalType": "uint256",
1457
+ "name": "chainId",
1458
+ "type": "uint256"
1459
+ },
1460
+ {
1461
+ "internalType": "uint64",
1462
+ "name": "depositId",
1463
+ "type": "uint64"
1464
+ },
1465
+ {
1466
+ "internalType": "address payable",
1467
+ "name": "l1Recipient",
1468
+ "type": "address"
1469
+ },
1470
+ {
1471
+ "internalType": "address",
1472
+ "name": "l2Sender",
1473
+ "type": "address"
1474
+ },
1475
+ {
1476
+ "internalType": "uint256",
1477
+ "name": "amount",
1478
+ "type": "uint256"
1479
+ },
1480
+ {
1481
+ "internalType": "uint64",
1482
+ "name": "slowRelayFeePct",
1483
+ "type": "uint64"
1484
+ },
1485
+ {
1486
+ "internalType": "uint64",
1487
+ "name": "instantRelayFeePct",
1488
+ "type": "uint64"
1489
+ },
1490
+ {
1491
+ "internalType": "uint32",
1492
+ "name": "quoteTimestamp",
1493
+ "type": "uint32"
1494
+ }
1495
+ ],
1496
+ "internalType": "struct BridgePool.DepositData",
1497
+ "name": "depositData",
1498
+ "type": "tuple"
1499
+ },
1500
+ {
1501
+ "components": [
1502
+ {
1503
+ "internalType": "enum BridgePool.RelayState",
1504
+ "name": "relayState",
1505
+ "type": "uint8"
1506
+ },
1507
+ {
1508
+ "internalType": "address",
1509
+ "name": "slowRelayer",
1510
+ "type": "address"
1511
+ },
1512
+ {
1513
+ "internalType": "uint32",
1514
+ "name": "relayId",
1515
+ "type": "uint32"
1516
+ },
1517
+ {
1518
+ "internalType": "uint64",
1519
+ "name": "realizedLpFeePct",
1520
+ "type": "uint64"
1521
+ },
1522
+ {
1523
+ "internalType": "uint32",
1524
+ "name": "priceRequestTime",
1525
+ "type": "uint32"
1526
+ },
1527
+ {
1528
+ "internalType": "uint256",
1529
+ "name": "proposerBond",
1530
+ "type": "uint256"
1531
+ },
1532
+ {
1533
+ "internalType": "uint256",
1534
+ "name": "finalFee",
1535
+ "type": "uint256"
1536
+ }
1537
+ ],
1538
+ "internalType": "struct BridgePool.RelayData",
1539
+ "name": "relayData",
1540
+ "type": "tuple"
1541
+ }
1542
+ ],
1543
+ "name": "speedUpRelay",
1544
+ "outputs": [],
1545
+ "stateMutability": "nonpayable",
1546
+ "type": "function"
1547
+ },
1548
+ {
1549
+ "inputs": [],
1550
+ "name": "store",
1551
+ "outputs": [
1552
+ {
1553
+ "internalType": "contract StoreInterface",
1554
+ "name": "",
1555
+ "type": "address"
1556
+ }
1557
+ ],
1558
+ "stateMutability": "view",
1559
+ "type": "function"
1560
+ },
1561
+ {
1562
+ "inputs": [],
1563
+ "name": "symbol",
1564
+ "outputs": [
1565
+ {
1566
+ "internalType": "string",
1567
+ "name": "",
1568
+ "type": "string"
1569
+ }
1570
+ ],
1571
+ "stateMutability": "view",
1572
+ "type": "function"
1573
+ },
1574
+ {
1575
+ "inputs": [],
1576
+ "name": "sync",
1577
+ "outputs": [],
1578
+ "stateMutability": "nonpayable",
1579
+ "type": "function"
1580
+ },
1581
+ {
1582
+ "inputs": [],
1583
+ "name": "syncUmaEcosystemParams",
1584
+ "outputs": [],
1585
+ "stateMutability": "nonpayable",
1586
+ "type": "function"
1587
+ },
1588
+ {
1589
+ "inputs": [],
1590
+ "name": "syncWithBridgeAdminParams",
1591
+ "outputs": [],
1592
+ "stateMutability": "nonpayable",
1593
+ "type": "function"
1594
+ },
1595
+ {
1596
+ "inputs": [],
1597
+ "name": "timerAddress",
1598
+ "outputs": [
1599
+ {
1600
+ "internalType": "address",
1601
+ "name": "",
1602
+ "type": "address"
1603
+ }
1604
+ ],
1605
+ "stateMutability": "view",
1606
+ "type": "function"
1607
+ },
1608
+ {
1609
+ "inputs": [],
1610
+ "name": "totalSupply",
1611
+ "outputs": [
1612
+ {
1613
+ "internalType": "uint256",
1614
+ "name": "",
1615
+ "type": "uint256"
1616
+ }
1617
+ ],
1618
+ "stateMutability": "view",
1619
+ "type": "function"
1620
+ },
1621
+ {
1622
+ "inputs": [
1623
+ {
1624
+ "internalType": "address",
1625
+ "name": "recipient",
1626
+ "type": "address"
1627
+ },
1628
+ {
1629
+ "internalType": "uint256",
1630
+ "name": "amount",
1631
+ "type": "uint256"
1632
+ }
1633
+ ],
1634
+ "name": "transfer",
1635
+ "outputs": [
1636
+ {
1637
+ "internalType": "bool",
1638
+ "name": "",
1639
+ "type": "bool"
1640
+ }
1641
+ ],
1642
+ "stateMutability": "nonpayable",
1643
+ "type": "function"
1644
+ },
1645
+ {
1646
+ "inputs": [
1647
+ {
1648
+ "internalType": "address",
1649
+ "name": "sender",
1650
+ "type": "address"
1651
+ },
1652
+ {
1653
+ "internalType": "address",
1654
+ "name": "recipient",
1655
+ "type": "address"
1656
+ },
1657
+ {
1658
+ "internalType": "uint256",
1659
+ "name": "amount",
1660
+ "type": "uint256"
1661
+ }
1662
+ ],
1663
+ "name": "transferFrom",
1664
+ "outputs": [
1665
+ {
1666
+ "internalType": "bool",
1667
+ "name": "",
1668
+ "type": "bool"
1669
+ }
1670
+ ],
1671
+ "stateMutability": "nonpayable",
1672
+ "type": "function"
1673
+ },
1674
+ {
1675
+ "inputs": [],
1676
+ "name": "undistributedLpFees",
1677
+ "outputs": [
1678
+ {
1679
+ "internalType": "uint256",
1680
+ "name": "",
1681
+ "type": "uint256"
1682
+ }
1683
+ ],
1684
+ "stateMutability": "view",
1685
+ "type": "function"
1686
+ },
1687
+ {
1688
+ "inputs": [],
1689
+ "name": "utilizedReserves",
1690
+ "outputs": [
1691
+ {
1692
+ "internalType": "int256",
1693
+ "name": "",
1694
+ "type": "int256"
1695
+ }
1696
+ ],
1697
+ "stateMutability": "view",
1698
+ "type": "function"
1699
+ },
1700
+ {
1701
+ "stateMutability": "payable",
1702
+ "type": "receive"
1703
+ }
1704
+ ],
1705
+ "bytecode": "0x6080604052600a805461ff0019166101001790553480156200002057600080fd5b50604051620054b3380380620054b38339810160408190526200004391620008bc565b600080546001600160a01b0319166001600160a01b03831617905586518790879087908790879087908790879087906200008590600490602085019062000703565b5080516200009b90600590602084019062000703565b50506006805460ff1916600117905550865115801590620000bc5750855115155b6200010e5760405162461bcd60e51b815260206004820152601b60248201527f426164204c5020746f6b656e206e616d65206f722073796d626f6c000000000060448201526064015b60405180910390fd5b600e80546001600160a01b0319166001600160a01b038781169190911790915560068054610100600160a81b03191661010092871692909202919091179055620001554290565b600a805462010000600160701b0319166a010000000000000000000063ffffffff939093169290920262010000600160501b03191691909117620100006001600160401b038616021760ff1916831515179055620001b262000215565b620001bc6200049b565b600a54604051620100009091046001600160401b031681527f958b6b3e25d854f9e658cd5610bd9d184123d203f58f95adf261e0d7d0dd65a59060200160405180910390a1505050505050505050505050505062000a90565b6200021f620006af565b6200022f6006805460ff19169055565b600e5460408051632e68f21360e21b815290516000926001600160a01b03169163b9a3c84c916004808301926020929190829003018186803b1580156200027557600080fd5b505afa1580156200028a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b0919062000989565b6040516302abf57960e61b81527f536b696e6e794f7074696d69737469634f7261636c650000000000000000000060048201529091506001600160a01b0382169063aafd5e409060240160206040518083038186803b1580156200031357600080fd5b505afa15801562000328573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034e919062000989565b601080546001600160a01b0319166001600160a01b039283161790556040516302abf57960e61b81526453746f726560d81b60048201529082169063aafd5e409060240160206040518083038186803b158015620003ab57600080fd5b505afa158015620003c0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e6919062000989565b600f80546001600160a01b0319166001600160a01b03928316908117909155600654604051635b97aadd60e01b8152610100909104909216600483015290635b97aadd9060240160206040518083038186803b1580156200044657600080fd5b505afa1580156200045b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004819190620009ae565b51600b5550620004996006805460ff19166001179055565b565b620004a5620006af565b620004b56006805460ff19169055565b600e60009054906101000a90046001600160a01b03166001600160a01b031663c73a32c36040518163ffffffff1660e01b815260040160206040518083038186803b1580156200050457600080fd5b505afa15801562000519573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200053f9190620009f3565b600a600e6101000a8154816001600160401b0302191690836001600160401b03160217905550600e60009054906101000a90046001600160a01b03166001600160a01b031663173684c56040518163ffffffff1660e01b815260040160206040518083038186803b158015620005b457600080fd5b505afa158015620005c9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005ef919062000a11565b600a60166101000a81548163ffffffff021916908363ffffffff160217905550600e60009054906101000a90046001600160a01b03166001600160a01b0316637998a1c46040518163ffffffff1660e01b815260040160206040518083038186803b1580156200065e57600080fd5b505afa15801562000673573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000699919062000a39565b601155620004996006805460ff19166001179055565b60065460ff16620004995760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640162000105565b828054620007119062000a53565b90600052602060002090601f01602090048101928262000735576000855562000780565b82601f106200075057805160ff191683800117855562000780565b8280016001018555821562000780579182015b828111156200078057825182559160200191906001019062000763565b506200078e92915062000792565b5090565b5b808211156200078e576000815560010162000793565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715620007ea57620007ea620007a9565b604052919050565b600082601f8301126200080457600080fd5b81516001600160401b03811115620008205762000820620007a9565b602062000836601f8301601f19168201620007bf565b82815285828487010111156200084b57600080fd5b60005b838110156200086b5785810183015182820184015282016200084e565b838111156200087d5760008385840101525b5095945050505050565b80516001600160a01b03811681146200089f57600080fd5b919050565b80516001600160401b03811681146200089f57600080fd5b600080600080600080600060e0888a031215620008d857600080fd5b87516001600160401b0380821115620008f057600080fd5b620008fe8b838c01620007f2565b985060208a01519150808211156200091557600080fd5b50620009248a828b01620007f2565b965050620009356040890162000887565b9450620009456060890162000887565b93506200095560808901620008a4565b925060a088015180151581146200096b57600080fd5b91506200097b60c0890162000887565b905092959891949750929550565b6000602082840312156200099c57600080fd5b620009a78262000887565b9392505050565b600060208284031215620009c157600080fd5b604051602081016001600160401b0381118282101715620009e657620009e6620007a9565b6040529151825250919050565b60006020828403121562000a0657600080fd5b620009a782620008a4565b60006020828403121562000a2457600080fd5b815163ffffffff81168114620009a757600080fd5b60006020828403121562000a4c57600080fd5b5051919050565b600181811c9082168062000a6857607f821691505b6020821081141562000a8a57634e487b7160e01b600052602260045260246000fd5b50919050565b614a138062000aa06000396000f3fe60806040526004361061031e5760003560e01c806370a08231116101ab578063b5351ee2116100f7578063cefed55f11610095578063df738fc81161006f578063df738fc814610978578063ed4de3a3146109a5578063f1d24bab146109da578063fff6cae9146109fe57600080fd5b8063cefed55f146108ee578063d412f5a41461090e578063dd62ed3e1461093257600080fd5b8063bec73ade116100d1578063bec73ade14610868578063c01e1bd614610888578063c73a32c3146108ad578063cc2c929e146108d457600080fd5b8063b5351ee21461081f578063bd6d894d14610834578063be0ba1221461084957600080fd5b8063975057e711610164578063a9059cbb1161013e578063a9059cbb14610793578063ac9650d8146107b3578063b2084202146107d3578063b454e326146107e957600080fd5b8063975057e714610733578063a457c2d714610753578063a6af2dfe1461077357600080fd5b806370a082311461067c578063753b91bb146106b25780637998a1c4146106d257806387a515d3146106e85780638f283970146106fe57806395d89b411461071e57600080fd5b806323b872dd1161026a5780633fa856c91161022357806351c6590a116101fd57806351c6590a1461061e5780635df45a371461063157806362822d341461064657806366db52401461066657600080fd5b80633fa856c9146105c85780634464fae4146105e85780634f52fd17146105fe57600080fd5b806323b872dd1461052457806327f224ca1461054457806329cb924d14610564578063313ce5671461057757806339509351146105935780633cc400b3146105b357600080fd5b8063173684c5116102d75780631bf71c38116102b15780631bf71c381461048c5780631c39c38d146104ac57806322302922146104e457806322f8e5661461050457600080fd5b8063173684c51461042957806318160ddd1461046257806319e9d8941461047757600080fd5b806306fdde031461032a57806308ed5b1414610355578063095ea7b31461037757806311cfc159146103a757806313111725146103e5578063135c404e1461040557600080fd5b3661032557005b600080fd5b34801561033657600080fd5b5061033f610a13565b60405161034c9190613d90565b60405180910390f35b34801561036157600080fd5b50610375610370366004613db1565b610aa5565b005b34801561038357600080fd5b50610397610392366004613dee565b610b44565b604051901515815260200161034c565b3480156103b357600080fd5b50600a546103cd906201000090046001600160401b031681565b6040516001600160401b03909116815260200161034c565b3480156103f157600080fd5b50610375610400366004613f53565b610b5b565b34801561041157600080fd5b5061041b600d5481565b60405190815260200161034c565b34801561043557600080fd5b50600a5461044d90600160b01b900463ffffffff1681565b60405163ffffffff909116815260200161034c565b34801561046e57600080fd5b5060035461041b565b34801561048357600080fd5b5061041b610e95565b34801561049857600080fd5b5061033f6104a7366004613f8d565b610ebe565b3480156104b857600080fd5b506000546104cc906001600160a01b031681565b6040516001600160a01b03909116815260200161034c565b3480156104f057600080fd5b506010546104cc906001600160a01b031681565b34801561051057600080fd5b5061037561051f366004614044565b610ee1565b34801561053057600080fd5b5061039761053f36600461405d565b610f57565b34801561055057600080fd5b5061037561055f36600461409e565b611008565b34801561057057600080fd5b504261041b565b34801561058357600080fd5b506040516012815260200161034c565b34801561059f57600080fd5b506103976105ae366004613dee565b61109e565b3480156105bf57600080fd5b506103756110d5565b3480156105d457600080fd5b506103756105e3366004613f8d565b6112ca565b3480156105f457600080fd5b5061041b600c5481565b34801561060a57600080fd5b506103756106193660046140bb565b611727565b61037561062c366004614044565b6118a0565b34801561063d57600080fd5b5061041b611a44565b34801561065257600080fd5b5061041b610661366004614044565b611a5b565b34801561067257600080fd5b5061041b60085481565b34801561068857600080fd5b5061041b6106973660046140e0565b6001600160a01b031660009081526001602052604090205490565b3480156106be57600080fd5b506103756106cd366004613f53565b611a85565b3480156106de57600080fd5b5061041b60115481565b3480156106f457600080fd5b5061041b60095481565b34801561070a57600080fd5b506103756107193660046140e0565b611f21565b34801561072a57600080fd5b5061033f611fb0565b34801561073f57600080fd5b50600f546104cc906001600160a01b031681565b34801561075f57600080fd5b5061039761076e366004613dee565b611fbf565b34801561077f57600080fd5b50600e546104cc906001600160a01b031681565b34801561079f57600080fd5b506103976107ae366004613dee565b61205a565b6107c66107c13660046140fd565b612067565b60405161034c9190614171565b3480156107df57600080fd5b5061041b60075481565b3480156107f557600080fd5b506104cc610804366004614044565b6013602052600090815260409020546001600160a01b031681565b34801561082b57600080fd5b5061037561220c565b34801561084057600080fd5b5061041b612464565b34801561085557600080fd5b50600a5461039790610100900460ff1681565b34801561087457600080fd5b50610375610883366004613f8d565b61247e565b34801561089457600080fd5b506006546104cc9061010090046001600160a01b031681565b3480156108b957600080fd5b50600a546103cd90600160701b90046001600160401b031681565b3480156108e057600080fd5b50600a546103979060ff1681565b3480156108fa57600080fd5b50610375610909366004613f8d565b61266b565b34801561091a57600080fd5b5060065461044d90600160a81b900463ffffffff1681565b34801561093e57600080fd5b5061041b61094d3660046141d3565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561098457600080fd5b5061041b610993366004614044565b60126020526000908152604090205481565b3480156109b157600080fd5b506109c56109c0366004614044565b612851565b6040805192835260208301919091520161034c565b3480156109e657600080fd5b50600a5461044d90600160501b900463ffffffff1681565b348015610a0a57600080fd5b50610375612888565b606060048054610a2290614201565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4e90614201565b8015610a9b5780601f10610a7057610100808354040283529160200191610a9b565b820191906000526020600020905b815481529060010190602001808311610a7e57829003601f168201915b5050505050905090565b600e546001600160a01b03163314610ad85760405162461bcd60e51b8152600401610acf9061423c565b60405180910390fd5b610ae06128a8565b610ae86128fa565b600a80548215156101000261ff00199091161790556040517f1d492b98217ff50d005c548e0fa3a96dc38b2bafccaf5baedf42c112bd39fdfb90610b3190831515815260200190565b60405180910390a1610b41612906565b50565b6000610b51338484612915565b5060015b92915050565b600a54610100900460ff16610ba85760405162461bcd60e51b815260206004820152601360248201527214995b185e5cc8185c9948191a5cd8589b1959606a1b6044820152606401610acf565b610bb06128a8565b610bb86128fa565b6703782dace9d900008260a001516001600160401b031611158015610bf257506703782dace9d900008260c001516001600160401b031611155b8015610c0f57506706f05b59d3b20000816001600160401b031611155b610c4a5760405162461bcd60e51b815260206004820152600c60248201526b496e76616c6964206665657360a01b6044820152606401610acf565b6000610c5583612a3a565b60008181526012602052604090205490915015610cab5760405162461bcd60e51b815260206004820152601460248201527350656e64696e672072656c61792065786973747360601b6044820152606401610acf565b60004290506000610cbf8560800151612a7d565b905060006040518060e0016040528060016002811115610ce157610ce1614273565b815233602082015260068054604090920191600160a81b900463ffffffff16906015610d0c8361429f565b91906101000a81548163ffffffff021916908363ffffffff16021790555063ffffffff168152602001866001600160401b031681526020018463ffffffff168152602001838152602001600b548152509050610d6781612a9d565b600085815260126020526040812091909155610d838783612ab0565b90508660800151600954600754610d9a91906142c3565b1015610de45760405162461bcd60e51b8152602060048201526019602482015278496e73756666696369656e7420706f6f6c2062616c616e636560381b6044820152606401610acf565b6000600b5484610df491906142da565b9050876080015160096000828254610e0c91906142da565b9250508190555080600d6000828254610e2591906142da565b9091555050600654610e479061010090046001600160a01b0316333084612b04565b857fa4ca36d112520cced74325c72711f376fe4015665829d879ba21590cb8130be0898585604051610e7b939291906143fc565b60405180910390a2505050505050610e91612906565b5050565b6000610e9f6128a8565b610ea76128fa565b610eb16000612b75565b9050610ebb612906565b90565b6060610ec86128a8565b610eda610ed58484612ab0565b612c03565b9392505050565b6000546001600160a01b0316610ef657600080fd5b60005460405163117c72b360e11b8152600481018390526001600160a01b03909116906322f8e56690602401600060405180830381600087803b158015610f3c57600080fd5b505af1158015610f50573d6000803e3d6000fd5b5050505050565b6000610f64848484612c40565b6001600160a01b038416600090815260026020908152604080832033845290915290205482811015610fe95760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610acf565b610ffd8533610ff886856142c3565b612915565b506001949350505050565b600e546001600160a01b031633146110325760405162461bcd60e51b8152600401610acf9061423c565b61103a6128a8565b6110426128fa565b600a805469ffffffffffffffff00001916620100006001600160401b038481168202929092179283905560405192041681527f958b6b3e25d854f9e658cd5610bd9d184123d203f58f95adf261e0d7d0dd65a590602001610b31565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091610b51918590610ff89086906142da565b6110dd6128a8565b6110e56128fa565b600e60009054906101000a90046001600160a01b03166001600160a01b031663c73a32c36040518163ffffffff1660e01b815260040160206040518083038186803b15801561113357600080fd5b505afa158015611147573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116b9190614428565b600a600e6101000a8154816001600160401b0302191690836001600160401b03160217905550600e60009054906101000a90046001600160a01b03166001600160a01b031663173684c56040518163ffffffff1660e01b815260040160206040518083038186803b1580156111df57600080fd5b505afa1580156111f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112179190614445565b600a60166101000a81548163ffffffff021916908363ffffffff160217905550600e60009054906101000a90046001600160a01b03166001600160a01b0316637998a1c46040518163ffffffff1660e01b815260040160206040518083038186803b15801561128557600080fd5b505afa158015611299573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112bd9190614462565b6011556112c8612906565b565b6112d26128a8565b6112da6128fa565b60006112e583612a3a565b90506112f18183612e18565b60018251600281111561130657611306614273565b146113455760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e481cd95d1d1b1959608a1b6044820152606401610acf565b6000600a60169054906101000a900463ffffffff168360800151611369919061447b565b9050428163ffffffff1611156113b65760405162461bcd60e51b8152602060048201526012602482015271139bdd081cd95d1d1b1958589b19481e595d60721b6044820152606401610acf565b82602001516001600160a01b0316336001600160a01b031614806113ea57506113e18161038461447b565b63ffffffff1642115b6114295760405162461bcd60e51b815260206004820152601060248201526f2737ba1039b637bb903932b630bcb2b960811b6044820152606401610acf565b6040805160e0810190915261149d90806002815260200185602001516001600160a01b03168152602001856040015163ffffffff16815260200185606001516001600160401b03168152602001856080015163ffffffff1681526020018560a0015181526020018560c00151815250612a9d565b60008381526012602052604081209190915560a085015160608501516114d0916114c6916144a3565b8660800151612ea5565b85608001516114df91906142c3565b905060006114ed8486612ecd565b600081815260136020526040902054600a549192506001600160a01b03169060ff16801561152257506001600160a01b038116155b1561153a57611535876040015184612ef8565b61156f565b61156f6001600160a01b038216611555578760400151611557565b815b60065461010090046001600160a01b03169085612fc1565b60006115838860a001518960800151612ea5565b905060008760a001518860c0015161159b91906142da565b60208901519091506001600160a01b03163314156115e35760208801516115de906115c683856142da565b60065461010090046001600160a01b03169190612fc1565b611621565b6020880151600654611605916101009091046001600160a01b03169083612fc1565b6006546116219061010090046001600160a01b03163384612fc1565b600061162d83876142da565b905089608001516009600082825461164591906142c3565b92505081905550806007600082825461165e91906142c3565b92505081905550806008600082825461167791906144c5565b9250508190555081600d600082825461169091906142c3565b9091555061169e9050612ff1565b6116b86116b38a606001518c60800151612ea5565b61302f565b336001600160a01b0316887fcfdda74fce9fedb259e0f0a1ab1550e19b338488ece64976a4639e7fce0293a78b6040516116f29190614506565b60405180910390a350505060009182525060136020526040902080546001600160a01b031916905550610e9191506129069050565b61172f6128a8565b6117376128fa565b8015806117465750600a5460ff165b6117825760405162461bcd60e51b815260206004820152600d60248201526c086c2dce840e6cadcc840cae8d609b1b6044820152606401610acf565b6000670de0b6b3a7640000611795613062565b61179f9085614514565b6117a99190614549565b9050806009546117b991906142da565b600754101561180a5760405162461bcd60e51b815260206004820152601e60248201527f5574696c697a6174696f6e20746f6f206869676820746f2072656d6f766500006044820152606401610acf565b61181433846130da565b806007600082825461182691906142c3565b909155505081156118405761183b3382612ef8565b61185c565b60065461185c9061010090046001600160a01b03163383612fc1565b604080518281526020810185905233917f0c54fc223ffd1a8f36652b5e83db4fff50f5ae151b11ceb56d5499b9f6e1fa18910160405180910390a250610e91612906565b6118a86128a8565b6118b06128fa565b600a5460ff1680156118c157508034145b806118ca575034155b6119165760405162461bcd60e51b815260206004820152601b60248201527f42616420616464206c6971756964697479204574682076616c756500000000006044820152606401610acf565b6000611920613062565b61193283670de0b6b3a7640000614514565b61193c9190614549565b90506119483382613229565b816007600082825461195a91906142da565b909155505034158015906119705750600a5460ff165b156119e357600660019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b1580156119c557600080fd5b505af11580156119d9573d6000803e3d6000fd5b5050505050611a00565b600654611a009061010090046001600160a01b0316333085612b04565b604080518381526020810183905233917f0351f600ef1e31e5e13b4dc27bff4cbde3e9269f0ffc666629ae6cac573eb220910160405180910390a250610b41612906565b6000611a4e6128a8565b611a56613308565b905090565b6000611a656128a8565b611a6d6128fa565b611a7682612b75565b9050611a80612906565b919050565b600a54610100900460ff16611ad25760405162461bcd60e51b815260206004820152601360248201527214995b185e5cc8185c9948191a5cd8589b1959606a1b6044820152606401610acf565b611ada6128a8565b611ae26128fa565b60004290506703782dace9d900008360a001516001600160401b031611158015611b2157506703782dace9d900008360c001516001600160401b031611155b8015611b3e57506706f05b59d3b20000826001600160401b031611155b611b795760405162461bcd60e51b815260206004820152600c60248201526b496e76616c6964206665657360a01b6044820152606401610acf565b6000611b8484612a3a565b60008181526012602052604090205490915015611bda5760405162461bcd60e51b815260206004820152601460248201527350656e64696e672072656c61792065786973747360601b6044820152606401610acf565b6000611be98560800151612a7d565b905060006040518060e0016040528060016002811115611c0b57611c0b614273565b815233602082015260068054604090920191600160a81b900463ffffffff16906015611c368361429f565b91906101000a81548163ffffffff021916908363ffffffff16021790555063ffffffff168152602001866001600160401b031681526020018563ffffffff168152602001838152602001600b5481525090506000611c948783612ab0565b9050611c9f82612a9d565b600085815260126020526040812091909155611cbb8584612ecd565b6000818152601360205260409020549091506001600160a01b031615611d1d5760405162461bcd60e51b8152602060048201526017602482015276052656c61792063616e6e6f74206265207370656420757604c1b6044820152606401610acf565b8760800151600954600754611d3291906142c3565b1015611d7c5760405162461bcd60e51b8152602060048201526019602482015278496e73756666696369656e7420706f6f6c2062616c616e636560381b6044820152606401610acf565b6000600b5485611d8c91906142da565b90506000611dc08a60c001518b60a001518760600151611dac91906144a3565b611db691906144a3565b8b60800151612ea5565b90506000818b60800151611dd491906142c3565b905082600d6000828254611de891906142da565b909155505060808b015160098054600090611e049084906142da565b9091555050600084815260136020526040902080546001600160a01b03191633908117909155611e529030611e3986856142da565b60065461010090046001600160a01b0316929190612b04565b600a5460ff1615611e7057611e6b8b6040015182612ef8565b611e92565b60408b0151600654611e92916101009091046001600160a01b03169083612fc1565b877fa4ca36d112520cced74325c72711f376fe4015665829d879ba21590cb8130be08c8888604051611ec6939291906143fc565b60405180910390a2336001600160a01b0316887ff98cddc88bc965917007822b05056cb92bc9ddf0f8bcc61678400cb78313bb4b88604051611f089190614506565b60405180910390a3505050505050505050610e91612906565b600e546001600160a01b03163314611f4b5760405162461bcd60e51b8152600401610acf9061423c565b611f536128a8565b611f5b6128fa565b600e80546001600160a01b0319166001600160a01b0383169081179091556040805133815260208101929092527f485a12424bd0c2c66a131c2681cb6c743b9573af3ae5f3014ef6ce7f55ab01929101610b31565b606060058054610a2290614201565b3360009081526002602090815260408083206001600160a01b0386168452909152812054828110156120415760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610acf565b6120503385610ff886856142c3565b5060019392505050565b6000610b51338484612c40565b606034156120b75760405162461bcd60e51b815260206004820152601b60248201527f4f6e6c79206d756c746963616c6c207769746820302076616c756500000000006044820152606401610acf565b816001600160401b038111156120cf576120cf613e1a565b60405190808252806020026020018201604052801561210257816020015b60608152602001906001900390816120ed5790505b50905060005b8281101561220557600080308686858181106121265761212661456b565b90506020028101906121389190614581565b6040516121469291906145ce565b600060405180830381855af49150503d8060008114612181576040519150601f19603f3d011682016040523d82523d6000602084013e612186565b606091505b5091509150816121d25760448151101561219f57600080fd5b600481019050808060200190518101906121b991906145de565b60405162461bcd60e51b8152600401610acf9190613d90565b808484815181106121e5576121e561456b565b6020026020010181905250505080806121fd9061467f565b915050612108565b5092915050565b6122146128a8565b61221c6128fa565b600e5460408051632e68f21360e21b815290516000926001600160a01b03169163b9a3c84c916004808301926020929190829003018186803b15801561226157600080fd5b505afa158015612275573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612299919061469a565b6040516302abf57960e61b815275536b696e6e794f7074696d69737469634f7261636c6560501b60048201529091506001600160a01b0382169063aafd5e409060240160206040518083038186803b1580156122f457600080fd5b505afa158015612308573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061232c919061469a565b601080546001600160a01b0319166001600160a01b039283161790556040516302abf57960e61b81526453746f726560d81b60048201529082169063aafd5e409060240160206040518083038186803b15801561238857600080fd5b505afa15801561239c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c0919061469a565b600f80546001600160a01b0319166001600160a01b03928316908117909155600654604051635b97aadd60e01b8152610100909104909216600483015290635b97aadd9060240160206040518083038186803b15801561241f57600080fd5b505afa158015612433573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061245791906146b7565b51600b55506112c8612906565b600061246e6128a8565b6124766128fa565b610eb1613062565b6124866128a8565b61248e6128fa565b600061249983612a3a565b90506124a58183612e18565b60006124b18284612ecd565b9050600a60169054906101000a900463ffffffff1683608001516124d5919061447b565b63ffffffff16421080156124fb57506001835160028111156124f9576124f9614273565b145b801561251c57506000818152601360205260409020546001600160a01b0316155b6125625760405162461bcd60e51b8152602060048201526017602482015276052656c61792063616e6e6f74206265207370656420757604c1b6044820152606401610acf565b600081815260136020526040812080546001600160a01b0319163317905560c085015160a086015160608601516125a7929161259d916144a3565b6114c691906144a3565b905060008186608001516125bb91906142c3565b600a5490915060ff16156125f9576006546125e69061010090046001600160a01b0316333084612b04565b6125f4866040015182612ef8565b61261d565b604086015160065461261d916101009091046001600160a01b031690339084612b04565b336001600160a01b0316847ff98cddc88bc965917007822b05056cb92bc9ddf0f8bcc61678400cb78313bb4b876040516126579190614506565b60405180910390a350505050610e91612906565b6126736128a8565b61267b6128fa565b42600a54608083015161269b91600160b01b900463ffffffff169061447b565b63ffffffff16116126de5760405162461bcd60e51b815260206004820152600d60248201526c50617374206c6976656e65737360981b6044820152606401610acf565b6001815160028111156126f3576126f3614273565b146127315760405162461bcd60e51b815260206004820152600e60248201526d4e6f742064697370757461626c6560901b6044820152606401610acf565b600061273c83612a3a565b90506127488183612e18565b60006127548484612ab0565b905060006127798460200151338660a001518760c0015161277487612c03565b613378565b90508360a001518460c0015161278f91906142da565b600d60008282546127a091906142c3565b90915550506080850151600980546000906127bc9084906142c3565b9091555050600083815260126020526040812055801561281057336127e085612a9d565b60405185907f29751133c2d0a0ea7a9da312248b12ef10ac4c20f4e3ab5eebbb80d853b3836790600090a4612846565b3361281a85612a9d565b60405185907f14173c4d3bd95e34f5c8f78729323444c9272bd21051e70045b64ed48f65818390600090a45b505050610e91612906565b60008061285c6128a8565b6128646128fa565b61286e6000612b75565b61287784612b75565b91509150612883612906565b915091565b6128906128a8565b6128986128fa565b6128a061369d565b6112c8612906565b60065460ff166112c85760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610acf565b6006805460ff19169055565b6006805460ff19166001179055565b6001600160a01b0383166129775760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610acf565b6001600160a01b0382166129d85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610acf565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600654604051600091612a6091849161010090046001600160a01b0316906020016146f8565b604051602081830303815290604052805190602001209050919050565b600a54600090610b5590600160701b90046001600160401b031683612ea5565b600081604051602001612a609190614506565b60008282604001518360600151600660019054906101000a90046001600160a01b0316604051602001612ae69493929190614720565b60405160208183030381529060405280519060200120905092915050565b6040516001600160a01b0380851660248301528316604482015260648101829052612b6f9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613760565b50505050565b6000612b7f61369d565b60008060085413612b91576000612b95565b6008545b905060008160095485612ba891906142da565b612bb291906142da565b9050600082600754612bc491906142da565b905080612bdd5750670de0b6b3a7640000949350505050565b80612bf083670de0b6b3a7640000614514565b612bfa9190614549565b95945050505050565b6060610b5560405180602001604052806000815250604051806040016040528060098152602001680e4cad8c2f290c2e6d60bb1b81525084613832565b6001600160a01b038316612ca45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610acf565b6001600160a01b038216612d065760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610acf565b6001600160a01b03831660009081526001602052604090205481811015612d7e5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610acf565b612d8882826142c3565b6001600160a01b038086166000908152600160205260408082209390935590851681529081208054849290612dbe9084906142da565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612e0a91815260200190565b60405180910390a350505050565b612e2181612a9d565b60008381526012602052604090205414610e91576040805162461bcd60e51b81526020600482015260248101919091527f4861736865642072656c617920706172616d7320646f206e6f74206d6174636860448201527f206578697374696e672072656c6179206861736820666f72206465706f7369746064820152608401610acf565b6000670de0b6b3a7640000612ec3836001600160401b038616614514565b610eda9190614549565b6000828260600151604051602001612ae69291909182526001600160401b0316602082015260400190565b6001600160a01b0382163b15612f2457600654610e919061010090046001600160a01b03168383612fc1565b600654604051632e1a7d4d60e01b8152600481018390526101009091046001600160a01b031690632e1a7d4d90602401600060405180830381600087803b158015612f6e57600080fd5b505af1158015612f82573d6000803e3d6000fd5b50506040516001600160a01b038516925083156108fc02915083906000818181858888f19350505050158015612fbc573d6000803e3d6000fd5b505050565b6040516001600160a01b038316602482015260448101829052612fbc90849063a9059cbb60e01b90606401612b38565b6000612ffb613308565b905080600c5461300b91906142c3565b600c5550600a805463ffffffff60501b1916600160501b4263ffffffff1602179055565b80600c600082825461304191906142da565b92505081905550806008600082825461305a91906144c5565b909155505050565b600061306d60035490565b61307e5750670de0b6b3a764000090565b613086612ff1565b61308e61369d565b6000600c546008546007546130a391906144c5565b6130ad9190614765565b90506130b860035490565b6130ca82670de0b6b3a7640000614514565b6130d49190614549565b91505090565b6001600160a01b03821661313a5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610acf565b6001600160a01b038216600090815260016020526040902054818110156131ae5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610acf565b6131b882826142c3565b6001600160a01b038416600090815260016020526040812091909155600380548492906131e69084906142c3565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001612a2d565b6001600160a01b03821661327f5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610acf565b806003600082825461329191906142da565b90915550506001600160a01b038216600090815260016020526040812080548392906132be9084906142da565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600a546000908190670de0b6b3a764000090600160501b900463ffffffff164261333291906142c3565b600a54600c54613351916201000090046001600160401b031690614514565b61335b9190614514565b6133659190614549565b9050600c548110611a8057600c546130d4565b60008061338585856142da565b6010546006549192506133aa9161010090046001600160a01b03908116911683613878565b6010546011546001600160a01b039091169063af355d1e904286600660019054906101000a90046001600160a01b031660008b600a60169054906101000a900463ffffffff168f670de0b6b3a76400006040518a63ffffffff1660e01b815260040161341e999897969594939291906147a4565b602060405180830381600087803b15801561343857600080fd5b505af1925050508015613468575060408051601f3d908101601f1916820190925261346591810190614462565b60015b6134b5576006546134889061010090046001600160a01b03168883612fc1565b6010546006546134ab916001600160a01b03610100909204821691166000613878565b6000915050612bfa565b818110156135105760006134c982846142c3565b6006549091506134e89061010090046001600160a01b03168a83612fc1565b60105460065461350b916001600160a01b03610100909204821691166000613878565b819250505b5060408051610160810182526001600160a01b03898116825260006020830181905260065461010090049091169282019290925260608101829052670de0b6b3a7640000608082015260a08101829052600a5460c0820190600160b01b900463ffffffff164261358091906142da565b81526000602082015260400161359688856142c3565b815260208101889052600a54600160b01b900463ffffffff9081166040909201919091526006549192506135df9161010090046001600160a01b031690339030908690612b0416565b601054600654613601916001600160a01b036101009092048216911684613878565b60105460115460405163139c641960e31b81526001600160a01b0390921691639ce320c89161363c914290899087908e90309060040161480f565b602060405180830381600087803b15801561365657600080fd5b505af115801561366a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061368e9190614462565b50600198975050505050505050565b600d546006546040516370a0823160e01b81523060048201526000929161010090046001600160a01b0316906370a082319060240160206040518083038186803b1580156136ea57600080fd5b505afa1580156136fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137229190614462565b61372c91906142c3565b9050600754811115610b415760075461374590826142c3565b600860008282546137569190614765565b9091555050600755565b60006137b5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661399c9092919063ffffffff16565b805190915015612fbc57808060200190518101906137d39190614908565b612fbc5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610acf565b6060600061384085856139b3565b9050848161384d856139f5565b60405160200161385f93929190614925565b6040516020818303038152906040529150509392505050565b8015806139015750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e9060440160206040518083038186803b1580156138c757600080fd5b505afa1580156138db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138ff9190614462565b155b61396c5760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b6064820152608401610acf565b6040516001600160a01b038316602482015260448101829052612fbc90849063095ea7b360e01b90606401612b38565b60606139ab8484600085613a35565b949350505050565b8151606090156139e457816040516020016139ce9190614968565b6040516020818303038152906040529050610b55565b816040516020016139ce919061499c565b6060613a04608083901c613b5d565b613a0d83613b5d565b6040805160208101939093528201526060016040516020818303038152906040529050919050565b606082471015613a965760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610acf565b843b613ae45760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610acf565b600080866001600160a01b03168587604051613b0091906149c1565b60006040518083038185875af1925050503d8060008114613b3d576040519150601f19603f3d011682016040523d82523d6000602084013e613b42565b606091505b5091509150613b52828286613cff565b979650505050505050565b6000808260001c9050806fffffffffffffffffffffffffffffffff169050806801000000000000000002811777ffffffffffffffff0000000000000000ffffffffffffffff169050806401000000000281177bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16905080620100000281177dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff169050806101000281177eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff1690508060100281177f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f16905060006008827f08080808080808080808080808080808080808080808080808080808080808081681613c8157613c81614533565b0460047f040404040404040404040404040404040404040404040404040404040404040484160460027f020202020202020202020202020202020202020202020202020202020202020285160417166027029091017f3030303030303030303030303030303030303030303030303030303030303030019392505050565b60608315613d0e575081610eda565b825115613d1e5782518084602001fd5b8160405162461bcd60e51b8152600401610acf9190613d90565b60005b83811015613d53578181015183820152602001613d3b565b83811115612b6f5750506000910152565b60008151808452613d7c816020860160208601613d38565b601f01601f19169290920160200192915050565b602081526000610eda6020830184613d64565b8015158114610b4157600080fd5b600060208284031215613dc357600080fd5b8135610eda81613da3565b6001600160a01b0381168114610b4157600080fd5b8035611a8081613dce565b60008060408385031215613e0157600080fd5b8235613e0c81613dce565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715613e5257613e52613e1a565b60405290565b6001600160401b0381168114610b4157600080fd5b8035611a8081613e58565b63ffffffff81168114610b4157600080fd5b8035611a8081613e78565b6000610100808385031215613ea957600080fd5b604051908101906001600160401b0382118183101715613ecb57613ecb613e1a565b816040528092508335815260208401359150613ee682613e58565b816020820152613ef860408501613de3565b6040820152613f0960608501613de3565b606082015260808401356080820152613f2460a08501613e6d565b60a0820152613f3560c08501613e6d565b60c0820152613f4660e08501613e8a565b60e0820152505092915050565b6000806101208385031215613f6757600080fd5b613f718484613e95565b9150610100830135613f8281613e58565b809150509250929050565b6000808284036101e0811215613fa257600080fd5b613fac8585613e95565b925060e060ff1982011215613fc057600080fd5b50613fc9613e30565b61010084013560038110613fdc57600080fd5b8152613feb6101208501613de3565b6020820152613ffd6101408501613e8a565b604082015261400f6101608501613e6d565b60608201526140216101808501613e8a565b60808201526101a084013560a08201526101c09093013560c08401525092909150565b60006020828403121561405657600080fd5b5035919050565b60008060006060848603121561407257600080fd5b833561407d81613dce565b9250602084013561408d81613dce565b929592945050506040919091013590565b6000602082840312156140b057600080fd5b8135610eda81613e58565b600080604083850312156140ce57600080fd5b823591506020830135613f8281613da3565b6000602082840312156140f257600080fd5b8135610eda81613dce565b6000806020838503121561411057600080fd5b82356001600160401b038082111561412757600080fd5b818501915085601f83011261413b57600080fd5b81358181111561414a57600080fd5b8660208260051b850101111561415f57600080fd5b60209290920196919550909350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156141c657603f198886030184526141b4858351613d64565b94509285019290850190600101614198565b5092979650505050505050565b600080604083850312156141e657600080fd5b82356141f181613dce565b91506020830135613f8281613dce565b600181811c9082168061421557607f821691505b6020821081141561423657634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526017908201527f43616c6c6572206e6f74206272696467652061646d696e000000000000000000604082015260600190565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600063ffffffff808316818114156142b9576142b9614289565b6001019392505050565b6000828210156142d5576142d5614289565b500390565b600082198211156142ed576142ed614289565b500190565b8051825260208101516001600160401b0380821660208501526040830151915060018060a01b03808316604086015280606085015116606086015250608083015160808501528060a08401511660a08501528060c08401511660c0850152505063ffffffff60e08201511660e08301525050565b80516003811061438657634e487b7160e01b600052602160045260246000fd5b82526020818101516001600160a01b031690830152604080820151906143b39084018263ffffffff169052565b5060608101516143ce60608401826001600160401b03169052565b5060808101516143e6608084018263ffffffff169052565b5060a0818101519083015260c090810151910152565b610200810161440b82866142f2565b614419610100830185614366565b826101e0830152949350505050565b60006020828403121561443a57600080fd5b8151610eda81613e58565b60006020828403121561445757600080fd5b8151610eda81613e78565b60006020828403121561447457600080fd5b5051919050565b600063ffffffff80831681851680830382111561449a5761449a614289565b01949350505050565b60006001600160401b0380831681851680830382111561449a5761449a614289565b600080821280156001600160ff1b03849003851316156144e7576144e7614289565b600160ff1b839003841281161561450057614500614289565b50500190565b60e08101610b558284614366565b600081600019048311821515161561452e5761452e614289565b500290565b634e487b7160e01b600052601260045260246000fd5b60008261456657634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b6000808335601e1984360301811261459857600080fd5b8301803591506001600160401b038211156145b257600080fd5b6020019150368190038213156145c757600080fd5b9250929050565b8183823760009101908152919050565b6000602082840312156145f057600080fd5b81516001600160401b038082111561460757600080fd5b818401915084601f83011261461b57600080fd5b81518181111561462d5761462d613e1a565b604051601f8201601f19908116603f0116810190838211818310171561465557614655613e1a565b8160405282815287602084870101111561466e57600080fd5b613b52836020830160208801613d38565b600060001982141561469357614693614289565b5060010190565b6000602082840312156146ac57600080fd5b8151610eda81613dce565b6000602082840312156146c957600080fd5b604051602081018181106001600160401b03821117156146eb576146eb613e1a565b6040529151825250919050565b610120810161470782856142f2565b6001600160a01b03929092166101009190910152919050565b610160810161472f82876142f2565b63ffffffff949094166101008201526001600160401b03929092166101208301526001600160a01b031661014090910152919050565b60008083128015600160ff1b85018412161561478357614783614289565b6001600160ff1b038401831381161561479e5761479e614289565b50500390565b60006101208b835263ffffffff808c1660208501528160408501526147cb8285018c613d64565b6001600160a01b039a8b166060860152608085019990995260a084019790975250509290931660c083015290931660e0840152610100909201919091529392505050565b600061020088835263ffffffff8816602084015280604084015261483581840188613d64565b91505061484e6060830186516001600160a01b03169052565b60208501516001600160a01b03811660808401525060408501516001600160a01b03811660a084015250606085015180151560c084015250608085015160e083015260a0850151610100818185015260c08701519150610120828186015260e0880151925061014083818701528289015161016087015281890151610180870152808901516101a0870152505050506148f36101c08301856001600160a01b03169052565b6001600160a01b0383166101e0830152613b52565b60006020828403121561491a57600080fd5b8151610eda81613da3565b60008451614937818460208901613d38565b84519083019061494b818360208901613d38565b845191019061495e818360208801613d38565b0195945050505050565b600b60fa1b815260008251614984816001850160208701613d38565b601d60f91b6001939091019283015250600201919050565b600082516149ae818460208701613d38565b601d60f91b920191825250600101919050565b600082516149d3818460208701613d38565b919091019291505056fea2646970667358221220c4b31e1ef9e4af0fa1497d6ce4afbdaab6148e447ddff6e73ffbd5b0e4aa00c664736f6c63430008090033",
1706
+ "deployedBytecode": "0x60806040526004361061031e5760003560e01c806370a08231116101ab578063b5351ee2116100f7578063cefed55f11610095578063df738fc81161006f578063df738fc814610978578063ed4de3a3146109a5578063f1d24bab146109da578063fff6cae9146109fe57600080fd5b8063cefed55f146108ee578063d412f5a41461090e578063dd62ed3e1461093257600080fd5b8063bec73ade116100d1578063bec73ade14610868578063c01e1bd614610888578063c73a32c3146108ad578063cc2c929e146108d457600080fd5b8063b5351ee21461081f578063bd6d894d14610834578063be0ba1221461084957600080fd5b8063975057e711610164578063a9059cbb1161013e578063a9059cbb14610793578063ac9650d8146107b3578063b2084202146107d3578063b454e326146107e957600080fd5b8063975057e714610733578063a457c2d714610753578063a6af2dfe1461077357600080fd5b806370a082311461067c578063753b91bb146106b25780637998a1c4146106d257806387a515d3146106e85780638f283970146106fe57806395d89b411461071e57600080fd5b806323b872dd1161026a5780633fa856c91161022357806351c6590a116101fd57806351c6590a1461061e5780635df45a371461063157806362822d341461064657806366db52401461066657600080fd5b80633fa856c9146105c85780634464fae4146105e85780634f52fd17146105fe57600080fd5b806323b872dd1461052457806327f224ca1461054457806329cb924d14610564578063313ce5671461057757806339509351146105935780633cc400b3146105b357600080fd5b8063173684c5116102d75780631bf71c38116102b15780631bf71c381461048c5780631c39c38d146104ac57806322302922146104e457806322f8e5661461050457600080fd5b8063173684c51461042957806318160ddd1461046257806319e9d8941461047757600080fd5b806306fdde031461032a57806308ed5b1414610355578063095ea7b31461037757806311cfc159146103a757806313111725146103e5578063135c404e1461040557600080fd5b3661032557005b600080fd5b34801561033657600080fd5b5061033f610a13565b60405161034c9190613d90565b60405180910390f35b34801561036157600080fd5b50610375610370366004613db1565b610aa5565b005b34801561038357600080fd5b50610397610392366004613dee565b610b44565b604051901515815260200161034c565b3480156103b357600080fd5b50600a546103cd906201000090046001600160401b031681565b6040516001600160401b03909116815260200161034c565b3480156103f157600080fd5b50610375610400366004613f53565b610b5b565b34801561041157600080fd5b5061041b600d5481565b60405190815260200161034c565b34801561043557600080fd5b50600a5461044d90600160b01b900463ffffffff1681565b60405163ffffffff909116815260200161034c565b34801561046e57600080fd5b5060035461041b565b34801561048357600080fd5b5061041b610e95565b34801561049857600080fd5b5061033f6104a7366004613f8d565b610ebe565b3480156104b857600080fd5b506000546104cc906001600160a01b031681565b6040516001600160a01b03909116815260200161034c565b3480156104f057600080fd5b506010546104cc906001600160a01b031681565b34801561051057600080fd5b5061037561051f366004614044565b610ee1565b34801561053057600080fd5b5061039761053f36600461405d565b610f57565b34801561055057600080fd5b5061037561055f36600461409e565b611008565b34801561057057600080fd5b504261041b565b34801561058357600080fd5b506040516012815260200161034c565b34801561059f57600080fd5b506103976105ae366004613dee565b61109e565b3480156105bf57600080fd5b506103756110d5565b3480156105d457600080fd5b506103756105e3366004613f8d565b6112ca565b3480156105f457600080fd5b5061041b600c5481565b34801561060a57600080fd5b506103756106193660046140bb565b611727565b61037561062c366004614044565b6118a0565b34801561063d57600080fd5b5061041b611a44565b34801561065257600080fd5b5061041b610661366004614044565b611a5b565b34801561067257600080fd5b5061041b60085481565b34801561068857600080fd5b5061041b6106973660046140e0565b6001600160a01b031660009081526001602052604090205490565b3480156106be57600080fd5b506103756106cd366004613f53565b611a85565b3480156106de57600080fd5b5061041b60115481565b3480156106f457600080fd5b5061041b60095481565b34801561070a57600080fd5b506103756107193660046140e0565b611f21565b34801561072a57600080fd5b5061033f611fb0565b34801561073f57600080fd5b50600f546104cc906001600160a01b031681565b34801561075f57600080fd5b5061039761076e366004613dee565b611fbf565b34801561077f57600080fd5b50600e546104cc906001600160a01b031681565b34801561079f57600080fd5b506103976107ae366004613dee565b61205a565b6107c66107c13660046140fd565b612067565b60405161034c9190614171565b3480156107df57600080fd5b5061041b60075481565b3480156107f557600080fd5b506104cc610804366004614044565b6013602052600090815260409020546001600160a01b031681565b34801561082b57600080fd5b5061037561220c565b34801561084057600080fd5b5061041b612464565b34801561085557600080fd5b50600a5461039790610100900460ff1681565b34801561087457600080fd5b50610375610883366004613f8d565b61247e565b34801561089457600080fd5b506006546104cc9061010090046001600160a01b031681565b3480156108b957600080fd5b50600a546103cd90600160701b90046001600160401b031681565b3480156108e057600080fd5b50600a546103979060ff1681565b3480156108fa57600080fd5b50610375610909366004613f8d565b61266b565b34801561091a57600080fd5b5060065461044d90600160a81b900463ffffffff1681565b34801561093e57600080fd5b5061041b61094d3660046141d3565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561098457600080fd5b5061041b610993366004614044565b60126020526000908152604090205481565b3480156109b157600080fd5b506109c56109c0366004614044565b612851565b6040805192835260208301919091520161034c565b3480156109e657600080fd5b50600a5461044d90600160501b900463ffffffff1681565b348015610a0a57600080fd5b50610375612888565b606060048054610a2290614201565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4e90614201565b8015610a9b5780601f10610a7057610100808354040283529160200191610a9b565b820191906000526020600020905b815481529060010190602001808311610a7e57829003601f168201915b5050505050905090565b600e546001600160a01b03163314610ad85760405162461bcd60e51b8152600401610acf9061423c565b60405180910390fd5b610ae06128a8565b610ae86128fa565b600a80548215156101000261ff00199091161790556040517f1d492b98217ff50d005c548e0fa3a96dc38b2bafccaf5baedf42c112bd39fdfb90610b3190831515815260200190565b60405180910390a1610b41612906565b50565b6000610b51338484612915565b5060015b92915050565b600a54610100900460ff16610ba85760405162461bcd60e51b815260206004820152601360248201527214995b185e5cc8185c9948191a5cd8589b1959606a1b6044820152606401610acf565b610bb06128a8565b610bb86128fa565b6703782dace9d900008260a001516001600160401b031611158015610bf257506703782dace9d900008260c001516001600160401b031611155b8015610c0f57506706f05b59d3b20000816001600160401b031611155b610c4a5760405162461bcd60e51b815260206004820152600c60248201526b496e76616c6964206665657360a01b6044820152606401610acf565b6000610c5583612a3a565b60008181526012602052604090205490915015610cab5760405162461bcd60e51b815260206004820152601460248201527350656e64696e672072656c61792065786973747360601b6044820152606401610acf565b60004290506000610cbf8560800151612a7d565b905060006040518060e0016040528060016002811115610ce157610ce1614273565b815233602082015260068054604090920191600160a81b900463ffffffff16906015610d0c8361429f565b91906101000a81548163ffffffff021916908363ffffffff16021790555063ffffffff168152602001866001600160401b031681526020018463ffffffff168152602001838152602001600b548152509050610d6781612a9d565b600085815260126020526040812091909155610d838783612ab0565b90508660800151600954600754610d9a91906142c3565b1015610de45760405162461bcd60e51b8152602060048201526019602482015278496e73756666696369656e7420706f6f6c2062616c616e636560381b6044820152606401610acf565b6000600b5484610df491906142da565b9050876080015160096000828254610e0c91906142da565b9250508190555080600d6000828254610e2591906142da565b9091555050600654610e479061010090046001600160a01b0316333084612b04565b857fa4ca36d112520cced74325c72711f376fe4015665829d879ba21590cb8130be0898585604051610e7b939291906143fc565b60405180910390a2505050505050610e91612906565b5050565b6000610e9f6128a8565b610ea76128fa565b610eb16000612b75565b9050610ebb612906565b90565b6060610ec86128a8565b610eda610ed58484612ab0565b612c03565b9392505050565b6000546001600160a01b0316610ef657600080fd5b60005460405163117c72b360e11b8152600481018390526001600160a01b03909116906322f8e56690602401600060405180830381600087803b158015610f3c57600080fd5b505af1158015610f50573d6000803e3d6000fd5b5050505050565b6000610f64848484612c40565b6001600160a01b038416600090815260026020908152604080832033845290915290205482811015610fe95760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610acf565b610ffd8533610ff886856142c3565b612915565b506001949350505050565b600e546001600160a01b031633146110325760405162461bcd60e51b8152600401610acf9061423c565b61103a6128a8565b6110426128fa565b600a805469ffffffffffffffff00001916620100006001600160401b038481168202929092179283905560405192041681527f958b6b3e25d854f9e658cd5610bd9d184123d203f58f95adf261e0d7d0dd65a590602001610b31565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091610b51918590610ff89086906142da565b6110dd6128a8565b6110e56128fa565b600e60009054906101000a90046001600160a01b03166001600160a01b031663c73a32c36040518163ffffffff1660e01b815260040160206040518083038186803b15801561113357600080fd5b505afa158015611147573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116b9190614428565b600a600e6101000a8154816001600160401b0302191690836001600160401b03160217905550600e60009054906101000a90046001600160a01b03166001600160a01b031663173684c56040518163ffffffff1660e01b815260040160206040518083038186803b1580156111df57600080fd5b505afa1580156111f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112179190614445565b600a60166101000a81548163ffffffff021916908363ffffffff160217905550600e60009054906101000a90046001600160a01b03166001600160a01b0316637998a1c46040518163ffffffff1660e01b815260040160206040518083038186803b15801561128557600080fd5b505afa158015611299573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112bd9190614462565b6011556112c8612906565b565b6112d26128a8565b6112da6128fa565b60006112e583612a3a565b90506112f18183612e18565b60018251600281111561130657611306614273565b146113455760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e481cd95d1d1b1959608a1b6044820152606401610acf565b6000600a60169054906101000a900463ffffffff168360800151611369919061447b565b9050428163ffffffff1611156113b65760405162461bcd60e51b8152602060048201526012602482015271139bdd081cd95d1d1b1958589b19481e595d60721b6044820152606401610acf565b82602001516001600160a01b0316336001600160a01b031614806113ea57506113e18161038461447b565b63ffffffff1642115b6114295760405162461bcd60e51b815260206004820152601060248201526f2737ba1039b637bb903932b630bcb2b960811b6044820152606401610acf565b6040805160e0810190915261149d90806002815260200185602001516001600160a01b03168152602001856040015163ffffffff16815260200185606001516001600160401b03168152602001856080015163ffffffff1681526020018560a0015181526020018560c00151815250612a9d565b60008381526012602052604081209190915560a085015160608501516114d0916114c6916144a3565b8660800151612ea5565b85608001516114df91906142c3565b905060006114ed8486612ecd565b600081815260136020526040902054600a549192506001600160a01b03169060ff16801561152257506001600160a01b038116155b1561153a57611535876040015184612ef8565b61156f565b61156f6001600160a01b038216611555578760400151611557565b815b60065461010090046001600160a01b03169085612fc1565b60006115838860a001518960800151612ea5565b905060008760a001518860c0015161159b91906142da565b60208901519091506001600160a01b03163314156115e35760208801516115de906115c683856142da565b60065461010090046001600160a01b03169190612fc1565b611621565b6020880151600654611605916101009091046001600160a01b03169083612fc1565b6006546116219061010090046001600160a01b03163384612fc1565b600061162d83876142da565b905089608001516009600082825461164591906142c3565b92505081905550806007600082825461165e91906142c3565b92505081905550806008600082825461167791906144c5565b9250508190555081600d600082825461169091906142c3565b9091555061169e9050612ff1565b6116b86116b38a606001518c60800151612ea5565b61302f565b336001600160a01b0316887fcfdda74fce9fedb259e0f0a1ab1550e19b338488ece64976a4639e7fce0293a78b6040516116f29190614506565b60405180910390a350505060009182525060136020526040902080546001600160a01b031916905550610e9191506129069050565b61172f6128a8565b6117376128fa565b8015806117465750600a5460ff165b6117825760405162461bcd60e51b815260206004820152600d60248201526c086c2dce840e6cadcc840cae8d609b1b6044820152606401610acf565b6000670de0b6b3a7640000611795613062565b61179f9085614514565b6117a99190614549565b9050806009546117b991906142da565b600754101561180a5760405162461bcd60e51b815260206004820152601e60248201527f5574696c697a6174696f6e20746f6f206869676820746f2072656d6f766500006044820152606401610acf565b61181433846130da565b806007600082825461182691906142c3565b909155505081156118405761183b3382612ef8565b61185c565b60065461185c9061010090046001600160a01b03163383612fc1565b604080518281526020810185905233917f0c54fc223ffd1a8f36652b5e83db4fff50f5ae151b11ceb56d5499b9f6e1fa18910160405180910390a250610e91612906565b6118a86128a8565b6118b06128fa565b600a5460ff1680156118c157508034145b806118ca575034155b6119165760405162461bcd60e51b815260206004820152601b60248201527f42616420616464206c6971756964697479204574682076616c756500000000006044820152606401610acf565b6000611920613062565b61193283670de0b6b3a7640000614514565b61193c9190614549565b90506119483382613229565b816007600082825461195a91906142da565b909155505034158015906119705750600a5460ff165b156119e357600660019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b1580156119c557600080fd5b505af11580156119d9573d6000803e3d6000fd5b5050505050611a00565b600654611a009061010090046001600160a01b0316333085612b04565b604080518381526020810183905233917f0351f600ef1e31e5e13b4dc27bff4cbde3e9269f0ffc666629ae6cac573eb220910160405180910390a250610b41612906565b6000611a4e6128a8565b611a56613308565b905090565b6000611a656128a8565b611a6d6128fa565b611a7682612b75565b9050611a80612906565b919050565b600a54610100900460ff16611ad25760405162461bcd60e51b815260206004820152601360248201527214995b185e5cc8185c9948191a5cd8589b1959606a1b6044820152606401610acf565b611ada6128a8565b611ae26128fa565b60004290506703782dace9d900008360a001516001600160401b031611158015611b2157506703782dace9d900008360c001516001600160401b031611155b8015611b3e57506706f05b59d3b20000826001600160401b031611155b611b795760405162461bcd60e51b815260206004820152600c60248201526b496e76616c6964206665657360a01b6044820152606401610acf565b6000611b8484612a3a565b60008181526012602052604090205490915015611bda5760405162461bcd60e51b815260206004820152601460248201527350656e64696e672072656c61792065786973747360601b6044820152606401610acf565b6000611be98560800151612a7d565b905060006040518060e0016040528060016002811115611c0b57611c0b614273565b815233602082015260068054604090920191600160a81b900463ffffffff16906015611c368361429f565b91906101000a81548163ffffffff021916908363ffffffff16021790555063ffffffff168152602001866001600160401b031681526020018563ffffffff168152602001838152602001600b5481525090506000611c948783612ab0565b9050611c9f82612a9d565b600085815260126020526040812091909155611cbb8584612ecd565b6000818152601360205260409020549091506001600160a01b031615611d1d5760405162461bcd60e51b8152602060048201526017602482015276052656c61792063616e6e6f74206265207370656420757604c1b6044820152606401610acf565b8760800151600954600754611d3291906142c3565b1015611d7c5760405162461bcd60e51b8152602060048201526019602482015278496e73756666696369656e7420706f6f6c2062616c616e636560381b6044820152606401610acf565b6000600b5485611d8c91906142da565b90506000611dc08a60c001518b60a001518760600151611dac91906144a3565b611db691906144a3565b8b60800151612ea5565b90506000818b60800151611dd491906142c3565b905082600d6000828254611de891906142da565b909155505060808b015160098054600090611e049084906142da565b9091555050600084815260136020526040902080546001600160a01b03191633908117909155611e529030611e3986856142da565b60065461010090046001600160a01b0316929190612b04565b600a5460ff1615611e7057611e6b8b6040015182612ef8565b611e92565b60408b0151600654611e92916101009091046001600160a01b03169083612fc1565b877fa4ca36d112520cced74325c72711f376fe4015665829d879ba21590cb8130be08c8888604051611ec6939291906143fc565b60405180910390a2336001600160a01b0316887ff98cddc88bc965917007822b05056cb92bc9ddf0f8bcc61678400cb78313bb4b88604051611f089190614506565b60405180910390a3505050505050505050610e91612906565b600e546001600160a01b03163314611f4b5760405162461bcd60e51b8152600401610acf9061423c565b611f536128a8565b611f5b6128fa565b600e80546001600160a01b0319166001600160a01b0383169081179091556040805133815260208101929092527f485a12424bd0c2c66a131c2681cb6c743b9573af3ae5f3014ef6ce7f55ab01929101610b31565b606060058054610a2290614201565b3360009081526002602090815260408083206001600160a01b0386168452909152812054828110156120415760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610acf565b6120503385610ff886856142c3565b5060019392505050565b6000610b51338484612c40565b606034156120b75760405162461bcd60e51b815260206004820152601b60248201527f4f6e6c79206d756c746963616c6c207769746820302076616c756500000000006044820152606401610acf565b816001600160401b038111156120cf576120cf613e1a565b60405190808252806020026020018201604052801561210257816020015b60608152602001906001900390816120ed5790505b50905060005b8281101561220557600080308686858181106121265761212661456b565b90506020028101906121389190614581565b6040516121469291906145ce565b600060405180830381855af49150503d8060008114612181576040519150601f19603f3d011682016040523d82523d6000602084013e612186565b606091505b5091509150816121d25760448151101561219f57600080fd5b600481019050808060200190518101906121b991906145de565b60405162461bcd60e51b8152600401610acf9190613d90565b808484815181106121e5576121e561456b565b6020026020010181905250505080806121fd9061467f565b915050612108565b5092915050565b6122146128a8565b61221c6128fa565b600e5460408051632e68f21360e21b815290516000926001600160a01b03169163b9a3c84c916004808301926020929190829003018186803b15801561226157600080fd5b505afa158015612275573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612299919061469a565b6040516302abf57960e61b815275536b696e6e794f7074696d69737469634f7261636c6560501b60048201529091506001600160a01b0382169063aafd5e409060240160206040518083038186803b1580156122f457600080fd5b505afa158015612308573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061232c919061469a565b601080546001600160a01b0319166001600160a01b039283161790556040516302abf57960e61b81526453746f726560d81b60048201529082169063aafd5e409060240160206040518083038186803b15801561238857600080fd5b505afa15801561239c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c0919061469a565b600f80546001600160a01b0319166001600160a01b03928316908117909155600654604051635b97aadd60e01b8152610100909104909216600483015290635b97aadd9060240160206040518083038186803b15801561241f57600080fd5b505afa158015612433573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061245791906146b7565b51600b55506112c8612906565b600061246e6128a8565b6124766128fa565b610eb1613062565b6124866128a8565b61248e6128fa565b600061249983612a3a565b90506124a58183612e18565b60006124b18284612ecd565b9050600a60169054906101000a900463ffffffff1683608001516124d5919061447b565b63ffffffff16421080156124fb57506001835160028111156124f9576124f9614273565b145b801561251c57506000818152601360205260409020546001600160a01b0316155b6125625760405162461bcd60e51b8152602060048201526017602482015276052656c61792063616e6e6f74206265207370656420757604c1b6044820152606401610acf565b600081815260136020526040812080546001600160a01b0319163317905560c085015160a086015160608601516125a7929161259d916144a3565b6114c691906144a3565b905060008186608001516125bb91906142c3565b600a5490915060ff16156125f9576006546125e69061010090046001600160a01b0316333084612b04565b6125f4866040015182612ef8565b61261d565b604086015160065461261d916101009091046001600160a01b031690339084612b04565b336001600160a01b0316847ff98cddc88bc965917007822b05056cb92bc9ddf0f8bcc61678400cb78313bb4b876040516126579190614506565b60405180910390a350505050610e91612906565b6126736128a8565b61267b6128fa565b42600a54608083015161269b91600160b01b900463ffffffff169061447b565b63ffffffff16116126de5760405162461bcd60e51b815260206004820152600d60248201526c50617374206c6976656e65737360981b6044820152606401610acf565b6001815160028111156126f3576126f3614273565b146127315760405162461bcd60e51b815260206004820152600e60248201526d4e6f742064697370757461626c6560901b6044820152606401610acf565b600061273c83612a3a565b90506127488183612e18565b60006127548484612ab0565b905060006127798460200151338660a001518760c0015161277487612c03565b613378565b90508360a001518460c0015161278f91906142da565b600d60008282546127a091906142c3565b90915550506080850151600980546000906127bc9084906142c3565b9091555050600083815260126020526040812055801561281057336127e085612a9d565b60405185907f29751133c2d0a0ea7a9da312248b12ef10ac4c20f4e3ab5eebbb80d853b3836790600090a4612846565b3361281a85612a9d565b60405185907f14173c4d3bd95e34f5c8f78729323444c9272bd21051e70045b64ed48f65818390600090a45b505050610e91612906565b60008061285c6128a8565b6128646128fa565b61286e6000612b75565b61287784612b75565b91509150612883612906565b915091565b6128906128a8565b6128986128fa565b6128a061369d565b6112c8612906565b60065460ff166112c85760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610acf565b6006805460ff19169055565b6006805460ff19166001179055565b6001600160a01b0383166129775760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610acf565b6001600160a01b0382166129d85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610acf565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600654604051600091612a6091849161010090046001600160a01b0316906020016146f8565b604051602081830303815290604052805190602001209050919050565b600a54600090610b5590600160701b90046001600160401b031683612ea5565b600081604051602001612a609190614506565b60008282604001518360600151600660019054906101000a90046001600160a01b0316604051602001612ae69493929190614720565b60405160208183030381529060405280519060200120905092915050565b6040516001600160a01b0380851660248301528316604482015260648101829052612b6f9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613760565b50505050565b6000612b7f61369d565b60008060085413612b91576000612b95565b6008545b905060008160095485612ba891906142da565b612bb291906142da565b9050600082600754612bc491906142da565b905080612bdd5750670de0b6b3a7640000949350505050565b80612bf083670de0b6b3a7640000614514565b612bfa9190614549565b95945050505050565b6060610b5560405180602001604052806000815250604051806040016040528060098152602001680e4cad8c2f290c2e6d60bb1b81525084613832565b6001600160a01b038316612ca45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610acf565b6001600160a01b038216612d065760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610acf565b6001600160a01b03831660009081526001602052604090205481811015612d7e5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610acf565b612d8882826142c3565b6001600160a01b038086166000908152600160205260408082209390935590851681529081208054849290612dbe9084906142da565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612e0a91815260200190565b60405180910390a350505050565b612e2181612a9d565b60008381526012602052604090205414610e91576040805162461bcd60e51b81526020600482015260248101919091527f4861736865642072656c617920706172616d7320646f206e6f74206d6174636860448201527f206578697374696e672072656c6179206861736820666f72206465706f7369746064820152608401610acf565b6000670de0b6b3a7640000612ec3836001600160401b038616614514565b610eda9190614549565b6000828260600151604051602001612ae69291909182526001600160401b0316602082015260400190565b6001600160a01b0382163b15612f2457600654610e919061010090046001600160a01b03168383612fc1565b600654604051632e1a7d4d60e01b8152600481018390526101009091046001600160a01b031690632e1a7d4d90602401600060405180830381600087803b158015612f6e57600080fd5b505af1158015612f82573d6000803e3d6000fd5b50506040516001600160a01b038516925083156108fc02915083906000818181858888f19350505050158015612fbc573d6000803e3d6000fd5b505050565b6040516001600160a01b038316602482015260448101829052612fbc90849063a9059cbb60e01b90606401612b38565b6000612ffb613308565b905080600c5461300b91906142c3565b600c5550600a805463ffffffff60501b1916600160501b4263ffffffff1602179055565b80600c600082825461304191906142da565b92505081905550806008600082825461305a91906144c5565b909155505050565b600061306d60035490565b61307e5750670de0b6b3a764000090565b613086612ff1565b61308e61369d565b6000600c546008546007546130a391906144c5565b6130ad9190614765565b90506130b860035490565b6130ca82670de0b6b3a7640000614514565b6130d49190614549565b91505090565b6001600160a01b03821661313a5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610acf565b6001600160a01b038216600090815260016020526040902054818110156131ae5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610acf565b6131b882826142c3565b6001600160a01b038416600090815260016020526040812091909155600380548492906131e69084906142c3565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001612a2d565b6001600160a01b03821661327f5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610acf565b806003600082825461329191906142da565b90915550506001600160a01b038216600090815260016020526040812080548392906132be9084906142da565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600a546000908190670de0b6b3a764000090600160501b900463ffffffff164261333291906142c3565b600a54600c54613351916201000090046001600160401b031690614514565b61335b9190614514565b6133659190614549565b9050600c548110611a8057600c546130d4565b60008061338585856142da565b6010546006549192506133aa9161010090046001600160a01b03908116911683613878565b6010546011546001600160a01b039091169063af355d1e904286600660019054906101000a90046001600160a01b031660008b600a60169054906101000a900463ffffffff168f670de0b6b3a76400006040518a63ffffffff1660e01b815260040161341e999897969594939291906147a4565b602060405180830381600087803b15801561343857600080fd5b505af1925050508015613468575060408051601f3d908101601f1916820190925261346591810190614462565b60015b6134b5576006546134889061010090046001600160a01b03168883612fc1565b6010546006546134ab916001600160a01b03610100909204821691166000613878565b6000915050612bfa565b818110156135105760006134c982846142c3565b6006549091506134e89061010090046001600160a01b03168a83612fc1565b60105460065461350b916001600160a01b03610100909204821691166000613878565b819250505b5060408051610160810182526001600160a01b03898116825260006020830181905260065461010090049091169282019290925260608101829052670de0b6b3a7640000608082015260a08101829052600a5460c0820190600160b01b900463ffffffff164261358091906142da565b81526000602082015260400161359688856142c3565b815260208101889052600a54600160b01b900463ffffffff9081166040909201919091526006549192506135df9161010090046001600160a01b031690339030908690612b0416565b601054600654613601916001600160a01b036101009092048216911684613878565b60105460115460405163139c641960e31b81526001600160a01b0390921691639ce320c89161363c914290899087908e90309060040161480f565b602060405180830381600087803b15801561365657600080fd5b505af115801561366a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061368e9190614462565b50600198975050505050505050565b600d546006546040516370a0823160e01b81523060048201526000929161010090046001600160a01b0316906370a082319060240160206040518083038186803b1580156136ea57600080fd5b505afa1580156136fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137229190614462565b61372c91906142c3565b9050600754811115610b415760075461374590826142c3565b600860008282546137569190614765565b9091555050600755565b60006137b5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661399c9092919063ffffffff16565b805190915015612fbc57808060200190518101906137d39190614908565b612fbc5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610acf565b6060600061384085856139b3565b9050848161384d856139f5565b60405160200161385f93929190614925565b6040516020818303038152906040529150509392505050565b8015806139015750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e9060440160206040518083038186803b1580156138c757600080fd5b505afa1580156138db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138ff9190614462565b155b61396c5760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b6064820152608401610acf565b6040516001600160a01b038316602482015260448101829052612fbc90849063095ea7b360e01b90606401612b38565b60606139ab8484600085613a35565b949350505050565b8151606090156139e457816040516020016139ce9190614968565b6040516020818303038152906040529050610b55565b816040516020016139ce919061499c565b6060613a04608083901c613b5d565b613a0d83613b5d565b6040805160208101939093528201526060016040516020818303038152906040529050919050565b606082471015613a965760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610acf565b843b613ae45760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610acf565b600080866001600160a01b03168587604051613b0091906149c1565b60006040518083038185875af1925050503d8060008114613b3d576040519150601f19603f3d011682016040523d82523d6000602084013e613b42565b606091505b5091509150613b52828286613cff565b979650505050505050565b6000808260001c9050806fffffffffffffffffffffffffffffffff169050806801000000000000000002811777ffffffffffffffff0000000000000000ffffffffffffffff169050806401000000000281177bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16905080620100000281177dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff169050806101000281177eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff1690508060100281177f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f16905060006008827f08080808080808080808080808080808080808080808080808080808080808081681613c8157613c81614533565b0460047f040404040404040404040404040404040404040404040404040404040404040484160460027f020202020202020202020202020202020202020202020202020202020202020285160417166027029091017f3030303030303030303030303030303030303030303030303030303030303030019392505050565b60608315613d0e575081610eda565b825115613d1e5782518084602001fd5b8160405162461bcd60e51b8152600401610acf9190613d90565b60005b83811015613d53578181015183820152602001613d3b565b83811115612b6f5750506000910152565b60008151808452613d7c816020860160208601613d38565b601f01601f19169290920160200192915050565b602081526000610eda6020830184613d64565b8015158114610b4157600080fd5b600060208284031215613dc357600080fd5b8135610eda81613da3565b6001600160a01b0381168114610b4157600080fd5b8035611a8081613dce565b60008060408385031215613e0157600080fd5b8235613e0c81613dce565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715613e5257613e52613e1a565b60405290565b6001600160401b0381168114610b4157600080fd5b8035611a8081613e58565b63ffffffff81168114610b4157600080fd5b8035611a8081613e78565b6000610100808385031215613ea957600080fd5b604051908101906001600160401b0382118183101715613ecb57613ecb613e1a565b816040528092508335815260208401359150613ee682613e58565b816020820152613ef860408501613de3565b6040820152613f0960608501613de3565b606082015260808401356080820152613f2460a08501613e6d565b60a0820152613f3560c08501613e6d565b60c0820152613f4660e08501613e8a565b60e0820152505092915050565b6000806101208385031215613f6757600080fd5b613f718484613e95565b9150610100830135613f8281613e58565b809150509250929050565b6000808284036101e0811215613fa257600080fd5b613fac8585613e95565b925060e060ff1982011215613fc057600080fd5b50613fc9613e30565b61010084013560038110613fdc57600080fd5b8152613feb6101208501613de3565b6020820152613ffd6101408501613e8a565b604082015261400f6101608501613e6d565b60608201526140216101808501613e8a565b60808201526101a084013560a08201526101c09093013560c08401525092909150565b60006020828403121561405657600080fd5b5035919050565b60008060006060848603121561407257600080fd5b833561407d81613dce565b9250602084013561408d81613dce565b929592945050506040919091013590565b6000602082840312156140b057600080fd5b8135610eda81613e58565b600080604083850312156140ce57600080fd5b823591506020830135613f8281613da3565b6000602082840312156140f257600080fd5b8135610eda81613dce565b6000806020838503121561411057600080fd5b82356001600160401b038082111561412757600080fd5b818501915085601f83011261413b57600080fd5b81358181111561414a57600080fd5b8660208260051b850101111561415f57600080fd5b60209290920196919550909350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156141c657603f198886030184526141b4858351613d64565b94509285019290850190600101614198565b5092979650505050505050565b600080604083850312156141e657600080fd5b82356141f181613dce565b91506020830135613f8281613dce565b600181811c9082168061421557607f821691505b6020821081141561423657634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526017908201527f43616c6c6572206e6f74206272696467652061646d696e000000000000000000604082015260600190565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600063ffffffff808316818114156142b9576142b9614289565b6001019392505050565b6000828210156142d5576142d5614289565b500390565b600082198211156142ed576142ed614289565b500190565b8051825260208101516001600160401b0380821660208501526040830151915060018060a01b03808316604086015280606085015116606086015250608083015160808501528060a08401511660a08501528060c08401511660c0850152505063ffffffff60e08201511660e08301525050565b80516003811061438657634e487b7160e01b600052602160045260246000fd5b82526020818101516001600160a01b031690830152604080820151906143b39084018263ffffffff169052565b5060608101516143ce60608401826001600160401b03169052565b5060808101516143e6608084018263ffffffff169052565b5060a0818101519083015260c090810151910152565b610200810161440b82866142f2565b614419610100830185614366565b826101e0830152949350505050565b60006020828403121561443a57600080fd5b8151610eda81613e58565b60006020828403121561445757600080fd5b8151610eda81613e78565b60006020828403121561447457600080fd5b5051919050565b600063ffffffff80831681851680830382111561449a5761449a614289565b01949350505050565b60006001600160401b0380831681851680830382111561449a5761449a614289565b600080821280156001600160ff1b03849003851316156144e7576144e7614289565b600160ff1b839003841281161561450057614500614289565b50500190565b60e08101610b558284614366565b600081600019048311821515161561452e5761452e614289565b500290565b634e487b7160e01b600052601260045260246000fd5b60008261456657634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b6000808335601e1984360301811261459857600080fd5b8301803591506001600160401b038211156145b257600080fd5b6020019150368190038213156145c757600080fd5b9250929050565b8183823760009101908152919050565b6000602082840312156145f057600080fd5b81516001600160401b038082111561460757600080fd5b818401915084601f83011261461b57600080fd5b81518181111561462d5761462d613e1a565b604051601f8201601f19908116603f0116810190838211818310171561465557614655613e1a565b8160405282815287602084870101111561466e57600080fd5b613b52836020830160208801613d38565b600060001982141561469357614693614289565b5060010190565b6000602082840312156146ac57600080fd5b8151610eda81613dce565b6000602082840312156146c957600080fd5b604051602081018181106001600160401b03821117156146eb576146eb613e1a565b6040529151825250919050565b610120810161470782856142f2565b6001600160a01b03929092166101009190910152919050565b610160810161472f82876142f2565b63ffffffff949094166101008201526001600160401b03929092166101208301526001600160a01b031661014090910152919050565b60008083128015600160ff1b85018412161561478357614783614289565b6001600160ff1b038401831381161561479e5761479e614289565b50500390565b60006101208b835263ffffffff808c1660208501528160408501526147cb8285018c613d64565b6001600160a01b039a8b166060860152608085019990995260a084019790975250509290931660c083015290931660e0840152610100909201919091529392505050565b600061020088835263ffffffff8816602084015280604084015261483581840188613d64565b91505061484e6060830186516001600160a01b03169052565b60208501516001600160a01b03811660808401525060408501516001600160a01b03811660a084015250606085015180151560c084015250608085015160e083015260a0850151610100818185015260c08701519150610120828186015260e0880151925061014083818701528289015161016087015281890151610180870152808901516101a0870152505050506148f36101c08301856001600160a01b03169052565b6001600160a01b0383166101e0830152613b52565b60006020828403121561491a57600080fd5b8151610eda81613da3565b60008451614937818460208901613d38565b84519083019061494b818360208901613d38565b845191019061495e818360208801613d38565b0195945050505050565b600b60fa1b815260008251614984816001850160208701613d38565b601d60f91b6001939091019283015250600201919050565b600082516149ae818460208701613d38565b601d60f91b920191825250600101919050565b600082516149d3818460208701613d38565b919091019291505056fea2646970667358221220c4b31e1ef9e4af0fa1497d6ce4afbdaab6148e447ddff6e73ffbd5b0e4aa00c664736f6c63430008090033",
1707
+ "linkReferences": {},
1708
+ "deployedLinkReferences": {}
1709
+ }