Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 19 from a total of 19 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Set Pending Gove... | 12428768 | 1385 days ago | IN | 0 ETH | 0.0056808 | ||||
Set Default Unis... | 12428764 | 1385 days ago | IN | 0 ETH | 0.0056676 | ||||
Set Swap Out Req... | 12428748 | 1385 days ago | IN | 0 ETH | 0.0036246 | ||||
Set Valid Balanc... | 12428748 | 1385 days ago | IN | 0 ETH | 0.00573516 | ||||
Set Valid Sub Fa... | 12428740 | 1385 days ago | IN | 0 ETH | 0.00590352 | ||||
Set Valid Sub Fa... | 12428740 | 1385 days ago | IN | 0 ETH | 0.00590496 | ||||
Set Valid Loan F... | 12428731 | 1385 days ago | IN | 0 ETH | 0.00556548 | ||||
Set Valid Sub Fa... | 12428731 | 1385 days ago | IN | 0 ETH | 0.00616872 | ||||
Set Valid Sub Fa... | 12428731 | 1385 days ago | IN | 0 ETH | 0.00616872 | ||||
Set Valid Sub Fa... | 12428731 | 1385 days ago | IN | 0 ETH | 0.00616872 | ||||
Set Valid Pool F... | 12428707 | 1385 days ago | IN | 0 ETH | 0.00556536 | ||||
Set Collateral A... | 12428707 | 1385 days ago | IN | 0 ETH | 0.0070662 | ||||
Set Liquidity As... | 12428705 | 1385 days ago | IN | 0 ETH | 0.0079908 | ||||
Set Calc | 12428704 | 1385 days ago | IN | 0 ETH | 0.00557064 | ||||
Set Calc | 12428704 | 1385 days ago | IN | 0 ETH | 0.0055692 | ||||
Set Calc | 12428701 | 1385 days ago | IN | 0 ETH | 0.00557064 | ||||
Set Maple Treasu... | 12428697 | 1385 days ago | IN | 0 ETH | 0.00571716 | ||||
Set Price Oracle | 12428697 | 1385 days ago | IN | 0 ETH | 0.00577092 | ||||
Set Price Oracle | 12428697 | 1385 days ago | IN | 0 ETH | 0.00577092 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
MapleGlobals
Compiler Version
v0.6.11+commit.5ef660b1
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-05-13 */ // SPDX-License-Identifier: AGPL-3.0-or-later // hevm: flattened sources of contracts/MapleGlobals.sol pragma solidity =0.6.11 >=0.6.0 <0.8.0; pragma experimental ABIEncoderV2; ////// lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol /* pragma solidity >=0.6.0 <0.8.0; */ /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } ////// contracts/interfaces/IERC20Details.sol /* pragma solidity 0.6.11; */ /* import "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; */ interface IERC20Details is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint256); } ////// contracts/interfaces/IOracle.sol /* pragma solidity 0.6.11; */ interface IOracle { function priceFeed() external view returns (address); function globals() external view returns (address); function assetAddress() external view returns (address); function manualOverride() external view returns (bool); function manualPrice() external view returns (int256); function getLatestPrice() external view returns (int256); function changeAggregator(address) external; function getAssetAddress() external view returns (address); function getDenomination() external view returns (bytes32); function setManualPrice(int256) external; function setManualOverride(bool) external; } ////// contracts/interfaces/ISubFactory.sol /* pragma solidity 0.6.11; */ interface ISubFactory { function factoryType() external view returns (uint8); } ////// lib/openzeppelin-contracts/contracts/math/SafeMath.sol /* pragma solidity >=0.6.0 <0.8.0; */ /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } ////// contracts/MapleGlobals.sol /* pragma solidity 0.6.11; */ /* pragma experimental ABIEncoderV2; */ /* import "lib/openzeppelin-contracts/contracts/math/SafeMath.sol"; */ /* import "./interfaces/IERC20Details.sol"; */ /* import "./interfaces/IOracle.sol"; */ /* import "./interfaces/ISubFactory.sol"; */ interface ICalc { function calcType() external view returns (uint8); } /// @title MapleGlobals maintains a central source of parameters and allowlists for the Maple protocol. contract MapleGlobals { using SafeMath for uint256; address public immutable mpl; // The ERC-2222 Maple Token for the Maple protocol. address public pendingGovernor; // The Governor that is declared for governorship transfer. Must be accepted for transfer to take effect. address public governor; // The Governor responsible for management of global Maple variables. address public mapleTreasury; // The MapleTreasury is the Treasury where all fees pass through for conversion, prior to distribution. address public globalAdmin; // The Global Admin of the whole network. Has the power to switch off/on the functionality of entire protocol. uint256 public defaultGracePeriod; // Represents the amount of time a Borrower has to make a missed payment before a default can be triggered. uint256 public swapOutRequired; // Represents minimum amount of Pool cover that a Pool Delegate has to provide before they can finalize a Pool. uint256 public fundingPeriod; // Amount of time to allow a Borrower to drawdown on their Loan after funding period ends. uint256 public investorFee; // Portion of drawdown that goes to the Pool Delegates and individual Lenders. uint256 public treasuryFee; // Portion of drawdown that goes to the MapleTreasury. uint256 public maxSwapSlippage; // Maximum amount of slippage for Uniswap transactions. uint256 public minLoanEquity; // Minimum amount of LoanFDTs required to trigger liquidations (basis points percentage of totalSupply). uint256 public stakerCooldownPeriod; // Period (in secs) after which Stakers are allowed to unstake their BPTs from a StakeLocker. uint256 public lpCooldownPeriod; // Period (in secs) after which LPs are allowed to withdraw their funds from a Pool. uint256 public stakerUnstakeWindow; // Window of time (in secs) after `stakerCooldownPeriod` that an account has to withdraw before their intent to unstake is invalidated. uint256 public lpWithdrawWindow; // Window of time (in secs) after `lpCooldownPeriod` that an account has to withdraw before their intent to withdraw is invalidated. bool public protocolPaused; // Switch to pause the functionality of the entire protocol. mapping(address => bool) public isValidLiquidityAsset; // Mapping of valid Liquidity Assets. mapping(address => bool) public isValidCollateralAsset; // Mapping of valid Collateral Assets. mapping(address => bool) public validCalcs; // Mapping of valid Calculators mapping(address => bool) public isValidPoolDelegate; // Mapping of valid Pool Delegates (prevent unauthorized/unknown addresses from creating Pools). mapping(address => bool) public isValidBalancerPool; // Mapping of valid Balancer Pools that Maple has approved for BPT staking. // Determines the liquidation path of various assets in Loans and the Treasury. // The value provided will determine whether or not to perform a bilateral or triangular swap on Uniswap. // For example, `defaultUniswapPath[WBTC][USDC]` value would indicate what asset to convert WBTC into before conversion to USDC. // If `defaultUniswapPath[WBTC][USDC] == USDC`, then the swap is bilateral and no middle asset is swapped. // If `defaultUniswapPath[WBTC][USDC] == WETH`, then swap WBTC for WETH, then WETH for USDC. mapping(address => mapping(address => address)) public defaultUniswapPath; mapping(address => address) public oracleFor; // Chainlink oracle for a given asset. mapping(address => bool) public isValidPoolFactory; // Mapping of valid Pool Factories. mapping(address => bool) public isValidLoanFactory; // Mapping of valid Loan Factories. mapping(address => mapping(address => bool)) public validSubFactories; // Mapping of valid sub factories. event Initialized(); event CollateralAssetSet(address asset, uint256 decimals, string symbol, bool valid); event LiquidityAssetSet(address asset, uint256 decimals, string symbol, bool valid); event OracleSet(address asset, address oracle); event TransferRestrictionExemptionSet(address indexed exemptedContract, bool valid); event BalancerPoolSet(address balancerPool, bool valid); event PendingGovernorSet(address indexed pendingGovernor); event GovernorAccepted(address indexed governor); event GlobalsParamSet(bytes32 indexed which, uint256 value); event GlobalsAddressSet(bytes32 indexed which, address addr); event ProtocolPaused(bool pause); event GlobalAdminSet(address indexed newGlobalAdmin); event PoolDelegateSet(address indexed delegate, bool valid); /** @dev Checks that `msg.sender` is the Governor. */ modifier isGovernor() { require(msg.sender == governor, "MG:NOT_GOV"); _; } /** @dev Constructor function. @dev It emits an `Initialized` event. @param _governor Address of Governor. @param _mpl Address of the ERC-2222 Maple Token for the Maple protocol. @param _globalAdmin Address the Global Admin. */ constructor(address _governor, address _mpl, address _globalAdmin) public { governor = _governor; mpl = _mpl; swapOutRequired = 10_000; // $10,000 of Pool cover fundingPeriod = 10 days; defaultGracePeriod = 5 days; investorFee = 50; // 0.5 % treasuryFee = 50; // 0.5 % maxSwapSlippage = 1000; // 10 % minLoanEquity = 2000; // 20 % globalAdmin = _globalAdmin; stakerCooldownPeriod = 10 days; lpCooldownPeriod = 10 days; stakerUnstakeWindow = 2 days; lpWithdrawWindow = 2 days; emit Initialized(); } /************************/ /*** Setter Functions ***/ /************************/ /** @dev Sets the Staker cooldown period. This change will affect the existing cool down period for the Stakers that already intended to unstake. Only the Governor can call this function. @dev It emits a `GlobalsParamSet` event. @param newCooldownPeriod New value for the cool down period. */ function setStakerCooldownPeriod(uint256 newCooldownPeriod) external isGovernor { stakerCooldownPeriod = newCooldownPeriod; emit GlobalsParamSet("STAKER_COOLDOWN_PERIOD", newCooldownPeriod); } /** @dev Sets the Liquidity Pool cooldown period. This change will affect the existing cool down period for the LPs that already intended to withdraw. Only the Governor can call this function. @dev It emits a `GlobalsParamSet` event. @param newCooldownPeriod New value for the cool down period. */ function setLpCooldownPeriod(uint256 newCooldownPeriod) external isGovernor { lpCooldownPeriod = newCooldownPeriod; emit GlobalsParamSet("LP_COOLDOWN_PERIOD", newCooldownPeriod); } /** @dev Sets the Staker unstake window. This change will affect the existing window for the Stakers that already intended to unstake. Only the Governor can call this function. @dev It emits a `GlobalsParamSet` event. @param newUnstakeWindow New value for the unstake window. */ function setStakerUnstakeWindow(uint256 newUnstakeWindow) external isGovernor { stakerUnstakeWindow = newUnstakeWindow; emit GlobalsParamSet("STAKER_UNSTAKE_WINDOW", newUnstakeWindow); } /** @dev Sets the Liquidity Pool withdraw window. This change will affect the existing window for the LPs that already intended to withdraw. Only the Governor can call this function. @dev It emits a `GlobalsParamSet` event. @param newLpWithdrawWindow New value for the withdraw window. */ function setLpWithdrawWindow(uint256 newLpWithdrawWindow) external isGovernor { lpWithdrawWindow = newLpWithdrawWindow; emit GlobalsParamSet("LP_WITHDRAW_WINDOW", newLpWithdrawWindow); } /** @dev Sets the allowed Uniswap slippage percentage, in basis points. Only the Governor can call this function. @dev It emits a `GlobalsParamSet` event. @param newMaxSlippage New max slippage percentage (in basis points) */ function setMaxSwapSlippage(uint256 newMaxSlippage) external isGovernor { _checkPercentageRange(newMaxSlippage); maxSwapSlippage = newMaxSlippage; emit GlobalsParamSet("MAX_SWAP_SLIPPAGE", newMaxSlippage); } /** @dev Sets the Global Admin. Only the Governor can call this function. @dev It emits a `GlobalAdminSet` event. @param newGlobalAdmin New global admin address. */ function setGlobalAdmin(address newGlobalAdmin) external { require(msg.sender == governor && newGlobalAdmin != address(0), "MG:NOT_GOV_OR_ADMIN"); require(!protocolPaused, "MG:PROTO_PAUSED"); globalAdmin = newGlobalAdmin; emit GlobalAdminSet(newGlobalAdmin); } /** @dev Sets the validity of a Balancer Pool. Only the Governor can call this function. @dev It emits a `BalancerPoolSet` event. @param balancerPool Address of Balancer Pool contract. @param valid The new validity status of a Balancer Pool. */ function setValidBalancerPool(address balancerPool, bool valid) external isGovernor { isValidBalancerPool[balancerPool] = valid; emit BalancerPoolSet(balancerPool, valid); } /** @dev Sets the paused/unpaused state of the protocol. Only the Global Admin can call this function. @dev It emits a `ProtocolPaused` event. @param pause Boolean flag to switch externally facing functionality in the protocol on/off. */ function setProtocolPause(bool pause) external { require(msg.sender == globalAdmin, "MG:NOT_ADMIN"); protocolPaused = pause; emit ProtocolPaused(pause); } /** @dev Sets the validity of a PoolFactory. Only the Governor can call this function. @param poolFactory Address of PoolFactory. @param valid The new validity status of a PoolFactory. */ function setValidPoolFactory(address poolFactory, bool valid) external isGovernor { isValidPoolFactory[poolFactory] = valid; } /** @dev Sets the validity of a LoanFactory. Only the Governor can call this function. @param loanFactory Address of LoanFactory. @param valid The new validity status of a LoanFactory. */ function setValidLoanFactory(address loanFactory, bool valid) external isGovernor { isValidLoanFactory[loanFactory] = valid; } /** @dev Sets the validity of a sub factory as it relates to a super factory. Only the Governor can call this function. @param superFactory The core factory (e.g. PoolFactory, LoanFactory). @param subFactory The sub factory used by core factory (e.g. LiquidityLockerFactory). @param valid The new validity status of a subFactory within context of super factory. */ function setValidSubFactory(address superFactory, address subFactory, bool valid) external isGovernor { require(isValidLoanFactory[superFactory] || isValidPoolFactory[superFactory], "MG:INVALID_SUPER_F"); validSubFactories[superFactory][subFactory] = valid; } /** @dev Sets the path to swap an asset through Uniswap. Only the Governor can call this function. @param from Asset being swapped. @param to Final asset to receive. ** @param mid Middle asset. ** Set to == mid to enable a bilateral swap (single path swap). Set to != mid to enable a triangular swap (multi path swap). */ function setDefaultUniswapPath(address from, address to, address mid) external isGovernor { defaultUniswapPath[from][to] = mid; } /** @dev Sets the validity of a Pool Delegate (those allowed to create Pools). Only the Governor can call this function. @dev It emits a `PoolDelegateSet` event. @param delegate Address to manage permissions for. @param valid The new validity status of a Pool Delegate. */ function setPoolDelegateAllowlist(address delegate, bool valid) external isGovernor { isValidPoolDelegate[delegate] = valid; emit PoolDelegateSet(delegate, valid); } /** @dev Sets the validity of an asset for collateral. Only the Governor can call this function. @dev It emits a `CollateralAssetSet` event. @param asset The asset to assign validity to. @param valid The new validity status of a Collateral Asset. */ function setCollateralAsset(address asset, bool valid) external isGovernor { isValidCollateralAsset[asset] = valid; emit CollateralAssetSet(asset, IERC20Details(asset).decimals(), IERC20Details(asset).symbol(), valid); } /** @dev Sets the validity of an asset for liquidity in Pools. Only the Governor can call this function. @dev It emits a `LiquidityAssetSet` event. @param asset Address of the valid asset. @param valid The new validity status a Liquidity Asset in Pools. */ function setLiquidityAsset(address asset, bool valid) external isGovernor { isValidLiquidityAsset[asset] = valid; emit LiquidityAssetSet(asset, IERC20Details(asset).decimals(), IERC20Details(asset).symbol(), valid); } /** @dev Sets the validity of a calculator contract. Only the Governor can call this function. @param calc Calculator address. @param valid The new validity status of a Calculator. */ function setCalc(address calc, bool valid) external isGovernor { validCalcs[calc] = valid; } /** @dev Sets the investor fee (in basis points). Only the Governor can call this function. @dev It emits a `GlobalsParamSet` event. @param _fee The fee, e.g., 50 = 0.50%. */ function setInvestorFee(uint256 _fee) external isGovernor { _checkPercentageRange(treasuryFee.add(_fee)); investorFee = _fee; emit GlobalsParamSet("INVESTOR_FEE", _fee); } /** @dev Sets the treasury fee (in basis points). Only the Governor can call this function. @dev It emits a `GlobalsParamSet` event. @param _fee The fee, e.g., 50 = 0.50%. */ function setTreasuryFee(uint256 _fee) external isGovernor { _checkPercentageRange(investorFee.add(_fee)); treasuryFee = _fee; emit GlobalsParamSet("TREASURY_FEE", _fee); } /** @dev Sets the MapleTreasury. Only the Governor can call this function. @dev It emits a `GlobalsParamSet` event. @param _mapleTreasury New MapleTreasury address. */ function setMapleTreasury(address _mapleTreasury) external isGovernor { require(_mapleTreasury != address(0), "MG:ZERO_ADDR"); mapleTreasury = _mapleTreasury; emit GlobalsAddressSet("MAPLE_TREASURY", _mapleTreasury); } /** @dev Sets the default grace period. Only the Governor can call this function. @dev It emits a `GlobalsParamSet` event. @param _defaultGracePeriod Number of seconds to set the grace period to. */ function setDefaultGracePeriod(uint256 _defaultGracePeriod) external isGovernor { defaultGracePeriod = _defaultGracePeriod; emit GlobalsParamSet("DEFAULT_GRACE_PERIOD", _defaultGracePeriod); } /** @dev Sets the minimum Loan equity. Only the Governor can call this function. @dev It emits a `GlobalsParamSet` event. @param _minLoanEquity Min percentage of Loan equity an account must have to trigger liquidations. */ function setMinLoanEquity(uint256 _minLoanEquity) external isGovernor { _checkPercentageRange(_minLoanEquity); minLoanEquity = _minLoanEquity; emit GlobalsParamSet("MIN_LOAN_EQUITY", _minLoanEquity); } /** @dev Sets the funding period. Only the Governor can call this function. @dev It emits a `GlobalsParamSet` event. @param _fundingPeriod Number of seconds to set the drawdown grace period to. */ function setFundingPeriod(uint256 _fundingPeriod) external isGovernor { fundingPeriod = _fundingPeriod; emit GlobalsParamSet("FUNDING_PERIOD", _fundingPeriod); } /** @dev Sets the the minimum Pool cover required to finalize a Pool. Only the Governor can call this function. FIX @dev It emits a `GlobalsParamSet` event. @param amt The new minimum swap out required. */ function setSwapOutRequired(uint256 amt) external isGovernor { require(amt >= uint256(10_000), "MG:SWAP_OUT_TOO_LOW"); swapOutRequired = amt; emit GlobalsParamSet("SWAP_OUT_REQUIRED", amt); } /** @dev Sets a price feed's oracle. Only the Governor can call this function. @dev It emits a `OracleSet` event. @param asset Asset to update price for. @param oracle New oracle to use. */ function setPriceOracle(address asset, address oracle) external isGovernor { oracleFor[asset] = oracle; emit OracleSet(asset, oracle); } /************************************/ /*** Transfer Ownership Functions ***/ /************************************/ /** @dev Sets a new Pending Governor. This address can become Governor if they accept. Only the Governor can call this function. @dev It emits a `PendingGovernorSet` event. @param _pendingGovernor Address of new Pending Governor. */ function setPendingGovernor(address _pendingGovernor) external isGovernor { require(_pendingGovernor != address(0), "MG:ZERO_ADDR"); pendingGovernor = _pendingGovernor; emit PendingGovernorSet(_pendingGovernor); } /** @dev Accept the Governor position. Only the Pending Governor can call this function. @dev It emits a `GovernorAccepted` event. */ function acceptGovernor() external { require(msg.sender == pendingGovernor, "MG:NOT_PENDING_GOV"); governor = msg.sender; pendingGovernor = address(0); emit GovernorAccepted(msg.sender); } /************************/ /*** Getter Functions ***/ /************************/ /** @dev Fetch price for asset from Chainlink oracles. @param asset Asset to fetch price of. @return Price of asset in USD. */ function getLatestPrice(address asset) external view returns (uint256) { return uint256(IOracle(oracleFor[asset]).getLatestPrice()); } /** @dev Checks that a subFactory is valid as it relates to a super factory. @param superFactory The core factory (e.g. PoolFactory, LoanFactory). @param subFactory The sub factory used by core factory (e.g. LiquidityLockerFactory). @param factoryType The type expected for the subFactory. References listed below. 0 = COLLATERAL_LOCKER_FACTORY 1 = DEBT_LOCKER_FACTORY 2 = FUNDING_LOCKER_FACTORY 3 = LIQUIDITY_LOCKER_FACTORY 4 = STAKE_LOCKER_FACTORY */ function isValidSubFactory(address superFactory, address subFactory, uint8 factoryType) external view returns (bool) { return validSubFactories[superFactory][subFactory] && ISubFactory(subFactory).factoryType() == factoryType; } /** @dev Checks that a Calculator is valid. @param calc Calculator address. @param calcType Calculator type. */ function isValidCalc(address calc, uint8 calcType) external view returns (bool) { return validCalcs[calc] && ICalc(calc).calcType() == calcType; } /** @dev Returns the `lpCooldownPeriod` and `lpWithdrawWindow` as a tuple, for convenience. @return [0] = lpCooldownPeriod [1] = lpWithdrawWindow */ function getLpCooldownParams() external view returns (uint256, uint256) { return (lpCooldownPeriod, lpWithdrawWindow); } /************************/ /*** Helper Functions ***/ /************************/ /** @dev Checks that percentage is less than 100%. */ function _checkPercentageRange(uint256 percentage) internal pure { require(percentage <= uint256(10_000), "MG:PCT_OOB"); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"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":"delegate","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"}]
Contract Creation Code
60a06040523480156200001157600080fd5b5060405162001f9638038062001f968339810160408190526200003491620000e8565b600180546001600160a01b038086166001600160a01b0319928316179092556001600160601b0319606085901b16608052612710600555620d2f00600681905562069780600455603260078190556008556103e86009556107d0600a556003805493851693909216929092179055600b819055600c556202a300600d819055600e556040517f5daa87a0e9463431830481fd4b6e3403442dfb9a12b9c07597e9f61d50b633c890600090a150505062000154565b600080600060608486031215620000fd578283fd5b83516200010a816200013b565b60208501519093506200011d816200013b565b604085015190925062000130816200013b565b809150509250925092565b6001600160a01b03811681146200015157600080fd5b50565b60805160601c611e2462000172600039806111be5250611e246000f3fe608060405234801561001057600080fd5b50600436106103835760003560e01c80637303de25116101de578063c9c672401161010f578063e58bb639116100ad578063f33ef09a1161007c578063f33ef09a146106e6578063f3897663146106f9578063f85ee6f81461070c578063fd4a91211461071f57610383565b8063e58bb639146106b0578063ec9a9368146106b8578063efdb16fc146106c0578063f235757f146106d357610383565b8063dbc6c552116100e9578063dbc6c55214610685578063dd02e0ec14610698578063df3d02bd146106a0578063e3056a34146106a857610383565b8063c9c6724014610657578063cc32d1761461066a578063d1cdf3011461067257610383565b8063a05309461161017c578063aed019b911610156578063aed019b91461060b578063b53afda71461061e578063be44ed6b14610631578063c52bc31d1461064457610383565b8063a0530946146105f3578063a5a27605146105fb578063a965d6b51461060357610383565b80638608a6e1116101b85780638608a6e1146105a45780638695118a146105b75780638c14834b146105ca5780639f51290b146105dd57610383565b80637303de251461057657806374d7c62b1461058957806377e741c71461059157610383565b80633106374c116102b85780634e989118116102565780636597b899116102305780636597b8991461053557806367a74ddc14610548578063705d5f241461055b57806372a22d711461056357610383565b80634e98911814610507578063553231951461051a5780635e0454671461052257610383565b806344c14f711161029257806344c14f71146104c6578063490dae64146104d95780634a2697c4146104ec5780634d866592146104f457610383565b80633106374c146104a3578063372e3546146104ab578063425fad58146104be57610383565b80631beb84e711610325578063298b795d116102ff578063298b795d146104575780632a5aa2921461046a5780632daa0d891461047d5780632fa6c88f1461049057610383565b80631beb84e7146104275780632018b8701461043a578063267186061461044257610383565b806316345f181161036157806316345f18146103d957806316a12d7a146103f95780631b1804aa146104015780631b5833f71461041457610383565b80630c340a2414610388578063107c0240146103a657806313d459fb146103c6575b600080fd5b610390610732565b60405161039d9190611b0a565b60405180910390f35b6103b96103b4366004611885565b610741565b60405161039d9190611ba4565b6103b96103d4366004611963565b610756565b6103ec6103e7366004611885565b61080a565b60405161039d9190611d55565b6103ec61089a565b6103b961040f3660046118a0565b6108a0565b6103b96104223660046119db565b6108c0565b6103b9610435366004611885565b610964565b6103ec610979565b610455610450366004611ad6565b61097f565b005b610455610465366004611ad6565b6109f7565b610455610478366004611ad6565b610a61565b61045561048b3660046119a0565b610ac1565b61045561049e3660046119a0565b610c31565b6103ec610cd7565b6103b96104b9366004611885565b610cdd565b6103b9610cf2565b6104556104d4366004611ad6565b610cfb565b6104556104e73660046119a0565b610d61565b6103ec610de1565b6103906105023660046118a0565b610de7565b610455610515366004611a07565b610e0d565b6103ec610e80565b610455610530366004611ad6565b610e86565b6104556105433660046119a0565b610f00565b6104556105563660046118a0565b610f55565b6103ec610fe0565b6103b9610571366004611885565b610fe6565b610455610584366004611885565b610ffb565b6103ec6110a9565b61045561059f366004611ad6565b6110af565b6104556105b2366004611ad6565b611124565b6103b96105c5366004611885565b611188565b6103b96105d8366004611885565b61119d565b6105e56111b2565b60405161039d929190611d5e565b6103906111bc565b6103906111e0565b6103ec6111ef565b610390610619366004611885565b6111f5565b6103b961062c366004611885565b611210565b61045561063f3660046119a0565b611225565b610455610652366004611885565b61127a565b6104556106653660046119a0565b611325565b6103ec61137a565b610455610680366004611ad6565b611380565b610455610693366004611ad6565b6113e7565b6103ec61146c565b6103ec611472565b610390611478565b610455611487565b6103906114f9565b6104556106ce3660046119a0565b611508565b6104556106e1366004611885565b611592565b6104556106f4366004611ad6565b61162a565b6104556107073660046118d4565b611696565b61045561071a366004611919565b6116fd565b61045561072d366004611ad6565b6117bc565b6001546001600160a01b031681565b60176020526000908152604090205460ff1681565b6001600160a01b03808416600090815260196020908152604080832093861683529290529081205460ff16801561080257508160ff16836001600160a01b03166364e1fd556040518163ffffffff1660e01b815260040160206040518083038186803b1580156107c557600080fd5b505afa1580156107d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fd9190611aee565b60ff16145b949350505050565b6001600160a01b038082166000908152601660209081526040808320548151638e15f47360e01b8152915193941692638e15f47392600480840193919291829003018186803b15801561085c57600080fd5b505afa158015610870573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108949190611a23565b92915050565b60075481565b601960209081526000928352604080842090915290825290205460ff1681565b6001600160a01b03821660009081526012602052604081205460ff16801561095d57508160ff16836001600160a01b0316639d8ae4466040518163ffffffff1660e01b815260040160206040518083038186803b15801561092057600080fd5b505afa158015610934573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109589190611aee565b60ff16145b9392505050565b60126020526000908152604090205460ff1681565b600d5481565b6001546001600160a01b031633146109b25760405162461bcd60e51b81526004016109a990611cdf565b60405180910390fd5b80600e81905550714c505f57495448445241575f57494e444f5760701b600080516020611dcf833981519152826040516109ec9190611d55565b60405180910390a250565b6001546001600160a01b03163314610a215760405162461bcd60e51b81526004016109a990611cdf565b610a2a81611824565b80600a819055506e4d494e5f4c4f414e5f45515549545960881b600080516020611dcf833981519152826040516109ec9190611d55565b6001546001600160a01b03163314610a8b5760405162461bcd60e51b81526004016109a990611cdf565b806006819055506d11955391125391d7d411549253d160921b600080516020611dcf833981519152826040516109ec9190611d55565b6001546001600160a01b03163314610aeb5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b038216600081815260106020908152604091829020805460ff1916851515179055815163313ce56760e01b815291517f18d231995d1f7e4354b1786418aa8f34f99996ded9cc6b1d43c3815eb6f5ab79938693909263313ce56792600480840193829003018186803b158015610b6757600080fd5b505afa158015610b7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9f9190611a23565b846001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b158015610bd857600080fd5b505afa158015610bec573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c149190810190611a3b565b84604051610c259493929190611b53565b60405180910390a15050565b6001546001600160a01b03163314610c5b5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b038216600081815260116020908152604091829020805460ff1916851515179055815163313ce56760e01b815291517fb9456501e6a30eefbf8c4f9d199ef0c7ac7491abb068d594bbafbdec85447ccc938693909263313ce56792600480840193829003018186803b158015610b6757600080fd5b60055481565b60136020526000908152604090205460ff1681565b600f5460ff1681565b6001546001600160a01b03163314610d255760405162461bcd60e51b81526004016109a990611cdf565b80600481905550731111519055531517d1d49050d157d411549253d160621b600080516020611dcf833981519152826040516109ec9190611d55565b6001546001600160a01b03163314610d8b5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b03821660009081526014602052604090819020805460ff1916831515179055517f936e0e50587b3c03d3e833e5cc880e9a62afb49d51808e96d00c4790ed03796290610c259084908490611b38565b600a5481565b60156020908152600092835260408084209091529082529020546001600160a01b031681565b6003546001600160a01b03163314610e375760405162461bcd60e51b81526004016109a990611d2f565b600f805460ff19168215151790556040517f6e0cb5fa7a57c38eb7939c1104f95fccb5b7a6a8c1a7cab76934305439b639f590610e75908390611ba4565b60405180910390a150565b60095481565b6001546001600160a01b03163314610eb05760405162461bcd60e51b81526004016109a990611cdf565b600854610ecc90610ec7908363ffffffff61184916565b611824565b806007819055506b494e564553544f525f46454560a01b600080516020611dcf833981519152826040516109ec9190611d55565b6001546001600160a01b03163314610f2a5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b6001546001600160a01b03163314610f7f5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b038281166000908152601660205260409081902080546001600160a01b03191692841692909217909155517fc1d3048301c0d23629a2532c8defa6d68f8e1a0e4157918769e9fb1b2eeb888e90610c259084908490611b1e565b60045481565b60146020526000908152604090205460ff1681565b6001546001600160a01b031633146110255760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b03811661104b5760405162461bcd60e51b81526004016109a990611cb9565b600280546001600160a01b0319166001600160a01b0383161790556040516d4d41504c455f545245415355525960901b907f806b6f19dfa971f58fc9140115f19907b73e8336024786c79c2ffc56f6678ec1906109ec908490611b0a565b60065481565b6001546001600160a01b031633146110d95760405162461bcd60e51b81526004016109a990611cdf565b6007546110f090610ec7908363ffffffff61184916565b806008819055506b54524541535552595f46454560a01b600080516020611dcf833981519152826040516109ec9190611d55565b6001546001600160a01b0316331461114e5760405162461bcd60e51b81526004016109a990611cdf565b80600c8190555071131417d0d3d3d31113d5d397d411549253d160721b600080516020611dcf833981519152826040516109ec9190611d55565b60106020526000908152604090205460ff1681565b60116020526000908152604090205460ff1681565b600c54600e549091565b7f000000000000000000000000000000000000000000000000000000000000000081565b6002546001600160a01b031681565b600b5481565b6016602052600090815260409020546001600160a01b031681565b60186020526000908152604090205460ff1681565b6001546001600160a01b0316331461124f5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b6001546001600160a01b03163314801561129c57506001600160a01b03811615155b6112b85760405162461bcd60e51b81526004016109a990611bd3565b600f5460ff16156112db5760405162461bcd60e51b81526004016109a990611c63565b600380546001600160a01b0319166001600160a01b0383169081179091556040517fad3f8fa73ce3985d027e4c3bbe1194701a23e635a746bcf73d8632f677ac388290600090a250565b6001546001600160a01b0316331461134f5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b60085481565b6001546001600160a01b031633146113aa5760405162461bcd60e51b81526004016109a990611cdf565b80600d81905550745354414b45525f554e5354414b455f57494e444f5760581b600080516020611dcf833981519152826040516109ec9190611d55565b6001546001600160a01b031633146114115760405162461bcd60e51b81526004016109a990611cdf565b6127108110156114335760405162461bcd60e51b81526004016109a990611c8c565b806005819055507014d5d05417d3d55517d491545552549151607a1b600080516020611dcf833981519152826040516109ec9190611d55565b600c5481565b600e5481565b6000546001600160a01b031681565b6000546001600160a01b031633146114b15760405162461bcd60e51b81526004016109a990611c00565b60018054336001600160a01b031991821681179092556000805490911681556040517fb7a4788848eba3319c766bdd6428c7d7a10e4cba4fd6ade9b79b7102b7099b369190a2565b6003546001600160a01b031681565b6001546001600160a01b031633146115325760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b03821660008181526013602052604090819020805460ff1916841515179055517fd2e6a599a52383178be9bf2d0be60c96615b89f8d9cf6c680f06962aa73679fc90611586908490611ba4565b60405180910390a25050565b6001546001600160a01b031633146115bc5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b0381166115e25760405162461bcd60e51b81526004016109a990611cb9565b600080546001600160a01b0319166001600160a01b038316908117825560405190917f56bddfa0cee9697cebddf9acd7f23dc6583663b05e007b877056d05017994def91a250565b6001546001600160a01b031633146116545760405162461bcd60e51b81526004016109a990611cdf565b61165d81611824565b80600981905550704d41585f535741505f534c49505041474560781b600080516020611dcf833981519152826040516109ec9190611d55565b6001546001600160a01b031633146116c05760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b03928316600090815260156020908152604080832094861683529390529190912080546001600160a01b03191691909216179055565b6001546001600160a01b031633146117275760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b03831660009081526018602052604090205460ff168061176657506001600160a01b03831660009081526017602052604090205460ff165b6117825760405162461bcd60e51b81526004016109a990611d03565b6001600160a01b03928316600090815260196020908152604080832094909516825292909252919020805460ff1916911515919091179055565b6001546001600160a01b031633146117e65760405162461bcd60e51b81526004016109a990611cdf565b80600b819055507514d51052d15497d0d3d3d31113d5d397d411549253d160521b600080516020611dcf833981519152826040516109ec9190611d55565b6127108111156118465760405162461bcd60e51b81526004016109a990611baf565b50565b60008282018381101561095d5760405162461bcd60e51b81526004016109a990611c2c565b80356001600160a01b038116811461089457600080fd5b600060208284031215611896578081fd5b61095d838361186e565b600080604083850312156118b2578081fd5b6118bc848461186e565b91506118cb846020850161186e565b90509250929050565b6000806000606084860312156118e8578081fd5b6118f2858561186e565b9250611901856020860161186e565b9150611910856040860161186e565b90509250925092565b60008060006060848603121561192d578283fd5b833561193881611d9c565b9250602084013561194881611d9c565b9150604084013561195881611db1565b809150509250925092565b600080600060608486031215611977578283fd5b611981858561186e565b9250611990856020860161186e565b9150604084013561195881611dbf565b600080604083850312156119b2578182fd5b6119bc848461186e565b9150602083013580151581146119d0578182fd5b809150509250929050565b600080604083850312156119ed578182fd5b6119f7848461186e565b915060208301356119d081611dbf565b600060208284031215611a18578081fd5b813561095d81611db1565b600060208284031215611a34578081fd5b5051919050565b600060208284031215611a4c578081fd5b815167ffffffffffffffff80821115611a63578283fd5b81840185601f820112611a74578384fd5b8051925081831115611a84578384fd5b604051601f8401601f191681016020018381118282101715611aa4578586fd5b604052838152818401602001871015611abb578485fd5b611acc846020830160208501611d6c565b9695505050505050565b600060208284031215611ae7578081fd5b5035919050565b600060208284031215611aff578081fd5b815161095d81611dbf565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039290921682521515602082015260400190565b600060018060a01b0386168252846020830152608060408301528351806080840152611b868160a0850160208801611d6c565b921515606083015250601f91909101601f19160160a0019392505050565b901515815260200190565b6020808252600a908201526926a39d2821aa2fa7a7a160b11b604082015260600190565b60208082526013908201527226a39d2727aa2fa3a7ab2fa7a92fa0a226a4a760691b604082015260600190565b60208082526012908201527126a39d2727aa2fa822a72224a723afa3a7ab60711b604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252600f908201526e1351ce941493d513d7d4105554d151608a1b604082015260600190565b6020808252601390820152724d473a535741505f4f55545f544f4f5f4c4f5760681b604082015260600190565b6020808252600c908201526b26a39d2d22a927afa0a2222960a11b604082015260600190565b6020808252600a908201526926a39d2727aa2fa3a7ab60b11b604082015260600190565b60208082526012908201527126a39d24a72b20a624a22fa9aaa822a92fa360711b604082015260600190565b6020808252600c908201526b26a39d2727aa2fa0a226a4a760a11b604082015260600190565b90815260200190565b918252602082015260400190565b60005b83811015611d87578181015183820152602001611d6f565b83811115611d96576000848401525b50505050565b6001600160a01b038116811461184657600080fd5b801515811461184657600080fd5b60ff8116811461184657600080fdfed8780a041c72589f51af8b3fade9cc8a466d00ecef64d45657dd6cdebf1ecf47a26469706673582212200eae2d9f76d9e4b6263a8c2ce45b8314aba61d9256119fb0e8ef82085983da3764736f6c634300060b00330000000000000000000000009686328198e51479c6aa5eb87f20b09dbd1bca2500000000000000000000000033349b282065b0284d756f0577fb39c158f935e600000000000000000000000093cc3e39c91cf93fd57aca416ed6fe66e8bdd573
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106103835760003560e01c80637303de25116101de578063c9c672401161010f578063e58bb639116100ad578063f33ef09a1161007c578063f33ef09a146106e6578063f3897663146106f9578063f85ee6f81461070c578063fd4a91211461071f57610383565b8063e58bb639146106b0578063ec9a9368146106b8578063efdb16fc146106c0578063f235757f146106d357610383565b8063dbc6c552116100e9578063dbc6c55214610685578063dd02e0ec14610698578063df3d02bd146106a0578063e3056a34146106a857610383565b8063c9c6724014610657578063cc32d1761461066a578063d1cdf3011461067257610383565b8063a05309461161017c578063aed019b911610156578063aed019b91461060b578063b53afda71461061e578063be44ed6b14610631578063c52bc31d1461064457610383565b8063a0530946146105f3578063a5a27605146105fb578063a965d6b51461060357610383565b80638608a6e1116101b85780638608a6e1146105a45780638695118a146105b75780638c14834b146105ca5780639f51290b146105dd57610383565b80637303de251461057657806374d7c62b1461058957806377e741c71461059157610383565b80633106374c116102b85780634e989118116102565780636597b899116102305780636597b8991461053557806367a74ddc14610548578063705d5f241461055b57806372a22d711461056357610383565b80634e98911814610507578063553231951461051a5780635e0454671461052257610383565b806344c14f711161029257806344c14f71146104c6578063490dae64146104d95780634a2697c4146104ec5780634d866592146104f457610383565b80633106374c146104a3578063372e3546146104ab578063425fad58146104be57610383565b80631beb84e711610325578063298b795d116102ff578063298b795d146104575780632a5aa2921461046a5780632daa0d891461047d5780632fa6c88f1461049057610383565b80631beb84e7146104275780632018b8701461043a578063267186061461044257610383565b806316345f181161036157806316345f18146103d957806316a12d7a146103f95780631b1804aa146104015780631b5833f71461041457610383565b80630c340a2414610388578063107c0240146103a657806313d459fb146103c6575b600080fd5b610390610732565b60405161039d9190611b0a565b60405180910390f35b6103b96103b4366004611885565b610741565b60405161039d9190611ba4565b6103b96103d4366004611963565b610756565b6103ec6103e7366004611885565b61080a565b60405161039d9190611d55565b6103ec61089a565b6103b961040f3660046118a0565b6108a0565b6103b96104223660046119db565b6108c0565b6103b9610435366004611885565b610964565b6103ec610979565b610455610450366004611ad6565b61097f565b005b610455610465366004611ad6565b6109f7565b610455610478366004611ad6565b610a61565b61045561048b3660046119a0565b610ac1565b61045561049e3660046119a0565b610c31565b6103ec610cd7565b6103b96104b9366004611885565b610cdd565b6103b9610cf2565b6104556104d4366004611ad6565b610cfb565b6104556104e73660046119a0565b610d61565b6103ec610de1565b6103906105023660046118a0565b610de7565b610455610515366004611a07565b610e0d565b6103ec610e80565b610455610530366004611ad6565b610e86565b6104556105433660046119a0565b610f00565b6104556105563660046118a0565b610f55565b6103ec610fe0565b6103b9610571366004611885565b610fe6565b610455610584366004611885565b610ffb565b6103ec6110a9565b61045561059f366004611ad6565b6110af565b6104556105b2366004611ad6565b611124565b6103b96105c5366004611885565b611188565b6103b96105d8366004611885565b61119d565b6105e56111b2565b60405161039d929190611d5e565b6103906111bc565b6103906111e0565b6103ec6111ef565b610390610619366004611885565b6111f5565b6103b961062c366004611885565b611210565b61045561063f3660046119a0565b611225565b610455610652366004611885565b61127a565b6104556106653660046119a0565b611325565b6103ec61137a565b610455610680366004611ad6565b611380565b610455610693366004611ad6565b6113e7565b6103ec61146c565b6103ec611472565b610390611478565b610455611487565b6103906114f9565b6104556106ce3660046119a0565b611508565b6104556106e1366004611885565b611592565b6104556106f4366004611ad6565b61162a565b6104556107073660046118d4565b611696565b61045561071a366004611919565b6116fd565b61045561072d366004611ad6565b6117bc565b6001546001600160a01b031681565b60176020526000908152604090205460ff1681565b6001600160a01b03808416600090815260196020908152604080832093861683529290529081205460ff16801561080257508160ff16836001600160a01b03166364e1fd556040518163ffffffff1660e01b815260040160206040518083038186803b1580156107c557600080fd5b505afa1580156107d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fd9190611aee565b60ff16145b949350505050565b6001600160a01b038082166000908152601660209081526040808320548151638e15f47360e01b8152915193941692638e15f47392600480840193919291829003018186803b15801561085c57600080fd5b505afa158015610870573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108949190611a23565b92915050565b60075481565b601960209081526000928352604080842090915290825290205460ff1681565b6001600160a01b03821660009081526012602052604081205460ff16801561095d57508160ff16836001600160a01b0316639d8ae4466040518163ffffffff1660e01b815260040160206040518083038186803b15801561092057600080fd5b505afa158015610934573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109589190611aee565b60ff16145b9392505050565b60126020526000908152604090205460ff1681565b600d5481565b6001546001600160a01b031633146109b25760405162461bcd60e51b81526004016109a990611cdf565b60405180910390fd5b80600e81905550714c505f57495448445241575f57494e444f5760701b600080516020611dcf833981519152826040516109ec9190611d55565b60405180910390a250565b6001546001600160a01b03163314610a215760405162461bcd60e51b81526004016109a990611cdf565b610a2a81611824565b80600a819055506e4d494e5f4c4f414e5f45515549545960881b600080516020611dcf833981519152826040516109ec9190611d55565b6001546001600160a01b03163314610a8b5760405162461bcd60e51b81526004016109a990611cdf565b806006819055506d11955391125391d7d411549253d160921b600080516020611dcf833981519152826040516109ec9190611d55565b6001546001600160a01b03163314610aeb5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b038216600081815260106020908152604091829020805460ff1916851515179055815163313ce56760e01b815291517f18d231995d1f7e4354b1786418aa8f34f99996ded9cc6b1d43c3815eb6f5ab79938693909263313ce56792600480840193829003018186803b158015610b6757600080fd5b505afa158015610b7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9f9190611a23565b846001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b158015610bd857600080fd5b505afa158015610bec573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c149190810190611a3b565b84604051610c259493929190611b53565b60405180910390a15050565b6001546001600160a01b03163314610c5b5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b038216600081815260116020908152604091829020805460ff1916851515179055815163313ce56760e01b815291517fb9456501e6a30eefbf8c4f9d199ef0c7ac7491abb068d594bbafbdec85447ccc938693909263313ce56792600480840193829003018186803b158015610b6757600080fd5b60055481565b60136020526000908152604090205460ff1681565b600f5460ff1681565b6001546001600160a01b03163314610d255760405162461bcd60e51b81526004016109a990611cdf565b80600481905550731111519055531517d1d49050d157d411549253d160621b600080516020611dcf833981519152826040516109ec9190611d55565b6001546001600160a01b03163314610d8b5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b03821660009081526014602052604090819020805460ff1916831515179055517f936e0e50587b3c03d3e833e5cc880e9a62afb49d51808e96d00c4790ed03796290610c259084908490611b38565b600a5481565b60156020908152600092835260408084209091529082529020546001600160a01b031681565b6003546001600160a01b03163314610e375760405162461bcd60e51b81526004016109a990611d2f565b600f805460ff19168215151790556040517f6e0cb5fa7a57c38eb7939c1104f95fccb5b7a6a8c1a7cab76934305439b639f590610e75908390611ba4565b60405180910390a150565b60095481565b6001546001600160a01b03163314610eb05760405162461bcd60e51b81526004016109a990611cdf565b600854610ecc90610ec7908363ffffffff61184916565b611824565b806007819055506b494e564553544f525f46454560a01b600080516020611dcf833981519152826040516109ec9190611d55565b6001546001600160a01b03163314610f2a5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b6001546001600160a01b03163314610f7f5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b038281166000908152601660205260409081902080546001600160a01b03191692841692909217909155517fc1d3048301c0d23629a2532c8defa6d68f8e1a0e4157918769e9fb1b2eeb888e90610c259084908490611b1e565b60045481565b60146020526000908152604090205460ff1681565b6001546001600160a01b031633146110255760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b03811661104b5760405162461bcd60e51b81526004016109a990611cb9565b600280546001600160a01b0319166001600160a01b0383161790556040516d4d41504c455f545245415355525960901b907f806b6f19dfa971f58fc9140115f19907b73e8336024786c79c2ffc56f6678ec1906109ec908490611b0a565b60065481565b6001546001600160a01b031633146110d95760405162461bcd60e51b81526004016109a990611cdf565b6007546110f090610ec7908363ffffffff61184916565b806008819055506b54524541535552595f46454560a01b600080516020611dcf833981519152826040516109ec9190611d55565b6001546001600160a01b0316331461114e5760405162461bcd60e51b81526004016109a990611cdf565b80600c8190555071131417d0d3d3d31113d5d397d411549253d160721b600080516020611dcf833981519152826040516109ec9190611d55565b60106020526000908152604090205460ff1681565b60116020526000908152604090205460ff1681565b600c54600e549091565b7f00000000000000000000000033349b282065b0284d756f0577fb39c158f935e681565b6002546001600160a01b031681565b600b5481565b6016602052600090815260409020546001600160a01b031681565b60186020526000908152604090205460ff1681565b6001546001600160a01b0316331461124f5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b6001546001600160a01b03163314801561129c57506001600160a01b03811615155b6112b85760405162461bcd60e51b81526004016109a990611bd3565b600f5460ff16156112db5760405162461bcd60e51b81526004016109a990611c63565b600380546001600160a01b0319166001600160a01b0383169081179091556040517fad3f8fa73ce3985d027e4c3bbe1194701a23e635a746bcf73d8632f677ac388290600090a250565b6001546001600160a01b0316331461134f5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b60085481565b6001546001600160a01b031633146113aa5760405162461bcd60e51b81526004016109a990611cdf565b80600d81905550745354414b45525f554e5354414b455f57494e444f5760581b600080516020611dcf833981519152826040516109ec9190611d55565b6001546001600160a01b031633146114115760405162461bcd60e51b81526004016109a990611cdf565b6127108110156114335760405162461bcd60e51b81526004016109a990611c8c565b806005819055507014d5d05417d3d55517d491545552549151607a1b600080516020611dcf833981519152826040516109ec9190611d55565b600c5481565b600e5481565b6000546001600160a01b031681565b6000546001600160a01b031633146114b15760405162461bcd60e51b81526004016109a990611c00565b60018054336001600160a01b031991821681179092556000805490911681556040517fb7a4788848eba3319c766bdd6428c7d7a10e4cba4fd6ade9b79b7102b7099b369190a2565b6003546001600160a01b031681565b6001546001600160a01b031633146115325760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b03821660008181526013602052604090819020805460ff1916841515179055517fd2e6a599a52383178be9bf2d0be60c96615b89f8d9cf6c680f06962aa73679fc90611586908490611ba4565b60405180910390a25050565b6001546001600160a01b031633146115bc5760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b0381166115e25760405162461bcd60e51b81526004016109a990611cb9565b600080546001600160a01b0319166001600160a01b038316908117825560405190917f56bddfa0cee9697cebddf9acd7f23dc6583663b05e007b877056d05017994def91a250565b6001546001600160a01b031633146116545760405162461bcd60e51b81526004016109a990611cdf565b61165d81611824565b80600981905550704d41585f535741505f534c49505041474560781b600080516020611dcf833981519152826040516109ec9190611d55565b6001546001600160a01b031633146116c05760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b03928316600090815260156020908152604080832094861683529390529190912080546001600160a01b03191691909216179055565b6001546001600160a01b031633146117275760405162461bcd60e51b81526004016109a990611cdf565b6001600160a01b03831660009081526018602052604090205460ff168061176657506001600160a01b03831660009081526017602052604090205460ff165b6117825760405162461bcd60e51b81526004016109a990611d03565b6001600160a01b03928316600090815260196020908152604080832094909516825292909252919020805460ff1916911515919091179055565b6001546001600160a01b031633146117e65760405162461bcd60e51b81526004016109a990611cdf565b80600b819055507514d51052d15497d0d3d3d31113d5d397d411549253d160521b600080516020611dcf833981519152826040516109ec9190611d55565b6127108111156118465760405162461bcd60e51b81526004016109a990611baf565b50565b60008282018381101561095d5760405162461bcd60e51b81526004016109a990611c2c565b80356001600160a01b038116811461089457600080fd5b600060208284031215611896578081fd5b61095d838361186e565b600080604083850312156118b2578081fd5b6118bc848461186e565b91506118cb846020850161186e565b90509250929050565b6000806000606084860312156118e8578081fd5b6118f2858561186e565b9250611901856020860161186e565b9150611910856040860161186e565b90509250925092565b60008060006060848603121561192d578283fd5b833561193881611d9c565b9250602084013561194881611d9c565b9150604084013561195881611db1565b809150509250925092565b600080600060608486031215611977578283fd5b611981858561186e565b9250611990856020860161186e565b9150604084013561195881611dbf565b600080604083850312156119b2578182fd5b6119bc848461186e565b9150602083013580151581146119d0578182fd5b809150509250929050565b600080604083850312156119ed578182fd5b6119f7848461186e565b915060208301356119d081611dbf565b600060208284031215611a18578081fd5b813561095d81611db1565b600060208284031215611a34578081fd5b5051919050565b600060208284031215611a4c578081fd5b815167ffffffffffffffff80821115611a63578283fd5b81840185601f820112611a74578384fd5b8051925081831115611a84578384fd5b604051601f8401601f191681016020018381118282101715611aa4578586fd5b604052838152818401602001871015611abb578485fd5b611acc846020830160208501611d6c565b9695505050505050565b600060208284031215611ae7578081fd5b5035919050565b600060208284031215611aff578081fd5b815161095d81611dbf565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039290921682521515602082015260400190565b600060018060a01b0386168252846020830152608060408301528351806080840152611b868160a0850160208801611d6c565b921515606083015250601f91909101601f19160160a0019392505050565b901515815260200190565b6020808252600a908201526926a39d2821aa2fa7a7a160b11b604082015260600190565b60208082526013908201527226a39d2727aa2fa3a7ab2fa7a92fa0a226a4a760691b604082015260600190565b60208082526012908201527126a39d2727aa2fa822a72224a723afa3a7ab60711b604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252600f908201526e1351ce941493d513d7d4105554d151608a1b604082015260600190565b6020808252601390820152724d473a535741505f4f55545f544f4f5f4c4f5760681b604082015260600190565b6020808252600c908201526b26a39d2d22a927afa0a2222960a11b604082015260600190565b6020808252600a908201526926a39d2727aa2fa3a7ab60b11b604082015260600190565b60208082526012908201527126a39d24a72b20a624a22fa9aaa822a92fa360711b604082015260600190565b6020808252600c908201526b26a39d2727aa2fa0a226a4a760a11b604082015260600190565b90815260200190565b918252602082015260400190565b60005b83811015611d87578181015183820152602001611d6f565b83811115611d96576000848401525b50505050565b6001600160a01b038116811461184657600080fd5b801515811461184657600080fd5b60ff8116811461184657600080fdfed8780a041c72589f51af8b3fade9cc8a466d00ecef64d45657dd6cdebf1ecf47a26469706673582212200eae2d9f76d9e4b6263a8c2ce45b8314aba61d9256119fb0e8ef82085983da3764736f6c634300060b0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000009686328198e51479c6aa5eb87f20b09dbd1bca2500000000000000000000000033349b282065b0284d756f0577fb39c158f935e600000000000000000000000093cc3e39c91cf93fd57aca416ed6fe66e8bdd573
-----Decoded View---------------
Arg [0] : _governor (address): 0x9686328198E51479C6aA5EB87f20B09dbD1bca25
Arg [1] : _mpl (address): 0x33349B282065b0284d756F0577FB39c158F935e6
Arg [2] : _globalAdmin (address): 0x93CC3E39C91cf93fd57acA416ed6fE66e8bdD573
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000009686328198e51479c6aa5eb87f20b09dbd1bca25
Arg [1] : 00000000000000000000000033349b282065b0284d756f0577fb39c158f935e6
Arg [2] : 00000000000000000000000093cc3e39c91cf93fd57aca416ed6fe66e8bdd573
Deployed Bytecode Sourcemap
10246:21650:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10558:23;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13965:70;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;30672:242::-;;;;;;:::i;:::-;;:::i;29847:148::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;11414:26::-;;;:::i;14193:69::-;;;;;;:::i;:::-;;:::i;31077:160::-;;;;;;:::i;:::-;;:::i;12830:42::-;;;;;;:::i;:::-;;:::i;12152:34::-;;;:::i;18709:209::-;;;;;;:::i;:::-;;:::i;:::-;;26957:233;;;;;;:::i;:::-;;:::i;27436:184::-;;;;;;:::i;:::-;;:::i;24323:240::-;;;;;;:::i;:::-;;:::i;23765:243::-;;;;;;:::i;:::-;;:::i;11125:30::-;;;:::i;12933:51::-;;;;;;:::i;:::-;;:::i;12514:26::-;;;:::i;26470:215::-;;;;;;:::i;:::-;;:::i;20251:196::-;;;;;;:::i;:::-;;:::i;11733:28::-;;;:::i;13790:73::-;;;;;;:::i;:::-;;:::i;20728:186::-;;;;;;:::i;:::-;;:::i;11634:30::-;;;:::i;25125:203::-;;;;;;:::i;:::-;;:::i;21155:140::-;;;;;;:::i;:::-;;:::i;28347:159::-;;;;;;:::i;:::-;;:::i;10974:33::-;;;:::i;13101:51::-;;;;;;:::i;:::-;;:::i;25972:250::-;;;;;;:::i;:::-;;:::i;11280:28::-;;;:::i;25552:203::-;;;;;;:::i;:::-;;:::i;17599:::-;;;;;;:::i;:::-;;:::i;12611:53::-;;;;;;:::i;:::-;;:::i;12720:54::-;;;;;;:::i;:::-;;:::i;31442:134::-;;;:::i;:::-;;;;;;;;:::i;10312:28::-;;;:::i;10671:::-;;;:::i;11881:35::-;;;:::i;13872:44::-;;;;;;:::i;:::-;;:::i;14079:70::-;;;;;;:::i;:::-;;:::i;24795:106::-;;;;;;:::i;:::-;;:::i;19640:301::-;;;;;;:::i;:::-;;:::i;21536:140::-;;;;;;:::i;:::-;;:::i;11536:26::-;;;:::i;18146:209::-;;;;;;:::i;:::-;;:::i;27875:223::-;;;;;;:::i;:::-;;:::i;12020:31::-;;;:::i;12332:::-;;;:::i;10409:30::-;;;:::i;29337:236::-;;;:::i;10818:26::-;;;:::i;23269:188::-;;;;;;:::i;:::-;;:::i;28922:245::-;;;;;;:::i;:::-;;:::i;19193:239::-;;;;;;:::i;:::-;;:::i;22792:143::-;;;;;;:::i;:::-;;:::i;22106:282::-;;;;;;:::i;:::-;;:::i;17021:215::-;;;;;;:::i;:::-;;:::i;10558:23::-;;;-1:-1:-1;;;;;10558:23:0;;:::o;13965:70::-;;;;;;;;;;;;;;;:::o;30672:242::-;-1:-1:-1;;;;;30807:31:0;;;30783:4;30807:31;;;:17;:31;;;;;;;;:43;;;;;;;;;;;;;;:99;;;;;30895:11;30854:52;;30866:10;-1:-1:-1;;;;;30854:35:0;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:52;;;30807:99;30800:106;30672:242;-1:-1:-1;;;;30672:242:0:o;29847:148::-;-1:-1:-1;;;;;29952:16:0;;;29909:7;29952:16;;;:9;:16;;;;;;;;;29944:42;;-1:-1:-1;;;29944:42:0;;;;29909:7;;29952:16;;29944:40;;:42;;;;;29952:16;;29944:42;;;;;;29952:16;29944:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29929:58;29847:148;-1:-1:-1;;29847:148:0:o;11414:26::-;;;;:::o;14193:69::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;31077:160::-;-1:-1:-1;;;;;31175:16:0;;31151:4;31175:16;;;:10;:16;;;;;;;;:54;;;;;31221:8;31195:34;;31201:4;-1:-1:-1;;;;;31195:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:34;;;31175:54;31168:61;31077:160;-1:-1:-1;;;31077:160:0:o;12830:42::-;;;;;;;;;;;;;;;:::o;12152:34::-;;;;:::o;18709:209::-;15459:8;;-1:-1:-1;;;;;15459:8:0;15445:10;:22;15437:45;;;;-1:-1:-1;;;15437:45:0;;;;;;;:::i;:::-;;;;;;;;;18817:19:::1;18798:16;:38;;;;-1:-1:-1::0;;;;;;;;;;;;;;18890:19:0::1;18852:58;;;;;;:::i;:::-;;;;;;;;18709:209:::0;:::o;26957:233::-;15459:8;;-1:-1:-1;;;;;15459:8:0;15445:10;:22;15437:45;;;;-1:-1:-1;;;15437:45:0;;;;;;;:::i;:::-;27038:37:::1;27060:14;27038:21;:37::i;:::-;27102:14;27086:13;:30;;;;-1:-1:-1::0;;;;;;;;;;;;;;27167:14:0::1;27132:50;;;;;;:::i;27436:184::-:0;15459:8;;-1:-1:-1;;;;;15459:8:0;15445:10;:22;15437:45;;;;-1:-1:-1;;;15437:45:0;;;;;;;:::i;:::-;27533:14:::1;27517:13;:30;;;;-1:-1:-1::0;;;;;;;;;;;;;;27597:14:0::1;27563:49;;;;;;:::i;24323:240::-:0;15459:8;;-1:-1:-1;;;;;15459:8:0;15445:10;:22;15437:45;;;;-1:-1:-1;;;15437:45:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24408:28:0;::::1;;::::0;;;:21:::1;:28;::::0;;;;;;;;:36;;-1:-1:-1;;24408:36:0::1;::::0;::::1;;;::::0;;24485:31;;-1:-1:-1;;;24485:31:0;;;;24460:95:::1;::::0;24408:28;;;;24485:29:::1;::::0;:31:::1;::::0;;::::1;::::0;;;;;;24408:28;24485:31;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24532:5;-1:-1:-1::0;;;;;24518:27:0::1;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;24518:29:0::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;24549:5;24460:95;;;;;;;;;:::i;:::-;;;;;;;;24323:240:::0;;:::o;23765:243::-;15459:8;;-1:-1:-1;;;;;15459:8:0;15445:10;:22;15437:45;;;;-1:-1:-1;;;15437:45:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23851:29:0;::::1;;::::0;;;:22:::1;:29;::::0;;;;;;;;:37;;-1:-1:-1;;23851:37:0::1;::::0;::::1;;;::::0;;23930:31;;-1:-1:-1;;;23930:31:0;;;;23904:96:::1;::::0;23851:29;;;;23930::::1;::::0;:31:::1;::::0;;::::1;::::0;;;;;;23851:29;23930:31;::::1;;::::0;::::1;;;;::::0;::::1;11125:30:::0;;;;:::o;12933:51::-;;;;;;;;;;;;;;;:::o;12514:26::-;;;;;;:::o;26470:215::-;15459:8;;-1:-1:-1;;;;;15459:8:0;15445:10;:22;15437:45;;;;-1:-1:-1;;;15437:45:0;;;;;;;:::i;:::-;26582:19:::1;26561:18;:40;;;;-1:-1:-1::0;;;;;;;;;;;;;;26657:19:0::1;26617:60;;;;;;:::i;20251:196::-:0;15459:8;;-1:-1:-1;;;;;15459:8:0;15445:10;:22;15437:45;;;;-1:-1:-1;;;15437:45:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20346:33:0;::::1;;::::0;;;:19:::1;:33;::::0;;;;;;:41;;-1:-1:-1;;20346:41:0::1;::::0;::::1;;;::::0;;20403:36;::::1;::::0;::::1;::::0;20346:33;;:41;;20403:36:::1;:::i;11733:28::-:0;;;;:::o;13790:73::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13790:73:0;;:::o;20728:186::-;20808:11;;-1:-1:-1;;;;;20808:11:0;20794:10;:25;20786:50;;;;-1:-1:-1;;;20786:50:0;;;;;;;:::i;:::-;20847:14;:22;;-1:-1:-1;;20847:22:0;;;;;;;20885:21;;;;;;20847:22;;20885:21;:::i;:::-;;;;;;;;20728:186;:::o;11634:30::-;;;;:::o;25125:203::-;15459:8;;-1:-1:-1;;;;;15459:8:0;15445:10;:22;15437:45;;;;-1:-1:-1;;;15437:45:0;;;;;;;:::i;:::-;25216:11:::1;::::0;25194:44:::1;::::0;25216:21:::1;::::0;25232:4;25216:21:::1;:15;:21;:::i;:::-;25194;:44::i;:::-;25263:4;25249:11;:18;;;;-1:-1:-1::0;;;;;;;;;;;;;;25315:4:0::1;25283:37;;;;;;:::i;21155:140::-:0;15459:8;;-1:-1:-1;;;;;15459:8:0;15445:10;:22;15437:45;;;;-1:-1:-1;;;15437:45:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21248:31:0;;;::::1;;::::0;;;:18:::1;:31;::::0;;;;:39;;-1:-1:-1;;21248:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21155:140::o;28347:159::-;15459:8;;-1:-1:-1;;;;;15459:8:0;15445:10;:22;15437:45;;;;-1:-1:-1;;;15437:45:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;28433:16:0;;::::1;;::::0;;;:9:::1;:16;::::0;;;;;;:25;;-1:-1:-1;;;;;;28433:25:0::1;::::0;;::::1;::::0;;;::::1;::::0;;;28474:24;::::1;::::0;::::1;::::0;28433:16;;:25;;28474:24:::1;:::i;10974:33::-:0;;;;:::o;13101:51::-;;;;;;;;;;;;;;;:::o;25972:250::-;15459:8;;-1:-1:-1;;;;;15459:8:0;15445:10;:22;15437:45;;;;-1:-1:-1;;;15437:45:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26061:28:0;::::1;26053:53;;;;-1:-1:-1::0;;;26053:53:0::1;;;;;;;:::i;:::-;26117:13;:30:::0;;-1:-1:-1;;;;;;26117:30:0::1;-1:-1:-1::0;;;;;26117:30:0;::::1;;::::0;;26163:51:::1;::::0;-1:-1:-1;;;26163:51:0;::::1;::::0;::::1;::::0;26117:30;;26163:51:::1;:::i;11280:28::-:0;;;;:::o;25552:203::-;15459:8;;-1:-1:-1;;;;;15459:8:0;15445:10;:22;15437:45;;;;-1:-1:-1;;;15437:45:0;;;;;;;:::i;:::-;25643:11:::1;::::0;25621:44:::1;::::0;25643:21:::1;::::0;25659:4;25643:21:::1;:15;:21;:::i;25621:44::-;25690:4;25676:11;:18;;;;-1:-1:-1::0;;;;;;;;;;;;;;25742:4:0::1;25710:37;;;;;;:::i;17599:203::-:0;15459:8;;-1:-1:-1;;;;;15459:8:0;15445:10;:22;15437:45;;;;-1:-1:-1;;;15437:45:0;;;;;;;:::i;:::-;17705:17:::1;17686:16;:36;;;;-1:-1:-1::0;;;;;;;;;;;;;;17776:17:0::1;17738:56;;;;;;:::i;12611:53::-:0;;;;;;;;;;;;;;;:::o;12720:54::-;;;;;;;;;;;;;;;:::o;31442:134::-;31533:16;;31551;;31442:134;;:::o;10312:28::-;;;:::o;10671:::-;;;-1:-1:-1;;;;;10671:28:0;;:::o;11881:35::-;;;;:::o;13872:44::-;;;;;;;;;;;;-1:-1:-1;;;;;13872:44:0;;:::o;14079:70::-;;;;;;;;;;;;;;;:::o;24795:106::-;15459:8;;-1:-1:-1;;;;;15459:8:0;15445:10;:22;15437:45;;;;-1:-1:-1;;;15437:45:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24869:16:0;;;::::1;;::::0;;;:10:::1;:16;::::0;;;;:24;;-1:-1:-1;;24869:24:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24795:106::o;19640:301::-;19730:8;;-1:-1:-1;;;;;19730:8:0;19716:10;:22;:54;;;;-1:-1:-1;;;;;;19742:28:0;;;;19716:54;19708:86;;;;-1:-1:-1;;;19708:86:0;;;;;;;:::i;:::-;19814:14;;;;19813:15;19805:43;;;;-1:-1:-1;;;19805:43:0;;;;;;;:::i;:::-;19859:11;:28;;-1:-1:-1;;;;;;19859:28:0;-1:-1:-1;;;;;19859:28:0;;;;;;;;19903:30;;;;-1:-1:-1;;19903:30:0;19640:301;:::o;21536:140::-;15459:8;;-1:-1:-1;;;;;15459:8:0;15445:10;:22;15437:45;;;;-1:-1:-1;;;15437:45:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21629:31:0;;;::::1;;::::0;;;:18:::1;:31;::::0;;;;:39;;-1:-1:-1;;21629:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21536:140::o;11536:26::-;;;;:::o;18146:209::-;15459:8;;-1:-1:-1;;;;;15459:8:0;15445:10;:22;15437:45;;;;-1:-1:-1;;;15437:45:0;;;;;;;:::i;:::-;18257:16:::1;18235:19;:38;;;;-1:-1:-1::0;;;;;;;;;;;;;;18330:16:0::1;18289:58;;;;;;:::i;27875:223::-:0;15459:8;;-1:-1:-1;;;;;15459:8:0;15445:10;:22;15437:45;;;;-1:-1:-1;;;15437:45:0;;;;;;;:::i;:::-;27970:6:::1;27955:3;:22;;27947:54;;;;-1:-1:-1::0;;;27947:54:0::1;;;;;;;:::i;:::-;28030:3;28012:15;:21;;;;-1:-1:-1::0;;;;;;;;;;;;;;28086:3:0::1;28049:41;;;;;;:::i;12020:31::-:0;;;;:::o;12332:::-;;;;:::o;10409:30::-;;;-1:-1:-1;;;;;10409:30:0;;:::o;29337:236::-;29405:15;;-1:-1:-1;;;;;29405:15:0;29391:10;:29;29383:60;;;;-1:-1:-1;;;29383:60:0;;;;;;;:::i;:::-;29454:8;:28;;29472:10;-1:-1:-1;;;;;;29454:28:0;;;;;;;;-1:-1:-1;29493:28:0;;;;;;;29537;;;;-1:-1:-1;29537:28:0;29337:236::o;10818:26::-;;;-1:-1:-1;;;;;10818:26:0;;:::o;23269:188::-;15459:8;;-1:-1:-1;;;;;15459:8:0;15445:10;:22;15437:45;;;;-1:-1:-1;;;15437:45:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23364:29:0;::::1;;::::0;;;:19:::1;:29;::::0;;;;;;:37;;-1:-1:-1;;23364:37:0::1;::::0;::::1;;;::::0;;23417:32;::::1;::::0;::::1;::::0;23364:37;;23417:32:::1;:::i;:::-;;;;;;;;23269:188:::0;;:::o;28922:245::-;15459:8;;-1:-1:-1;;;;;15459:8:0;15445:10;:22;15437:45;;;;-1:-1:-1;;;15437:45:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29015:30:0;::::1;29007:55;;;;-1:-1:-1::0;;;29007:55:0::1;;;;;;;:::i;:::-;29073:15;:34:::0;;-1:-1:-1;;;;;;29073:34:0::1;-1:-1:-1::0;;;;;29073:34:0;::::1;::::0;;::::1;::::0;;29123:36:::1;::::0;29073:34;;29123:36:::1;::::0;::::1;28922:245:::0;:::o;19193:239::-;15459:8;;-1:-1:-1;;;;;15459:8:0;15445:10;:22;15437:45;;;;-1:-1:-1;;;15437:45:0;;;;;;;:::i;:::-;19276:37:::1;19298:14;19276:21;:37::i;:::-;19342:14;19324:15;:32;;;;-1:-1:-1::0;;;;;;;;;;;;;;19409:14:0::1;19372:52;;;;;;:::i;22792:143::-:0;15459:8;;-1:-1:-1;;;;;15459:8:0;15445:10;:22;15437:45;;;;-1:-1:-1;;;15437:45:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22893:24:0;;::::1;;::::0;;;:18:::1;:24;::::0;;;;;;;:28;;::::1;::::0;;;;;;;;;:34;;-1:-1:-1;;;;;;22893:34:0::1;::::0;;;::::1;;::::0;;22792:143::o;22106:282::-;15459:8;;-1:-1:-1;;;;;15459:8:0;15445:10;:22;15437:45;;;;-1:-1:-1;;;15437:45:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22227:32:0;::::1;;::::0;;;:18:::1;:32;::::0;;;;;::::1;;::::0;:68:::1;;-1:-1:-1::0;;;;;;22263:32:0;::::1;;::::0;;;:18:::1;:32;::::0;;;;;::::1;;22227:68;22219:99;;;;-1:-1:-1::0;;;22219:99:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;22329:31:0;;::::1;;::::0;;;:17:::1;:31;::::0;;;;;;;:43;;;::::1;::::0;;;;;;;;;:51;;-1:-1:-1;;22329:51:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22106:282::o;17021:215::-;15459:8;;-1:-1:-1;;;;;15459:8:0;15445:10;:22;15437:45;;;;-1:-1:-1;;;15437:45:0;;;;;;;:::i;:::-;17135:17:::1;17112:20;:40;;;;-1:-1:-1::0;;;;;;;;;;;;;;17210:17:0::1;17168:60;;;;;;:::i;31755:136::-:0;31861:6;31839:10;:29;;31831:52;;;;-1:-1:-1;;;31831:52:0;;;;;;;:::i;:::-;31755:136;:::o;5286:181::-;5344:7;5376:5;;;5400:6;;;;5392:46;;;;-1:-1:-1;;;5392:46:0;;;;;;;:::i;5:130:-1:-;72:20;;-1:-1;;;;;17647:54;;18321:35;;18311:2;;18370:1;;18360:12;1413:241;;1517:2;1505:9;1496:7;1492:23;1488:32;1485:2;;;-1:-1;;1523:12;1485:2;1585:53;1630:7;1606:22;1585:53;:::i;1661:366::-;;;1782:2;1770:9;1761:7;1757:23;1753:32;1750:2;;;-1:-1;;1788:12;1750:2;1850:53;1895:7;1871:22;1850:53;:::i;:::-;1840:63;;1958:53;2003:7;1940:2;1983:9;1979:22;1958:53;:::i;:::-;1948:63;;1744:283;;;;;:::o;2034:491::-;;;;2172:2;2160:9;2151:7;2147:23;2143:32;2140:2;;;-1:-1;;2178:12;2140:2;2240:53;2285:7;2261:22;2240:53;:::i;:::-;2230:63;;2348:53;2393:7;2330:2;2373:9;2369:22;2348:53;:::i;:::-;2338:63;;2456:53;2501:7;2438:2;2481:9;2477:22;2456:53;:::i;:::-;2446:63;;2134:391;;;;;:::o;2532:485::-;;;;2667:2;2655:9;2646:7;2642:23;2638:32;2635:2;;;-1:-1;;2673:12;2635:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;2725:63;-1:-1;2825:2;2864:22;;72:20;97:33;72:20;97:33;:::i;:::-;2833:63;-1:-1;2933:2;2969:22;;206:20;231:30;206:20;231:30;:::i;:::-;2941:60;;;;2629:388;;;;;:::o;3024:487::-;;;;3160:2;3148:9;3139:7;3135:23;3131:32;3128:2;;;-1:-1;;3166:12;3128:2;3228:53;3273:7;3249:22;3228:53;:::i;:::-;3218:63;;3336:53;3381:7;3318:2;3361:9;3357:22;3336:53;:::i;:::-;3326:63;;3426:2;3467:9;3463:22;1208:20;1233:31;1258:5;1233:31;:::i;3518:360::-;;;3636:2;3624:9;3615:7;3611:23;3607:32;3604:2;;;-1:-1;;3642:12;3604:2;3704:53;3749:7;3725:22;3704:53;:::i;:::-;3694:63;;3794:2;3834:9;3830:22;206:20;18467:5;17481:13;17474:21;18445:5;18442:32;18432:2;;-1:-1;;18478:12;18432:2;3802:60;;;;3598:280;;;;;:::o;3885:362::-;;;4004:2;3992:9;3983:7;3979:23;3975:32;3972:2;;;-1:-1;;4010:12;3972:2;4072:53;4117:7;4093:22;4072:53;:::i;:::-;4062:63;;4162:2;4203:9;4199:22;1208:20;1233:31;1258:5;1233:31;:::i;4254:235::-;;4355:2;4343:9;4334:7;4330:23;4326:32;4323:2;;;-1:-1;;4361:12;4323:2;219:6;206:20;231:30;255:5;231:30;:::i;4496:261::-;;4610:2;4598:9;4589:7;4585:23;4581:32;4578:2;;;-1:-1;;4616:12;4578:2;-1:-1;350:13;;4572:185;-1:-1;4572:185::o;4764:362::-;;4889:2;4877:9;4868:7;4864:23;4860:32;4857:2;;;-1:-1;;4895:12;4857:2;4946:17;4940:24;4984:18;;4976:6;4973:30;4970:2;;;-1:-1;;5006:12;4970:2;5093:6;5082:9;5078:22;526:3;519:4;511:6;507:17;503:27;493:2;;-1:-1;;534:12;493:2;574:6;568:13;554:27;;4984:18;16823:6;16820:30;16817:2;;;-1:-1;;16853:12;16817:2;16486;16480:9;16926;16907:17;;-1:-1;;16903:33;16512:17;;4889:2;16512:17;16572:34;;;16608:22;;;16569:62;16566:2;;;-1:-1;;16634:12;16566:2;16486;16653:22;667:21;;;767:16;;;4889:2;767:16;764:25;-1:-1;761:2;;;-1:-1;;792:12;761:2;812:39;844:6;4889:2;743:5;739:16;4889:2;709:6;705:17;812:39;:::i;:::-;5026:84;4851:275;-1:-1;;;;;;4851:275::o;5133:241::-;;5237:2;5225:9;5216:7;5212:23;5208:32;5205:2;;;-1:-1;;5243:12;5205:2;-1:-1;932:20;;5199:175;-1:-1;5199:175::o;5651:259::-;;5764:2;5752:9;5743:7;5739:23;5735:32;5732:2;;;-1:-1;;5770:12;5732:2;1358:6;1352:13;1370:31;1395:5;1370:31;:::i;9872:222::-;-1:-1;;;;;17647:54;;;;5988:37;;9999:2;9984:18;;9970:124::o;10101:333::-;-1:-1;;;;;17647:54;;;5988:37;;17647:54;;10420:2;10405:18;;5988:37;10256:2;10241:18;;10227:207::o;10441:321::-;-1:-1;;;;;17647:54;;;;5988:37;;17481:13;17474:21;10748:2;10733:18;;6102:34;10590:2;10575:18;;10561:201::o;10769:632::-;;17658:42;;;;;17651:5;17647:54;5995:3;5988:37;9853:5;11159:2;11148:9;11144:18;9823:37;10994:3;11196:2;11185:9;11181:18;11174:48;6293:5;17104:12;17261:6;10994:3;10983:9;10979:19;17249;6387:52;6432:6;17289:14;10983:9;17289:14;11159:2;6413:5;6409:16;6387:52;:::i;:::-;17481:13;;17474:21;11387:2;11372:18;;6102:34;-1:-1;16926:9;18225:14;;;;-1:-1;;18221:28;6451:39;17289:14;6451:39;;10965:436;-1:-1;;;10965:436::o;11408:210::-;17481:13;;17474:21;6102:34;;11529:2;11514:18;;11500:118::o;11625:416::-;11825:2;11839:47;;;6727:2;11810:18;;;17249:19;-1:-1;;;17289:14;;;6743:33;6795:12;;;11796:245::o;12048:416::-;12248:2;12262:47;;;7046:2;12233:18;;;17249:19;-1:-1;;;17289:14;;;7062:42;7123:12;;;12219:245::o;12471:416::-;12671:2;12685:47;;;7374:2;12656:18;;;17249:19;-1:-1;;;17289:14;;;7390:41;7450:12;;;12642:245::o;12894:416::-;13094:2;13108:47;;;7701:2;13079:18;;;17249:19;7737:29;17289:14;;;7717:50;7786:12;;;13065:245::o;13317:416::-;13517:2;13531:47;;;8037:2;13502:18;;;17249:19;-1:-1;;;17289:14;;;8053:38;8110:12;;;13488:245::o;13740:416::-;13940:2;13954:47;;;8361:2;13925:18;;;17249:19;-1:-1;;;17289:14;;;8377:42;8438:12;;;13911:245::o;14163:416::-;14363:2;14377:47;;;8689:2;14348:18;;;17249:19;-1:-1;;;17289:14;;;8705:35;8759:12;;;14334:245::o;14586:416::-;14786:2;14800:47;;;9010:2;14771:18;;;17249:19;-1:-1;;;17289:14;;;9026:33;9078:12;;;14757:245::o;15009:416::-;15209:2;15223:47;;;9329:2;15194:18;;;17249:19;-1:-1;;;17289:14;;;9345:41;9405:12;;;15180:245::o;15432:416::-;15632:2;15646:47;;;9656:2;15617:18;;;17249:19;-1:-1;;;17289:14;;;9672:35;9726:12;;;15603:245::o;15855:222::-;9823:37;;;15982:2;15967:18;;15953:124::o;16084:333::-;9823:37;;;16403:2;16388:18;;9823:37;16239:2;16224:18;;16210:207::o;17881:268::-;17946:1;17953:101;17967:6;17964:1;17961:13;17953:101;;;18034:11;;;18028:18;18015:11;;;18008:39;17989:2;17982:10;17953:101;;;18069:6;18066:1;18063:13;18060:2;;;17946:1;18125:6;18120:3;18116:16;18109:27;18060:2;;17930:219;;;:::o;18262:117::-;-1:-1;;;;;17647:54;;18321:35;;18311:2;;18370:1;;18360:12;18386:111;18467:5;17481:13;17474:21;18445:5;18442:32;18432:2;;18488:1;;18478:12;18750:113;17863:4;18833:5;17852:16;18810:5;18807:33;18797:2;;18854:1;;18844:12
Swarm Source
ipfs://0eae2d9f76d9e4b6263a8c2ce45b8314aba61d9256119fb0e8ef82085983da37
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.