ETH Price: $3,398.48 (+2.10%)

Token

NTOK Token Contract (NTOK)
 

Overview

Max Total Supply

2,774,329 NTOK

Holders

10,897

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
6.412825651 NTOK

Value
$0.00
0x3bd2e59aa0fb9f955304d4d24f0896e6e1a47c9f
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:
NTOKTokenContract

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-08-01
*/

pragma solidity ^0.4.24;

library SafeMath {

    function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
        if (a == 0) {
            return 0;
        }
        c = a * b;
        assert(c / a == b);
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        assert(b <= a);
        return a - b;
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256 c) {
        c = a + b;
        assert(c >= a);
        return c;
    }
}

contract Ownable {
    address public owner;

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

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

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

    function renounceOwnership() public onlyOwner {
        emit OwnershipRenounced(owner);
        owner = address(0);
    }

    function transferOwnership(address _newOwner) public onlyOwner {
        _transferOwnership(_newOwner);
    }

    function _transferOwnership(address _newOwner) internal {
        require(_newOwner != address(0));
        emit OwnershipTransferred(owner, _newOwner);
        owner = _newOwner;
    }
}

contract Claimable is Ownable {
    address public pendingOwner;

    modifier onlyPendingOwner() {
        require(msg.sender == pendingOwner);
        _;
    }

    function transferOwnership(address newOwner) onlyOwner public {
        pendingOwner = newOwner;
    }

    function claimOwnership() onlyPendingOwner public {
        emit OwnershipTransferred(owner, pendingOwner);
        owner = pendingOwner;
        pendingOwner = address(0);
    }
}

contract ERC20Basic {
    function totalSupply() public view returns (uint256);
    function balanceOf(address who) public view returns (uint256);
    function transfer(address to, uint256 value) public returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
}

contract ERC20 is ERC20Basic {
    function allowance(address owner, address spender) public view returns (uint256);
    function transferFrom(address from, address to, uint256 value) public returns (bool);
    function approve(address spender, uint256 value) public returns (bool);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

contract BasicToken is ERC20Basic {
    using SafeMath for uint256;
    mapping(address => uint256) balances;
    uint256 totalSupply_;

    function totalSupply() public view returns (uint256) {
        return totalSupply_;
    }

    function transfer(address _to, uint256 _value) public returns (bool) {
        require(_value <= balances[msg.sender]);
        require(_to != address(0));
        balances[msg.sender] = balances[msg.sender].sub(_value);
        balances[_to] = balances[_to].add(_value);
        emit Transfer(msg.sender, _to, _value);
        return true;
    }

    function balanceOf(address _owner) public view returns (uint256) {
        return balances[_owner];
    }
}

contract StandardToken is ERC20, BasicToken {
    mapping (address => mapping (address => uint256)) internal allowed;

    function transferFrom(
        address _from,
        address _to,
        uint256 _value
    )
    public
    returns (bool)
    {
        require(_value <= balances[_from]);
        require(_value <= allowed[_from][msg.sender]);
        require(_to != address(0));
        balances[_from] = balances[_from].sub(_value);
        balances[_to] = balances[_to].add(_value);
        allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
        emit Transfer(_from, _to, _value);
        return true;
    }

    function approve(address _spender, uint256 _value) public returns (bool) {
        allowed[msg.sender][_spender] = _value;
        emit Approval(msg.sender, _spender, _value);
        return true;
    }

    function allowance(
        address _owner,
        address _spender
    )
    public
    view
    returns (uint256)
    {
        return allowed[_owner][_spender];
    }

    function increaseApproval(
        address _spender,
        uint256 _addedValue
    )
    public
    returns (bool)
    {
        allowed[msg.sender][_spender] = (
        allowed[msg.sender][_spender].add(_addedValue));
        emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
        return true;
    }

    function decreaseApproval(
        address _spender,
        uint256 _subtractedValue
    )
    public
    returns (bool)
    {
        uint256 oldValue = allowed[msg.sender][_spender];
        if (_subtractedValue >= oldValue) {
            allowed[msg.sender][_spender] = 0;
        } else {
            allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
        }
        emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
        return true;
    }
}

library SafeERC20 {
    function safeTransfer(ERC20Basic token, address to, uint256 value) internal {
        require(token.transfer(to, value));
    }
    function safeTransferFrom(
        ERC20 token,
        address from,
        address to,
        uint256 value
    )
    internal
    {
        require(token.transferFrom(from, to, value));
    }
    function safeApprove(ERC20 token, address spender, uint256 value) internal {
        require(token.approve(spender, value));
    }
}

contract CanReclaimToken is Ownable {
    using SafeERC20 for ERC20Basic;

    function reclaimToken(ERC20Basic token) external onlyOwner {
        uint256 balance = token.balanceOf(this);
        token.safeTransfer(owner, balance);
    }
}

contract BurnableToken is BasicToken {
    event Burn(address indexed burner, uint256 value);

    function burn(uint256 _value) public {
        _burn(msg.sender, _value);
    }
    function _burn(address _who, uint256 _value) internal {
        require(_value <= balances[_who]);


        balances[_who] = balances[_who].sub(_value);
        totalSupply_ = totalSupply_.sub(_value);
        emit Burn(_who, _value);
        emit Transfer(_who, address(0), _value);
    }
}

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

    function add(Role storage role, address addr)
    internal
    {
        role.bearer[addr] = true;
    }

    function remove(Role storage role, address addr)
    internal
    {
        role.bearer[addr] = false;
    }

    function check(Role storage role, address addr)
    view
    internal
    {
        require(has(role, addr));
    }

    function has(Role storage role, address addr)
    view
    internal
    returns (bool)
    {
        return role.bearer[addr];
    }
}

