ETH Price: $1,793.88 (+10.15%)

Contract

0x5de4c7a691398F01b522ae6C8AdAc649c1E30Cb6
 

Overview

ETH Balance

0 ETH

ETH Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
_become Contract...129593272024-12-20 21:01:09123 days ago1734728469IN
0x5de4c7a6...9c1E30Cb6
0 ETH0.000000050.0013
Approve Proposal123123962024-12-05 21:36:47138 days ago1733434607IN
0x5de4c7a6...9c1E30Cb6
0 ETH0.000002230.00262433
Make Proposal123031732024-12-05 16:29:21138 days ago1733416161IN
0x5de4c7a6...9c1E30Cb6
0 ETH0.000002870.00148895
Approve Proposal119893362024-11-28 10:08:07146 days ago1732788487IN
0x5de4c7a6...9c1E30Cb6
0 ETH0.000001330.00182152
Make Proposal119605572024-11-27 18:08:49146 days ago1732730929IN
0x5de4c7a6...9c1E30Cb6
0 ETH0.000005210.00323198
Approve Proposal119166592024-11-26 17:45:33147 days ago1732643133IN
0x5de4c7a6...9c1E30Cb6
0 ETH0.000000250.00156536
Make Proposal119072672024-11-26 12:32:29147 days ago1732624349IN
0x5de4c7a6...9c1E30Cb6
0 ETH0.00000050.00136372
_become Contract...44402072024-06-06 16:10:29320 days ago1717690229IN
0x5de4c7a6...9c1E30Cb6
0 ETH0.000000450.0115
_become Contract...19300292024-04-09 13:37:53378 days ago1712669873IN
0x5de4c7a6...9c1E30Cb6
0 ETH0.000000040.0012
_accept Admin13194932024-03-26 10:26:41392 days ago1711448801IN
0x5de4c7a6...9c1E30Cb6
0 ETH0.000000030.0012
_set Pending Adm...12620162024-03-25 2:30:47394 days ago1711333847IN
0x5de4c7a6...9c1E30Cb6
0 ETH0.000000030.00080825
_become Contract...11498982024-03-22 12:13:31396 days ago1711109611IN
0x5de4c7a6...9c1E30Cb6
0 ETH0.000003880.1

Parent Transaction Hash Block From To
View All Internal Transactions

Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ImpermaxConfigManager

Compiler Version
v0.5.16+commit.9c3226ce

Optimization Enabled:
Yes with 999999 runs

Other Settings:
default evmVersion
File 1 of 1 : ImpermaxConfigManagerFlattened.sol
pragma solidity =0.5.16;
pragma experimental ABIEncoderV2;

interface IBorrowable {
	function reserveFactor() external view returns (uint);
	function borrowTracker() external view returns (address);
	function kinkUtilizationRate() external view returns (uint);
	function adjustSpeed() external view returns (uint);

	function RESERVE_FACTOR_MAX() external pure returns (uint);
	function KINK_UR_MIN() external pure returns (uint);
	function KINK_UR_MAX() external pure returns (uint);
	function ADJUST_SPEED_MIN() external pure returns (uint);
	function ADJUST_SPEED_MAX() external pure returns (uint);

	function _setReserveFactor(uint newReserveFactor) external;
	function _setKinkUtilizationRate(uint newKinkUtilizationRate) external;
	function _setAdjustSpeed(uint newAdjustSpeed) external;
	function _setBorrowTracker(address newBorrowTracker) external;
}

interface ICollateral {
	function safetyMarginSqrt() external view returns (uint);
	function liquidationIncentive() external view returns (uint);
	function liquidationFee() external view returns (uint);

	function SAFETY_MARGIN_SQRT_MIN() external pure returns (uint);
	function SAFETY_MARGIN_SQRT_MAX() external pure returns (uint);
	function LIQUIDATION_INCENTIVE_MIN() external pure returns (uint);
	function LIQUIDATION_INCENTIVE_MAX() external pure returns (uint);
	function LIQUIDATION_FEE_MAX() external pure returns (uint);
	
	function _setSafetyMarginSqrt(uint newSafetyMarginSqrt) external;
	function _setLiquidationIncentive(uint newLiquidationIncentive) external;
	function _setLiquidationFee(uint newLiquidationFee) external;
}

interface IFactory {
	function admin() external view returns (address);
	function pendingAdmin() external view returns (address);
	function reservesAdmin() external view returns (address);
	function reservesPendingAdmin() external view returns (address);
	function reservesManager() external view returns (address);

	function getLendingPool(address uniswapV2Pair) external view returns (
		bool initialized, 
		uint24 lendingPoolId, 
		address collateral, 
		address borrowable0, 
		address borrowable1
	);
	function allLendingPools(uint) external view returns (address uniswapV2Pair);
	function allLendingPoolsLength() external view returns (uint);

	function _setPendingAdmin(address newPendingAdmin) external;
	function _acceptAdmin() external;
	function _setReservesPendingAdmin(address newPendingAdmin) external;
	function _acceptReservesAdmin() external;
	function _setReservesManager(address newReservesManager) external;
}


contract Ownable {
    address public admin;
    address public pendingAdmin;

    event NewPendingAdmin(address oldPendingAdmin, address newPendingAdmin);
	event NewAdmin(address oldAdmin, address newAdmin);
    
    constructor(address _admin) public {
        admin = _admin;
        emit NewAdmin(address(0), admin);
    }

    function _setPendingAdmin(address newPendingAdmin) external onlyOwner {
		address oldPendingAdmin = pendingAdmin;
		pendingAdmin = newPendingAdmin;
		emit NewPendingAdmin(oldPendingAdmin, newPendingAdmin);
	}

	function _acceptAdmin() external {
		require(msg.sender == pendingAdmin, "ImpermaxOwnable: UNAUTHORIZED");
		address oldAdmin = admin;
		address oldPendingAdmin = pendingAdmin;
		admin = pendingAdmin;
		pendingAdmin = address(0);
		emit NewAdmin(oldAdmin, admin);
		emit NewPendingAdmin(oldPendingAdmin, address(0));
	}

	modifier onlyOwner() {
		require(msg.sender == admin, "ImpermaxOwnable: UNAUTHORIZED");
		_;
	}
}

interface IImpermaxWhitelist {
	enum State {
		Unlisted,
		Listed,
		Deprecated,
		Blacklisted
	}
    function pairsState(address factory, address pair) external view returns(State);
    event ChangedState(address indexed factory, address indexed pair, State state);
    function setPairState(address factory, address pair, State state) external;
}

contract ImpermaxWhitelist is Ownable, IImpermaxWhitelist {
	mapping(address => mapping(address => State)) public pairsState; 

    constructor(address _admin) public Ownable(_admin) {}

    function setPairState(address factory, address pair, State state) onlyOwner external {
        pairsState[factory][pair] = state;
        emit ChangedState(factory, pair, state);
    }
}


interface IImpermaxConfigManager {

    struct CollateralConfig {
        uint safetyMarginSqrt;
        uint liquidationIncentive;
        uint liquidationFee;
    }

    struct BorrowableConfig {
        uint reserveFactor;
        uint kinkUtilizationRate;
        uint adjustSpeed;
        address borrowTracker;
    }

    struct PairConfig {
        address factory;
        address pair;
        CollateralConfig collateralConfig;
        BorrowableConfig borrowable0Config;
        BorrowableConfig borrowable1Config;
        IImpermaxWhitelist.State whitelistState;
    }

    event NewProposal(uint indexed index, PairConfig[] proposal);
    event RejectedProposal(uint indexed index, PairConfig[] proposal);
    event ApprovedProposal(uint indexed index, PairConfig[] proposal);
    event NewPendingAdmin(address oldPendingAdmin, address newPendingAdmin);
	event NewAdmin(address oldAdmin, address newAdmin);
    event BecomeContractAdmin(address factory);
    event TransferContractOwnership(address factory, address newPendingAdmin);
	
    function admin() external view returns(address);
    function pendingAdmin() external view returns(address);
    function proposals(uint, uint) external view returns(PairConfig memory);
    function proposalsLength() external view returns(uint);
    function getProposal(uint) external view returns (PairConfig[] memory);
    function whitelist() external view returns(address);
	
	function makeProposal(PairConfig[] calldata proposal) external;
    function rejectProposal(uint index) external;
    function approveProposal(uint index) external;

    function _setPendingAdmin(address newPendingAdmin) external;
	function _acceptAdmin() external;
    function _becomeContractAdmin(address ownableContract) external;
    function _setContractAdmin(address ownableContract, address newPendingAdmin) external;
}


