ETH Price: $2,516.89 (-5.20%)

Token

ROOK (ROOK)
 

Overview

Max Total Supply

500,000,000 ROOK

Holders

829

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 12 Decimals)

Balance
501 ROOK

Value
$0.00
0xe2faa637bc3742f97e98d002044bdb3b35383162
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:
Token

Compiler Version
v0.5.12+commit.7709ece9

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-01-26
*/

pragma solidity ^0.5.0;


// ----------------------------------------------------------------------------
// Safe maths
// ----------------------------------------------------------------------------
library SafeMath {
    function add(uint a, uint b) internal pure returns (uint c) {
        c = a + b;
        require(c >= a);
    }
    function sub(uint a, uint b) internal pure returns (uint c) {
        require(b <= a);
        c = a - b;
    }
    function mul(uint a, uint b) internal pure returns (uint c) {
        c = a * b;
        require(a == 0 || c / a == b);
    }
    function div(uint a, uint b) internal pure returns (uint c) {
        require(b > 0);
        c = a / b;
    }
} 


// ----------------------------------------------------------------------------
// ERC Toke n Standard #20 Interface
// https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md
// ----------------------------------------------------------------------------
contract ERC20Interface {
    function totalSupply() public view returns (uint);
    function balanceOf(address tokenOwner) public view returns (uint balance);
    function allowance(address tokenOwner, address spender) public view returns (uint remaining);
    function transfer(address to, uint tokens) public returns (bool success);
    function approve(address spender, uint tokens) public returns (bool success);
    function transferFrom(address from, address to, uint tokens) public returns (bool success);

    event Transfer(address indexed from, address indexed to, uint tokens);
    event Approval(address indexed tokenOwner, address indexed spender, uint tokens);
}


// ----------------------------------------------------------------------------
// Contract function to receive approval and execute function in one call
//
// Borrowed from MiniMeToken
// ----------------------------------------------------------------------------
contract ApproveAndCallFallBack {
    function receiveApproval(address from, uint256 tokens, address token, bytes memory data) public;
}


// ----------------------------------------------------------------------------
// Owned contract
// ----------------------------------------------------------------------------
contract Owned {
    address public owner;
    address public newOwner;

    event OwnershipTransferred(address indexed _from, address indexed _to);

    constructor() public {
        owner = 0x0a676A7aF8c5BA369b7e12a70B7865c8B7422D11;
    }

    modifier onlyOwner {
        require(msg.sender == owner);
        _;
    }

    function transferOwnership(address _newOwner) public onlyOwner {
        newOwner = _newOwner;
    }
    function acceptOwnership() public {
        require(msg.sender == newOwner);
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
        newOwner = address(0);
    }
}

contract ERC1132 {
    /**
     * @dev Reasons why a user's tokens have been locked
     */
    mapping(address => bytes32[]) public lockReason;

    /**
     * @dev locked token structure
     */
    struct lockToken {
        uint256 amount;
        uint256 validity;
        bool claimed;
    }

    /**
     * @dev Holds number & validity of tokens locked for a given reason for
     *      a specified address
     */
    mapping(address => mapping(bytes32 => lockToken)) public locked;

    /**
     * @dev Records data of all the tokens Locked
     */
    event Locked(
        address indexed _of,
        bytes32 indexed _reason,
        uint256 _amount,
        uint256 _validity
    );

    /**
     * @dev Records data of all the tokens unlocked
     */
    event Unlocked(
        address indexed _of,
        bytes32 indexed _reason,
        uint256 _amount
    );
    
    /**
     * @dev Locks a specified amount of tokens against an address,
     *      for a specified reason and time
     * @param _reason The reason to lock tokens
     * @param _amount Number of tokens to be locked
     * @param _time Lock time in seconds
     */
    function lock(bytes32 _reason, uint256 _amount, uint256 _time)
        public returns (bool);
  
    /**
     * @dev Returns tokens locked for a specified address for a
     *      specified reason
     *
     * @param _of The address whose tokens are locked
     * @param _reason The reason to query the lock tokens for
     */
    function tokensLocked(address _of, bytes32 _reason)
        public view returns (uint256 amount);
    
    /**
     * @dev Returns tokens locked for a specified address for a
     *      specified reason at a specific time
     *
     * @param _of The address whose tokens are locked
     * @param _reason The reason to query the lock tokens for
     * @param _time The timestamp to query the lock tokens for
     */
    function tokensLockedAtTime(address _of, bytes32 _reason, uint256 _time)
        public view returns (uint256 amount);
    
    /**
     * @dev Returns total tokens held by an address (locked + transferable)
     * @param _of The address to query the total balance of
     */
    function totalBalanceOf(address _of)
        public view returns (uint256 amount);
    
    /**
     * @dev Extends lock for a specified reason and time
     * @param _reason The reason to lock tokens
     * @param _time Lock extension time in seconds
     */
    function extendLock(bytes32 _reason, uint256 _time)
        public returns (bool);
    
    /**
     * @dev Increase number of tokens locked for a specified reason
     * @param _reason The reason to lock tokens
     * @param _amount Number of tokens to be increased
     */
    function increaseLockAmount(bytes32 _reason, uint256 _amount)
        public returns (bool);

    /**
     * @dev Returns unlockable tokens for a specified address for a specified reason
     * @param _of The address to query the the unlockable token count of
     * @param _reason The reason to query the unlockable tokens for
     */
    function tokensUnlockable(address _of, bytes32 _reason)
        public view returns (uint256 amount);
 
    /**
     * @dev Unlocks the unlockable tokens of a specified address
     * @param _of Address of user, claiming back unlockable tokens
     */
    function unlock(address _of)
        public returns (uint256 unlockableTokens);

    /**
     * @dev Gets the unlockable tokens of a specified address
     * @param _of The address to query the the unlockable token count of
     */
    function getUnlockableTokens(address _of)
        public view returns (uint256 unlockableTokens);

}