contract RBAC {
    using Roles for Roles.Role;
    mapping (string => Roles.Role) private roles;
    event RoleAdded(address indexed operator, string role);
    event RoleRemoved(address indexed operator, string role);

    function checkRole(address _operator, string _role)
    view
    public
    {
        roles[_role].check(_operator);
    }

    function hasRole(address _operator, string _role)
    view
    public
    returns (bool)
    {
        return roles[_role].has(_operator);
    }

    function addRole(address _operator, string _role)
    internal
    {
        roles[_role].add(_operator);
        emit RoleAdded(_operator, _role);
    }

    function removeRole(address _operator, string _role)
    internal
    {
        roles[_role].remove(_operator);
        emit RoleRemoved(_operator, _role);
    }

    modifier onlyRole(string _role)
    {
        checkRole(msg.sender, _role);
        _;
    }
}

contract Whitelist is Ownable, RBAC {
    string public constant ROLE_WHITELISTED = "whitelist";

    modifier onlyIfWhitelisted(address _operator) {
        checkRole(_operator, ROLE_WHITELISTED);
        _;
    }

    function addAddressToWhitelist(address _operator)
    onlyOwner
    public
    {
        addRole(_operator, ROLE_WHITELISTED);
    }

    function whitelist(address _operator)
    public
    view
    returns (bool)
    {
        return hasRole(_operator, ROLE_WHITELISTED);
    }

    function addAddressesToWhitelist(address[] _operators)
    onlyOwner
    public
    {
        for (uint256 i = 0; i < _operators.length; i++) {
            addAddressToWhitelist(_operators[i]);
        }
    }

    function removeAddressFromWhitelist(address _operator)
    onlyOwner
    public
    {
        removeRole(_operator, ROLE_WHITELISTED);
    }

    function removeAddressesFromWhitelist(address[] _operators)
    onlyOwner
    public
    {
        for (uint256 i = 0; i < _operators.length; i++) {
            removeAddressFromWhitelist(_operators[i]);
        }
    }
}

contract DateKernel
{
    uint256 public unlockTime;
    constructor(uint256 _time) public {
        unlockTime = _time;
    }

    function determineDate() internal view
    returns (uint256 v)
    {
        uint256 n = now;
        uint256 ut = unlockTime;
        uint256 mo = 30 * 1 days;
        uint8 p = 10;
        assembly {
            if sgt(n, ut) {
                if or(slt(sub(n, ut), mo), eq(sub(n, ut), mo)) {
                    v := 1
                }
                if sgt(sub(n, ut), mo) {
                    v := add(div(sub(n, ut), mo), 1)
                }
                if or(eq(v, p), sgt(v, p)) {
                    v := p
                }
            }
        }
    }
}

contract Distributable is StandardToken, Ownable, Whitelist, DateKernel {
    using SafeMath for uint;
    event Distributed(uint256 amount);
    event MemberUpdated(address member, uint256 balance);
    struct member {
        uint256 lastWithdrawal;
        uint256 tokensTotal;
        uint256 tokensLeft;
    }

    mapping (address => member) public teams;

    function _transfer(address _from, address _to, uint256 _value) private returns (bool) {
        require(_value <= balances[_from]);
        require(_to != address(0));
        balances[_from] = balances[_from].sub(_value);
        balances[_to] = balances[_to].add(_value);
        emit Transfer(_from, _to, _value);
        return true;
    }

    function updateMember(address _who, uint256 _last, uint256 _total, uint256 _left) internal returns (bool) {
        teams[_who] = member(_last, _total, _left);
        emit MemberUpdated(_who, _left);
        return true;
    }

    function airdrop(address[] dests, uint256[] values) public onlyOwner {
        require(dests.length == values.length);
        for (uint256 i = 0; i < dests.length; i++) {
            transfer(dests[i], values[i]);
        }
    }

    function distributeTokens(address[] _member, uint256[] _amount)
    onlyOwner
    public
    returns (bool)
    {
        require(_member.length == _amount.length);
        for (uint256 i = 0; i < _member.length; i++) {
            updateMember(_member[i], 0, _amount[i], _amount[i]);
            addAddressToWhitelist(_member[i]);
        }
        emit Distributed(_member.length);
        return true;
    }

    function rewardController(address _member)
    internal
    returns (uint256)
    {
        member storage mbr = teams[_member];
        require(mbr.tokensLeft > 0, "You've spent your share");
        uint256 multiplier;
        uint256 callback;
        uint256 curDate = determineDate();
        uint256 lastDate = mbr.lastWithdrawal;
        if(curDate > lastDate) {
            multiplier = curDate.sub(lastDate);
        } else if(curDate == lastDate) {
            revert("Its no time");
        }
        if(mbr.tokensTotal >= mbr.tokensLeft && mbr.tokensTotal > 0) {
            if(curDate == 10) {
                callback = mbr.tokensLeft;
            } else {
                callback = multiplier.mul((mbr.tokensTotal).div(10));
            }
        }
        updateMember(
            _member,
            curDate,
            mbr.tokensTotal,
            mbr.tokensLeft.sub(callback)
        );
        return callback;
    }

    function getDistributedToken()
    public
    onlyIfWhitelisted(msg.sender)
    returns(bool)
    {
        require(unlockTime > now);
        uint256 amount = rewardController(msg.sender);
        _transfer(this, msg.sender, amount);
        return true;
    }
}