contract ImpermaxConfigManager is IImpermaxConfigManager, Ownable {

    mapping(uint => PairConfig[]) public proposals;
    uint public proposalsLength;

    function getProposal(uint index) external view returns (PairConfig[] memory) {
        return proposals[index];
    }

    address public whitelist;
    
    constructor(address _admin, address _whitelist) public Ownable(_admin) {
        whitelist = _whitelist;
    }

	/* Internal */

    function _checkSetting(uint parameter, uint min, uint max) internal pure {
		require(parameter >= min, "ImpermaxConfigManager: INVALID_SETTING");
		require(parameter <= max, "ImpermaxConfigManager: INVALID_SETTING");
	}

    function _checkCSetting(address collateral, CollateralConfig memory config) internal pure {
        _checkSetting(config.safetyMarginSqrt, ICollateral(collateral).SAFETY_MARGIN_SQRT_MIN(), ICollateral(collateral).SAFETY_MARGIN_SQRT_MAX());
        _checkSetting(config.liquidationIncentive, ICollateral(collateral).LIQUIDATION_INCENTIVE_MIN(), ICollateral(collateral).LIQUIDATION_INCENTIVE_MAX());
        _checkSetting(config.liquidationFee, 0, ICollateral(collateral).LIQUIDATION_FEE_MAX());
    }

    function _checkBSetting(address borrowable, BorrowableConfig memory config) internal pure {
        _checkSetting(config.reserveFactor, 0, IBorrowable(borrowable).RESERVE_FACTOR_MAX());
        _checkSetting(config.kinkUtilizationRate, IBorrowable(borrowable).KINK_UR_MIN(), IBorrowable(borrowable).KINK_UR_MAX());
        _checkSetting(config.adjustSpeed, IBorrowable(borrowable).ADJUST_SPEED_MIN(), IBorrowable(borrowable).ADJUST_SPEED_MAX());
    }

    function _removeProposal(uint index) internal {
        delete proposals[index];
    }

    function _checkPending(uint index) internal view {
        require(proposals[index][0].factory != address(0), "ImpermaxConfigManager: NOT_PENDING");
    }

    function _actualCollateralConfig(address collateral) internal view returns (CollateralConfig memory oldConfig) {
        oldConfig.safetyMarginSqrt = ICollateral(collateral).safetyMarginSqrt();
        oldConfig.liquidationIncentive = ICollateral(collateral).liquidationIncentive();
        oldConfig.liquidationFee = ICollateral(collateral).liquidationFee();
    }

    function _actualBorrowableConfig(address borrowable) internal view returns (BorrowableConfig memory oldConfig) {
        oldConfig.reserveFactor = IBorrowable(borrowable).reserveFactor();
        oldConfig.kinkUtilizationRate = IBorrowable(borrowable).kinkUtilizationRate();
        oldConfig.adjustSpeed = IBorrowable(borrowable).adjustSpeed();
        oldConfig.borrowTracker = IBorrowable(borrowable).borrowTracker();
    }

    function _setCollateralConfig(address collateral, CollateralConfig memory newConfig) internal {
		CollateralConfig memory oldConfig = _actualCollateralConfig(collateral);
        if(newConfig.safetyMarginSqrt != oldConfig.safetyMarginSqrt)
            ICollateral(collateral)._setSafetyMarginSqrt(newConfig.safetyMarginSqrt);
        if(newConfig.liquidationIncentive != oldConfig.liquidationIncentive)
            ICollateral(collateral)._setLiquidationIncentive(newConfig.liquidationIncentive);
        if(newConfig.liquidationFee != oldConfig.liquidationFee)
            ICollateral(collateral)._setLiquidationFee(newConfig.liquidationFee);
    }

    function _setBorrowableConfig(address borrowable, BorrowableConfig memory newConfig) internal {
		BorrowableConfig memory oldConfig = _actualBorrowableConfig(borrowable);
        if(newConfig.reserveFactor != oldConfig.reserveFactor)
            IBorrowable(borrowable)._setReserveFactor(newConfig.reserveFactor);
        if(newConfig.kinkUtilizationRate != oldConfig.kinkUtilizationRate)
            IBorrowable(borrowable)._setKinkUtilizationRate(newConfig.kinkUtilizationRate);
        if(newConfig.adjustSpeed != oldConfig.adjustSpeed)
            IBorrowable(borrowable)._setAdjustSpeed(newConfig.adjustSpeed);
        if(newConfig.borrowTracker != oldConfig.borrowTracker)
            IBorrowable(borrowable)._setBorrowTracker(newConfig.borrowTracker);
    }

	/* External */

    function makeProposal(PairConfig[] calldata proposal) external nonReentrant {
        for(uint i = 0; i < proposal.length; i++) {
			PairConfig memory config = proposal[i];
            (,, address collateral, address borrowable0, address borrowable1) = IFactory(config.factory).getLendingPool(config.pair);
            _checkCSetting(collateral, config.collateralConfig);
            _checkBSetting(borrowable0, config.borrowable0Config);
            _checkBSetting(borrowable1, config.borrowable1Config);
			proposals[proposalsLength].push(config);
        }
        emit NewProposal(proposalsLength, proposal);
        proposalsLength++;
    }

    function rejectProposal(uint index) external onlyOwner nonReentrant {
        _checkPending(index);
        emit RejectedProposal(index, proposals[index]);
        _removeProposal(index);
    }

    function approveProposal(uint index) external onlyOwner nonReentrant {
        _checkPending(index);
		PairConfig[] memory proposal = proposals[index];
        uint length = proposal.length;
        for(uint i = 0; i < length; i++) {
			PairConfig memory config = proposal[i];
            (,, address collateral, address borrowable0, address borrowable1) = IFactory(config.factory).getLendingPool(config.pair);
            _setCollateralConfig(collateral, config.collateralConfig);
            _setBorrowableConfig(borrowable0, config.borrowable0Config);
            _setBorrowableConfig(borrowable1, config.borrowable1Config);
            IImpermaxWhitelist(whitelist).setPairState(config.factory, config.pair, config.whitelistState);
        }
        emit ApprovedProposal(index, proposal);
        _removeProposal(index);
    }

	/* Ownership management */

    function _becomeContractAdmin(address ownableContract) external onlyOwner nonReentrant {
        Ownable(ownableContract)._acceptAdmin();
		emit BecomeContractAdmin(ownableContract);
    }

    function _setContractAdmin(address ownableContract, address newPendingAdmin) external onlyOwner nonReentrant {
        Ownable(ownableContract)._setPendingAdmin(newPendingAdmin);
		emit TransferContractOwnership(ownableContract, newPendingAdmin);
    }

	/* Utils */

	// prevents a contract from calling itself, directly or indirectly.
	bool internal _notEntered = true;
	modifier nonReentrant() {
		require(_notEntered, "ImpermaxConfigManager: REENTERED");
		_notEntered = false;
		_;
		_notEntered = true;
	}
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 999999
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_admin","type":"address"},{"internalType":"address","name":"_whitelist","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"index","type":"uint256"},{"components":[{"internalType":"address","name":"factory","type":"address"},{"internalType":"address","name":"pair","type":"address"},{"components":[{"internalType":"uint256","name":"safetyMarginSqrt","type":"uint256"},{"internalType":"uint256","name":"liquidationIncentive","type":"uint256"},{"internalType":"uint256","name":"liquidationFee","type":"uint256"}],"internalType":"struct IImpermaxConfigManager.CollateralConfig","name":"collateralConfig","type":"tuple"},{"components":[{"internalType":"uint256","name":"reserveFactor","type":"uint256"},{"internalType":"uint256","name":"kinkUtilizationRate","type":"uint256"},{"internalType":"uint256","name":"adjustSpeed","type":"uint256"},{"internalType":"address","name":"borrowTracker","type":"address"}],"internalType":"struct IImpermaxConfigManager.BorrowableConfig","name":"borrowable0Config","type":"tuple"},{"components":[{"internalType":"uint256","name":"reserveFactor","type":"uint256"},{"internalType":"uint256","name":"kinkUtilizationRate","type":"uint256"},{"internalType":"uint256","name":"adjustSpeed","type":"uint256"},{"internalType":"address","name":"borrowTracker","type":"address"}],"internalType":"struct IImpermaxConfigManager.BorrowableConfig","name":"borrowable1Config","type":"tuple"},{"internalType":"enum IImpermaxWhitelist.State","name":"whitelistState","type":"uint8"}],"indexed":false,"internalType":"struct IImpermaxConfigManager.PairConfig[]","name":"proposal","type":"tuple[]"}],"name":"ApprovedProposal","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"factory","type":"address"}],"name":"BecomeContractAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"NewAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldPendingAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newPendingAdmin","type":"address"}],"name":"NewPendingAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"index","type":"uint256"},{"components":[{"internalType":"address","name":"factory","type":"address"},{"internalType":"address","name":"pair","type":"address"},{"components":[{"internalType":"uint256","name":"safetyMarginSqrt","type":"uint256"},{"internalType":"uint256","name":"liquidationIncentive","type":"uint256"},{"internalType":"uint256","name":"liquidationFee","type":"uint256"}],"internalType":"struct IImpermaxConfigManager.CollateralConfig","name":"collateralConfig","type":"tuple"},{"components":[{"internalType":"uint256","name":"reserveFactor","type":"uint256"},{"internalType":"uint256","name":"kinkUtilizationRate","type":"uint256"},{"internalType":"uint256","name":"adjustSpeed","type":"uint256"},{"internalType":"address","name":"borrowTracker","type":"address"}],"internalType":"struct IImpermaxConfigManager.BorrowableConfig","name":"borrowable0Config","type":"tuple"},{"components":[{"internalType":"uint256","name":"reserveFactor","type":"uint256"},{"internalType":"uint256","name":"kinkUtilizationRate","type":"uint256"},{"internalType":"uint256","name":"adjustSpeed","type":"uint256"},{"internalType":"address","name":"borrowTracker","type":"address"}],"internalType":"struct IImpermaxConfigManager.BorrowableConfig","name":"borrowable1Config","type":"tuple"},{"internalType":"enum IImpermaxWhitelist.State","name":"whitelistState","type":"uint8"}],"indexed":false,"internalType":"struct IImpermaxConfigManager.PairConfig[]","name":"proposal","type":"tuple[]"}],"name":"NewProposal","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"index","type":"uint256"},{"components":[{"internalType":"address","name":"factory","type":"address"},{"internalType":"address","name":"pair","type":"address"},{"components":[{"internalType":"uint256","name":"safetyMarginSqrt","type":"uint256"},{"internalType":"uint256","name":"liquidationIncentive","type":"uint256"},{"internalType":"uint256","name":"liquidationFee","type":"uint256"}],"internalType":"struct IImpermaxConfigManager.CollateralConfig","name":"collateralConfig","type":"tuple"},{"components":[{"internalType":"uint256","name":"reserveFactor","type":"uint256"},{"internalType":"uint256","name":"kinkUtilizationRate","type":"uint256"},{"internalType":"uint256","name":"adjustSpeed","type":"uint256"},{"internalType":"address","name":"borrowTracker","type":"address"}],"internalType":"struct IImpermaxConfigManager.BorrowableConfig","name":"borrowable0Config","type":"tuple"},{"components":[{"internalType":"uint256","name":"reserveFactor","type":"uint256"},{"internalType":"uint256","name":"kinkUtilizationRate","type":"uint256"},{"internalType":"uint256","name":"adjustSpeed","type":"uint256"},{"internalType":"address","name":"borrowTracker","type":"address"}],"internalType":"struct IImpermaxConfigManager.BorrowableConfig","name":"borrowable1Config","type":"tuple"},{"internalType":"enum IImpermaxWhitelist.State","name":"whitelistState","type":"uint8"}],"indexed":false,"internalType":"struct IImpermaxConfigManager.PairConfig[]","name":"proposal","type":"tuple[]"}],"name":"RejectedProposal","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"factory","type":"address"},{"indexed":false,"internalType":"address","name":"newPendingAdmin","type":"address"}],"name":"TransferContractOwnership","type":"event"},{"constant":false,"inputs":[],"name":"_acceptAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"ownableContract","type":"address"}],"name":"_becomeContractAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"ownableContract","type":"address"},{"internalType":"address","name":"newPendingAdmin","type":"address"}],"name":"_setContractAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newPendingAdmin","type":"address"}],"name":"_setPendingAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"approveProposal","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getProposal","outputs":[{"components":[{"internalType":"address","name":"factory","type":"address"},{"internalType":"address","name":"pair","type":"address"},{"components":[{"internalType":"uint256","name":"safetyMarginSqrt","type":"uint256"},{"internalType":"uint256","name":"liquidationIncentive","type":"uint256"},{"internalType":"uint256","name":"liquidationFee","type":"uint256"}],"internalType":"struct IImpermaxConfigManager.CollateralConfig","name":"collateralConfig","type":"tuple"},{"components":[{"internalType":"uint256","name":"reserveFactor","type":"uint256"},{"internalType":"uint256","name":"kinkUtilizationRate","type":"uint256"},{"internalType":"uint256","name":"adjustSpeed","type":"uint256"},{"internalType":"address","name":"borrowTracker","type":"address"}],"internalType":"struct IImpermaxConfigManager.BorrowableConfig","name":"borrowable0Config","type":"tuple"},{"components":[{"internalType":"uint256","name":"reserveFactor","type":"uint256"},{"internalType":"uint256","name":"kinkUtilizationRate","type":"uint256"},{"internalType":"uint256","name":"adjustSpeed","type":"uint256"},{"internalType":"address","name":"borrowTracker","type":"address"}],"internalType":"struct IImpermaxConfigManager.BorrowableConfig","name":"borrowable1Config","type":"tuple"},{"internalType":"enum IImpermaxWhitelist.State","name":"whitelistState","type":"uint8"}],"internalType":"struct IImpermaxConfigManager.PairConfig[]","name":"","type":"tuple[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"components":[{"internalType":"address","name":"factory","type":"address"},{"internalType":"address","name":"pair","type":"address"},{"components":[{"internalType":"uint256","name":"safetyMarginSqrt","type":"uint256"},{"internalType":"uint256","name":"liquidationIncentive","type":"uint256"},{"internalType":"uint256","name":"liquidationFee","type":"uint256"}],"internalType":"struct IImpermaxConfigManager.CollateralConfig","name":"collateralConfig","type":"tuple"},{"components":[{"internalType":"uint256","name":"reserveFactor","type":"uint256"},{"internalType":"uint256","name":"kinkUtilizationRate","type":"uint256"},{"internalType":"uint256","name":"adjustSpeed","type":"uint256"},{"internalType":"address","name":"borrowTracker","type":"address"}],"internalType":"struct IImpermaxConfigManager.BorrowableConfig","name":"borrowable0Config","type":"tuple"},{"components":[{"internalType":"uint256","name":"reserveFactor","type":"uint256"},{"internalType":"uint256","name":"kinkUtilizationRate","type":"uint256"},{"internalType":"uint256","name":"adjustSpeed","type":"uint256"},{"internalType":"address","name":"borrowTracker","type":"address"}],"internalType":"struct IImpermaxConfigManager.BorrowableConfig","name":"borrowable1Config","type":"tuple"},{"internalType":"enum IImpermaxWhitelist.State","name":"whitelistState","type":"uint8"}],"internalType":"struct IImpermaxConfigManager.PairConfig[]","name":"proposal","type":"tuple[]"}],"name":"makeProposal","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"pendingAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"proposals","outputs":[{"internalType":"address","name":"factory","type":"address"},{"internalType":"address","name":"pair","type":"address"},{"components":[{"internalType":"uint256","name":"safetyMarginSqrt","type":"uint256"},{"internalType":"uint256","name":"liquidationIncentive","type":"uint256"},{"internalType":"uint256","name":"liquidationFee","type":"uint256"}],"internalType":"struct IImpermaxConfigManager.CollateralConfig","name":"collateralConfig","type":"tuple"},{"components":[{"internalType":"uint256","name":"reserveFactor","type":"uint256"},{"internalType":"uint256","name":"kinkUtilizationRate","type":"uint256"},{"internalType":"uint256","name":"adjustSpeed","type":"uint256"},{"internalType":"address","name":"borrowTracker","type":"address"}],"internalType":"struct IImpermaxConfigManager.BorrowableConfig","name":"borrowable0Config","type":"tuple"},{"components":[{"internalType":"uint256","name":"reserveFactor","type":"uint256"},{"internalType":"uint256","name":"kinkUtilizationRate","type":"uint256"},{"internalType":"uint256","name":"adjustSpeed","type":"uint256"},{"internalType":"address","name":"borrowTracker","type":"address"}],"internalType":"struct IImpermaxConfigManager.BorrowableConfig","name":"borrowable1Config","type":"tuple"},{"internalType":"enum IImpermaxWhitelist.State","name":"whitelistState","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"proposalsLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"rejectProposal","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"whitelist","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"}]

