ETH Price: $3,626.30 (+4.76%)
 

Overview

Max Total Supply

5,000,000,000 DMOON

Holders

23

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
Bidesk 10
Balance
95,000 DMOON

Value
$0.00
0xcdff68f58470e19c1d77643e864a9d4437754db4
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:
DMOON

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-11-25
*/

pragma solidity ^0.5.0;

library SafeMath {
    /**
    * @dev Multiplies two unsigned integers, reverts on 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-solidity/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b);

        return c;
    }

    /**
    * @dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero.
    */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
    * @dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend).
    */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a);
        uint256 c = a - b;

        return c;
    }

    /**
    * @dev Adds two unsigned integers, reverts on overflow.
    */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a);

        return c;
    }

    /**
    * @dev Divides two unsigned integers and returns the remainder (unsigned integer modulo),
    * reverts when dividing by zero.
    */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b != 0);
        return a % b;
    }
}

library Roles {
    struct Role {
        mapping (address => bool) bearer;
    }

    /**
     * @dev give an account access to this role
     */
    function add(Role storage role, address account) internal {
        require(account != address(0));
        require(!has(role, account));

        role.bearer[account] = true;
    }

    /**
     * @dev remove an account's access to this role
     */
    function remove(Role storage role, address account) internal {
        require(account != address(0));
        require(has(role, account));

        role.bearer[account] = false;
    }

    /**
     * @dev check if an account has this role
     * @return bool
     */
    function has(Role storage role, address account) internal view returns (bool) {
        require(account != address(0));
        return role.bearer[account];
    }
}

contract Ownable {
    address public owner;
    address public newOwner;

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

    constructor() public {
        owner = msg.sender;
        newOwner = address(0);
    }

    modifier onlyOwner() {
        require(msg.sender == owner);
        _;
    }
    modifier onlyNewOwner() {
        require(msg.sender != address(0));
        require(msg.sender == newOwner);
        _;
    }
    
    function isOwner(address account) public view returns (bool) {
        if( account == owner ){
            return true;
        }
        else {
            return false;
        }
    }

    function transferOwnership(address _newOwner) public onlyOwner {
        require(_newOwner != address(0));
        newOwner = _newOwner;
    }

    function acceptOwnership() public onlyNewOwner returns(bool) {
        emit OwnershipTransferred(owner, newOwner);        
        owner = newOwner;
        newOwner = address(0);
    }
}

contract PauserRole is Ownable{
    using Roles for Roles.Role;

    event PauserAdded(address indexed account);
    event PauserRemoved(address indexed account);

    Roles.Role private _pausers;

    constructor () internal {
        _addPauser(msg.sender);
    }

    modifier onlyPauser() {
        require(isPauser(msg.sender)|| isOwner(msg.sender));
        _;
    }

    function isPauser(address account) public view returns (bool) {
        return _pausers.has(account);
    }

    function addPauser(address account) public onlyPauser {
        _addPauser(account);
    }
    
    function removePauser(address account) public onlyOwner {
        _removePauser(account);
    }

    function renouncePauser() public {
        _removePauser(msg.sender);
    }

    function _addPauser(address account) internal {
        _pausers.add(account);
        emit PauserAdded(account);
    }

    function _removePauser(address account) internal {
        _pausers.remove(account);
        emit PauserRemoved(account);
    }
}

contract Pausable is PauserRole {
    event Paused(address account);
    event Unpaused(address account);

    bool private _paused;

    constructor () internal {
        _paused = false;
    }

    /**
     * @return true if the contract is paused, false otherwise.
     */
    function paused() public view returns (bool) {
        return _paused;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is not paused.
     */
    modifier whenNotPaused() {
        require(!_paused);
        _;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is paused.
     */
    modifier whenPaused() {
        require(_paused);
        _;
    }

    /**
     * @dev called by the owner to pause, triggers stopped state
     */
    function pause() public onlyPauser whenNotPaused {
        _paused = true;
        emit Paused(msg.sender);
    }

    /**
     * @dev called by the owner to unpause, returns to normal state
     */
    function unpause() public onlyPauser whenPaused {
        _paused = false;
        emit Unpaused(msg.sender);
    }
}

interface IERC20 {
    function transfer(address to, uint256 value) external returns (bool);

    function approve(address spender, uint256 value) external returns (bool);

    function transferFrom(address from, address to, uint256 value) external returns (bool);

    function totalSupply() external view returns (uint256);

    function balanceOf(address who) external view returns (uint256);

    function allowance(address owner, address spender) external view returns (uint256);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);
}

contract ERC20 is IERC20 {
    using SafeMath for uint256;

    mapping (address => uint256) internal _balances;

    mapping (address => mapping (address => uint256)) internal _allowed;

    uint256 private _totalSupply;

    /**
    * @dev Total number of tokens in existence
    */
    function totalSupply() public view returns (uint256) {
        return _totalSupply;
    }

    /**
    * @dev Gets the balance of the specified address.
    * @param owner The address to query the balance of.
    * @return An uint256 representing the amount owned by the passed address.
    */
    function balanceOf(address owner) public view returns (uint256) {
        return _balances[owner];
    }

    /**
     * @dev Function to check the amount of tokens that an owner allowed to a spender.
     * @param owner address The address which owns the funds.
     * @param spender address The address which will spend the funds.
     * @return A uint256 specifying the amount of tokens still available for the spender.
     */
    function allowance(address owner, address spender) public view returns (uint256) {
        return _allowed[owner][spender];
    }

    /**
    * @dev Transfer token for a specified address
    * @param to The address to transfer to.
    * @param value The amount to be transferred.
    */
    function transfer(address to, uint256 value) public returns (bool) {
        _transfer(msg.sender, to, value);
        return true;
    }

    /**
     * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
     * Beware that changing an allowance with this method brings the risk that someone may use both the old
     * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this
     * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     * @param spender The address which will spend the funds.
     * @param value The amount of tokens to be spent.
     */
    function approve(address spender, uint256 value) public returns (bool) {
        require(spender != address(0));

        _allowed[msg.sender][spender] = value;
        emit Approval(msg.sender, spender, value);
        return true;
    }

    /**
     * @dev Transfer tokens from one address to another.
     * Note that while this function emits an Approval event, this is not required as per the specification,
     * and other compliant implementations may not emit the event.
     * @param from address The address which you want to send tokens from
     * @param to address The address which you want to transfer to
     * @param value uint256 the amount of tokens to be transferred
     */
    function transferFrom(address from, address to, uint256 value) public returns (bool) {
        _allowed[from][msg.sender] = _allowed[from][msg.sender].sub(value);
        _transfer(from, to, value);
        emit Approval(from, msg.sender, _allowed[from][msg.sender]);
        return true;
    }

    /**
     * @dev Increase the amount of tokens that an owner allowed to a spender.
     * approve should be called when allowed_[_spender] == 0. To increment
     * allowed value is better to use this function to avoid 2 calls (and wait until
     * the first transaction is mined)
     * From MonolithDAO Token.sol
     * Emits an Approval event.
     * @param spender The address which will spend the funds.
     * @param addedValue The amount of tokens to increase the allowance by.
     */
    function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
        require(spender != address(0));

        _allowed[msg.sender][spender] = _allowed[msg.sender][spender].add(addedValue);
        emit Approval(msg.sender, spender, _allowed[msg.sender][spender]);
        return true;
    }

    /**
     * @dev Decrease the amount of tokens that an owner allowed to a spender.
     * approve should be called when allowed_[_spender] == 0. To decrement
     * allowed value is better to use this function to avoid 2 calls (and wait until
     * the first transaction is mined)
     * From MonolithDAO Token.sol
     * Emits an Approval event.
     * @param spender The address which will spend the funds.
     * @param subtractedValue The amount of tokens to decrease the allowance by.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {
        require(spender != address(0));

        _allowed[msg.sender][spender] = _allowed[msg.sender][spender].sub(subtractedValue);
        emit Approval(msg.sender, spender, _allowed[msg.sender][spender]);
        return true;
    }

    /**
    * @dev Transfer token for a specified addresses
    * @param from The address to transfer from.
    * @param to The address to transfer to.
    * @param value The amount to be transferred.
    */
    function _transfer(address from, address to, uint256 value) internal {
        require(to != address(0));

        _balances[from] = _balances[from].sub(value);
        _balances[to] = _balances[to].add(value);
        emit Transfer(from, to, value);
    }

    /**
     * @dev Internal function that mints an amount of the token and assigns it to
     * an account. This encapsulates the modification of balances such that the
     * proper events are emitted.
     * @param account The account that will receive the created tokens.
     * @param value The amount that will be created.
     */
    function _mint(address account, uint256 value) internal {
        require(account != address(0));

        _totalSupply = _totalSupply.add(value);
        _balances[account] = _balances[account].add(value);
        emit Transfer(address(0), account, value);
    }

    /**
     * @dev Internal function that burns an amount of the token of a given
     * account.
     * @param account The account whose tokens will be burnt.
     * @param value The amount that will be burnt.
     */
    function _burn(address account, uint256 value) internal {
        require(account != address(0));

        _totalSupply = _totalSupply.sub(value);
        _balances[account] = _balances[account].sub(value);
        emit Transfer(account, address(0), value);
    }

    /**
     * @dev Internal function that burns an amount of the token of a given
     * account, deducting from the sender's allowance for said account. Uses the
     * internal burn function.
     * Emits an Approval event (reflecting the reduced allowance).
     * @param account The account whose tokens will be burnt.
     * @param value The amount that will be burnt.
     */
    function _burnFrom(address account, uint256 value) internal {
        _allowed[account][msg.sender] = _allowed[account][msg.sender].sub(value);
        _burn(account, value);
        emit Approval(account, msg.sender, _allowed[account][msg.sender]);
    }
}



