ETH Price: $2,074.16 (-4.16%)

Contract

0xfD19dBE9F3EE220164dce021acFe74F2F1646C8B
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Un Stake Tokens126646182021-06-19 11:47:071720 days ago1624103227IN
0xfD19dBE9...2F1646C8B
0 ETH0.0009922311
Stake Tokens125996832021-06-09 9:59:141730 days ago1623232754IN
0xfD19dBE9...2F1646C8B
0 ETH0.0034134310
Un Stake Tokens125975852021-06-09 2:11:211730 days ago1623204681IN
0xfD19dBE9...2F1646C8B
0 ETH0.0011726313
Stake Tokens123750132021-05-05 15:27:591765 days ago1620228479IN
0xfD19dBE9...2F1646C8B
0 ETH0.0142199568.00000134
Stake Tokens123750032021-05-05 15:25:491765 days ago1620228349IN
0xfD19dBE9...2F1646C8B
0 ETH0.0142199568.00000145
Stake Tokens123749932021-05-05 15:23:291765 days ago1620228209IN
0xfD19dBE9...2F1646C8B
0 ETH0.0140317567.1000016
Stake Tokens123631972021-05-03 19:41:211766 days ago1620070881IN
0xfD19dBE9...2F1646C8B
0 ETH0.03515832103
Stake Tokens123629412021-05-03 18:44:491767 days ago1620067489IN
0xfD19dBE9...2F1646C8B
0 ETH0.04191636103
Update Database ...123405382021-04-30 7:30:561770 days ago1619767856IN
0xfD19dBE9...2F1646C8B
0 ETH0.0009831134

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
InlineMain

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
Yes with 1 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity Multiple files format)

File 1 of 5: InlineMain.sol
// SPDX-License-Identifier: UNLICENCED
pragma solidity >=0.6.0 <0.8.0;
pragma abicoder v2;

import "./Ownable.sol";
import "./SafeMath.sol";
import "./InlineInterface.sol";


contract InlineMain is Ownable{
    
  using SafeMath for uint256;
    address[] tempArray;
    
    address public databaseContractAddress=0x790E5E60a5B751A30d9210a2B9CE01De17D039A8;
    
    InlineDatabaseLib.IndexCoin[] tempObjectArray;
    
    function stakeTokens(uint256 amount) external{
        DatabaseContract dContract=DatabaseContract(databaseContractAddress);
        Token tokenObj = Token(dContract.getXIVTokenContractAddress());
        require(amount>=dContract.getMinLPvalue(),"Please enter more amount.");
        //check if user has balance
        require(tokenObj.balanceOf(msg.sender) >= amount, "You don't have enough XIV balance");
        //check if user has provided allowance
        require(tokenObj.allowance(msg.sender,databaseContractAddress) >= amount, 
        "Please allow smart contract to spend on your behalf");
        dContract.transferFromTokens(dContract.getXIVTokenContractAddress(),msg.sender,databaseContractAddress,amount);
        
        uint256 currentTimeStamp=block.timestamp;
        InlineDatabaseLib.StakingInfo memory sInfo= InlineDatabaseLib.StakingInfo({
            investmentId:dContract.getInvestmentId(),
            stakeAmount:amount
        });
        dContract.updateStakingInfoMapping(msg.sender,sInfo);
        dContract.updateInvestmentId(dContract.getInvestmentId().add(1));
        if(!dContract.getIsStakeMapping(msg.sender)){
            dContract.updateUserStakedAddress(msg.sender);
            dContract.updateIsStakeMapping(msg.sender,true);
        }
        dContract.updateTokensStaked(msg.sender,dContract.getTokensStaked(msg.sender).add(amount));
        dContract.updateActualAmountStakedByUser(msg.sender,dContract.getActualAmountStakedByUser(msg.sender).add(amount));
        dContract.updateTokenStakedAmount(dContract.getTokenStakedAmount().add(amount));
        dContract.updateTotalTransactions(dContract.getTotalTransactions().add(amount));
        if(dContract.getLockingPeriodForLPMapping(msg.sender).lockedTimeStamp>currentTimeStamp){
            dContract.updateLockingPeriodForLPMapping(msg.sender,(dContract.getLockingPeriodForLPMapping(msg.sender).amountLocked).add(amount),
                                                        dContract.getLockingPeriodForLPMapping(msg.sender).lockedTimeStamp);
        }else{
            dContract.updateLockingPeriodForLPMapping(msg.sender,amount,currentTimeStamp.add(30 days));
        }
        dContract.emitLPEvent(0,msg.sender,amount,currentTimeStamp);
    }
     function unStakeTokens(uint256 amount) external{
        DatabaseContract dContract=DatabaseContract(databaseContractAddress);
        uint256 currentTimeStamp=block.timestamp;
        if(dContract.getLockingPeriodForLPMapping(msg.sender).lockedTimeStamp>currentTimeStamp){
            require(dContract.getTokensStaked(msg.sender).sub(dContract.getLockingPeriodForLPMapping(msg.sender).amountLocked) >= amount, "You can not retrive LP token with this amount");
        }else{
            require(dContract.getTokensStaked(msg.sender)>=amount, "You can not retrive LP token with this amount");
        }
        dContract.transferTokens(dContract.getXIVTokenContractAddress(),msg.sender,amount);
        dContract.updateTokensStaked(msg.sender,dContract.getTokensStaked(msg.sender).sub(amount));
        if(amount>dContract.getActualAmountStakedByUser(msg.sender)){
            dContract.updateActualAmountStakedByUser(msg.sender,0);
        }else{
            dContract.updateActualAmountStakedByUser(msg.sender,dContract.getActualAmountStakedByUser(msg.sender).sub(amount));
        }
        dContract.updateTokenStakedAmount(dContract.getTokenStakedAmount().sub(amount));
        dContract.emitLPEvent(1,msg.sender,amount,currentTimeStamp);
    }
    
    function updateDatabaseAddress(address _databaseContractAddress) external onlyOwner{
        databaseContractAddress=_databaseContractAddress;
    }
    
}


File 2 of 5: InlineDatabaseLib.sol
// SPDX-License-Identifier: UNLICENCED
pragma solidity >=0.6.0 <0.8.0;
pragma abicoder v2;