60806040526004805460ff60a01b1916600160a01b1790553480156200002457600080fd5b5060405162003078380380620030788339810160408190526200004791620000e1565b600080546001600160a01b0319166001600160a01b038481169190911780835560405185937ff9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc936200009e9391929116906200013c565b60405180910390a150600480546001600160a01b0319166001600160a01b039290921691909117905550620001a2565b8051620000db8162000188565b92915050565b60008060408385031215620000f557600080fd5b6000620001038585620000ce565b92505060206200011685828601620000ce565b9150509250929050565b6200012b8162000174565b82525050565b6200012b8162000162565b604081016200014c828562000120565b6200015b602083018462000131565b9392505050565b60006001600160a01b038216620000db565b6000620000db826000620000db8262000162565b620001938162000162565b81146200019f57600080fd5b50565b612ec680620001b26000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c8063b71d1a0c1161008c578063c7f758a811610066578063c7f758a8146101a5578063d5b9a422146101c5578063e9c714f2146101d8578063f851a440146101e0576100df565b8063b71d1a0c1461015a578063bc28d8781461016d578063c2cfee2714610180576100df565b80635c43b21f116100bd5780635c43b21f1461012c57806393e59dc11461013f57806398951b5614610147576100df565b806326782247146100e457806344c7c86714610102578063577398e014610117575b600080fd5b6100ec6101e8565b6040516100f99190612bcc565b60405180910390f35b61010a610204565b6040516100f99190612d10565b61012a610125366004612462565b61020a565b005b61012a61013a3660046123e4565b61057d565b6100ec610740565b61012a610155366004612538565b61075c565b61012a6101683660046123e4565b610bab565b61012a61017b366004612538565b610c80565b61019361018e366004612574565b610deb565b6040516100f996959493929190612c3f565b6101b86101b3366004612538565b610ed0565b6040516100f99190612cae565b61012a6101d3366004612428565b611030565b61012a6111fb565b6100ec61130f565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b60045474010000000000000000000000000000000000000000900460ff16610267576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161025e90612cd0565b60405180910390fd5b600480547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16905560005b818110156104f4576102a2612056565b8383838181106102ae57fe5b90506101c002018036036102c59190810190612519565b90506000806000836000015173ffffffffffffffffffffffffffffffffffffffff16630572bf5f85602001516040518263ffffffff1660e01b815260040161030d9190612bcc565b60a06040518083038186803b15801561032557600080fd5b505afa158015610339573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061035d91908101906124a4565b945094509450505061037383856040015161132b565b610381828560600151611554565b61038f818560800151611554565b60038054600090815260026020818152604080842080546001808201808455928752958490208b51600e9092020180547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff9384161782558c860151828901805483169185169190911790558c85015180519783019790975586860151828a01559584015160048201556060808d015180516005840155808701516006840155808601516007840155810151600883018054891691851691909117905560808d01518051600984015595860151600a83015593850151600b8201559390920151600c8401805490951692169190911790925560a0880151600d8201805493958a959394929391927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016919084908111156104dc57fe5b02179055505060019096019550610292945050505050565b506003547ff6825e485a6eff2c9dce46a91f9d63255d3aec43c91d0acda3562870d9da10988383604051610529929190612c9c565b60405180910390a25050600380546001019055600480547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146105ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161025e90612ce0565b60045474010000000000000000000000000000000000000000900460ff16610622576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161025e90612cd0565b600480547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff168155604080517fe9c714f2000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff84169263e9c714f29280820192600092909182900301818387803b1580156106af57600080fd5b505af11580156106c3573d6000803e3d6000fd5b505050507fceea085b6a1fe3e72468635024fe388adab2819b73f8274fbcdc2e74de3f42c6816040516106f69190612bcc565b60405180910390a150600480547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b60045473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff1633146107ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161025e90612ce0565b60045474010000000000000000000000000000000000000000900460ff16610801576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161025e90612cd0565b600480547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690556108328161173c565b606060026000838152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b828210156109865760008481526020908190206040805160c081018252600e8602909201805473ffffffffffffffffffffffffffffffffffffffff90811684526001820154811684860152825160608082018552600284015482526003808501548389015260048501548387015286860192909252845160808082018752600586015482526006860154828a01526007860154828801526008860154851682840152828801919091528551808201875260098601548152600a86015498810198909852600b85015495880195909552600c8401549092169186019190915291830193909352600d83015491929160a084019160ff9091169081111561096857fe5b600381111561097357fe5b8152505081526020019060010190610867565b5050825192935060009150505b81811015610b25576109a3612056565b8382815181106109af57fe5b602002602001015190506000806000836000015173ffffffffffffffffffffffffffffffffffffffff16630572bf5f85602001516040518263ffffffff1660e01b81526004016109ff9190612bcc565b60a06040518083038186803b158015610a1757600080fd5b505afa158015610a2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a4f91908101906124a4565b9450945094505050610a658385604001516117b6565b610a7382856060015161198e565b610a8181856080015161198e565b600480548551602087015160a08801516040517f7306447100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90941694637306447194610ae39493929101612c17565b600060405180830381600087803b158015610afd57600080fd5b505af1158015610b11573d6000803e3d6000fd5b505060019096019550610993945050505050565b50827f610e19f6ab817e621321124f168345ea2f449d8efb6aa5e40758807593f2c27d83604051610b569190612cae565b60405180910390a2610b6783611bf2565b5050600480547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000017905550565b60005473ffffffffffffffffffffffffffffffffffffffff163314610bfc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161025e90612ce0565b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff00000000000000000000000000000000000000008316179092556040519116907fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a990610c749083908590612bda565b60405180910390a15050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610cd1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161025e90612ce0565b60045474010000000000000000000000000000000000000000900460ff16610d25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161025e90612cd0565b600480547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055610d568161173c565b807f19c11fd3d8c60fd3cc0ad208fb999a4b1fd892181a1e6c0d44e19c147a29ab8360026000848152602001908152602001600020604051610d989190612cbf565b60405180910390a2610da981611bf2565b50600480547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b60026020528160005260406000208181548110610e0457fe5b6000918252602091829020600e9091020180546001820154604080516060808201835260028601548252600386015482880152600486015482840152825160808082018552600588015482526006880154828a0152600788015482860152600888015473ffffffffffffffffffffffffffffffffffffffff908116838501528551918201865260098901548252600a89015499820199909952600b88015494810194909452600c870154881691840191909152600d909501549386169750919094169450929060ff1686565b606060026000838152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b828210156110245760008481526020908190206040805160c081018252600e8602909201805473ffffffffffffffffffffffffffffffffffffffff90811684526001820154811684860152825160608082018552600284015482526003808501548389015260048501548387015286860192909252845160808082018752600586015482526006860154828a01526007860154828801526008860154851682840152828801919091528551808201875260098601548152600a86015498810198909852600b85015495880195909552600c8401549092169186019190915291830193909352600d83015491929160a084019160ff9091169081111561100657fe5b600381111561101157fe5b8152505081526020019060010190610f05565b5050505090505b919050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611081576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161025e90612ce0565b60045474010000000000000000000000000000000000000000900460ff166110d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161025e90612cd0565b600480547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1681556040517fb71d1a0c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169163b71d1a0c9161114d91859101612bcc565b600060405180830381600087803b15801561116757600080fd5b505af115801561117b573d6000803e3d6000fd5b505050507fcf46bd245e8c9192874bbb1cd18f3cfe24d39e59d79dec85790a459e81f99a8b82826040516111b0929190612bda565b60405180910390a15050600480547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b60015473ffffffffffffffffffffffffffffffffffffffff16331461124c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161025e90612ce0565b600080546001805473ffffffffffffffffffffffffffffffffffffffff8082167fffffffffffffffffffffffff00000000000000000000000000000000000000008086168217968790559092169092556040519282169390927ff9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc926112d5928692911690612bda565b60405180910390a17fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9816000604051610c74929190612bfc565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b61143481600001518373ffffffffffffffffffffffffffffffffffffffff16630fb60fef6040518163ffffffff1660e01b815260040160206040518083038186803b15801561137957600080fd5b505afa15801561138d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113b19190810190612556565b8473ffffffffffffffffffffffffffffffffffffffff1663d490e7e06040518163ffffffff1660e01b815260040160206040518083038186803b1580156113f757600080fd5b505afa15801561140b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061142f9190810190612556565b611c09565b61150081602001518373ffffffffffffffffffffffffffffffffffffffff1663bc9bd12a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561148257600080fd5b505afa158015611496573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114ba9190810190612556565b8473ffffffffffffffffffffffffffffffffffffffff1663afc8276c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156113f757600080fd5b611550816040015160008473ffffffffffffffffffffffffffffffffffffffff166333fabfd16040518163ffffffff1660e01b815260040160206040518083038186803b1580156113f757600080fd5b5050565b6115a4816000015160008473ffffffffffffffffffffffffffffffffffffffff1663c72f3fbb6040518163ffffffff1660e01b815260040160206040518083038186803b1580156113f757600080fd5b61167081602001518373ffffffffffffffffffffffffffffffffffffffff16632374e8a96040518163ffffffff1660e01b815260040160206040518083038186803b1580156115f257600080fd5b505afa158015611606573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061162a9190810190612556565b8473ffffffffffffffffffffffffffffffffffffffff1663685440656040518163ffffffff1660e01b815260040160206040518083038186803b1580156113f757600080fd5b61155081604001518373ffffffffffffffffffffffffffffffffffffffff1663075f4e7f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156116be57600080fd5b505afa1580156116d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506116f69190810190612556565b8473ffffffffffffffffffffffffffffffffffffffff1663253c24f36040518163ffffffff1660e01b815260040160206040518083038186803b1580156113f757600080fd5b60008181526002602052604081208054829061175457fe5b60009182526020909120600e909102015473ffffffffffffffffffffffffffffffffffffffff1614156117b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161025e90612d00565b50565b6117be61209b565b6117c783611c7d565b80518351919250146118595781516040517fbb6ff38600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169163bb6ff386916118269190600401612d10565b600060405180830381600087803b15801561184057600080fd5b505af1158015611854573d6000803e3d6000fd5b505050505b80602001518260200151146118f15760208201516040517f4fd42e1700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851691634fd42e17916118be9190600401612d10565b600060405180830381600087803b1580156118d857600080fd5b505af11580156118ec573d6000803e3d6000fd5b505050505b80604001518260400151146119895760408083015190517f1ef63a7900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851691631ef63a79916119569190600401612d10565b600060405180830381600087803b15801561197057600080fd5b505af1158015611984573d6000803e3d6000fd5b505050505b505050565b6119966120bc565b61199f83611e1b565b8051835191925014611a315781516040517ffca7820b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169163fca7820b916119fe9190600401612d10565b600060405180830381600087803b158015611a1857600080fd5b505af1158015611a2c573d6000803e3d6000fd5b505050505b8060200151826020015114611ac95760208201516040517f9292b03200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851691639292b03291611a969190600401612d10565b600060405180830381600087803b158015611ab057600080fd5b505af1158015611ac4573d6000803e3d6000fd5b505050505b8060400151826040015114611b615760408083015190517f27549a0b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516916327549a0b91611b2e9190600401612d10565b600060405180830381600087803b158015611b4857600080fd5b505af1158015611b5c573d6000803e3d6000fd5b505050505b806060015173ffffffffffffffffffffffffffffffffffffffff16826060015173ffffffffffffffffffffffffffffffffffffffff16146119895760608201516040517f3554282200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516916335542822916119569190600401612bcc565b60008181526002602052604081206117b3916120fa565b81831015611c43576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161025e90612cf0565b80831115611989576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161025e90612cf0565b611c8561209b565b8173ffffffffffffffffffffffffffffffffffffffff1663356c571f6040518163ffffffff1660e01b815260040160206040518083038186803b158015611ccb57600080fd5b505afa158015611cdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611d039190810190612556565b8160000181815250508173ffffffffffffffffffffffffffffffffffffffff16638c765e946040518163ffffffff1660e01b815260040160206040518083038186803b158015611d5257600080fd5b505afa158015611d66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611d8a9190810190612556565b8160200181815250508173ffffffffffffffffffffffffffffffffffffffff1663a36a36306040518163ffffffff1660e01b815260040160206040518083038186803b158015611dd957600080fd5b505afa158015611ded573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611e119190810190612556565b6040820152919050565b611e236120bc565b8173ffffffffffffffffffffffffffffffffffffffff16634322b7146040518163ffffffff1660e01b815260040160206040518083038186803b158015611e6957600080fd5b505afa158015611e7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611ea19190810190612556565b8160000181815250508173ffffffffffffffffffffffffffffffffffffffff16631aebf12f6040518163ffffffff1660e01b815260040160206040518083038186803b158015611ef057600080fd5b505afa158015611f04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611f289190810190612556565b8160200181815250508173ffffffffffffffffffffffffffffffffffffffff16632d5231d36040518163ffffffff1660e01b815260040160206040518083038186803b158015611f7757600080fd5b505afa158015611f8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611faf9190810190612556565b8160400181815250508173ffffffffffffffffffffffffffffffffffffffff1663559572206040518163ffffffff1660e01b815260040160206040518083038186803b158015611ffe57600080fd5b505afa158015612012573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612036919081019061240a565b73ffffffffffffffffffffffffffffffffffffffff166060820152919050565b6040805160c0810182526000808252602082015290810161207561209b565b81526020016120826120bc565b815260200161208f6120bc565b81526020016000905290565b60405180606001604052806000815260200160008152602001600081525090565b6040518060800160405280600081526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b50805460008255600e02906000526020600020908101906117b391906121e091905b808211156121dc5780547fffffffffffffffffffffffff000000000000000000000000000000000000000090811682556001820180548216905560006002830181905560038301819055600483018190556005830181905560068301819055600783018190556008830180548316905560098301819055600a8301819055600b830155600c820180549091169055600d810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600e0161211c565b5090565b90565b80356121ee81612e47565b92915050565b80516121ee81612e47565b60008083601f84011261221157600080fd5b50813567ffffffffffffffff81111561222957600080fd5b602083019150836101c082028301111561224257600080fd5b9250929050565b80516121ee81612e5b565b80356121ee81612e64565b60006080828403121561227157600080fd5b61227b6080612d1e565b9050600061228984846123ce565b825250602061229a848483016123ce565b60208301525060406122ae848285016123ce565b60408301525060606122c2848285016121e3565b60608301525092915050565b6000606082840312156122e057600080fd5b6122ea6060612d1e565b905060006122f884846123ce565b8252506020612309848483016123ce565b602083015250604061231d848285016123ce565b60408301525092915050565b60006101c0828403121561233c57600080fd5b61234660c0612d1e565b9050600061235484846121e3565b8252506020612365848483016121e3565b6020830152506040612379848285016122ce565b60408301525060a061238d8482850161225f565b6060830152506101206123a28482850161225f565b6080830152506101a06123b784828501612254565b60a08301525092915050565b80516121ee81612e71565b80356121ee81612e7a565b80516121ee81612e7a565b6000602082840312156123f657600080fd5b600061240284846121e3565b949350505050565b60006020828403121561241c57600080fd5b600061240284846121f4565b6000806040838503121561243b57600080fd5b600061244785856121e3565b9250506020612458858286016121e3565b9150509250929050565b6000806020838503121561247557600080fd5b823567ffffffffffffffff81111561248c57600080fd5b612498858286016121ff565b92509250509250929050565b600080600080600060a086880312156124bc57600080fd5b60006124c88888612249565b95505060206124d9888289016123c3565b94505060406124ea888289016121f4565b93505060606124fb888289016121f4565b925050608061250c888289016121f4565b9150509295509295909350565b60006101c0828403121561252c57600080fd5b60006124028484612329565b60006020828403121561254a57600080fd5b600061240284846123ce565b60006020828403121561256857600080fd5b600061240284846123d9565b6000806040838503121561258757600080fd5b600061259385856123ce565b9250506020612458858286016123ce565b60006125b08383612a1f565b50506101c00190565b60006125b08383612ac3565b60006125b08383612b36565b6125da81612de3565b82525050565b6125da81612dc1565b60006125f58385612d6c565b9350612600826121e0565b8060005b858110156126365761261682846121dc565b61262088826125a4565b975061262b83612d5f565b925050600101612604565b509495945050505050565b600061264c82612d57565b6126568185612d6c565b935061266183612d45565b8060005b8381101561263657815161267988826125b9565b975061268483612d45565b925050600101612665565b600061269a82612d5b565b6126a48185612d6c565b93506126af83612d4b565b8060005b8381101561263657816126c688826125c5565b97506126d183612d66565b9250506001016126b3565b6125da81612dee565b60006126f2602083612d6c565b7f496d7065726d6178436f6e6669674d616e616765723a205245454e5445524544815260200192915050565b600061272b601d83612d6c565b7f496d7065726d61784f776e61626c653a20554e415554484f52495a4544000000815260200192915050565b6000612764602683612d6c565b7f496d7065726d6178436f6e6669674d616e616765723a20494e56414c49445f5381527f455454494e470000000000000000000000000000000000000000000000000000602082015260400192915050565b60006127c3602283612d6c565b7f496d7065726d6178436f6e6669674d616e616765723a204e4f545f50454e444981527f4e47000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b608082016128238280612d93565b61282d8482612bc3565b5061283b6020830183612d93565b6128486020850182612bc3565b506128566040830183612d93565b6128636040850182612bc3565b506128716060830183612d75565b61287e60608501826125e0565b50505050565b805160808301906128958482612bc3565b5060208201516128a86020850182612bc3565b5060408201516128bb6040850182612bc3565b50606082015161287e60608501826125e0565b805460808301906128de81612e2a565b6128e88582612bc3565b505060018201546128f881612e2a565b6129056020860182612bc3565b5050600282015461291581612e2a565b6129226040860182612bc3565b5050600382015461293281612e04565b61293f60608601826125e0565b5050505050565b606082016129548280612d93565b61295e8482612bc3565b5061296c6020830183612d93565b6129796020850182612bc3565b506129876040830183612d93565b61287e6040850182612bc3565b805160608301906129a58482612bc3565b5060208201516129b86020850182612bc3565b50604082015161287e6040850182612bc3565b805460608301906129db81612e2a565b6129e58582612bc3565b505060018201546129f581612e2a565b612a026020860182612bc3565b50506002820154612a1281612e2a565b61293f6040860182612bc3565b6101c08201612a2e8280612d75565b612a3884826125e0565b50612a466020830183612d75565b612a5360208501826125e0565b50612a6160408301836121dc565b612a6e6040850182612946565b50612a7c60a08301836121dc565b612a8960a0850182612815565b50612a986101208301836121dc565b612aa6610120850182612815565b50612ab56101a0830183612d84565b61287e6101a08501826126dc565b80516101c0830190612ad584826125e0565b506020820151612ae860208501826125e0565b506040820151612afb6040850182612994565b506060820151612b0e60a0850182612884565b506080820151612b22610120850182612884565b5060a082015161287e6101a08501826126dc565b80546101c0830190612b4781612e04565b612b5185826125e0565b50506001820154612b6181612e04565b612b6e60208601826125e0565b5060028301612b8060408601826129cb565b5060058301612b9260a08601826128ce565b5060098301612ba56101208601826128ce565b5050600d820154612bb581612e17565b61293f6101a08601826126dc565b6125da816121e0565b602081016121ee82846125e0565b60408101612be882856125e0565b612bf560208301846125e0565b9392505050565b60408101612c0a82856125e0565b612bf560208301846125d1565b60608101612c2582866125e0565b612c3260208301856125e0565b61240260408301846126dc565b6101c08101612c4e82896125e0565b612c5b60208301886125e0565b612c686040830187612994565b612c7560a0830186612884565b612c83610120830185612884565b612c916101a08301846126dc565b979650505050505050565b602080825281016124028184866125e9565b60208082528101612bf58184612641565b60208082528101612bf5818461268f565b602080825281016121ee816126e5565b602080825281016121ee8161271e565b602080825281016121ee81612757565b602080825281016121ee816127b6565b602081016121ee8284612bc3565b60405181810167ffffffffffffffff81118282101715612d3d57600080fd5b604052919050565b60200190565b60009081526020902090565b5190565b5490565b6101c00190565b600e0190565b90815260200190565b6000612bf560208401846121e3565b6000612bf56020840184612254565b6000612bf560208401846123ce565b73ffffffffffffffffffffffffffffffffffffffff1690565b60ff1690565b60006121ee82612da2565b151590565b8061102b81612e3d565b62ffffff1690565b60006121ee82612df9565b60006121ee82612dd1565b60006121ee82612dc1565b60006121ee612e12836121e0565b612da2565b60006121ee612e25836121e0565b612dbb565b60006121ee612e38836121e0565b6121e0565b600481106117b357fe5b612e5081612dc1565b81146117b357600080fd5b612e5081612dcc565b600481106117b357600080fd5b612e5081612ddb565b612e50816121e056fea365627a7a72315820a5d60ba3f3b446f04ac939132858a27ace0a6296b831102df54efdf7b03377d46c6578706572696d656e74616cf564736f6c63430005100040000000000000000000000000fd1b05e51653339c850c8a18c9ac11aed9105f2a000000000000000000000000143688fa98f5b391e299e22d143145d6df6296cc

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100df5760003560e01c8063b71d1a0c1161008c578063c7f758a811610066578063c7f758a8146101a5578063d5b9a422146101c5578063e9c714f2146101d8578063f851a440146101e0576100df565b8063b71d1a0c1461015a578063bc28d8781461016d578063c2cfee2714610180576100df565b80635c43b21f116100bd5780635c43b21f1461012c57806393e59dc11461013f57806398951b5614610147576100df565b806326782247146100e457806344c7c86714610102578063577398e014610117575b600080fd5b6100ec6101e8565b6040516100f99190612bcc565b60405180910390f35b61010a610204565b6040516100f99190612d10565b61012a610125366004612462565b61020a565b005b61012a61013a3660046123e4565b61057d565b6100ec610740565b61012a610155366004612538565b61075c565b61012a6101683660046123e4565b610bab565b61012a61017b366004612538565b610c80565b61019361018e366004612574565b610deb565b6040516100f996959493929190612c3f565b6101b86101b3366004612538565b610ed0565b6040516100f99190612cae565b61012a6101d3366004612428565b611030565b61012a6111fb565b6100ec61130f565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b60045474010000000000000000000000000000000000000000900460ff16610267576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161025e90612cd0565b60405180910390fd5b600480547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16905560005b818110156104f4576102a2612056565b8383838181106102ae57fe5b90506101c002018036036102c59190810190612519565b90506000806000836000015173ffffffffffffffffffffffffffffffffffffffff16630572bf5f85602001516040518263ffffffff1660e01b815260040161030d9190612bcc565b60a06040518083038186803b15801561032557600080fd5b505afa158015610339573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061035d91908101906124a4565b945094509450505061037383856040015161132b565b610381828560600151611554565b61038f818560800151611554565b60038054600090815260026020818152604080842080546001808201808455928752958490208b51600e9092020180547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff9384161782558c860151828901805483169185169190911790558c85015180519783019790975586860151828a01559584015160048201556060808d015180516005840155808701516006840155808601516007840155810151600883018054891691851691909117905560808d01518051600984015595860151600a83015593850151600b8201559390920151600c8401805490951692169190911790925560a0880151600d8201805493958a959394929391927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016919084908111156104dc57fe5b02179055505060019096019550610292945050505050565b506003547ff6825e485a6eff2c9dce46a91f9d63255d3aec43c91d0acda3562870d9da10988383604051610529929190612c9c565b60405180910390a25050600380546001019055600480547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146105ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161025e90612ce0565b60045474010000000000000000000000000000000000000000900460ff16610622576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161025e90612cd0565b600480547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff168155604080517fe9c714f2000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff84169263e9c714f29280820192600092909182900301818387803b1580156106af57600080fd5b505af11580156106c3573d6000803e3d6000fd5b505050507fceea085b6a1fe3e72468635024fe388adab2819b73f8274fbcdc2e74de3f42c6816040516106f69190612bcc565b60405180910390a150600480547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b60045473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff1633146107ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161025e90612ce0565b60045474010000000000000000000000000000000000000000900460ff16610801576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161025e90612cd0565b600480547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690556108328161173c565b606060026000838152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b828210156109865760008481526020908190206040805160c081018252600e8602909201805473ffffffffffffffffffffffffffffffffffffffff90811684526001820154811684860152825160608082018552600284015482526003808501548389015260048501548387015286860192909252845160808082018752600586015482526006860154828a01526007860154828801526008860154851682840152828801919091528551808201875260098601548152600a86015498810198909852600b85015495880195909552600c8401549092169186019190915291830193909352600d83015491929160a084019160ff9091169081111561096857fe5b600381111561097357fe5b8152505081526020019060010190610867565b5050825192935060009150505b81811015610b25576109a3612056565b8382815181106109af57fe5b602002602001015190506000806000836000015173ffffffffffffffffffffffffffffffffffffffff16630572bf5f85602001516040518263ffffffff1660e01b81526004016109ff9190612bcc565b60a06040518083038186803b158015610a1757600080fd5b505afa158015610a2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a4f91908101906124a4565b9450945094505050610a658385604001516117b6565b610a7382856060015161198e565b610a8181856080015161198e565b600480548551602087015160a08801516040517f7306447100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90941694637306447194610ae39493929101612c17565b600060405180830381600087803b158015610afd57600080fd5b505af1158015610b11573d6000803e3d6000fd5b505060019096019550610993945050505050565b50827f610e19f6ab817e621321124f168345ea2f449d8efb6aa5e40758807593f2c27d83604051610b569190612cae565b60405180910390a2610b6783611bf2565b5050600480547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000017905550565b60005473ffffffffffffffffffffffffffffffffffffffff163314610bfc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161025e90612ce0565b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff00000000000000000000000000000000000000008316179092556040519116907fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a990610c749083908590612bda565b60405180910390a15050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610cd1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161025e90612ce0565b60045474010000000000000000000000000000000000000000900460ff16610d25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161025e90612cd0565b600480547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055610d568161173c565b807f19c11fd3d8c60fd3cc0ad208fb999a4b1fd892181a1e6c0d44e19c147a29ab8360026000848152602001908152602001600020604051610d989190612cbf565b60405180910390a2610da981611bf2565b50600480547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b60026020528160005260406000208181548110610e0457fe5b6000918252602091829020600e9091020180546001820154604080516060808201835260028601548252600386015482880152600486015482840152825160808082018552600588015482526006880154828a0152600788015482860152600888015473ffffffffffffffffffffffffffffffffffffffff908116838501528551918201865260098901548252600a89015499820199909952600b88015494810194909452600c870154881691840191909152600d909501549386169750919094169450929060ff1686565b606060026000838152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b828210156110245760008481526020908190206040805160c081018252600e8602909201805473ffffffffffffffffffffffffffffffffffffffff90811684526001820154811684860152825160608082018552600284015482526003808501548389015260048501548387015286860192909252845160808082018752600586015482526006860154828a01526007860154828801526008860154851682840152828801919091528551808201875260098601548152600a86015498810198909852600b85015495880195909552600c8401549092169186019190915291830193909352600d83015491929160a084019160ff9091169081111561100657fe5b600381111561101157fe5b8152505081526020019060010190610f05565b5050505090505b919050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611081576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161025e90612ce0565b60045474010000000000000000000000000000000000000000900460ff166110d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161025e90612cd0565b600480547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1681556040517fb71d1a0c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169163b71d1a0c9161114d91859101612bcc565b600060405180830381600087803b15801561116757600080fd5b505af115801561117b573d6000803e3d6000fd5b505050507fcf46bd245e8c9192874bbb1cd18f3cfe24d39e59d79dec85790a459e81f99a8b82826040516111b0929190612bda565b60405180910390a15050600480547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b60015473ffffffffffffffffffffffffffffffffffffffff16331461124c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161025e90612ce0565b600080546001805473ffffffffffffffffffffffffffffffffffffffff8082167fffffffffffffffffffffffff00000000000000000000000000000000000000008086168217968790559092169092556040519282169390927ff9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc926112d5928692911690612bda565b60405180910390a17fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9816000604051610c74929190612bfc565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b61143481600001518373ffffffffffffffffffffffffffffffffffffffff16630fb60fef6040518163ffffffff1660e01b815260040160206040518083038186803b15801561137957600080fd5b505afa15801561138d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113b19190810190612556565b8473ffffffffffffffffffffffffffffffffffffffff1663d490e7e06040518163ffffffff1660e01b815260040160206040518083038186803b1580156113f757600080fd5b505afa15801561140b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061142f9190810190612556565b611c09565b61150081602001518373ffffffffffffffffffffffffffffffffffffffff1663bc9bd12a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561148257600080fd5b505afa158015611496573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114ba9190810190612556565b8473ffffffffffffffffffffffffffffffffffffffff1663afc8276c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156113f757600080fd5b611550816040015160008473ffffffffffffffffffffffffffffffffffffffff166333fabfd16040518163ffffffff1660e01b815260040160206040518083038186803b1580156113f757600080fd5b5050565b6115a4816000015160008473ffffffffffffffffffffffffffffffffffffffff1663c72f3fbb6040518163ffffffff1660e01b815260040160206040518083038186803b1580156113f757600080fd5b61167081602001518373ffffffffffffffffffffffffffffffffffffffff16632374e8a96040518163ffffffff1660e01b815260040160206040518083038186803b1580156115f257600080fd5b505afa158015611606573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061162a9190810190612556565b8473ffffffffffffffffffffffffffffffffffffffff1663685440656040518163ffffffff1660e01b815260040160206040518083038186803b1580156113f757600080fd5b61155081604001518373ffffffffffffffffffffffffffffffffffffffff1663075f4e7f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156116be57600080fd5b505afa1580156116d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506116f69190810190612556565b8473ffffffffffffffffffffffffffffffffffffffff1663253c24f36040518163ffffffff1660e01b815260040160206040518083038186803b1580156113f757600080fd5b60008181526002602052604081208054829061175457fe5b60009182526020909120600e909102015473ffffffffffffffffffffffffffffffffffffffff1614156117b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161025e90612d00565b50565b6117be61209b565b6117c783611c7d565b80518351919250146118595781516040517fbb6ff38600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169163bb6ff386916118269190600401612d10565b600060405180830381600087803b15801561184057600080fd5b505af1158015611854573d6000803e3d6000fd5b505050505b80602001518260200151146118f15760208201516040517f4fd42e1700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851691634fd42e17916118be9190600401612d10565b600060405180830381600087803b1580156118d857600080fd5b505af11580156118ec573d6000803e3d6000fd5b505050505b80604001518260400151146119895760408083015190517f1ef63a7900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851691631ef63a79916119569190600401612d10565b600060405180830381600087803b15801561197057600080fd5b505af1158015611984573d6000803e3d6000fd5b505050505b505050565b6119966120bc565b61199f83611e1b565b8051835191925014611a315781516040517ffca7820b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169163fca7820b916119fe9190600401612d10565b600060405180830381600087803b158015611a1857600080fd5b505af1158015611a2c573d6000803e3d6000fd5b505050505b8060200151826020015114611ac95760208201516040517f9292b03200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851691639292b03291611a969190600401612d10565b600060405180830381600087803b158015611ab057600080fd5b505af1158015611ac4573d6000803e3d6000fd5b505050505b8060400151826040015114611b615760408083015190517f27549a0b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516916327549a0b91611b2e9190600401612d10565b600060405180830381600087803b158015611b4857600080fd5b505af1158015611b5c573d6000803e3d6000fd5b505050505b806060015173ffffffffffffffffffffffffffffffffffffffff16826060015173ffffffffffffffffffffffffffffffffffffffff16146119895760608201516040517f3554282200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516916335542822916119569190600401612bcc565b60008181526002602052604081206117b3916120fa565b81831015611c43576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161025e90612cf0565b80831115611989576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161025e90612cf0565b611c8561209b565b8173ffffffffffffffffffffffffffffffffffffffff1663356c571f6040518163ffffffff1660e01b815260040160206040518083038186803b158015611ccb57600080fd5b505afa158015611cdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611d039190810190612556565b8160000181815250508173ffffffffffffffffffffffffffffffffffffffff16638c765e946040518163ffffffff1660e01b815260040160206040518083038186803b158015611d5257600080fd5b505afa158015611d66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611d8a9190810190612556565b8160200181815250508173ffffffffffffffffffffffffffffffffffffffff1663a36a36306040518163ffffffff1660e01b815260040160206040518083038186803b158015611dd957600080fd5b505afa158015611ded573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611e119190810190612556565b6040820152919050565b611e236120bc565b8173ffffffffffffffffffffffffffffffffffffffff16634322b7146040518163ffffffff1660e01b815260040160206040518083038186803b158015611e6957600080fd5b505afa158015611e7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611ea19190810190612556565b8160000181815250508173ffffffffffffffffffffffffffffffffffffffff16631aebf12f6040518163ffffffff1660e01b815260040160206040518083038186803b158015611ef057600080fd5b505afa158015611f04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611f289190810190612556565b8160200181815250508173ffffffffffffffffffffffffffffffffffffffff16632d5231d36040518163ffffffff1660e01b815260040160206040518083038186803b158015611f7757600080fd5b505afa158015611f8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611faf9190810190612556565b8160400181815250508173ffffffffffffffffffffffffffffffffffffffff1663559572206040518163ffffffff1660e01b815260040160206040518083038186803b158015611ffe57600080fd5b505afa158015612012573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612036919081019061240a565b73ffffffffffffffffffffffffffffffffffffffff166060820152919050565b6040805160c0810182526000808252602082015290810161207561209b565b81526020016120826120bc565b815260200161208f6120bc565b81526020016000905290565b60405180606001604052806000815260200160008152602001600081525090565b6040518060800160405280600081526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b50805460008255600e02906000526020600020908101906117b391906121e091905b808211156121dc5780547fffffffffffffffffffffffff000000000000000000000000000000000000000090811682556001820180548216905560006002830181905560038301819055600483018190556005830181905560068301819055600783018190556008830180548316905560098301819055600a8301819055600b830155600c820180549091169055600d810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600e0161211c565b5090565b90565b80356121ee81612e47565b92915050565b80516121ee81612e47565b60008083601f84011261221157600080fd5b50813567ffffffffffffffff81111561222957600080fd5b602083019150836101c082028301111561224257600080fd5b9250929050565b80516121ee81612e5b565b80356121ee81612e64565b60006080828403121561227157600080fd5b61227b6080612d1e565b9050600061228984846123ce565b825250602061229a848483016123ce565b60208301525060406122ae848285016123ce565b60408301525060606122c2848285016121e3565b60608301525092915050565b6000606082840312156122e057600080fd5b6122ea6060612d1e565b905060006122f884846123ce565b8252506020612309848483016123ce565b602083015250604061231d848285016123ce565b60408301525092915050565b60006101c0828403121561233c57600080fd5b61234660c0612d1e565b9050600061235484846121e3565b8252506020612365848483016121e3565b6020830152506040612379848285016122ce565b60408301525060a061238d8482850161225f565b6060830152506101206123a28482850161225f565b6080830152506101a06123b784828501612254565b60a08301525092915050565b80516121ee81612e71565b80356121ee81612e7a565b80516121ee81612e7a565b6000602082840312156123f657600080fd5b600061240284846121e3565b949350505050565b60006020828403121561241c57600080fd5b600061240284846121f4565b6000806040838503121561243b57600080fd5b600061244785856121e3565b9250506020612458858286016121e3565b9150509250929050565b6000806020838503121561247557600080fd5b823567ffffffffffffffff81111561248c57600080fd5b612498858286016121ff565b92509250509250929050565b600080600080600060a086880312156124bc57600080fd5b60006124c88888612249565b95505060206124d9888289016123c3565b94505060406124ea888289016121f4565b93505060606124fb888289016121f4565b925050608061250c888289016121f4565b9150509295509295909350565b60006101c0828403121561252c57600080fd5b60006124028484612329565b60006020828403121561254a57600080fd5b600061240284846123ce565b60006020828403121561256857600080fd5b600061240284846123d9565b6000806040838503121561258757600080fd5b600061259385856123ce565b9250506020612458858286016123ce565b60006125b08383612a1f565b50506101c00190565b60006125b08383612ac3565b60006125b08383612b36565b6125da81612de3565b82525050565b6125da81612dc1565b60006125f58385612d6c565b9350612600826121e0565b8060005b858110156126365761261682846121dc565b61262088826125a4565b975061262b83612d5f565b925050600101612604565b509495945050505050565b600061264c82612d57565b6126568185612d6c565b935061266183612d45565b8060005b8381101561263657815161267988826125b9565b975061268483612d45565b925050600101612665565b600061269a82612d5b565b6126a48185612d6c565b93506126af83612d4b565b8060005b8381101561263657816126c688826125c5565b97506126d183612d66565b9250506001016126b3565b6125da81612dee565b60006126f2602083612d6c565b7f496d7065726d6178436f6e6669674d616e616765723a205245454e5445524544815260200192915050565b600061272b601d83612d6c565b7f496d7065726d61784f776e61626c653a20554e415554484f52495a4544000000815260200192915050565b6000612764602683612d6c565b7f496d7065726d6178436f6e6669674d616e616765723a20494e56414c49445f5381527f455454494e470000000000000000000000000000000000000000000000000000602082015260400192915050565b60006127c3602283612d6c565b7f496d7065726d6178436f6e6669674d616e616765723a204e4f545f50454e444981527f4e47000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b608082016128238280612d93565b61282d8482612bc3565b5061283b6020830183612d93565b6128486020850182612bc3565b506128566040830183612d93565b6128636040850182612bc3565b506128716060830183612d75565b61287e60608501826125e0565b50505050565b805160808301906128958482612bc3565b5060208201516128a86020850182612bc3565b5060408201516128bb6040850182612bc3565b50606082015161287e60608501826125e0565b805460808301906128de81612e2a565b6128e88582612bc3565b505060018201546128f881612e2a565b6129056020860182612bc3565b5050600282015461291581612e2a565b6129226040860182612bc3565b5050600382015461293281612e04565b61293f60608601826125e0565b5050505050565b606082016129548280612d93565b61295e8482612bc3565b5061296c6020830183612d93565b6129796020850182612bc3565b506129876040830183612d93565b61287e6040850182612bc3565b805160608301906129a58482612bc3565b5060208201516129b86020850182612bc3565b50604082015161287e6040850182612bc3565b805460608301906129db81612e2a565b6129e58582612bc3565b505060018201546129f581612e2a565b612a026020860182612bc3565b50506002820154612a1281612e2a565b61293f6040860182612bc3565b6101c08201612a2e8280612d75565b612a3884826125e0565b50612a466020830183612d75565b612a5360208501826125e0565b50612a6160408301836121dc565b612a6e6040850182612946565b50612a7c60a08301836121dc565b612a8960a0850182612815565b50612a986101208301836121dc565b612aa6610120850182612815565b50612ab56101a0830183612d84565b61287e6101a08501826126dc565b80516101c0830190612ad584826125e0565b506020820151612ae860208501826125e0565b506040820151612afb6040850182612994565b506060820151612b0e60a0850182612884565b506080820151612b22610120850182612884565b5060a082015161287e6101a08501826126dc565b80546101c0830190612b4781612e04565b612b5185826125e0565b50506001820154612b6181612e04565b612b6e60208601826125e0565b5060028301612b8060408601826129cb565b5060058301612b9260a08601826128ce565b5060098301612ba56101208601826128ce565b5050600d820154612bb581612e17565b61293f6101a08601826126dc565b6125da816121e0565b602081016121ee82846125e0565b60408101612be882856125e0565b612bf560208301846125e0565b9392505050565b60408101612c0a82856125e0565b612bf560208301846125d1565b60608101612c2582866125e0565b612c3260208301856125e0565b61240260408301846126dc565b6101c08101612c4e82896125e0565b612c5b60208301886125e0565b612c686040830187612994565b612c7560a0830186612884565b612c83610120830185612884565b612c916101a08301846126dc565b979650505050505050565b602080825281016124028184866125e9565b60208082528101612bf58184612641565b60208082528101612bf5818461268f565b602080825281016121ee816126e5565b602080825281016121ee8161271e565b602080825281016121ee81612757565b602080825281016121ee816127b6565b602081016121ee8284612bc3565b60405181810167ffffffffffffffff81118282101715612d3d57600080fd5b604052919050565b60200190565b60009081526020902090565b5190565b5490565b6101c00190565b600e0190565b90815260200190565b6000612bf560208401846121e3565b6000612bf56020840184612254565b6000612bf560208401846123ce565b73ffffffffffffffffffffffffffffffffffffffff1690565b60ff1690565b60006121ee82612da2565b151590565b8061102b81612e3d565b62ffffff1690565b60006121ee82612df9565b60006121ee82612dd1565b60006121ee82612dc1565b60006121ee612e12836121e0565b612da2565b60006121ee612e25836121e0565b612dbb565b60006121ee612e38836121e0565b6121e0565b600481106117b357fe5b612e5081612dc1565b81146117b357600080fd5b612e5081612dcc565b600481106117b357600080fd5b612e5081612ddb565b612e50816121e056fea365627a7a72315820a5d60ba3f3b446f04ac939132858a27ace0a6296b831102df54efdf7b03377d46c6578706572696d656e74616cf564736f6c63430005100040

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000fd1b05e51653339c850c8a18c9ac11aed9105f2a000000000000000000000000143688fa98f5b391e299e22d143145d6df6296cc

-----Decoded View---------------
Arg [0] : _admin (address): 0xFD1b05E51653339c850c8a18c9Ac11Aed9105F2A
Arg [1] : _whitelist (address): 0x143688FA98f5b391E299E22d143145D6DF6296cc

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000fd1b05e51653339c850c8a18c9ac11aed9105f2a
Arg [1] : 000000000000000000000000143688fa98f5b391e299e22d143145d6df6296cc


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
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.