contract NTOKTokenContract is Distributable, BurnableToken, CanReclaimToken, Claimable {
    string public name;
    string public symbol;
    uint8 public decimals;
    uint256 public INITIAL_SUPPLY;
    
    constructor()
    public
    DateKernel(1541030400)
    {
        name = "NTOK Token Contract";
        symbol = "NTOK";
        decimals = 18; 
        INITIAL_SUPPLY = 33000000 * 10 ** uint256(decimals);
        totalSupply_ = INITIAL_SUPPLY;
        balances[msg.sender] = INITIAL_SUPPLY;
        emit Transfer(address(0), msg.sender, INITIAL_SUPPLY);
    }

    function() external {
        revert("Does not accept ether");
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_operator","type":"address"},{"name":"_role","type":"string"}],"name":"checkRole","outputs":[],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"}],"name":"reclaimToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ROLE_WHITELISTED","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_operator","type":"address"},{"name":"_role","type":"string"}],"name":"hasRole","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_operators","type":"address[]"}],"name":"removeAddressesFromWhitelist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"unlockTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"getDistributedToken","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_operator","type":"address"}],"name":"removeAddressFromWhitelist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"INITIAL_SUPPLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_member","type":"address[]"},{"name":"_amount","type":"uint256[]"}],"name":"distributeTokens","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"claimOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"dests","type":"address[]"},{"name":"values","type":"uint256[]"}],"name":"airdrop","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_operator","type":"address"}],"name":"addAddressToWhitelist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_operator","type":"address"}],"name":"whitelist","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"teams","outputs":[{"name":"lastWithdrawal","type":"uint256"},{"name":"tokensTotal","type":"uint256"},{"name":"tokensLeft","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_operators","type":"address[]"}],"name":"addAddressesToWhitelist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"pendingOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":false,"stateMutability":"nonpayable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"burner","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"amount","type":"uint256"}],"name":"Distributed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"member","type":"address"},{"indexed":false,"name":"balance","type":"uint256"}],"name":"MemberUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"operator","type":"address"},{"indexed":false,"name":"role","type":"string"}],"name":"RoleAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"operator","type":"address"},{"indexed":false,"name":"role","type":"string"}],"name":"RoleRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]

