UNPKG

@dolomite-exchange/dolomite-margin

Version:

Ethereum Smart Contracts and TypeScript library used for the DolomiteMargin trading protocol

449 lines 1.58 MB
{ "contractName": "AdminImpl", "abi": [ { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "marketId", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "token", "type": "address" } ], "name": "LogAddMarket", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "accountMaxNumberOfMarketsWithBalances", "type": "uint256" } ], "name": "LogSetAccountMaxNumberOfMarketsWithBalances", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "accountOwner", "type": "address" }, { "indexed": false, "internalType": "contract IAccountRiskOverrideSetter", "name": "accountRiskOverrideSetter", "type": "address" } ], "name": "LogSetAccountRiskOverrideSetter", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "autoTrader", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "isSpecial", "type": "bool" } ], "name": "LogSetAutoTraderIsSpecial", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "callbackGasLimit", "type": "uint256" } ], "name": "LogSetCallbackGasLimit", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "contract IAccountRiskOverrideSetter", "name": "defaultAccountRiskOverrideSetter", "type": "address" } ], "name": "LogSetDefaultAccountRiskOverrideSetter", "type": "event" }, { "anonymous": false, "inputs": [ { "components": [ { "internalType": "uint256", "name": "value", "type": "uint256" } ], "indexed": false, "internalType": "struct Decimal.D256", "name": "earningsRate", "type": "tuple" } ], "name": "LogSetEarningsRate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "marketId", "type": "uint256" }, { "components": [ { "internalType": "uint256", "name": "value", "type": "uint256" } ], "indexed": false, "internalType": "struct Decimal.D256", "name": "earningsRateOverride", "type": "tuple" } ], "name": "LogSetEarningsRateOverride", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "LogSetGlobalOperator", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "marketId", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "interestSetter", "type": "address" } ], "name": "LogSetInterestSetter", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "marketId", "type": "uint256" }, { "indexed": false, "internalType": "bool", "name": "isClosing", "type": "bool" } ], "name": "LogSetIsClosing", "type": "event" }, { "anonymous": false, "inputs": [ { "components": [ { "internalType": "uint256", "name": "value", "type": "uint256" } ], "indexed": false, "internalType": "struct Decimal.D256", "name": "liquidationSpread", "type": "tuple" } ], "name": "LogSetLiquidationSpread", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "marketId", "type": "uint256" }, { "components": [ { "internalType": "uint256", "name": "value", "type": "uint256" } ], "indexed": false, "internalType": "struct Decimal.D256", "name": "liquidationSpreadPremium", "type": "tuple" } ], "name": "LogSetLiquidationSpreadPremium", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "marketId", "type": "uint256" }, { "components": [ { "internalType": "uint256", "name": "value", "type": "uint256" } ], "indexed": false, "internalType": "struct Decimal.D256", "name": "marginPremium", "type": "tuple" } ], "name": "LogSetMarginPremium", "type": "event" }, { "anonymous": false, "inputs": [ { "components": [ { "internalType": "uint256", "name": "value", "type": "uint256" } ], "indexed": false, "internalType": "struct Decimal.D256", "name": "marginRatio", "type": "tuple" } ], "name": "LogSetMarginRatio", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "marketId", "type": "uint256" }, { "components": [ { "internalType": "bool", "name": "sign", "type": "bool" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "indexed": false, "internalType": "struct Types.Wei", "name": "maxBorrowWei", "type": "tuple" } ], "name": "LogSetMaxBorrowWei", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "marketId", "type": "uint256" }, { "components": [ { "internalType": "bool", "name": "sign", "type": "bool" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "indexed": false, "internalType": "struct Types.Wei", "name": "maxSupplyWei", "type": "tuple" } ], "name": "LogSetMaxSupplyWei", "type": "event" }, { "anonymous": false, "inputs": [ { "components": [ { "internalType": "uint256", "name": "value", "type": "uint256" } ], "indexed": false, "internalType": "struct Monetary.Value", "name": "minBorrowedValue", "type": "tuple" } ], "name": "LogSetMinBorrowedValue", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "contract IOracleSentinel", "name": "oracleSentinel", "type": "address" } ], "name": "LogSetOracleSentinel", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "marketId", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "priceOracle", "type": "address" } ], "name": "LogSetPriceOracle", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "token", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "LogWithdrawExcessTokens", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "token", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "LogWithdrawUnsupportedTokens", "type": "event" } ], "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"LogAddMarket\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"accountMaxNumberOfMarketsWithBalances\",\"type\":\"uint256\"}],\"name\":\"LogSetAccountMaxNumberOfMarketsWithBalances\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"accountOwner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IAccountRiskOverrideSetter\",\"name\":\"accountRiskOverrideSetter\",\"type\":\"address\"}],\"name\":\"LogSetAccountRiskOverrideSetter\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"autoTrader\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isSpecial\",\"type\":\"bool\"}],\"name\":\"LogSetAutoTraderIsSpecial\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"callbackGasLimit\",\"type\":\"uint256\"}],\"name\":\"LogSetCallbackGasLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract IAccountRiskOverrideSetter\",\"name\":\"defaultAccountRiskOverrideSetter\",\"type\":\"address\"}],\"name\":\"LogSetDefaultAccountRiskOverrideSetter\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct Decimal.D256\",\"name\":\"earningsRate\",\"type\":\"tuple\"}],\"name\":\"LogSetEarningsRate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct Decimal.D256\",\"name\":\"earningsRateOverride\",\"type\":\"tuple\"}],\"name\":\"LogSetEarningsRateOverride\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"LogSetGlobalOperator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"interestSetter\",\"type\":\"address\"}],\"name\":\"LogSetInterestSetter\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isClosing\",\"type\":\"bool\"}],\"name\":\"LogSetIsClosing\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct Decimal.D256\",\"name\":\"liquidationSpread\",\"type\":\"tuple\"}],\"name\":\"LogSetLiquidationSpread\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct Decimal.D256\",\"name\":\"liquidationSpreadPremium\",\"type\":\"tuple\"}],\"name\":\"LogSetLiquidationSpreadPremium\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct Decimal.D256\",\"name\":\"marginPremium\",\"type\":\"tuple\"}],\"name\":\"LogSetMarginPremium\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct Decimal.D256\",\"name\":\"marginRatio\",\"type\":\"tuple\"}],\"name\":\"LogSetMarginRatio\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct Types.Wei\",\"name\":\"maxBorrowWei\",\"type\":\"tuple\"}],\"name\":\"LogSetMaxBorrowWei\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct Types.Wei\",\"name\":\"maxSupplyWei\",\"type\":\"tuple\"}],\"name\":\"LogSetMaxSupplyWei\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct Monetary.Value\",\"name\":\"minBorrowedValue\",\"type\":\"tuple\"}],\"name\":\"LogSetMinBorrowedValue\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract IOracleSentinel\",\"name\":\"oracleSentinel\",\"type\":\"address\"}],\"name\":\"LogSetOracleSentinel\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"priceOracle\",\"type\":\"address\"}],\"name\":\"LogSetPriceOracle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"LogWithdrawExcessTokens\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"LogWithdrawUnsupportedTokens\",\"type\":\"event\"}],\"devdoc\":{\"author\":\"dYdX * Administrative functions to keep the protocol updated\",\"methods\":{},\"title\":\"AdminImpl\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/impl/AdminImpl.sol\":\"AdminImpl\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/impl/AdminImpl.sol\":{\"keccak256\":\"0xe0e67a0da08bac8f60cf3c800c1d462a7046ff6959ff9ba0399f3d754931f672\",\"urls\":[\"bzz-raw://0441193eb7bcb8610dc9044827272d51b5be3294c1bb3f61828e0abc18e4226f\",\"dweb:/ipfs/QmZzpg6mbxu1MZgPHKZnkFfJsFU6Cnk9LNJ5Nu8JaGTVie\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IAccountRiskOverrideSetter.sol\":{\"keccak256\":\"0x5b9fde139ddfdaae7b650b3c3f6699e0e44605f0d9d3daadc1622eb06ad4c3f8\",\"urls\":[\"bzz-raw://2dfd5af24b6de63f94519c99fd8777a264d7cd11266fa2d525c7d72d96a9c7cf\",\"dweb:/ipfs/QmPg9fjhbnmBayZMh6yTG79xsK1PWSoAHA5pfwSXfnKKjF\"]},\"/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/interfaces/IInterestSetter.sol\":{\"keccak256\":\"0x546825f65490a30e29d0f6446acec49c1e895ce6b33d48ca5c05092725a63a57\",\"urls\":[\"bzz-raw://6ad3013aed985bdf6e6234ae0f7f37e6bba76c3470c33bfa24678cf19b3b412c\",\"dweb:/ipfs/QmfYaSBzxGpgiHoR7ontMJY66S5L26XwkLYoEuzsEjpbQH\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IOracleSentinel.sol\":{\"keccak256\":\"0xa94499fda55ef112640daed2cb1d06062e72c51c7b925c323b4e0ffa9b456ce5\",\"urls\":[\"bzz-raw://18b4a16acac577590a57f34f7ec6583e3cb35f575c948abb928b308d29cac1ab\",\"dweb:/ipfs/QmR1jLkzj6w7SjrdZ7GVW4V2vofSdMJwzjTqKpeUKABvxu\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IPriceOracle.sol\":{\"keccak256\":\"0x3f7c3d1397390ea44c6d5e5730d49476431c3df3b28334fe38218de5edc31138\",\"urls\":[\"bzz-raw://63ebf926fca9ce33aaabaf93805686acc25daded1648d6dab59c8c4d05116918\",\"dweb:/ipfs/QmeGkDp7ycYstpfqCYBiqoCYwy876gabx8r42o5koj3H5A\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Account.sol\":{\"keccak256\":\"0x2059276ea5e478bd5ac7f2712e7b1b6c85d291c647a54b264909044844828e67\",\"urls\":[\"bzz-raw://f153777051d12131b13a57e5c3af10a2670927cfc7d22c9519ab20c9b4b9bc89\",\"dweb:/ipfs/QmQMP3qS5xDAVGYKDfNkbkSqBKozQGQsGqX4e8VyjRtxPS\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Bits.sol\":{\"keccak256\":\"0x6d9a641163b2dd25e648c65f5d9e4949a57938e29ddc4c9dddefd74a9964aeef\",\"urls\":[\"bzz-raw://67e5a04ed4055faafbc100d6ccca9c54448ed378a1a8c71171562edda7bcbf7c\",\"dweb:/ipfs/QmYRikK3Xbgiq3UBJkgoo2zNUSSrShVabpRHmQj6iQHhrc\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Cache.sol\":{\"keccak256\":\"0xe57c80a7621a77fcb2acb9f883fb5248e71a6dce03bc2db56df0db3fee332950\",\"urls\":[\"bzz-raw://28e221c04629674490b9a0041d4f9a5f15e669dc0cc192a5df6e2c701c36369f\",\"dweb:/ipfs/QmaL3oh8c7v9cx91pB175pyCEuzxnhNTab4UxmBMsDYfUx\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Decimal.sol\":{\"keccak256\":\"0xd9a348c2b1eec076609ba12bbec6b9c2e4ea135790a7ef4f5411feb050af2144\",\"urls\":[\"bzz-raw://d5bcff29e47d5cd02d7a9966e9f44c46ccbb4f0e4adfc4b0b86646880677db39\",\"dweb:/ipfs/QmRKfJD4FFM1AvTynSFNx1NcDg94o9SAcjz7dvMaJCfecp\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/DolomiteMarginMath.sol\":{\"keccak256\":\"0x53f205f6a779d579be29faa9412c806a892b3e605fff092dfd9d14d936fa019f\",\"urls\":[\"bzz-raw://0ff936f89602a63b8e6a4eb4ce8f87673c0f45b7ce29694920905a3f0b5a6a69\",\"dweb:/ipfs/QmbYME9BeEvPC1ndV8EaUDX5fDMghLc3rocNUxFtgHmg8m\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/EnumerableSet.sol\":{\"keccak256\":\"0x41a3460e34b7b8635d936e35e6568ceb5354b638f53b884530e0d4875fa0f151\",\"urls\":[\"bzz-raw://d1a5ba866ee95d455afe5075dadd91fc71c2806371f2c1b358a1f67c632bb0df\",\"dweb:/ipfs/QmW4qCjmsG8J3UJv97GwDLDM7wt1K4yLDKAwzWMY7TFYi5\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Interest.sol\":{\"keccak256\":\"0x141a0ecb4a746f0e5767df4b99dbe33c6362df507ae9d5c02da1c1c17bc26df3\",\"urls\":[\"bzz-raw://9ff03e64a8ce5231acde07788624bf8c7a8ff55d90b157fa32f62fa887a0eff0\",\"dweb:/ipfs/QmUVxxWeE954RDXbmHJAYnHsXcit6rSXGqZUigu8t9oH2z\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Monetary.sol\":{\"keccak256\":\"0x5257274f2d4d3605f3e97ec45fb902111fe9a22506f0b4cf308ea933bc81bfe2\",\"urls\":[\"bzz-raw://85b8023b78805063a2ec8d376f1f5983994eabd96efd8ceadb0224dbb71c5678\",\"dweb:/ipfs/QmaDhzCzRqsuHuJfhToEC4pATQHwhh7yWWsjwfuRzFT1kG\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Require.sol\":{\"keccak256\":\"0x05a2a90b41b6a5f42f0a72da63d015fb0b406a9ba2172823352e522e8bf3a606\",\"urls\":[\"bzz-raw://19883f0c6d33266f756ec5c3d17539524aa24b993c46c33f8400801d09373a6c\",\"dweb:/ipfs/QmYX2fwK3vQQDSZLMrc5wMfeb8RWrcC9CGX8XECLty8QDk\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Storage.sol\":{\"keccak256\":\"0x9c27f3cd52af28c9b6bca18097b1793f114d08284d78417467d0d05f67e9e2a9\",\"urls\":[\"bzz-raw://d1ed0e7a7f76d59f30572996d4e164ab8fb5b2ec4bfca127983f9e936b904813\",\"dweb:/ipfs/QmePVYbgrY8Yw3Vf76pmEvE9pX916Jaa9we4kjM8tGM4J1\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Time.sol\":{\"keccak256\":\"0x87ee8d3c1d6e315a116426d8c8fc6f083e220fd14dda27fad4e8d7cab3dc7305\",\"urls\":[\"bzz-raw://7c20f2c52da682c3b5917fb6a19e81f43699b1d13c62b569ed723f34da72e766\",\"dweb:/ipfs/QmbXWYXi67nHBVNDKYUpo2E9ZaEVcHLvmXQkpYLMm1d5Vm\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Token.sol\":{\"keccak256\":\"0x095b5f8eb3665f6e246200311efc8a654fa3e90f9a1a522e27a4d089e8ab3917\",\"urls\":[\"bzz-raw://5db812b752a03d601d424e6e21be38153477082af0acf51b5c98eefa5553ed18\",\"dweb:/ipfs/QmbE549QUXYTurpx8hSMLBJvuBpfYqyNE6FBCgHJDY8PLf\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Types.sol\":{\"keccak256\":\"0xe1bab8c8799d83e86c7a49aaf815d8e3bc8d09562d46d44d921500db5e98de0e\",\"urls\":[\"bzz-raw://8ea3d0cc4fdab6dd9bba545a792170f939b342d8d1a7051c1c6365009af72658\",\"dweb:/ipfs/QmaLJgbavu88eEit6JPqfWnw6NmGBDZfveMXxumgWywBFG\"]},\"@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\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x1a8e5072509c5ea7365eb1d48030b9be865140c8fb779968da0a459a0e174a11\",\"urls\":[\"bzz-raw://03335b7b07c7c8c8d613cfdd8ec39a0b5ec133ee510bf2fe6cc5a496767bef4b\",\"dweb:/ipfs/Qmebp4nzPja645c9yXSdJkGq96oU3am3LUnG2K3R7XxyKf\"]}},\"version\":1}", "bytecode": "0x61344f610026600b82828239805160001a60731461001957fe5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061018c5760003560e01c806370b6151c116100e2578063b25328e011610096578063df7ff36311610070578063df7ff36314610409578063e80f802414610429578063f9cacc4c146104495761018c565b8063b25328e014610393578063bc54053f146103c9578063dd32998a146103e95761018c565b80638c5dabd1116100c75780638c5dabd114610333578063a289756d14610353578063aa92e348146103735761018c565b806370b6151c146102f35780637335079b146103135761018c565b80633c0c9ddc116101445780635cb90a6a1161011e5780635cb90a6a1461029357806369280845146102b35780636f481410146102d35761018c565b80633c0c9ddc146102335780633ea418831461025357806354dd3516146102735761018c565b806310c87b061161017557806310c87b06146101d35780631c90d824146101f3578063311401d0146102135761018c565b80630e7cd6f8146101915780630f44e6bc146101b3575b600080fd5b81801561019d57600080fd5b506101b16101ac366004612dc5565b610469565b005b8180156101bf57600080fd5b506101b16101ce366004612d95565b6104ac565b8180156101df57600080fd5b506101b16101ee366004612e27565b610578565b8180156101ff57600080fd5b506101b161020e366004612e8b565b610612565b81801561021f57600080fd5b506101b161022e366004612d95565b61062c565b81801561023f57600080fd5b506101b161024e366004612c06565b6106c1565b81801561025f57600080fd5b506101b161026e366004612ece565b610732565b81801561027f57600080fd5b506101b161028e366004612d95565b610747565b81801561029f57600080fd5b506101b16102ae366004612d65565b610807565b8180156102bf57600080fd5b506101b16102ce366004612e8b565b6109b2565b8180156102df57600080fd5b506101b16102ee366004612ece565b6109c7565b8180156102ff57600080fd5b506101b161030e366004612dc5565b6109dc565b81801561031f57600080fd5b506101b161032e366004612e8b565b610a89565b81801561033f57600080fd5b506101b161034e366004612e59565b610a9e565b81801561035f57600080fd5b506101b161036e366004612d65565b610ab3565b81801561037f57600080fd5b506101b161038e366004612e59565b610bfa565b81801561039f57600080fd5b506103b36103ae366004612df5565b610c0f565b6040516103c09190613259565b60405180910390f35b8180156103d557600080fd5b506101b16103e4366004612c8c565b610da5565b8180156103f557600080fd5b506103b3610404366004612bb9565b61102c565b81801561041557600080fd5b506101b1610424366004612c49565b611147565b81801561043557600080fd5b506101b1610444366004612c06565b6112a4565b81801561045557600080fd5b506101b1610464366004612d95565b611315565b600d82018190556040517f666be3717eee0b81b599a1d33d8714fbdea07c27044a5d8724df8479e41c8724906104a0908390613259565b60405180910390a15050565b601082015481516105029168010000000000000000900467ffffffffffffffff1610156810591b5a5b925b5c1b60ba1b7f53707265616420746f6f2068696768000000000000000000000000000000000061139e565b6007820154815161054191116810591b5a5b925b5c1b60ba1b7f5370726561642063616e6e6f74206265203e3d20726174696f0000000000000061139e565b805160088301556040517f9f7e4a6848b17eb13974d54a526bd85f5762577a23c3095ea6fd888d429e834b906104a090839061323d565b610582838361144f565b60008281526001840160205260409081902080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000084151502179055517fec669433aa0b3212a238c30115dbf73736739faf98a33c293ecad3daad1b37f6906106059084908490613282565b60405180910390a1505050565b61061c838361144f565b6106278383836114c0565b505050565b6010820154815161068a91700100000000000000000000000000000000900467ffffffffffffffff1610156810591b5a5b925b5c1b60ba1b7f5261746520746f6f20686967680000000000000000000000000000000000000061139e565b805160098301556040517fea691dd294c7882aadc1bebc2ffb81b91afb6be606dbf15d627c073889c72436906104a090839061323d565b806106cd5760026106d0565b60015b73ffffffffffffffffffffffffffffffffffffffff831660009081526006850160205260409081902060ff92909216909155517f3401777ccabf70a1ee50ed130d9a499a70dad2b7d7b33b6b63e7d11b3b18c117906106059084908490613185565b61073c838361144f565b610627838383611568565b601082015481516107919167ffffffffffffffff1610156810591b5a5b925b5c1b60ba1b7f526174696f20746f6f206869676800000000000000000000000000000000000061139e565b600882015481516107d091106810591b5a5b925b5c1b60ba1b7f526174696f2063616e6e6f74206265203c3d207370726561640000000000000061139e565b805160078301556040517f253f176964e18a501db01a67272483db404e4e473e8afd1d255eeb0e96eb2e13906104a090839061323d565b6109408173ffffffffffffffffffffffffffffffffffffffff166349aa2e816040518163ffffffff1660e01b815260040160206040518083038186803b15801561085057600080fd5b505afa158015610864573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108889190810190612b3b565b801561090d57508173ffffffffffffffffffffffffffffffffffffffff16637a5d20ea6040518163ffffffff1660e01b815260040160206040518083038186803b1580156108d557600080fd5b505afa1580156108e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061090d9190810190612b3b565b6810591b5a5b925b5c1b60ba1b7f496e76616c6964206f7261636c652073656e74696e656c00000000000000000061139e565b600c820180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790556040517f47f70af6683b1cc02ce51f4b6d58e630a95d6a1cd49adbc38d95b45903ba1d0b906104a09083906131fe565b6109bc838361144f565b610627838383611633565b6109d1838361144f565b6106278383836116c7565b610a1760028210156810591b5a5b925b5c1b60ba1b7f4d6178206e756d626572206f66206d61726b65747320746f6f206c6f7700000061139e565b610a5260408211156810591b5a5b925b5c1b60ba1b7f4d6178206e756d626572206f66206d61726b65747320746f6f2068696768000061139e565b600b82018190556040517f9323d71959fdcb6ea1803d945fddbd9a850de779731c80ea92444ccb7fe0e290906104a0908390613259565b610a93838361144f565b610627838383611784565b610aa8838361144f565b610627838383611834565b73ffffffffffffffffffffffffffffffffffffffff811615610b8857610ad7612a52565b610adf612a52565b8273ffffffffffffffffffffffffffffffffffffffff1663ca235420610b04336119aa565b6040518263ffffffff1660e01b8152600401610b20919061324b565b604080518083038186803b158015610b3757600080fd5b505afa158015610b4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b6f9190810190612b61565b9092509050610b8584838363ffffffff6119e316565b50505b600e820180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790556040517fa17ad87ab9de662755a5557000562d536be835860a491a5c6e48e1e529f73d94906104a09083906131fe565b610c04838361144f565b610627838383611b6e565b6000610c1b848461144f565b610c23612a65565b610c33858563ffffffff611cac16565b9050610c75610c4182611e09565b156810591b5a5b925b5c1b60ba1b7f4e6567617469766520657863657373000000000000000000000000000000000061139e565b6000610c87868663ffffffff611e2016565b905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610cc49190613177565b60206040518083038186803b158015610cdc57600080fd5b505afa158015610cf0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d149190810190612f11565b90508083602001511115610d2a57602083018190525b6020830151610d589073ffffffffffffffffffffffffffffffffffffffff841690879063ffffffff611e4c16565b7fa5df3527e4451a18e4b8a5e3308e1d1f1962062aeafe061c48bbb29f172a39c8828460200151604051610d8d9291906131e3565b60405180910390a150506020015190505b9392505050565b610daf8a8a611f4b565b895460018082018c556000828152908c016020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8c16179055610e0d611fc7565b600082815260018d016020908152604080832084516002808301805488870151988601517fffffffffffffffffffffffffffffffffffff00000000000000000000000000009091166dffffffffffffffffffffffffffff948516177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000009490991693909302979097177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff909316929092029190911790955580547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000008815150217905573ffffffffffffffffffffffffffffffffffffffff8e168352928e019052819020829055517f8cf904fdff707692d4bd95366b93d7302a97b4bf64f6716fd00b046ecbf82a4690610f8a9083908d90613267565b60405180910390a18115610fd2577fec669433aa0b3212a238c30115dbf73736739faf98a33c293ecad3daad1b37f68183604051610fc9929190613282565b60405180910390a15b610fdd8b828b611834565b610fe88b828a611b6e565b610ff38b8289611784565b610ffe8b8288611633565b6110098b82876116c7565b6110148b8286611568565b61101f8b82856114c0565b5050505050505050505050565b60006110388484611f4b565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8516906370a082319061108d903090600401613177565b60206040518083038186803b1580156110a557600080fd5b505afa1580156110b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110dd9190810190612f11565b905061110673ffffffffffffffffffffffffffffffffffffffff8516848363ffffffff611e4c16565b7f9dcbc20ebd63f294c7a8332cf06b52eca32a867b9ea7ce29d6c1cc5901494bec84826040516111379291906131e3565b60405180910390a1949350505050565b73ffffffffffffffffffffffffffffffffffffffff81161561121c5761116b612a52565b611173612a52565b8273ffffffffffffffffffffffffffffffffffffffff1663ca235420611198866119aa565b6040518263ffffffff1660e01b81526004016111b4919061324b565b604080518083038186803b1580156111cb57600080fd5b505afa1580156111df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506112039190810190612b61565b909250905061121985838363ffffffff6119e316565b50505b73ffffffffffffffffffffffffffffffffffffffff8281166000908152600f850160205260409081902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001692841692909217909155517f1af51c8f58cc8040548649819c1c4d5a02c47e2cfa82d4efdbffa3e1a886dd179061060590849084906131a0565b806112b05760026112b3565b60015b73ffffffffffffffffffffffffffffffffffffffff831660009081526005850160205260409081902060ff92909216909155517feaeee7699e70e6b31ac89ec999ef6936b97ac1e364f0e1fcf584772372caa0d3906106059084908490613185565b60128201548151611367916fffffffffffffffffffffffffffffffff1610156810591b5a5b925b5c1b60ba1b7f56616c756520746f6f206869676800000000000000000000000000000000000061139e565b8051600a8301556040517ffdcde9342dcfa3a8817b7566b25fed913d2c6eddb65575d40e14681934fae971906104a090839061323d565b82610627576113ac82612002565b7f3a200000000000000000000000000000000000000000000000000000000000006113d683612002565b6040516020016113e8939291906130f1565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526114469160040161320c565b60405180910390fd5b81546114bc90821080156114885750600082815260018401602052604090205473ffffffffffffffffffffffffffffffffffffffff1615155b6810591b5a5b925b5c1b60ba1b7f496e76616c6964206d61726b6574000000000000000000000000000000000000846120d6565b5050565b6010830154815161151e91700100000000000000000000000000000000900467ffffffffffffffff1610156810591b5a5b925b5c1b60ba1b7f4561726e696e67732072617465206f7665727269646520746f6f20686967680061139e565b6000828152600184016020526040908190208251600b90910155517fff816cf82106b9313febc1fbe6ebc6dd757cf63ca19aaaaf330f16b50a51f3f4906106059084908490613290565b611570612a65565b604051806040016040528060001515815260200161158d8461216e565b6fffffffffffffffffffffffffffffffff169052600084815260018601602090815260409182902083516009820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905590830151600a90910155519091507fa13260938e0510d77a4bee42b7d845139f27dca9e2f0e5b04a1f2702e0d04f8a9061162590859084906132ab565b60405180910390a150505050565b6011830154815161167d9167ffffffffffffffff1610156810591b5a5b925b5c1b60ba1b7f537072656164207072656d69756d20746f6f206869676800000000000000000061139e565b6000828152600184016020526040908190208251600690910155517f8fb842b3443e1b596f7e570c506ebadaec93ff38c1aece4f73c751e939d4c93c906106059084908490613290565b6116cf612a65565b60405180604001604052806001151581526020016116ec8461216e565b6fffffffffffffffffffffffffffffffff169052600084815260018601602090815260409182902083516007820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905590830151600890910155519091507ff70390002f3678ee6e309d1f70dbbb9d1ded23edb9488bc163ec57ecba50f1549061162590859084906132ab565b601083015481516117ea917801000000000000000000000000000000000000000000000000900467ffffffffffffffff1610156810591b5a5b925b5c1b60ba1b7f4d617267696e207072656d69756d20746f6f206869676800000000000000000061139e565b6000828152600184016020526040908190208251600590910155517f19ecb621bc945075c47008c9deaf25107a3343ecfe752608915a9d1da35e9e7c906106059084908490613290565b6000828152600184016020526040908190205490517f41976e0900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182169161192791908416906341976e09906118a1908590600401613177565b60206040518083038186803b1580156118b957600080fd5b505afa1580156118cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506118f19190810190612b9b565b5115156810591b5a5b925b5c1b60ba1b7f496e76616c6964206f7261636c6520707269636500000000000000000000000061139e565b60008381526001850160205260409081902060030180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8516179055517f6585928691672490b717a51fe425f4494b34c6b5cb8335c5dc1e70115bd26630906116259085908590613267565b6119b2612a65565b506040805180820190915273ffffffffffffffffffffffffffffffffffffffff82168152600060208201525b919050565b60108301548251611a419167ffffffffffffffff1610157f53746f72616765000000000000000000000000000000000000000000000000007f526174696f20746f6f206869676800000000000000000000000000000000000061139e565b60108301548151611aab9168010000000000000000900467ffffffffffffffff1610157f53746f72616765000000000000000000000000000000000000000000000000007f53707265616420746f6f2068696768000000000000000000000000000000000061139e565b815115801590611abb5750805115155b15611b155781518151611b1091117f53746f72616765000000000000000000000000000000000000000000000000007f5370726561642063616e6e6f74206265203e3d20726174696f0000000000000061139e565b610627565b805161062790158015611b2757508251155b7f53746f72616765000000000000000000000000000000000000000000000000007f53707265616420616e6420726174696f206d75737420626f746820626520300061139e565b60008281526001840160205260408082205490517fe8177dcf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216929184169163e8177dcf91611bd891859181906004016131bb565b60206040518083038186803b158015611bf057600080fd5b505afa158015611c04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611c289190810190612b9b565b5060008381526001850160205260409081902060040180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8516179055517faa2217332f2505521d63c728f59a8692c1c8c952a0c5d578e4142bb88cefb063906116259085908590613267565b611cb4612a65565b611cbc612a7c565b611ccc848463ffffffff6121d116565b9050611cd6612a65565b611ce6858563ffffffff61225d16565b90506000611cfa868663ffffffff611e2016565b9050611d04612a65565b6040805180820182526001815290517f70a08231000000000000000000000000000000000000000000000000000000008152602082019073ffffffffffffffffffffffffffffffffffffffff8516906370a0823190611d67903090600401613177565b60206040518083038186803b158015611d7f57600080fd5b505afa158015611d93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611db79190810190612f11565b90529050611dc3612a65565b611dcb612a65565b611dd585876122bd565b9092509050611dfa82611dee858463ffffffff61236516565b9063ffffffff61236516565b96505050505050505b92915050565b8051600090158015611e0357505060200151151590565b6000908152600191909101602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b801580611e6e575073ffffffffffffffffffffffffffffffffffffffff821630145b15611e7857610627565b6040516106279084907fa9059cbb0000000000000000000000000000000000000000000000000000000090611eb390869086906024016131e3565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518060400160405280601681526020017f546f6b656e3a207472616e73666572206661696c65640000000000000000000081525061237f565b73ffffffffffffffffffffffffffffffffffffffff8082166000818152600285016020908152604080832054808452600188019092529091205490921614611fc181156810591b5a5b925b5c1b60ba1b7f4d61726b6574206578697374730000000000000000000000000000000000000061139e565b50505050565b611fcf612a7c565b60408051606081018252670de0b6b3a76400008082526020820152908101611ff5612487565b63ffffffff169052905090565b6060808260405160200161201691906130d0565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060205b80156120bf5781517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091019082908290811061208257fe5b01602001517fff0000000000000000000000000000000000000000000000000000000000000016156120ba57600101815290506119de565b612049565b505060408051600081526020810190915292915050565b83611fc1576120e483612002565b7f3a2000000000000000000000000000000000000000000000000000000000000061210e84612002565b7f203c00000000000000000000000000000000000000000000000000000000000061213885612497565b6040516113e89594939291907f3e0000000000000000000000000000000000000000000000000000000000000090602001613119565b600081611e036fffffffffffffffffffffffffffffffff821682147f4d617468000000000000000000000000000000000000000000000000000000007f556e73616665206361737420746f2075696e7431323800000000000000000000846120d6565b6121d9612a7c565b506000908152600191909101602090815260409182902082516060810184526002909101546dffffffffffffffffffffffffffff80821683526e010000000000000000000000000000820416928201929092527c010000000000000000000000000000000000000000000000000000000090910463ffffffff169181019190915290565b612265612a65565b506000818152600180840160209081526040928390208351808501909452909101546fffffffffffffffffffffffffffffffff8082168452700100000000000000000000000000000000909104169082015292915050565b6122c5612a65565b6122cd612a65565b6122d5612a65565b5060408051808201909152600181526020858101516fffffffffffffffffffffffffffffffff1690820152612308612a65565b50604080518082019091526000815285516fffffffffffffffffffffffffffffffff166020820152612338612a65565b61234283876125a6565b905061234c612a65565b61235683886125a6565b91989197509095505050505050565b61236d612a65565b610d9e8361237a8461265b565b612682565b600060608473ffffffffffffffffffffffffffffffffffffffff16846040516123a891906130e5565b6000604051808303816000865af19150503d80600081146123e5576040519150601f19603f3d011682016040523d82523d6000602084013e6123ea565b606091505b5091509150818390612429576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611446919061320c565b5080511561248057808060200190516124459190810190612b3b565b839061247e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611446919061320c565b505b5050505050565b600061249242612714565b905090565b6060816124d8575060408051808201909152600181527f300000000000000000000000000000000000000000000000000000000000000060208201526119de565b8160005b81156124f057600101600a820491506124dc565b6060816040519080825280601f01601f19166020018201604052801561251d576020820181803883390190505b508593509050815b801561259d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600a840660300160f81b82828151811061256357fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a84049350612525565b50949350505050565b6125ae612a65565b602083015183516fffffffffffffffffffffffffffffffff909116901561261c576040805180820190915260018152602084810151908201906126119084906dffffffffffffffffffffffffffff16670de0b6b3a764000063ffffffff61276b16565b815250915050611e03565b6040805180820190915260008152835160208201906126119084906dffffffffffffffffffffffffffff16670de0b6b3a764000063ffffffff61276b16565b612663612a65565b5060408051808201909152815115815260208083015190820152919050565b61268a612a65565b612692612a65565b82518451151590151514156126c557835115158152602080850151908401516126bb9190612814565b6020820152610d9e565b82602001518460200151106126ee57835115158152602080850151908401516126bb9190612853565b825115158152602080840151908501516127089190612853565b60208201529392505050565b600081611e0363ffffffff821682147f4d617468000000000000000000000000000000000000000000000000000000007f556e73616665206361737420746f2075696e7433320000000000000000000000846120d6565b6000831580612778575082155b1561278f57612788600083612895565b9050610d9e565b60006127a1858563ffffffff6128d716565b905061280b6127d860016127cc60026127c0888463ffffffff61285316565b9063ffffffff61289516565b9063ffffffff61281416565b6127e8838663ffffffff61292b16565b10156127f55760006127f8565b60015b60ff166127cc838663ffffffff61289516565b95945050505050565b600082820183811015610d9e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114469061321d565b6000610d9e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061296d565b6000610d9e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506129b3565b6000826128e657506000611e03565b828202828482816128f357fe5b0414610d9e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114469061322d565b6000610d9e83836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f0000000000000000815250612a04565b600081848411156129ab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611446919061320c565b505050900390565b600081836129ee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611446919061320c565b5060008385816129fa57fe5b0495945050505050565b60008183612a3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611446919061320c565b50828481612a4957fe5b06949350505050565b6040518060200160405280600081525090565b604080518082019091526000808252602082015290565b604080516060810182526000808252602082018190529181019190915290565b8035611e03816133da565b8035611e03816133f1565b8051611e03816133f1565b8035611e03816133fa565b600060208284031215612ada57600080fd5b612ae460206132c6565b90506000612af28484612b25565b82525092915050565b600060208284031215612b0d57600080fd5b612b1760206132c6565b90506000612af28484612b30565b8035611e0381613403565b8051611e0381613403565b600060208284031215612b4d57600080fd5b6000612b598484612ab2565b949350505050565b60008060408385031215612b7457600080fd5b6000612b808585612afb565b9250506020612b9185828601612afb565b9150509250929050565b600060208284031215612bad57600080fd5b6000612b598484612afb565b600080600060608486031215612bce57600080fd5b6000612bda8686612b25565b9350506020612beb86828701612a9c565b9250506040612bfc86828701612a9c565b9150509250925092565b600080600060608486031215612c1b57600080fd5b6000612c278686612b25565b9350506020612c3886828701612a9c565b9250506040612bfc86828701612aa7565b600080600060608486031215612c5e57600080fd5b6000612c6a8686612b25565b9350506020612c7b86828701612a9c565b9250506040612bfc86828701612abd565b6000806000806000806000806000806101408b8d031215612cac57600080fd5b6000612cb88d8d612b25565b9a50506020612cc98d828e01612a9c565b9950506040612cda8d828e01612abd565b9850506060612ceb8d828e01612abd565b9750506080612cfc8d828e01612ac8565b96505060a0612d0d8d828e01612ac8565b95505060c0612d1e8d828e01612b25565b94505060e0612d2f8d828e01612b25565b935050610100612d418d828e01612ac8565b925050610120612d538d828e01612aa7565b9150509295989b9194979a5092959850565b60008060408385031215612d7857600080fd5b6000612d848585612b25565b9250506020612b9185828601612abd565b60008060408385031215612da857600080fd5b6000612db48585612b25565b9250506020612b9185828601612ac8565b60008060408385031215612dd857600080fd5b6000612de48585612b25565b9250506020612b9185828601612b25565b600080600060608486031215612e0a57600080fd5b6000612e168686612b25565b9350506020612beb86828701612b25565b600080600060608486031215612e3c57600080fd5b6000612e488686612b25565b9350506020612c3886828701612b25565b600080600060608486031215612e6e57600080fd5b6000612e7a8686612b25565b9350506020612c7b86828701612b25565b600080600060608486031215612ea057600080fd5b6000612eac8686612b25565b9350506020612ebd86828701612b25565b9250506040612bfc86828701612ac8565b600080600060608486031215612ee357600080fd5b6000612eef8686612b25565b9350506020612f0086828701612b25565b9250506040612bfc86828701612b25565b600060208284031215612f2357600080fd5b6000612b598484612b30565b612f38816132fa565b82525050565b612f3881613305565b612f38612f538261330a565b613354565b612f38612f538261332f565b612f38612f5382613354565b6000612f7b826132ed565b612f8581856119de565b9350612f95818560208601613386565b9290920192915050565b612f3881613357565b612f388161337b565b6000612fbc826132ed565b612fc681856132f1565b9350612fd6818560208601613386565b612fdf816133b2565b9093019392505050565b6000612ff6601b836132f1565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b600061302f6021836132f1565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81527f7700000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b80516020830190611fc184826130c7565b805160408301906130a38482612f2f565b506020820151611fc160208501826130c7565b805160408301906130a38482612f3e565b612f3881613354565b60006130dc8284612f64565b50602001919050565b6000610d9e8284612f70565b60006130fd8286612f70565b91506131098285612f58565b60028201915061280b8284612f70565b60006131258289612f70565b91506131318288612f58565b6002820191506131418287612f70565b915061314d8286612f58565b60028201915061315d8285612f70565b91506131698284612f47565b506001019695505050505050565b60208101611e038284612f2f565b604081016131938285612f2f565b610d9e6020830184612f3e565b604081016131ae8285612f2f565b610d9e6020830184612f9f565b606081016131c98286612f2f565b6131d66020830185612fa8565b612b596040830184612fa8565b604081016131f18285612f2f565b610d9e60208301846130c7565b60208101611e038284612f9f565b602080825281016