// ----------------------------------------------------------------------------
// ERC20 Token, with the addition of symbol, name and decimals and a
// fixed supply
// ----------------------------------------------------------------------------
contract Token is ERC1132, ERC20Interface, Owned {
    using SafeMath for uint;
    
    string internal constant ALREADY_LOCKED = 'Tokens already locked';
    string internal constant NOT_LOCKED = 'No tokens locked';
    string internal constant AMOUNT_ZERO = 'Amount can not be 0';

    string public symbol;
    string public  name;
    uint8 public decimals;
    uint _totalSupply;

    mapping(address => uint) balances;
    mapping(address => mapping(address => uint)) allowed;


    // ------------------------------------------------------------------------
    // Constructor
    // ------------------------------------------------------------------------
    constructor() public { 
        symbol = "ROOK";
        name = "ROOK";
        decimals = 12;
        _totalSupply = 500000000 * 10**uint(decimals);
        balances[owner] = _totalSupply;
        emit Transfer(address(0), owner, _totalSupply);
    }


    // ------------------------------------------------------------------------
    // Total supply
    // ------------------------------------------------------------------------
    function totalSupply() public view returns (uint) {
        return _totalSupply.sub(balances[address(0)]);
    }


    // ------------------------------------------------------------------------
    // Get the token balance for account `tokenOwner`
    // ------------------------------------------------------------------------
    function balanceOf(address tokenOwner) public view returns (uint balance) {
        return balances[tokenOwner];
    }


    // ------------------------------------------------------------------------
    // Transfer the balance from token owner's account to `to` account
    // - Owner's account must have sufficient balance to transfer
    // - 0 value transfers are allowed
    // ------------------------------------------------------------------------
    function transfer(address to, uint tokens) public returns (bool success) {
        balances[msg.sender] = balances[msg.sender].sub(tokens);
        balances[to] = balances[to].add(tokens);
        emit Transfer(msg.sender, to, tokens);
        return true;
    }


    // ------------------------------------------------------------------------
    // Token owner can approve for `spender` to transferFrom(...) `tokens`
    // from the token owner's account
    //
    // https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20-token-standard.md
    // recommends that there are no checks for the approval double-spend attack
    // as this should be implemented in user interfaces
    // ------------------------------------------------------------------------
    function approve(address spender, uint tokens) public returns (bool success) {
        allowed[msg.sender][spender] = tokens;
        emit Approval(msg.sender, spender, tokens);
        return true;
    }


    // ------------------------------------------------------------------------
    // Transfer `tokens` from the `from` account to the `to` account
    //
    // The calling account must already have sufficient tokens approve(...)-d
    // for spending from the `from` account and
    // - From account must have sufficient balance to transfer
    // - Spender must have sufficient allowance to transfer
    // - 0 value transfers are allowed
    // ------------------------------------------------------------------------
    function transferFrom(address from, address to, uint tokens) public returns (bool success) {
        balances[from] = balances[from].sub(tokens);
        allowed[from][msg.sender] = allowed[from][msg.sender].sub(tokens);
        balances[to] = balances[to].add(tokens);
        emit Transfer(from, to, tokens);
        return true;
    }


    // ------------------------------------------------------------------------
    // Returns the amount of tokens approved by the owner that can be
    // transferred to the spender's account
    // ------------------------------------------------------------------------
    function allowance(address tokenOwner, address spender) public view returns (uint remaining) {
        return allowed[tokenOwner][spender];
    }


    // ------------------------------------------------------------------------
    // Token owner can approve for `spender` to transferFrom(...) `tokens`
    // from the token owner's account. The `spender` contract function
    // `receiveApproval(...)` is then executed
    // ------------------------------------------------------------------------
    function approveAndCall(address spender, uint tokens, bytes memory data) public returns (bool success) {
        allowed[msg.sender][spender] = tokens;
        emit Approval(msg.sender, spender, tokens);
        ApproveAndCallFallBack(spender).receiveApproval(msg.sender, tokens, address(this), data);
        return true;
    }


    // ------------------------------------------------------------------------
    // Don't accept ETH
    // ------------------------------------------------------------------------
    function () external payable {
        revert();
    }


    // ------------------------------------------------------------------------
    // Owner can transfer out any accidentally sent ERC20 tokens
    // ------------------------------------------------------------------------
    function transferAnyERC20Token(address tokenAddress, uint tokens) public onlyOwner returns (bool success) {
        return ERC20Interface(tokenAddress).transfer(owner, tokens);
    }
    
    function mint(address account, uint256 amount) onlyOwner public returns (bool) {
        require(account != address(0), "ERC20: mint to the zero address");

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

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function burn(address account, uint256 amount) onlyOwner public returns (bool) {
        require(account != address(0), "ERC20: burn from the zero address");

        balances[account] = balances[account].sub(amount);
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }
    
    
     /**
     * @dev Locks a specified amount of tokens against an address,
     *      for a specified reason and time
     * @param _reason The reason to lock tokens
     * @param _amount Number of tokens to be locked
     * @param _time Lock time in seconds
     */
    function lock(bytes32 _reason, uint256 _amount, uint256 _time)
        public
        returns (bool)
    {
        uint256 validUntil = now.add(_time); //solhint-disable-line

        // If tokens are already locked, then functions extendLock or
        // increaseLockAmount should be used to make any changes
        require(tokensLocked(msg.sender, _reason) == 0, ALREADY_LOCKED);
        require(_amount != 0, AMOUNT_ZERO);

        if (locked[msg.sender][_reason].amount == 0)
            lockReason[msg.sender].push(_reason);

        transfer(address(this), _amount);

        locked[msg.sender][_reason] = lockToken(_amount, validUntil, false);

        emit Locked(msg.sender, _reason, _amount, validUntil);
        return true;
    }
    
    /**
     * @dev Transfers and Locks a specified amount of tokens,
     *      for a specified reason and time
     * @param _to adress to which tokens are to be transfered
     * @param _reason The reason to lock tokens
     * @param _amount Number of tokens to be transfered and locked
     * @param _time Lock time in seconds
     */
    function transferWithLock(address _to, bytes32 _reason, uint256 _amount, uint256 _time)
        public
        returns (bool)
    {
        uint256 validUntil = now.add(_time); //solhint-disable-line

        require(tokensLocked(_to, _reason) == 0, ALREADY_LOCKED);
        require(_amount != 0, AMOUNT_ZERO);

        if (locked[_to][_reason].amount == 0)
            lockReason[_to].push(_reason);

        transfer(address(this), _amount);

        locked[_to][_reason] = lockToken(_amount, validUntil, false);
        
        emit Locked(_to, _reason, _amount, validUntil);
        return true;
    }

    /**
     * @dev Returns tokens locked for a specified address for a
     *      specified reason
     *
     * @param _of The address whose tokens are locked
     * @param _reason The reason to query the lock tokens for
     */
    function tokensLocked(address _of, bytes32 _reason)
        public
        view
        returns (uint256 amount)
    {
        if (!locked[_of][_reason].claimed)
            amount = locked[_of][_reason].amount;
    }
    
    /**
     * @dev Returns tokens locked for a specified address for a
     *      specified reason at a specific time
     *
     * @param _of The address whose tokens are locked
     * @param _reason The reason to query the lock tokens for
     * @param _time The timestamp to query the lock tokens for
     */
    function tokensLockedAtTime(address _of, bytes32 _reason, uint256 _time)
        public
        view
        returns (uint256 amount)
    {
        if (locked[_of][_reason].validity > _time)
            amount = locked[_of][_reason].amount;
    }

    /**
     * @dev Returns total tokens held by an address (locked + transferable)
     * @param _of The address to query the total balance of
     */
    function totalBalanceOf(address _of)
        public
        view
        returns (uint256 amount)
    {
        amount = balanceOf(_of);

        for (uint256 i = 0; i < lockReason[_of].length; i++) {
            amount = amount.add(tokensLocked(_of, lockReason[_of][i]));
        }   
    }    
    
    /**
     * @dev Extends lock for a specified reason and time
     * @param _reason The reason to lock tokens
     * @param _time Lock extension time in seconds
     */
    function extendLock(bytes32 _reason, uint256 _time)
        public
        returns (bool)
    {
        require(tokensLocked(msg.sender, _reason) > 0, NOT_LOCKED);

        locked[msg.sender][_reason].validity = locked[msg.sender][_reason].validity.add(_time);

        emit Locked(msg.sender, _reason, locked[msg.sender][_reason].amount, locked[msg.sender][_reason].validity);
        return true;
    }
    
    /**
     * @dev Increase number of tokens locked for a specified reason
     * @param _reason The reason to lock tokens
     * @param _amount Number of tokens to be increased
     */
    function increaseLockAmount(bytes32 _reason, uint256 _amount)
        public
        returns (bool)
    {
        require(tokensLocked(msg.sender, _reason) > 0, NOT_LOCKED);
        transfer(address(this), _amount);

        locked[msg.sender][_reason].amount = locked[msg.sender][_reason].amount.add(_amount);

        emit Locked(msg.sender, _reason, locked[msg.sender][_reason].amount, locked[msg.sender][_reason].validity);
        return true;
    }

    /**
     * @dev Returns unlockable tokens for a specified address for a specified reason
     * @param _of The address to query the the unlockable token count of
     * @param _reason The reason to query the unlockable tokens for
     */
    function tokensUnlockable(address _of, bytes32 _reason)
        public
        view
        returns (uint256 amount)
    {
        if (locked[_of][_reason].validity <= now && !locked[_of][_reason].claimed) //solhint-disable-line
            amount = locked[_of][_reason].amount;
    }

    /**
     * @dev Unlocks the unlockable tokens of a specified address
     * @param _of Address of user, claiming back unlockable tokens
     */
    function unlock(address _of)
        public
        returns (uint256 unlockableTokens)
    {
        uint256 lockedTokens;

        for (uint256 i = 0; i < lockReason[_of].length; i++) {
            lockedTokens = tokensUnlockable(_of, lockReason[_of][i]);
            if (lockedTokens > 0) {
                unlockableTokens = unlockableTokens.add(lockedTokens);
                locked[_of][lockReason[_of][i]].claimed = true;
                emit Unlocked(_of, lockReason[_of][i], lockedTokens);
            }
        }  

        if (unlockableTokens > 0)
            this.transfer(_of, unlockableTokens);
    }

    /**
     * @dev Gets the unlockable tokens of a specified address
     * @param _of The address to query the the unlockable token count of
     */
    function getUnlockableTokens(address _of)
        public
        view
        returns (uint256 unlockableTokens)
    {
        for (uint256 i = 0; i < lockReason[_of].length; i++) {
            unlockableTokens = unlockableTokens.add(tokensUnlockable(_of, lockReason[_of][i]));
        }  
    }
    
    
   
    
}

Contract Security Audit

Contract ABI

[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"tokenOwner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_of","type":"address"},{"indexed":true,"internalType":"bytes32","name":"_reason","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_validity","type":"uint256"}],"name":"Locked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"}],"name":"OwnershipTransferred","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":"tokens","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_of","type":"address"},{"indexed":true,"internalType":"bytes32","name":"_reason","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"Unlocked","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"tokenOwner","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":"tokens","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"approveAndCall","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"tokenOwner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"_reason","type":"bytes32"},{"internalType":"uint256","name":"_time","type":"uint256"}],"name":"extendLock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_of","type":"address"}],"name":"getUnlockableTokens","outputs":[{"internalType":"uint256","name":"unlockableTokens","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"_reason","type":"bytes32"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"increaseLockAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"_reason","type":"bytes32"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_time","type":"uint256"}],"name":"lock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"lockReason","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"locked","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"validity","type":"uint256"},{"internalType":"bool","name":"claimed","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","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":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_of","type":"address"},{"internalType":"bytes32","name":"_reason","type":"bytes32"}],"name":"tokensLocked","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_of","type":"address"},{"internalType":"bytes32","name":"_reason","type":"bytes32"},{"internalType":"uint256","name":"_time","type":"uint256"}],"name":"tokensLockedAtTime","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_of","type":"address"},{"internalType":"bytes32","name":"_reason","type":"bytes32"}],"name":"tokensUnlockable","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_of","type":"address"}],"name":"totalBalanceOf","outputs":[{"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":"tokens","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"transferAnyERC20Token","outputs":[{"internalType":"bool","name":"success","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":"tokens","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"success","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":"_to","type":"address"},{"internalType":"bytes32","name":"_reason","type":"bytes32"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_time","type":"uint256"}],"name":"transferWithLock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_of","type":"address"}],"name":"unlock","outputs":[{"internalType":"uint256","name":"unlockableTokens","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b50600280546001600160a01b031916730a676a7af8c5ba369b7e12a70b7865c8b7422d111790556040805180820190915260048082527f524f4f4b0000000000000000000000000000000000000000000000000000000060209092019182526200007c91816200014a565b506040805180820190915260048082527f524f4f4b000000000000000000000000000000000000000000000000000000006020909201918252620000c3916005916200014a565b5060068054600c60ff19909116179081905560ff16600a0a631dcd6500026007819055600280546001600160a01b039081166000908152600860209081526040808320869055935484519586529351939092169390927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a3620001ef565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200018d57805160ff1916838001178555620001bd565b82800160010185558215620001bd579182015b82811115620001bd578251825591602001919060010190620001a0565b50620001cb929150620001cf565b5090565b620001ec91905b80821115620001cb5760008155600101620001d6565b90565b611c0880620001ff6000396000f3fe6080604052600436106101c25760003560e01c806371d66f00116100f7578063a9dab16711610095578063d71be8db11610064578063d71be8db146107a9578063dc39d06d14610802578063dd62ed3e1461083b578063f2fde38b14610876576101c2565b8063a9dab16714610669578063ab4a2eb314610699578063cae9ca51146106cc578063d4ee1d9014610794576101c2565b80638da5cb5b116100d15780638da5cb5b146105b157806395d89b41146105e25780639dc29fac146105f7578063a9059cbb14610630576101c2565b806371d66f001461053157806379ba50971461056a57806381fc4d9014610581576101c2565b8063313ce567116101645780634cb5465f1161013e5780634cb5465f146104475780635294d0e81461048c5780635ca48d8c146104c557806370a08231146104fe576101c2565b8063313ce567146103b057806340c10f19146103db5780634b0ee02a14610414576101c2565b806318160ddd116101a057806318160ddd146102ef57806323b872dd146103045780632e82aaf2146103475780632f6c493c1461037d576101c2565b806306fdde03146101c7578063095ea7b314610251578063179e91f11461029e575b600080fd5b3480156101d357600080fd5b506101dc6108a9565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102165781810151838201526020016101fe565b50505050905090810190601f1680156102435780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561025d57600080fd5b5061028a6004803603604081101561027457600080fd5b506001600160a01b038135169060200135610937565b604080519115158252519081900360200190f35b3480156102aa57600080fd5b506102dd600480360360608110156102c157600080fd5b506001600160a01b03813516906020810135906040013561099e565b60408051918252519081900360200190f35b3480156102fb57600080fd5b506102dd6109f7565b34801561031057600080fd5b5061028a6004803603606081101561032757600080fd5b506001600160a01b03813581169160208101359091169060400135610a3a565b34801561035357600080fd5b5061028a6004803603606081101561036a57600080fd5b5080359060208101359060400135610b33565b34801561038957600080fd5b506102dd600480360360208110156103a057600080fd5b50356001600160a01b0316610d50565b3480156103bc57600080fd5b506103c5610f2b565b6040805160ff9092168252519081900360200190f35b3480156103e757600080fd5b5061028a600480360360408110156103fe57600080fd5b506001600160a01b038135169060200135610f34565b34801561042057600080fd5b506102dd6004803603602081101561043757600080fd5b50356001600160a01b0316611030565b34801561045357600080fd5b5061028a6004803603608081101561046a57600080fd5b506001600160a01b0381351690602081013590604081013590606001356110bd565b34801561049857600080fd5b506102dd600480360360408110156104af57600080fd5b506001600160a01b0381351690602001356112b9565b3480156104d157600080fd5b506102dd600480360360408110156104e857600080fd5b506001600160a01b038135169060200135611342565b34801561050a57600080fd5b506102dd6004803603602081101561052157600080fd5b50356001600160a01b0316611399565b34801561053d57600080fd5b506102dd6004803603604081101561055457600080fd5b506001600160a01b0381351690602001356113b4565b34801561057657600080fd5b5061057f6113e2565b005b34801561058d57600080fd5b5061028a600480360360408110156105a457600080fd5b508035906020013561145f565b3480156105bd57600080fd5b506105c6611568565b604080516001600160a01b039092168252519081900360200190f35b3480156105ee57600080fd5b506101dc611577565b34801561060357600080fd5b5061028a6004803603604081101561061a57600080fd5b506001600160a01b0381351690602001356115d2565b34801561063c57600080fd5b5061028a6004803603604081101561065357600080fd5b506001600160a01b0381351690602001356116be565b34801561067557600080fd5b5061028a6004803603604081101561068c57600080fd5b508035906020013561175c565b3480156106a557600080fd5b506102dd600480360360208110156106bc57600080fd5b50356001600160a01b0316611860565b3480156106d857600080fd5b5061028a600480360360608110156106ef57600080fd5b6001600160a01b038235169160208101359181019060608101604082013564010000000081111561071f57600080fd5b82018360208201111561073157600080fd5b8035906020019184600183028401116401000000008311171561075357600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506118c4945050505050565b3480156107a057600080fd5b506105c6611a0c565b3480156107b557600080fd5b506107e2600480360360408110156107cc57600080fd5b506001600160a01b038135169060200135611a1b565b604080519384526020840192909252151582820152519081900360600190f35b34801561080e57600080fd5b5061028a6004803603604081101561082557600080fd5b506001600160a01b038135169060200135611a46565b34801561084757600080fd5b506102dd6004803603604081101561085e57600080fd5b506001600160a01b0381358116916020013516611ae9565b34801561088257600080fd5b5061057f6004803603602081101561089957600080fd5b50356001600160a01b0316611b14565b6005805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561092f5780601f106109045761010080835404028352916020019161092f565b820191906000526020600020905b81548152906001019060200180831161091257829003601f168201915b505050505081565b3360008181526009602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b6001600160a01b0383166000908152600160208181526040808420868552909152822001548210156109f057506001600160a01b03831660009081526001602090815260408083208584529091529020545b9392505050565b600080805260086020527f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c754600754610a359163ffffffff611b4d16565b905090565b6001600160a01b038316600090815260086020526040812054610a63908363ffffffff611b4d16565b6001600160a01b0385166000908152600860209081526040808320939093556009815282822033835290522054610aa0908363ffffffff611b4d16565b6001600160a01b038086166000908152600960209081526040808320338452825280832094909455918616815260089091522054610ae4908363ffffffff611b6216565b6001600160a01b038085166000818152600860209081526040918290209490945580518681529051919392881692600080516020611b9383398151915292918290030190a35060019392505050565b600080610b46428463ffffffff611b6216565b9050610b523386611342565b604080518082019091526015815274151bdad95b9cc8185b1c9958591e481b1bd8dad959605a1b60208201529015610c085760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610bcd578181015183820152602001610bb5565b50505050905090810190601f168015610bfa5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506040805180820190915260138152720416d6f756e742063616e206e6f74206265203606c1b602082015284610c7f5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610bcd578181015183820152602001610bb5565b50336000908152600160209081526040808320888452909152902054610cc05733600090815260208181526040822080546001810182559083529120018590555b610cca30856116be565b5060408051606081018252858152602080820184815260008385018181523380835260018086528784208d855286529287902095518655925191850191909155516002909301805460ff191693151593909317909255825187815290810184905282518893600080516020611b73833981519152928290030190a3506001949350505050565b600080805b6001600160a01b038416600090815260208190526040902054811015610ea2576001600160a01b03841660009081526020819052604090208054610daf91869184908110610d9f57fe5b90600052602060002001546112b9565b91508115610e9a57610dc7838363ffffffff611b6216565b6001600160a01b0385166000908152600160208181526040808420918490528320805494975091939092919085908110610dfd57fe5b60009182526020808320919091015483528281019390935260409182018120600201805460ff1916941515949094179093556001600160a01b0387168352908290529020805482908110610e4d57fe5b9060005260206000200154846001600160a01b03167f11f87fd5adcd05786919b8b868f59a70d78ae4eb6f305c5927f9c5b1659841a4846040518082815260200191505060405180910390a35b600101610d55565b508115610f25576040805163a9059cbb60e01b81526001600160a01b0385166004820152602481018490529051309163a9059cbb9160448083019260209291908290030181600087803b158015610ef857600080fd5b505af1158015610f0c573d6000803e3d6000fd5b505050506040513d6020811015610f2257600080fd5b50505b50919050565b60065460ff1681565b6002546000906001600160a01b03163314610f4e57600080fd5b6001600160a01b038316610fa9576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600754610fbc908363ffffffff611b6216565b6007556001600160a01b038316600090815260086020526040902054610fe8908363ffffffff611b6216565b6001600160a01b0384166000818152600860209081526040808320949094558351868152935192939192600080516020611b938339815191529281900390910190a392915050565b600061103b82611399565b905060005b6001600160a01b038316600090815260208190526040902054811015610f25576110b36110a684600080876001600160a01b03166001600160a01b03168152602001908152602001600020848154811061109657fe5b9060005260206000200154611342565b839063ffffffff611b6216565b9150600101611040565b6000806110d0428463ffffffff611b6216565b90506110dc8686611342565b604080518082019091526015815274151bdad95b9cc8185b1c9958591e481b1bd8dad959605a1b602082015290156111555760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610bcd578181015183820152602001610bb5565b506040805180820190915260138152720416d6f756e742063616e206e6f74206265203606c1b6020820152846111cc5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610bcd578181015183820152602001610bb5565b506001600160a01b038616600090815260016020908152604080832088845290915290205461121f576001600160a01b038616600090815260208181526040822080546001810182559083529120018590555b61122930856116be565b5060408051606081018252858152602080820184815260008385018181526001600160a01b038c1680835260018086528784208d855286529287902095518655925191850191909155516002909301805460ff191693151593909317909255825187815290810184905282518893600080516020611b73833981519152928290030190a350600195945050505050565b6001600160a01b038216600090815260016020818152604080842085855290915282200154421080159061131457506001600160a01b038316600090815260016020908152604080832085845290915290206002015460ff16155b1561099857506001600160a01b03919091166000908152600160209081526040808320938352929052205490565b6001600160a01b038216600090815260016020908152604080832084845290915281206002015460ff1661099857506001600160a01b03919091166000908152600160209081526040808320938352929052205490565b6001600160a01b031660009081526008602052604090205490565b600060205281600052604060002081815481106113cd57fe5b90600052602060002001600091509150505481565b6003546001600160a01b031633146113f957600080fd5b6003546002546040516001600160a01b0392831692909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360038054600280546001600160a01b03199081166001600160a01b03841617909155169055565b60008061146c3385611342565b116040518060400160405280601081526020016f139bc81d1bdad95b9cc81b1bd8dad95960821b815250906114e25760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610bcd578181015183820152602001610bb5565b506114ed30836116be565b50336000908152600160209081526040808320868452909152902054611519908363ffffffff611b6216565b3360008181526001602081815260408084208985528252928390208581559091015482519485529084015280518693600080516020611b7383398151915292908290030190a350600192915050565b6002546001600160a01b031681565b6004805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561092f5780601f106109045761010080835404028352916020019161092f565b6002546000906001600160a01b031633146115ec57600080fd5b6001600160a01b0383166116315760405162461bcd60e51b8152600401808060200182810382526021815260200180611bb36021913960400191505060405180910390fd5b6001600160a01b03831660009081526008602052604090205461165a908363ffffffff611b4d16565b6001600160a01b038416600090815260086020526040902055600754611686908363ffffffff611b4d16565b6007556040805183815290516000916001600160a01b03861691600080516020611b938339815191529181900360200190a392915050565b336000908152600860205260408120546116de908363ffffffff611b4d16565b33600090815260086020526040808220929092556001600160a01b03851681522054611710908363ffffffff611b6216565b6001600160a01b038416600081815260086020908152604091829020939093558051858152905191923392600080516020611b938339815191529281900390910190a350600192915050565b6000806117693385611342565b116040518060400160405280601081526020016f139bc81d1bdad95b9cc81b1bd8dad95960821b815250906117df5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610bcd578181015183820152602001610bb5565b50336000908152600160208181526040808420878552909152909120015461180d908363ffffffff611b6216565b336000818152600160208181526040808420898552825292839020918201859055905482519081529081019390935280518693600080516020611b7383398151915292908290030190a350600192915050565b6000805b6001600160a01b038316600090815260208190526040902054811015610f25576118ba6110a684600080876001600160a01b03166001600160a01b031681526020019081526020016000208481548110610d9f57fe5b9150600101611864565b3360008181526009602090815260408083206001600160a01b038816808552908352818420879055815187815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a3604051638f4ffcb160e01b815233600482018181526024830186905230604484018190526080606485019081528651608486015286516001600160a01b038a1695638f4ffcb195948a94938a939192909160a490910190602085019080838360005b8381101561199b578181015183820152602001611983565b50505050905090810190601f1680156119c85780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156119ea57600080fd5b505af11580156119fe573d6000803e3d6000fd5b506001979650505050505050565b6003546001600160a01b031681565b6001602081815260009384526040808520909152918352912080549181015460029091015460ff1683565b6002546000906001600160a01b03163314611a6057600080fd5b6002546040805163a9059cbb60e01b81526001600160a01b0392831660048201526024810185905290519185169163a9059cbb916044808201926020929091908290030181600087803b158015611ab657600080fd5b505af1158015611aca573d6000803e3d6000fd5b505050506040513d6020811015611ae057600080fd5b50519392505050565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b6002546001600160a01b03163314611b2b57600080fd5b600380546001600160a01b0319166001600160a01b0392909216919091179055565b600082821115611b5c57600080fd5b50900390565b8181018281101561099857600080fdfeea90ef40963535482537f0689e05cb8d259e459ebd21530e826702294d0eafddddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a206275726e2066726f6d20746865207a65726f2061646472657373a265627a7a723158206faf8a67038a66651f7a70bd31af108be36ae9896db2f4185b49a72f85b5379d64736f6c634300050c0032

Deployed Bytecode

0x6080604052600436106101c25760003560e01c806371d66f00116100f7578063a9dab16711610095578063d71be8db11610064578063d71be8db146107a9578063dc39d06d14610802578063dd62ed3e1461083b578063f2fde38b14610876576101c2565b8063a9dab16714610669578063ab4a2eb314610699578063cae9ca51146106cc578063d4ee1d9014610794576101c2565b80638da5cb5b116100d15780638da5cb5b146105b157806395d89b41146105e25780639dc29fac146105f7578063a9059cbb14610630576101c2565b806371d66f001461053157806379ba50971461056a57806381fc4d9014610581576101c2565b8063313ce567116101645780634cb5465f1161013e5780634cb5465f146104475780635294d0e81461048c5780635ca48d8c146104c557806370a08231146104fe576101c2565b8063313ce567146103b057806340c10f19146103db5780634b0ee02a14610414576101c2565b806318160ddd116101a057806318160ddd146102ef57806323b872dd146103045780632e82aaf2146103475780632f6c493c1461037d576101c2565b806306fdde03146101c7578063095ea7b314610251578063179e91f11461029e575b600080fd5b3480156101d357600080fd5b506101dc6108a9565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102165781810151838201526020016101fe565b50505050905090810190601f1680156102435780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561025d57600080fd5b5061028a6004803603604081101561027457600080fd5b506001600160a01b038135169060200135610937565b604080519115158252519081900360200190f35b3480156102aa57600080fd5b506102dd600480360360608110156102c157600080fd5b506001600160a01b03813516906020810135906040013561099e565b60408051918252519081900360200190f35b3480156102fb57600080fd5b506102dd6109f7565b34801561031057600080fd5b5061028a6004803603606081101561032757600080fd5b506001600160a01b03813581169160208101359091169060400135610a3a565b34801561035357600080fd5b5061028a6004803603606081101561036a57600080fd5b5080359060208101359060400135610b33565b34801561038957600080fd5b506102dd600480360360208110156103a057600080fd5b50356001600160a01b0316610d50565b3480156103bc57600080fd5b506103c5610f2b565b6040805160ff9092168252519081900360200190f35b3480156103e757600080fd5b5061028a600480360360408110156103fe57600080fd5b506001600160a01b038135169060200135610f34565b34801561042057600080fd5b506102dd6004803603602081101561043757600080fd5b50356001600160a01b0316611030565b34801561045357600080fd5b5061028a6004803603608081101561046a57600080fd5b506001600160a01b0381351690602081013590604081013590606001356110bd565b34801561049857600080fd5b506102dd600480360360408110156104af57600080fd5b506001600160a01b0381351690602001356112b9565b3480156104d157600080fd5b506102dd600480360360408110156104e857600080fd5b506001600160a01b038135169060200135611342565b34801561050a57600080fd5b506102dd6004803603602081101561052157600080fd5b50356001600160a01b0316611399565b34801561053d57600080fd5b506102dd6004803603604081101561055457600080fd5b506001600160a01b0381351690602001356113b4565b34801561057657600080fd5b5061057f6113e2565b005b34801561058d57600080fd5b5061028a600480360360408110156105a457600080fd5b508035906020013561145f565b3480156105bd57600080fd5b506105c6611568565b604080516001600160a01b039092168252519081900360200190f35b3480156105ee57600080fd5b506101dc611577565b34801561060357600080fd5b5061028a6004803603604081101561061a57600080fd5b506001600160a01b0381351690602001356115d2565b34801561063c57600080fd5b5061028a6004803603604081101561065357600080fd5b506001600160a01b0381351690602001356116be565b34801561067557600080fd5b5061028a6004803603604081101561068c57600080fd5b508035906020013561175c565b3480156106a557600080fd5b506102dd600480360360208110156106bc57600080fd5b50356001600160a01b0316611860565b3480156106d857600080fd5b5061028a600480360360608110156106ef57600080fd5b6001600160a01b038235169160208101359181019060608101604082013564010000000081111561071f57600080fd5b82018360208201111561073157600080fd5b8035906020019184600183028401116401000000008311171561075357600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506118c4945050505050565b3480156107a057600080fd5b506105c6611a0c565b3480156107b557600080fd5b506107e2600480360360408110156107cc57600080fd5b506001600160a01b038135169060200135611a1b565b604080519384526020840192909252151582820152519081900360600190f35b34801561080e57600080fd5b5061028a6004803603604081101561082557600080fd5b506001600160a01b038135169060200135611a46565b34801561084757600080fd5b506102dd6004803603604081101561085e57600080fd5b506001600160a01b0381358116916020013516611ae9565b34801561088257600080fd5b5061057f6004803603602081101561089957600080fd5b50356001600160a01b0316611b14565b6005805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561092f5780601f106109045761010080835404028352916020019161092f565b820191906000526020600020905b81548152906001019060200180831161091257829003601f168201915b505050505081565b3360008181526009602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b6001600160a01b0383166000908152600160208181526040808420868552909152822001548210156109f057506001600160a01b03831660009081526001602090815260408083208584529091529020545b9392505050565b600080805260086020527f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c754600754610a359163ffffffff611b4d16565b905090565b6001600160a01b038316600090815260086020526040812054610a63908363ffffffff611b4d16565b6001600160a01b0385166000908152600860209081526040808320939093556009815282822033835290522054610aa0908363ffffffff611b4d16565b6001600160a01b038086166000908152600960209081526040808320338452825280832094909455918616815260089091522054610ae4908363ffffffff611b6216565b6001600160a01b038085166000818152600860209081526040918290209490945580518681529051919392881692600080516020611b9383398151915292918290030190a35060019392505050565b600080610b46428463ffffffff611b6216565b9050610b523386611342565b604080518082019091526015815274151bdad95b9cc8185b1c9958591e481b1bd8dad959605a1b60208201529015610c085760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610bcd578181015183820152602001610bb5565b50505050905090810190601f168015610bfa5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506040805180820190915260138152720416d6f756e742063616e206e6f74206265203606c1b602082015284610c7f5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610bcd578181015183820152602001610bb5565b50336000908152600160209081526040808320888452909152902054610cc05733600090815260208181526040822080546001810182559083529120018590555b610cca30856116be565b5060408051606081018252858152602080820184815260008385018181523380835260018086528784208d855286529287902095518655925191850191909155516002909301805460ff191693151593909317909255825187815290810184905282518893600080516020611b73833981519152928290030190a3506001949350505050565b600080805b6001600160a01b038416600090815260208190526040902054811015610ea2576001600160a01b03841660009081526020819052604090208054610daf91869184908110610d9f57fe5b90600052602060002001546112b9565b91508115610e9a57610dc7838363ffffffff611b6216565b6001600160a01b0385166000908152600160208181526040808420918490528320805494975091939092919085908110610dfd57fe5b60009182526020808320919091015483528281019390935260409182018120600201805460ff1916941515949094179093556001600160a01b0387168352908290529020805482908110610e4d57fe5b9060005260206000200154846001600160a01b03167f11f87fd5adcd05786919b8b868f59a70d78ae4eb6f305c5927f9c5b1659841a4846040518082815260200191505060405180910390a35b600101610d55565b508115610f25576040805163a9059cbb60e01b81526001600160a01b0385166004820152602481018490529051309163a9059cbb9160448083019260209291908290030181600087803b158015610ef857600080fd5b505af1158015610f0c573d6000803e3d6000fd5b505050506040513d6020811015610f2257600080fd5b50505b50919050565b60065460ff1681565b6002546000906001600160a01b03163314610f4e57600080fd5b6001600160a01b038316610fa9576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600754610fbc908363ffffffff611b6216565b6007556001600160a01b038316600090815260086020526040902054610fe8908363ffffffff611b6216565b6001600160a01b0384166000818152600860209081526040808320949094558351868152935192939192600080516020611b938339815191529281900390910190a392915050565b600061103b82611399565b905060005b6001600160a01b038316600090815260208190526040902054811015610f25576110b36110a684600080876001600160a01b03166001600160a01b03168152602001908152602001600020848154811061109657fe5b9060005260206000200154611342565b839063ffffffff611b6216565b9150600101611040565b6000806110d0428463ffffffff611b6216565b90506110dc8686611342565b604080518082019091526015815274151bdad95b9cc8185b1c9958591e481b1bd8dad959605a1b602082015290156111555760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610bcd578181015183820152602001610bb5565b506040805180820190915260138152720416d6f756e742063616e206e6f74206265203606c1b6020820152846111cc5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610bcd578181015183820152602001610bb5565b506001600160a01b038616600090815260016020908152604080832088845290915290205461121f576001600160a01b038616600090815260208181526040822080546001810182559083529120018590555b61122930856116be565b5060408051606081018252858152602080820184815260008385018181526001600160a01b038c1680835260018086528784208d855286529287902095518655925191850191909155516002909301805460ff191693151593909317909255825187815290810184905282518893600080516020611b73833981519152928290030190a350600195945050505050565b6001600160a01b038216600090815260016020818152604080842085855290915282200154421080159061131457506001600160a01b038316600090815260016020908152604080832085845290915290206002015460ff16155b1561099857506001600160a01b03919091166000908152600160209081526040808320938352929052205490565b6001600160a01b038216600090815260016020908152604080832084845290915281206002015460ff1661099857506001600160a01b03919091166000908152600160209081526040808320938352929052205490565b6001600160a01b031660009081526008602052604090205490565b600060205281600052604060002081815481106113cd57fe5b90600052602060002001600091509150505481565b6003546001600160a01b031633146113f957600080fd5b6003546002546040516001600160a01b0392831692909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360038054600280546001600160a01b03199081166001600160a01b03841617909155169055565b60008061146c3385611342565b116040518060400160405280601081526020016f139bc81d1bdad95b9cc81b1bd8dad95960821b815250906114e25760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610bcd578181015183820152602001610bb5565b506114ed30836116be565b50336000908152600160209081526040808320868452909152902054611519908363ffffffff611b6216565b3360008181526001602081815260408084208985528252928390208581559091015482519485529084015280518693600080516020611b7383398151915292908290030190a350600192915050565b6002546001600160a01b031681565b6004805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561092f5780601f106109045761010080835404028352916020019161092f565b6002546000906001600160a01b031633146115ec57600080fd5b6001600160a01b0383166116315760405162461bcd60e51b8152600401808060200182810382526021815260200180611bb36021913960400191505060405180910390fd5b6001600160a01b03831660009081526008602052604090205461165a908363ffffffff611b4d16565b6001600160a01b038416600090815260086020526040902055600754611686908363ffffffff611b4d16565b6007556040805183815290516000916001600160a01b03861691600080516020611b938339815191529181900360200190a392915050565b336000908152600860205260408120546116de908363ffffffff611b4d16565b33600090815260086020526040808220929092556001600160a01b03851681522054611710908363ffffffff611b6216565b6001600160a01b038416600081815260086020908152604091829020939093558051858152905191923392600080516020611b938339815191529281900390910190a350600192915050565b6000806117693385611342565b116040518060400160405280601081526020016f139bc81d1bdad95b9cc81b1bd8dad95960821b815250906117df5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610bcd578181015183820152602001610bb5565b50336000908152600160208181526040808420878552909152909120015461180d908363ffffffff611b6216565b336000818152600160208181526040808420898552825292839020918201859055905482519081529081019390935280518693600080516020611b7383398151915292908290030190a350600192915050565b6000805b6001600160a01b038316600090815260208190526040902054811015610f25576118ba6110a684600080876001600160a01b03166001600160a01b031681526020019081526020016000208481548110610d9f57fe5b9150600101611864565b3360008181526009602090815260408083206001600160a01b038816808552908352818420879055815187815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a3604051638f4ffcb160e01b815233600482018181526024830186905230604484018190526080606485019081528651608486015286516001600160a01b038a1695638f4ffcb195948a94938a939192909160a490910190602085019080838360005b8381101561199b578181015183820152602001611983565b50505050905090810190601f1680156119c85780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156119ea57600080fd5b505af11580156119fe573d6000803e3d6000fd5b506001979650505050505050565b6003546001600160a01b031681565b6001602081815260009384526040808520909152918352912080549181015460029091015460ff1683565b6002546000906001600160a01b03163314611a6057600080fd5b6002546040805163a9059cbb60e01b81526001600160a01b0392831660048201526024810185905290519185169163a9059cbb916044808201926020929091908290030181600087803b158015611ab657600080fd5b505af1158015611aca573d6000803e3d6000fd5b505050506040513d6020811015611ae057600080fd5b50519392505050565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b6002546001600160a01b03163314611b2b57600080fd5b600380546001600160a01b0319166001600160a01b0392909216919091179055565b600082821115611b5c57600080fd5b50900390565b8181018281101561099857600080fdfeea90ef40963535482537f0689e05cb8d259e459ebd21530e826702294d0eafddddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a206275726e2066726f6d20746865207a65726f2061646472657373a265627a7a723158206faf8a67038a66651f7a70bd31af108be36ae9896db2f4185b49a72f85b5379d64736f6c634300050c0032

Deployed Bytecode Sourcemap

6975:13310:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12176:8;;;7298:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7298:19:0;;;:::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;7298:19:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9709:208;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9709:208:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;9709:208:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;16462:253;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16462:253:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;16462:253:0;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;8114:114;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8114:114:0;;;:::i;10460:343::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10460:343:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;10460:343:0;;;;;;;;;;;;;;;;;:::i;13910:763::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13910:763:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13910:763:0;;;;;;;;;;;;:::i;19162:631::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19162:631:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19162:631:0;-1:-1:-1;;;;;19162:631:0;;:::i;7324:21::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7324:21:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12626:328;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12626:328:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;12626:328:0;;;;;;;;:::i;16879:301::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16879:301:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16879:301:0;-1:-1:-1;;;;;16879:301:0;;:::i;15033:624::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15033:624:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;15033:624:0;;;;;;;;;;;;;;;;;;:::i;18711:291::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18711:291:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;18711:291:0;;;;;;;;:::i;15904:224::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15904:224:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;15904:224:0;;;;;;;;:::i;8455:120::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8455:120:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8455:120:0;-1:-1:-1;;;;;8455:120:0;;:::i;3035:47::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3035:47:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3035:47:0;;;;;;;;:::i;2732:196::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2732:196:0;;;:::i;:::-;;17991:465;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17991:465:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17991:465:0;;;;;;;:::i;2302:20::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2302:20:0;;;:::i;:::-;;;;-1:-1:-1;;;;;2302:20:0;;;;;;;;;;;;;;7271;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7271:20:0;;;:::i;13286:330::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13286:330:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;13286:330:0;;;;;;;;:::i;8926:267::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8926:267:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8926:267:0;;;;;;;;:::i;17373:414::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17373:414:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17373:414:0;;;;;;;:::i;19956:303::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19956:303:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19956:303:0;-1:-1:-1;;;;;19956:303:0;;:::i;11606:333::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11606:333:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;11606:333:0;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;11606:333:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;11606:333:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;11606:333:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;11606:333:0;;-1:-1:-1;11606:333:0;;-1:-1:-1;;;;;11606:333:0:i;2329:23::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2329:23:0;;;:::i;3381:63::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3381:63:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3381:63:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12430:184;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12430:184:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;12430:184:0;;;;;;;;:::i;11091:147::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11091:147:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;11091:147:0;;;;;;;;;;:::i;2624:102::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2624:102:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2624:102:0;-1:-1:-1;;;;;2624:102:0;;:::i;7298:19::-;;;;;;;;;;;;;;;-1:-1:-1;;7298:19:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9709:208::-;9805:10;9772:12;9797:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;9797:28:0;;;;;;;;;;;:37;;;9850;;;;;;;9772:12;;9797:28;;9805:10;;9850:37;;;;;;;;-1:-1:-1;9905:4:0;9709:208;;;;;:::o;16462:253::-;-1:-1:-1;;;;;16619:11:0;;16583:14;16619:11;;;:6;:11;;;;;;;;:20;;;;;;;;:29;;:37;-1:-1:-1;16615:92:0;;;-1:-1:-1;;;;;;16680:11:0;;;;;;:6;:11;;;;;;;;:20;;;;;;;;:27;16615:92;16462:253;;;;;:::o;8114:114::-;8158:4;8199:20;;;:8;:20;;;;8182:12;;:38;;;:16;:38;:::i;:::-;8175:45;;8114:114;:::o;10460:343::-;-1:-1:-1;;;;;10579:14:0;;10537:12;10579:14;;;:8;:14;;;;;;:26;;10598:6;10579:26;:18;:26;:::i;:::-;-1:-1:-1;;;;;10562:14:0;;;;;;:8;:14;;;;;;;;:43;;;;10644:7;:13;;;;;10658:10;10644:25;;;;;;:37;;10674:6;10644:37;:29;:37;:::i;:::-;-1:-1:-1;;;;;10616:13:0;;;;;;;:7;:13;;;;;;;;10630:10;10616:25;;;;;;;:65;;;;10707:12;;;;;:8;:12;;;;;:24;;10724:6;10707:24;:16;:24;:::i;:::-;-1:-1:-1;;;;;10692:12:0;;;;;;;:8;:12;;;;;;;;;:39;;;;10747:26;;;;;;;10692:12;;10747:26;;;;-1:-1:-1;;;;;;;;;;;10747:26:0;;;;;;;;-1:-1:-1;10791:4:0;10460:343;;;;;:::o;13910:763::-;14007:4;;14050:14;:3;14058:5;14050:14;:7;:14;:::i;:::-;14029:35;;14245:33;14258:10;14270:7;14245:12;:33::i;:::-;14285:14;;;;;;;;;;;;-1:-1:-1;;;14285:14:0;;;;;14245:38;14237:63;;;;-1:-1:-1;;;14237:63: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;14237:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14333:11:0;;;;;;;;;;;;-1:-1:-1;;;14333:11:0;;;;14319:12;14311:34;;;;-1:-1:-1;;;14311:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;14311:34:0;-1:-1:-1;14369:10:0;14362:18;;;;:6;:18;;;;;;;;:27;;;;;;;;:34;14358:94;;14427:10;14416;:22;;;;;;;;;;27:10:-1;;39:1;23:18;;45:23;;14416:36:0;;;;;;;;;14358:94;14465:32;14482:4;14489:7;14465:8;:32::i;:::-;-1:-1:-1;14540:37:0;;;;;;;;;;;;;;;;;;-1:-1:-1;14540:37:0;;;;;;14517:10;14510:18;;;14540:37;14510:18;;;;;;:27;;;;;;;;;:67;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14510:67:0;;;;;;;;;;;14595:48;;;;;;;;;;;;;14510:27;;-1:-1:-1;;;;;;;;;;;14595:48:0;;;;;;;-1:-1:-1;14661:4:0;;13910:763;-1:-1:-1;;;;13910:763:0:o;19162:631::-;19225:24;;;19300:396;-1:-1:-1;;;;;19324:15:0;;:10;:15;;;;;;;;;;:22;19320:26;;19300:396;;;-1:-1:-1;;;;;19405:15:0;;:10;:15;;;;;;;;;;:18;;19383:41;;19400:3;;19421:1;;19405:18;;;;;;;;;;;;;;19383:16;:41::i;:::-;19368:56;-1:-1:-1;19443:16:0;;19439:246;;19499:34;:16;19520:12;19499:34;:20;:34;:::i;:::-;-1:-1:-1;;;;;19552:11:0;;;;;;19594:4;19552:11;;;;;;;;19564:15;;;;;;:18;;19480:53;;-1:-1:-1;19594:4:0;;19552:11;;;19564:15;19580:1;;19564:18;;;;;;;;;;;;;;;;;;;19552:31;;;;;;;;;;;;;;;:39;;:46;;-1:-1:-1;;19552:46:0;;;;;;;;;;;-1:-1:-1;;;;;19636:15:0;;;;;;;;;;:18;;19652:1;;19636:18;;;;;;;;;;;;;;19631:3;-1:-1:-1;;;;;19622:47:0;;19656:12;19622:47;;;;;;;;;;;;;;;;;;19439:246;19348:3;;19300:396;;;-1:-1:-1;19714:20:0;;19710:75;;19749:36;;;-1:-1:-1;;;19749:36:0;;-1:-1:-1;;;;;19749:36:0;;;;;;;;;;;;;;:4;;:13;;:36;;;;;;;;;;;;;;-1:-1:-1;19749:4:0;:36;;;5:2:-1;;;;30:1;27;20:12;5:2;19749:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19749:36:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;19710:75:0;19162:631;;;;:::o;7324:21::-;;;;;;:::o;12626:328::-;2590:5;;12699:4;;-1:-1:-1;;;;;2590:5:0;2576:10;:19;2568:28;;;;;;-1:-1:-1;;;;;12724:21:0;;12716:65;;;;;-1:-1:-1;;;12716:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;12809:12;;:24;;12826:6;12809:24;:16;:24;:::i;:::-;12794:12;:39;-1:-1:-1;;;;;12864:17:0;;;;;;:8;:17;;;;;;:29;;12886:6;12864:29;:21;:29;:::i;:::-;-1:-1:-1;;;;;12844:17:0;;;;;;:8;:17;;;;;;;;:49;;;;12909:37;;;;;;;12844:17;;;;-1:-1:-1;;;;;;;;;;;12909:37:0;;;;;;;;;12626:328;;;;:::o;16879:301::-;16964:14;17005;17015:3;17005:9;:14::i;:::-;16996:23;-1:-1:-1;17037:9:0;17032:138;-1:-1:-1;;;;;17056:15:0;;:10;:15;;;;;;;;;;:22;17052:26;;17032:138;;;17109:49;17120:37;17133:3;17138:10;:15;17149:3;-1:-1:-1;;;;;17138:15:0;-1:-1:-1;;;;;17138:15:0;;;;;;;;;;;;17154:1;17138:18;;;;;;;;;;;;;;;;17120:12;:37::i;:::-;17109:6;;:49;:10;:49;:::i;:::-;17100:58;-1:-1:-1;17080:3:0;;17032:138;;15033:624;15155:4;;15198:14;:3;15206:5;15198:14;:7;:14;:::i;:::-;15177:35;;15256:26;15269:3;15274:7;15256:12;:26::i;:::-;15289:14;;;;;;;;;;;;-1:-1:-1;;;15289:14:0;;;;;15256:31;15248:56;;;;-1:-1:-1;;;15248:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;15248:56:0;-1:-1:-1;15337:11:0;;;;;;;;;;;;-1:-1:-1;;;15337:11:0;;;;15323:12;15315:34;;;;-1:-1:-1;;;15315:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;15315:34:0;-1:-1:-1;;;;;;15366:11:0;;;;;;:6;:11;;;;;;;;:20;;;;;;;;:27;15362:80;;-1:-1:-1;;;;;15413:15:0;;:10;:15;;;;;;;;;;27:10:-1;;39:1;23:18;;45:23;;15413:29:0;;;;;;;;;15362:80;15455:32;15472:4;15479:7;15455:8;:32::i;:::-;-1:-1:-1;15523:37:0;;;;;;;;;;;;;;;;;;-1:-1:-1;15523:37:0;;;;;;-1:-1:-1;;;;;15500:11:0;;;;;15523:37;15500:11;;;;;;:20;;;;;;;;;:60;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15500:60:0;;;;;;;;;;;15586:41;;;;;;;;;;;;;15500:20;;-1:-1:-1;;;;;;;;;;;15586:41:0;;;;;;;-1:-1:-1;15645:4:0;;15033:624;-1:-1:-1;;;;;15033:624:0:o;18711:291::-;-1:-1:-1;;;;;18851:11:0;;18815:14;18851:11;;;:6;:11;;;;;;;;:20;;;;;;;;:29;;18884:3;-1:-1:-1;18851:36:0;;;:69;;-1:-1:-1;;;;;;18892:11:0;;;;;;:6;:11;;;;;;;;:20;;;;;;;;:28;;;;;18891:29;18851:69;18847:147;;;-1:-1:-1;;;;;;18967:11:0;;;;;;;;:6;:11;;;;;;;;:20;;;;;;;:27;;18711:291::o;15904:224::-;-1:-1:-1;;;;;16041:11:0;;16004:14;16041:11;;;:6;:11;;;;;;;;:20;;;;;;;;:28;;;;;16036:84;;-1:-1:-1;;;;;;16093:11:0;;;;;;;;:6;:11;;;;;;;;:20;;;;;;;:27;;15904:224::o;8455:120::-;-1:-1:-1;;;;;8547:20:0;8515:12;8547:20;;;:8;:20;;;;;;;8455:120::o;3035:47::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2732:196::-;2799:8;;-1:-1:-1;;;;;2799:8:0;2785:10;:22;2777:31;;;;;;2852:8;;2845:5;;2824:37;;-1:-1:-1;;;;;2852:8:0;;;;2845:5;;;;2824:37;;2852:8;;2824:37;2880:8;;;2872:5;:16;;-1:-1:-1;;;;;;2872:16:0;;;-1:-1:-1;;;;;2880:8:0;;2872:16;;;;2899:21;;;2732:196::o;17991:465::-;18087:4;18153:1;18117:33;18130:10;18142:7;18117:12;:33::i;:::-;:37;18156:10;;;;;;;;;;;;;-1:-1:-1;;;18156:10:0;;;18109:58;;;;;-1:-1:-1;;;18109:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;18109:58:0;;18178:32;18195:4;18202:7;18178:8;:32::i;:::-;-1:-1:-1;18267:10:0;18260:18;;;;:6;:18;;;;;;;;:27;;;;;;;;:34;:47;;18299:7;18260:47;:38;:47;:::i;:::-;18230:10;18223:18;;;;:6;:18;;;;;;;;:27;;;;;;;;;:84;;;18389:36;;;;18325:101;;;;;;;;;;;18223:27;;-1:-1:-1;;;;;;;;;;;18325:101:0;;;;;;;;-1:-1:-1;18444:4:0;17991:465;;;;:::o;2302:20::-;;;-1:-1:-1;;;;;2302:20:0;;:::o;7271:::-;;;;;;;;;;;;;;;-1:-1:-1;;7271:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13286:330;2590:5;;13359:4;;-1:-1:-1;;;;;2590:5:0;2576:10;:19;2568:28;;;;;;-1:-1:-1;;;;;13384:21:0;;13376:67;;;;-1:-1:-1;;;13376:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13476:17:0;;;;;;:8;:17;;;;;;:29;;13498:6;13476:29;:21;:29;:::i;:::-;-1:-1:-1;;;;;13456:17:0;;;;;;:8;:17;;;;;:49;13531:12;;:24;;13548:6;13531:24;:16;:24;:::i;:::-;13516:12;:39;13571:37;;;;;;;;13597:1;;-1:-1:-1;;;;;13571:37:0;;;-1:-1:-1;;;;;;;;;;;13571:37:0;;;;;;;;13286:330;;;;:::o;8926:267::-;9042:10;8985:12;9033:20;;;:8;:20;;;;;;:32;;9058:6;9033:32;:24;:32;:::i;:::-;9019:10;9010:20;;;;:8;:20;;;;;;:55;;;;-1:-1:-1;;;;;9091:12:0;;;;;;:24;;9108:6;9091:24;:16;:24;:::i;:::-;-1:-1:-1;;;;;9076:12:0;;;;;;:8;:12;;;;;;;;;:39;;;;9131:32;;;;;;;9076:12;;9140:10;;-1:-1:-1;;;;;;;;;;;9131:32:0;;;;;;;;;-1:-1:-1;9181:4:0;8926:267;;;;:::o;17373:414::-;17459:4;17525:1;17489:33;17502:10;17514:7;17489:12;:33::i;:::-;:37;17528:10;;;;;;;;;;;;;-1:-1:-1;;;17528:10:0;;;17481:58;;;;;-1:-1:-1;;;17481:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;17481:58:0;-1:-1:-1;17598:10:0;17591:18;;;;:6;:18;;;;;;;;:27;;;;;;;;;:36;;:47;;17632:5;17591:47;:40;:47;:::i;:::-;17559:10;17552:18;;;;:6;:18;;;;;;;;:27;;;;;;;;;:36;;;:86;;;17684:34;;17656:101;;;;;;;;;;;;;;17552:27;;-1:-1:-1;;;;;;;;;;;17656:101:0;;;;;;;;-1:-1:-1;17775:4:0;17373:414;;;;:::o;19956:303::-;20046:24;;20088:162;-1:-1:-1;;;;;20112:15:0;;:10;:15;;;;;;;;;;:22;20108:26;;20088:162;;;20175:63;20196:41;20213:3;20218:10;:15;20229:3;-1:-1:-1;;;;;20218:15:0;-1:-1:-1;;;;;20218:15:0;;;;;;;;;;;;20234:1;20218:18;;;;;;;20175:63;20156:82;-1:-1:-1;20136:3:0;;20088:162;;11606:333;11728:10;11695:12;11720:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;11720:28:0;;;;;;;;;;;:37;;;11773;;;;;;;11695:12;;11720:28;;11728:10;;11773:37;;;;;;;;11821:88;;-1:-1:-1;;;11821:88:0;;11869:10;11821:88;;;;;;;;;;;;11897:4;11821:88;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11821:47:0;;;;;11869:10;11881:6;;11897:4;11904;;11821:88;;;;;;;;;;;;;;;;-1:-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;11821:88:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11821:88:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;11927:4:0;;11606:333;-1:-1:-1;;;;;;;11606:333:0:o;2329:23::-;;;-1:-1:-1;;;;;2329:23:0;;:::o;3381:63::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;12430:184::-;2590:5;;12522:12;;-1:-1:-1;;;;;2590:5:0;2576:10;:19;2568:28;;;;;;12592:5;;12554:52;;;-1:-1:-1;;;12554:52:0;;-1:-1:-1;;;;;12592:5:0;;;12554:52;;;;;;;;;;;;:37;;;;;;:52;;;;;;;;;;;;;;;12592:5;12554:37;:52;;;5:2:-1;;;;30:1;27;20:12;5:2;12554:52:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12554:52:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12554:52:0;;12430:184;-1:-1:-1;;;12430:184:0:o;11091:147::-;-1:-1:-1;;;;;11202:19:0;;;11168:14;11202:19;;;:7;:19;;;;;;;;:28;;;;;;;;;;;;;11091:147::o;2624:102::-;2590:5;;-1:-1:-1;;;;;2590:5:0;2576:10;:19;2568:28;;;;;;2698:8;:20;;-1:-1:-1;;;;;;2698:20:0;-1:-1:-1;;;;;2698:20:0;;;;;;;;;;2624:102::o;350:114::-;402:6;434:1;429;:6;;421:15;;;;;;-1:-1:-1;451:5:0;;;350:114::o;230:::-;305:5;;;329:6;;;;321:15;;;;

Swarm Source

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