contract ERC20Pausable is ERC20, Pausable {
    function transfer(address to, uint256 value) public whenNotPaused returns (bool) {
        return super.transfer(to, value);
    }

    function transferFrom(address from, address to, uint256 value) public whenNotPaused returns (bool) {
        return super.transferFrom(from, to, value);
    }
    
    /*
     * approve/increaseApprove/decreaseApprove can be set when Paused state
     */
     
    /*
     * function approve(address spender, uint256 value) public whenNotPaused returns (bool) {
     *     return super.approve(spender, value);
     * }
     *
     * function increaseAllowance(address spender, uint addedValue) public whenNotPaused returns (bool success) {
     *     return super.increaseAllowance(spender, addedValue);
     * }
     *
     * function decreaseAllowance(address spender, uint subtractedValue) public whenNotPaused returns (bool success) {
     *     return super.decreaseAllowance(spender, subtractedValue);
     * }
     */
}

contract ERC20Detailed is IERC20 {
    string private _name;
    string private _symbol;
    uint8 private _decimals;

    constructor (string memory name, string memory symbol, uint8 decimals) public {
        _name = name;
        _symbol = symbol;
        _decimals = decimals;
    }

    /**
     * @return the name of the token.
     */
    function name() public view returns (string memory) {
        return _name;
    }

    /**
     * @return the symbol of the token.
     */
    function symbol() public view returns (string memory) {
        return _symbol;
    }

    /**
     * @return the number of decimals of the token.
     */
    function decimals() public view returns (uint8) {
        return _decimals;
    }
}