60806040523480156200001157600080fd5b5060038054600160a060020a03191633179055635bda42006005556040805180820190915260138082527f4e544f4b20546f6b656e20436f6e747261637400000000000000000000000000602090920191825262000072916008916200012c565b506040805180820190915260048082527f4e544f4b000000000000000000000000000000000000000000000000000000006020909201918252620000b9916009916200012c565b50600a8054601260ff199091161780825560ff16900a6301f78a4002600b819055600181905533600081815260208181526040808320859055805194855251929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a3620001d1565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200016f57805160ff19168380011785556200019f565b828001600101855582156200019f579182015b828111156200019f57825182559160200191906001019062000182565b50620001ad929150620001b1565b5090565b620001ce91905b80821115620001ad5760008155600101620001b8565b90565b611c8780620001e16000396000f3006080604052600436106101955763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde038114610209578063095ea7b3146102935780630988ca8c146102cb57806317ffc3201461033457806318160ddd1461035557806318b919e91461037c578063217fe6c61461039157806323b872dd146103f857806324953eaa14610422578063251c1aa31461047757806327d6ba211461048c578063286dd3f5146104a15780632ff2e9dc146104c2578063313ce567146104d757806342966c68146105025780634bd09c2a1461051a5780634e71e0c8146105a857806366188463146105bd57806367243482146105e157806370a082311461066f578063715018a6146106905780637b9417c8146106a55780638da5cb5b146106c657806395d89b41146106f75780639b19251a1461070c578063a9059cbb1461072d578063c458324014610751578063d73dd62314610790578063dd62ed3e146107b4578063e2ec6ec3146107db578063e30c397814610830578063f2fde38b14610845575b3480156101a157600080fd5b50604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f446f6573206e6f74206163636570742065746865720000000000000000000000604482015290519081900360640190fd5b34801561021557600080fd5b5061021e610866565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610258578181015183820152602001610240565b50505050905090810190601f1680156102855780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561029f57600080fd5b506102b7600160a060020a03600435166024356108f4565b604080519115158252519081900360200190f35b3480156102d757600080fd5b5060408051602060046024803582810135601f8101859004850286018501909652858552610332958335600160a060020a031695369560449491939091019190819084018382808284375094975061095b9650505050505050565b005b34801561034057600080fd5b50610332600160a060020a03600435166109c9565b34801561036157600080fd5b5061036a610a93565b60408051918252519081900360200190f35b34801561038857600080fd5b5061021e610a99565b34801561039d57600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526102b7958335600160a060020a0316953695604494919390910191908190840183828082843750949750610abe9650505050505050565b34801561040457600080fd5b506102b7600160a060020a0360043581169060243516604435610b31565b34801561042e57600080fd5b506040805160206004803580820135838102808601850190965280855261033295369593946024949385019291829185019084908082843750949750610c949650505050505050565b34801561048357600080fd5b5061036a610ce3565b34801561049857600080fd5b506102b7610ce9565b3480156104ad57600080fd5b50610332600160a060020a0360043516610d48565b3480156104ce57600080fd5b5061036a610d8f565b3480156104e357600080fd5b506104ec610d95565b6040805160ff9092168252519081900360200190f35b34801561050e57600080fd5b50610332600435610d9e565b34801561052657600080fd5b50604080516020600480358082013583810280860185019096528085526102b795369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750949750610da89650505050505050565b3480156105b457600080fd5b50610332610e98565b3480156105c957600080fd5b506102b7600160a060020a0360043516602435610f22565b3480156105ed57600080fd5b506040805160206004803580820135838102808601850190965280855261033295369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a9989019892975090820195509350839250850190849080828437509497506110119650505050505050565b34801561067b57600080fd5b5061036a600160a060020a036004351661108c565b34801561069c57600080fd5b506103326110a7565b3480156106b157600080fd5b50610332600160a060020a0360043516611115565b3480156106d257600080fd5b506106db611159565b60408051600160a060020a039092168252519081900360200190f35b34801561070357600080fd5b5061021e611168565b34801561071857600080fd5b506102b7600160a060020a03600435166111c3565b34801561073957600080fd5b506102b7600160a060020a03600435166024356111f2565b34801561075d57600080fd5b50610772600160a060020a03600435166112bf565b60408051938452602084019290925282820152519081900360600190f35b34801561079c57600080fd5b506102b7600160a060020a03600435166024356112e0565b3480156107c057600080fd5b5061036a600160a060020a0360043581169060243516611379565b3480156107e757600080fd5b5060408051602060048035808201358381028086018501909652808552610332953695939460249493850192918291850190849080828437509497506113a49650505050505050565b34801561083c57600080fd5b506106db6113e4565b34801561085157600080fd5b50610332600160a060020a03600435166113f3565b6008805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156108ec5780601f106108c1576101008083540402835291602001916108ec565b820191906000526020600020905b8154815290600101906020018083116108cf57829003601f168201915b505050505081565b336000818152600260209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b6109c5826004836040518082805190602001908083835b602083106109915780518252601f199092019160209182019101610972565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050611439565b5050565b600354600090600160a060020a031633146109e357600080fd5b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a038416916370a082319160248083019260209291908290030181600087803b158015610a4457600080fd5b505af1158015610a58573d6000803e3d6000fd5b505050506040513d6020811015610a6e57600080fd5b50516003549091506109c590600160a060020a0384811691168363ffffffff61144e16565b60015490565b6040805180820190915260098152600080516020611c1c833981519152602082015281565b6000610b2a836004846040518082805190602001908083835b60208310610af65780518252601f199092019160209182019101610ad7565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050611501565b9392505050565b600160a060020a038316600090815260208190526040812054821115610b5657600080fd5b600160a060020a0384166000908152600260209081526040808320338452909152902054821115610b8657600080fd5b600160a060020a0383161515610b9b57600080fd5b600160a060020a038416600090815260208190526040902054610bc4908363ffffffff61152016565b600160a060020a038086166000908152602081905260408082209390935590851681522054610bf9908363ffffffff61153216565b600160a060020a03808516600090815260208181526040808320949094559187168152600282528281203382529091522054610c3b908363ffffffff61152016565b600160a060020a0380861660008181526002602090815260408083203384528252918290209490945580518681529051928716939192600080516020611c3c833981519152929181900390910190a35060019392505050565b600354600090600160a060020a03163314610cae57600080fd5b5060005b81518110156109c557610cdb8282815181101515610ccc57fe5b90602001906020020151610d48565b600101610cb2565b60055481565b60008033610d1a81604080519081016040528060098152602001600080516020611c1c83398151915281525061095b565b6005544210610d2857600080fd5b610d313361153f565b9150610d3e303384611700565b5060019250505090565b600354600160a060020a03163314610d5f57600080fd5b610d8c81604080519081016040528060098152602001600080516020611c1c8339815191528152506117e5565b50565b600b5481565b600a5460ff1681565b610d8c33826118f6565b6003546000908190600160a060020a03163314610dc457600080fd5b8251845114610dd257600080fd5b5060005b8351811015610e5a57610e318482815181101515610df057fe5b9060200190602002015160008584815181101515610e0a57fe5b906020019060200201518685815181101515610e2257fe5b906020019060200201516119e5565b50610e528482815181101515610e4357fe5b90602001906020020151611115565b600101610dd6565b835160408051918252517fddc9c30275a04c48091f24199f9c405765de34d979d6847f5b9798a57232d2e59181900360200190a15060019392505050565b600754600160a060020a03163314610eaf57600080fd5b600754600354604051600160a060020a0392831692909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600780546003805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a03841617909155169055565b336000908152600260209081526040808320600160a060020a0386168452909152812054808310610f7657336000908152600260209081526040808320600160a060020a0388168452909152812055610fab565b610f86818463ffffffff61152016565b336000908152600260209081526040808320600160a060020a03891684529091529020555b336000818152600260209081526040808320600160a060020a0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b600354600090600160a060020a0316331461102b57600080fd5b815183511461103957600080fd5b5060005b82518110156110875761107e838281518110151561105757fe5b90602001906020020151838381518110151561106f57fe5b906020019060200201516111f2565b5060010161103d565b505050565b600160a060020a031660009081526020819052604090205490565b600354600160a060020a031633146110be57600080fd5b600354604051600160a060020a03909116907ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482090600090a26003805473ffffffffffffffffffffffffffffffffffffffff19169055565b600354600160a060020a0316331461112c57600080fd5b610d8c81604080519081016040528060098152602001600080516020611c1c833981519152815250611a6e565b600354600160a060020a031681565b6009805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156108ec5780601f106108c1576101008083540402835291602001916108ec565b600061095582604080519081016040528060098152602001600080516020611c1c833981519152815250610abe565b3360009081526020819052604081205482111561120e57600080fd5b600160a060020a038316151561122357600080fd5b33600090815260208190526040902054611243908363ffffffff61152016565b3360009081526020819052604080822092909255600160a060020a03851681522054611275908363ffffffff61153216565b600160a060020a03841660008181526020818152604091829020939093558051858152905191923392600080516020611c3c8339815191529281900390910190a350600192915050565b60066020526000908152604090208054600182015460029092015490919083565b336000908152600260209081526040808320600160a060020a0386168452909152812054611314908363ffffffff61153216565b336000818152600260209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b600354600090600160a060020a031633146113be57600080fd5b5060005b81518110156109c5576113dc8282815181101515610e4357fe5b6001016113c2565b600754600160a060020a031681565b600354600160a060020a0316331461140a57600080fd5b6007805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6114438282611501565b15156109c557600080fd5b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b1580156114ca57600080fd5b505af11580156114de573d6000803e3d6000fd5b505050506040513d60208110156114f457600080fd5b5051151561108757600080fd5b600160a060020a03166000908152602091909152604090205460ff1690565b60008282111561152c57fe5b50900390565b8181018281101561095557fe5b600160a060020a03811660009081526006602052604081206002810154829081908190819081106115d157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f596f75277665207370656e7420796f7572207368617265000000000000000000604482015290519081900360640190fd5b6115d9611b40565b85549092509050808211156115ff576115f8828263ffffffff61152016565b935061166e565b8082141561166e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f497473206e6f2074696d65000000000000000000000000000000000000000000604482015290519081900360640190fd5b846002015485600101541015801561168a575060008560010154115b156116ce5781600a14156116a457846002015492506116ce565b60018501546116cb906116be90600a63ffffffff611b9616565b859063ffffffff611bab16565b92505b6116f4878387600101546116ef878a6002015461152090919063ffffffff16565b6119e5565b50919695505050505050565b600160a060020a03831660009081526020819052604081205482111561172557600080fd5b600160a060020a038316151561173a57600080fd5b600160a060020a038416600090815260208190526040902054611763908363ffffffff61152016565b600160a060020a038086166000908152602081905260408082209390935590851681522054611798908363ffffffff61153216565b600160a060020a03808516600081815260208181526040918290209490945580518681529051919392881692600080516020611c3c83398151915292918290030190a35060019392505050565b61184f826004836040518082805190602001908083835b6020831061181b5780518252601f1990920191602091820191016117fc565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050611bd4565b81600160a060020a03167fd211483f91fc6eff862467f8de606587a30c8fc9981056f051b897a418df803a826040518080602001828103825283818151815260200191508051906020019080838360005b838110156118b85781810151838201526020016118a0565b50505050905090810190601f1680156118e55780820380516001836020036101000a031916815260200191505b509250505060405180910390a25050565b600160a060020a03821660009081526020819052604090205481111561191b57600080fd5b600160a060020a038216600090815260208190526040902054611944908263ffffffff61152016565b600160a060020a038316600090815260208190526040902055600154611970908263ffffffff61152016565b600155604080518281529051600160a060020a038416917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a2604080518281529051600091600160a060020a03851691600080516020611c3c8339815191529181900360200190a35050565b604080516060810182528481526020808201858152828401858152600160a060020a038916600081815260068552868120955186559251600186015590516002909401939093558351928352908201849052825190927f721b01fe9b63fefb91c981e165c04d96058511dc990901f8d80c37dd2f6f695e928290030190a1506001949350505050565b611ad8826004836040518082805190602001908083835b60208310611aa45780518252601f199092019160209182019101611a85565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050611bf6565b81600160a060020a03167fbfec83d64eaa953f2708271a023ab9ee82057f8f3578d548c1a4ba0b5b70048982604051808060200182810382528381815181526020019150805190602001908083836000838110156118b85781810151838201526020016118a0565b600554600090429062278d00600a82841315611b8f578284038281129083141715611b6a57600194505b818385031315611b7f57600182848603040194505b8085138186141715611b8f578094505b5050505090565b60008183811515611ba357fe5b049392505050565b6000821515611bbc57506000610955565b50818102818382811515611bcc57fe5b041461095557fe5b600160a060020a0316600090815260209190915260409020805460ff19169055565b600160a060020a0316600090815260209190915260409020805460ff19166001179055560077686974656c6973740000000000000000000000000000000000000000000000ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a723058202d1ab0b4db07b4b323daf78367917d789e8f1b2ae3c45f194bf783badb7883650029

