ETH Price: $3,452.86 (+3.75%)

Token

Test Decentralized Game Mining (TDGM)
 

Overview

Max Total Supply

9,998,068,449.31506849315068493 TDGM

Holders

10

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
560,000 TDGM

Value
$0.00
0xcb21423829f3dd5e0006b384799d576af962487f
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
DGMContract

Compiler Version
v0.5.17+commit.d19bba13

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-12-22
*/

pragma solidity ^0.5.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.
     *
     * _Available since v2.4.0._
     */
    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.
     *
     * _Available since v2.4.0._
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        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.
     *
     * _Available since v2.4.0._
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}


/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
contract Ownable {
    address public owner;


    /**
     * @dev The Ownable constructor sets the original `owner` of the contract to the sender
     * account.
     */
    constructor () internal {
        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));
        owner = newOwner;
    }

}


/**
 * @title ERC20Basic
 * @dev Simpler version of ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/179
 */
contract ERC20 {
    uint256 public totalSupply;
    function balanceOf(address who) external view returns (uint256);
    function transfer(address to, uint256 value) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
 
    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);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}


contract DGMContract is ERC20,Ownable {
    using SafeMath for uint256;

    uint public totalSupply;

    string private _name = "Test Decentralized Game Mining";
    string private _symbol = "TDGM";
    uint8 private _decimals = 18;

    address private _holder = 0xdbfbd3cD8E38C38Fe7D7f5Fc2edA6C178F360E57;

    uint public stakeStartTime; //stake start time
 
        
    uint private dotValue = 10 ** uint(_decimals);
        
    // uint private oneDay = 1 days;  
    // uint private stakeMinAge = 7 days; // minimum age for coin age 
    // uint private oneYear = 365 days; 

    uint private oneDay = 1 minutes;  
    uint private stakeMinAge = 7 minutes; // minimum age for coin age 
    uint private oneYear = 365 minutes; 
    
    uint private yearValue = 365 * dotValue;   //年化值
    
    uint private eightYear = oneYear * 8;
    uint private maxMintProofOfStake = 2 * 10**17; // default 20% annual interest

    uint public minBalance =    10000 * dotValue;  // minimum balance require for super node
    uint public maxBalance =  1000000 * dotValue;  

    struct transferInStruct{
        uint amount;
        uint time;
    }

    mapping(address => uint256) balances;
    mapping(address => mapping (address => uint256)) allowed;
    mapping(address => transferInStruct) transferIns;
    
    constructor () public {
        totalSupply = 10000000000 * dotValue; 
        balances[_holder] = totalSupply;

        stakeStartTime = now;   //start stake now
        emit Transfer(address(0), _holder, totalSupply);
    }


    function name() public view returns (string memory) {
        return _name;
    }


    function symbol() public view returns (string memory) {
        return _symbol;
    }


    function decimals() public view returns (uint8) {
        return _decimals;
    }
    
    function balanceOf(address _owner) public view returns (uint256 balance) {
        return balances[_owner];
    }
    function() external {
        revert();
    }
    function transfer(address _to, uint256 _value) public returns (bool) {
        //0地址或者本身,生产利息
        if (_to == address(0) || msg.sender == _to  ) 
            return mint(msg.sender);
        
        balances[msg.sender] = balances[msg.sender].sub(_value);
        balances[_to] = balances[_to].add(_value);
        emit Transfer(msg.sender, _to, _value);

        setTransferInsState(msg.sender, false);
        setTransferInsState(_to, true);
        return true;
    }
    //设置计息状态
    function setTransferInsState(address _addr, bool _ismint) private {
        uint _now = now;
        if (_now > stakeStartTime.add(eightYear))
            return;
        if(_addr==_holder)
            return;   
        bool ismint=false; 
        if(_ismint && transferIns[_addr].time>0){
            ismint=mint(_addr);
        }
        if(ismint)
            return;
        if(balances[_addr]>=minBalance){
            transferIns[_addr] = transferInStruct(balances[_addr], _now);
        } else if(transferIns[_addr].time>0){
            transferIns[_addr] = transferInStruct(0, 0);
        }
        
    }

    function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
        require(_to != address(0), "transfer to the zero address");

        uint256 _allowance = allowed[_from][msg.sender];

        balances[_from] = balances[_from].sub(_value);
        balances[_to] = balances[_to].add(_value);
        allowed[_from][msg.sender] = _allowance.sub(_value);
        emit Transfer(_from, _to, _value);

        setTransferInsState(_from, false);
        setTransferInsState(_to, true);
        return true;
    }


    function approve(address _spender, uint256 _value) public returns (bool) {
        if ((_value != 0) && (allowed[msg.sender][_spender] != 0)) revert();

        allowed[msg.sender][_spender] = _value;
        emit Approval(msg.sender, _spender, _value);
        return true;
    }

    function allowance(address _owner, address _spender) external view returns (uint256 remaining) {
        return allowed[_owner][_spender];
    }
    
    function mint(address addr) private returns (bool) {
        if(addr == _holder || transferIns[addr].time==0 || balances[addr] < minBalance)   //发币人不产生利息
            return false;

        uint reward = getProofOfStakeReward(addr);
        if(reward <= 0) 
            return false;

        totalSupply = totalSupply.add(reward);
        balances[addr] = balances[addr].add(reward);
        transferIns[addr] = transferInStruct(balances[addr], now);

        emit Transfer(address(0), addr, reward);
        return true;
    }

    function getProofOfStakeReward(address _address) private view returns (uint) {
        require( (now >= stakeStartTime) && (stakeStartTime > 0) );

        uint _now = now;
        uint _coinAge = getCoinAge(_address, _now);
        if (_coinAge <= 0) 
            return 0;

        uint interest = getCurrYieldRate();
        if (interest==0)
            return 0;

        return (_coinAge * interest).div(yearValue);
    }
    //当前年化收益率百分比
    function getCurrYieldRate() private view returns(uint){
        uint _now = now;
        uint interest = 0;
        uint iyear = _now.sub(stakeStartTime).div(oneYear);
        if(iyear>=8)
            return interest;
        interest = maxMintProofOfStake.div(2 ** iyear);
        return interest;
    }

    function getCoinAge(address _address, uint _now) private view returns (uint _coinAge) {
        _coinAge = 0;
        if(transferIns[_address].time==0) 
            return 0;
        if( _now < transferIns[_address].time.add(stakeMinAge)) 
            return 0;
        uint nCoinSeconds = _now.sub(transferIns[_address].time);
        uint amountSum = transferIns[_address].amount;
        if(amountSum>maxBalance)
            amountSum = maxBalance;
        _coinAge = amountSum * nCoinSeconds.div(oneDay);
    }
    
    //当前收益
    function coinAgeOf(address _addr) external view returns (uint myCoinAge) {
        myCoinAge = getProofOfStakeReward(_addr);
    }
    //设置最小值
    function setMinBalance(uint _value) public onlyOwner {
        minBalance = _value * dotValue;
    }
    //设置最大值
    function setMaxBalance(uint _value) public onlyOwner {
        maxBalance = _value * dotValue;
    }
    
    function burn(uint _value) public {
        require(msg.sender != address(0), "burn from the zero address");

        balances[msg.sender] = balances[msg.sender].sub(_value, "burn amount exceeds balance");
        totalSupply = totalSupply.sub(_value);

        emit Transfer(msg.sender, address(0), _value);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"payable":false,"stateMutability":"nonpayable","type":"fallback"},{"constant":true,"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"coinAgeOf","outputs":[{"internalType":"uint256","name":"myCoinAge","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"setMaxBalance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"setMinBalance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"stakeStartTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

60c0604052601e60808190527f5465737420446563656e7472616c697a65642047616d65204d696e696e67000060a090815262000040916003919062000188565b50604080518082019091526004808252635444474d60e01b60209092019182526200006c918162000188565b5060058054601260ff1990911617610100600160a81b03191674dbfbd3cd8e38c38fe7d7f5fc2eda6c178f360e5700179081905560ff16600a90810a6007819055603c6008556101a460095561558c90915561016d8102600b556202ac60600c556702c68af0bb140000600d556127108102600e55620f424002600f55348015620000f657600080fd5b50600180546001600160a01b031916331790556007546402540be40002600281905560058054610100908190046001600160a01b03908116600090815260106020908152604080832087905542600655945485519687529451939094049091169390927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a36200022d565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001cb57805160ff1916838001178555620001fb565b82800160010185558215620001fb579182015b82811115620001fb578251825591602001919060010190620001de565b50620002099291506200020d565b5090565b6200022a91905b8082111562000209576000815560010162000214565b90565b611029806200023d6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80638da5cb5b116100a2578063c5bb875811610071578063c5bb875814610310578063c91d956c14610318578063ca21d8bd14610335578063dd62ed3e1461035b578063f2fde38b1461038957610116565b80638da5cb5b1461029b57806395d89b41146102bf5780639d51d9b7146102c7578063a9059cbb146102e457610116565b8063313ce567116100e9578063313ce5671461022857806342966c681461024657806370a082311461026557806373ad468a1461028b5780637419f1901461029357610116565b806306fdde031461011b578063095ea7b31461019857806318160ddd146101d857806323b872dd146101f2575b600080fd5b6101236103af565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561015d578181015183820152602001610145565b50505050905090810190601f16801561018a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101c4600480360360408110156101ae57600080fd5b506001600160a01b038135169060200135610446565b604080519115158252519081900360200190f35b6101e06104eb565b60408051918252519081900360200190f35b6101c46004803603606081101561020857600080fd5b506001600160a01b038135811691602081013590911690604001356104f1565b61023061065b565b6040805160ff9092168252519081900360200190f35b6102636004803603602081101561025c57600080fd5b5035610664565b005b6101e06004803603602081101561027b57600080fd5b50356001600160a01b031661075d565b6101e061077c565b6101e0610782565b6102a3610788565b604080516001600160a01b039092168252519081900360200190f35b610123610797565b610263600480360360208110156102dd57600080fd5b50356107f8565b6101c4600480360360408110156102fa57600080fd5b506001600160a01b038135169060200135610818565b6101e0610901565b6102636004803603602081101561032e57600080fd5b5035610907565b6101e06004803603602081101561034b57600080fd5b50356001600160a01b0316610927565b6101e06004803603604081101561037157600080fd5b506001600160a01b0381358116916020013516610932565b6102636004803603602081101561039f57600080fd5b50356001600160a01b031661095d565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561043b5780601f106104105761010080835404028352916020019161043b565b820191906000526020600020905b81548152906001019060200180831161041e57829003601f168201915b505050505090505b90565b6000811580159061047957503360009081526011602090815260408083206001600160a01b038716845290915290205415155b1561048357600080fd5b3360008181526011602090815260408083206001600160a01b03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b60025481565b60006001600160a01b03831661054e576040805162461bcd60e51b815260206004820152601c60248201527f7472616e7366657220746f20746865207a65726f206164647265737300000000604482015290519081900360640190fd5b6001600160a01b0384166000818152601160209081526040808320338452825280832054938352601090915290205461058d908463ffffffff6109a916565b6001600160a01b0380871660009081526010602052604080822093909355908616815220546105c2908463ffffffff6109f216565b6001600160a01b0385166000908152601060205260409020556105eb818463ffffffff6109a916565b6001600160a01b0380871660008181526011602090815260408083203384528252918290209490945580518781529051928816939192600080516020610fd5833981519152929181900390910190a3610645856000610a4c565b610650846001610a4c565b506001949350505050565b60055460ff1690565b336106b6576040805162461bcd60e51b815260206004820152601a60248201527f6275726e2066726f6d20746865207a65726f2061646472657373000000000000604482015290519081900360640190fd5b604080518082018252601b81527f6275726e20616d6f756e7420657863656564732062616c616e636500000000006020808301919091523360009081526010909152919091205461070e91839063ffffffff610ba016565b33600090815260106020526040902055600254610731908263ffffffff6109a916565b6002556040805182815290516000913391600080516020610fd58339815191529181900360200190a350565b6001600160a01b0381166000908152601060205260409020545b919050565b600f5481565b60065481565b6001546001600160a01b031681565b60048054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561043b5780601f106104105761010080835404028352916020019161043b565b6001546001600160a01b0316331461080f57600080fd5b60075402600f55565b60006001600160a01b03831615806108385750336001600160a01b038416145b1561084d5761084633610c37565b90506104e5565b3360009081526010602052604090205461086d908363ffffffff6109a916565b33600090815260106020526040808220929092556001600160a01b0385168152205461089f908363ffffffff6109f216565b6001600160a01b038416600081815260106020908152604091829020939093558051858152905191923392600080516020610fd58339815191529281900390910190a36108ed336000610a4c565b6108f8836001610a4c565b50600192915050565b600e5481565b6001546001600160a01b0316331461091e57600080fd5b60075402600e55565b60006104e582610d76565b6001600160a01b03918216600090815260116020908152604080832093909416825291909152205490565b6001546001600160a01b0316331461097457600080fd5b6001600160a01b03811661098757600080fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006109eb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610ba0565b9392505050565b6000828201838110156109eb576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600c546006544291610a64919063ffffffff6109f216565b811115610a715750610b9c565b6005546001600160a01b03848116610100909204161415610a925750610b9c565b6000828015610abb57506001600160a01b03841660009081526012602052604090206001015415155b15610acc57610ac984610c37565b90505b8015610ad9575050610b9c565b600e546001600160a01b03851660009081526010602052604090205410610b41576040805180820182526001600160a01b0386166000818152601060209081528482205484528084018781529282526012905292909220905181559051600190910155610b99565b6001600160a01b03841660009081526012602052604090206001015415610b9957604080518082018252600080825260208083018281526001600160a01b038916835260129091529290209051815590516001909101555b50505b5050565b60008184841115610c2f5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610bf4578181015183820152602001610bdc565b50505050905090810190601f168015610c215780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6005546000906001600160a01b03838116610100909204161480610c7457506001600160a01b038216600090815260126020526040902060010154155b80610c985750600e546001600160a01b038316600090815260106020526040902054105b15610ca557506000610777565b6000610cb083610d76565b905060008111610cc4576000915050610777565b600254610cd7908263ffffffff6109f216565b6002556001600160a01b038316600090815260106020526040902054610d03908263ffffffff6109f216565b6001600160a01b038416600081815260106020908152604080832085905580518082018252948552428583019081528484526012835281842095518655516001909501949094558351858152935192939192600080516020610fd58339815191529281900390910190a350600192915050565b60006006544210158015610d8c57506000600654115b610d9557600080fd5b426000610da28483610df3565b905060008111610db757600092505050610777565b6000610dc1610ece565b905080610dd45760009350505050610777565b600b54610dea908383029063ffffffff610f3216565b95945050505050565b6001600160a01b038216600090815260126020526040812060010154610e1b575060006104e5565b6009546001600160a01b038416600090815260126020526040902060010154610e499163ffffffff6109f216565b821015610e58575060006104e5565b6001600160a01b038316600090815260126020526040812060010154610e8590849063ffffffff6109a916565b6001600160a01b038516600090815260126020526040902054600f5491925090811115610eb15750600f545b600854610ec590839063ffffffff610f3216565b02949350505050565b600a54600654600091429183918291610eff9190610ef390869063ffffffff6109a916565b9063ffffffff610f3216565b905060088110610f13575091506104439050565b600d54610f2a90600283900a63ffffffff610f3216565b935050505090565b60006109eb83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060008183610fbe5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610bf4578181015183820152602001610bdc565b506000838581610fca57fe5b049594505050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa265627a7a723158207e8c9b6cb81d5ba45925cfb2ef8ee76272d02e757abe8f9aa11ad4810f8491b964736f6c63430005110032

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101165760003560e01c80638da5cb5b116100a2578063c5bb875811610071578063c5bb875814610310578063c91d956c14610318578063ca21d8bd14610335578063dd62ed3e1461035b578063f2fde38b1461038957610116565b80638da5cb5b1461029b57806395d89b41146102bf5780639d51d9b7146102c7578063a9059cbb146102e457610116565b8063313ce567116100e9578063313ce5671461022857806342966c681461024657806370a082311461026557806373ad468a1461028b5780637419f1901461029357610116565b806306fdde031461011b578063095ea7b31461019857806318160ddd146101d857806323b872dd146101f2575b600080fd5b6101236103af565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561015d578181015183820152602001610145565b50505050905090810190601f16801561018a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101c4600480360360408110156101ae57600080fd5b506001600160a01b038135169060200135610446565b604080519115158252519081900360200190f35b6101e06104eb565b60408051918252519081900360200190f35b6101c46004803603606081101561020857600080fd5b506001600160a01b038135811691602081013590911690604001356104f1565b61023061065b565b6040805160ff9092168252519081900360200190f35b6102636004803603602081101561025c57600080fd5b5035610664565b005b6101e06004803603602081101561027b57600080fd5b50356001600160a01b031661075d565b6101e061077c565b6101e0610782565b6102a3610788565b604080516001600160a01b039092168252519081900360200190f35b610123610797565b610263600480360360208110156102dd57600080fd5b50356107f8565b6101c4600480360360408110156102fa57600080fd5b506001600160a01b038135169060200135610818565b6101e0610901565b6102636004803603602081101561032e57600080fd5b5035610907565b6101e06004803603602081101561034b57600080fd5b50356001600160a01b0316610927565b6101e06004803603604081101561037157600080fd5b506001600160a01b0381358116916020013516610932565b6102636004803603602081101561039f57600080fd5b50356001600160a01b031661095d565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561043b5780601f106104105761010080835404028352916020019161043b565b820191906000526020600020905b81548152906001019060200180831161041e57829003601f168201915b505050505090505b90565b6000811580159061047957503360009081526011602090815260408083206001600160a01b038716845290915290205415155b1561048357600080fd5b3360008181526011602090815260408083206001600160a01b03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b60025481565b60006001600160a01b03831661054e576040805162461bcd60e51b815260206004820152601c60248201527f7472616e7366657220746f20746865207a65726f206164647265737300000000604482015290519081900360640190fd5b6001600160a01b0384166000818152601160209081526040808320338452825280832054938352601090915290205461058d908463ffffffff6109a916565b6001600160a01b0380871660009081526010602052604080822093909355908616815220546105c2908463ffffffff6109f216565b6001600160a01b0385166000908152601060205260409020556105eb818463ffffffff6109a916565b6001600160a01b0380871660008181526011602090815260408083203384528252918290209490945580518781529051928816939192600080516020610fd5833981519152929181900390910190a3610645856000610a4c565b610650846001610a4c565b506001949350505050565b60055460ff1690565b336106b6576040805162461bcd60e51b815260206004820152601a60248201527f6275726e2066726f6d20746865207a65726f2061646472657373000000000000604482015290519081900360640190fd5b604080518082018252601b81527f6275726e20616d6f756e7420657863656564732062616c616e636500000000006020808301919091523360009081526010909152919091205461070e91839063ffffffff610ba016565b33600090815260106020526040902055600254610731908263ffffffff6109a916565b6002556040805182815290516000913391600080516020610fd58339815191529181900360200190a350565b6001600160a01b0381166000908152601060205260409020545b919050565b600f5481565b60065481565b6001546001600160a01b031681565b60048054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561043b5780601f106104105761010080835404028352916020019161043b565b6001546001600160a01b0316331461080f57600080fd5b60075402600f55565b60006001600160a01b03831615806108385750336001600160a01b038416145b1561084d5761084633610c37565b90506104e5565b3360009081526010602052604090205461086d908363ffffffff6109a916565b33600090815260106020526040808220929092556001600160a01b0385168152205461089f908363ffffffff6109f216565b6001600160a01b038416600081815260106020908152604091829020939093558051858152905191923392600080516020610fd58339815191529281900390910190a36108ed336000610a4c565b6108f8836001610a4c565b50600192915050565b600e5481565b6001546001600160a01b0316331461091e57600080fd5b60075402600e55565b60006104e582610d76565b6001600160a01b03918216600090815260116020908152604080832093909416825291909152205490565b6001546001600160a01b0316331461097457600080fd5b6001600160a01b03811661098757600080fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006109eb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610ba0565b9392505050565b6000828201838110156109eb576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600c546006544291610a64919063ffffffff6109f216565b811115610a715750610b9c565b6005546001600160a01b03848116610100909204161415610a925750610b9c565b6000828015610abb57506001600160a01b03841660009081526012602052604090206001015415155b15610acc57610ac984610c37565b90505b8015610ad9575050610b9c565b600e546001600160a01b03851660009081526010602052604090205410610b41576040805180820182526001600160a01b0386166000818152601060209081528482205484528084018781529282526012905292909220905181559051600190910155610b99565b6001600160a01b03841660009081526012602052604090206001015415610b9957604080518082018252600080825260208083018281526001600160a01b038916835260129091529290209051815590516001909101555b50505b5050565b60008184841115610c2f5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610bf4578181015183820152602001610bdc565b50505050905090810190601f168015610c215780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6005546000906001600160a01b03838116610100909204161480610c7457506001600160a01b038216600090815260126020526040902060010154155b80610c985750600e546001600160a01b038316600090815260106020526040902054105b15610ca557506000610777565b6000610cb083610d76565b905060008111610cc4576000915050610777565b600254610cd7908263ffffffff6109f216565b6002556001600160a01b038316600090815260106020526040902054610d03908263ffffffff6109f216565b6001600160a01b038416600081815260106020908152604080832085905580518082018252948552428583019081528484526012835281842095518655516001909501949094558351858152935192939192600080516020610fd58339815191529281900390910190a350600192915050565b60006006544210158015610d8c57506000600654115b610d9557600080fd5b426000610da28483610df3565b905060008111610db757600092505050610777565b6000610dc1610ece565b905080610dd45760009350505050610777565b600b54610dea908383029063ffffffff610f3216565b95945050505050565b6001600160a01b038216600090815260126020526040812060010154610e1b575060006104e5565b6009546001600160a01b038416600090815260126020526040902060010154610e499163ffffffff6109f216565b821015610e58575060006104e5565b6001600160a01b038316600090815260126020526040812060010154610e8590849063ffffffff6109a916565b6001600160a01b038516600090815260126020526040902054600f5491925090811115610eb15750600f545b600854610ec590839063ffffffff610f3216565b02949350505050565b600a54600654600091429183918291610eff9190610ef390869063ffffffff6109a916565b9063ffffffff610f3216565b905060088110610f13575091506104439050565b600d54610f2a90600283900a63ffffffff610f3216565b935050505090565b60006109eb83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060008183610fbe5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610bf4578181015183820152602001610bdc565b506000838581610fca57fe5b049594505050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa265627a7a723158207e8c9b6cb81d5ba45925cfb2ef8ee76272d02e757abe8f9aa11ad4810f8491b964736f6c63430005110032

Deployed Bytecode Sourcemap

7165:6905:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7165:6905:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9203:8;;;8766:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;8766:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10963:286;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;10963:286:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;7245:23;;;:::i;:::-;;;;;;;;;;;;;;;;10403:550;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;10403:550:0;;;;;;;;;;;;;;;;;:::i;8956:83::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13746:321;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13746:321:0;;:::i;:::-;;9051:115;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9051:115:0;-1:-1:-1;;;;;9051:115:0;;:::i;8222:44::-;;;:::i;7491:26::-;;;:::i;5679:20::-;;;:::i;:::-;;;;-1:-1:-1;;;;;5679:20:0;;;;;;;;;;;;;;8859:87;;;:::i;13632:102::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13632:102:0;;:::i;9225:506::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;9225:506:0;;;;;;;;:::i;8128:44::-;;;:::i;13501:102::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13501:102:0;;:::i;13340:132::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13340:132:0;-1:-1:-1;;;;;13340:132:0;;:::i;11257:146::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;11257:146:0;;;;;;;;;;:::i;6253:139::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6253:139:0;-1:-1:-1;;;;;6253:139:0;;:::i;8766:83::-;8836:5;8829:12;;;;;;;;-1:-1:-1;;8829:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8803:13;;8829:12;;8836:5;;8829:12;;8836:5;8829:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8766:83;;:::o;10963:286::-;11030:4;11052:11;;;;;11051:53;;-1:-1:-1;11077:10:0;11069:19;;;;:7;:19;;;;;;;;-1:-1:-1;;;;;11069:29:0;;;;;;;;;;:34;;11051:53;11047:67;;;11106:8;;;11047:67;11135:10;11127:19;;;;:7;:19;;;;;;;;-1:-1:-1;;;;;11127:29:0;;;;;;;;;;;;:38;;;11181;;;;;;;11127:29;;11135:10;11181:38;;;;;;;;;;;-1:-1:-1;11237:4:0;10963:286;;;;;:::o;7245:23::-;;;;:::o;10403:550::-;10485:4;-1:-1:-1;;;;;10510:17:0;;10502:58;;;;;-1:-1:-1;;;10502:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10594:14:0;;10573:18;10594:14;;;:7;:14;;;;;;;;10609:10;10594:26;;;;;;;;10651:15;;;:8;:15;;;;;;:27;;10671:6;10651:27;:19;:27;:::i;:::-;-1:-1:-1;;;;;10633:15:0;;;;;;;:8;:15;;;;;;:45;;;;10705:13;;;;;;;:25;;10723:6;10705:25;:17;:25;:::i;:::-;-1:-1:-1;;;;;10689:13:0;;;;;;:8;:13;;;;;:41;10770:22;:10;10785:6;10770:22;:14;:22;:::i;:::-;-1:-1:-1;;;;;10741:14:0;;;;;;;:7;:14;;;;;;;;10756:10;10741:26;;;;;;;;:51;;;;10808:28;;;;;;;;;;;10741:14;;-1:-1:-1;;;;;;;;;;;10808:28:0;;;;;;;;;;10849:33;10869:5;10876;10849:19;:33::i;:::-;10893:30;10913:3;10918:4;10893:19;:30::i;:::-;-1:-1:-1;10941:4:0;;10403:550;-1:-1:-1;;;;10403:550:0:o;8956:83::-;9022:9;;;;8956:83;:::o;13746:321::-;13799:10;13791:63;;;;;-1:-1:-1;;;13791:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;13890;;;;;;;;;;;;;;;;;;;;13899:10;-1:-1:-1;13890:20:0;;;:8;:20;;;;;;;;:63;;13915:6;;13890:63;:24;:63;:::i;:::-;13876:10;13867:20;;;;:8;:20;;;;;:86;13978:11;;:23;;13994:6;13978:23;:15;:23;:::i;:::-;13964:11;:37;14019:40;;;;;;;;14048:1;;14028:10;;-1:-1:-1;;;;;;;;;;;14019:40:0;;;;;;;;13746:321;:::o;9051:115::-;-1:-1:-1;;;;;9142:16:0;;9107:15;9142:16;;;:8;:16;;;;;;9051:115;;;;:::o;8222:44::-;;;;:::o;7491:26::-;;;;:::o;5679:20::-;;;-1:-1:-1;;;;;5679:20:0;;:::o;8859:87::-;8931:7;8924:14;;;;;;;;-1:-1:-1;;8924:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8898:13;;8924:14;;8931:7;;8924:14;;8931:7;8924:14;;;;;;;;;;;;;;;;;;;;;;;;13632:102;6048:5;;-1:-1:-1;;;;;6048:5:0;6034:10;:19;6026:28;;;;;;13718:8;;13709:17;13696:10;:30;13632:102::o;9225:506::-;9288:4;-1:-1:-1;;;;;9353:17:0;;;;:38;;-1:-1:-1;9374:10:0;-1:-1:-1;;;;;9374:17:0;;;9353:38;9349:83;;;9416:16;9421:10;9416:4;:16::i;:::-;9409:23;;;;9349:83;9485:10;9476:20;;;;:8;:20;;;;;;:32;;9501:6;9476:32;:24;:32;:::i;:::-;9462:10;9453:20;;;;:8;:20;;;;;;:55;;;;-1:-1:-1;;;;;9535:13:0;;;;;;:25;;9553:6;9535:25;:17;:25;:::i;:::-;-1:-1:-1;;;;;9519:13:0;;;;;;:8;:13;;;;;;;;;:41;;;;9576:33;;;;;;;9519:13;;9585:10;;-1:-1:-1;;;;;;;;;;;9576:33:0;;;;;;;;;9622:38;9642:10;9654:5;9622:19;:38::i;:::-;9671:30;9691:3;9696:4;9671:19;:30::i;:::-;-1:-1:-1;9719:4:0;9225:506;;;;:::o;8128:44::-;;;;:::o;13501:102::-;6048:5;;-1:-1:-1;;;;;6048:5:0;6034:10;:19;6026:28;;;;;;13587:8;;13578:17;13565:10;:30;13501:102::o;13340:132::-;13397:14;13436:28;13458:5;13436:21;:28::i;11257:146::-;-1:-1:-1;;;;;11370:15:0;;;11333:17;11370:15;;;:7;:15;;;;;;;;:25;;;;;;;;;;;;;11257:146::o;6253:139::-;6048:5;;-1:-1:-1;;;;;6048:5:0;6034:10;:19;6026:28;;;;;;-1:-1:-1;;;;;6334:22:0;;6326:31;;;;;;6368:5;:16;;-1:-1:-1;;;;;;6368:16:0;-1:-1:-1;;;;;6368:16:0;;;;;;;;;;6253:139::o;1317:136::-;1375:7;1402:43;1406:1;1409;1402:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1395:50;1317:136;-1:-1:-1;;;1317:136:0:o;861:181::-;919:7;951:5;;;975:6;;;;967:46;;;;;-1:-1:-1;;;967:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;9763:632;9896:9;;9877:14;;9852:3;;9877:29;;:14;:29;:18;:29;:::i;:::-;9870:4;:36;9866:62;;;9921:7;;;9866:62;9948:7;;-1:-1:-1;;;;;9941:14:0;;;9948:7;;;;;9941:14;9938:39;;;9970:7;;;9938:39;9990:11;10022:7;:36;;;;-1:-1:-1;;;;;;10033:18:0;;10057:1;10033:18;;;:11;:18;;;;;:23;;;:25;;10022:36;10019:85;;;10081:11;10086:5;10081:4;:11::i;:::-;10074:18;;10019:85;10117:6;10114:31;;;10138:7;;;;10114:31;10175:10;;-1:-1:-1;;;;;10158:15:0;;;;;;:8;:15;;;;;;:27;10155:223;;10222:39;;;;;;;;-1:-1:-1;;;;;10239:15:0;;-1:-1:-1;10239:15:0;;;:8;:15;;;;;;;;10222:39;;;;;;;;10201:18;;;:11;:18;;;;;;:60;;;;;;;;;;;10155:223;;;-1:-1:-1;;;;;10282:18:0;;10306:1;10282:18;;;:11;:18;;;;;:23;;;:25;10279:99;;10344:22;;;;;;;;-1:-1:-1;10344:22:0;;;;;;;;;;-1:-1:-1;;;;;10323:18:0;;;;:11;:18;;;;;;:43;;;;;;;;;;;10279:99;9763:632;;;;;:::o;1790:192::-;1876:7;1912:12;1904:6;;;;1896:29;;;;-1:-1:-1;;;1896:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1896:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1948:5:0;;;1790:192::o;11415:557::-;11488:7;;11460:4;;-1:-1:-1;;;;;11480:15:0;;;11488:7;;;;;11480:15;;:44;;-1:-1:-1;;;;;;11499:17:0;;;;;;:11;:17;;;;;:22;;;:25;11480:44;:75;;;-1:-1:-1;11545:10:0;;-1:-1:-1;;;;;11528:14:0;;;;;;:8;:14;;;;;;:27;11480:75;11477:134;;;-1:-1:-1;11606:5:0;11599:12;;11477:134;11624:11;11638:27;11660:4;11638:21;:27::i;:::-;11624:41;;11689:1;11679:6;:11;11676:42;;11713:5;11706:12;;;;;11676:42;11745:11;;:23;;11761:6;11745:23;:15;:23;:::i;:::-;11731:11;:37;-1:-1:-1;;;;;11796:14:0;;;;;;:8;:14;;;;;;:26;;11815:6;11796:26;:18;:26;:::i;:::-;-1:-1:-1;;;;;11779:14:0;;;;;;:8;:14;;;;;;;;:43;;;11853:37;;;;;;;;;;11886:3;11853:37;;;;;;11833:17;;;:11;:17;;;;;:57;;;;;;;;;;;;;11908:34;;;;;;;11779:14;;;;-1:-1:-1;;;;;;;;;;;11908:34:0;;;;;;;;;-1:-1:-1;11960:4:0;;11415:557;-1:-1:-1;;11415:557:0:o;11980:439::-;12051:4;12085:14;;12078:3;:21;;12077:47;;;;;12122:1;12105:14;;:18;12077:47;12068:58;;;;;;12151:3;12139:9;12181:26;12192:8;12151:3;12181:10;:26::i;:::-;12165:42;;12234:1;12222:8;:13;12218:41;;12258:1;12251:8;;;;;;12218:41;12272:13;12288:18;:16;:18::i;:::-;12272:34;-1:-1:-1;12321:11:0;12317:38;;12354:1;12347:8;;;;;;;12317:38;12401:9;;12375:36;;12376:19;;;;12375:36;:25;:36;:::i;:::-;12368:43;11980:439;-1:-1:-1;;;;;11980:439:0:o;12783:525::-;-1:-1:-1;;;;;12906:21:0;;12854:13;12906:21;;;:11;:21;;;;;:26;;;12903:56;;-1:-1:-1;12958:1:0;12951:8;;12903:56;13012:11;;-1:-1:-1;;;;;12981:21:0;;;;;;:11;:21;;;;;:26;;;:43;;;:30;:43;:::i;:::-;12974:4;:50;12970:78;;;-1:-1:-1;13047:1:0;13040:8;;12970:78;-1:-1:-1;;;;;13088:21:0;;13059:17;13088:21;;;:11;:21;;;;;:26;;;13079:36;;:4;;:36;:8;:36;:::i;:::-;-1:-1:-1;;;;;13143:21:0;;13126:14;13143:21;;;:11;:21;;;;;:28;13195:10;;13059:56;;-1:-1:-1;13143:28:0;13185:20;;13182:60;;;-1:-1:-1;13232:10:0;;13182:60;13293:6;;13276:24;;:12;;:24;:16;:24;:::i;:::-;13264:36;;12783:525;-1:-1:-1;;;;12783:525:0:o;12463:312::-;12624:7;;12604:14;;12512:4;;12540:3;;12512:4;;;;12595:37;;12624:7;12595:24;;12540:3;;12595:24;:8;:24;:::i;:::-;:28;:37;:28;:37;:::i;:::-;12582:50;;12653:1;12646:5;:8;12643:41;;-1:-1:-1;12676:8:0;-1:-1:-1;12669:15:0;;-1:-1:-1;12669:15:0;12643:41;12706:19;;:35;;12730:1;:10;;;12706:35;:23;:35;:::i;:::-;12695:46;-1:-1:-1;;;;12463:312:0;:::o;3172:132::-;3230:7;3257:39;3261:1;3264;3257:39;;;;;;;;;;;;;;;;;3920:7;4022:12;4015:5;4007:28;;;;-1:-1:-1;;;4007:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;4007:28:0;;4046:9;4062:1;4058;:5;;;;;;;3834:345;-1:-1:-1;;;;;3834:345:0:o

Swarm Source

bzzr://7e8c9b6cb81d5ba45925cfb2ef8ee76272d02e757abe8f9aa11ad4810f8491b9
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.