library InlineDatabaseLib{
    // deficoin struct for deficoinmappings..
   struct DefiCoin{
        uint16 oracleType;
        string currencySymbol;
        bool status;
    }
    struct TimePeriod{
        uint256 _days;
        bool status;
    }
     struct FlexibleInfo{
        uint256 id;
        uint16 upDownPercentage; //10**2
        uint16 riskFactor;       //10**2
        uint16 rewardFactor;     //10**2
        bool status;
    }
    struct FixedInfo{
        uint256 id;
        uint256 daysCount;// integer value
        uint16 upDownPercentage; //10**2
        uint16 riskFactor;       //10**2
        uint16 rewardFactor;     //10**2
        bool status;
    }
    struct IndexCoin{
        uint16 oracleType;
        string currencySymbol;
        address contractAddress;
        bool status;
        uint256 contributionPercentage; //10**2
    }
    struct BetPriceHistory{
        uint256 baseIndexValue;
        uint256 actualIndexValue;
    }
    struct LPLockedInfo{
        uint256 lockedTimeStamp;
        uint256 amountLocked;
    }
    struct StakingInfo{
        uint256 investmentId;
        uint256 stakeAmount;
    }
    struct IncentiveInfo{
        uint256 tillInvestmentId;
        uint256 incentiveAmount;
        uint256 totalAmountStakedAtIncentiveTime;
    }
    struct BetInfo{
        uint256 id;
        uint256 principalAmount;
        uint256 amount;
        address userAddress;
        address contractAddress;
        uint256 betType; //
        uint256 currentPrice;
        uint256 timestamp;
        uint256 betTimePeriod;
        uint16 checkpointPercent;
        uint16 rewardFactor;
        uint16 riskFactor;
        uint256 adminCommissionFee;
        uint16 status; // 0->bet active, 1->bet won, 2->bet lost, 3-> withdraw before result
    }
}

File 3 of 5: InlineInterface.sol
// SPDX-License-Identifier: UNLICENCED
pragma solidity >=0.6.0 <0.8.0;
pragma abicoder v2;

import "./InlineDatabaseLib.sol";

interface Token{
    function decimals() external view returns(uint256);
    function symbol() external view returns(string memory);
    function totalSupply() external view returns (uint256);
    function balanceOf(address who) external view returns (uint256);
    function transfer(address to, uint256 value) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function transferFrom(address from, address to, uint256 value) external returns (bool);
    function approve(address spender, uint256 value) external returns (bool);
}


interface OracleWrapper{
    function getPrice(string calldata currencySymbol,uint256 oracleType) external view returns (uint256);
}
interface DatabaseContract{
    function transferTokens(address contractAddress,address userAddress,uint256 amount) external;
    function transferFromTokens(address contractAddress,address fromAddress, address toAddress,uint256 amount) external;
    function getTokensStaked(address userAddress) external view returns(uint256);
    function updateTokensStaked(address userAddress, uint256 amount) external;
    function getTokenStakedAmount() external view returns(uint256);
    function updateTokenStakedAmount(uint256 _tokenStakedAmount) external;
    function getBetId() external view returns(uint256);
    function updateBetId(uint256 _userBetId) external;
    function updateBetArray(InlineDatabaseLib.BetInfo memory bObject) external;
    function getBetArray() external view returns(InlineDatabaseLib.BetInfo[] memory);
    function getFindBetInArrayUsingBetIdMapping(uint256 _betid) external view returns(uint256);
    function updateFindBetInArrayUsingBetIdMapping(uint256 _betid, uint256 value) external;
    function updateUserStakedAddress(address _address) external;
    function updateUserStakedAddress(address[] memory _userStakedAddress) external;
    function getUserStakedAddress() external view returns(address[] memory);
    function getDefiCoinsFixedMapping(address _betContractAddress,bool isFlashVault) external view returns(InlineDatabaseLib.DefiCoin memory);
    function getDefiCoinsFlexibleMapping(address _betContractAddress) external view returns(InlineDatabaseLib.DefiCoin memory);
    function getFlexibleDefiCoinArray() external view returns(InlineDatabaseLib.FlexibleInfo[] memory);
    function getFlexibleIndexArray() external view returns(InlineDatabaseLib.FlexibleInfo[] memory);
    function updateBetArrayIndex(InlineDatabaseLib.BetInfo memory bObject, uint256 index) external;
    function updateBetIndexForFixedArray(uint256 _betId, InlineDatabaseLib.IndexCoin memory iCArray) external;
    function updateBetBaseIndexValue(uint256 _betBaseIndexValueFixed) external;
    function getBetBaseIndexValue() external view returns(uint256);
    function updateBetPriceHistoryFixedMapping(uint256 _betId, InlineDatabaseLib.BetPriceHistory memory bPHObj) external;
    function updateBetActualIndexValue(uint256 _betActualIndexValueFixed) external;
    function getBetActualIndexValue() external view returns(uint256);
    function getBetIndexForFixedArray(uint256 _betId) external view returns(InlineDatabaseLib.IndexCoin[] memory);
    function getBetPriceHistoryFixedMapping(uint256 _betId) external view returns(InlineDatabaseLib.BetPriceHistory memory);
    function getXIVTokenContractAddress() external view returns(address);
    function getAllIndexContractAddressArray() external view returns(address[] memory);
    function getDefiCoinIndexMapping(address _ContractAddress) external view returns(InlineDatabaseLib.IndexCoin memory);
    
    function updateBetIndexForFlexibleArray(uint256 _betId, InlineDatabaseLib.IndexCoin memory iCArray) external;
    function getBetIndexForFlexibleArray(uint256 _betId) external view returns(InlineDatabaseLib.IndexCoin[] memory);
    function updateBetPriceHistoryFlexibleMapping(uint256 _betId, InlineDatabaseLib.BetPriceHistory memory bPHObj) external;
    function getBetPriceHistoryFlexibleMapping(uint256 _betId) external view returns(InlineDatabaseLib.BetPriceHistory memory);
    
