@dolomite-exchange/dolomite-margin 0.2.6 → 0.2.7

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 (200) hide show
  1. package/build/contracts/Account.json +11 -11
  2. package/build/contracts/Actions.json +11 -11
  3. package/build/contracts/Address.json +1 -1
  4. package/build/contracts/Admin.json +23 -23
  5. package/build/contracts/AdminImpl.json +35 -307
  6. package/build/contracts/AdvancedMath.json +7 -7
  7. package/build/contracts/AmmRebalancerProxy.json +577 -621
  8. package/build/contracts/AmmRebalancerProxyV1.json +78 -32
  9. package/build/contracts/Babylonian.json +1 -1
  10. package/build/contracts/Bits.json +9 -9
  11. package/build/contracts/Cache.json +13 -13
  12. package/build/contracts/ChainlinkPriceOracleV1.json +16 -16
  13. package/build/contracts/Context.json +1 -1
  14. package/build/contracts/CustomTestToken.json +9 -9
  15. package/build/contracts/Decimal.json +9 -9
  16. package/build/contracts/DelayedMultiSig.json +9 -9
  17. package/build/contracts/DolomiteAmmERC20.json +11 -11
  18. package/build/contracts/DolomiteAmmFactory.json +14 -52
  19. package/build/contracts/DolomiteAmmLibrary.json +24 -24
  20. package/build/contracts/DolomiteAmmPair.json +27 -27
  21. package/build/contracts/DolomiteAmmRouterProxy.json +30 -363
  22. package/build/contracts/DolomiteMargin.json +21 -67
  23. package/build/contracts/DoubleExponentInterestSetter.json +15 -21
  24. package/build/contracts/EnumerableSet.json +7 -7
  25. package/build/contracts/ErroringOmiseToken.json +9 -9
  26. package/build/contracts/ErroringToken.json +10 -10
  27. package/build/contracts/Events.json +17 -17
  28. package/build/contracts/ExcessivelySafeCall.json +35 -35
  29. package/build/contracts/Exchange.json +15 -15
  30. package/build/contracts/Expiry.json +36 -36
  31. package/build/contracts/Getters.json +33 -33
  32. package/build/contracts/IAutoTrader.json +9 -9
  33. package/build/contracts/ICallee.json +7 -7
  34. package/build/contracts/IChainlinkAggregator.json +5 -5
  35. package/build/contracts/IDolomiteAmmERC20.json +5 -5
  36. package/build/contracts/IDolomiteAmmFactory.json +9 -9
  37. package/build/contracts/IDolomiteAmmPair.json +9 -9
  38. package/build/contracts/IDolomiteMargin.json +23 -23
  39. package/build/contracts/IERC20.json +1 -1
  40. package/build/contracts/IERC20Detailed.json +5 -5
  41. package/build/contracts/IExchangeWrapper.json +5 -5
  42. package/build/contracts/IExpiry.json +9 -9
  43. package/build/contracts/IInterestSetter.json +7 -7
  44. package/build/contracts/ILiquidationCallback.json +7 -7
  45. package/build/contracts/IMakerOracle.json +5 -5
  46. package/build/contracts/IOasisDex.json +5 -5
  47. package/build/contracts/IPriceOracle.json +7 -7
  48. package/build/contracts/IRecyclable.json +9 -9
  49. package/build/contracts/ITransferProxy.json +5 -5
  50. package/build/contracts/IUniswapV2Callee.json +5 -5
  51. package/build/contracts/IUniswapV2Factory.json +5 -5
  52. package/build/contracts/IUniswapV2Pair.json +5 -5
  53. package/build/contracts/IUniswapV2Router.json +5 -5
  54. package/build/contracts/IWETH.json +5 -5
  55. package/build/contracts/Interest.json +15 -15
  56. package/build/contracts/LiquidateOrVaporizeImpl.json +32 -83
  57. package/build/contracts/LiquidatorProxyHelper.json +23 -23
  58. package/build/contracts/LiquidatorProxyV1.json +30 -36
  59. package/build/contracts/LiquidatorProxyV1WithAmm.json +49 -105
  60. package/build/contracts/Math.json +1 -1
  61. package/build/contracts/Migrations.json +8 -14
  62. package/build/contracts/Monetary.json +7 -7
  63. package/build/contracts/MultiCall.json +8 -14
  64. package/build/contracts/MultiSig.json +7 -7
  65. package/build/contracts/OmiseToken.json +8 -8
  66. package/build/contracts/OnlyDolomiteMargin.json +11 -11
  67. package/build/contracts/Operation.json +15 -15
  68. package/build/contracts/OperationImpl.json +39 -47
  69. package/build/contracts/Ownable.json +1 -1
  70. package/build/contracts/PartiallyDelayedMultiSig.json +9 -9
  71. package/build/contracts/PayableProxy.json +17 -23
  72. package/build/contracts/Permission.json +11 -11
  73. package/build/contracts/PolynomialInterestSetter.json +13 -13
  74. package/build/contracts/RecyclableTokenProxy.json +25 -25
  75. package/build/contracts/ReentrancyGuard.json +1 -1
  76. package/build/contracts/Require.json +7 -7
  77. package/build/contracts/SafeERC20.json +1 -1
  78. package/build/contracts/SafeETH.json +7 -7
  79. package/build/contracts/SafeLiquidationCallback.json +17 -17
  80. package/build/contracts/SafeMath.json +1 -1
  81. package/build/contracts/SignedOperationProxy.json +21 -104
  82. package/build/contracts/SimpleFeeOwner.json +18 -63
  83. package/build/contracts/State.json +9 -9
  84. package/build/contracts/Storage.json +37 -37
  85. package/build/contracts/TestAmmRebalancerProxy.json +32 -58
  86. package/build/contracts/TestAutoTrader.json +22 -22
  87. package/build/contracts/TestBtcUsdChainlinkAggregator.json +10 -10
  88. package/build/contracts/TestCallee.json +19 -19
  89. package/build/contracts/TestChainlinkPriceOracleV1.json +10 -94
  90. package/build/contracts/TestCounter.json +7 -7
  91. package/build/contracts/TestDaiUsdChainlinkAggregator.json +11 -11
  92. package/build/contracts/TestDolomiteMargin.json +22 -22
  93. package/build/contracts/TestDoubleExponentInterestSetter.json +10 -10
  94. package/build/contracts/TestEthUsdChainlinkAggregator.json +11 -11
  95. package/build/contracts/TestExchangeWrapper.json +28 -28
  96. package/build/contracts/TestInterestSetter.json +13 -13
  97. package/build/contracts/TestLib.json +22 -22
  98. package/build/contracts/TestLinkUsdChainlinkAggregator.json +11 -11
  99. package/build/contracts/TestLiquidateCallback.json +719 -719
  100. package/build/contracts/TestLiquidationCallback.json +13 -13
  101. package/build/contracts/TestLrcEthChainlinkAggregator.json +11 -11
  102. package/build/contracts/TestMakerOracle.json +10 -10
  103. package/build/contracts/TestMaticUsdChainlinkAggregator.json +10 -10
  104. package/build/contracts/TestOasisDex.json +12 -12
  105. package/build/contracts/TestOperationImpl.json +14 -14
  106. package/build/contracts/TestPolynomialInterestSetter.json +10 -10
  107. package/build/contracts/TestPriceAggregator.json +9 -9
  108. package/build/contracts/TestPriceOracle.json +13 -13
  109. package/build/contracts/TestRecyclableToken.json +9 -9
  110. package/build/contracts/TestSimpleCallee.json +15 -15
  111. package/build/contracts/TestToken.json +9 -9
  112. package/build/contracts/TestTrader.json +17 -17
  113. package/build/contracts/TestUniswapAmmRebalancerProxy.json +16 -16
  114. package/build/contracts/TestUsdcUsdChainlinkAggregator.json +11 -11
  115. package/build/contracts/TestWETH.json +9 -9
  116. package/build/contracts/Time.json +9 -9
  117. package/build/contracts/Token.json +9 -9
  118. package/build/contracts/TokenA.json +10 -10
  119. package/build/contracts/TokenB.json +10 -10
  120. package/build/contracts/TokenC.json +10 -10
  121. package/build/contracts/TokenD.json +10 -10
  122. package/build/contracts/TokenE.json +10 -10
  123. package/build/contracts/TokenF.json +10 -10
  124. package/build/contracts/TransferProxy.json +22 -28
  125. package/build/contracts/TypedSignature.json +9 -9
  126. package/build/contracts/Types.json +9 -9
  127. package/build/contracts/UQ112x112.json +7 -7
  128. package/build/contracts/UniswapV2ERC20.json +7 -7
  129. package/build/contracts/UniswapV2Factory.json +12 -12
  130. package/build/contracts/UniswapV2Library.json +20 -20
  131. package/build/contracts/UniswapV2Pair.json +17 -17
  132. package/build/contracts/UniswapV2Router02.json +16 -16
  133. package/build/contracts/WETH9.json +1 -1
  134. package/contracts/external/amm/DolomiteAmmERC20.sol +135 -0
  135. package/contracts/external/amm/DolomiteAmmFactory.sol +122 -0
  136. package/contracts/external/amm/DolomiteAmmPair.sol +573 -0
  137. package/contracts/external/amm/SimpleFeeOwner.sol +107 -0
  138. package/contracts/external/helpers/LiquidatorProxyHelper.sol +252 -0
  139. package/contracts/external/helpers/OnlyDolomiteMargin.sol +63 -0
  140. package/contracts/external/interestsetters/DoubleExponentInterestSetter.sol +212 -0
  141. package/contracts/external/interestsetters/PolynomialInterestSetter.sol +205 -0
  142. package/contracts/external/interfaces/IChainlinkAggregator.sol +33 -0
  143. package/contracts/external/interfaces/IDolomiteAmmERC20.sol +52 -0
  144. package/contracts/external/interfaces/IDolomiteAmmFactory.sol +42 -0
  145. package/contracts/external/interfaces/IDolomiteAmmPair.sol +116 -0
  146. package/contracts/external/interfaces/IExpiry.sol +70 -0
  147. package/contracts/external/interfaces/IMakerOracle.sol +52 -0
  148. package/contracts/external/interfaces/IOasisDex.sol +326 -0
  149. package/contracts/external/interfaces/ITransferProxy.sol +53 -0
  150. package/contracts/external/interfaces/IUniswapV2Router.sol +134 -0
  151. package/contracts/external/lib/AdvancedMath.sol +23 -0
  152. package/contracts/external/lib/DolomiteAmmLibrary.sol +323 -0
  153. package/contracts/external/lib/TypedSignature.sol +120 -0
  154. package/contracts/external/lib/UQ112x112.sol +22 -0
  155. package/contracts/external/multisig/DelayedMultiSig.sol +206 -0
  156. package/contracts/external/multisig/MultiSig.sol +571 -0
  157. package/contracts/external/multisig/PartiallyDelayedMultiSig.sol +174 -0
  158. package/contracts/external/oracles/ChainlinkPriceOracleV1.sol +197 -0
  159. package/contracts/external/oracles/TestChainlinkPriceOracleV1.sol +98 -0
  160. package/contracts/external/proxies/AmmRebalancerProxyV1.sol +465 -0
  161. package/contracts/external/proxies/DolomiteAmmRouterProxy.sol +877 -0
  162. package/contracts/external/proxies/LiquidatorProxyV1.sol +507 -0
  163. package/contracts/external/proxies/LiquidatorProxyV1WithAmm.sol +574 -0
  164. package/contracts/external/proxies/PayableProxy.sol +146 -0
  165. package/contracts/external/proxies/RecyclableTokenProxy.sol +463 -0
  166. package/contracts/external/proxies/SignedOperationProxy.sol +553 -0
  167. package/contracts/external/proxies/TransferProxy.sol +207 -0
  168. package/contracts/external/traders/Expiry.sol +532 -0
  169. package/contracts/external/uniswap-v2/UniswapV2ERC20.sol +118 -0
  170. package/contracts/external/uniswap-v2/UniswapV2Factory.sol +67 -0
  171. package/contracts/external/uniswap-v2/UniswapV2Pair.sol +283 -0
  172. package/contracts/external/uniswap-v2/UniswapV2Router02.sol +566 -0
  173. package/contracts/external/uniswap-v2/interfaces/IUniswapV2Callee.sol +13 -0
  174. package/contracts/external/uniswap-v2/interfaces/IUniswapV2Factory.sol +18 -0
  175. package/contracts/external/uniswap-v2/interfaces/IUniswapV2Pair.sol +67 -0
  176. package/contracts/external/uniswap-v2/interfaces/IWETH.sol +7 -0
  177. package/contracts/external/uniswap-v2/libraries/SafeETH.sol +29 -0
  178. package/contracts/external/uniswap-v2/libraries/UniswapV2Library.sol +117 -0
  179. package/contracts/external/utils/MultiCall.sol +95 -0
  180. package/contracts/protocol/impl/artifacts/OperationImpl.json +80 -0
  181. package/contracts/protocol/impl/artifacts/OperationImpl_metadata.json +193 -0
  182. package/dist/build/published_contracts/AdminImpl.json +2 -2
  183. package/dist/build/published_contracts/AmmRebalancerProxyV1.json +5 -0
  184. package/dist/build/published_contracts/ChainlinkPriceOracleV1.json +1 -1
  185. package/dist/build/published_contracts/DolomiteAmmFactory.json +1 -1
  186. package/dist/build/published_contracts/DolomiteAmmRouterProxy.json +1 -1
  187. package/dist/build/published_contracts/DoubleExponentInterestSetter.json +2 -2
  188. package/dist/build/published_contracts/Expiry.json +1 -1
  189. package/dist/build/published_contracts/LiquidatorProxyV1.json +1 -1
  190. package/dist/build/published_contracts/LiquidatorProxyV1WithAmm.json +1 -1
  191. package/dist/build/published_contracts/MultiCall.json +1 -1
  192. package/dist/build/published_contracts/PayableProxy.json +2 -2
  193. package/dist/build/published_contracts/SignedOperationProxy.json +2 -2
  194. package/dist/build/published_contracts/SimpleFeeOwner.json +1 -1
  195. package/dist/build/published_contracts/TestUniswapAmmRebalancerProxy.json +140 -0
  196. package/dist/build/published_contracts/TransferProxy.json +1 -1
  197. package/dist/src/lib/Contracts.d.ts +3 -1
  198. package/dist/src/lib/Contracts.js +7 -3
  199. package/dist/src/lib/Contracts.js.map +1 -1
  200. package/package.json +2 -1
@@ -668,15 +668,15 @@
668
668
  "type": "function"
669
669
  }
670
670
  ],