Deployed Bytecode

0x6080604052600436106101955763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde038114610209578063095ea7b3146102935780630988ca8c146102cb57806317ffc3201461033457806318160ddd1461035557806318b919e91461037c578063217fe6c61461039157806323b872dd146103f857806324953eaa14610422578063251c1aa31461047757806327d6ba211461048c578063286dd3f5146104a15780632ff2e9dc146104c2578063313ce567146104d757806342966c68146105025780634bd09c2a1461051a5780634e71e0c8146105a857806366188463146105bd57806367243482146105e157806370a082311461066f578063715018a6146106905780637b9417c8146106a55780638da5cb5b146106c657806395d89b41146106f75780639b19251a1461070c578063a9059cbb1461072d578063c458324014610751578063d73dd62314610790578063dd62ed3e146107b4578063e2ec6ec3146107db578063e30c397814610830578063f2fde38b14610845575b3480156101a157600080fd5b50604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f446f6573206e6f74206163636570742065746865720000000000000000000000604482015290519081900360640190fd5b34801561021557600080fd5b5061021e610866565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610258578181015183820152602001610240565b50505050905090810190601f1680156102855780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561029f57600080fd5b506102b7600160a060020a03600435166024356108f4565b604080519115158252519081900360200190f35b3480156102d757600080fd5b5060408051602060046024803582810135601f8101859004850286018501909652858552610332958335600160a060020a031695369560449491939091019190819084018382808284375094975061095b9650505050505050565b005b34801561034057600080fd5b50610332600160a060020a03600435166109c9565b34801561036157600080fd5b5061036a610a93565b60408051918252519081900360200190f35b34801561038857600080fd5b5061021e610a99565b34801561039d57600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526102b7958335600160a060020a0316953695604494919390910191908190840183828082843750949750610abe9650505050505050565b34801561040457600080fd5b506102b7600160a060020a0360043581169060243516604435610b31565b34801561042e57600080fd5b506040805160206004803580820135838102808601850190965280855261033295369593946024949385019291829185019084908082843750949750610c949650505050505050565b34801561048357600080fd5b5061036a610ce3565b34801561049857600080fd5b506102b7610ce9565b3480156104ad57600080fd5b50610332600160a060020a0360043516610d48565b3480156104ce57600080fd5b5061036a610d8f565b3480156104e357600080fd5b506104ec610d95565b6040805160ff9092168252519081900360200190f35b34801561050e57600080fd5b50610332600435610d9e565b34801561052657600080fd5b50604080516020600480358082013583810280860185019096528085526102b795369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750949750610da89650505050505050565b3480156105b457600080fd5b50610332610e98565b3480156105c957600080fd5b506102b7600160a060020a0360043516602435610f22565b3480156105ed57600080fd5b506040805160206004803580820135838102808601850190965280855261033295369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a9989019892975090820195509350839250850190849080828437509497506110119650505050505050565b34801561067b57600080fd5b5061036a600160a060020a036004351661108c565b34801561069c57600080fd5b506103326110a7565b3480156106b157600080fd5b50610332600160a060020a0360043516611115565b3480156106d257600080fd5b506106db611159565b60408051600160a060020a039092168252519081900360200190f35b34801561070357600080fd5b5061021e611168565b34801561071857600080fd5b506102b7600160a060020a03600435166111c3565b34801561073957600080fd5b506102b7600160a060020a03600435166024356111f2565b34801561075d57600080fd5b50610772600160a060020a03600435166112bf565b60408051938452602084019290925282820152519081900360600190f35b34801561079c57600080fd5b506102b7600160a060020a03600435166024356112e0565b3480156107c057600080fd5b5061036a600160a060020a0360043581169060243516611379565b3480156107e757600080fd5b5060408051602060048035808201358381028086018501909652808552610332953695939460249493850192918291850190849080828437509497506113a49650505050505050565b34801561083c57600080fd5b506106db6113e4565b34801561085157600080fd5b50610332600160a060020a03600435166113f3565b6008805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156108ec5780601f106108c1576101008083540402835291602001916108ec565b820191906000526020600020905b8154815290600101906020018083116108cf57829003601f168201915b505050505081565b336000818152600260209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b6109c5826004836040518082805190602001908083835b602083106109915780518252601f199092019160209182019101610972565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050611439565b5050565b600354600090600160a060020a031633146109e357600080fd5b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a038416916370a082319160248083019260209291908290030181600087803b158015610a4457600080fd5b505af1158015610a58573d6000803e3d6000fd5b505050506040513d6020811015610a6e57600080fd5b50516003549091506109c590600160a060020a0384811691168363ffffffff61144e16565b60015490565b6040805180820190915260098152600080516020611c1c833981519152602082015281565b6000610b2a836004846040518082805190602001908083835b60208310610af65780518252601f199092019160209182019101610ad7565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050611501565b9392505050565b600160a060020a038316600090815260208190526040812054821115610b5657600080fd5b600160a060020a0384166000908152600260209081526040808320338452909152902054821115610b8657600080fd5b600160a060020a0383161515610b9b57600080fd5b600160a060020a038416600090815260208190526040902054610bc4908363ffffffff61152016565b600160a060020a038086166000908152602081905260408082209390935590851681522054610bf9908363ffffffff61153216565b600160a060020a03808516600090815260208181526040808320949094559187168152600282528281203382529091522054610c3b908363ffffffff61152016565b600160a060020a0380861660008181526002602090815260408083203384528252918290209490945580518681529051928716939192600080516020611c3c833981519152929181900390910190a35060019392505050565b600354600090600160a060020a03163314610cae57600080fd5b5060005b81518110156109c557610cdb8282815181101515610ccc57fe5b90602001906020020151610d48565b600101610cb2565b60055481565b60008033610d1a81604080519081016040528060098152602001600080516020611c1c83398151915281525061095b565b6005544210610d2857600080fd5b610d313361153f565b9150610d3e303384611700565b5060019250505090565b600354600160a060020a03163314610d5f57600080fd5b610d8c81604080519081016040528060098152602001600080516020611c1c8339815191528152506117e5565b50565b600b5481565b600a5460ff1681565b610d8c33826118f6565b6003546000908190600160a060020a03163314610dc457600080fd5b8251845114610dd257600080fd5b5060005b8351811015610e5a57610e318482815181101515610df057fe5b9060200190602002015160008584815181101515610e0a57fe5b906020019060200201518685815181101515610e2257fe5b906020019060200201516119e5565b50610e528482815181101515610e4357fe5b90602001906020020151611115565b600101610dd6565b835160408051918252517fddc9c30275a04c48091f24199f9c405765de34d979d6847f5b9798a57232d2e59181900360200190a15060019392505050565b600754600160a060020a03163314610eaf57600080fd5b600754600354604051600160a060020a0392831692909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600780546003805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a03841617909155169055565b336000908152600260209081526040808320600160a060020a0386168452909152812054808310610f7657336000908152600260209081526040808320600160a060020a0388168452909152812055610fab565b610f86818463ffffffff61152016565b336000908152600260209081526040808320600160a060020a03891684529091529020555b336000818152600260209081526040808320600160a060020a0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b600354600090600160a060020a0316331461102b57600080fd5b815183511461103957600080fd5b5060005b82518110156110875761107e838281518110151561105757fe5b90602001906020020151838381518110151561106f57fe5b906020019060200201516111f2565b5060010161103d565b505050565b600160a060020a031660009081526020819052604090205490565b600354600160a060020a031633146110be57600080fd5b600354604051600160a060020a03909116907ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482090600090a26003805473ffffffffffffffffffffffffffffffffffffffff19169055565b600354600160a060020a0316331461112c57600080fd5b610d8c81604080519081016040528060098152602001600080516020611c1c833981519152815250611a6e565b600354600160a060020a031681565b6009805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156108ec5780601f106108c1576101008083540402835291602001916108ec565b600061095582604080519081016040528060098152602001600080516020611c1c833981519152815250610abe565b3360009081526020819052604081205482111561120e57600080fd5b600160a060020a038316151561122357600080fd5b33600090815260208190526040902054611243908363ffffffff61152016565b3360009081526020819052604080822092909255600160a060020a03851681522054611275908363ffffffff61153216565b600160a060020a03841660008181526020818152604091829020939093558051858152905191923392600080516020611c3c8339815191529281900390910190a350600192915050565b60066020526000908152604090208054600182015460029092015490919083565b336000908152600260209081526040808320600160a060020a0386168452909152812054611314908363ffffffff61153216565b336000818152600260209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b600354600090600160a060020a031633146113be57600080fd5b5060005b81518110156109c5576113dc8282815181101515610e4357fe5b6001016113c2565b600754600160a060020a031681565b600354600160a060020a0316331461140a57600080fd5b6007805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6114438282611501565b15156109c557600080fd5b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b1580156114ca57600080fd5b505af11580156114de573d6000803e3d6000fd5b505050506040513d60208110156114f457600080fd5b5051151561108757600080fd5b600160a060020a03166000908152602091909152604090205460ff1690565b60008282111561152c57fe5b50900390565b8181018281101561095557fe5b600160a060020a03811660009081526006602052604081206002810154829081908190819081106115d157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f596f75277665207370656e7420796f7572207368617265000000000000000000604482015290519081900360640190fd5b6115d9611b40565b85549092509050808211156115ff576115f8828263ffffffff61152016565b935061166e565b8082141561166e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f497473206e6f2074696d65000000000000000000000000000000000000000000604482015290519081900360640190fd5b846002015485600101541015801561168a575060008560010154115b156116ce5781600a14156116a457846002015492506116ce565b60018501546116cb906116be90600a63ffffffff611b9616565b859063ffffffff611bab16565b92505b6116f4878387600101546116ef878a6002015461152090919063ffffffff16565b6119e5565b50919695505050505050565b600160a060020a03831660009081526020819052604081205482111561172557600080fd5b600160a060020a038316151561173a57600080fd5b600160a060020a038416600090815260208190526040902054611763908363ffffffff61152016565b600160a060020a038086166000908152602081905260408082209390935590851681522054611798908363ffffffff61153216565b600160a060020a03808516600081815260208181526040918290209490945580518681529051919392881692600080516020611c3c83398151915292918290030190a35060019392505050565b61184f826004836040518082805190602001908083835b6020831061181b5780518252601f1990920191602091820191016117fc565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050611bd4565b81600160a060020a03167fd211483f91fc6eff862467f8de606587a30c8fc9981056f051b897a418df803a826040518080602001828103825283818151815260200191508051906020019080838360005b838110156118b85781810151838201526020016118a0565b50505050905090810190601f1680156118e55780820380516001836020036101000a031916815260200191505b509250505060405180910390a25050565b600160a060020a03821660009081526020819052604090205481111561191b57600080fd5b600160a060020a038216600090815260208190526040902054611944908263ffffffff61152016565b600160a060020a038316600090815260208190526040902055600154611970908263ffffffff61152016565b600155604080518281529051600160a060020a038416917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a2604080518281529051600091600160a060020a03851691600080516020611c3c8339815191529181900360200190a35050565b604080516060810182528481526020808201858152828401858152600160a060020a038916600081815260068552868120955186559251600186015590516002909401939093558351928352908201849052825190927f721b01fe9b63fefb91c981e165c04d96058511dc990901f8d80c37dd2f6f695e928290030190a1506001949350505050565b611ad8826004836040518082805190602001908083835b60208310611aa45780518252601f199092019160209182019101611a85565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050611bf6565b81600160a060020a03167fbfec83d64eaa953f2708271a023ab9ee82057f8f3578d548c1a4ba0b5b70048982604051808060200182810382528381815181526020019150805190602001908083836000838110156118b85781810151838201526020016118a0565b600554600090429062278d00600a82841315611b8f578284038281129083141715611b6a57600194505b818385031315611b7f57600182848603040194505b8085138186141715611b8f578094505b5050505090565b60008183811515611ba357fe5b049392505050565b6000821515611bbc57506000610955565b50818102818382811515611bcc57fe5b041461095557fe5b600160a060020a0316600090815260209190915260409020805460ff19169055565b600160a060020a0316600090815260209190915260409020805460ff19166001179055560077686974656c6973740000000000000000000000000000000000000000000000ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a723058202d1ab0b4db07b4b323daf78367917d789e8f1b2ae3c45f194bf783badb7883650029

Swarm Source

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