contract DMOON is ERC20Detailed, ERC20Pausable {
    
    struct LockInfo {
        uint256 _releaseTime;
        uint256 _amount;
    }
    
    address public implementation;

    mapping (address => LockInfo[]) public timelockList;
	mapping (address => bool) public frozenAccount;
    
    event Freeze(address indexed holder);
    event Unfreeze(address indexed holder);
    event Lock(address indexed holder, uint256 value, uint256 releaseTime);
    event Unlock(address indexed holder, uint256 value);

    modifier notFrozen(address _holder) {
        require(!frozenAccount[_holder]);
        _;
    }
    
    constructor() ERC20Detailed("DESERT MOON", "DMOON", 18) public  {
        
        _mint(msg.sender, 5000000000 * (10 ** 18));
    }
    
    function balanceOf(address owner) public view returns (uint256) {
        
        uint256 totalBalance = super.balanceOf(owner);
        if( timelockList[owner].length >0 ){
            for(uint i=0; i<timelockList[owner].length;i++){
                totalBalance = totalBalance.add(timelockList[owner][i]._amount);
            }
        }
        
        return totalBalance;
    }
    
    function transfer(address to, uint256 value) public notFrozen(msg.sender) returns (bool) {
        if (timelockList[msg.sender].length > 0 ) {
            _autoUnlock(msg.sender);            
        }
        return super.transfer(to, value);
    }

    function transferFrom(address from, address to, uint256 value) public notFrozen(from) returns (bool) {
        if (timelockList[from].length > 0) {
            _autoUnlock(from);            
        }
        return super.transferFrom(from, to, value);
    }
    
    function freezeAccount(address holder) public onlyPauser returns (bool) {
        require(!frozenAccount[holder]);
        require(timelockList[holder].length == 0);
        frozenAccount[holder] = true;
        emit Freeze(holder);
        return true;
    }

    function unfreezeAccount(address holder) public onlyPauser returns (bool) {
        require(frozenAccount[holder]);
        frozenAccount[holder] = false;
        emit Unfreeze(holder);
        return true;
    }
    
    function transferWithLock(address holder, uint256 value, uint256 releaseTime) public onlyPauser returns (bool) {
        _transfer(msg.sender, holder, value);
        _lock(holder,value,releaseTime);
        return true;
    }
    
    function unlock(address holder, uint256 idx) public onlyPauser returns (bool) {
        require( timelockList[holder].length > idx, "There is not lock info.");
        _unlock(holder,idx);
        return true;
    }
    
    
    function _lock(address holder, uint256 value, uint256 releaseTime) internal returns(bool) {
        _balances[holder] = _balances[holder].sub(value);
        timelockList[holder].push( LockInfo(releaseTime, value) );
        
        emit Lock(holder, value, releaseTime);
        return true;
    }
    
    function _unlock(address holder, uint256 idx) internal returns(bool) {
        LockInfo storage lockinfo = timelockList[holder][idx];
        uint256 releaseAmount = lockinfo._amount;

        delete timelockList[holder][idx];
        timelockList[holder][idx] = timelockList[holder][timelockList[holder].length.sub(1)];
        timelockList[holder].length -=1;
        
        emit Unlock(holder, releaseAmount);
        _balances[holder] = _balances[holder].add(releaseAmount);
        
        return true;
    }
    
    function _autoUnlock(address holder) internal returns(bool) {
        for(uint256 idx =0; idx < timelockList[holder].length ; idx++ ) {
            if (timelockList[holder][idx]._releaseTime <= now) {
                // If lockupinfo was deleted, loop restart at same position.
                if( _unlock(holder, idx) ) {
                    idx -=1;
                }
            }
        }
        return true;
    }
    
}

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":"holder","type":"address"}],"name":"Freeze","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"holder","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"releaseTime","type":"uint256"}],"name":"Lock","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"PauserAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"PauserRemoved","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"holder","type":"address"}],"name":"Unfreeze","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"holder","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Unlock","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addPauser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","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":"","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":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"freezeAccount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"frozenAccount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isPauser","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"newOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removePauser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renouncePauser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"timelockList","outputs":[{"internalType":"uint256","name":"_releaseTime","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"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"},{"constant":false,"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"releaseTime","type":"uint256"}],"name":"transferWithLock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"unfreezeAccount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"uint256","name":"idx","type":"uint256"}],"name":"unlock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b50604080518082018252600b81526a2222a9a2a92a1026a7a7a760a91b6020808301918252835180850190945260058452642226a7a7a760d91b908401528151919291601291620000669160009190620002a6565b5081516200007c906001906020850190620002a6565b506002805460ff191660ff92909216919091179055505060068054336001600160a01b03199182168117909255600780549091169055620000bd90620000ee565b6009805460ff19169055620000e8336b1027e72f1f128130880000006001600160e01b036200014016565b6200034b565b62000109816008620001fd60201b620015731790919060201c565b6040516001600160a01b038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b6001600160a01b0382166200015457600080fd5b62000170816005546200025660201b62000fdc1790919060201c565b6005556001600160a01b038216600090815260036020908152604090912054620001a591839062000fdc62000256821b17901c565b6001600160a01b03831660008181526003602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6001600160a01b0381166200021157600080fd5b6200022682826001600160e01b036200027016565b156200023157600080fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b6000828201838110156200026957600080fd5b9392505050565b60006001600160a01b0382166200028657600080fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002e957805160ff191683800117855562000319565b8280016001018555821562000319579182015b8281111562000319578251825591602001919060010190620002fc565b50620003279291506200032b565b5090565b6200034891905b8082111562000327576000815560010162000332565b90565b611656806200035b6000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c806379ba509711610104578063a9059cbb116100a2578063dd62ed3e11610071578063dd62ed3e1461056f578063de6baccb1461059d578063f26c159f146105cf578063f2fde38b146105f5576101da565b8063a9059cbb146104d0578063b414d4b6146104fc578063d26c4a7614610522578063d4ee1d9014610567576101da565b80638456cb59116100de5780638456cb591461048c5780638da5cb5b1461049457806395d89b411461049c578063a457c2d7146104a4576101da565b806379ba5097146104325780637eee288d1461043a57806382dc1ec414610466576101da565b80633f4ba83a1161017c5780636b2c0f551161014b5780636b2c0f55146103b85780636ef8d66d146103de57806370a08231146103e6578063788649ea1461040c576101da565b80633f4ba83a1461035c57806346fbf68e146103665780635c60da1b1461038c5780635c975abb146103b0576101da565b806323b872dd116101b857806323b872dd146102b65780632f54bf6e146102ec578063313ce567146103125780633950935114610330576101da565b806306fdde03146101df578063095ea7b31461025c57806318160ddd1461029c575b600080fd5b6101e761061b565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610221578181015183820152602001610209565b50505050905090810190601f16801561024e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102886004803603604081101561027257600080fd5b506001600160a01b0381351690602001356106b2565b604080519115158252519081900360200190f35b6102a461072e565b60408051918252519081900360200190f35b610288600480360360608110156102cc57600080fd5b506001600160a01b03813581169160208101359091169060400135610734565b6102886004803603602081101561030257600080fd5b50356001600160a01b0316610799565b61031a6107c3565b6040805160ff9092168252519081900360200190f35b6102886004803603604081101561034657600080fd5b506001600160a01b0381351690602001356107cc565b61036461087a565b005b6102886004803603602081101561037c57600080fd5b50356001600160a01b03166108e9565b610394610902565b604080516001600160a01b039092168252519081900360200190f35b610288610916565b610364600480360360208110156103ce57600080fd5b50356001600160a01b031661091f565b610364610942565b6102a4600480360360208110156103fc57600080fd5b50356001600160a01b031661094d565b6102886004803603602081101561042257600080fd5b50356001600160a01b03166109f8565b610288610a8e565b6102886004803603604081101561045057600080fd5b506001600160a01b038135169060200135610b18565b6103646004803603602081101561047c57600080fd5b50356001600160a01b0316610bbb565b610364610be5565b610394610c58565b6101e7610c67565b610288600480360360408110156104ba57600080fd5b506001600160a01b038135169060200135610cc7565b610288600480360360408110156104e657600080fd5b506001600160a01b038135169060200135610d10565b6102886004803603602081101561051257600080fd5b50356001600160a01b0316610d62565b61054e6004803603604081101561053857600080fd5b506001600160a01b038135169060200135610d77565b6040805192835260208301919091528051918290030190f35b610394610db0565b6102a46004803603604081101561058557600080fd5b506001600160a01b0381358116916020013516610dbf565b610288600480360360608110156105b357600080fd5b506001600160a01b038135169060208101359060400135610dea565b610288600480360360208110156105e557600080fd5b50356001600160a01b0316610e2e565b6103646004803603602081101561060b57600080fd5b50356001600160a01b0316610eeb565b60008054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106a75780601f1061067c576101008083540402835291602001916106a7565b820191906000526020600020905b81548152906001019060200180831161068a57829003601f168201915b505050505090505b90565b60006001600160a01b0383166106c757600080fd5b3360008181526004602090815260408083206001600160a01b03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600192915050565b60055490565b6001600160a01b0383166000908152600b6020526040812054849060ff161561075c57600080fd5b6001600160a01b0385166000908152600a6020526040902054156107855761078385610f37565b505b610790858585610fbe565b95945050505050565b6006546000906001600160a01b03838116911614156107ba575060016107be565b5060005b919050565b60025460ff1690565b60006001600160a01b0383166107e157600080fd5b3360009081526004602090815260408083206001600160a01b0387168452909152902054610815908363ffffffff610fdc16565b3360008181526004602090815260408083206001600160a01b0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b610883336108e9565b80610892575061089233610799565b61089b57600080fd5b60095460ff166108aa57600080fd5b6009805460ff191690556040805133815290517f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9181900360200190a1565b60006108fc60088363ffffffff610ff516565b92915050565b60095461010090046001600160a01b031681565b60095460ff1690565b6006546001600160a01b0316331461093657600080fd5b61093f8161102a565b50565b61094b3361102a565b565b60008061095983611072565b6001600160a01b0384166000908152600a6020526040902054909150156108fc5760005b6001600160a01b0384166000908152600a60205260409020548110156109f1576001600160a01b0384166000908152600a6020526040902080546109e79190839081106109c657fe5b90600052602060002090600202016001015483610fdc90919063ffffffff16565b915060010161097d565b5092915050565b6000610a03336108e9565b80610a125750610a1233610799565b610a1b57600080fd5b6001600160a01b0382166000908152600b602052604090205460ff16610a4057600080fd5b6001600160a01b0382166000818152600b6020526040808220805460ff19169055517fca5069937e68fd197927055037f59d7c90bf75ac104e6e375539ef480c3ad6ee9190a2506001919050565b600033610a9a57600080fd5b6007546001600160a01b03163314610ab157600080fd5b6007546006546040516001600160a01b0392831692909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360078054600680546001600160a01b03199081166001600160a01b0384161790915516905590565b6000610b23336108e9565b80610b325750610b3233610799565b610b3b57600080fd5b6001600160a01b0383166000908152600a60205260409020548210610ba7576040805162461bcd60e51b815260206004820152601760248201527f5468657265206973206e6f74206c6f636b20696e666f2e000000000000000000604482015290519081900360640190fd5b610bb1838361108d565b5060019392505050565b610bc4336108e9565b80610bd35750610bd333610799565b610bdc57600080fd5b61093f81611256565b610bee336108e9565b80610bfd5750610bfd33610799565b610c0657600080fd5b60095460ff1615610c1657600080fd5b6009805460ff191660011790556040805133815290517f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589181900360200190a1565b6006546001600160a01b031681565b60018054604080516020601f600260001961010087891615020190951694909404938401819004810282018101909252828152606093909290918301828280156106a75780601f1061067c576101008083540402835291602001916106a7565b60006001600160a01b038316610cdc57600080fd5b3360009081526004602090815260408083206001600160a01b0387168452909152902054610815908363ffffffff61129e16565b336000818152600b602052604081205490919060ff1615610d3057600080fd5b336000908152600a602052604090205415610d5057610d4e33610f37565b505b610d5a84846112b3565b949350505050565b600b6020526000908152604090205460ff1681565b600a6020528160005260406000208181548110610d9057fe5b600091825260209091206002909102018054600190910154909250905082565b6007546001600160a01b031681565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b6000610df5336108e9565b80610e045750610e0433610799565b610e0d57600080fd5b610e183385856112d0565b610e2384848461139d565b506001949350505050565b6000610e39336108e9565b80610e485750610e4833610799565b610e5157600080fd5b6001600160a01b0382166000908152600b602052604090205460ff1615610e7757600080fd5b6001600160a01b0382166000908152600a602052604090205415610e9a57600080fd5b6001600160a01b0382166000818152600b6020526040808220805460ff19166001179055517faf85b60d26151edd11443b704d424da6c43d0468f2235ebae3d1904dbc3230499190a2506001919050565b6006546001600160a01b03163314610f0257600080fd5b6001600160a01b038116610f1557600080fd5b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6000805b6001600160a01b0383166000908152600a6020526040902054811015610fb5576001600160a01b0383166000908152600a60205260409020805442919083908110610f8257fe5b90600052602060002090600202016000015411610fad57610fa3838261108d565b15610fad57600019015b600101610f3b565b50600192915050565b60095460009060ff1615610fd157600080fd5b610d5a848484611462565b600082820183811015610fee57600080fd5b9392505050565b60006001600160a01b03821661100a57600080fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b61103b60088263ffffffff61152b16565b6040516001600160a01b038216907fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e90600090a250565b6001600160a01b031660009081526003602052604090205490565b6001600160a01b0382166000908152600a602052604081208054829190849081106110b457fe5b600091825260208083206001600290930201918201546001600160a01b0388168452600a9091526040909220805491935090859081106110f057fe5b60009182526020808320600290920290910182815560019081018390556001600160a01b0388168352600a909152604090912080549091611137919063ffffffff61129e16565b8154811061114157fe5b9060005260206000209060020201600a6000876001600160a01b03166001600160a01b03168152602001908152602001600020858154811061117f57fe5b60009182526020808320845460029093020191825560019384015493909101929092556001600160a01b0387168152600a90915260409020805460001901906111c890826115cc565b506040805182815290516001600160a01b038716917f6381d9813cabeb57471b5a7e05078e64845ccdb563146a6911d536f24ce960f1919081900360200190a26001600160a01b038516600090815260036020526040902054611231908263ffffffff610fdc16565b6001600160a01b03861660009081526003602052604090205550600191505092915050565b61126760088263ffffffff61157316565b6040516001600160a01b038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b6000828211156112ad57600080fd5b50900390565b60095460009060ff16156112c657600080fd5b610fee83836115bf565b6001600160a01b0382166112e357600080fd5b6001600160a01b03831660009081526003602052604090205461130c908263ffffffff61129e16565b6001600160a01b038085166000908152600360205260408082209390935590841681522054611341908263ffffffff610fdc16565b6001600160a01b0380841660008181526003602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6001600160a01b0383166000908152600360205260408120546113c6908463ffffffff61129e16565b6001600160a01b038516600081815260036020908152604080832094909455600a8152838220845180860186528781528083018981528254600181810185559386529484902091516002909502909101938455519201919091558251868152908101859052825191927f49eaf4942f1237055eb4cfa5f31c9dfe50d5b4ade01e021f7de8be2fbbde557b92918290030190a25060019392505050565b6001600160a01b0383166000908152600460209081526040808320338452909152812054611496908363ffffffff61129e16565b6001600160a01b03851660009081526004602090815260408083203384529091529020556114c58484846112d0565b6001600160a01b0384166000818152600460209081526040808320338085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b6001600160a01b03811661153e57600080fd5b6115488282610ff5565b61155157600080fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b6001600160a01b03811661158657600080fd5b6115908282610ff5565b1561159a57600080fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b6000610fb53384846112d0565b8154818355818111156115f8576002028160020283600052602060002091820191016115f891906115fd565b505050565b6106af91905b8082111561161d5760008082556001820155600201611603565b509056fea265627a7a72315820e21d70497b880bc289c3d15a19400f4500d6a631dcf60e3b433d2bcd5700475064736f6c63430005110032

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101da5760003560e01c806379ba509711610104578063a9059cbb116100a2578063dd62ed3e11610071578063dd62ed3e1461056f578063de6baccb1461059d578063f26c159f146105cf578063f2fde38b146105f5576101da565b8063a9059cbb146104d0578063b414d4b6146104fc578063d26c4a7614610522578063d4ee1d9014610567576101da565b80638456cb59116100de5780638456cb591461048c5780638da5cb5b1461049457806395d89b411461049c578063a457c2d7146104a4576101da565b806379ba5097146104325780637eee288d1461043a57806382dc1ec414610466576101da565b80633f4ba83a1161017c5780636b2c0f551161014b5780636b2c0f55146103b85780636ef8d66d146103de57806370a08231146103e6578063788649ea1461040c576101da565b80633f4ba83a1461035c57806346fbf68e146103665780635c60da1b1461038c5780635c975abb146103b0576101da565b806323b872dd116101b857806323b872dd146102b65780632f54bf6e146102ec578063313ce567146103125780633950935114610330576101da565b806306fdde03146101df578063095ea7b31461025c57806318160ddd1461029c575b600080fd5b6101e761061b565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610221578181015183820152602001610209565b50505050905090810190601f16801561024e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102886004803603604081101561027257600080fd5b506001600160a01b0381351690602001356106b2565b604080519115158252519081900360200190f35b6102a461072e565b60408051918252519081900360200190f35b610288600480360360608110156102cc57600080fd5b506001600160a01b03813581169160208101359091169060400135610734565b6102886004803603602081101561030257600080fd5b50356001600160a01b0316610799565b61031a6107c3565b6040805160ff9092168252519081900360200190f35b6102886004803603604081101561034657600080fd5b506001600160a01b0381351690602001356107cc565b61036461087a565b005b6102886004803603602081101561037c57600080fd5b50356001600160a01b03166108e9565b610394610902565b604080516001600160a01b039092168252519081900360200190f35b610288610916565b610364600480360360208110156103ce57600080fd5b50356001600160a01b031661091f565b610364610942565b6102a4600480360360208110156103fc57600080fd5b50356001600160a01b031661094d565b6102886004803603602081101561042257600080fd5b50356001600160a01b03166109f8565b610288610a8e565b6102886004803603604081101561045057600080fd5b506001600160a01b038135169060200135610b18565b6103646004803603602081101561047c57600080fd5b50356001600160a01b0316610bbb565b610364610be5565b610394610c58565b6101e7610c67565b610288600480360360408110156104ba57600080fd5b506001600160a01b038135169060200135610cc7565b610288600480360360408110156104e657600080fd5b506001600160a01b038135169060200135610d10565b6102886004803603602081101561051257600080fd5b50356001600160a01b0316610d62565b61054e6004803603604081101561053857600080fd5b506001600160a01b038135169060200135610d77565b6040805192835260208301919091528051918290030190f35b610394610db0565b6102a46004803603604081101561058557600080fd5b506001600160a01b0381358116916020013516610dbf565b610288600480360360608110156105b357600080fd5b506001600160a01b038135169060208101359060400135610dea565b610288600480360360208110156105e557600080fd5b50356001600160a01b0316610e2e565b6103646004803603602081101561060b57600080fd5b50356001600160a01b0316610eeb565b60008054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106a75780601f1061067c576101008083540402835291602001916106a7565b820191906000526020600020905b81548152906001019060200180831161068a57829003601f168201915b505050505090505b90565b60006001600160a01b0383166106c757600080fd5b3360008181526004602090815260408083206001600160a01b03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600192915050565b60055490565b6001600160a01b0383166000908152600b6020526040812054849060ff161561075c57600080fd5b6001600160a01b0385166000908152600a6020526040902054156107855761078385610f37565b505b610790858585610fbe565b95945050505050565b6006546000906001600160a01b03838116911614156107ba575060016107be565b5060005b919050565b60025460ff1690565b60006001600160a01b0383166107e157600080fd5b3360009081526004602090815260408083206001600160a01b0387168452909152902054610815908363ffffffff610fdc16565b3360008181526004602090815260408083206001600160a01b0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b610883336108e9565b80610892575061089233610799565b61089b57600080fd5b60095460ff166108aa57600080fd5b6009805460ff191690556040805133815290517f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9181900360200190a1565b60006108fc60088363ffffffff610ff516565b92915050565b60095461010090046001600160a01b031681565b60095460ff1690565b6006546001600160a01b0316331461093657600080fd5b61093f8161102a565b50565b61094b3361102a565b565b60008061095983611072565b6001600160a01b0384166000908152600a6020526040902054909150156108fc5760005b6001600160a01b0384166000908152600a60205260409020548110156109f1576001600160a01b0384166000908152600a6020526040902080546109e79190839081106109c657fe5b90600052602060002090600202016001015483610fdc90919063ffffffff16565b915060010161097d565b5092915050565b6000610a03336108e9565b80610a125750610a1233610799565b610a1b57600080fd5b6001600160a01b0382166000908152600b602052604090205460ff16610a4057600080fd5b6001600160a01b0382166000818152600b6020526040808220805460ff19169055517fca5069937e68fd197927055037f59d7c90bf75ac104e6e375539ef480c3ad6ee9190a2506001919050565b600033610a9a57600080fd5b6007546001600160a01b03163314610ab157600080fd5b6007546006546040516001600160a01b0392831692909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360078054600680546001600160a01b03199081166001600160a01b0384161790915516905590565b6000610b23336108e9565b80610b325750610b3233610799565b610b3b57600080fd5b6001600160a01b0383166000908152600a60205260409020548210610ba7576040805162461bcd60e51b815260206004820152601760248201527f5468657265206973206e6f74206c6f636b20696e666f2e000000000000000000604482015290519081900360640190fd5b610bb1838361108d565b5060019392505050565b610bc4336108e9565b80610bd35750610bd333610799565b610bdc57600080fd5b61093f81611256565b610bee336108e9565b80610bfd5750610bfd33610799565b610c0657600080fd5b60095460ff1615610c1657600080fd5b6009805460ff191660011790556040805133815290517f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589181900360200190a1565b6006546001600160a01b031681565b60018054604080516020601f600260001961010087891615020190951694909404938401819004810282018101909252828152606093909290918301828280156106a75780601f1061067c576101008083540402835291602001916106a7565b60006001600160a01b038316610cdc57600080fd5b3360009081526004602090815260408083206001600160a01b0387168452909152902054610815908363ffffffff61129e16565b336000818152600b602052604081205490919060ff1615610d3057600080fd5b336000908152600a602052604090205415610d5057610d4e33610f37565b505b610d5a84846112b3565b949350505050565b600b6020526000908152604090205460ff1681565b600a6020528160005260406000208181548110610d9057fe5b600091825260209091206002909102018054600190910154909250905082565b6007546001600160a01b031681565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b6000610df5336108e9565b80610e045750610e0433610799565b610e0d57600080fd5b610e183385856112d0565b610e2384848461139d565b506001949350505050565b6000610e39336108e9565b80610e485750610e4833610799565b610e5157600080fd5b6001600160a01b0382166000908152600b602052604090205460ff1615610e7757600080fd5b6001600160a01b0382166000908152600a602052604090205415610e9a57600080fd5b6001600160a01b0382166000818152600b6020526040808220805460ff19166001179055517faf85b60d26151edd11443b704d424da6c43d0468f2235ebae3d1904dbc3230499190a2506001919050565b6006546001600160a01b03163314610f0257600080fd5b6001600160a01b038116610f1557600080fd5b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6000805b6001600160a01b0383166000908152600a6020526040902054811015610fb5576001600160a01b0383166000908152600a60205260409020805442919083908110610f8257fe5b90600052602060002090600202016000015411610fad57610fa3838261108d565b15610fad57600019015b600101610f3b565b50600192915050565b60095460009060ff1615610fd157600080fd5b610d5a848484611462565b600082820183811015610fee57600080fd5b9392505050565b60006001600160a01b03821661100a57600080fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b61103b60088263ffffffff61152b16565b6040516001600160a01b038216907fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e90600090a250565b6001600160a01b031660009081526003602052604090205490565b6001600160a01b0382166000908152600a602052604081208054829190849081106110b457fe5b600091825260208083206001600290930201918201546001600160a01b0388168452600a9091526040909220805491935090859081106110f057fe5b60009182526020808320600290920290910182815560019081018390556001600160a01b0388168352600a909152604090912080549091611137919063ffffffff61129e16565b8154811061114157fe5b9060005260206000209060020201600a6000876001600160a01b03166001600160a01b03168152602001908152602001600020858154811061117f57fe5b60009182526020808320845460029093020191825560019384015493909101929092556001600160a01b0387168152600a90915260409020805460001901906111c890826115cc565b506040805182815290516001600160a01b038716917f6381d9813cabeb57471b5a7e05078e64845ccdb563146a6911d536f24ce960f1919081900360200190a26001600160a01b038516600090815260036020526040902054611231908263ffffffff610fdc16565b6001600160a01b03861660009081526003602052604090205550600191505092915050565b61126760088263ffffffff61157316565b6040516001600160a01b038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b6000828211156112ad57600080fd5b50900390565b60095460009060ff16156112c657600080fd5b610fee83836115bf565b6001600160a01b0382166112e357600080fd5b6001600160a01b03831660009081526003602052604090205461130c908263ffffffff61129e16565b6001600160a01b038085166000908152600360205260408082209390935590841681522054611341908263ffffffff610fdc16565b6001600160a01b0380841660008181526003602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6001600160a01b0383166000908152600360205260408120546113c6908463ffffffff61129e16565b6001600160a01b038516600081815260036020908152604080832094909455600a8152838220845180860186528781528083018981528254600181810185559386529484902091516002909502909101938455519201919091558251868152908101859052825191927f49eaf4942f1237055eb4cfa5f31c9dfe50d5b4ade01e021f7de8be2fbbde557b92918290030190a25060019392505050565b6001600160a01b0383166000908152600460209081526040808320338452909152812054611496908363ffffffff61129e16565b6001600160a01b03851660009081526004602090815260408083203384529091529020556114c58484846112d0565b6001600160a01b0384166000818152600460209081526040808320338085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b6001600160a01b03811661153e57600080fd5b6115488282610ff5565b61155157600080fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b6001600160a01b03811661158657600080fd5b6115908282610ff5565b1561159a57600080fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b6000610fb53384846112d0565b8154818355818111156115f8576002028160020283600052602060002091820191016115f891906115fd565b505050565b6106af91905b8082111561161d5760008082556001820155600201611603565b509056fea265627a7a72315820e21d70497b880bc289c3d15a19400f4500d6a631dcf60e3b433d2bcd5700475064736f6c63430005110032