671
- "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_owners\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"_required\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_secondsTimeLocked\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"transactionId\",\"type\":\"uint256\"}],\"name\":\"Confirmation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"transactionId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"confirmationTime\",\"type\":\"uint256\"}],\"name\":\"ConfirmationTimeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"transactionId\",\"type\":\"uint256\"}],\"name\":\"Execution\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"transactionId\",\"type\":\"uint256\"}],\"name\":\"ExecutionFailure\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnerAddition\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnerRemoval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"required\",\"type\":\"uint256\"}],\"name\":\"RequirementChange\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"transactionId\",\"type\":\"uint256\"}],\"name\":\"Revocation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"transactionId\",\"type\":\"uint256\"}],\"name\":\"Submission\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"secondsTimeLocked\",\"type\":\"uint32\"}],\"name\":\"TimeLockChange\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAX_OWNER_COUNT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"addOwner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_required\",\"type\":\"uint256\"}],\"name\":\"changeRequirement\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_secondsTimeLocked\",\"type\":\"uint32\"}],\"name\":\"changeTimeLock\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"transactionId\",\"type\":\"uint256\"}],\"name\":\"confirmTransaction\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"confirmationTimes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"confirmations\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"transactionIds\",\"type\":\"uint256[]\"}],\"name\":\"executeMultipleTransactions\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"transactionId\",\"type\":\"uint256\"}],\"name\":\"executeTransaction\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"transactionId\",\"type\":\"uint256\"}],\"name\":\"getConfirmationCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"transactionId\",\"type\":\"uint256\"}],\"name\":\"getConfirmations\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getOwners\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bool\",\"name\":\"pending\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"executed\",\"type\":\"bool\"}],\"name\":\"getTransactionCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"from\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"to\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"pending\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"executed\",\"type\":\"bool\"}],\"name\":\"getTransactionIds\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"transactionId\",\"type\":\"uint256\"}],\"name\":\"isConfirmed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"owners\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"removeOwner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"replaceOwner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"required\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"transactionId\",\"type\":\"uint256\"}],\"name\":\"revokeConfirmation\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"secondsTimeLocked\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"submitTransaction\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"transactionCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transactions\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"executed\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"dYdX * Multi-Signature Wallet with delay in execution. Allows multiple parties to execute a transaction after a time lock has passed. Adapted from Amir Bandeali's MultiSigWalletWithTimeLock contract. Logic Changes: - Only owners can execute transactions - Require that each transaction succeeds - Added function to execute multiple transactions within the same Ethereum transaction\",\"methods\":{\"addOwner(address)\":{\"params\":{\"owner\":\"Address of new owner.\"}},\"changeRequirement(uint256)\":{\"params\":{\"_required\":\"Number of required confirmations.\"}},\"changeTimeLock(uint32)\":{\"params\":{\"_secondsTimeLocked\":\"Duration needed after a transaction is confirmed and before it becomes executable, in seconds.\"}},\"confirmTransaction(uint256)\":{\"params\":{\"transactionId\":\"Transaction ID.\"}},\"constructor\":{\"params\":{\"_owners\":\"List of initial owners.\",\"_required\":\"Number of required confirmations.\",\"_secondsTimeLocked\":\"Duration needed after a transaction is confirmed and before it becomes executable, in seconds.\"}},\"executeMultipleTransactions(uint256[])\":{\"params\":{\"transactionIds\":\"List of transaction IDs.\"}},\"executeTransaction(uint256)\":{\"params\":{\"transactionId\":\"Transaction ID.\"}},\"getConfirmationCount(uint256)\":{\"params\":{\"transactionId\":\"Transaction ID.\"},\"return\":\"Number of confirmations.\"},\"getConfirmations(uint256)\":{\"params\":{\"transactionId\":\"Transaction ID.\"},\"return\":\"Array of owner addresses.\"},\"getOwners()\":{\"return\":\"Array of owner addresses.\"},\"getTransactionCount(bool,bool)\":{\"params\":{\"executed\":\"Include executed transactions.\",\"pending\":\"Include pending transactions.\"},\"return\":\"Total number of transactions after filters are applied.\"},\"getTransactionIds(uint256,uint256,bool,bool)\":{\"params\":{\"executed\":\"Include executed transactions.\",\"from\":\"Index start position of transaction array.\",\"pending\":\"Include pending transactions.\",\"to\":\"Index end position of transaction array.\"},\"return\":\"Array of transaction IDs.\"},\"isConfirmed(uint256)\":{\"params\":{\"transactionId\":\"Transaction ID.\"},\"return\":\"Confirmation status.\"},\"removeOwner(address)\":{\"params\":{\"owner\":\"Address of owner.\"}},\"replaceOwner(address,address)\":{\"params\":{\"newOwner\":\"Address of new owner.\",\"owner\":\"Address of owner to be replaced.\"}},\"revokeConfirmation(uint256)\":{\"params\":{\"transactionId\":\"Transaction ID.\"}},\"submitTransaction(address,uint256,bytes)\":{\"params\":{\"data\":\"Transaction data payload.\",\"destination\":\"Transaction target address.\",\"value\":\"Transaction ether value.\"},\"return\":\"Transaction ID.\"}},\"title\":\"DelayedMultiSig\"},\"userdoc\":{\"methods\":{\"addOwner(address)\":{\"notice\":\"Allows to add a new owner. Transaction has to be sent by wallet.\"},\"changeRequirement(uint256)\":{\"notice\":\"Allows to change the number of required confirmations. Transaction has to be sent by wallet.\"},\"changeTimeLock(uint32)\":{\"notice\":\"Changes the duration of the time lock for transactions.\"},\"confirmTransaction(uint256)\":{\"notice\":\"Allows an owner to confirm a transaction. Overrides the function in MultiSig.\"},\"constructor\":\"Contract constructor sets initial owners, required number of confirmations, and time lock.\",\"executeMultipleTransactions(uint256[])\":{\"notice\":\"Allows an owner to execute multiple confirmed transactions.\"},\"executeTransaction(uint256)\":{\"notice\":\"Allows an owner to execute a confirmed transaction. Overrides the function in MultiSig.\"},\"getConfirmationCount(uint256)\":{\"notice\":\"Returns number of confirmations of a transaction.\"},\"getConfirmations(uint256)\":{\"notice\":\"Returns array with owner addresses, which confirmed transaction.\"},\"getOwners()\":{\"notice\":\"Returns array of owners.\"},\"getTransactionCount(bool,bool)\":{\"notice\":\"Returns total number of transactions after filers are applied.\"},\"getTransactionIds(uint256,uint256,bool,bool)\":{\"notice\":\"Returns list of transaction IDs in defined range.\"},\"isConfirmed(uint256)\":{\"notice\":\"Returns the confirmation status of a transaction.\"},\"removeOwner(address)\":{\"notice\":\"Allows to remove an owner. Transaction has to be sent by wallet.\"},\"replaceOwner(address,address)\":{\"notice\":\"Allows to replace an owner with a new owner. Transaction has to be sent by wallet.\"},\"revokeConfirmation(uint256)\":{\"notice\":\"Allows an owner to revoke a confirmation for a transaction.\"},\"submitTransaction(address,uint256,bytes)\":{\"notice\":\"Allows an owner to submit and confirm a transaction.\"}}}},\"settings\":{\"compilationTarget\":{\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/multisig/DelayedMultiSig.sol\":\"DelayedMultiSig\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/multisig/DelayedMultiSig.sol\":{\"keccak256\":\"0x22b1c10aee2d03058ef4e3305dad3e16a4f780b8e2748208db2448cbdbf7e752\",\"urls\":[\"bzz-raw://9045fde595f4dfabd89537324626794bfc3a39131066d990f6bcd624b1f87993\",\"dweb:/ipfs/QmY8hwraKTB6eTfKuMTRPwX9tcw6d6xekuryYuzdkwXfaA\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/multisig/MultiSig.sol\":{\"keccak256\":\"0x54f72117575678197a82002a7da22cd696d51ce3c592fb55d8119c8964b28e0e\",\"urls\":[\"bzz-raw://18e9fe2d86bc99a02f171ba2f20a425d3cdacd0252ed5ca6842295aea76f8644\",\"dweb:/ipfs/QmZGQGxvtqPtTwxxGVnvh61T1BQP3Lj78qZ2p1HMZP1qa1\"]}},\"version\":1}",
672
- "bytecode": "0x60806040523480156200001157600080fd5b5060405162002740380380620027408339810160408190526200003491620002fc565b8282815181603282111580156200004b5750818111155b80156200005757508015155b80156200006357508115155b6200008b5760405162461bcd60e51b81526004016200008290620003bf565b60405180910390fd5b60005b8451811015620001725760026000868381518110620000a957fe5b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1615801562000105575060006001600160a01b0316858281518110620000f157fe5b60200260200101516001600160a01b031614155b620001245760405162461bcd60e51b81526004016200008290620003d1565b6001600260008784815181106200013757fe5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790556001016200008e565b50835162000188906003906020870190620001b2565b505050600455506006805463ffffffff191663ffffffff92909216919091179055506200047f9050565b8280548282559060005260206000209081019282156200020a579160200282015b828111156200020a57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190620001d3565b50620002189291506200021c565b5090565b6200024391905b80821115620002185780546001600160a01b031916815560010162000223565b90565b805162000253816200044f565b92915050565b600082601f8301126200026b57600080fd5b8151620002826200027c826200040a565b620003e3565b91508181835260208401935060208101905083856020840282011115620002a857600080fd5b60005b83811015620002d85781620002c1888262000246565b8452506020928301929190910190600101620002ab565b5050505092915050565b8051620002538162000469565b8051620002538162000474565b6000806000606084860312156200031257600080fd5b83516001600160401b038111156200032957600080fd5b620003378682870162000259565b93505060206200034a86828701620002e2565b92505060406200035d86828701620002ef565b9150509250925092565b600062000376600f836200042b565b6e4e4f5f524551554952454d454e545360881b815260200192915050565b6000620003a3600d836200042b565b6c20a62922a0a22cafa7aba722a960991b815260200192915050565b60208082528101620002538162000367565b60208082528101620002538162000394565b6040518181016001600160401b03811182821017156200040257600080fd5b604052919050565b60006001600160401b038211156200042157600080fd5b5060209081020190565b90815260200190565b60006001600160a01b03821662000253565b63ffffffff1690565b6200045a8162000434565b81146200046657600080fd5b50565b6200045a8162000243565b6200045a8162000446565b6122b1806200048f6000396000f3fe608060405234801561001057600080fd5b50600436106101a35760003560e01c8063a029b36b116100ee578063c01a8c8411610097578063d74f8edd11610071578063d74f8edd1461037f578063dc8452cd14610387578063e20056e61461038f578063ee22610b146103a2576101a3565b8063c01a8c8414610346578063c642747414610359578063d38f2d821461036c576101a3565b8063b5dc40c3116100c8578063b5dc40c314610318578063b77bf6001461032b578063ba51a6df14610333576101a3565b8063a029b36b146102d0578063a0e67e2b146102e3578063a8abe69a146102f8576101a3565b8063547415251161015057806380bc148f1161012a57806380bc148f146102875780638b51d13f1461029a5780639ace38c2146102ad576101a3565b806354741525146102415780637065cb4814610261578063784547a714610274576101a3565b80632f54bf6e116101815780632f54bf6e146101f95780633411c81c1461021957806337bd78a01461022c576101a3565b8063025e7c27146101a8578063173825d9146101d157806320ea8d86146101e6575b600080fd5b6101bb6101b6366004611ace565b6103b5565b6040516101c89190611f98565b60405180910390f35b6101e46101df3660046119ac565b6103e9565b005b6101e46101f4366004611ace565b610646565b61020c6102073660046119ac565b610735565b6040516101c8919061200b565b61020c610227366004611aec565b61074a565b61023461076a565b6040516101c891906120f7565b61025461024f366004611a9e565b610776565b6040516101c891906120e9565b6101e461026f3660046119ac565b6107e6565b61020c610282366004611ace565b610985565b6101e4610295366004611a69565b610a1d565b6102546102a8366004611ace565b610a81565b6102c06102bb366004611ace565b610aff565b6040516101c89493929190611fa6565b6101e46102de366004611b6c565b610be8565b6102eb610c72565b6040516101c89190611fe2565b61030b610306366004611b0b565b610ce2565b6040516101c89190611ffa565b6102eb610326366004611ace565b610e13565b610254610fd1565b6101e4610341366004611ace565b610fd7565b6101e4610354366004611ace565b61107f565b610254610367366004611a04565b6111c3565b61025461037a366004611ace565b6111e4565b6102546111f6565b6102546111fb565b6101e461039d3660046119ca565b611201565b6101e46103b0366004611ace565b611454565b600381815481106103c257fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b3330146104115760405162461bcd60e51b815260040161040890612059565b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116600090815260026020526040902054819060ff166104585760405162461bcd60e51b815260040161040890612099565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600260205260408120805460ff191690555b6003547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018110156105b6578273ffffffffffffffffffffffffffffffffffffffff16600382815481106104d657fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1614156105ae57600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810190811061052e57fe5b6000918252602090912001546003805473ffffffffffffffffffffffffffffffffffffffff909216918390811061056157fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506105b6565b600101610486565b50600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01906105e890826117f6565b5060035460045411156106015760035461060190610fd7565b60405173ffffffffffffffffffffffffffffffffffffffff8316907f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9090600090a25050565b3360008181526002602052604090205460ff166106755760405162461bcd60e51b815260040161040890612099565b60008281526001602090815260408083203380855292529091205483919060ff166106b25760405162461bcd60e51b815260040161040890612089565b600084815260208190526040902060030154849060ff16156106e65760405162461bcd60e51b815260040161040890612079565b6000858152600160209081526040808320338085529252808320805460ff191690555187927ff6a317157440607f36269043eb55f1287a5a19ba2216afeab88cd46cbcfb88e991a35050505050565b60026020526000908152604090205460ff1681565b600160209081526000928352604080842090915290825290205460ff1681565b60065463ffffffff1681565b600080805b6005548110156107dc578480156107a4575060008181526020819052604090206003015460ff16155b806107c857508380156107c8575060008181526020819052604090206003015460ff165b156107d4576001820191505b60010161077b565b5090505b92915050565b3330146108055760405162461bcd60e51b815260040161040890612059565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260026020526040902054819060ff161561084d5760405162461bcd60e51b815260040161040890612029565b8173ffffffffffffffffffffffffffffffffffffffff81166108815760405162461bcd60e51b8152600401610408906120a9565b6003805490506001016004546032821115801561089e5750818111155b80156108a957508015155b80156108b457508115155b6108d05760405162461bcd60e51b815260040161040890612049565b73ffffffffffffffffffffffffffffffffffffffff8516600081815260026020526040808220805460ff1916600190811790915560038054918201815583527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001684179055517ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d9190a25050505050565b600080805b600354811015610a1157600084815260016020526040812060038054919291849081106109b357fe5b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16835282019290925260400190205460ff16156109f4576001820191505b600454821415610a0957600192505050610a18565b60010161098a565b5060009150505b919050565b3360008181526002602052604090205460ff16610a4c5760405162461bcd60e51b815260040161040890612099565b60005b8251811015610a7c57610a74838281518110610a6757fe5b6020026020010151611454565b600101610a4f565b505050565b600080805b600354811015610af85760008481526001602052604081206003805491929184908110610aaf57fe5b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16835282019290925260400190205460ff1615610af0576001820191505b600101610a86565b5092915050565b60006020818152918152604090819020805460018083015460028085018054875161010095821615959095027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff011691909104601f810188900488028401880190965285835273ffffffffffffffffffffffffffffffffffffffff90931695909491929190830182828015610bd55780601f10610baa57610100808354040283529160200191610bd5565b820191906000526020600020905b815481529060010190602001808311610bb857829003601f168201915b5050506003909301549192505060ff1684565b333014610c075760405162461bcd60e51b815260040161040890612059565b600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff83161790556040517f8b01775fda0a3eb53a1e7b3a734cd346761d446aeb72745e17951c0f0ec2b16490610c679083906120f7565b60405180910390a150565b60606003805480602002602001604051908101604052809291908181526020018280548015610cd757602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610cac575b505050505090505b90565b606080600554604051908082528060200260200182016040528015610d11578160200160208202803883390190505b5090506000805b600554811015610d9257858015610d41575060008181526020819052604090206003015460ff16155b80610d655750848015610d65575060008181526020819052604090206003015460ff165b15610d8a5780838381518110610d7757fe5b6020026020010181815250506001820191505b600101610d18565b6060888803604051908082528060200260200182016040528015610dc0578160200160208202803883390190505b5090508891505b87821015610e0757838281518110610ddb57fe5b6020026020010151818a840381518110610df157fe5b6020908102919091010152600190910190610dc7565b98975050505050505050565b606080600380549050604051908082528060200260200182016040528015610e45578160200160208202803883390190505b5090506000805b600354811015610f3c5760008581526001602052604081206003805491929184908110610e7557fe5b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16835282019290925260400190205460ff1615610f345760038181548110610ebc57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838381518110610ef357fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506001820191505b600101610e4c565b606082604051908082528060200260200182016040528015610f68578160200160208202803883390190505b509050600091505b82821015610fc857838281518110610f8457fe5b6020026020010151818381518110610f9857fe5b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910190910152600190910190610f70565b95945050505050565b60055481565b333014610ff65760405162461bcd60e51b815260040161040890612059565b600354816032821180159061100b5750818111155b801561101657508015155b801561102157508115155b61103d5760405162461bcd60e51b815260040161040890612049565b60048390556040517fa3f1ee9126a074d9326c682f561767f710e927faa811f7a99829d49dc421797a906110729085906120e9565b60405180910390a1505050565b3360008181526002602052604090205460ff166110ae5760405162461bcd60e51b815260040161040890612099565b600082815260208190526040902054829073ffffffffffffffffffffffffffffffffffffffff166110f15760405162461bcd60e51b815260040161040890612069565b60008381526001602090815260408083203380855292529091205484919060ff161561112f5760405162461bcd60e51b8152600401610408906120b9565b8461113981610985565b156111565760405162461bcd60e51b8152600401610408906120d9565b6000868152600160208181526040808420338086529252808420805460ff1916909317909255905188927f4a504a94899432a9846e1aa406dceb1bcfd538bb839071d49d1e5e23f5be30ef91a36111ac86610985565b156111bb576111bb8642611661565b505050505050565b6000806111d18585856116b0565b90506111dc8161107f565b949350505050565b60076020526000908152604090205481565b603281565b60045481565b3330146112205760405162461bcd60e51b815260040161040890612059565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260026020526040902054829060ff166112675760405162461bcd60e51b815260040161040890612099565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260026020526040902054829060ff16156112af5760405162461bcd60e51b815260040161040890612029565b8273ffffffffffffffffffffffffffffffffffffffff81166112e35760405162461bcd60e51b8152600401610408906120a9565b60005b60035481101561139f578573ffffffffffffffffffffffffffffffffffffffff166003828154811061131457fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16141561139757846003828154811061134a57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061139f565b6001016112e6565b5073ffffffffffffffffffffffffffffffffffffffff808616600081815260026020526040808220805460ff1990811690915593881682528082208054909416600117909355915190917f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9091a260405173ffffffffffffffffffffffffffffffffffffffff8516907ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d90600090a25050505050565b3360008181526002602052604090205460ff166114835760405162461bcd60e51b815260040161040890612099565b600082815260208190526040902060030154829060ff16156114b75760405162461bcd60e51b815260040161040890612079565b826114c181610985565b6114dd5760405162461bcd60e51b815260040161040890612039565b600654600085815260076020526040902054859163ffffffff16014210156115175760405162461bcd60e51b8152600401610408906120c9565b600085815260208181526040808320600381018054600160ff19909116811790915581548183015460028085018054875161010096821615969096027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff011691909104601f810188900488028501880190965285845293969561160e9573ffffffffffffffffffffffffffffffffffffffff909316949193919083908301828280156116045780601f106115d957610100808354040283529160200191611604565b820191906000526020600020905b8154815290600101906020018083116115e757829003601f168201915b50505050506117d3565b90508061162d5760405162461bcd60e51b815260040161040890612019565b60405187907f33e13ecb54c3076d8e8bb8c2881800a4d972b792045ffae98fdf46df365fed7590600090a250505050505050565b600082815260076020526040908190208290555182907f0b237afe65f1514fd7ea3f923ea4fe792bdd07000a912b6cd1602a8e7f573c8d906116a49084906120e9565b60405180910390a25050565b60008373ffffffffffffffffffffffffffffffffffffffff81166116e65760405162461bcd60e51b8152600401610408906120a9565b6005546040805160808101825273ffffffffffffffffffffffffffffffffffffffff8881168252602080830189815283850189815260006060860181905287815280845295909520845181547fffffffffffffffffffffffff0000000000000000000000000000000000000000169416939093178355516001830155925180519293919261177a926002850192019061181a565b50606091909101516003909101805460ff191691151591909117905560058054600101905560405181907fc0ba8fe4b176c1714197d43b9cc6bcf797a4a7461c5fe8d0ef6e184ae7601e5190600090a295945050505050565b6000806040516020840160008287838a8c6187965a03f198975050505050505050565b815481835581811115610a7c57600083815260209020610a7c918101908301611898565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061185b57805160ff1916838001178555611888565b82800160010185558215611888579182015b8281111561188857825182559160200191906001019061186d565b50611894929150611898565b5090565b610cdf91905b80821115611894576000815560010161189e565b80356107e08161223c565b600082601f8301126118ce57600080fd5b81356118e16118dc8261212c565b612105565b9150818183526020840193506020810190508385602084028201111561190657600080fd5b60005b83811015611932578161191c8882611996565b8452506020928301929190910190600101611909565b5050505092915050565b80356107e081612253565b600082601f83011261195857600080fd5b81356119666118dc8261214d565b9150808252602083016020830185838301111561198257600080fd5b61198d8382846121d8565b50505092915050565b80356107e08161225c565b80356107e081612265565b6000602082840312156119be57600080fd5b60006111dc84846118b2565b600080604083850312156119dd57600080fd5b60006119e985856118b2565b92505060206119fa858286016118b2565b9150509250929050565b600080600060608486031215611a1957600080fd5b6000611a2586866118b2565b9350506020611a3686828701611996565b925050604084013567ffffffffffffffff811115611a5357600080fd5b611a5f86828701611947565b9150509250925092565b600060208284031215611a7b57600080fd5b813567ffffffffffffffff811115611a9257600080fd5b6111dc848285016118bd565b60008060408385031215611ab157600080fd5b6000611abd858561193c565b92505060206119fa8582860161193c565b600060208284031215611ae057600080fd5b60006111dc8484611996565b60008060408385031215611aff57600080fd5b60006119e98585611996565b60008060008060808587031215611b2157600080fd5b6000611b2d8787611996565b9450506020611b3e87828801611996565b9350506040611b4f8782880161193c565b9250506060611b608782880161193c565b91505092959194509250565b600060208284031215611b7e57600080fd5b60006111dc84846119a1565b6000611b968383611baa565b505060200190565b6000611b968383611f86565b611bb3816121a6565b82525050565b6000611bc482612199565b611bce818561219d565b9350611bd983612193565b8060005b83811015611c07578151611bf18882611b8a565b9750611bfc83612193565b925050600101611bdd565b509495945050505050565b6000611c1d82612199565b611c27818561219d565b9350611c3283612193565b8060005b83811015611c07578151611c4a8882611b9e565b9750611c5583612193565b925050600101611c36565b611bb3816121b1565b6000611c7482612199565b611c7e818561219d565b9350611c8e8185602086016121e4565b611c9781612214565b9093019392505050565b6000611cae600b8361219d565b7f54585f5245564552544544000000000000000000000000000000000000000000815260200192915050565b6000611ce7600c8361219d565b7f4f574e45525f4558495354530000000000000000000000000000000000000000815260200192915050565b6000611d2060168361219d565b7f54585f4e4f545f46554c4c595f434f4e4649524d454400000000000000000000815260200192915050565b6000611d59600f8361219d565b7f4e4f5f524551554952454d454e54530000000000000000000000000000000000815260200192915050565b6000611d92600b8361219d565b7f4f4e4c595f57414c4c4554000000000000000000000000000000000000000000815260200192915050565b6000611dcb601a8361219d565b7f5452414e53414354494f4e5f444f45535f4e4f545f4558495354000000000000815260200192915050565b6000611e04601c8361219d565b7f5452414e53414354494f4e5f414c52454144595f455845435554454400000000815260200192915050565b6000611e3d60198361219d565b7f5452414e53414354494f4e5f4e4f545f434f4e4649524d454400000000000000815260200192915050565b6000611e7660148361219d565b7f4f574e45525f444f45535f4e4f545f4558495354000000000000000000000000815260200192915050565b6000611eaf600f8361219d565b7f414444524553535f49535f4e554c4c0000000000000000000000000000000000815260200192915050565b6000611ee8601d8361219d565b7f5452414e53414354494f4e5f414c52454144595f434f4e4649524d4544000000815260200192915050565b6000611f2160148361219d565b7f54494d455f4c4f434b5f494e434f4d504c455445000000000000000000000000815260200192915050565b6000611f5a60128361219d565b7f54585f46554c4c595f434f4e4649524d45440000000000000000000000000000815260200192915050565b611bb381610cdf565b611bb3816121cf565b602081016107e08284611baa565b60808101611fb48287611baa565b611fc16020830186611f86565b8181036040830152611fd38185611c69565b9050610fc86060830184611c60565b60208082528101611ff38184611bb9565b9392505050565b60208082528101611ff38184611c12565b602081016107e08284611c60565b602080825281016107e081611ca1565b602080825281016107e081611cda565b602080825281016107e081611d13565b602080825281016107e081611d4c565b602080825281016107e081611d85565b602080825281016107e081611dbe565b602080825281016107e081611df7565b602080825281016107e081611e30565b602080825281016107e081611e69565b602080825281016107e081611ea2565b602080825281016107e081611edb565b602080825281016107e081611f14565b602080825281016107e081611f4d565b602081016107e08284611f86565b602081016107e08284611f8f565b60405181810167ffffffffffffffff8111828210171561212457600080fd5b604052919050565b600067ffffffffffffffff82111561214357600080fd5b5060209081020190565b600067ffffffffffffffff82111561216457600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b60200190565b5190565b90815260200190565b60006107e0826121b6565b151590565b73ffffffffffffffffffffffffffffffffffffffff1690565b63ffffffff1690565b82818337506000910152565b60005b838110156121ff5781810151838201526020016121e7565b8381111561220e576000848401525b50505050565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b612245816121a6565b811461225057600080fd5b50565b612245816121b1565b61224581610cdf565b612245816121cf56fea365627a7a72315820b59c33ce6e1dbcf73211ea79f47e9b125f913f0cc021d8bbf875ca067483cc306c6578706572696d656e74616cf564736f6c63430005100040",
673
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101a35760003560e01c8063a029b36b116100ee578063c01a8c8411610097578063d74f8edd11610071578063d74f8edd1461037f578063dc8452cd14610387578063e20056e61461038f578063ee22610b146103a2576101a3565b8063c01a8c8414610346578063c642747414610359578063d38f2d821461036c576101a3565b8063b5dc40c3116100c8578063b5dc40c314610318578063b77bf6001461032b578063ba51a6df14610333576101a3565b8063a029b36b146102d0578063a0e67e2b146102e3578063a8abe69a146102f8576101a3565b8063547415251161015057806380bc148f1161012a57806380bc148f146102875780638b51d13f1461029a5780639ace38c2146102ad576101a3565b806354741525146102415780637065cb4814610261578063784547a714610274576101a3565b80632f54bf6e116101815780632f54bf6e146101f95780633411c81c1461021957806337bd78a01461022c576101a3565b8063025e7c27146101a8578063173825d9146101d157806320ea8d86146101e6575b600080fd5b6101bb6101b6366004611ace565b6103b5565b6040516101c89190611f98565b60405180910390f35b6101e46101df3660046119ac565b6103e9565b005b6101e46101f4366004611ace565b610646565b61020c6102073660046119ac565b610735565b6040516101c8919061200b565b61020c610227366004611aec565b61074a565b61023461076a565b6040516101c891906120f7565b61025461024f366004611a9e565b610776565b6040516101c891906120e9565b6101e461026f3660046119ac565b6107e6565b61020c610282366004611ace565b610985565b6101e4610295366004611a69565b610a1d565b6102546102a8366004611ace565b610a81565b6102c06102bb366004611ace565b610aff565b6040516101c89493929190611fa6565b6101e46102de366004611b6c565b610be8565b6102eb610c72565b6040516101c89190611fe2565b61030b610306366004611b0b565b610ce2565b6040516101c89190611ffa565b6102eb610326366004611ace565b610e13565b610254610fd1565b6101e4610341366004611ace565b610fd7565b6101e4610354366004611ace565b61107f565b610254610367366004611a04565b6111c3565b61025461037a366004611ace565b6111e4565b6102546111f6565b6102546111fb565b6101e461039d3660046119ca565b611201565b6101e46103b0366004611ace565b611454565b600381815481106103c257fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b3330146104115760405162461bcd60e51b815260040161040890612059565b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116600090815260026020526040902054819060ff166104585760405162461bcd60e51b815260040161040890612099565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600260205260408120805460ff191690555b6003547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018110156105b6578273ffffffffffffffffffffffffffffffffffffffff16600382815481106104d657fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1614156105ae57600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810190811061052e57fe5b6000918252602090912001546003805473ffffffffffffffffffffffffffffffffffffffff909216918390811061056157fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506105b6565b600101610486565b50600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01906105e890826117f6565b5060035460045411156106015760035461060190610fd7565b60405173ffffffffffffffffffffffffffffffffffffffff8316907f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9090600090a25050565b3360008181526002602052604090205460ff166106755760405162461bcd60e51b815260040161040890612099565b60008281526001602090815260408083203380855292529091205483919060ff166106b25760405162461bcd60e51b815260040161040890612089565b600084815260208190526040902060030154849060ff16156106e65760405162461bcd60e51b815260040161040890612079565b6000858152600160209081526040808320338085529252808320805460ff191690555187927ff6a317157440607f36269043eb55f1287a5a19ba2216afeab88cd46cbcfb88e991a35050505050565b60026020526000908152604090205460ff1681565b600160209081526000928352604080842090915290825290205460ff1681565b60065463ffffffff1681565b600080805b6005548110156107dc578480156107a4575060008181526020819052604090206003015460ff16155b806107c857508380156107c8575060008181526020819052604090206003015460ff165b156107d4576001820191505b60010161077b565b5090505b92915050565b3330146108055760405162461bcd60e51b815260040161040890612059565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260026020526040902054819060ff161561084d5760405162461bcd60e51b815260040161040890612029565b8173ffffffffffffffffffffffffffffffffffffffff81166108815760405162461bcd60e51b8152600401610408906120a9565b6003805490506001016004546032821115801561089e5750818111155b80156108a957508015155b80156108b457508115155b6108d05760405162461bcd60e51b815260040161040890612049565b73ffffffffffffffffffffffffffffffffffffffff8516600081815260026020526040808220805460ff1916600190811790915560038054918201815583527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001684179055517ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d9190a25050505050565b600080805b600354811015610a1157600084815260016020526040812060038054919291849081106109b357fe5b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16835282019290925260400190205460ff16156109f4576001820191505b600454821415610a0957600192505050610a18565b60010161098a565b5060009150505b919050565b3360008181526002602052604090205460ff16610a4c5760405162461bcd60e51b815260040161040890612099565b60005b8251811015610a7c57610a74838281518110610a6757fe5b6020026020010151611454565b600101610a4f565b505050565b600080805b600354811015610af85760008481526001602052604081206003805491929184908110610aaf57fe5b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16835282019290925260400190205460ff1615610af0576001820191505b600101610a86565b5092915050565b60006020818152918152604090819020805460018083015460028085018054875161010095821615959095027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff011691909104601f810188900488028401880190965285835273ffffffffffffffffffffffffffffffffffffffff90931695909491929190830182828015610bd55780601f10610baa57610100808354040283529160200191610bd5565b820191906000526020600020905b815481529060010190602001808311610bb857829003601f168201915b5050506003909301549192505060ff1684565b333014610c075760405162461bcd60e51b815260040161040890612059565b600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff83161790556040517f8b01775fda0a3eb53a1e7b3a734cd346761d446aeb72745e17951c0f0ec2b16490610c679083906120f7565b60405180910390a150565b60606003805480602002602001604051908101604052809291908181526020018280548015610cd757602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610cac575b505050505090505b90565b606080600554604051908082528060200260200182016040528015610d11578160200160208202803883390190505b5090506000805b600554811015610d9257858015610d41575060008181526020819052604090206003015460ff16155b80610d655750848015610d65575060008181526020819052604090206003015460ff165b15610d8a5780838381518110610d7757fe5b6020026020010181815250506001820191505b600101610d18565b6060888803604051908082528060200260200182016040528015610dc0578160200160208202803883390190505b5090508891505b87821015610e0757838281518110610ddb57fe5b6020026020010151818a840381518110610df157fe5b6020908102919091010152600190910190610dc7565b98975050505050505050565b606080600380549050604051908082528060200260200182016040528015610e45578160200160208202803883390190505b5090506000805b600354811015610f3c5760008581526001602052604081206003805491929184908110610e7557fe5b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16835282019290925260400190205460ff1615610f345760038181548110610ebc57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838381518110610ef357fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506001820191505b600101610e4c565b606082604051908082528060200260200182016040528015610f68578160200160208202803883390190505b509050600091505b82821015610fc857838281518110610f8457fe5b6020026020010151818381518110610f9857fe5b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910190910152600190910190610f70565b95945050505050565b60055481565b333014610ff65760405162461bcd60e51b815260040161040890612059565b600354816032821180159061100b5750818111155b801561101657508015155b801561102157508115155b61103d5760405162461bcd60e51b815260040161040890612049565b60048390556040517fa3f1ee9126a074d9326c682f561767f710e927faa811f7a99829d49dc421797a906110729085906120e9565b60405180910390a1505050565b3360008181526002602052604090205460ff166110ae5760405162461bcd60e51b815260040161040890612099565b600082815260208190526040902054829073ffffffffffffffffffffffffffffffffffffffff166110f15760405162461bcd60e51b815260040161040890612069565b60008381526001602090815260408083203380855292529091205484919060ff161561112f5760405162461bcd60e51b8152600401610408906120b9565b8461113981610985565b156111565760405162461bcd60e51b8152600401610408906120d9565b6000868152600160208181526040808420338086529252808420805460ff1916909317909255905188927f4a504a94899432a9846e1aa406dceb1bcfd538bb839071d49d1e5e23f5be30ef91a36111ac86610985565b156111bb576111bb8642611661565b505050505050565b6000806111d18585856116b0565b90506111dc8161107f565b949350505050565b60076020526000908152604090205481565b603281565b60045481565b3330146112205760405162461bcd60e51b815260040161040890612059565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260026020526040902054829060ff166112675760405162461bcd60e51b815260040161040890612099565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260026020526040902054829060ff16156112af5760405162461bcd60e51b815260040161040890612029565b8273ffffffffffffffffffffffffffffffffffffffff81166112e35760405162461bcd60e51b8152600401610408906120a9565b60005b60035481101561139f578573ffffffffffffffffffffffffffffffffffffffff166003828154811061131457fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16141561139757846003828154811061134a57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061139f565b6001016112e6565b5073ffffffffffffffffffffffffffffffffffffffff808616600081815260026020526040808220805460ff1990811690915593881682528082208054909416600117909355915190917f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9091a260405173ffffffffffffffffffffffffffffffffffffffff8516907ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d90600090a25050505050565b3360008181526002602052604090205460ff166114835760405162461bcd60e51b815260040161040890612099565b600082815260208190526040902060030154829060ff16156114b75760405162461bcd60e51b815260040161040890612079565b826114c181610985565b6114dd5760405162461bcd60e51b815260040161040890612039565b600654600085815260076020526040902054859163ffffffff16014210156115175760405162461bcd60e51b8152600401610408906120c9565b600085815260208181526040808320600381018054600160ff19909116811790915581548183015460028085018054875161010096821615969096027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff011691909104601f810188900488028501880190965285845293969561160e9573ffffffffffffffffffffffffffffffffffffffff909316949193919083908301828280156116045780601f106115d957610100808354040283529160200191611604565b820191906000526020600020905b8154815290600101906020018083116115e757829003601f168201915b50505050506117d3565b90508061162d5760405162461bcd60e51b815260040161040890612019565b60405187907f33e13ecb54c3076d8e8bb8c2881800a4d972b792045ffae98fdf46df365fed7590600090a250505050505050565b600082815260076020526040908190208290555182907f0b237afe65f1514fd7ea3f923ea4fe792bdd07000a912b6cd1602a8e7f573c8d906116a49084906120e9565b60405180910390a25050565b60008373ffffffffffffffffffffffffffffffffffffffff81166116e65760405162461bcd60e51b8152600401610408906120a9565b6005546040805160808101825273ffffffffffffffffffffffffffffffffffffffff8881168252602080830189815283850189815260006060860181905287815280845295909520845181547fffffffffffffffffffffffff0000000000000000000000000000000000000000169416939093178355516001830155925180519293919261177a926002850192019061181a565b50606091909101516003909101805460ff191691151591909117905560058054600101905560405181907fc0ba8fe4b176c1714197d43b9cc6bcf797a4a7461c5fe8d0ef6e184ae7601e5190600090a295945050505050565b6000806040516020840160008287838a8c6187965a03f198975050505050505050565b815481835581811115610a7c57600083815260209020610a7c918101908301611898565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061185b57805160ff1916838001178555611888565b82800160010185558215611888579182015b8281111561188857825182559160200191906001019061186d565b50611894929150611898565b5090565b610cdf91905b80821115611894576000815560010161189e565b80356107e08161223c565b600082601f8301126118ce57600080fd5b81356118e16118dc8261212c565b612105565b9150818183526020840193506020810190508385602084028201111561190657600080fd5b60005b83811015611932578161191c8882611996565b8452506020928301929190910190600101611909565b5050505092915050565b80356107e081612253565b600082601f83011261195857600080fd5b81356119666118dc8261214d565b9150808252602083016020830185838301111561198257600080fd5b61198d8382846121d8565b50505092915050565b80356107e08161225c565b80356107e081612265565b6000602082840312156119be57600080fd5b60006111dc84846118b2565b600080604083850312156119dd57600080fd5b60006119e985856118b2565b92505060206119fa858286016118b2565b9150509250929050565b600080600060608486031215611a1957600080fd5b6000611a2586866118b2565b9350506020611a3686828701611996565b925050604084013567ffffffffffffffff811115611a5357600080fd5b611a5f86828701611947565b9150509250925092565b600060208284031215611a7b57600080fd5b813567ffffffffffffffff811115611a9257600080fd5b6111dc848285016118bd565b60008060408385031215611ab157600080fd5b6000611abd858561193c565b92505060206119fa8582860161193c565b600060208284031215611ae057600080fd5b60006111dc8484611996565b60008060408385031215611aff57600080fd5b60006119e98585611996565b60008060008060808587031215611b2157600080fd5b6000611b2d8787611996565b9450506020611b3e87828801611996565b9350506040611b4f8782880161193c565b9250506060611b608782880161193c565b91505092959194509250565b600060208284031215611b7e57600080fd5b60006111dc84846119a1565b6000611b968383611baa565b505060200190565b6000611b968383611f86565b611bb3816121a6565b82525050565b6000611bc482612199565b611bce818561219d565b9350611bd983612193565b8060005b83811015611c07578151611bf18882611b8a565b9750611bfc83612193565b925050600101611bdd565b509495945050505050565b6000611c1d82612199565b611c27818561219d565b9350611c3283612193565b8060005b83811015611c07578151611c4a8882611b9e565b9750611c5583612193565b925050600101611c36565b611bb3816121b1565b6000611c7482612199565b611c7e818561219d565b9350611c8e8185602086016121e4565b611c9781612214565b9093019392505050565b6000611cae600b8361219d565b7f54585f5245564552544544000000000000000000000000000000000000000000815260200192915050565b6000611ce7600c8361219d565b7f4f574e45525f4558495354530000000000000000000000000000000000000000815260200192915050565b6000611d2060168361219d565b7f54585f4e4f545f46554c4c595f434f4e4649524d454400000000000000000000815260200192915050565b6000611d59600f8361219d565b7f4e4f5f524551554952454d454e54530000000000000000000000000000000000815260200192915050565b6000611d92600b8361219d565b7f4f4e4c595f57414c4c4554000000000000000000000000000000000000000000815260200192915050565b6000611dcb601a8361219d565b7f5452414e53414354494f4e5f444f45535f4e4f545f4558495354000000000000815260200192915050565b6000611e04601c8361219d565b7f5452414e53414354494f4e5f414c52454144595f455845435554454400000000815260200192915050565b6000611e3d60198361219d565b7f5452414e53414354494f4e5f4e4f545f434f4e4649524d454400000000000000815260200192915050565b6000611e7660148361219d565b7f4f574e45525f444f45535f4e4f545f4558495354000000000000000000000000815260200192915050565b6000611eaf600f8361219d565b7f414444524553535f49535f4e554c4c0000000000000000000000000000000000815260200192915050565b6000611ee8601d8361219d565b7f5452414e53414354494f4e5f414c52454144595f434f4e4649524d4544000000815260200192915050565b6000611f2160148361219d565b7f54494d455f4c4f434b5f494e434f4d504c455445000000000000000000000000815260200192915050565b6000611f5a60128361219d565b7f54585f46554c4c595f434f4e4649524d45440000000000000000000000000000815260200192915050565b611bb381610cdf565b611bb3816121cf565b602081016107e08284611baa565b60808101611fb48287611baa565b611fc16020830186611f86565b8181036040830152611fd38185611c69565b9050610fc86060830184611c60565b60208082528101611ff38184611bb9565b9392505050565b60208082528101611ff38184611c12565b602081016107e08284611c60565b602080825281016107e081611ca1565b602080825281016107e081611cda565b602080825281016107e081611d13565b602080825281016107e081611d4c565b602080825281016107e081611d85565b602080825281016107e081611dbe565b602080825281016107e081611df7565b602080825281016107e081611e30565b602080825281016107e081611e69565b602080825281016107e081611ea2565b602080825281016107e081611edb565b602080825281016107e081611f14565b602080825281016107e081611f4d565b602081016107e08284611f86565b602081016107e08284611f8f565b60405181810167ffffffffffffffff8111828210171561212457600080fd5b604052919050565b600067ffffffffffffffff82111561214357600080fd5b5060209081020190565b600067ffffffffffffffff82111561216457600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b60200190565b5190565b90815260200190565b60006107e0826121b6565b151590565b73ffffffffffffffffffffffffffffffffffffffff1690565b63ffffffff1690565b82818337506000910152565b60005b838110156121ff5781810151838201526020016121e7565b8381111561220e576000848401525b50505050565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b612245816121a6565b811461225057600080fd5b50565b612245816121b1565b61224581610cdf565b612245816121cf56fea365627a7a72315820b59c33ce6e1dbcf73211ea79f47e9b125f913f0cc021d8bbf875ca067483cc306c6578706572696d656e74616cf564736f6c63430005100040",
671
+ "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_owners\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"_required\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_secondsTimeLocked\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"transactionId\",\"type\":\"uint256\"}],\"name\":\"Confirmation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"transactionId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"confirmationTime\",\"type\":\"uint256\"}],\"name\":\"ConfirmationTimeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"transactionId\",\"type\":\"uint256\"}],\"name\":\"Execution\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"transactionId\",\"type\":\"uint256\"}],\"name\":\"ExecutionFailure\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnerAddition\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnerRemoval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"required\",\"type\":\"uint256\"}],\"name\":\"RequirementChange\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"transactionId\",\"type\":\"uint256\"}],\"name\":\"Revocation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"transactionId\",\"type\":\"uint256\"}],\"name\":\"Submission\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"secondsTimeLocked\",\"type\":\"uint32\"}],\"name\":\"TimeLockChange\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAX_OWNER_COUNT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"addOwner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_required\",\"type\":\"uint256\"}],\"name\":\"changeRequirement\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_secondsTimeLocked\",\"type\":\"uint32\"}],\"name\":\"changeTimeLock\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"transactionId\",\"type\":\"uint256\"}],\"name\":\"confirmTransaction\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"confirmationTimes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"confirmations\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"transactionIds\",\"type\":\"uint256[]\"}],\"name\":\"executeMultipleTransactions\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"transactionId\",\"type\":\"uint256\"}],\"name\":\"executeTransaction\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"transactionId\",\"type\":\"uint256\"}],\"name\":\"getConfirmationCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"transactionId\",\"type\":\"uint256\"}],\"name\":\"getConfirmations\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getOwners\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bool\",\"name\":\"pending\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"executed\",\"type\":\"bool\"}],\"name\":\"getTransactionCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"from\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"to\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"pending\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"executed\",\"type\":\"bool\"}],\"name\":\"getTransactionIds\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"transactionId\",\"type\":\"uint256\"}],\"name\":\"isConfirmed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"owners\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"removeOwner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"replaceOwner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"required\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"transactionId\",\"type\":\"uint256\"}],\"name\":\"revokeConfirmation\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"secondsTimeLocked\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"submitTransaction\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"transactionCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transactions\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"executed\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"dYdX * Multi-Signature Wallet with delay in execution. Allows multiple parties to execute a transaction after a time lock has passed. Adapted from Amir Bandeali's MultiSigWalletWithTimeLock contract. Logic Changes: - Only owners can execute transactions - Require that each transaction succeeds - Added function to execute multiple transactions within the same Ethereum transaction\",\"methods\":{\"addOwner(address)\":{\"params\":{\"owner\":\"Address of new owner.\"}},\"changeRequirement(uint256)\":{\"params\":{\"_required\":\"Number of required confirmations.\"}},\"changeTimeLock(uint32)\":{\"params\":{\"_secondsTimeLocked\":\"Duration needed after a transaction is confirmed and before it becomes executable, in seconds.\"}},\"confirmTransaction(uint256)\":{\"params\":{\"transactionId\":\"Transaction ID.\"}},\"constructor\":{\"params\":{\"_owners\":\"List of initial owners.\",\"_required\":\"Number of required confirmations.\",\"_secondsTimeLocked\":\"Duration needed after a transaction is confirmed and before it becomes executable, in seconds.\"}},\"executeMultipleTransactions(uint256[])\":{\"params\":{\"transactionIds\":\"List of transaction IDs.\"}},\"executeTransaction(uint256)\":{\"params\":{\"transactionId\":\"Transaction ID.\"}},\"getConfirmationCount(uint256)\":{\"params\":{\"transactionId\":\"Transaction ID.\"},\"return\":\"Number of confirmations.\"},\"getConfirmations(uint256)\":{\"params\":{\"transactionId\":\"Transaction ID.\"},\"return\":\"Array of owner addresses.\"},\"getOwners()\":{\"return\":\"Array of owner addresses.\"},\"getTransactionCount(bool,bool)\":{\"params\":{\"executed\":\"Include executed transactions.\",\"pending\":\"Include pending transactions.\"},\"return\":\"Total number of transactions after filters are applied.\"},\"getTransactionIds(uint256,uint256,bool,bool)\":{\"params\":{\"executed\":\"Include executed transactions.\",\"from\":\"Index start position of transaction array.\",\"pending\":\"Include pending transactions.\",\"to\":\"Index end position of transaction array.\"},\"return\":\"Array of transaction IDs.\"},\"isConfirmed(uint256)\":{\"params\":{\"transactionId\":\"Transaction ID.\"},\"return\":\"Confirmation status.\"},\"removeOwner(address)\":{\"params\":{\"owner\":\"Address of owner.\"}},\"replaceOwner(address,address)\":{\"params\":{\"newOwner\":\"Address of new owner.\",\"owner\":\"Address of owner to be replaced.\"}},\"revokeConfirmation(uint256)\":{\"params\":{\"transactionId\":\"Transaction ID.\"}},\"submitTransaction(address,uint256,bytes)\":{\"params\":{\"data\":\"Transaction data payload.\",\"destination\":\"Transaction target address.\",\"value\":\"Transaction ether value.\"},\"return\":\"Transaction ID.\"}},\"title\":\"DelayedMultiSig\"},\"userdoc\":{\"methods\":{\"addOwner(address)\":{\"notice\":\"Allows to add a new owner. Transaction has to be sent by wallet.\"},\"changeRequirement(uint256)\":{\"notice\":\"Allows to change the number of required confirmations. Transaction has to be sent by wallet.\"},\"changeTimeLock(uint32)\":{\"notice\":\"Changes the duration of the time lock for transactions.\"},\"confirmTransaction(uint256)\":{\"notice\":\"Allows an owner to confirm a transaction. Overrides the function in MultiSig.\"},\"constructor\":\"Contract constructor sets initial owners, required number of confirmations, and time lock.\",\"executeMultipleTransactions(uint256[])\":{\"notice\":\"Allows an owner to execute multiple confirmed transactions.\"},\"executeTransaction(uint256)\":{\"notice\":\"Allows an owner to execute a confirmed transaction. Overrides the function in MultiSig.\"},\"getConfirmationCount(uint256)\":{\"notice\":\"Returns number of confirmations of a transaction.\"},\"getConfirmations(uint256)\":{\"notice\":\"Returns array with owner addresses, which confirmed transaction.\"},\"getOwners()\":{\"notice\":\"Returns array of owners.\"},\"getTransactionCount(bool,bool)\":{\"notice\":\"Returns total number of transactions after filers are applied.\"},\"getTransactionIds(uint256,uint256,bool,bool)\":{\"notice\":\"Returns list of transaction IDs in defined range.\"},\"isConfirmed(uint256)\":{\"notice\":\"Returns the confirmation status of a transaction.\"},\"removeOwner(address)\":{\"notice\":\"Allows to remove an owner. Transaction has to be sent by wallet.\"},\"replaceOwner(address,address)\":{\"notice\":\"Allows to replace an owner with a new owner. Transaction has to be sent by wallet.\"},\"revokeConfirmation(uint256)\":{\"notice\":\"Allows an owner to revoke a confirmation for a transaction.\"},\"submitTransaction(address,uint256,bytes)\":{\"notice\":\"Allows an owner to submit and confirm a transaction.\"}}}},\"settings\":{\"compilationTarget\":{\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/multisig/DelayedMultiSig.sol\":\"DelayedMultiSig\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/multisig/DelayedMultiSig.sol\":{\"keccak256\":\"0x22b1c10aee2d03058ef4e3305dad3e16a4f780b8e2748208db2448cbdbf7e752\",\"urls\":[\"bzz-raw://9045fde595f4dfabd89537324626794bfc3a39131066d990f6bcd624b1f87993\",\"dweb:/ipfs/QmY8hwraKTB6eTfKuMTRPwX9tcw6d6xekuryYuzdkwXfaA\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/multisig/MultiSig.sol\":{\"keccak256\":\"0x54f72117575678197a82002a7da22cd696d51ce3c592fb55d8119c8964b28e0e\",\"urls\":[\"bzz-raw://18e9fe2d86bc99a02f171ba2f20a425d3cdacd0252ed5ca6842295aea76f8644\",\"dweb:/ipfs/QmZGQGxvtqPtTwxxGVnvh61T1BQP3Lj78qZ2p1HMZP1qa1\"]}},\"version\":1}",
672
+ "bytecode": "0x60806040523480156200001157600080fd5b5060405162002740380380620027408339810160408190526200003491620002fc565b8282815181603282111580156200004b5750818111155b80156200005757508015155b80156200006357508115155b6200008b5760405162461bcd60e51b81526004016200008290620003bf565b60405180910390fd5b60005b8451811015620001725760026000868381518110620000a957fe5b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1615801562000105575060006001600160a01b0316858281518110620000f157fe5b60200260200101516001600160a01b031614155b620001245760405162461bcd60e51b81526004016200008290620003d1565b6001600260008784815181106200013757fe5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790556001016200008e565b50835162000188906003906020870190620001b2565b505050600455506006805463ffffffff191663ffffffff92909216919091179055506200047f9050565b8280548282559060005260206000209081019282156200020a579160200282015b828111156200020a57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190620001d3565b50620002189291506200021c565b5090565b6200024391905b80821115620002185780546001600160a01b031916815560010162000223565b90565b805162000253816200044f565b92915050565b600082601f8301126200026b57600080fd5b8151620002826200027c826200040a565b620003e3565b91508181835260208401935060208101905083856020840282011115620002a857600080fd5b60005b83811015620002d85781620002c1888262000246565b8452506020928301929190910190600101620002ab565b5050505092915050565b8051620002538162000469565b8051620002538162000474565b6000806000606084860312156200031257600080fd5b83516001600160401b038111156200032957600080fd5b620003378682870162000259565b93505060206200034a86828701620002e2565b92505060406200035d86828701620002ef565b9150509250925092565b600062000376600f836200042b565b6e4e4f5f524551554952454d454e545360881b815260200192915050565b6000620003a3600d836200042b565b6c20a62922a0a22cafa7aba722a960991b815260200192915050565b60208082528101620002538162000367565b60208082528101620002538162000394565b6040518181016001600160401b03811182821017156200040257600080fd5b604052919050565b60006001600160401b038211156200042157600080fd5b5060209081020190565b90815260200190565b60006001600160a01b03821662000253565b63ffffffff1690565b6200045a8162000434565b81146200046657600080fd5b50565b6200045a8162000243565b6200045a8162000446565b6122b1806200048f6000396000f3fe608060405234801561001057600080fd5b50600436106101a35760003560e01c8063a029b36b116100ee578063c01a8c8411610097578063d74f8edd11610071578063d74f8edd1461037f578063dc8452cd14610387578063e20056e61461038f578063ee22610b146103a2576101a3565b8063c01a8c8414610346578063c642747414610359578063d38f2d821461036c576101a3565b8063b5dc40c3116100c8578063b5dc40c314610318578063b77bf6001461032b578063ba51a6df14610333576101a3565b8063a029b36b146102d0578063a0e67e2b146102e3578063a8abe69a146102f8576101a3565b8063547415251161015057806380bc148f1161012a57806380bc148f146102875780638b51d13f1461029a5780639ace38c2146102ad576101a3565b806354741525146102415780637065cb4814610261578063784547a714610274576101a3565b80632f54bf6e116101815780632f54bf6e146101f95780633411c81c1461021957806337bd78a01461022c576101a3565b8063025e7c27146101a8578063173825d9146101d157806320ea8d86146101e6575b600080fd5b6101bb6101b6366004611ace565b6103b5565b6040516101c89190611f98565b60405180910390f35b6101e46101df3660046119ac565b6103e9565b005b6101e46101f4366004611ace565b610646565b61020c6102073660046119ac565b610735565b6040516101c8919061200b565b61020c610227366004611aec565b61074a565b61023461076a565b6040516101c891906120f7565b61025461024f366004611a9e565b610776565b6040516101c891906120e9565b6101e461026f3660046119ac565b6107e6565b61020c610282366004611ace565b610985565b6101e4610295366004611a69565b610a1d565b6102546102a8366004611ace565b610a81565b6102c06102bb366004611ace565b610aff565b6040516101c89493929190611fa6565b6101e46102de366004611b6c565b610be8565b6102eb610c72565b6040516101c89190611fe2565b61030b610306366004611b0b565b610ce2565b6040516101c89190611ffa565b6102eb610326366004611ace565b610e13565b610254610fd1565b6101e4610341366004611ace565b610fd7565b6101e4610354366004611ace565b61107f565b610254610367366004611a04565b6111c3565b61025461037a366004611ace565b6111e4565b6102546111f6565b6102546111fb565b6101e461039d3660046119ca565b611201565b6101e46103b0366004611ace565b611454565b600381815481106103c257fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b3330146104115760405162461bcd60e51b815260040161040890612059565b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116600090815260026020526040902054819060ff166104585760405162461bcd60e51b815260040161040890612099565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600260205260408120805460ff191690555b6003547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018110156105b6578273ffffffffffffffffffffffffffffffffffffffff16600382815481106104d657fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1614156105ae57600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810190811061052e57fe5b6000918252602090912001546003805473ffffffffffffffffffffffffffffffffffffffff909216918390811061056157fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506105b6565b600101610486565b50600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01906105e890826117f6565b5060035460045411156106015760035461060190610fd7565b60405173ffffffffffffffffffffffffffffffffffffffff8316907f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9090600090a25050565b3360008181526002602052604090205460ff166106755760405162461bcd60e51b815260040161040890612099565b60008281526001602090815260408083203380855292529091205483919060ff166106b25760405162461bcd60e51b815260040161040890612089565b600084815260208190526040902060030154849060ff16156106e65760405162461bcd60e51b815260040161040890612079565b6000858152600160209081526040808320338085529252808320805460ff191690555187927ff6a317157440607f36269043eb55f1287a5a19ba2216afeab88cd46cbcfb88e991a35050505050565b60026020526000908152604090205460ff1681565b600160209081526000928352604080842090915290825290205460ff1681565b60065463ffffffff1681565b600080805b6005548110156107dc578480156107a4575060008181526020819052604090206003015460ff16155b806107c857508380156107c8575060008181526020819052604090206003015460ff165b156107d4576001820191505b60010161077b565b5090505b92915050565b3330146108055760405162461bcd60e51b815260040161040890612059565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260026020526040902054819060ff161561084d5760405162461bcd60e51b815260040161040890612029565b8173ffffffffffffffffffffffffffffffffffffffff81166108815760405162461bcd60e51b8152600401610408906120a9565b6003805490506001016004546032821115801561089e5750818111155b80156108a957508015155b80156108b457508115155b6108d05760405162461bcd60e51b815260040161040890612049565b73ffffffffffffffffffffffffffffffffffffffff8516600081815260026020526040808220805460ff1916600190811790915560038054918201815583527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001684179055517ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d9190a25050505050565b600080805b600354811015610a1157600084815260016020526040812060038054919291849081106109b357fe5b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16835282019290925260400190205460ff16156109f4576001820191505b600454821415610a0957600192505050610a18565b60010161098a565b5060009150505b919050565b3360008181526002602052604090205460ff16610a4c5760405162461bcd60e51b815260040161040890612099565b60005b8251811015610a7c57610a74838281518110610a6757fe5b6020026020010151611454565b600101610a4f565b505050565b600080805b600354811015610af85760008481526001602052604081206003805491929184908110610aaf57fe5b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16835282019290925260400190205460ff1615610af0576001820191505b600101610a86565b5092915050565b60006020818152918152604090819020805460018083015460028085018054875161010095821615959095027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff011691909104601f810188900488028401880190965285835273ffffffffffffffffffffffffffffffffffffffff90931695909491929190830182828015610bd55780601f10610baa57610100808354040283529160200191610bd5565b820191906000526020600020905b815481529060010190602001808311610bb857829003601f168201915b5050506003909301549192505060ff1684565b333014610c075760405162461bcd60e51b815260040161040890612059565b600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff83161790556040517f8b01775fda0a3eb53a1e7b3a734cd346761d446aeb72745e17951c0f0ec2b16490610c679083906120f7565b60405180910390a150565b60606003805480602002602001604051908101604052809291908181526020018280548015610cd757602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610cac575b505050505090505b90565b606080600554604051908082528060200260200182016040528015610d11578160200160208202803883390190505b5090506000805b600554811015610d9257858015610d41575060008181526020819052604090206003015460ff16155b80610d655750848015610d65575060008181526020819052604090206003015460ff165b15610d8a5780838381518110610d7757fe5b6020026020010181815250506001820191505b600101610d18565b6060888803604051908082528060200260200182016040528015610dc0578160200160208202803883390190505b5090508891505b87821015610e0757838281518110610ddb57fe5b6020026020010151818a840381518110610df157fe5b6020908102919091010152600190910190610dc7565b98975050505050505050565b606080600380549050604051908082528060200260200182016040528015610e45578160200160208202803883390190505b5090506000805b600354811015610f3c5760008581526001602052604081206003805491929184908110610e7557fe5b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16835282019290925260400190205460ff1615610f345760038181548110610ebc57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838381518110610ef357fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506001820191505b600101610e4c565b606082604051908082528060200260200182016040528015610f68578160200160208202803883390190505b509050600091505b82821015610fc857838281518110610f8457fe5b6020026020010151818381518110610f9857fe5b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910190910152600190910190610f70565b95945050505050565b60055481565b333014610ff65760405162461bcd60e51b815260040161040890612059565b600354816032821180159061100b5750818111155b801561101657508015155b801561102157508115155b61103d5760405162461bcd60e51b815260040161040890612049565b60048390556040517fa3f1ee9126a074d9326c682f561767f710e927faa811f7a99829d49dc421797a906110729085906120e9565b60405180910390a1505050565b3360008181526002602052604090205460ff166110ae5760405162461bcd60e51b815260040161040890612099565b600082815260208190526040902054829073ffffffffffffffffffffffffffffffffffffffff166110f15760405162461bcd60e51b815260040161040890612069565b60008381526001602090815260408083203380855292529091205484919060ff161561112f5760405162461bcd60e51b8152600401610408906120b9565b8461113981610985565b156111565760405162461bcd60e51b8152600401610408906120d9565b6000868152600160208181526040808420338086529252808420805460ff1916909317909255905188927f4a504a94899432a9846e1aa406dceb1bcfd538bb839071d49d1e5e23f5be30ef91a36111ac86610985565b156111bb576111bb8642611661565b505050505050565b6000806111d18585856116b0565b90506111dc8161107f565b949350505050565b60076020526000908152604090205481565b603281565b60045481565b3330146112205760405162461bcd60e51b815260040161040890612059565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260026020526040902054829060ff166112675760405162461bcd60e51b815260040161040890612099565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260026020526040902054829060ff16156112af5760405162461bcd60e51b815260040161040890612029565b8273ffffffffffffffffffffffffffffffffffffffff81166112e35760405162461bcd60e51b8152600401610408906120a9565b60005b60035481101561139f578573ffffffffffffffffffffffffffffffffffffffff166003828154811061131457fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16141561139757846003828154811061134a57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061139f565b6001016112e6565b5073ffffffffffffffffffffffffffffffffffffffff808616600081815260026020526040808220805460ff1990811690915593881682528082208054909416600117909355915190917f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9091a260405173ffffffffffffffffffffffffffffffffffffffff8516907ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d90600090a25050505050565b3360008181526002602052604090205460ff166114835760405162461bcd60e51b815260040161040890612099565b600082815260208190526040902060030154829060ff16156114b75760405162461bcd60e51b815260040161040890612079565b826114c181610985565b6114dd5760405162461bcd60e51b815260040161040890612039565b600654600085815260076020526040902054859163ffffffff16014210156115175760405162461bcd60e51b8152600401610408906120c9565b600085815260208181526040808320600381018054600160ff19909116811790915581548183015460028085018054875161010096821615969096027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff011691909104601f810188900488028501880190965285845293969561160e9573ffffffffffffffffffffffffffffffffffffffff909316949193919083908301828280156116045780601f106115d957610100808354040283529160200191611604565b820191906000526020600020905b8154815290600101906020018083116115e757829003601f168201915b50505050506117d3565b90508061162d5760405162461bcd60e51b815260040161040890612019565b60405187907f33e13ecb54c3076d8e8bb8c2881800a4d972b792045ffae98fdf46df365fed7590600090a250505050505050565b600082815260076020526040908190208290555182907f0b237afe65f1514fd7ea3f923ea4fe792bdd07000a912b6cd1602a8e7f573c8d906116a49084906120e9565b60405180910390a25050565b60008373ffffffffffffffffffffffffffffffffffffffff81166116e65760405162461bcd60e51b8152600401610408906120a9565b6005546040805160808101825273ffffffffffffffffffffffffffffffffffffffff8881168252602080830189815283850189815260006060860181905287815280845295909520845181547fffffffffffffffffffffffff0000000000000000000000000000000000000000169416939093178355516001830155925180519293919261177a926002850192019061181a565b50606091909101516003909101805460ff191691151591909117905560058054600101905560405181907fc0ba8fe4b176c1714197d43b9cc6bcf797a4a7461c5fe8d0ef6e184ae7601e5190600090a295945050505050565b6000806040516020840160008287838a8c6187965a03f198975050505050505050565b815481835581811115610a7c57600083815260209020610a7c918101908301611898565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061185b57805160ff1916838001178555611888565b82800160010185558215611888579182015b8281111561188857825182559160200191906001019061186d565b50611894929150611898565b5090565b610cdf91905b80821115611894576000815560010161189e565b80356107e08161223c565b600082601f8301126118ce57600080fd5b81356118e16118dc8261212c565b612105565b9150818183526020840193506020810190508385602084028201111561190657600080fd5b60005b83811015611932578161191c8882611996565b8452506020928301929190910190600101611909565b5050505092915050565b80356107e081612253565b600082601f83011261195857600080fd5b81356119666118dc8261214d565b9150808252602083016020830185838301111561198257600080fd5b61198d8382846121d8565b50505092915050565b80356107e08161225c565b80356107e081612265565b6000602082840312156119be57600080fd5b60006111dc84846118b2565b600080604083850312156119dd57600080fd5b60006119e985856118b2565b92505060206119fa858286016118b2565b9150509250929050565b600080600060608486031215611a1957600080fd5b6000611a2586866118b2565b9350506020611a3686828701611996565b925050604084013567ffffffffffffffff811115611a5357600080fd5b611a5f86828701611947565b9150509250925092565b600060208284031215611a7b57600080fd5b813567ffffffffffffffff811115611a9257600080fd5b6111dc848285016118bd565b60008060408385031215611ab157600080fd5b6000611abd858561193c565b92505060206119fa8582860161193c565b600060208284031215611ae057600080fd5b60006111dc8484611996565b60008060408385031215611aff57600080fd5b60006119e98585611996565b60008060008060808587031215611b2157600080fd5b6000611b2d8787611996565b9450506020611b3e87828801611996565b9350506040611b4f8782880161193c565b9250506060611b608782880161193c565b91505092959194509250565b600060208284031215611b7e57600080fd5b60006111dc84846119a1565b6000611b968383611baa565b505060200190565b6000611b968383611f86565b611bb3816121a6565b82525050565b6000611bc482612199565b611bce818561219d565b9350611bd983612193565b8060005b83811015611c07578151611bf18882611b8a565b9750611bfc83612193565b925050600101611bdd565b509495945050505050565b6000611c1d82612199565b611c27818561219d565b9350611c3283612193565b8060005b83811015611c07578151611c4a8882611b9e565b9750611c5583612193565b925050600101611c36565b611bb3816121b1565b6000611c7482612199565b611c7e818561219d565b9350611c8e8185602086016121e4565b611c9781612214565b9093019392505050565b6000611cae600b8361219d565b7f54585f5245564552544544000000000000000000000000000000000000000000815260200192915050565b6000611ce7600c8361219d565b7f4f574e45525f4558495354530000000000000000000000000000000000000000815260200192915050565b6000611d2060168361219d565b7f54585f4e4f545f46554c4c595f434f4e4649524d454400000000000000000000815260200192915050565b6000611d59600f8361219d565b7f4e4f5f524551554952454d454e54530000000000000000000000000000000000815260200192915050565b6000611d92600b8361219d565b7f4f4e4c595f57414c4c4554000000000000000000000000000000000000000000815260200192915050565b6000611dcb601a8361219d565b7f5452414e53414354494f4e5f444f45535f4e4f545f4558495354000000000000815260200192915050565b6000611e04601c8361219d565b7f5452414e53414354494f4e5f414c52454144595f455845435554454400000000815260200192915050565b6000611e3d60198361219d565b7f5452414e53414354494f4e5f4e4f545f434f4e4649524d454400000000000000815260200192915050565b6000611e7660148361219d565b7f4f574e45525f444f45535f4e4f545f4558495354000000000000000000000000815260200192915050565b6000611eaf600f8361219d565b7f414444524553535f49535f4e554c4c0000000000000000000000000000000000815260200192915050565b6000611ee8601d8361219d565b7f5452414e53414354494f4e5f414c52454144595f434f4e4649524d4544000000815260200192915050565b6000611f2160148361219d565b7f54494d455f4c4f434b5f494e434f4d504c455445000000000000000000000000815260200192915050565b6000611f5a60128361219d565b7f54585f46554c4c595f434f4e4649524d45440000000000000000000000000000815260200192915050565b611bb381610cdf565b611bb3816121cf565b602081016107e08284611baa565b60808101611fb48287611baa565b611fc16020830186611f86565b8181036040830152611fd38185611c69565b9050610fc86060830184611c60565b60208082528101611ff38184611bb9565b9392505050565b60208082528101611ff38184611c12565b602081016107e08284611c60565b602080825281016107e081611ca1565b602080825281016107e081611cda565b602080825281016107e081611d13565b602080825281016107e081611d4c565b602080825281016107e081611d85565b602080825281016107e081611dbe565b602080825281016107e081611df7565b602080825281016107e081611e30565b602080825281016107e081611e69565b602080825281016107e081611ea2565b602080825281016107e081611edb565b602080825281016107e081611f14565b602080825281016107e081611f4d565b602081016107e08284611f86565b602081016107e08284611f8f565b60405181810167ffffffffffffffff8111828210171561212457600080fd5b604052919050565b600067ffffffffffffffff82111561214357600080fd5b5060209081020190565b600067ffffffffffffffff82111561216457600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b60200190565b5190565b90815260200190565b60006107e0826121b6565b151590565b73ffffffffffffffffffffffffffffffffffffffff1690565b63ffffffff1690565b82818337506000910152565b60005b838110156121ff5781810151838201526020016121e7565b8381111561220e576000848401525b50505050565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b612245816121a6565b811461225057600080fd5b50565b612245816121b1565b61224581610cdf565b612245816121cf56fea365627a7a723158205b2ba837c13a1c0c47d60ea47dd2c78baad6453e38039c0ae0306d756b860f286c6578706572696d656e74616cf564736f6c63430005100040",
673
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101a35760003560e01c8063a029b36b116100ee578063c01a8c8411610097578063d74f8edd11610071578063d74f8edd1461037f578063dc8452cd14610387578063e20056e61461038f578063ee22610b146103a2576101a3565b8063c01a8c8414610346578063c642747414610359578063d38f2d821461036c576101a3565b8063b5dc40c3116100c8578063b5dc40c314610318578063b77bf6001461032b578063ba51a6df14610333576101a3565b8063a029b36b146102d0578063a0e67e2b146102e3578063a8abe69a146102f8576101a3565b8063547415251161015057806380bc148f1161012a57806380bc148f146102875780638b51d13f1461029a5780639ace38c2146102ad576101a3565b806354741525146102415780637065cb4814610261578063784547a714610274576101a3565b80632f54bf6e116101815780632f54bf6e146101f95780633411c81c1461021957806337bd78a01461022c576101a3565b8063025e7c27146101a8578063173825d9146101d157806320ea8d86146101e6575b600080fd5b6101bb6101b6366004611ace565b6103b5565b6040516101c89190611f98565b60405180910390f35b6101e46101df3660046119ac565b6103e9565b005b6101e46101f4366004611ace565b610646565b61020c6102073660046119ac565b610735565b6040516101c8919061200b565b61020c610227366004611aec565b61074a565b61023461076a565b6040516101c891906120f7565b61025461024f366004611a9e565b610776565b6040516101c891906120e9565b6101e461026f3660046119ac565b6107e6565b61020c610282366004611ace565b610985565b6101e4610295366004611a69565b610a1d565b6102546102a8366004611ace565b610a81565b6102c06102bb366004611ace565b610aff565b6040516101c89493929190611fa6565b6101e46102de366004611b6c565b610be8565b6102eb610c72565b6040516101c89190611fe2565b61030b610306366004611b0b565b610ce2565b6040516101c89190611ffa565b6102eb610326366004611ace565b610e13565b610254610fd1565b6101e4610341366004611ace565b610fd7565b6101e4610354366004611ace565b61107f565b610254610367366004611a04565b6111c3565b61025461037a366004611ace565b6111e4565b6102546111f6565b6102546111fb565b6101e461039d3660046119ca565b611201565b6101e46103b0366004611ace565b611454565b600381815481106103c257fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b3330146104115760405162461bcd60e51b815260040161040890612059565b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116600090815260026020526040902054819060ff166104585760405162461bcd60e51b815260040161040890612099565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600260205260408120805460ff191690555b6003547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018110156105b6578273ffffffffffffffffffffffffffffffffffffffff16600382815481106104d657fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1614156105ae57600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810190811061052e57fe5b6000918252602090912001546003805473ffffffffffffffffffffffffffffffffffffffff909216918390811061056157fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506105b6565b600101610486565b50600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01906105e890826117f6565b5060035460045411156106015760035461060190610fd7565b60405173ffffffffffffffffffffffffffffffffffffffff8316907f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9090600090a25050565b3360008181526002602052604090205460ff166106755760405162461bcd60e51b815260040161040890612099565b60008281526001602090815260408083203380855292529091205483919060ff166106b25760405162461bcd60e51b815260040161040890612089565b600084815260208190526040902060030154849060ff16156106e65760405162461bcd60e51b815260040161040890612079565b6000858152600160209081526040808320338085529252808320805460ff191690555187927ff6a317157440607f36269043eb55f1287a5a19ba2216afeab88cd46cbcfb88e991a35050505050565b60026020526000908152604090205460ff1681565b600160209081526000928352604080842090915290825290205460ff1681565b60065463ffffffff1681565b600080805b6005548110156107dc578480156107a4575060008181526020819052604090206003015460ff16155b806107c857508380156107c8575060008181526020819052604090206003015460ff165b156107d4576001820191505b60010161077b565b5090505b92915050565b3330146108055760405162461bcd60e51b815260040161040890612059565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260026020526040902054819060ff161561084d5760405162461bcd60e51b815260040161040890612029565b8173ffffffffffffffffffffffffffffffffffffffff81166108815760405162461bcd60e51b8152600401610408906120a9565b6003805490506001016004546032821115801561089e5750818111155b80156108a957508015155b80156108b457508115155b6108d05760405162461bcd60e51b815260040161040890612049565b73ffffffffffffffffffffffffffffffffffffffff8516600081815260026020526040808220805460ff1916600190811790915560038054918201815583527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001684179055517ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d9190a25050505050565b600080805b600354811015610a1157600084815260016020526040812060038054919291849081106109b357fe5b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16835282019290925260400190205460ff16156109f4576001820191505b600454821415610a0957600192505050610a18565b60010161098a565b5060009150505b919050565b3360008181526002602052604090205460ff16610a4c5760405162461bcd60e51b815260040161040890612099565b60005b8251811015610a7c57610a74838281518110610a6757fe5b6020026020010151611454565b600101610a4f565b505050565b600080805b600354811015610af85760008481526001602052604081206003805491929184908110610aaf57fe5b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16835282019290925260400190205460ff1615610af0576001820191505b600101610a86565b5092915050565b60006020818152918152604090819020805460018083015460028085018054875161010095821615959095027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff011691909104601f810188900488028401880190965285835273ffffffffffffffffffffffffffffffffffffffff90931695909491929190830182828015610bd55780601f10610baa57610100808354040283529160200191610bd5565b820191906000526020600020905b815481529060010190602001808311610bb857829003601f168201915b5050506003909301549192505060ff1684565b333014610c075760405162461bcd60e51b815260040161040890612059565b600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff83161790556040517f8b01775fda0a3eb53a1e7b3a734cd346761d446aeb72745e17951c0f0ec2b16490610c679083906120f7565b60405180910390a150565b60606003805480602002602001604051908101604052809291908181526020018280548015610cd757602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610cac575b505050505090505b90565b606080600554604051908082528060200260200182016040528015610d11578160200160208202803883390190505b5090506000805b600554811015610d9257858015610d41575060008181526020819052604090206003015460ff16155b80610d655750848015610d65575060008181526020819052604090206003015460ff165b15610d8a5780838381518110610d7757fe5b6020026020010181815250506001820191505b600101610d18565b6060888803604051908082528060200260200182016040528015610dc0578160200160208202803883390190505b5090508891505b87821015610e0757838281518110610ddb57fe5b6020026020010151818a840381518110610df157fe5b6020908102919091010152600190910190610dc7565b98975050505050505050565b606080600380549050604051908082528060200260200182016040528015610e45578160200160208202803883390190505b5090506000805b600354811015610f3c5760008581526001602052604081206003805491929184908110610e7557fe5b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16835282019290925260400190205460ff1615610f345760038181548110610ebc57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838381518110610ef357fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506001820191505b600101610e4c565b606082604051908082528060200260200182016040528015610f68578160200160208202803883390190505b509050600091505b82821015610fc857838281518110610f8457fe5b6020026020010151818381518110610f9857fe5b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910190910152600190910190610f70565b95945050505050565b60055481565b333014610ff65760405162461bcd60e51b815260040161040890612059565b600354816032821180159061100b5750818111155b801561101657508015155b801561102157508115155b61103d5760405162461bcd60e51b815260040161040890612049565b60048390556040517fa3f1ee9126a074d9326c682f561767f710e927faa811f7a99829d49dc421797a906110729085906120e9565b60405180910390a1505050565b3360008181526002602052604090205460ff166110ae5760405162461bcd60e51b815260040161040890612099565b600082815260208190526040902054829073ffffffffffffffffffffffffffffffffffffffff166110f15760405162461bcd60e51b815260040161040890612069565b60008381526001602090815260408083203380855292529091205484919060ff161561112f5760405162461bcd60e51b8152600401610408906120b9565b8461113981610985565b156111565760405162461bcd60e51b8152600401610408906120d9565b6000868152600160208181526040808420338086529252808420805460ff1916909317909255905188927f4a504a94899432a9846e1aa406dceb1bcfd538bb839071d49d1e5e23f5be30ef91a36111ac86610985565b156111bb576111bb8642611661565b505050505050565b6000806111d18585856116b0565b90506111dc8161107f565b949350505050565b60076020526000908152604090205481565b603281565b60045481565b3330146112205760405162461bcd60e51b815260040161040890612059565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260026020526040902054829060ff166112675760405162461bcd60e51b815260040161040890612099565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260026020526040902054829060ff16156112af5760405162461bcd60e51b815260040161040890612029565b8273ffffffffffffffffffffffffffffffffffffffff81166112e35760405162461bcd60e51b8152600401610408906120a9565b60005b60035481101561139f578573ffffffffffffffffffffffffffffffffffffffff166003828154811061131457fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16141561139757846003828154811061134a57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061139f565b6001016112e6565b5073ffffffffffffffffffffffffffffffffffffffff808616600081815260026020526040808220805460ff1990811690915593881682528082208054909416600117909355915190917f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9091a260405173ffffffffffffffffffffffffffffffffffffffff8516907ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d90600090a25050505050565b3360008181526002602052604090205460ff166114835760405162461bcd60e51b815260040161040890612099565b600082815260208190526040902060030154829060ff16156114b75760405162461bcd60e51b815260040161040890612079565b826114c181610985565b6114dd5760405162461bcd60e51b815260040161040890612039565b600654600085815260076020526040902054859163ffffffff16014210156115175760405162461bcd60e51b8152600401610408906120c9565b600085815260208181526040808320600381018054600160ff19909116811790915581548183015460028085018054875161010096821615969096027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff011691909104601f810188900488028501880190965285845293969561160e9573ffffffffffffffffffffffffffffffffffffffff909316949193919083908301828280156116045780601f106115d957610100808354040283529160200191611604565b820191906000526020600020905b8154815290600101906020018083116115e757829003601f168201915b50505050506117d3565b90508061162d5760405162461bcd60e51b815260040161040890612019565b60405187907f33e13ecb54c3076d8e8bb8c2881800a4d972b792045ffae98fdf46df365fed7590600090a250505050505050565b600082815260076020526040908190208290555182907f0b237afe65f1514fd7ea3f923ea4fe792bdd07000a912b6cd1602a8e7f573c8d906116a49084906120e9565b60405180910390a25050565b60008373ffffffffffffffffffffffffffffffffffffffff81166116e65760405162461bcd60e51b8152600401610408906120a9565b6005546040805160808101825273ffffffffffffffffffffffffffffffffffffffff8881168252602080830189815283850189815260006060860181905287815280845295909520845181547fffffffffffffffffffffffff0000000000000000000000000000000000000000169416939093178355516001830155925180519293919261177a926002850192019061181a565b50606091909101516003909101805460ff191691151591909117905560058054600101905560405181907fc0ba8fe4b176c1714197d43b9cc6bcf797a4a7461c5fe8d0ef6e184ae7601e5190600090a295945050505050565b6000806040516020840160008287838a8c6187965a03f198975050505050505050565b815481835581811115610a7c57600083815260209020610a7c918101908301611898565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061185b57805160ff1916838001178555611888565b82800160010185558215611888579182015b8281111561188857825182559160200191906001019061186d565b50611894929150611898565b5090565b610cdf91905b80821115611894576000815560010161189e565b80356107e08161223c565b600082601f8301126118ce57600080fd5b81356118e16118dc8261212c565b612105565b9150818183526020840193506020810190508385602084028201111561190657600080fd5b60005b83811015611932578161191c8882611996565b8452506020928301929190910190600101611909565b5050505092915050565b80356107e081612253565b600082601f83011261195857600080fd5b81356119666118dc8261214d565b9150808252602083016020830185838301111561198257600080fd5b61198d8382846121d8565b50505092915050565b80356107e08161225c565b80356107e081612265565b6000602082840312156119be57600080fd5b60006111dc84846118b2565b600080604083850312156119dd57600080fd5b60006119e985856118b2565b92505060206119fa858286016118b2565b9150509250929050565b600080600060608486031215611a1957600080fd5b6000611a2586866118b2565b9350506020611a3686828701611996565b925050604084013567ffffffffffffffff811115611a5357600080fd5b611a5f86828701611947565b9150509250925092565b600060208284031215611a7b57600080fd5b813567ffffffffffffffff811115611a9257600080fd5b6111dc848285016118bd565b60008060408385031215611ab157600080fd5b6000611abd858561193c565b92505060206119fa8582860161193c565b600060208284031215611ae057600080fd5b60006111dc8484611996565b60008060408385031215611aff57600080fd5b60006119e98585611996565b60008060008060808587031215611b2157600080fd5b6000611b2d8787611996565b9450506020611b3e87828801611996565b9350506040611b4f8782880161193c565b9250506060611b608782880161193c565b91505092959194509250565b600060208284031215611b7e57600080fd5b60006111dc84846119a1565b6000611b968383611baa565b505060200190565b6000611b968383611f86565b611bb3816121a6565b82525050565b6000611bc482612199565b611bce818561219d565b9350611bd983612193565b8060005b83811015611c07578151611bf18882611b8a565b9750611bfc83612193565b925050600101611bdd565b509495945050505050565b6000611c1d82612199565b611c27818561219d565b9350611c3283612193565b8060005b83811015611c07578151611c4a8882611b9e565b9750611c5583612193565b925050600101611c36565b611bb3816121b1565b6000611c7482612199565b611c7e818561219d565b9350611c8e8185602086016121e4565b611c9781612214565b9093019392505050565b6000611cae600b8361219d565b7f54585f5245564552544544000000000000000000000000000000000000000000815260200192915050565b6000611ce7600c8361219d565b7f4f574e45525f4558495354530000000000000000000000000000000000000000815260200192915050565b6000611d2060168361219d565b7f54585f4e4f545f46554c4c595f434f4e4649524d454400000000000000000000815260200192915050565b6000611d59600f8361219d565b7f4e4f5f524551554952454d454e54530000000000000000000000000000000000815260200192915050565b6000611d92600b8361219d565b7f4f4e4c595f57414c4c4554000000000000000000000000000000000000000000815260200192915050565b6000611dcb601a8361219d565b7f5452414e53414354494f4e5f444f45535f4e4f545f4558495354000000000000815260200192915050565b6000611e04601c8361219d565b7f5452414e53414354494f4e5f414c52454144595f455845435554454400000000815260200192915050565b6000611e3d60198361219d565b7f5452414e53414354494f4e5f4e4f545f434f4e4649524d454400000000000000815260200192915050565b6000611e7660148361219d565b7f4f574e45525f444f45535f4e4f545f4558495354000000000000000000000000815260200192915050565b6000611eaf600f8361219d565b7f414444524553535f49535f4e554c4c0000000000000000000000000000000000815260200192915050565b6000611ee8601d8361219d565b7f5452414e53414354494f4e5f414c52454144595f434f4e4649524d4544000000815260200192915050565b6000611f2160148361219d565b7f54494d455f4c4f434b5f494e434f4d504c455445000000000000000000000000815260200192915050565b6000611f5a60128361219d565b7f54585f46554c4c595f434f4e4649524d45440000000000000000000000000000815260200192915050565b611bb381610cdf565b611bb3816121cf565b602081016107e08284611baa565b60808101611fb48287611baa565b611fc16020830186611f86565b8181036040830152611fd38185611c69565b9050610fc86060830184611c60565b60208082528101611ff38184611bb9565b9392505050565b60208082528101611ff38184611c12565b602081016107e08284611c60565b602080825281016107e081611ca1565b602080825281016107e081611cda565b602080825281016107e081611d13565b602080825281016107e081611d4c565b602080825281016107e081611d85565b602080825281016107e081611dbe565b602080825281016107e081611df7565b602080825281016107e081611e30565b602080825281016107e081611e69565b602080825281016107e081611ea2565b602080825281016107e081611edb565b602080825281016107e081611f14565b602080825281016107e081611f4d565b602081016107e08284611f86565b602081016107e08284611f8f565b60405181810167ffffffffffffffff8111828210171561212457600080fd5b604052919050565b600067ffffffffffffffff82111561214357600080fd5b5060209081020190565b600067ffffffffffffffff82111561216457600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b60200190565b5190565b90815260200190565b60006107e0826121b6565b151590565b73ffffffffffffffffffffffffffffffffffffffff1690565b63ffffffff1690565b82818337506000910152565b60005b838110156121ff5781810151838201526020016121e7565b8381111561220e576000848401525b50505050565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b612245816121a6565b811461225057600080fd5b50565b612245816121b1565b61224581610cdf565b612245816121cf56fea365627a7a723158205b2ba837c13a1c0c47d60ea47dd2c78baad6453e38039c0ae0306d756b860f286c6578706572696d656e74616cf564736f6c63430005100040",
674
674
  "sourceMap": "1160:4496:22:-;;;2643:226;8:9:-1;5:2;;;30:1;27;20:12;5:2;2643:226:22;;;;;;;;;;;;;;;;;;;;;2790:7;2799:9;4453:7:23;:14;4469:9;1925:2;3875:10;:29;;:68;;;;;3933:10;3920:9;:23;;3875:68;:98;;;;-1:-1:-1;3959:14:23;;;3875:98;:129;;;;-1:-1:-1;3989:15:23;;;3875:129;3854:191;;;;-1:-1:-1;;;3854:191:23;;;;;;;;;;;;;;;;;4499:9;4494:186;4518:7;:14;4514:1;:18;4494:186;;;4562:7;:19;4570:7;4578:1;4570:10;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4562:19:23;;;;;;;;;;;-1:-1:-1;4562:19:23;;;;4561:20;:50;;;;;1973:3;-1:-1:-1;;;;;4585:26:23;:7;4593:1;4585:10;;;;;;;;;;;;;;-1:-1:-1;;;;;4585:26:23;;;4561:50;4553:76;;;;-1:-1:-1;;;4553:76:23;;;;;;;;;4665:4;4643:7;:19;4651:7;4659:1;4651:10;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4643:19:23;;;;;;;;;;;-1:-1:-1;4643:19:23;:26;;-1:-1:-1;;4643:26:23;;;;;;;;;;-1:-1:-1;4534:3:23;4494:186;;;-1:-1:-1;4689:16:23;;;;:6;;:16;;;;;:::i;:::-;-1:-1:-1;;;4715:8:23;:20;-1:-1:-1;2824:17:22;:38;;-1:-1:-1;;2824:38:22;;;;;;;;;;;;-1:-1:-1;1160:4496:22;;-1:-1:-1;1160:4496:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1160:4496:22;-1:-1:-1;;;;;1160:4496:22;;;;;;;;;;;-1:-1:-1;1160:4496:22;;;;;;;-1:-1:-1;1160:4496:22;;;-1:-1:-1;1160:4496:22;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;;1160:4496:22;;;;;;;;;:::o;5:134:-1:-;83:13;;101:33;83:13;101:33;;;68:71;;;;;164:722;;292:3;285:4;277:6;273:17;269:27;259:2;;310:1;307;300:12;259:2;340:6;334:13;362:80;377:64;434:6;377:64;;;362:80;;;353:89;;459:5;484:6;477:5;470:21;514:4;506:6;502:17;492:27;;536:4;531:3;527:14;520:21;;589:6;636:3;628:4;620:6;616:17;611:3;607:27;604:36;601:2;;;653:1;650;643:12;601:2;678:1;663:217;688:6;685:1;682:13;663:217;;;746:3;768:48;812:3;800:10;768:48;;;756:61;;-1:-1;840:4;831:14;;;;859;;;;;710:1;703:9;663:217;;;667:14;252:634;;;;;;;;894:134;972:13;;990:33;972:13;990:33;;1035:132;1112:13;;1130:32;1112:13;1130:32;;1174:662;;;;1347:2;1335:9;1326:7;1322:23;1318:32;1315:2;;;1363:1;1360;1353:12;1315:2;1398:24;;-1:-1;;;;;1431:30;;1428:2;;;1474:1;1471;1464:12;1428:2;1494:89;1575:7;1566:6;1555:9;1551:22;1494:89;;;1484:99;;1377:212;1620:2;1638:64;1694:7;1685:6;1674:9;1670:22;1638:64;;;1628:74;;1599:109;1739:2;1757:63;1812:7;1803:6;1792:9;1788:22;1757:63;;;1747:73;;1718:108;1309:527;;;;;;1844:315;;2004:67;2068:2;2063:3;2004:67;;;-1:-1;;;2084:38;;2150:2;2141:12;;1990:169;-1:-1;;1990:169;2168:313;;2328:67;2392:2;2387:3;2328:67;;;-1:-1;;;2408:36;;2472:2;2463:12;;2314:167;-1:-1;;2314:167;2489:407;2680:2;2694:47;;;2665:18;;2755:131;2665:18;2755:131;;2903:407;3094:2;3108:47;;;3079:18;;3169:131;3079:18;3169:131;;3317:256;3379:2;3373:9;3405:17;;;-1:-1;;;;;3465:34;;3501:22;;;3462:62;3459:2;;;3537:1;3534;3527:12;3459:2;3553;3546:22;3357:216;;-1:-1;3357:216;3580:304;;-1:-1;;;;;3731:6;3728:30;3725:2;;;3771:1;3768;3761:12;3725:2;-1:-1;3806:4;3794:17;;;3859:15;;3662:222;3892:163;3995:19;;;4044:4;4035:14;;3988:67;4063:91;;-1:-1;;;;;4223:54;;4125:24;4206:76;4368:88;4440:10;4429:22;;4412:44;4463:117;4532:24;4550:5;4532:24;;;4525:5;4522:35;4512:2;;4571:1;4568;4561:12;4512:2;4506:74;;4587:117;4656:24;4674:5;4656:24;;4711:115;4779:23;4796:5;4779:23;;4753:73;1160:4496:22;;;;;;",