    function getOracleWrapperContractAddress() external view returns(address);
    function getPlentyOneDayPercentage() external view returns(uint256);
    function getPlentyThreeDayPercentage(uint256 _days) external view returns(uint256);
    function getPlentySevenDayPercentage(uint256 _days) external view returns(uint256);
    function getBetsAccordingToUserAddress(address userAddress) external view returns(uint256[] memory);
    function updateBetAddressesArray(address userAddress, uint256 _betId) external;
    function getRewardGeneratedAmount() external view returns(uint256);
    function updateRewardGeneratedAmount(uint256 _rewardGeneratedAmount) external;
    function addUserAddressUsedForBetting(address userAddress) external;
    function getUserAddressUsedForBetting() external view returns(address[] memory);
    function getFixedDefiCoinArray() external view returns(InlineDatabaseLib.FixedInfo[] memory);
    function getFixedDefiIndexArray() external view returns(InlineDatabaseLib.FixedInfo[] memory);
    function getMaxStakeXIVAmount() external view returns(uint256);
    function getMinStakeXIVAmount() external view returns(uint256);
    function getBetFactorLP() external view returns(uint256);
    function updateActualAmountStakedByUser(address userAddress, uint256 amount) external;
    function getActualAmountStakedByUser(address userAddress) external view returns(uint256);
    function isDaysAvailable(uint256 _days) external view returns(bool);
    function updateExistingBetCheckMapping(address _userAddress,uint256 _betType, address _BetContractAddress,bool status) external;
    function getExistingBetCheckMapping(address _userAddress,uint256 _betType, address _BetContractAddress) external view returns(bool);
    function updateTotalTransactions(uint256 _totalTransactions) external;
    function getTotalTransactions() external view returns(uint256);
    function getFlexibleDefiCoinTimePeriodArray() external view returns(InlineDatabaseLib.TimePeriod[] memory);
    function getFlexibleIndexTimePeriodArray() external view returns(InlineDatabaseLib.TimePeriod[] memory);
    function getMinLPvalue() external view returns(uint256);
    function getLockingPeriodForLPMapping(address userAddress) external view returns(InlineDatabaseLib.LPLockedInfo memory);
    function updateLockingPeriodForLPMapping(address userAddress, uint256 _amountLocked, uint256 _lockedTimeStamp) external;
    function getStakingInfoMapping(address userAddress) external view returns(InlineDatabaseLib.StakingInfo[] memory);
    function updateStakingInfoMapping(address userAddress, InlineDatabaseLib.StakingInfo memory sInfo) external;
    function getInvestmentId() external view returns(uint256);
    function updateInvestmentId(uint256 _investmentId) external;
    function getSlotExecutionId() external view returns(uint256);
    function updateSlotExecutionId(uint256 _slotExecutionId) external;
    function getSlotId() external view returns(uint256);
    function updateSlotId(uint256 _slotId) external;
    function updateIncentiveMapping(uint256 _slotId, InlineDatabaseLib.IncentiveInfo memory iInfo) external;
    function getIncentiveMapping(uint256 _slotId) external view returns(InlineDatabaseLib.IncentiveInfo[] memory);
    function emitBetDetails(uint256  betId, uint256  status, uint256  betEndTime) external;
    function emitLPEvent(uint256 typeOfLP, address userAddress, uint256 amount, uint256 timestamp) external ;
    function updateIsStakeMapping(address userAddress,bool isStake) external;
    function getIsStakeMapping(address userAddress) external view returns(bool);
}

File 4 of 5: Ownable.sol
// SPDX-License-Identifier: UNLICENCED
pragma solidity >=0.6.0 <0.8.0;

contract Ownable {

    address public owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev The Ownable constructor sets the original `owner` of the contract to the sender
     * account.
     */
    constructor(){
        owner = msg.sender;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(msg.sender == owner);
        _;
    }

    /**
     * @dev Allows the current owner to transfer control of the contract to a newOwner.
     * @param newOwner The address to transfer ownership to.
     */
    function transferOwnership(address newOwner) public onlyOwner {
        require(newOwner != address(0));
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
    }
}




File 5 of 5: SafeMath.sol
// SPDX-License-Identifier: MIT

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;
    }
}


Contract Security Audit

Contract ABI

