core-artifacts
Version:
Consist artifacts of the maple protocol
1,166 lines • 55.8 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "MapleGlobals",
"sourceName": "contracts/core/globals/v1/MapleGlobals.sol",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_governor",
"type": "address"
},
{
"internalType": "address",
"name": "_mpl",
"type": "address"
},
{
"internalType": "address",
"name": "_globalAdmin",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "balancerPool",
"type": "address"
},
{
"indexed": false,
"internalType": "bool",
"name": "valid",
"type": "bool"
}
],
"name": "BalancerPoolSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "asset",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "decimals",
"type": "uint256"
},
{
"indexed": false,
"internalType": "string",
"name": "symbol",
"type": "string"
},
{
"indexed": false,
"internalType": "bool",
"name": "valid",
"type": "bool"
}
],
"name": "CollateralAssetSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "newGlobalAdmin",
"type": "address"
}
],
"name": "GlobalAdminSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "which",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "address",
"name": "addr",
"type": "address"
}
],
"name": "GlobalsAddressSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "which",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "GlobalsParamSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "governor",
"type": "address"
}
],
"name": "GovernorAccepted",
"type": "event"
},
{
"anonymous": false,
"inputs": [],
"name": "Initialized",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "asset",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "decimals",
"type": "uint256"
},
{
"indexed": false,
"internalType": "string",
"name": "symbol",
"type": "string"
},
{
"indexed": false,
"internalType": "bool",
"name": "valid",
"type": "bool"
}
],
"name": "LiquidityAssetSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "asset",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "oracle",
"type": "address"
}
],
"name": "OracleSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "pendingGovernor",
"type": "address"
}
],
"name": "PendingGovernorSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "poolDelegate",
"type": "address"
},
{
"indexed": false,
"internalType": "bool",
"name": "valid",
"type": "bool"
}
],
"name": "PoolDelegateSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "bool",
"name": "pause",
"type": "bool"
}
],
"name": "ProtocolPaused",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "exemptedContract",
"type": "address"
},
{
"indexed": false,
"internalType": "bool",
"name": "valid",
"type": "bool"
}
],
"name": "TransferRestrictionExemptionSet",
"type": "event"
},
{
"inputs": [],
"name": "acceptGovernor",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "defaultGracePeriod",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "defaultUniswapPath",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "fundingPeriod",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "asset",
"type": "address"
}
],
"name": "getLatestPrice",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getLpCooldownParams",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "globalAdmin",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "governor",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "investorFee",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "isValidBalancerPool",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "calc",
"type": "address"
},
{
"internalType": "uint8",
"name": "calcType",
"type": "uint8"
}
],
"name": "isValidCalc",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "isValidCollateralAsset",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "isValidLiquidityAsset",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "isValidLoanFactory",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "isValidPoolDelegate",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "isValidPoolFactory",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "superFactory",
"type": "address"
},
{
"internalType": "address",
"name": "subFactory",
"type": "address"
},
{
"internalType": "uint8",
"name": "factoryType",
"type": "uint8"
}
],
"name": "isValidSubFactory",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "lpCooldownPeriod",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "lpWithdrawWindow",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "mapleTreasury",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "maxSwapSlippage",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "minLoanEquity",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "mpl",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "oracleFor",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "pendingGovernor",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "protocolPaused",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "calc",
"type": "address"
},
{
"internalType": "bool",
"name": "valid",
"type": "bool"
}
],
"name": "setCalc",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "asset",
"type": "address"
},
{
"internalType": "bool",
"name": "valid",
"type": "bool"
}
],
"name": "setCollateralAsset",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_defaultGracePeriod",
"type": "uint256"
}
],
"name": "setDefaultGracePeriod",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "address",
"name": "mid",
"type": "address"
}
],
"name": "setDefaultUniswapPath",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_fundingPeriod",
"type": "uint256"
}
],
"name": "setFundingPeriod",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newGlobalAdmin",
"type": "address"
}
],
"name": "setGlobalAdmin",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_fee",
"type": "uint256"
}
],
"name": "setInvestorFee",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "asset",
"type": "address"
},
{
"internalType": "bool",
"name": "valid",
"type": "bool"
}
],
"name": "setLiquidityAsset",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "newCooldownPeriod",
"type": "uint256"
}
],
"name": "setLpCooldownPeriod",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "newLpWithdrawWindow",
"type": "uint256"
}
],
"name": "setLpWithdrawWindow",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_mapleTreasury",
"type": "address"
}
],
"name": "setMapleTreasury",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "newMaxSlippage",
"type": "uint256"
}
],
"name": "setMaxSwapSlippage",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_minLoanEquity",
"type": "uint256"
}
],
"name": "setMinLoanEquity",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_pendingGovernor",
"type": "address"
}
],
"name": "setPendingGovernor",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "delegate",
"type": "address"
},
{
"internalType": "bool",
"name": "valid",
"type": "bool"
}
],
"name": "setPoolDelegateAllowlist",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "asset",
"type": "address"
},
{
"internalType": "address",
"name": "oracle",
"type": "address"
}
],
"name": "setPriceOracle",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bool",
"name": "pause",
"type": "bool"
}
],
"name": "setProtocolPause",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "newCooldownPeriod",
"type": "uint256"
}
],
"name": "setStakerCooldownPeriod",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "newUnstakeWindow",
"type": "uint256"
}
],
"name": "setStakerUnstakeWindow",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "amt",
"type": "uint256"
}
],
"name": "setSwapOutRequired",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_fee",
"type": "uint256"
}
],
"name": "setTreasuryFee",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "balancerPool",
"type": "address"
},
{
"internalType": "bool",
"name": "valid",
"type": "bool"
}
],
"name": "setValidBalancerPool",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "loanFactory",
"type": "address"
},
{
"internalType": "bool",
"name": "valid",
"type": "bool"
}
],
"name": "setValidLoanFactory",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "poolFactory",
"type": "address"
},
{
"internalType": "bool",
"name": "valid",
"type": "bool"
}
],
"name": "setValidPoolFactory",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "superFactory",
"type": "address"
},
{
"internalType": "address",
"name": "subFactory",
"type": "address"
},
{
"internalType": "bool",
"name": "valid",
"type": "bool"
}
],
"name": "setValidSubFactory",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "stakerCooldownPeriod",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "stakerUnstakeWindow",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "swapOutRequired",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "treasuryFee",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "validCalcs",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "validSubFactories",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x60a06040523480156200001157600080fd5b5060405162001f9638038062001f968339810160408190526200003491620000e8565b600180546001600160a01b038086166001600160a01b0319928316179092556001600160601b0319606085901b16608052612710600555620d2f00600681905562069780600455603260078190556008556103e86009556107d0600a556003805493851693909216929092179055600b819055600c556202a300600d819055600e556040517f5daa87a0e9463431830481fd4b6e3403442dfb9a12b9c07597e9f61d50b633c890600090a150505062000154565b600080600060608486031215620000fd578283fd5b83516200010a816200013b565b60208501519093506200011d816200013b565b604085015190925062000130816200013b565b809150509250925092565b6001600160a01b03811681146200015157600080fd5b50565b60805160601c611e2462000172600039806111be5250611e246000f3fe608060405234801561001057600080fd5b50600436106103835760003560e01c80637303de25116101de578063c9c672401161010f578063e58bb639116100ad578063f33ef09a1161007c578063f33ef09a146106e6578063f3897663146106f9578063f85ee6f81461070c578063fd4a91211461071f57610383565b8063e58bb639146106b0578063ec9a9368146106b8578063efdb16fc146106c0578063f235757f146106d357610383565b8063dbc6c552116100e9578063dbc6c55214610685578063dd02e0ec14610698578063df3d02bd146106a0578063e3056a34146106a857610383565b8063c9c6724014610657578063cc32d1761461066a578063d1cdf3011461067257610383565b8063a05309461161017c578063aed019b911610156578063aed019b91461060b578063b53afda71461061e578063be44ed6b14610631578063c52bc31d1461064457610383565b8063a0530946146105f3578063a5a27605146105fb578063a965d6b51461060357610383565b80638608a6e1116101b85780638608a6e1146105a45780638695118a146105b75780638c14834b146105ca5780639f51290b146105dd57610383565b80637303de251461057657806374d7c62b1461058957806377e741c71461059157610383565b80633106374c116102b85780634e989118116102565780636597b899116102305780636597b8991461053557806367a74ddc14610548578063705d5f241461055b57806372a22d711461056357610383565b80634e98911814610507578063553231951461051a5780635e0454671461052257610383565b806344c14f711161029257806344c14f71146104c6578063490dae64146104d95780634a2697c4146104ec5780634d866592146104f457610383565b80633106374c146104a3578063372e3546146104ab578063425fad58146104be57610383565b80631beb84e711610325578063298b795d116102ff578063298b795d146104575780632a5aa2921461046a5780632daa0d891461047d5780632fa6c88f1461049057610383565b80631beb84e7146104275780632018b8701461043a578063267186061461044257610383565b806316345f181161036157806316345f18146103d957806316a12d7a146103f95780631b1804aa146104015780631b5833f71461041457610383565b80630c340a2414610388578063107c0240146103a657806313d459fb146103c6575b600080fd5b610390610732565b60405161039d9190611b0a565b60405180910390f35b6103b96103b4366004611885565b610741565b60405161039d9190611ba4565b6103b96103d4366004611963565b610756565b6103ec6103e7366004611885565b61080a565b60405161039d9190611d55565b6103ec61089a565b6103b961040f3660046118a0565b6108a0565b6103b96104223660046119db565b6108c0565b6103b9610435366004611885565b610964565b6103ec610979565b610455610450366004611ad6565b61097f565b005b610455610465366004611ad6565b6109f7565b610455610478366004611ad6565b610a61565b61045561048b3660046119a0565b610ac1565b61045561049e3660046119a0565b610c31565b6103ec610cd7565b6103b96104b9366004611885565b610cdd565b6103b9610cf2565b6104556104d4366004611ad6565b610cfb565b6104556104e73660046119a0565b610d61565b6103ec610de1565b6103906105023660046118a0565b610de7565b610455610515366004611a07565b610e0d565b6103ec610e80565b610455610530366004611ad6565b610e86565b6104556105433660046119a0565b610f00565b6104556105563660046118a0565b610f55565b6103ec610fe0565b6103b9610571366004611885565b610fe6565b610455610584366004611885565b610ffb565b6103ec6110a9565b61045561059f366004611ad6565b6110af565b6104556105b2366004611ad6565b611124565b6103b96105c5366004611885565b611188565b6103b96105d8366004611885565b61119d565b6105e56111b2565b60405161039d929190611d5e565b6103906111bc565b6103906111e0565b6103ec6111ef565b610390610619366004611885565b6111f5565b6103b961062c366004611885565b611210565b61045561063f3660046119a0565b611225565b610455610652366004611885565b61127a565b6104556106653660046119a0565b611325565b6103ec61137a565b610455610680366004611ad6565b611380565b610455610693366004611ad6565b6113e7565b6103ec61146c565b6103ec611472565b610390611478565b610455611487565b6103906114f9565b6104556106ce3660046119a0565b611508565b6104556106e1366004611885565b611592565b6104556106f4366004611ad6565b61162a565b6104556107073660046118d4565b611696565b61045561071a366004611919565b6116fd565b61045561072d366004611ad6565b6117bc565b6001546001600160a01b031681565b60176020526000908152604090205460ff1681565b6001600160a01b03808416600090815260196020908152604080832093861683529290529081205460ff16801561080257508160ff16836001600160a01b03166364e1fd556040518163ffffffff1660e01b815260040160206040518083038186803b1580156107c557600080fd5b505afa1580156107d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fd9190611aee565b60ff16145b949350505050565b6001600160a01b038082166000908152601660209081526040808320548151638e15f47360e01b8152915193941692638e15f47392600480840193919291829003018186803b15801561085c57600080fd5b505afa158015610870573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108949190611a23565b92915050565b60075481565b601960209081526000928352604080842090915290825290205460ff1681565b6001600160a01b03821660009081526012602052604081205460ff16801561095d57508160ff16836001600160a01b0316639d8ae4466040518163ffffffff1660e01b815260040160206040518083038186803b15801561092057600080fd5b505afa158015610934573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109589190611aee565b60ff16145b9392505050565b60126020526000908152604090205460ff1681565b600d5481565b6001546001600160a01b031633146109b25760405162461bcd60e51b81526004016109a990611cdf565b60405180910390fd5b80600e81905550714c505f57495448445241575f57494e444f5760701b600080516020611dcf833981519152826040516109ec9190611d55565b60405180910390a250565b6001546001600160a01b03163314610a215760405162461bcd60e51b81526004016109a990611cdf565b610a2a81611824565b80600a819055506e4d494e5f4c4f414e5f45515549545960881b600080516020611dcf833981519152826040516109ec9190611d55565b6001546001600160a01b03163314610a8b5760405162461bcd60e51b81526004016109a990611cdf565b806006819055506d11955391125391d7d411549253d160921b600080516020611dcf833981519152826040516109ec9190611d55565b6001546001600160a01b03163314610aeb5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b038216600081815260106020908152604091829020805460ff1916851515179055815163313ce56760e01b815291517f18d231995d1f7e4354b1786418aa8f34f99996ded9cc6b1d43c3815eb6f5ab79938693909263313ce56792600480840193829003018186803b158015610b6757600080fd5b505afa158015610b7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9f9190611a23565b846001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b158015610bd857600080fd5b505afa158015610bec573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c149190810190611a3b565b84604051610c259493929190611b53565b60405180910390a15050565b6001546001600160a01b03163314610c5b5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b038216600081815260116020908152604091829020805460ff1916851515179055815163313ce56760e01b815291517fb9456501e6a30eefbf8c4f9d199ef0c7ac7491abb068d594bbafbdec85447ccc938693909263313ce56792600480840193829003018186803b158015610b6757600080fd5b60055481565b60136020526000908152604090205460ff1681565b600f5460ff1681565b6001546001600160a01b03163314610d255760405162461bcd60e51b81526004016109a990611cdf565b80600481905550731111519055531517d1d49050d157d411549253d160621b600080516020611dcf833981519152826040516109ec9190611d55565b6001546001600160a01b03163314610d8b5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b03821660009081526014602052604090819020805460ff1916831515179055517f936e0e50587b3c03d3e833e5cc880e9a62afb49d51808e96d00c4790ed03796290610c259084908490611b38565b600a5481565b60156020908152600092835260408084209091529082529020546001600160a01b031681565b6003546001600160a01b03163314610e375760405162461bcd60e51b81526004016109a990611d2f565b600f805460ff19168215151790556040517f6e0cb5fa7a57c38eb7939c1104f95fccb5b7a6a8c1a7cab76934305439b639f590610e75908390611ba4565b60405180910390a150565b60095481565b6001546001600160a01b03163314610eb05760405162461bcd60e51b81526004016109a990611cdf565b600854610ecc90610ec7908363ffffffff61184916565b611824565b806007819055506b494e564553544f525f46454560a01b600080516020611dcf833981519152826040516109ec9190611d55565b6001546001600160a01b03163314610f2a5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b6001546001600160a01b03163314610f7f5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b038281166000908152601660205260409081902080546001600160a01b03191692841692909217909155517fc1d3048301c0d23629a2532c8defa6d68f8e1a0e4157918769e9fb1b2eeb888e90610c259084908490611b1e565b60045481565b60146020526000908152604090205460ff1681565b6001546001600160a01b031633146110255760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b03811661104b5760405162461bcd60e51b81526004016109a990611cb9565b600280546001600160a01b0319166001600160a01b0383161790556040516d4d41504c455f545245415355525960901b907f806b6f19dfa971f58fc9140115f19907b73e8336024786c79c2ffc56f6678ec1906109ec908490611b0a565b60065481565b6001546001600160a01b031633146110d95760405162461bcd60e51b81526004016109a990611cdf565b6007546110f090610ec7908363ffffffff61184916565b806008819055506b54524541535552595f46454560a01b600080516020611dcf833981519152826040516109ec9190611d55565b6001546001600160a01b0316331461114e5760405162461bcd60e51b81526004016109a990611cdf565b80600c8190555071131417d0d3d3d31113d5d397d411549253d160721b600080516020611dcf833981519152826040516109ec9190611d55565b60106020526000908152604090205460ff1681565b60116020526000908152604090205460ff1681565b600c54600e549091565b7f000000000000000000000000000000000000000000000000000000000000000081565b6002546001600160a01b031681565b600b5481565b6016602052600090815260409020546001600160a01b031681565b60186020526000908152604090205460ff1681565b6001546001600160a01b0316331461124f5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b6001546001600160a01b03163314801561129c57506001600160a01b03811615155b6112b85760405162461bcd60e51b81526004016109a990611bd3565b600f5460ff16156112db5760405162461bcd60e51b81526004016109a990611c63565b600380546001600160a01b0319166001600160a01b0383169081179091556040517fad3f8fa73ce3985d027e4c3bbe1194701a23e635a746bcf73d8632f677ac388290600090a250565b6001546001600160a01b0316331461134f5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b60085481565b6001546001600160a01b031633146113aa5760405162461bcd60e51b81526004016109a990611cdf565b80600d81905550745354414b45525f554e5354414b455f57494e444f5760581b600080516020611dcf833981519152826040516109ec9190611d55565b6001546001600160a01b031633146114115760405162461bcd60e51b81526004016109a990611cdf565b6127108110156114335760405162461bcd60e51b81526004016109a990611c8c565b806005819055507014d5d05417d3d55517d491545552549151607a1b600080516020611dcf833981519152826040516109ec9190611d55565b600c5481565b600e5481565b6000546001600160a01b031681565b6000546001600160a01b031633146114b15760405162461bcd60e51b81526004016109a990611c00565b60018054336001600160a01b031991821681179092556000805490911681556040517fb7a4788848eba3319c766bdd6428c7d7a10e4cba4fd6ade9b79b7102b7099b369190a2565b6003546001600160a01b031681565b6001546001600160a01b031633146115325760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b03821660008181526013602052604090819020805460ff1916841515179055517fd2e6a599a52383178be9bf2d0be60c96615b89f8d9cf6c680f06962aa73679fc90611586908490611ba4565b60405180910390a25050565b6001546001600160a01b031633146115bc5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b0381166115e25760405162461bcd60e51b81526004016109a990611cb9565b600080546001600160a01b0319166001600160a01b038316908117825560405190917f56bddfa0cee9697cebddf9acd7f23dc6583663b05e007b877056d05017994def91a250565b6001546001600160a01b031633146116545760405162461bcd60e51b81526004016109a990611cdf565b61165d81611824565b80600981905550704d41585f535741505f534c49505041474560781b600080516020611dcf833981519152826040516109ec9190611d55565b6001546001600160a01b031633146116c05760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b03928316600090815260156020908152604080832094861683529390529190912080546001600160a01b03191691909216179055565b6001546001600160a01b031633146117275760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b03831660009081526018602052604090205460ff168061176657506001600160a01b03831660009081526017602052604090205460ff165b6117825760405162461bcd60e51b81526004016109a990611d03565b6001600160a01b03928316600090815260196020908152604080832094909516825292909252919020805460ff1916911515919091179055565b6001546001600160a01b031633146117e65760405162461bcd60e51b81526004016109a990611cdf565b80600b819055507514d51052d15497d0d3d3d31113d5d397d411549253d160521b600080516020611dcf833981519152826040516109ec9190611d55565b6127108111156118465760405162461bcd60e51b81526004016109a990611baf565b50565b60008282018381101561095d5760405162461bcd60e51b81526004016109a990611c2c565b80356001600160a01b038116811461089457600080fd5b600060208284031215611896578081fd5b61095d838361186e565b600080604083850312156118b2578081fd5b6118bc848461186e565b91506118cb846020850161186e565b90509250929050565b6000806000606084860312156118e8578081fd5b6118f2858561186e565b9250611901856020860161186e565b9150611910856040860161186e565b90509250925092565b60008060006060848603121561192d578283fd5b833561193881611d9c565b9250602084013561194881611d9c565b9150604084013561195881611db1565b809150509250925092565b600080600060608486031215611977578283fd5b611981858561186e565b9250611990856020860161186e565b9150604084013561195881611dbf565b600080604083850312156119b2578182fd5b6119bc848461186e565b9150602083013580151581146119d0578182fd5b809150509250929050565b600080604083850312156119ed578182fd5b6119f7848461186e565b915060208301356119d081611dbf565b600060208284031215611a18578081fd5b813561095d81611db1565b600060208284031215611a34578081fd5b5051919050565b600060208284031215611a4c578081fd5b815167ffffffffffffffff80821115611a63578283fd5b81840185601f820112611a74578384fd5b8051925081831115611a84578384fd5b604051601f8401601f191681016020018381118282101715611aa4578586fd5b604052838152818401602001871015611abb578485fd5b611acc846020830160208501611d6c565b9695505050505050565b600060208284031215611ae7578081fd5b5035919050565b600060208284031215611aff578081fd5b815161095d81611dbf565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039290921682521515602082015260400190565b600060018060a01b0386168252846020830152608060408301528351806080840152611b868160a0850160208801611d6c565b921515606083015250601f91909101601f19160160a0019392505050565b901515815260200190565b6020808252600a908201526926a39d2821aa2fa7a7a160b11b604082015260600190565b60208082526013908201527226a39d2727aa2fa3a7ab2fa7a92fa0a226a4a760691b604082015260600190565b60208082526012908201527126a39d2727aa2fa822a72224a723afa3a7ab60711b604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252600f908201526e1351ce941493d513d7d4105554d151608a1b604082015260600190565b6020808252601390820152724d473a535741505f4f55545f544f4f5f4c4f5760681b604082015260600190565b6020808252600c908201526b26a39d2d22a927afa0a2222960a11b604082015260600190565b6020808252600a908201526926a39d2727aa2fa3a7ab60b11b604082015260600190565b60208082526012908201527126a39d24a72b20a624a22fa9aaa822a92fa360711b604082015260600190565b6020808252600c908201526b26a39d2727aa2fa0a226a4a760a11b604082015260600190565b90815260200190565b918252602082015260400190565b60005b83811015611d87578181015183820152602001611d6f565b83811115611d96576000848401525b50505050565b6001600160a01b038116811461184657600080fd5b801515811461184657600080fd5b60ff8116811461184657600080fdfed8780a041c72589f51af8b3fade9cc8a466d00ecef64d45657dd6cdebf1ecf47a26469706673582212200137a24e6d83f2efff919fad035876bd2ab6890372959af09d2aa958eedc1fb964736f6c634300060b0033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106103835760003560e01c80637303de25116101de578063c9c672401161010f578063e58bb639116100ad578063f33ef09a1161007c578063f33ef09a146106e6578063f3897663146106f9578063f85ee6f81461070c578063fd4a91211461071f57610383565b8063e58bb639146106b0578063ec9a9368146106b8578063efdb16fc146106c0578063f235757f146106d357610383565b8063dbc6c552116100e9578063dbc6c55214610685578063dd02e0ec14610698578063df3d02bd146106a0578063e3056a34146106a857610383565b8063c9c6724014610657578063cc32d1761461066a578063d1cdf3011461067257610383565b8063a05309461161017c578063aed019b911610156578063aed019b91461060b578063b53afda71461061e578063be44ed6b14610631578063c52bc31d1461064457610383565b8063a0530946146105f3578063a5a27605146105fb578063a965d6b51461060357610383565b80638608a6e1116101b85780638608a6e1146105a45780638695118a146105b75780638c14834b146105ca5780639f51290b146105dd57610383565b80637303de251461057657806374d7c62b1461058957806377e741c71461059157610383565b80633106374c116102b85780634e989118116102565780636597b899116102305780636597b8991461053557806367a74ddc14610548578063705d5f241461055b57806372a22d711461056357610383565b80634e98911814610507578063553231951461051a5780635e0454671461052257610383565b806344c14f711161029257806344c14f71146104c6578063490dae64146104d95780634a2697c4146104ec5780634d866592146104f457610383565b80633106374c146104a3578063372e3546146104ab578063425fad58146104be57610383565b80631beb84e711610325578063298b795d116102ff578063298b795d146104575780632a5aa2921461046a5780632daa0d891461047d5780632fa6c88f1461049057610383565b80631beb84e7146104275780632018b8701461043a578063267186061461044257610383565b806316345f181161036157806316345f18146103d957806316a12d7a146103f95780631b1804aa146104015780631b5833f71461041457610383565b80630c340a2414610388578063107c0240146103a657806313d459fb146103c6575b600080fd5b610390610732565b60405161039d9190611b0a565b60405180910390f35b6103b96103b4366004611885565b610741565b60405161039d9190611ba4565b6103b96103d4366004611963565b610756565b6103ec6103e7366004611885565b61080a565b60405161039d9190611d55565b6103ec61089a565b6103b961040f3660046118a0565b6108a0565b6103b96104223660046119db565b6108c0565b6103b9610435366004611885565b610964565b6103ec610979565b610455610450366004611ad6565b61097f565b005b610455610465366004611ad6565b6109f7565b610455610478366004611ad6565b610a61565b61045561048b3660046119a0565b610ac1565b61045561049e3660046119a0565b610c31565b6103ec610cd7565b6103b96104b9366004611885565b610cdd565b6103b9610cf2565b6104556104d4366004611ad6565b610cfb565b6104556104e73660046119a0565b610d61565b6103ec610de1565b6103906105023660046118a0565b610de7565b610455610515366004611a07565b610e0d565b6103ec610e80565b610455610530366004611ad6565b610e86565b6104556105433660046119a0565b610f00565b6104556105563660046118a0565b610f55565b6103ec610fe0565b6103b9610571366004611885565b610fe6565b610455610584366004611885565b610ffb565b6103ec6110a9565b61045561059f366004611ad6565b6110af565b6104556105b2366004611ad6565b611124565b6103b96105c5366004611885565b611188565b6103b96105d8366004611885565b61119d565b6105e56111b2565b60405161039d929190611d5e565b6103906111bc565b6103906111e0565b6103ec6111ef565b610390610619366004611885565b6111f5565b6103b961062c366004611885565b611210565b61045561063f3660046119a0565b611225565b610455610652366004611885565b61127a565b6104556106653660046119a0565b611325565b6103ec61137a565b610455610680366004611ad6565b611380565b610455610693366004611ad6565b6113e7565b6103ec61146c565b6103ec611472565b610390611478565b610455611487565b6103906114f9565b6104556106ce3660046119a0565b611508565b6104556106e1366004611885565b611592565b6104556106f4366004611ad6565b61162a565b6104556107073660046118d4565b611696565b61045561071a366004611919565b6116fd565b61045561072d366004611ad6565b6117bc565b6001546001600160a01b031681565b60176020526000908152604090205460ff1681565b6001600160a01b03808416600090815260196020908152604080832093861683529290529081205460ff16801561080257508160ff16836001600160a01b03166364e1fd556040518163ffffffff1660e01b815260040160206040518083038186803b1580156107c557600080fd5b505afa1580156107d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fd9190611aee565b60ff16145b949350505050565b6001600160a01b038082166000908152601660209081526040808320548151638e15f47360e01b8152915193941692638e15f47392600480840193919291829003018186803b15801561085c57600080fd5b505afa158015610870573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108949190611a23565b92915050565b60075481565b601960209081526000928352604080842090915290825290205460ff1681565b6001600160a01b03821660009081526012602052604081205460ff16801561095d57508160ff16836001600160a01b0316639d8ae4466040518163ffffffff1660e01b815260040160206040518083038186803b15801561092057600080fd5b505afa158015610934573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109589190611aee565b60ff16145b9392505050565b60126020526000908152604090205460ff1681565b600d5481565b6001546001600160a01b031633146109b25760405162461bcd60e51b81526004016109a990611cdf565b60405180910390fd5b80600e81905550714c505f57495448445241575f57494e444f5760701b600080516020611dcf833981519152826040516109ec9190611d55565b60405180910390a250565b6001546001600160a01b03163314610a215760405162461bcd60e51b81526004016109a990611cdf565b610a2a81611824565b80600a819055506e4d494e5f4c4f414e5f45515549545960881b600080516020611dcf833981519152826040516109ec9190611d55565b6001546001600160a01b03163314610a8b5760405162461bcd60e51b81526004016109a990611cdf565b806006819055506d11955391125391d7d411549253d160921b600080516020611dcf833981519152826040516109ec9190611d55565b6001546001600160a01b03163314610aeb5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b038216600081815260106020908152604091829020805460ff1916851515179055815163313ce56760e01b815291517f18d231995d1f7e4354b1786418aa8f34f99996ded9cc6b1d43c3815eb6f5ab79938693909263313ce56792600480840193829003018186803b158015610b6757600080fd5b505afa158015610b7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9f9190611a23565b846001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b158015610bd857600080fd5b505afa158015610bec573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c149190810190611a3b565b84604051610c259493929190611b53565b60405180910390a15050565b6001546001600160a01b03163314610c5b5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b038216600081815260116020908152604091829020805460ff1916851515179055815163313ce56760e01b815291517fb9456501e6a30eefbf8c4f9d199ef0c7ac7491abb068d594bbafbdec85447ccc938693909263313ce56792600480840193829003018186803b158015610b6757600080fd5b60055481565b60136020526000908152604090205460ff1681565b600f5460ff1681565b6001546001600160a01b03163314610d255760405162461bcd60e51b81526004016109a990611cdf565b80600481905550731111519055531517d1d49050d157d411549253d160621b600080516020611dcf833981519152826040516109ec9190611d55565b6001546001600160a01b03163314610d8b5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b03821660009081526014602052604090819020805460ff1916831515179055517f936e0e50587b3c03d3e833e5cc880e9a62afb49d51808e96d00c4790ed03796290610c259084908490611b38565b600a5481565b60156020908152600092835260408084209091529082529020546001600160a01b031681565b6003546001600160a01b03163314610e375760405162461bcd60e51b81526004016109a990611d2f565b600f805460ff19168215151790556040517f6e0cb5fa7a57c38eb7939c1104f95fccb5b7a6a8c1a7cab76934305439b639f590610e75908390611ba4565b60405180910390a150565b60095481565b6001546001600160a01b03163314610eb05760405162461bcd60e51b81526004016109a990611cdf565b600854610ecc90610ec7908363ffffffff61184916565b611824565b806007819055506b494e564553544f525f46454560a01b600080516020611dcf833981519152826040516109ec9190611d55565b6001546001600160a01b03163314610f2a5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b6001546001600160a01b03163314610f7f5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b038281166000908152601660205260409081902080546001600160a01b03191692841692909217909155517fc1d3048301c0d23629a2532c8defa6d68f8e1a0e4157918769e9fb1b2eeb888e90610c259084908490611b1e565b60045481565b60146020526000908152604090205460ff1681565b6001546001600160a01b031633146110255760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b03811661104b5760405162461bcd60e51b81526004016109a990611cb9565b600280546001600160a01b0319166001600160a01b0383161790556040516d4d41504c455f545245415355525960901b907f806b6f19dfa971f58fc9140115f19907b73e8336024786c79c2ffc56f6678ec1906109ec908490611b0a565b60065481565b6001546001600160a01b031633146110d95760405162461bcd60e51b81526004016109a990611cdf565b6007546110f090610ec7908363ffffffff61184916565b806008819055506b54524541535552595f46454560a01b600080516020611dcf833981519152826040516109ec9190611d55565b6001546001600160a01b0316331461114e5760405162461bcd60e51b81526004016109a990611cdf565b80600c8190555071131417d0d3d3d31113d5d397d411549253d160721b600080516020611dcf833981519152826040516109ec9190611d55565b60106020526000908152604090205460ff1681565b60116020526000908152604090205460ff1681565b600c54600e549091565b7f000000000000000000000000000000000000000000000000000000000000000081565b6002546001600160a01b031681565b600b5481565b6016602052600090815260409020546001600160a01b031681565b60186020526000908152604090205460ff1681565b6001546001600160a01b0316331461124f5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b6001546001600160a01b03163314801561129c57506001600160a01b03811615155b6112b85760405162461bcd60e51b81526004016109a990611bd3565b600f5460ff16156112db5760405162461bcd60e51b81526004016109a990611c63565b600380546001600160a0