675
675
  "deployedSourceMap": "1160:4496:22:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1160:4496:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2203:23:23;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;5380:510;;;;;;;;;:::i;:::-;;8347:313;;;;;;;;;:::i;2157:40::-;;;;;;;;;:::i;:::-;;;;;;;;2084:67;;;;;;;;;:::i;1431:31:22:-;;;:::i;:::-;;;;;;;;10960:445:23;;;;;;;;;:::i;:::-;;;;;;;;4943:296;;;;;;;;;:::i;9722:414::-;;;;;;;;;:::i;5004:265:22:-;;;;;;;;;:::i;10323:346:23:-;;;;;;;;;:::i;2026:52::-;;;;;;;;;:::i;:::-;;;;;;;;;;;3182:207:22;;;;;;;;;:::i;11508:118:23:-;;;:::i;:::-;;;;;;;;12877:821;;;;;;;;;:::i;:::-;;;;;;;;11829:666;;;;;;;;;:::i;2261:31::-;;;:::i;6829:229::-;;;;;;;;;:::i;3606:481:22:-;;;;;;;;;:::i;7404:311:23:-;;;;;;;;;:::i;1468:53:22:-;;;;;;;;;:::i;1883:44:23:-;;;:::i;2232:23::-;;;:::i;6114:526::-;;;;;;;;;:::i;4264:588:22:-;;;;;;;;;:::i;2203:23:23:-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2203:23:23;:::o;5380:510::-;2552:10;2574:4;2552:27;2544:51;;;;-1:-1:-1;;;2544:51:23;;;;;;;;;;;;;;;;;2817:14;;;;;;;:7;:14;;;;;;5484:5;;2817:14;;2809:47;;;;-1:-1:-1;;;2809:47:23;;;;;;;;;5505:14;;;5522:5;5505:14;;;:7;:14;;;;;:22;;-1:-1:-1;;5505:22:23;;;5537:189;5561:6;:13;:17;;5557:21;;5537:189;;;5616:5;5603:18;;:6;5610:1;5603:9;;;;;;;;;;;;;;;;;;;;:18;5599:117;;;5653:6;5660:13;;:17;;;;5653:25;;;;;;;;;;;;;;;;5641:6;:9;;5653:25;;;;;5648:1;;5641:9;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;5696:5;;5599:117;5580:3;;5537:189;;;-1:-1:-1;5735:6:23;:18;;;;;;;;;:::i;:::-;-1:-1:-1;5778:6:23;:13;5767:8;;:24;5763:87;;;5825:6;:13;5807:32;;:17;:32::i;:::-;5864:19;;;;;;;;;;;2605:1;5380:510;:::o;8347:313::-;8447:10;2817:14;;;;:7;:14;;;;;;;;2809:47;;;;-1:-1:-1;;;2809:47:23;;;;;;;;;3169:28;;;;:13;:28;;;;;;;;8492:10;3169:35;;;;;;;;;8477:13;;8492:10;3169:35;;3161:73;;;;-1:-1:-1;;;3161:73:23;;;;;;;;;3529:12;:27;;;;;;;;;;:36;;;8524:13;;3529:36;;3528:37;3520:78;;;;-1:-1:-1;;;3520:78:23;;;;;;;;;8596:5;8553:28;;;:13;:28;;;;;;;;8582:10;8553:40;;;;;;;;:48;;-1:-1:-1;;8553:48:23;;;8616:37;8567:13;;8616:37;;;3244:1;2866;;8347:313;;:::o;2157:40::-;;;;;;;;;;;;;;;:::o;2084:67::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1431:31:22:-;;;;;;:::o;10960:445:23:-;11085:7;;;11135:242;11159:16;;11155:1;:20;11135:242;;;11217:7;:36;;;;-1:-1:-1;11229:12:23;:15;;;;;;;;;;:24;;;;;11228:25;11217:36;:92;;;;11273:8;:36;;;;-1:-1:-1;11285:12:23;:15;;;;;;;;;;:24;;;;;11273:36;11196:171;;;11351:1;11342:10;;;;11196:171;11177:3;;11135:242;;;-1:-1:-1;11393:5:23;-1:-1:-1;10960:445:23;;;;;:::o;4943:296::-;2552:10;2574:4;2552:27;2544:51;;;;-1:-1:-1;;;2544:51:23;;;;;;;;;2694:14;;;;;;;:7;:14;;;;;;5050:5;;2694:14;;2693:15;2685:40;;;;-1:-1:-1;;;2685:40:23;;;;;;;;;5073:5;3689:24;;;3681:52;;;;-1:-1:-1;;;3681:52:23;;;;;;;;;5105:6;:13;;;;5121:1;5105:17;5124:8;;1925:2;3875:10;:29;;:68;;;;;3933:10;3920:9;:23;;3875:68;:98;;;;-1:-1:-1;3959:14:23;;;3875:98;:129;;;;-1:-1:-1;3989:15:23;;;3875:129;3854:191;;;;-1:-1:-1;;;3854:191:23;;;;;;;;;5148:14;;;;;;;:7;:14;;;;;;:21;;-1:-1:-1;;5148:21:23;5165:4;5148:21;;;;;;5179:6;27:10:-1;;23:18;;;45:23;;5179:18:23;;;;;;;;;;;;5212:20;;;5148:14;5212:20;3743:1;;2735;2605;4943:296;:::o;9722:414::-;9825:4;;;9872:236;9896:6;:13;9892:17;;9872:236;;;9934:28;;;;:13;:28;;;;;9963:6;:9;;9934:28;;;9970:1;;9963:9;;;;;;;;;;;;;;;;;;;;9934:39;;;;;;;;;;;;;;;9930:88;;;10002:1;9993:10;;;;9930:88;10044:8;;10035:5;:17;10031:67;;;10079:4;10072:11;;;;;;10031:67;9911:3;;9872:236;;;;10124:5;10117:12;;;9722:414;;;;:::o;5004:265:22:-;5123:10;2817:14:23;;;;:7;:14;;;;;;;;2809:47;;;;-1:-1:-1;;;2809:47:23;;;;;;;;;5154:9:22;5149:114;5173:14;:21;5169:1;:25;5149:114;;;5215:37;5234:14;5249:1;5234:17;;;;;;;;;;;;;;5215:18;:37::i;:::-;5196:3;;5149:114;;;;5004:265;;:::o;10323:346:23:-;10435:7;;;10485:156;10509:6;:13;10505:17;;10485:156;;;10547:28;;;;:13;:28;;;;;10576:6;:9;;10547:28;;;10583:1;;10576:9;;;;;;;;;;;;;;;;;;;;10547:39;;;;;;;;;;;;;;;10543:88;;;10615:1;10606:10;;;;10543:88;10524:3;;10485:156;;;-1:-1:-1;10657:5:23;10323:346;-1:-1:-1;;10323:346:23:o;2026:52::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2026:52:23;;;;;;;-1:-1:-1;;2026:52:23;;;:::o;3182:207:22:-;2552:10:23;2574:4;2552:27;2544:51;;;;-1:-1:-1;;;2544:51:23;;;;;;;;;3295:17:22;:38;;;;;;;;;;3348:34;;;;;;3295:38;;3348:34;;;;;;;;;;3182:207;:::o;11508:118:23:-;11574:16;11613:6;11606:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11508:118;;:::o;12877:821::-;13042:16;13074:35;13126:16;;13112:31;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;13112:31:23;-1:-1:-1;13074:69:23;-1:-1:-1;13153:13:23;;13199:281;13215:16;;13211:1;:20;13199:281;;;13273:7;:36;;;;-1:-1:-1;13285:12:23;:15;;;;;;;;;;:24;;;;;13284:25;13273:36;:92;;;;13329:8;:36;;;;-1:-1:-1;13341:12:23;:15;;;;;;;;;;:24;;;;;13329:36;13252:218;;;13426:1;13398:18;13417:5;13398:25;;;;;;;;;;;;;:29;;;;;13454:1;13445:10;;;;13252:218;13233:3;;13199:281;;;13489:32;13543:4;13538:2;:9;13524:24;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;13524:24:23;;13489:59;;13567:4;13563:8;;13558:102;13577:2;13573:1;:6;13558:102;;;13628:18;13647:1;13628:21;;;;;;;;;;;;;;13600:15;13620:4;13616:1;:8;13600:25;;;;;;;;;;;;;;;;;:49;13581:3;;;;;13558:102;;;13676:15;12877:821;-1:-1:-1;;;;;;;;12877:821:23:o;11829:666::-;11937:16;11969:34;12020:6;:13;;;;12006:28;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;12006:28:23;-1:-1:-1;11969:65:23;-1:-1:-1;12044:13:23;;12090:202;12106:6;:13;12102:17;;12090:202;;;12144:28;;;;:13;:28;;;;;12173:6;:9;;12144:28;;;12180:1;;12173:9;;;;;;;;;;;;;;;;;;;;12144:39;;;;;;;;;;;;;;;12140:142;;;12230:6;12237:1;12230:9;;;;;;;;;;;;;;;;;;;;;;;;;12203:17;12221:5;12203:24;;;;;;;;;;;;;:36;;;;;;;;;;;12266:1;12257:10;;;;12140:142;12121:3;;12090:202;;;12301:31;12349:5;12335:20;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;12335:20:23;;12301:54;;12374:1;12370:5;;12365:93;12381:5;12377:1;:9;12365:93;;;12427:17;12445:1;12427:20;;;;;;;;;;;;;;12407:14;12422:1;12407:17;;;;;;;;:40;;;;:17;;;;;;;;;;;:40;12388:3;;;;;12365:93;;;12474:14;11829:666;-1:-1:-1;;;;;11829:666:23:o;2261:31::-;;;;:::o;6829:229::-;2552:10;2574:4;2552:27;2544:51;;;;-1:-1:-1;;;2544:51:23;;;;;;;;;6948:6;:13;6963:9;1925:2;3875:29;;;;;:68;;;3933:10;3920:9;:23;;3875:68;:98;;;;-1:-1:-1;3959:14:23;;;3875:98;:129;;;;-1:-1:-1;3989:15:23;;;3875:129;3854:191;;;;-1:-1:-1;;;3854:191:23;;;;;;;;;6988:8;:20;;;7023:28;;;;;;6999:9;;7023:28;;;;;;;;;;2605:1;;6829:229;:::o;3606:481:22:-;3706:10;2817:14:23;;;;:7;:14;;;;;;;;2809:47;;;;-1:-1:-1;;;2809:47:23;;;;;;;;;1973:3;2962:27;;;;;;;;;;:39;3744:13:22;;2962:55:23;:39;2954:94;;;;-1:-1:-1;;;2954:94:23;;;;;;;;;3359:28;;;;:13;:28;;;;;;;;3795:10:22;3359:35:23;;;;;;;;;3780:13:22;;3795:10;3359:35:23;;3358:36;3350:78;;;;-1:-1:-1;;;3350:78:23;;;;;;;;;3833:13:22;1668:26;1680:13;1668:11;:26::i;:::-;1667:27;1646:92;;;;-1:-1:-1;;;1646:92:22;;;;;;;;;3862:28;;;;3905:4;3862:28;;;;;;;;3891:10;3862:40;;;;;;;;:47;;-1:-1:-1;;3862:47:22;;;;;;;3924:39;;3876:13;;3924:39;;;3977:26;3989:13;3977:11;:26::i;:::-;3973:108;;;4019:51;4039:13;4054:15;4019:19;:51::i;:::-;3438:1:23;3058;;2866;3606:481:22;;:::o;7404:311:23:-;7548:7;7571:21;7595:40;7610:11;7623:5;7630:4;7595:14;:40::i;:::-;7571:64;;7645:33;7664:13;7645:18;:33::i;:::-;7695:13;7404:311;-1:-1:-1;;;;7404:311:23:o;1468:53:22:-;;;;;;;;;;;;;:::o;1883:44:23:-;1925:2;1883:44;:::o;2232:23::-;;;;:::o;6114:526::-;2552:10;2574:4;2552:27;2544:51;;;;-1:-1:-1;;;2544:51:23;;;;;;;;;2817:14;;;;;;;:7;:14;;;;;;6245:5;;2817:14;;2809:47;;;;-1:-1:-1;;;2809:47:23;;;;;;;;;2694:14;;;;;;;:7;:14;;;;;;6278:8;;2694:14;;2693:15;2685:40;;;;-1:-1:-1;;;2685:40:23;;;;;;;;;6304:8;3689:24;;;3681:52;;;;-1:-1:-1;;;3681:52:23;;;;;;;;;6333:9;6328:168;6352:6;:13;6348:17;;6328:168;;;6403:5;6390:18;;:6;6397:1;6390:9;;;;;;;;;;;;;;;;;;;;:18;6386:100;;;6440:8;6428:6;6435:1;6428:9;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;6466:5;;6386:100;6367:3;;6328:168;;;-1:-1:-1;6505:14:23;;;;6522:5;6505:14;;;:7;:14;;;;;;:22;;-1:-1:-1;;6505:22:23;;;;;;6537:17;;;;;;;;:24;;;;;6505:22;6537:24;;;;6576:19;;6505:14;;6576:19;;;6610:23;;;;;;;;;;;2735:1;2866;2605;6114:526;;:::o;4264:588:22:-;4364:10;2817:14:23;;;;:7;:14;;;;;;;;2809:47;;;;-1:-1:-1;;;2809:47:23;;;;;;;;;3529:12;:27;;;;;;;;;;:36;;;4396:13:22;;3529:36:23;;3528:37;3520:78;;;;-1:-1:-1;;;3520:78:23;;;;;;;;;4434:13:22;1854:26;1866:13;1854:11;:26::i;:::-;1833:95;;;;-1:-1:-1;;;1833:95:22;;;;;;;;;2096:17;;;2061:32;;;:17;:32;;;;;;4470:13;;2096:17;;2061:52;2042:15;:71;;2021:138;;;;-1:-1:-1;;;2021:138:22;;;;;;;;;4499:23;4525:27;;;;;;;;;;;4562:12;;;:19;;4577:4;-1:-1:-1;;4562:19:22;;;;;;;;4632:15;;4661:9;;;;4684:8;;;;:15;;4606:125;;4562:19;4684:15;;;;;;;;;;;;;;;4606:125;;;;;;;;;;;;;;;;;;4525:27;;4499:23;4606:125;;4632:15;;;;;4661:9;;4606:125;4684:8;:15;;4606:125;;4684:8;:15;4606:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:12;:125::i;:::-;4591:140;;4762:7;4741:65;;;;-1:-1:-1;;;4741:65:22;;;;;;;;;4821:24;;4831:13;;4821:24;;;;;2169:1;;1938;3608::23;2866;4264:588:22;;:::o;5398:256::-;5529:32;;;;:17;:32;;;;;;;:51;;;5595:52;5547:13;;5595:52;;;;5564:16;;5595:52;;;;;;;;;;5398:256;;:::o;15495:523:23:-;15667:7;15637:11;3689:24;;;3681:52;;;;-1:-1:-1;;;3681:52:23;;;;;;;;;15714:16;;15770:140;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15770:140:23;;;;;;15740:27;;;;;;;;;;:170;;;;;;;;;;;;;;;-1:-1:-1;15740:170:23;;;;;;;15770:140;;15740:27;;:170;;;;;;;;;:::i;:::-;-1:-1:-1;15740:170:23;;;;;;;;;;;;-1:-1:-1;;15740:170:23;;;;;;;;;;15920:16;:21;;-1:-1:-1;15920:21:23;;;15956:25;;15967:13;;15956:25;;-1:-1:-1;;15956:25:23;15998:13;15495:523;-1:-1:-1;;;;;15495:523:23:o;13926:1240::-;14095:4;14115:11;14241:4;14235:11;14374:2;14368:4;14364:13;15039:1;15020;14912:10;14893:1;14870:5;14841:11;14496:5;14491:3;14487:15;14465:662;14455:672;13926:1240;-1:-1:-1;;;;;;;;13926:1240:23:o;1160:4496:22:-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1160:4496:22;;;-1:-1:-1;1160:4496:22;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;5:130:-1;72:20;;97:33;72:20;97:33;;160:707;;277:3;270:4;262:6;258:17;254:27;244:2;;295:1;292;285:12;244:2;332:6;319:20;354:80;369:64;426:6;369:64;;;354:80;;;345:89;;451:5;476:6;469:5;462:21;506:4;498:6;494:17;484:27;;528:4;523:3;519:14;512:21;;581:6;628:3;620:4;612:6;608:17;603:3;599:27;596:36;593:2;;;645:1;642;635:12;593:2;670:1;655:206;680:6;677:1;674:13;655:206;;;738:3;760:37;793:3;781:10;760:37;;;748:50;;-1:-1;821:4;812:14;;;;840;;;;;702:1;695:9;655:206;;;659:14;237:630;;;;;;;;875:124;939:20;;964:30;939:20;964:30;;1007:440;;1108:3;1101:4;1093:6;1089:17;1085:27;1075:2;;1126:1;1123;1116:12;1075:2;1163:6;1150:20;1185:64;1200:48;1241:6;1200:48;;1185:64;1176:73;;1269:6;1262:5;1255:21;1305:4;1297:6;1293:17;1338:4;1331:5;1327:16;1373:3;1364:6;1359:3;1355:16;1352:25;1349:2;;;1390:1;1387;1380:12;1349:2;1400:41;1434:6;1429:3;1424;1400:41;;;1068:379;;;;;;;;1455:130;1522:20;;1547:33;1522:20;1547:33;;1592:128;1658:20;;1683:32;1658:20;1683:32;;1727:241;;1831:2;1819:9;1810:7;1806:23;1802:32;1799:2;;;1847:1;1844;1837:12;1799:2;1882:1;1899:53;1944:7;1924:9;1899:53;;1975:366;;;2096:2;2084:9;2075:7;2071:23;2067:32;2064:2;;;2112:1;2109;2102:12;2064:2;2147:1;2164:53;2209:7;2189:9;2164:53;;;2154:63;;2126:97;2254:2;2272:53;2317:7;2308:6;2297:9;2293:22;2272:53;;;2262:63;;2233:98;2058:283;;;;;;2348:595;;;;2495:2;2483:9;2474:7;2470:23;2466:32;2463:2;;;2511:1;2508;2501:12;2463:2;2546:1;2563:53;2608:7;2588:9;2563:53;;;2553:63;;2525:97;2653:2;2671:53;2716:7;2707:6;2696:9;2692:22;2671:53;;;2661:63;;2632:98;2789:2;2778:9;2774:18;2761:32;2813:18;2805:6;2802:30;2799:2;;;2845:1;2842;2835:12;2799:2;2865:62;2919:7;2910:6;2899:9;2895:22;2865:62;;;2855:72;;2740:193;2457:486;;;;;;2950:377;;3079:2;3067:9;3058:7;3054:23;3050:32;3047:2;;;3095:1;3092;3085:12;3047:2;3130:31;;3181:18;3170:30;;3167:2;;;3213:1;3210;3203:12;3167:2;3233:78;3303:7;3294:6;3283:9;3279:22;3233:78;;3334:354;;;3449:2;3437:9;3428:7;3424:23;3420:32;3417:2;;;3465:1;3462;3455:12;3417:2;3500:1;3517:50;3559:7;3539:9;3517:50;;;3507:60;;3479:94;3604:2;3622:50;3664:7;3655:6;3644:9;3640:22;3622:50;;3695:241;;3799:2;3787:9;3778:7;3774:23;3770:32;3767:2;;;3815:1;3812;3805:12;3767:2;3850:1;3867:53;3912:7;3892:9;3867:53;;3943:366;;;4064:2;4052:9;4043:7;4039:23;4035:32;4032:2;;;4080:1;4077;4070:12;4032:2;4115:1;4132:53;4177:7;4157:9;4132:53;;4316:605;;;;;4465:3;4453:9;4444:7;4440:23;4436:33;4433:2;;;4482:1;4479;4472:12;4433:2;4517:1;4534:53;4579:7;4559:9;4534:53;;;4524:63;;4496:97;4624:2;4642:53;4687:7;4678:6;4667:9;4663:22;4642:53;;;4632:63;;4603:98;4732:2;4750:50;4792:7;4783:6;4772:9;4768:22;4750:50;;;4740:60;;4711:95;4837:2;4855:50;4897:7;4888:6;4877:9;4873:22;4855:50;;;4845:60;;4816:95;4427:494;;;;;;;;4928:239;;5031:2;5019:9;5010:7;5006:23;5002:32;4999:2;;;5047:1;5044;5037:12;4999:2;5082:1;5099:52;5143:7;5123:9;5099:52;;5175:173;;5262:46;5304:3;5296:6;5262:46;;;-1:-1;;5337:4;5328:14;;5255:93;5357:173;;5444:46;5486:3;5478:6;5444:46;;5538:103;5611:24;5629:5;5611:24;;;5606:3;5599:37;5593:48;;;5799:690;;5944:54;5992:5;5944:54;;;6011:86;6090:6;6085:3;6011:86;;;6004:93;;6118:56;6168:5;6118:56;;;6194:7;6222:1;6207:260;6232:6;6229:1;6226:13;6207:260;;;6299:6;6293:13;6320:63;6379:3;6364:13;6320:63;;;6313:70;;6400:60;6453:6;6400:60;;;6390:70;-1:-1;;6254:1;6247:9;6207:260;;;-1:-1;6480:3;;5923:566;-1:-1;;;;;5923:566;6528:690;;6673:54;6721:5;6673:54;;;6740:86;6819:6;6814:3;6740:86;;;6733:93;;6847:56;6897:5;6847:56;;;6923:7;6951:1;6936:260;6961:6;6958:1;6955:13;6936:260;;;7028:6;7022:13;7049:63;7108:3;7093:13;7049:63;;;7042:70;;7129:60;7182:6;7129:60;;;7119:70;-1:-1;;6983:1;6976:9;6936:260;;7226:104;7303:21;7318:5;7303:21;;7337:335;;7443:34;7471:5;7443:34;;;7489:70;7552:6;7547:3;7489:70;;;7482:77;;7564:52;7609:6;7604:3;7597:4;7590:5;7586:16;7564:52;;;7637:29;7659:6;7637:29;;;7628:39;;;;7423:249;-1:-1;;;7423:249;7680:311;;7840:67;7904:2;7899:3;7840:67;;;7940:13;7920:34;;7982:2;7973:12;;7826:165;-1:-1;;7826:165;8000:312;;8160:67;8224:2;8219:3;8160:67;;;8260:14;8240:35;;8303:2;8294:12;;8146:166;-1:-1;;8146:166;8321:322;;8481:67;8545:2;8540:3;8481:67;;;8581:24;8561:45;;8634:2;8625:12;;8467:176;-1:-1;;8467:176;8652:315;;8812:67;8876:2;8871:3;8812:67;;;8912:17;8892:38;;8958:2;8949:12;;8798:169;-1:-1;;8798:169;8976:311;;9136:67;9200:2;9195:3;9136:67;;;9236:13;9216:34;;9278:2;9269:12;;9122:165;-1:-1;;9122:165;9296:326;;9456:67;9520:2;9515:3;9456:67;;;9556:28;9536:49;;9613:2;9604:12;;9442:180;-1:-1;;9442:180;9631:328;;9791:67;9855:2;9850:3;9791:67;;;9891:30;9871:51;;9950:2;9941:12;;9777:182;-1:-1;;9777:182;9968:325;;10128:67;10192:2;10187:3;10128:67;;;10228:27;10208:48;;10284:2;10275:12;;10114:179;-1:-1;;10114:179;10302:320;;10462:67;10526:2;10521:3;10462:67;;;10562:22;10542:43;;10613:2;10604:12;;10448:174;-1:-1;;10448:174;10631:315;;10791:67;10855:2;10850:3;10791:67;;;10891:17;10871:38;;10937:2;10928:12;;10777:169;-1:-1;;10777:169;10955:329;;11115:67;11179:2;11174:3;11115:67;;;11215:31;11195:52;;11275:2;11266:12;;11101:183;-1:-1;;11101:183;11293:320;;11453:67;11517:2;11512:3;11453:67;;;11553:22;11533:43;;11604:2;11595:12;;11439:174;-1:-1;;11439:174;11622:318;;11782:67;11846:2;11841:3;11782:67;;;11882:20;11862:41;;11931:2;11922:12;;11768:172;-1:-1;;11768:172;11948:103;12021:24;12039:5;12021:24;;12178:110;12259:23;12276:5;12259:23;;12295:213;12413:2;12398:18;;12427:71;12402:9;12471:6;12427:71;;12515:611;12725:3;12710:19;;12740:71;12714:9;12784:6;12740:71;;;12822:72;12890:2;12879:9;12875:18;12866:6;12822:72;;;12942:9;12936:4;12932:20;12927:2;12916:9;12912:18;12905:48;12967:72;13034:4;13025:6;12967:72;;;12959:80;;13050:66;13112:2;13101:9;13097:18;13088:6;13050:66;;13133:361;13301:2;13315:47;;;13286:18;;13376:108;13286:18;13470:6;13376:108;;;13368:116;13272:222;-1:-1;;;13272:222;13501:361;13669:2;13683:47;;;13654:18;;13744:108;13654:18;13838:6;13744:108;;13869:201;13981:2;13966:18;;13995:65;13970:9;14033:6;13995:65;;14077:407;14268:2;14282:47;;;14253:18;;14343:131;14253:18;14343:131;;14491:407;14682:2;14696:47;;;14667:18;;14757:131;14667:18;14757:131;;14905:407;15096:2;15110:47;;;15081:18;;15171:131;15081:18;15171:131;;15319:407;15510:2;15524:47;;;15495:18;;15585:131;15495:18;15585:131;;15733:407;15924:2;15938:47;;;15909:18;;15999:131;15909:18;15999:131;;16147:407;16338:2;16352:47;;;16323:18;;16413:131;16323:18;16413:131;;16561:407;16752:2;16766:47;;;16737:18;;16827:131;16737:18;16827:131;;16975:407;17166:2;17180:47;;;17151:18;;17241:131;17151:18;17241:131;;17389:407;17580:2;17594:47;;;17565:18;;17655:131;17565:18;17655:131;;17803:407;17994:2;18008:47;;;17979:18;;18069:131;17979:18;18069:131;;18217:407;18408:2;18422:47;;;18393:18;;18483:131;18393:18;18483:131;;18631:407;18822:2;18836:47;;;18807:18;;18897:131;18807:18;18897:131;;19045:407;19236:2;19250:47;;;19221:18;;19311:131;19221:18;19311:131;;19459:213;19577:2;19562:18;;19591:71;19566:9;19635:6;19591:71;;19679:209;19795:2;19780:18;;19809:69;19784:9;19851:6;19809:69;;19895:256;19957:2;19951:9;19983:17;;;20058:18;20043:34;;20079:22;;;20040:62;20037:2;;;20115:1;20112;20105:12;20037:2;20131;20124:22;19935:216;;-1:-1;19935:216;20158:304;;20317:18;20309:6;20306:30;20303:2;;;20349:1;20346;20339:12;20303:2;-1:-1;20384:4;20372:17;;;20437:15;;20240:222;20469:321;;20612:18;20604:6;20601:30;20598:2;;;20644:1;20641;20634:12;20598:2;-1:-1;20775:4;20711;20688:17;;;;20707:9;20684:33;20765:15;;20535:255;20797:151;20921:4;20912:14;;20869:79;21113:137;21216:12;;21187:63;21756:178;21874:19;;;21923:4;21914:14;;21867:67;22472:91;;22534:24;22552:5;22534:24;;22570:85;22636:13;22629:21;;22612:43;22662:121;22735:42;22724:54;;22707:76;22869:88;22941:10;22930:22;;22913:44;22965:145;23046:6;23041:3;23036;23023:30;-1:-1;23102:1;23084:16;;23077:27;23016:94;23119:268;23184:1;23191:101;23205:6;23202:1;23199:13;23191:101;;;23272:11;;;23266:18;23253:11;;;23246:39;23227:2;23220:10;23191:101;;;23307:6;23304:1;23301:13;23298:2;;;23372:1;23363:6;23358:3;23354:16;23347:27;23298:2;23168:219;;;;;23395:97;23483:2;23463:14;23479:7;23459:28;;23443:49;23500:117;23569:24;23587:5;23569:24;;;23562:5;23559:35;23549:2;;23608:1;23605;23598:12;23549:2;23543:74;;23624:111;23690:21;23705:5;23690:21;;23742:117;23811:24;23829:5;23811:24;;23866:115;23934:23;23951:5;23934:23;",