API
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"databaseContractAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"stakeTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"unStakeTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_databaseContractAddress","type":"address"}],"name":"updateDatabaseAddress","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6080604052600280546001600160a01b03191673790e5e60a5b751a30d9210a2b9ce01de17d039a817905534801561003657600080fd5b50600080546001600160a01b031916331790556117f3806100586000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80632a7be99a14610067578063742768661461007c5780637547c7a31461008f578063779afa35146100a25780638da5cb5b146100c0578063f2fde38b146100c8575b600080fd5b61007a61007536600461149e565b6100db565b005b61007a61008a36600461153d565b610114565b61007a61009d36600461153d565b61074b565b6100aa6112c3565b6040516100b7919061156d565b60405180910390f35b6100aa6112d2565b61007a6100d636600461149e565b6112e1565b6000546001600160a01b031633146100f257600080fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6002546040516326a98ff960e21b81526001600160a01b0390911690429081908390639aa63fe49061014a90339060040161156d565b604080518083038186803b15801561016157600080fd5b505afa158015610175573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061019991906114f6565b5111156102d157826102a5836001600160a01b0316639aa63fe4336040518263ffffffff1660e01b81526004016101d0919061156d565b604080518083038186803b1580156101e757600080fd5b505afa1580156101fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061021f91906114f6565b60200151604051632975bbcb60e11b81526001600160a01b038616906352eb77969061024f90339060040161156d565b60206040518083038186803b15801561026757600080fd5b505afa15801561027b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061029f9190611555565b90611366565b10156102cc5760405162461bcd60e51b81526004016102c39061174f565b60405180910390fd5b61036d565b604051632975bbcb60e11b815283906001600160a01b038416906352eb7796906102ff90339060040161156d565b60206040518083038186803b15801561031757600080fd5b505afa15801561032b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034f9190611555565b101561036d5760405162461bcd60e51b81526004016102c39061174f565b816001600160a01b031663a64b6e5f836001600160a01b031663113e6ecd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103b557600080fd5b505afa1580156103c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ed91906114ba565b33866040518463ffffffff1660e01b815260040161040d93929190611640565b600060405180830381600087803b15801561042757600080fd5b505af115801561043b573d6000803e3d6000fd5b50505050816001600160a01b03166308d6707d3361047f86866001600160a01b03166352eb7796336040518263ffffffff1660e01b815260040161024f919061156d565b6040518363ffffffff1660e01b815260040161049c9291906115b6565b600060405180830381600087803b1580156104b657600080fd5b505af11580156104ca573d6000803e3d6000fd5b50506040516343504d3b60e01b81526001600160a01b03851692506343504d3b91506104fa90339060040161156d565b60206040518083038186803b15801561051257600080fd5b505afa158015610526573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054a9190611555565b8311156105b75760405163f091bf5f60e01b81526001600160a01b0383169063f091bf5f906105809033906000906004016115b6565b600060405180830381600087803b15801561059a57600080fd5b505af11580156105ae573d6000803e3d6000fd5b50505050610647565b816001600160a01b031663f091bf5f336105f786866001600160a01b03166343504d3b336040518263ffffffff1660e01b815260040161024f919061156d565b6040518363ffffffff1660e01b81526004016106149291906115b6565b600060405180830381600087803b15801561062e57600080fd5b505af1158015610642573d6000803e3d6000fd5b505050505b816001600160a01b0316636908fd4d61069385856001600160a01b0316636e3721436040518163ffffffff1660e01b815260040160206040518083038186803b15801561026757600080fd5b6040518263ffffffff1660e01b81526004016106af919061179c565b600060405180830381600087803b1580156106c957600080fd5b505af11580156106dd573d6000803e3d6000fd5b5050604051634a5fc61b60e01b81526001600160a01b0385169250634a5fc61b915061071490600190339088908790600401611664565b600060405180830381600087803b15801561072e57600080fd5b505af1158015610742573d6000803e3d6000fd5b50505050505050565b6002546040805163113e6ecd60e01b815290516001600160a01b0390921691600091839163113e6ecd91600480820192602092909190829003018186803b15801561079557600080fd5b505afa1580156107a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107cd91906114ba565b9050816001600160a01b031663b0f2f3b06040518163ffffffff1660e01b815260040160206040518083038186803b15801561080857600080fd5b505afa15801561081c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108409190611555565b83101561085f5760405162461bcd60e51b81526004016102c390611688565b6040516370a0823160e01b815283906001600160a01b038316906370a082319061088d90339060040161156d565b60206040518083038186803b1580156108a557600080fd5b505afa1580156108b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108dd9190611555565b10156108fb5760405162461bcd60e51b81526004016102c3906116bb565b600254604051636eb1769f60e11b815284916001600160a01b038085169263dd62ed3e92610930923392911690600401611581565b60206040518083038186803b15801561094857600080fd5b505afa15801561095c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109809190611555565b101561099e5760405162461bcd60e51b81526004016102c3906116fc565b816001600160a01b031663811b789d836001600160a01b031663113e6ecd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156109e657600080fd5b505afa1580156109fa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1e91906114ba565b6002546040516001600160e01b031960e085901b168152610a52929133916001600160a01b03909116908990600401611616565b600060405180830381600087803b158015610a6c57600080fd5b505af1158015610a80573d6000803e3d6000fd5b50505050600042905060006040518060400160405280856001600160a01b031663df6965f46040518163ffffffff1660e01b815260040160206040518083038186803b158015610acf57600080fd5b505afa158015610ae3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b079190611555565b8152602001869052604051634d18462760e01b81529091506001600160a01b03851690634d18462790610b4090339085906004016115cf565b600060405180830381600087803b158015610b5a57600080fd5b505af1158015610b6e573d6000803e3d6000fd5b50505050836001600160a01b0316636abfe439610bfd6001876001600160a01b031663df6965f46040518163ffffffff1660e01b815260040160206040518083038186803b158015610bbf57600080fd5b505afa158015610bd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf79190611555565b906113af565b6040518263ffffffff1660e01b8152600401610c19919061179c565b600060405180830381600087803b158015610c3357600080fd5b505af1158015610c47573d6000803e3d6000fd5b505060405163341658f360e01b81526001600160a01b038716925063341658f39150610c7790339060040161156d565b60206040518083038186803b158015610c8f57600080fd5b505afa158015610ca3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc791906114d6565b610d8b576040516314c8af8360e01b81526001600160a01b038516906314c8af8390610cf790339060040161156d565b600060405180830381600087803b158015610d1157600080fd5b505af1158015610d25573d6000803e3d6000fd5b50506040516352d5d4b360e01b81526001600160a01b03871692506352d5d4b39150610d5890339060019060040161159b565b600060405180830381600087803b158015610d7257600080fd5b505af1158015610d86573d6000803e3d6000fd5b505050505b836001600160a01b03166308d6707d33610de388886001600160a01b03166352eb7796336040518263ffffffff1660e01b8152600401610dcb919061156d565b60206040518083038186803b158015610bbf57600080fd5b6040518363ffffffff1660e01b8152600401610e009291906115b6565b600060405180830381600087803b158015610e1a57600080fd5b505af1158015610e2e573d6000803e3d6000fd5b50505050836001600160a01b031663f091bf5f33610e7288886001600160a01b03166343504d3b336040518263ffffffff1660e01b8152600401610dcb919061156d565b6040518363ffffffff1660e01b8152600401610e8f9291906115b6565b600060405180830381600087803b158015610ea957600080fd5b505af1158015610ebd573d6000803e3d6000fd5b50505050836001600160a01b0316636908fd4d610f0d87876001600160a01b0316636e3721436040518163ffffffff1660e01b815260040160206040518083038186803b158015610bbf57600080fd5b6040518263ffffffff1660e01b8152600401610f29919061179c565b600060405180830381600087803b158015610f4357600080fd5b505af1158015610f57573d6000803e3d6000fd5b50505050836001600160a01b0316635522378f610fa787876001600160a01b031663b5c604ff6040518163ffffffff1660e01b815260040160206040518083038186803b158015610bbf57600080fd5b6040518263ffffffff1660e01b8152600401610fc3919061179c565b600060405180830381600087803b158015610fdd57600080fd5b505af1158015610ff1573d6000803e3d6000fd5b50506040516326a98ff960e21b81528492506001600160a01b0387169150639aa63fe49061102390339060040161156d565b604080518083038186803b15801561103a57600080fd5b505afa15801561104e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107291906114f6565b5111156111e857836001600160a01b0316638286cdd53361111288886001600160a01b0316639aa63fe4336040518263ffffffff1660e01b81526004016110b9919061156d565b604080518083038186803b1580156110d057600080fd5b505afa1580156110e4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110891906114f6565b60200151906113af565b6040516326a98ff960e21b81526001600160a01b03891690639aa63fe49061113e90339060040161156d565b604080518083038186803b15801561115557600080fd5b505afa158015611169573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118d91906114f6565b516040516001600160e01b031960e086901b1681526111b1939291906004016115f5565b600060405180830381600087803b1580156111cb57600080fd5b505af11580156111df573d6000803e3d6000fd5b50505050611257565b6001600160a01b038416638286cdd533876112068662278d006113af565b6040518463ffffffff1660e01b8152600401611224939291906115f5565b600060405180830381600087803b15801561123e57600080fd5b505af1158015611252573d6000803e3d6000fd5b505050505b604051634a5fc61b60e01b81526001600160a01b03851690634a5fc61b9061128a9060009033908a908890600401611664565b600060405180830381600087803b1580156112a457600080fd5b505af11580156112b8573d6000803e3d6000fd5b505050505050505050565b6002546001600160a01b031681565b6000546001600160a01b031681565b6000546001600160a01b031633146112f857600080fd5b6001600160a01b03811661130b57600080fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006113a883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611407565b9392505050565b6000828201838110156113a8576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b600081848411156114965760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561145b578181015183820152602001611443565b50505050905090810190601f1680156114885780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000602082840312156114af578081fd5b81356113a8816117a5565b6000602082840312156114cb578081fd5b81516113a8816117a5565b6000602082840312156114e7578081fd5b815180151581146113a8578182fd5b600060408284031215611507578081fd5b604080519081016001600160401b038111828210171561152357fe5b604052825181526020928301519281019290925250919050565b60006020828403121561154e578081fd5b5035919050565b600060208284031215611566578081fd5b5051919050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039290921682521515602082015260400190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0392909216825280516020808401919091520151604082015260600190565b6001600160a01b039390931683526020830191909152604082015260600190565b6001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b9384526001600160a01b039290921660208401526040830152606082015260800190565b602080825260199082015278283632b0b9b29032b73a32b91036b7b9329030b6b7bab73a1760391b604082015260600190565b60208082526021908201527f596f7520646f6e2774206861766520656e6f756768205849562062616c616e636040820152606560f81b606082015260800190565b60208082526033908201527f506c6561736520616c6c6f7720736d61727420636f6e747261637420746f20736040820152723832b7321037b7103cb7bab9103132b430b63360691b606082015260800190565b6020808252602d908201527f596f752063616e206e6f742072657472697665204c5020746f6b656e2077697460408201526c1a081d1a1a5cc8185b5bdd5b9d609a1b606082015260800190565b90815260200190565b6001600160a01b03811681146117ba57600080fd5b5056fea2646970667358221220ef8f2520388a09482e7bd98c90b9819492045d2ce87a2d85d30127ba4d6065fd64736f6c63430007060033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100625760003560e01c80632a7be99a14610067578063742768661461007c5780637547c7a31461008f578063779afa35146100a25780638da5cb5b146100c0578063f2fde38b146100c8575b600080fd5b61007a61007536600461149e565b6100db565b005b61007a61008a36600461153d565b610114565b61007a61009d36600461153d565b61074b565b6100aa6112c3565b6040516100b7919061156d565b60405180910390f35b6100aa6112d2565b61007a6100d636600461149e565b6112e1565b6000546001600160a01b031633146100f257600080fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6002546040516326a98ff960e21b81526001600160a01b0390911690429081908390639aa63fe49061014a90339060040161156d565b604080518083038186803b15801561016157600080fd5b505afa158015610175573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061019991906114f6565b5111156102d157826102a5836001600160a01b0316639aa63fe4336040518263ffffffff1660e01b81526004016101d0919061156d565b604080518083038186803b1580156101e757600080fd5b505afa1580156101fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061021f91906114f6565b60200151604051632975bbcb60e11b81526001600160a01b038616906352eb77969061024f90339060040161156d565b60206040518083038186803b15801561026757600080fd5b505afa15801561027b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061029f9190611555565b90611366565b10156102cc5760405162461bcd60e51b81526004016102c39061174f565b60405180910390fd5b61036d565b604051632975bbcb60e11b815283906001600160a01b038416906352eb7796906102ff90339060040161156d565b60206040518083038186803b15801561031757600080fd5b505afa15801561032b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034f9190611555565b101561036d5760405162461bcd60e51b81526004016102c39061174f565b816001600160a01b031663a64b6e5f836001600160a01b031663113e6ecd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103b557600080fd5b505afa1580156103c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ed91906114ba565b33866040518463ffffffff1660e01b815260040161040d93929190611640565b600060405180830381600087803b15801561042757600080fd5b505af115801561043b573d6000803e3d6000fd5b50505050816001600160a01b03166308d6707d3361047f86866001600160a01b03166352eb7796336040518263ffffffff1660e01b815260040161024f919061156d565b6040518363ffffffff1660e01b815260040161049c9291906115b6565b600060405180830381600087803b1580156104b657600080fd5b505af11580156104ca573d6000803e3d6000fd5b50506040516343504d3b60e01b81526001600160a01b03851692506343504d3b91506104fa90339060040161156d565b60206040518083038186803b15801561051257600080fd5b505afa158015610526573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054a9190611555565b8311156105b75760405163f091bf5f60e01b81526001600160a01b0383169063f091bf5f906105809033906000906004016115b6565b600060405180830381600087803b15801561059a57600080fd5b505af11580156105ae573d6000803e3d6000fd5b50505050610647565b816001600160a01b031663f091bf5f336105f786866001600160a01b03166343504d3b336040518263ffffffff1660e01b815260040161024f919061156d565b6040518363ffffffff1660e01b81526004016106149291906115b6565b600060405180830381600087803b15801561062e57600080fd5b505af1158015610642573d6000803e3d6000fd5b505050505b816001600160a01b0316636908fd4d61069385856001600160a01b0316636e3721436040518163ffffffff1660e01b815260040160206040518083038186803b15801561026757600080fd5b6040518263ffffffff1660e01b81526004016106af919061179c565b600060405180830381600087803b1580156106c957600080fd5b505af11580156106dd573d6000803e3d6000fd5b5050604051634a5fc61b60e01b81526001600160a01b0385169250634a5fc61b915061071490600190339088908790600401611664565b600060405180830381600087803b15801561072e57600080fd5b505af1158015610742573d6000803e3d6000fd5b50505050505050565b6002546040805163113e6ecd60e01b815290516001600160a01b0390921691600091839163113e6ecd91600480820192602092909190829003018186803b15801561079557600080fd5b505afa1580156107a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107cd91906114ba565b9050816001600160a01b031663b0f2f3b06040518163ffffffff1660e01b815260040160206040518083038186803b15801561080857600080fd5b505afa15801561081c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108409190611555565b83101561085f5760405162461bcd60e51b81526004016102c390611688565b6040516370a0823160e01b815283906001600160a01b038316906370a082319061088d90339060040161156d565b60206040518083038186803b1580156108a557600080fd5b505afa1580156108b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108dd9190611555565b10156108fb5760405162461bcd60e51b81526004016102c3906116bb565b600254604051636eb1769f60e11b815284916001600160a01b038085169263dd62ed3e92610930923392911690600401611581565b60206040518083038186803b15801561094857600080fd5b505afa15801561095c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109809190611555565b101561099e5760405162461bcd60e51b81526004016102c3906116fc565b816001600160a01b031663811b789d836001600160a01b031663113e6ecd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156109e657600080fd5b505afa1580156109fa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1e91906114ba565b6002546040516001600160e01b031960e085901b168152610a52929133916001600160a01b03909116908990600401611616565b600060405180830381600087803b158015610a6c57600080fd5b505af1158015610a80573d6000803e3d6000fd5b50505050600042905060006040518060400160405280856001600160a01b031663df6965f46040518163ffffffff1660e01b815260040160206040518083038186803b158015610acf57600080fd5b505afa158015610ae3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b079190611555565b8152602001869052604051634d18462760e01b81529091506001600160a01b03851690634d18462790610b4090339085906004016115cf565b600060405180830381600087803b158015610b5a57600080fd5b505af1158015610b6e573d6000803e3d6000fd5b50505050836001600160a01b0316636abfe439610bfd6001876001600160a01b031663df6965f46040518163ffffffff1660e01b815260040160206040518083038186803b158015610bbf57600080fd5b505afa158015610bd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf79190611555565b906113af565b6040518263ffffffff1660e01b8152600401610c19919061179c565b600060405180830381600087803b158015610c3357600080fd5b505af1158015610c47573d6000803e3d6000fd5b505060405163341658f360e01b81526001600160a01b038716925063341658f39150610c7790339060040161156d565b60206040518083038186803b158015610c8f57600080fd5b505afa158015610ca3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc791906114d6565b610d8b576040516314c8af8360e01b81526001600160a01b038516906314c8af8390610cf790339060040161156d565b600060405180830381600087803b158015610d1157600080fd5b505af1158015610d25573d6000803e3d6000fd5b50506040516352d5d4b360e01b81526001600160a01b03871692506352d5d4b39150610d5890339060019060040161159b565b600060405180830381600087803b158015610d7257600080fd5b505af1158015610d86573d6000803e3d6000fd5b505050505b836001600160a01b03166308d6707d33610de388886001600160a01b03166352eb7796336040518263ffffffff1660e01b8152600401610dcb919061156d565b60206040518083038186803b158015610bbf57600080fd5b6040518363ffffffff1660e01b8152600401610e009291906115b6565b600060405180830381600087803b158015610e1a57600080fd5b505af1158015610e2e573d6000803e3d6000fd5b50505050836001600160a01b031663f091bf5f33610e7288886001600160a01b03166343504d3b336040518263ffffffff1660e01b8152600401610dcb919061156d565b6040518363ffffffff1660e01b8152600401610e8f9291906115b6565b600060405180830381600087803b158015610ea957600080fd5b505af1158015610ebd573d6000803e3d6000fd5b50505050836001600160a01b0316636908fd4d610f0d87876001600160a01b0316636e3721436040518163ffffffff1660e01b815260040160206040518083038186803b158015610bbf57600080fd5b6040518263ffffffff1660e01b8152600401610f29919061179c565b600060405180830381600087803b158015610f4357600080fd5b505af1158015610f57573d6000803e3d6000fd5b50505050836001600160a01b0316635522378f610fa787876001600160a01b031663b5c604ff6040518163ffffffff1660e01b815260040160206040518083038186803b158015610bbf57600080fd5b6040518263ffffffff1660e01b8152600401610fc3919061179c565b600060405180830381600087803b158015610fdd57600080fd5b505af1158015610ff1573d6000803e3d6000fd5b50506040516326a98ff960e21b81528492506001600160a01b0387169150639aa63fe49061102390339060040161156d565b604080518083038186803b15801561103a57600080fd5b505afa15801561104e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107291906114f6565b5111156111e857836001600160a01b0316638286cdd53361111288886001600160a01b0316639aa63fe4336040518263ffffffff1660e01b81526004016110b9919061156d565b604080518083038186803b1580156110d057600080fd5b505afa1580156110e4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110891906114f6565b60200151906113af565b6040516326a98ff960e21b81526001600160a01b03891690639aa63fe49061113e90339060040161156d565b604080518083038186803b15801561115557600080fd5b505afa158015611169573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118d91906114f6565b516040516001600160e01b031960e086901b1681526111b1939291906004016115f5565b600060405180830381600087803b1580156111cb57600080fd5b505af11580156111df573d6000803e3d6000fd5b50505050611257565b6001600160a01b038416638286cdd533876112068662278d006113af565b6040518463ffffffff1660e01b8152600401611224939291906115f5565b600060405180830381600087803b15801561123e57600080fd5b505af1158015611252573d6000803e3d6000fd5b505050505b604051634a5fc61b60e01b81526001600160a01b03851690634a5fc61b9061128a9060009033908a908890600401611664565b600060405180830381600087803b1580156112a457600080fd5b505af11580156112b8573d6000803e3d6000fd5b505050505050505050565b6002546001600160a01b031681565b6000546001600160a01b031681565b6000546001600160a01b031633146112f857600080fd5b6001600160a01b03811661130b57600080fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006113a883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611407565b9392505050565b6000828201838110156113a8576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b600081848411156114965760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561145b578181015183820152602001611443565b50505050905090810190601f1680156114885780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000602082840312156114af578081fd5b81356113a8816117a5565b6000602082840312156114cb578081fd5b81516113a8816117a5565b6000602082840312156114e7578081fd5b815180151581146113a8578182fd5b600060408284031215611507578081fd5b604080519081016001600160401b038111828210171561152357fe5b604052825181526020928301519281019290925250919050565b60006020828403121561154e578081fd5b5035919050565b600060208284031215611566578081fd5b5051919050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039290921682521515602082015260400190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0392909216825280516020808401919091520151604082015260600190565b6001600160a01b039390931683526020830191909152604082015260600190565b6001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b9384526001600160a01b039290921660208401526040830152606082015260800190565b602080825260199082015278283632b0b9b29032b73a32b91036b7b9329030b6b7bab73a1760391b604082015260600190565b60208082526021908201527f596f7520646f6e2774206861766520656e6f756768205849562062616c616e636040820152606560f81b606082015260800190565b60208082526033908201527f506c6561736520616c6c6f7720736d61727420636f6e747261637420746f20736040820152723832b7321037b7103cb7bab9103132b430b63360691b606082015260800190565b6020808252602d908201527f596f752063616e206e6f742072657472697665204c5020746f6b656e2077697460408201526c1a081d1a1a5cc8185b5bdd5b9d609a1b606082015260800190565b90815260200190565b6001600160a01b03811681146117ba57600080fd5b5056fea2646970667358221220ef8f2520388a09482e7bd98c90b9819492045d2ce87a2d85d30127ba4d6065fd64736f6c63430007060033