Deployed Bytecode Sourcemap

15584:4008:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15584:4008:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15178: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;15178:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8793:244;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8793:244:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;6952:91;;;:::i;:::-;;;;;;;;;;;;;;;;17040:263;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;17040:263:0;;;;;;;;;;;;;;;;;:::i;3195:193::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3195:193:0;-1:-1:-1;;;;;3195:193:0;;:::i;15494:83::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10324:323;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;10324:323:0;;;;;;;;:::i;5858:118::-;;;:::i;:::-;;4140:109;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4140:109:0;-1:-1:-1;;;;;4140:109:0;;:::i;15737:29::-;;;:::i;:::-;;;;-1:-1:-1;;;;;15737:29:0;;;;;;;;;;;;;;5111:78;;;:::i;4361:97::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4361:97:0;-1:-1:-1;;;;;4361:97:0;;:::i;4466:77::-;;;:::i;16372:394::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16372:394:0;-1:-1:-1;;;;;16372:394:0;;:::i;17588:217::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17588:217:0;-1:-1:-1;;;;;17588:217:0;;:::i;3549:189::-;;;:::i;18059:219::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;18059:219:0;;;;;;;;:::i;4257:92::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4257:92:0;-1:-1:-1;;;;;4257:92:0;;:::i;5647:116::-;;;:::i;2718:20::-;;;:::i;15328:87::-;;;:::i;11167:333::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;11167:333:0;;;;;;;;:::i;16778:254::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;16778:254:0;;;;;;;;:::i;15830:46::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15830:46:0;-1:-1:-1;;;;;15830:46:0;;:::i;15775:51::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;15775:51:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2745:23;;;:::i;7704:131::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7704:131:0;;;;;;;;;;:::i;17817:230::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;17817:230:0;;;;;;;;;;;;;:::i;17315:265::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17315:265:0;-1:-1:-1;;;;;17315:265:0;;:::i;3396:145::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3396:145:0;-1:-1:-1;;;;;3396:145:0;;:::i;15178:83::-;15248:5;15241:12;;;;;;;;-1:-1:-1;;15241:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15215:13;;15241:12;;15248:5;;15241:12;;15248:5;15241:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15178:83;;:::o;8793:244::-;8858:4;-1:-1:-1;;;;;8883:21:0;;8875:30;;;;;;8927:10;8918:20;;;;:8;:20;;;;;;;;-1:-1:-1;;;;;8918:29:0;;;;;;;;;;;;:37;;;8971:36;;;;;;;8918:29;;8927:10;8971:36;;;;;;;;;;;-1:-1:-1;9025:4:0;8793:244;;;;:::o;6952:91::-;7023:12;;6952:91;:::o;17040:263::-;-1:-1:-1;;;;;16170:22:0;;17135:4;16170:22;;;:13;:22;;;;;;17120:4;;16170:22;;16169:23;16161:32;;;;;;-1:-1:-1;;;;;17156:18:0;;17184:1;17156:18;;;:12;:18;;;;;:25;:29;17152:91;;17202:17;17214:4;17202:11;:17::i;:::-;;17152:91;17260:35;17279:4;17285:2;17289:5;17260:18;:35::i;:::-;17253:42;17040:263;-1:-1:-1;;;;;17040:263:0:o;3195:193::-;3282:5;;3250:4;;-1:-1:-1;;;;;3271:16:0;;;3282:5;;3271:16;3267:114;;;-1:-1:-1;3311:4:0;3304:11;;3267:114;-1:-1:-1;3364:5:0;3267:114;3195:193;;;:::o;15494:83::-;15560:9;;;;15494:83;:::o;10324:323::-;10404:4;-1:-1:-1;;;;;10429:21:0;;10421:30;;;;;;10505:10;10496:20;;;;:8;:20;;;;;;;;-1:-1:-1;;;;;10496:29:0;;;;;;;;;;:45;;10530:10;10496:45;:33;:45;:::i;:::-;10473:10;10464:20;;;;:8;:20;;;;;;;;-1:-1:-1;;;;;10464:29:0;;;;;;;;;;;;:77;;;10557:60;;;;;;10464:29;;10557:60;;;;;;;;;;;-1:-1:-1;10635:4:0;10324:323;;;;:::o;5858:118::-;4069:20;4078:10;4069:8;:20::i;:::-;:42;;;;4092:19;4100:10;4092:7;:19::i;:::-;4061:51;;;;;;5527:7;;;;5519:16;;;;;;5917:7;:15;;-1:-1:-1;;5917:15:0;;;5948:20;;;5957:10;5948:20;;;;;;;;;;;;;5858:118::o;4140:109::-;4196:4;4220:21;:8;4233:7;4220:21;:12;:21;:::i;:::-;4213:28;4140:109;-1:-1:-1;;4140:109:0:o;15737:29::-;;;;;;-1:-1:-1;;;;;15737:29:0;;:::o;5111:78::-;5174:7;;;;5111:78;:::o;4361:97::-;3021:5;;-1:-1:-1;;;;;3021:5:0;3007:10;:19;2999:28;;;;;;4428:22;4442:7;4428:13;:22::i;:::-;4361:97;:::o;4466:77::-;4510:25;4524:10;4510:13;:25::i;:::-;4466:77::o;16372:394::-;16427:7;16457:20;16480:22;16496:5;16480:15;:22::i;:::-;-1:-1:-1;;;;;16517:19:0;;16545:1;16517:19;;;:12;:19;;;;;:26;16457:45;;-1:-1:-1;16517:29:0;16513:206;;16567:6;16563:145;-1:-1:-1;;;;;16579:19:0;;;;;;:12;:19;;;;;:26;16577:28;;16563:145;;;-1:-1:-1;;;;;16661:19:0;;;;;;:12;:19;;;;;:22;;16644:48;;16661:19;16681:1;;16661:22;;;;;;;;;;;;;;;;:30;;;16644:12;:16;;:48;;;;:::i;:::-;16629:63;-1:-1:-1;16606:3:0;;16563:145;;;;16746:12;16372:394;-1:-1:-1;;16372:394:0:o;17588:217::-;17656:4;4069:20;4078:10;4069:8;:20::i;:::-;:42;;;;4092:19;4100:10;4092:7;:19::i;:::-;4061:51;;;;;;-1:-1:-1;;;;;17681:21:0;;;;;;:13;:21;;;;;;;;17673:30;;;;;;-1:-1:-1;;;;;17714:21:0;;17738:5;17714:21;;;:13;:21;;;;;;:29;;-1:-1:-1;;17714:29:0;;;17759:16;;;17738:5;17759:16;-1:-1:-1;17793:4:0;17588:217;;;:::o;3549:189::-;3604:4;3096:10;3088:33;;;;;;3154:8;;-1:-1:-1;;;;;3154:8:0;3140:10;:22;3132:31;;;;;;3654:8;;3647:5;;3626:37;;-1:-1:-1;;;;;3654:8:0;;;;3647:5;;;;3626:37;;3654:8;;3626:37;3690:8;;;3682:5;:16;;-1:-1:-1;;;;;;3682:16:0;;;-1:-1:-1;;;;;3690:8:0;;3682:16;;;;3709:21;;;3549:189;:::o;18059:219::-;18131:4;4069:20;4078:10;4069:8;:20::i;:::-;:42;;;;4092:19;4100:10;4092:7;:19::i;:::-;4061:51;;;;;;-1:-1:-1;;;;;18157:20:0;;;;;;:12;:20;;;;;:27;:33;-1:-1:-1;18148:70:0;;;;;-1:-1:-1;;;18148:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;18229:19;18237:6;18244:3;18229:7;:19::i;:::-;-1:-1:-1;18266:4:0;;18059:219;-1:-1:-1;;;18059:219:0:o;4257:92::-;4069:20;4078:10;4069:8;:20::i;:::-;:42;;;;4092:19;4100:10;4092:7;:19::i;:::-;4061:51;;;;;;4322:19;4333:7;4322:10;:19::i;5647:116::-;4069:20;4078:10;4069:8;:20::i;:::-;:42;;;;4092:19;4100:10;4092:7;:19::i;:::-;4061:51;;;;;;5348:7;;;;5347:8;5339:17;;;;;;5707:7;:14;;-1:-1:-1;;5707:14:0;5717:4;5707:14;;;5737:18;;;5744:10;5737:18;;;;;;;;;;;;;5647:116::o;2718:20::-;;;-1:-1:-1;;;;;2718:20:0;;:::o;15328:87::-;15400:7;15393:14;;;;;;;;-1:-1:-1;;15393:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15367:13;;15393:14;;15400:7;;15393:14;;15400:7;15393:14;;;;;;;;;;;;;;;;;;;;;;;;11167:333;11252:4;-1:-1:-1;;;;;11277:21:0;;11269:30;;;;;;11353:10;11344:20;;;;:8;:20;;;;;;;;-1:-1:-1;;;;;11344:29:0;;;;;;;;;;:50;;11378:15;11344:50;:33;:50;:::i;16778:254::-;16840:10;16861:4;16170:22;;;:13;:22;;;;;;16861:4;;16840:10;16170:22;;16169:23;16161:32;;;;;;16895:10;16916:1;16882:24;;;:12;:24;;;;;:31;:35;16878:104;;16935:23;16947:10;16935:11;:23::i;:::-;;16878:104;16999:25;17014:2;17018:5;16999:14;:25::i;:::-;16992:32;16778:254;-1:-1:-1;;;;16778:254:0:o;15830:46::-;;;;;;;;;;;;;;;:::o;15775:51::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15775:51:0;-1:-1:-1;15775:51:0;:::o;2745:23::-;;;-1:-1:-1;;;;;2745:23:0;;:::o;7704:131::-;-1:-1:-1;;;;;7803:15:0;;;7776:7;7803:15;;;:8;:15;;;;;;;;:24;;;;;;;;;;;;;7704:131::o;17817:230::-;17922:4;4069:20;4078:10;4069:8;:20::i;:::-;:42;;;;4092:19;4100:10;4092:7;:19::i;:::-;4061:51;;;;;;17939:36;17949:10;17961:6;17969:5;17939:9;:36::i;:::-;17986:31;17992:6;17999:5;18005:11;17986:5;:31::i;:::-;-1:-1:-1;18035:4:0;;17817:230;-1:-1:-1;;;;17817:230:0:o;17315:265::-;17381:4;4069:20;4078:10;4069:8;:20::i;:::-;:42;;;;4092:19;4100:10;4092:7;:19::i;:::-;4061:51;;;;;;-1:-1:-1;;;;;17407:21:0;;;;;;:13;:21;;;;;;;;17406:22;17398:31;;;;;;-1:-1:-1;;;;;17448:20:0;;;;;;:12;:20;;;;;:27;:32;17440:41;;;;;;-1:-1:-1;;;;;17492:21:0;;;;;;:13;:21;;;;;;:28;;-1:-1:-1;;17492:28:0;17516:4;17492:28;;;17536:14;;;17492:21;17536:14;-1:-1:-1;17568:4:0;17315:265;;;:::o;3396:145::-;3021:5;;-1:-1:-1;;;;;3021:5:0;3007:10;:19;2999:28;;;;;;-1:-1:-1;;;;;3478:23:0;;3470:32;;;;;;3513:8;:20;;-1:-1:-1;;;;;;3513:20:0;-1:-1:-1;;;;;3513:20:0;;;;;;;;;;3396:145::o;19153:430::-;19207:4;;19224:330;-1:-1:-1;;;;;19250:20:0;;;;;;:12;:20;;;;;:27;19244:33;;19224:330;;;-1:-1:-1;;;;;19307:20:0;;;;;;:12;:20;;;;;:25;;19349:3;;19307:20;19328:3;;19307:25;;;;;;;;;;;;;;;;:38;;;:45;19303:240;;19455:20;19463:6;19471:3;19455:7;:20::i;:::-;19451:77;;;-1:-1:-1;;19501:7:0;19451:77;19280:5;;19224:330;;;-1:-1:-1;19571:4:0;;19153:430;-1:-1:-1;;19153:430:0:o;13966:160::-;5348:7;;14059:4;;5348:7;;5347:8;5339:17;;;;;;14083:35;14102:4;14108:2;14112:5;14083:18;:35::i;1376:150::-;1434:7;1466:5;;;1490:6;;;;1482:15;;;;;;1517:1;1376:150;-1:-1:-1;;;1376:150:0:o;2522:165::-;2594:4;-1:-1:-1;;;;;2619:21:0;;2611:30;;;;;;-1:-1:-1;;;;;;2659:20:0;:11;:20;;;;;;;;;;;;;;;2522:165::o;4681:130::-;4741:24;:8;4757:7;4741:24;:15;:24;:::i;:::-;4781:22;;-1:-1:-1;;;;;4781:22:0;;;;;;;;4681:130;:::o;7259:106::-;-1:-1:-1;;;;;7341:16:0;7314:7;7341:16;;;:9;:16;;;;;;;7259:106::o;18613:528::-;-1:-1:-1;;;;;18721:20:0;;18676:4;18721:20;;;:12;:20;;;;;:25;;18676:4;;18721:20;18742:3;;18721:25;;;;;;;;;;;;;;18781:16;18721:25;;;;;18781:16;;;;-1:-1:-1;;;;;18817:20:0;;;;:12;:20;;;;;;;:25;;18721;;-1:-1:-1;18817:20:0;18838:3;;18817:25;;;;;;;;;;;;;;;;;;;;;18810:32;;;;;;;;;;-1:-1:-1;;;;;18881:20:0;;;;:12;:20;;;;;;;18902:27;;18881:20;;18902:34;;:27;:34;:31;:34;:::i;:::-;18881:56;;;;;;;;;;;;;;;;;;18853:12;:20;18866:6;-1:-1:-1;;;;;18853:20:0;-1:-1:-1;;;;;18853:20:0;;;;;;;;;;;;18874:3;18853:25;;;;;;;;;;;;;;;;:84;;:25;;;;;:84;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18948:20:0;;;;:12;:20;;;;;;:31;;-1:-1:-1;;18948:31:0;;;;;;:::i;:::-;-1:-1:-1;19005:29:0;;;;;;;;-1:-1:-1;;;;;19005:29:0;;;;;;;;;;;;;-1:-1:-1;;;;;19065:17:0;;;;;;:9;:17;;;;;;:36;;19087:13;19065:36;:21;:36;:::i;:::-;-1:-1:-1;;;;;19045:17:0;;;;;;:9;:17;;;;;:56;-1:-1:-1;19129:4:0;;-1:-1:-1;;18613:528:0;;;;:::o;4551:122::-;4608:21;:8;4621:7;4608:21;:12;:21;:::i;:::-;4645:20;;-1:-1:-1;;;;;4645:20:0;;;;;;;;4551:122;:::o;1140:150::-;1198:7;1231:1;1226;:6;;1218:15;;;;;;-1:-1:-1;1256:5:0;;;1140:150::o;13826:132::-;5348:7;;13901:4;;5348:7;;5347:8;5339:17;;;;;;13925:25;13940:2;13944:5;13925:14;:25::i;11722:262::-;-1:-1:-1;;;;;11810:16:0;;11802:25;;;;;;-1:-1:-1;;;;;11858:15:0;;;;;;:9;:15;;;;;;:26;;11878:5;11858:26;:19;:26;:::i;:::-;-1:-1:-1;;;;;11840:15:0;;;;;;;:9;:15;;;;;;:44;;;;11911:13;;;;;;;:24;;11929:5;11911:24;:17;:24;:::i;:::-;-1:-1:-1;;;;;11895:13:0;;;;;;;:9;:13;;;;;;;;;:40;;;;11951:25;;;;;;;11895:13;;11951:25;;;;;;;;;;;;;11722:262;;;:::o;18296:305::-;-1:-1:-1;;;;;18417:17:0;;18380:4;18417:17;;;:9;:17;;;;;;:28;;18439:5;18417:28;:21;:28;:::i;:::-;-1:-1:-1;;;;;18397:17:0;;;;;;:9;:17;;;;;;;;:48;;;;18456:12;:20;;;;;18483:28;;;;;;;;;;;;;;;;27:10:-1;;39:1;23:18;;;45:23;;18456:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;18539:32;;;;;;;;;;;;;18397:17;;18539:32;;;;;;;;;-1:-1:-1;18589:4:0;18296:305;;;;;:::o;9510:299::-;-1:-1:-1;;;;;9635:14:0;;9589:4;9635:14;;;:8;:14;;;;;;;;9650:10;9635:26;;;;;;;;:37;;9666:5;9635:37;:30;:37;:::i;:::-;-1:-1:-1;;;;;9606:14:0;;;;;;:8;:14;;;;;;;;9621:10;9606:26;;;;;;;:66;9683:26;9615:4;9699:2;9703:5;9683:9;:26::i;:::-;-1:-1:-1;;;;;9725:54:0;;9752:14;;;;:8;:14;;;;;;;;9740:10;9752:26;;;;;;;;;;;9725:54;;;;;;;9740:10;;9725:54;;;;;;;;;;;;-1:-1:-1;9797:4:0;9510:299;;;;;:::o;2239:189::-;-1:-1:-1;;;;;2319:21:0;;2311:30;;;;;;2360:18;2364:4;2370:7;2360:3;:18::i;:::-;2352:27;;;;;;-1:-1:-1;;;;;2392:20:0;2415:5;2392:20;;;;;;;;;;;:28;;-1:-1:-1;;2392:28:0;;;2239:189::o;1974:186::-;-1:-1:-1;;;;;2051:21:0;;2043:30;;;;;;2093:18;2097:4;2103:7;2093:3;:18::i;:::-;2092:19;2084:28;;;;;;-1:-1:-1;;;;;2125:20:0;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;2125:27:0;2148:4;2125:27;;;1974:186::o;8006:140::-;8067:4;8084:32;8094:10;8106:2;8110:5;8084:9;:32::i;15584:4008::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;

Swarm Source

bzzr://e21d70497b880bc289c3d15a19400f4500d6a631dcf60e3b433d2bcd57004750
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.