676
676
  "source": "/*\n\n Copyright 2019 dYdX Trading Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.5.7;\npragma experimental ABIEncoderV2;\n\nimport { MultiSig } from \"./MultiSig.sol\";\n\n\n/**\n * @title DelayedMultiSig\n * @author dYdX\n *\n * Multi-Signature Wallet with delay in execution.\n * Allows multiple parties to execute a transaction after a time lock has passed.\n * Adapted from Amir Bandeali's MultiSigWalletWithTimeLock contract.\n\n * Logic Changes:\n * - Only owners can execute transactions\n * - Require that each transaction succeeds\n * - Added function to execute multiple transactions within the same Ethereum transaction\n */\ncontract DelayedMultiSig is\n MultiSig\n{\n // ============ Events ============\n\n event ConfirmationTimeSet(uint256 indexed transactionId, uint256 confirmationTime);\n event TimeLockChange(uint32 secondsTimeLocked);\n\n // ============ Storage ============\n\n uint32 public secondsTimeLocked;\n mapping (uint256 => uint256) public confirmationTimes;\n\n // ============ Modifiers ============\n\n modifier notFullyConfirmed(\n uint256 transactionId\n ) {\n require(\n !isConfirmed(transactionId),\n \"TX_FULLY_CONFIRMED\"\n );\n _;\n }\n\n modifier fullyConfirmed(\n uint256 transactionId\n ) {\n require(\n isConfirmed(transactionId),\n \"TX_NOT_FULLY_CONFIRMED\"\n );\n _;\n }\n\n modifier pastTimeLock(\n uint256 transactionId\n ) {\n require(\n block.timestamp >= confirmationTimes[transactionId] + secondsTimeLocked,\n \"TIME_LOCK_INCOMPLETE\"\n );\n _;\n }\n\n // ============ Constructor ============\n\n /**\n * Contract constructor sets initial owners, required number of confirmations, and time lock.\n *\n * @param _owners List of initial owners.\n * @param _required Number of required confirmations.\n * @param _secondsTimeLocked Duration needed after a transaction is confirmed and before it\n * becomes executable, in seconds.\n */\n constructor (\n address[] memory _owners,\n uint256 _required,\n uint32 _secondsTimeLocked\n )\n public\n MultiSig(_owners, _required)\n {\n secondsTimeLocked = _secondsTimeLocked;\n }\n\n // ============ Wallet-Only Functions ============\n\n /**\n * Changes the duration of the time lock for transactions.\n *\n * @param _secondsTimeLocked Duration needed after a transaction is confirmed and before it\n * becomes executable, in seconds.\n */\n function changeTimeLock(\n uint32 _secondsTimeLocked\n )\n public\n onlyWallet\n {\n secondsTimeLocked = _secondsTimeLocked;\n emit TimeLockChange(_secondsTimeLocked);\n }\n\n // ============ Admin Functions ============\n\n /**\n * Allows an owner to confirm a transaction.\n * Overrides the function in MultiSig.\n *\n * @param transactionId Transaction ID.\n */\n function confirmTransaction(\n uint256 transactionId\n )\n public\n ownerExists(msg.sender)\n transactionExists(transactionId)\n notConfirmed(transactionId, msg.sender)\n notFullyConfirmed(transactionId)\n {\n confirmations[transactionId][msg.sender] = true;\n emit Confirmation(msg.sender, transactionId);\n if (isConfirmed(transactionId)) {\n setConfirmationTime(transactionId, block.timestamp);\n }\n }\n\n /**\n * Allows an owner to execute a confirmed transaction.\n * Overrides the function in MultiSig.\n *\n * @param transactionId Transaction ID.\n */\n function executeTransaction(\n uint256 transactionId\n )\n public\n ownerExists(msg.sender)\n notExecuted(transactionId)\n fullyConfirmed(transactionId)\n pastTimeLock(transactionId)\n {\n Transaction storage txn = transactions[transactionId];\n txn.executed = true;\n bool success = externalCall(\n txn.destination,\n txn.value,\n txn.data.length,\n txn.data\n );\n require(\n success,\n \"TX_REVERTED\"\n );\n emit Execution(transactionId);\n }\n\n /**\n * Allows an owner to execute multiple confirmed transactions.\n *\n * @param transactionIds List of transaction IDs.\n */\n function executeMultipleTransactions(\n uint256[] memory transactionIds\n )\n public\n ownerExists(msg.sender)\n {\n for (uint256 i = 0; i < transactionIds.length; i++) {\n executeTransaction(transactionIds[i]);\n }\n }\n\n // ============ Helper Functions ============\n\n /**\n * Sets the time of when a submission first passed.\n */\n function setConfirmationTime(\n uint256 transactionId,\n uint256 confirmationTime\n )\n internal\n {\n confirmationTimes[transactionId] = confirmationTime;\n emit ConfirmationTimeSet(transactionId, confirmationTime);\n }\n}\n",