Deployed Bytecode Sourcemap

175:3924:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3944:148;;;;;;:::i;:::-;;:::i;:::-;;2684:1250;;;;;;:::i;:::-;;:::i;424:2254::-;;;;;;:::i;:::-;;:::i;276:81::-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;96:20:3;;;:::i;721:188::-;;;;;;:::i;:::-;;:::i;3944:148:2:-;526:5:3;;-1:-1:-1;;;;;526:5:3;512:10;:19;504:28;;;;;;4037:23:2::1;:48:::0;;-1:-1:-1;;;;;;4037:48:2::1;-1:-1:-1::0;;;;;4037:48:2;;;::::1;::::0;;;::::1;::::0;;3944:148::o;2684:1250::-;2785:23;;2872:50;;-1:-1:-1;;;2872:50:2;;-1:-1:-1;;;;;2785:23:2;;;;2844:15;;;;2785:23;;2872:38;;:50;;2911:10;;2872:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:66;:83;2869:418;;;3088:6;2978:106;3020:9;-1:-1:-1;;;;;3020:38:2;;3059:10;3020:50;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:63;;;2978:37;;-1:-1:-1;;;2978:37:2;;-1:-1:-1;;;;;2978:25:2;;;;;:37;;3004:10;;2978:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:41;;:106::i;:::-;:116;;2970:174;;;;-1:-1:-1;;;2970:174:2;;;;;;;:::i;:::-;;;;;;;;;2869:418;;;3181:37;;-1:-1:-1;;;3181:37:2;;3220:6;;-1:-1:-1;;;;;3181:25:2;;;;;:37;;3207:10;;3181:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45;;3173:103;;;;-1:-1:-1;;;3173:103:2;;;;;;;:::i;:::-;3296:9;-1:-1:-1;;;;;3296:24:2;;3321:9;-1:-1:-1;;;;;3321:36:2;;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3360:10;3371:6;3296:82;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3388:9;-1:-1:-1;;;;;3388:28:2;;3417:10;3428:49;3470:6;3428:9;-1:-1:-1;;;;;3428:25:2;;3454:10;3428:37;;;;;;;;;;;;;;;:::i;:49::-;3388:90;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3498:49:2;;-1:-1:-1;;;3498:49:2;;-1:-1:-1;;;;;3498:37:2;;;-1:-1:-1;3498:37:2;;-1:-1:-1;3498:49:2;;3536:10;;3498:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3491:6;:56;3488:282;;;3562:54;;-1:-1:-1;;;3562:54:2;;-1:-1:-1;;;;;3562:40:2;;;;;:54;;3603:10;;3614:1;;3562:54;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3488:282;;;3645:9;-1:-1:-1;;;;;3645:40:2;;3686:10;3697:61;3751:6;3697:9;-1:-1:-1;;;;;3697:37:2;;3735:10;3697:49;;;;;;;;;;;;;;;:::i;:61::-;3645:114;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3488:282;3779:9;-1:-1:-1;;;;;3779:33:2;;3813:44;3850:6;3813:9;-1:-1:-1;;;;;3813:30:2;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:44;3779:79;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3868:59:2;;-1:-1:-1;;;3868:59:2;;-1:-1:-1;;;;;3868:21:2;;;-1:-1:-1;3868:21:2;;-1:-1:-1;3868:59:2;;3890:1;;3892:10;;3903:6;;3910:16;;3868:59;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2684:1250;;;:::o;424:2254::-;523:23;;580:38;;;-1:-1:-1;;;580:38:2;;;;-1:-1:-1;;;;;523:23:2;;;;479:26;;523:23;;580:36;;:38;;;;;;;;;;;;;;;523:23;580:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;557:62;;645:9;-1:-1:-1;;;;;645:23:2;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;637:6;:33;;629:70;;;;-1:-1:-1;;;629:70:2;;;;;;;:::i;:::-;753:30;;-1:-1:-1;;;753:30:2;;787:6;;-1:-1:-1;;;;;753:18:2;;;;;:30;;772:10;;753:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:40;;745:86;;;;-1:-1:-1;;;745:86:2;;;;;;;:::i;:::-;926:23;;896:54;;-1:-1:-1;;;896:54:2;;954:6;;-1:-1:-1;;;;;896:18:2;;;;;;:54;;915:10;;926:23;;;896:54;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:64;;888:137;;;;-1:-1:-1;;;888:137:2;;;;;;;:::i;:::-;1035:9;-1:-1:-1;;;;;1035:28:2;;1064:9;-1:-1:-1;;;;;1064:36:2;;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1114:23;;1035:110;;-1:-1:-1;;;;;;1035:110:2;;;;;;;;;;1103:10;;-1:-1:-1;;;;;1114:23:2;;;;1138:6;;1035:110;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1164:24;1189:15;1164:40;;1214:42;1258:127;;;;;;;;1315:9;-1:-1:-1;;;;;1315:25:2;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1258:127;;;;;;;1395:52;;-1:-1:-1;;;1395:52:2;;1214:171;;-1:-1:-1;;;;;;1395:34:2;;;;;:52;;1430:10;;1214:171;;1395:52;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1457:9;-1:-1:-1;;;;;1457:28:2;;1486:34;1518:1;1486:9;-1:-1:-1;;;;;1486:25:2;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:31;;:34::i;:::-;1457:64;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1535:39:2;;-1:-1:-1;;;1535:39:2;;-1:-1:-1;;;;;1535:27:2;;;-1:-1:-1;1535:27:2;;-1:-1:-1;1535:39:2;;1563:10;;1535:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1531:175;;1589:45;;-1:-1:-1;;;1589:45:2;;-1:-1:-1;;;;;1589:33:2;;;;;:45;;1623:10;;1589:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1648:47:2;;-1:-1:-1;;;1648:47:2;;-1:-1:-1;;;;;1648:30:2;;;-1:-1:-1;1648:30:2;;-1:-1:-1;1648:47:2;;1679:10;;1690:4;;1648:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1531:175;1715:9;-1:-1:-1;;;;;1715:28:2;;1744:10;1755:49;1797:6;1755:9;-1:-1:-1;;;;;1755:25:2;;1781:10;1755:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:49;1715:90;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1815:9;-1:-1:-1;;;;;1815:40:2;;1856:10;1867:61;1921:6;1867:9;-1:-1:-1;;;;;1867:37:2;;1905:10;1867:49;;;;;;;;;;;;;;;:::i;:61::-;1815:114;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1939:9;-1:-1:-1;;;;;1939:33:2;;1973:44;2010:6;1973:9;-1:-1:-1;;;;;1973:30:2;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:44;1939:79;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2028:9;-1:-1:-1;;;;;2028:33:2;;2062:44;2099:6;2062:9;-1:-1:-1;;;;;2062:30:2;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:44;2028:79;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2120:50:2;;-1:-1:-1;;;2120:50:2;;2187:16;;-1:-1:-1;;;;;;2120:38:2;;;-1:-1:-1;2120:38:2;;:50;;2159:10;;2120:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:66;:83;2117:486;;;2218:9;-1:-1:-1;;;;;2218:41:2;;2260:10;2271:77;2341:6;2272:9;-1:-1:-1;;;;;2272:38:2;;2311:10;2272:50;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:63;;;;2271:69;:77::i;:::-;2406:50;;-1:-1:-1;;;2406:50:2;;-1:-1:-1;;;;;2406:38:2;;;;;:50;;2445:10;;2406:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:66;2218:255;;-1:-1:-1;;;;;;2218:255:2;;;;;;;;;;;2406:66;2218:255;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2117:486;;;-1:-1:-1;;;;;2502:41:2;;;2544:10;2555:6;2562:29;:16;2583:7;2562:20;:29::i;:::-;2502:90;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2117:486;2612:59;;-1:-1:-1;;;2612:59:2;;-1:-1:-1;;;;;2612:21:2;;;;;:59;;2634:1;;2636:10;;2647:6;;2654:16;;2612:59;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;424:2254;;;;;:::o;276:81::-;;;-1:-1:-1;;;;;276:81:2;;:::o;96:20:3:-;;;-1:-1:-1;;;;;96:20:3;;:::o;721:188::-;526:5;;-1:-1:-1;;;;;526:5:3;512:10;:19;504:28;;;;;;-1:-1:-1;;;;;801:22:3;::::1;793:31;;;::::0;::::1;;860:5;::::0;;839:37:::1;::::0;-1:-1:-1;;;;;839:37:3;;::::1;::::0;860:5;::::1;::::0;839:37:::1;::::0;::::1;886:5;:16:::0;;-1:-1:-1;;;;;;886:16:3::1;-1:-1:-1::0;;;;;886:16:3;;;::::1;::::0;;;::::1;::::0;;721:188::o;1329:134:4:-;1387:7;1413:43;1417:1;1420;1413:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1406:50;1329:134;-1:-1:-1;;;1329:134:4:o;882:176::-;940:7;971:5;;;994:6;;;;986:46;;;;;-1:-1:-1;;;986:46:4;;;;;;;;;;;;-1:-1:-1;;;986:46:4;;;;;;;;;;;;;;1754:187;1840:7;1875:12;1867:6;;;;1859:29;;;;-1:-1:-1;;;1859:29:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1910:5:4;;;1754:187::o;14:259:5:-;;126:2;114:9;105:7;101:23;97:32;94:2;;;147:6;139;132:22;94:2;191:9;178:23;210:33;237:5;210:33;:::i;278:263::-;;401:2;389:9;380:7;376:23;372:32;369:2;;;422:6;414;407:22;369:2;459:9;453:16;478:33;505:5;478:33;:::i;546:297::-;;666:2;654:9;645:7;641:23;637:32;634:2;;;687:6;679;672:22;634:2;724:9;718:16;777:5;770:13;763:21;756:5;753:32;743:2;;804:6;796;789:22;848:505;;999:2;987:9;978:7;974:23;970:32;967:2;;;1020:6;1012;1005:22;967:2;1058;1052:9;;;1088:15;;-1:-1:-1;;;;;1118:34:5;;1154:22;;;1115:62;1112:2;;;1180:9;1112:2;1207;1200:22;1246:16;;1231:32;;1317:2;1302:18;;;1296:25;1279:15;;;1272:50;;;;-1:-1:-1;1238:6:5;957:396;-1:-1:-1;957:396:5:o;1358:190::-;;1470:2;1458:9;1449:7;1445:23;1441:32;1438:2;;;1491:6;1483;1476:22;1438:2;-1:-1:-1;1519:23:5;;1428:120;-1:-1:-1;1428:120:5:o;1553:194::-;;1676:2;1664:9;1655:7;1651:23;1647:32;1644:2;;;1697:6;1689;1682:22;1644:2;-1:-1:-1;1725:16:5;;1634:113;-1:-1:-1;1634:113:5:o;1752:203::-;-1:-1:-1;;;;;1916:32:5;;;;1898:51;;1886:2;1871:18;;1853:102::o;2176:312::-;-1:-1:-1;;;;;2414:15:5;;;2396:34;;2466:15;;2461:2;2446:18;;2439:43;2346:2;2331:18;;2313:175::o;2493:292::-;-1:-1:-1;;;;;2687:32:5;;;;2669:51;;2763:14;2756:22;2751:2;2736:18;;2729:50;2657:2;2642:18;;2624:161::o;2790:290::-;-1:-1:-1;;;;;2998:32:5;;;;2980:51;;3062:2;3047:18;;3040:34;2968:2;2953:18;;2935:145::o;3085:402::-;-1:-1:-1;;;;;3339:32:5;;;;3321:51;;3408:13;;3403:2;3388:18;;;3381:41;;;;3464:15;3458:22;3453:2;3438:18;;3431:50;3309:2;3294:18;;3276:211::o;3779:353::-;-1:-1:-1;;;;;4007:32:5;;;;3989:51;;4071:2;4056:18;;4049:34;;;;4114:2;4099:18;;4092:34;3977:2;3962:18;;3944:188::o;4137:464::-;-1:-1:-1;;;;;4432:15:5;;;4414:34;;4484:15;;;4479:2;4464:18;;4457:43;4536:15;;4531:2;4516:18;;4509:43;4583:2;4568:18;;4561:34;;;;4363:3;4348:19;;4330:271::o;4606:383::-;-1:-1:-1;;;;;4872:15:5;;;4854:34;;4924:15;;;;4919:2;4904:18;;4897:43;4971:2;4956:18;;4949:34;;;;4804:2;4789:18;;4771:218::o;4994:433::-;5241:25;;;-1:-1:-1;;;;;5302:32:5;;;;5297:2;5282:18;;5275:60;5366:2;5351:18;;5344:34;5409:2;5394:18;;5387:34;5228:3;5213:19;;5195:232::o;5870:349::-;6072:2;6054:21;;;6111:2;6091:18;;;6084:30;-1:-1:-1;;;6145:2:5;6130:18;;6123:55;6210:2;6195:18;;6044:175::o;6224:397::-;6426:2;6408:21;;;6465:2;6445:18;;;6438:30;6504:34;6499:2;6484:18;;6477:62;-1:-1:-1;;;6570:2:5;6555:18;;6548:31;6611:3;6596:19;;6398:223::o;6626:415::-;6828:2;6810:21;;;6867:2;6847:18;;;6840:30;6906:34;6901:2;6886:18;;6879:62;-1:-1:-1;;;6972:2:5;6957:18;;6950:49;7031:3;7016:19;;6800:241::o;7046:409::-;7248:2;7230:21;;;7287:2;7267:18;;;7260:30;7326:34;7321:2;7306:18;;7299:62;-1:-1:-1;;;7392:2:5;7377:18;;7370:43;7445:3;7430:19;;7220:235::o;7460:177::-;7606:25;;;7594:2;7579:18;;7561:76::o;7642:133::-;-1:-1:-1;;;;;7719:31:5;;7709:42;;7699:2;;7765:1;7762;7755:12;7699:2;7689:86;:::o

Swarm Source

ipfs://ef8f2520388a09482e7bd98c90b9819492045d2ce87a2d85d30127ba4d6065fd

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
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.