677
- "sourcePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/external/multisig/DelayedMultiSig.sol",
677
+ "sourcePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/multisig/DelayedMultiSig.sol",
678
678
  "ast": {
679
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/external/multisig/DelayedMultiSig.sol",
679
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/multisig/DelayedMultiSig.sol",
680
680
  "exportedSymbols": {
681
681
  "DelayedMultiSig": [
682
682
  6519
@@ -706,7 +706,7 @@
706
706
  "src": "627:33:22"
707
707
  },
708
708
  {
709
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/external/multisig/MultiSig.sol",
709
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/multisig/MultiSig.sol",
710
710
  "file": "./MultiSig.sol",
711
711
  "id": 6270,
712
712
  "nodeType": "ImportDirective",
@@ -3825,7 +3825,7 @@
3825
3825
  "src": "603:5054:22"
3826
3826
  },
3827
3827
  "legacyAST": {
3828
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/external/multisig/DelayedMultiSig.sol",
3828
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/multisig/DelayedMultiSig.sol",
3829
3829
  "exportedSymbols": {
3830
3830
  "DelayedMultiSig": [
3831
3831
  6519
@@ -3855,7 +3855,7 @@
3855
3855
  "src": "627:33:22"
3856
3856
  },
3857
3857
  {
3858
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/external/multisig/MultiSig.sol",
3858
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/multisig/MultiSig.sol",
3859
3859
  "file": "./MultiSig.sol",
3860
3860
  "id": 6270,
3861
3861
  "nodeType": "ImportDirective",
@@ -6979,7 +6979,7 @@
6979
6979
  },
6980
6980
  "networks": {},
6981
6981
  "schemaVersion": "3.0.23",
6982
- "updatedAt": "2022-02-04T01:55:00.784Z",
6982
+ "updatedAt": "2022-02-07T07:18:44.860Z",
6983
6983
  "devdoc": {
6984
6984
  "author": "dYdX * Multi-Signature Wallet with delay in execution. Allows multiple parties to execute a transaction after a time lock has passed. Adapted from Amir Bandeali's MultiSigWalletWithTimeLock contract. Logic Changes: - Only owners can execute transactions - Require that each transaction succeeds - Added function to execute multiple transactions within the same Ethereum transaction",
6985
6985
  "methods": {
@@ -344,15 +344,15 @@
344
344
  "type": "function"
345
345
  }
346
346
  ],
347
- "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/amm/DolomiteAmmERC20.sol\":\"DolomiteAmmERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/amm/DolomiteAmmERC20.sol\":{\"keccak256\":\"0x8f6dc3db9d017ee8f5e279dd79ea0ec6753c91e4b3246690647456ce25821e2a\",\"urls\":[\"bzz-raw://1c53e2fb97fe94096581cc688d742d8c8c30a916e134fb6bc80ce901304e38fe\",\"dweb:/ipfs/QmXNyZXey3Ej9Ahukyf7Dg4fQvm1fbYiTAxJXAMkTNsNPE\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/interfaces/IDolomiteAmmERC20.sol\":{\"keccak256\":\"0x61b5107403bfc5ad3a60aceb47fdeb6e284c918e7828cbad4396d1ad5b0011eb\",\"urls\":[\"bzz-raw://a8d0635af18ec5e6d9a7226eecd3e522c04eae29430bbe1cc5a46315006cda11\",\"dweb:/ipfs/QmTvg9zxpGRXGrAda15SP3V1hE6CbBK7VWzM8J3MhWTa3h\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IERC20Detailed.sol\":{\"keccak256\":\"0x22a62e2a8155e70300773721902f4b9118e17aa0bb5d9d1b046050a014cfb223\",\"urls\":[\"bzz-raw://03af737a33c552fbe58f6f1fbd5496854fdc28dd57be4365d56663725c083a18\",\"dweb:/ipfs/QmbgLqGAQEd6tXsZB8QaPNCAMiU6nNzP75wNbKdS65BuUF\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Require.sol\":{\"keccak256\":\"0xe641662503ea29ca959e84674188c3e9deaaf64c5623fb9560a4301c521ca1d3\",\"urls\":[\"bzz-raw://b10a04c7d014b99eb792c8c774e203c846d070b30cf0b715325fc07838ed6a6d\",\"dweb:/ipfs/QmUqZWnbchfEY9jM647yQamHe4GzspfUeRQF9k2nn1Hixd\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe5bb0f57cff3e299f360052ba50f1ea0fff046df2be070b6943e0e3c3fdad8a9\",\"urls\":[\"bzz-raw://59fd025151435da35faa8093a5c7a17de02de9d08ad27275c5cdf05050820d91\",\"dweb:/ipfs/QmQMvwEcPhoRXzbXyrdoeRtvLoifUW9Qh7Luho7bmUPRkc\"]}},\"version\":1}",
347
+ "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/amm/DolomiteAmmERC20.sol\":\"DolomiteAmmERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/amm/DolomiteAmmERC20.sol\":{\"keccak256\":\"0x8f6dc3db9d017ee8f5e279dd79ea0ec6753c91e4b3246690647456ce25821e2a\",\"urls\":[\"bzz-raw://1c53e2fb97fe94096581cc688d742d8c8c30a916e134fb6bc80ce901304e38fe\",\"dweb:/ipfs/QmXNyZXey3Ej9Ahukyf7Dg4fQvm1fbYiTAxJXAMkTNsNPE\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/interfaces/IDolomiteAmmERC20.sol\":{\"keccak256\":\"0x61b5107403bfc5ad3a60aceb47fdeb6e284c918e7828cbad4396d1ad5b0011eb\",\"urls\":[\"bzz-raw://a8d0635af18ec5e6d9a7226eecd3e522c04eae29430bbe1cc5a46315006cda11\",\"dweb:/ipfs/QmTvg9zxpGRXGrAda15SP3V1hE6CbBK7VWzM8J3MhWTa3h\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/interfaces/IERC20Detailed.sol\":{\"keccak256\":\"0x22a62e2a8155e70300773721902f4b9118e17aa0bb5d9d1b046050a014cfb223\",\"urls\":[\"bzz-raw://03af737a33c552fbe58f6f1fbd5496854fdc28dd57be4365d56663725c083a18\",\"dweb:/ipfs/QmbgLqGAQEd6tXsZB8QaPNCAMiU6nNzP75wNbKdS65BuUF\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Require.sol\":{\"keccak256\":\"0xe641662503ea29ca959e84674188c3e9deaaf64c5623fb9560a4301c521ca1d3\",\"urls\":[\"bzz-raw://b10a04c7d014b99eb792c8c774e203c846d070b30cf0b715325fc07838ed6a6d\",\"dweb:/ipfs/QmUqZWnbchfEY9jM647yQamHe4GzspfUeRQF9k2nn1Hixd\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe5bb0f57cff3e299f360052ba50f1ea0fff046df2be070b6943e0e3c3fdad8a9\",\"urls\":[\"bzz-raw://59fd025151435da35faa8093a5c7a17de02de9d08ad27275c5cdf05050820d91\",\"dweb:/ipfs/QmQMvwEcPhoRXzbXyrdoeRtvLoifUW9Qh7Luho7bmUPRkc\"]}},\"version\":1}",
348
348
  "bytecode": "0x",
349
349
  "deployedBytecode": "0x",
350
350
  "sourceMap": "",
351
351
  "deployedSourceMap": "",
352
352
  "source": "/*\n\n Copyright 2021 Dolomite.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.5.16;\n\nimport \"@openzeppelin/contracts/math/SafeMath.sol\";\n\nimport \"../../protocol/interfaces/IERC20Detailed.sol\";\nimport \"../../protocol/lib/Require.sol\";\n\nimport \"../interfaces/IDolomiteAmmERC20.sol\";\n\n\ncontract DolomiteAmmERC20 is IDolomiteAmmERC20 {\n using SafeMath for uint;\n\n bytes32 private constant FILE = \"DolomiteAmmERC20\";\n\n uint public totalSupply;\n mapping(address => uint) public balanceOf;\n mapping(address => mapping(address => uint)) public allowance;\n\n bytes32 public DOMAIN_SEPARATOR;\n // keccak256(\"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\");\n bytes32 public constant PERMIT_TYPEHASH = 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9;\n mapping(address => uint) public nonces;\n\n event Approval(address indexed owner, address indexed spender, uint value);\n event Transfer(address indexed from, address indexed to, uint value);\n\n constructor() public {\n uint chainId;\n /* solium-disable-next-line security/no-inline-assembly */\n assembly {\n chainId := chainid()\n }\n DOMAIN_SEPARATOR = keccak256(\n abi.encode(\n keccak256(\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\"),\n keccak256(bytes(name())),\n keccak256(bytes(\"1\")),\n chainId,\n address(this)\n )\n );\n }\n\n function approve(address spender, uint value) external returns (bool) {\n _approve(msg.sender, spender, value);\n return true;\n }\n\n function transfer(address to, uint value) external returns (bool) {\n _transfer(msg.sender, to, value);\n return true;\n }\n\n function transferFrom(address from, address to, uint value) external returns (bool) {\n if (allowance[from][msg.sender] != uint(-1)) {\n allowance[from][msg.sender] = allowance[from][msg.sender].sub(value);\n }\n _transfer(from, to, value);\n return true;\n }\n\n function permit(\n address owner,\n address spender,\n uint value,\n uint deadline,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) external {\n Require.that(\n deadline >= block.timestamp,\n FILE,\n \"expired\"\n );\n bytes32 digest = keccak256(\n abi.encodePacked(\n \"\\x19\\x01\",\n DOMAIN_SEPARATOR,\n /* solium-disable-next-line arg-overflow */\n keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, value, nonces[owner]++, deadline))\n )\n );\n /* solium-disable-next-line arg-overflow */\n address recoveredAddress = ecrecover(digest, v, r, s);\n Require.that(\n recoveredAddress != address(0) && recoveredAddress == owner,\n FILE,\n \"invalid signature\"\n );\n _approve(owner, spender, value);\n }\n\n function _mint(address to, uint value) internal {\n totalSupply = totalSupply.add(value);\n balanceOf[to] = balanceOf[to].add(value);\n emit Transfer(address(0), to, value);\n }\n\n function _burn(address from, uint value) internal {\n balanceOf[from] = balanceOf[from].sub(value);\n totalSupply = totalSupply.sub(value);\n emit Transfer(from, address(0), value);\n }\n\n function _approve(address owner, address spender, uint value) private {\n allowance[owner][spender] = value;\n emit Approval(owner, spender, value);\n }\n\n function _transfer(address from, address to, uint value) private {\n balanceOf[from] = balanceOf[from].sub(value);\n balanceOf[to] = balanceOf[to].add(value);\n emit Transfer(from, to, value);\n }\n}\n",
353
- "sourcePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/external/amm/DolomiteAmmERC20.sol",
353
+ "sourcePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/amm/DolomiteAmmERC20.sol",
354
354
  "ast": {
355
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/external/amm/DolomiteAmmERC20.sol",
355
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/amm/DolomiteAmmERC20.sol",
356
356
  "exportedSymbols": {
357
357
  "DolomiteAmmERC20": [
358
358
  446
@@ -384,7 +384,7 @@
384
384
  "unitAlias": ""
385
385
  },
386
386
  {
387
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IERC20Detailed.sol",
387
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/interfaces/IERC20Detailed.sol",
388
388
  "file": "../../protocol/interfaces/IERC20Detailed.sol",
389
389
  "id": 62,
390
390
  "nodeType": "ImportDirective",
@@ -395,7 +395,7 @@
395
395
  "unitAlias": ""
396
396
  },
397
397
  {
398
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Require.sol",
398
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Require.sol",
399
399
  "file": "../../protocol/lib/Require.sol",
400
400
  "id": 63,
401
401
  "nodeType": "ImportDirective",
@@ -406,7 +406,7 @@
406
406
  "unitAlias": ""
407
407
  },
408
408
  {
409
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/external/interfaces/IDolomiteAmmERC20.sol",
409
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/interfaces/IDolomiteAmmERC20.sol",
410
410
  "file": "../interfaces/IDolomiteAmmERC20.sol",
411
411
  "id": 64,
412
412
  "nodeType": "ImportDirective",
@@ -5666,7 +5666,7 @@
5666
5666
  "src": "595:3816:1"
5667
5667
  },
5668
5668
  "legacyAST": {
5669
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/external/amm/DolomiteAmmERC20.sol",
5669
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/amm/DolomiteAmmERC20.sol",
5670
5670
  "exportedSymbols": {
5671
5671
  "DolomiteAmmERC20": [
5672
5672
  446
@@ -5698,7 +5698,7 @@
5698
5698
  "unitAlias": ""
5699
5699
  },
5700
5700
  {
5701
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IERC20Detailed.sol",
5701
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/interfaces/IERC20Detailed.sol",
5702
5702
  "file": "../../protocol/interfaces/IERC20Detailed.sol",
5703
5703
  "id": 62,
5704
5704
  "nodeType": "ImportDirective",
@@ -5709,7 +5709,7 @@
5709
5709
  "unitAlias": ""
5710
5710
  },
5711
5711
  {
5712
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Require.sol",
5712
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/protocol/lib/Require.sol",
5713
5713
  "file": "../../protocol/lib/Require.sol",
5714
5714
  "id": 63,
5715
5715
  "nodeType": "ImportDirective",
@@ -5720,7 +5720,7 @@
5720
5720
  "unitAlias": ""
5721
5721
  },
5722
5722
  {
5723
- "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/external/interfaces/IDolomiteAmmERC20.sol",
5723
+ "absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/interfaces/IDolomiteAmmERC20.sol",
5724
5724
  "file": "../interfaces/IDolomiteAmmERC20.sol",
5725
5725
  "id": 64,
5726
5726
  "nodeType": "ImportDirective",
@@ -10985,7 +10985,7 @@
10985
10985
  },
10986
10986
  "networks": {},
10987
10987
  "schemaVersion": "3.0.23",
10988
- "updatedAt": "2022-02-04T01:55:00.682Z",
10988
+ "updatedAt": "2022-02-07T07:18:44.754Z",
10989
10989
  "devdoc": {
10990
10990
  "methods": {}
10991
10991
  },