ETH Price: $2,733.25 (+0.51%)

Token

C3Wallet (C3W)
 

Overview

Max Total Supply

50,000,000,000 C3W

Holders

1,729

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 8 Decimals)

Balance
0 C3W

Value
$0.00
0xaff7a731486619483976f36fc680e74e8d36ebd2
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

C3Wallet's C3W will serve as distribution and payment means for C3 energy generator platform, decentralizing energy industry with the magnetic generator owned by individuals.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
C3Wallet

Compiler Version
v0.4.25+commit.59dbf8f1

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-09-29
*/

pragma solidity ^0.4.24;


/**
 * @title ERC223
 * @dev New Interface for ERC223
 */
contract ERC223 {

    // functions
    function balanceOf(address _owner) external view returns (uint256);
    function transfer(address _to, uint256 _value) public returns (bool success);
    function transfer(address _to, uint256 _value, bytes _data) public returns (bool success);
    function transferFrom(address _from, address _to, uint256 _value) external returns (bool success);
    function approve(address _spender, uint256 _value) external returns (bool success);
    function allowance(address _owner, address _spender) external constant returns (uint256 remaining);



    // Getters
    function name() external constant returns  (string _name);
    function symbol() external constant returns  (string _symbol);
    function decimals() external constant returns (uint8 _decimals);
    function totalSupply() external constant returns (uint256 _totalSupply);


    // Events
    event Transfer(address indexed _from, address indexed _to, uint256 _value);
    event ERC223Transfer(address indexed _from, address indexed _to, uint256 _value, bytes _data);
    event Approval(address indexed _owner, address indexed _spender, uint _value);
    event Burn(address indexed burner, uint256 value);
    event FrozenAccount(address indexed targets);
    event UnfrozenAccount(address indexed target);
    event LockedAccount(address indexed target, uint256 locked);
    event UnlockedAccount(address indexed target);
}


/**
 * @notice The contract will throw tokens if it does not inherit this
 * @title ERC223ReceivingContract
 * @dev Contract for ERC223 token fallback
 */
contract ERC223ReceivingContract {

    TKN internal fallback;

    struct TKN {
        address sender;
        uint value;
        bytes data;
        bytes4 sig;
    }

    function tokenFallback(address _from, uint256 _value, bytes _data) public pure {
        TKN memory tkn;
        tkn.sender = _from;
        tkn.value = _value;
        tkn.data = _data;
        uint32 u = uint32(_data[3]) + (uint32(_data[2]) << 8) + (uint32(_data[1]) << 16) + (uint32(_data[0]) << 24);
        tkn.sig = bytes4(u);

        /*
         * tkn variable is analogue of msg variable of Ether transaction
         * tkn.sender is person who initiated this token transaction   (analogue of msg.sender)
         * tkn.value the number of tokens that were sent   (analogue of msg.value)
         * tkn.data is data of token transaction   (analogue of msg.data)
         * tkn.sig is 4 bytes signature of function if data of token transaction is a function execution
         */


    }
}


/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        assert(c / a == b);
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        // assert(b > 0); // Solidity automatically throws when dividing by 0
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold
        return c;
    }

    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) {
        uint256 c = a + b;
        assert(c >= a);
        return c;
    }
}


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


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


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

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

    /**
     * @dev Allows the current owner to relinquish control of the contract.
     * @notice Renouncing to ownership will leave the contract without an owner.
     * It will not be possible to call the functions with the `onlyOwner`
     * modifier anymore.
     */
    function renounceOwnership() public onlyOwner {
        emit OwnershipRenounced(owner);
        owner = address(0);
    }

    /**
     * @dev Allows the current owner to transfer control of the contract to a newOwner.
     * @param _newOwner The address to transfer ownership to.
     */
    function transferOwnership(address _newOwner) public onlyOwner {
        _transferOwnership(_newOwner);
    }

    /**
     * @dev Transfers control of the contract to a newOwner.
     * @param _newOwner The address to transfer ownership to.
     */
    function _transferOwnership(address _newOwner) internal {
        require(_newOwner != address(0));
        emit OwnershipTransferred(owner, _newOwner);
        owner = _newOwner;
    }
}



/**
 * @title C3Wallet
 * @dev C3Wallet is a ERC223 Token with ERC20 functions and events
 *      Fully backward compatible with ERC20
 */
contract C3Wallet is ERC223, Ownable {
    using SafeMath for uint;


    string public name = "C3Wallet";
    string public symbol = "C3W";
    uint8 public decimals = 8;
    uint256 public totalSupply = 5e10 * 1e8;
    
    mapping (address => bool) public frozenAccount;
    mapping (address => uint256) public unlockUnixTime;


    constructor() public {
        balances[msg.sender] = totalSupply;
    }


    mapping (address => uint256) public balances;

    mapping(address => mapping (address => uint256)) public allowance;


    /**
     * @dev Getters
     */
    // Function to access name of token .
    function name() external constant returns (string _name) {
        return name;
    }
    // Function to access symbol of token .
    function symbol() external constant returns (string _symbol) {
        return symbol;
    }
    // Function to access decimals of token .
    function decimals() external constant returns (uint8 _decimals) {
        return decimals;
    }
    // Function to access total supply of tokens .
    function totalSupply() external constant returns (uint256 _totalSupply) {
        return totalSupply;
    }


    /**
     * @dev Get balance of a token owner
     * @param _owner The address which one owns tokens
     */
    function balanceOf(address _owner) external view returns (uint256 balance) {
        return balances[_owner];
    }


    /**
     * @notice This function is modified for erc223 standard
     * @dev ERC20 transfer function added for backward compatibility.
     * @param _to Address of token receiver
     * @param _value Number of tokens to send
     */
    function transfer(address _to, uint _value) public returns (bool success) {
        require(_value > 0
                && frozenAccount[msg.sender] == false
                && frozenAccount[_to] == false
                && now > unlockUnixTime[msg.sender]
                && now > unlockUnixTime[_to]
                && _to != address(this));
        bytes memory empty = hex"00000000";
        if (isContract(_to)) {
            return transferToContract(_to, _value, empty);
        } else {
            return transferToAddress(_to, _value, empty);
        }
    }


    /**
     * @dev ERC223 transfer function
     * @param _to Address of token receiver
     * @param _value Number of tokens to send
     * @param _data data equivalent to tx.data from ethereum transaction
     */
    function transfer(address _to, uint _value, bytes _data) public returns (bool success) {
        require(_value > 0
                && frozenAccount[msg.sender] == false
                && frozenAccount[_to] == false
                && now > unlockUnixTime[msg.sender]
                && now > unlockUnixTime[_to]
                && _to != address(this));
        if (isContract(_to)) {
            return transferToContract(_to, _value, _data);
        } else {
            return transferToAddress(_to, _value, _data);
        }
    }


    function isContract(address _addr) private view returns (bool is_contract) {
        uint length;
        assembly {
            //retrieve the size of the code on target address, this needs assembly
            length := extcodesize(_addr)
        }
        return (length > 0);
    }
    
    /**
     * @dev Prevent targets from sending or receiving tokens
     * @param _targets Addresses to be frozen
     */
    function freezeAccounts(address[] _targets) onlyOwner public {
        require(_targets.length > 0);

        for (uint j = 0; j < _targets.length; j++) {
            require(_targets[j] != 0x0 && _targets[j] != Ownable.owner);
            frozenAccount[_targets[j]] = true;
            emit FrozenAccount(_targets[j]);
        }
    }
    
    /**
     * @dev Enable frozen targets to send or receive tokens
     * @param _targets Addresses to be unfrozen
     */
    function unfreezeAccounts(address[] _targets) onlyOwner public {
        require(_targets.length > 0);

        for (uint j = 0; j < _targets.length; j++) {
            require(_targets[j] != 0x0 && _targets[j] != Ownable.owner);
            frozenAccount[_targets[j]] = false;
            emit UnfrozenAccount(_targets[j]);
        }
    }
    
    

    /**
     * @dev Prevent targets from sending or receiving tokens by setting Unix times.
     * @param _targets Addresses to be locked funds
     * @param _unixTimes Unix times when locking up will be finished
     */
    function lockAccounts(address[] _targets, uint[] _unixTimes) onlyOwner public {
        require(_targets.length > 0
                && _targets.length == _unixTimes.length);

        for(uint j = 0; j < _targets.length; j++){
            require(_targets[j] != Ownable.owner);
            require(unlockUnixTime[_targets[j]] < _unixTimes[j]);
            unlockUnixTime[_targets[j]] = _unixTimes[j];
            emit LockedAccount(_targets[j], _unixTimes[j]);
        }
    }
    
     /**
     * @dev Enable locked targets to send or receive tokens.
     * @param _targets Addresses to be locked funds
     */
    function unlockAccounts(address[] _targets) onlyOwner public {
        require(_targets.length > 0);
         
        for(uint j = 0; j < _targets.length; j++){
            unlockUnixTime[_targets[j]] = 0;
            emit UnlockedAccount(_targets[j]);
        }
    }


    // function which is called when transaction target is an address
    function transferToAddress(address _to, uint _value, bytes _data) private returns (bool success) {
        require(balances[msg.sender] >= _value);
        balances[msg.sender] = balances[msg.sender].sub(_value);
        balances[_to] = balances[_to].add(_value);
        emit ERC223Transfer(msg.sender, _to, _value, _data);
        emit Transfer(msg.sender, _to, _value);
        return true;
    }


    // function which is called when transaction target is a contract
    function transferToContract(address _to, uint _value, bytes _data) private returns (bool success) {
        require(balances[msg.sender] >= _value);
        balances[msg.sender] = balances[msg.sender].sub(_value);
        balances[_to] = balances[_to].add(_value);
        ERC223ReceivingContract receiver = ERC223ReceivingContract(_to);
        receiver.tokenFallback(msg.sender, _value, _data);
        emit ERC223Transfer(msg.sender, _to, _value, _data);
        emit Transfer(msg.sender, _to, _value);
        return true;
    }


    /**
     * @dev Transfer tokens from one address to another
     *      Added due to backwards compatibility with ERC20
     * @param _from address The address which you want to send tokens from
     * @param _to address The address which you want to transfer to
     * @param _value uint256 The amount of tokens to be transferred
     */
    function transferFrom(address _from, address _to, uint256 _value) external returns (bool success) {
        require(_to != address(0)
                && _value > 0
                && balances[_from] >= _value
                && allowance[_from][msg.sender] >= _value
                && frozenAccount[_from] == false
                && frozenAccount[_to] == false
                && now > unlockUnixTime[_from]
                && now > unlockUnixTime[_to]);


        balances[_from] = balances[_from].sub(_value);
        balances[_to] = balances[_to].add(_value);
        allowance[_from][msg.sender] = allowance[_from][msg.sender].sub(_value);
        emit Transfer(_from, _to, _value);
        return true;
    }


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


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


    /**
     * @dev Function to distribute tokens to the list of addresses by the provided uniform amount
     * @param _addresses List of addresses
     * @param _amount Uniform amount of tokens
     * @return A bool specifying the result of transfer
     */
    function multiTransfer(address[] _addresses, uint256 _amount) public returns (bool) {
        require(_amount > 0
                && _addresses.length > 0
                && frozenAccount[msg.sender] == false
                && now > unlockUnixTime[msg.sender]);

        uint256 totalAmount = _amount.mul(_addresses.length);
        require(balances[msg.sender] >= totalAmount);

        for (uint j = 0; j < _addresses.length; j++) {
            require(_addresses[j] != 0x0
                    && frozenAccount[_addresses[j]] == false
                    && now > unlockUnixTime[_addresses[j]]);
                    
            balances[msg.sender] = balances[msg.sender].sub(_amount);
            balances[_addresses[j]] = balances[_addresses[j]].add(_amount);
            emit Transfer(msg.sender, _addresses[j], _amount);
        }
        return true;
    }


    /**
     * @dev Function to distribute tokens to the list of addresses by the provided various amount
     * @param _addresses list of addresses
     * @param _amounts list of token amounts
     */
    function multiTransfer(address[] _addresses, uint256[] _amounts) public returns (bool) {
        require(_addresses.length > 0
                && _addresses.length == _amounts.length
                && frozenAccount[msg.sender] == false
                && now > unlockUnixTime[msg.sender]);

        uint256 totalAmount = 0;

        for(uint j = 0; j < _addresses.length; j++){
            require(_amounts[j] > 0
                    && _addresses[j] != 0x0
                    && frozenAccount[_addresses[j]] == false
                    && now > unlockUnixTime[_addresses[j]]);

            totalAmount = totalAmount.add(_amounts[j]);
        }
        require(balances[msg.sender] >= totalAmount);

        for (j = 0; j < _addresses.length; j++) {
            balances[msg.sender] = balances[msg.sender].sub(_amounts[j]);
            balances[_addresses[j]] = balances[_addresses[j]].add(_amounts[j]);
            emit Transfer(msg.sender, _addresses[j], _amounts[j]);
        }
        return true;
    }
    
    
    /**
     * @dev Burns a specific amount of tokens.
     * @param _from The address that will burn the tokens.
     * @param _tokenAmount The amount of token to be burned
     */
    function burn(address _from, uint256 _tokenAmount) onlyOwner public {
        require(_tokenAmount > 0
                && balances[_from] >= _tokenAmount);
        
        
        balances[_from] = balances[_from].sub(_tokenAmount);
        totalSupply = totalSupply.sub(_tokenAmount);
        emit Burn(_from, _tokenAmount);
    }


    /**
     * @dev default payable function executed after receiving ether
     */
    function () public payable {
        // does not accept ether
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"_name","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_targets","type":"address[]"}],"name":"unfreezeAccounts","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"_totalSupply","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_addresses","type":"address[]"},{"name":"_amounts","type":"uint256[]"}],"name":"multiTransfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"balances","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"_decimals","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_targets","type":"address[]"},{"name":"_unixTimes","type":"uint256[]"}],"name":"lockAccounts","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"_symbol","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_tokenAmount","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_addresses","type":"address[]"},{"name":"_amount","type":"uint256"}],"name":"multiTransfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_targets","type":"address[]"}],"name":"freezeAccounts","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"frozenAccount","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_data","type":"bytes"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"unlockUnixTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_targets","type":"address[]"}],"name":"unlockAccounts","outputs":[],"payable":false,"stateMutability":"nonpayable","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":true,"stateMutability":"payable","type":"fallback"},{"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":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_value","type":"uint256"},{"indexed":false,"name":"_data","type":"bytes"}],"name":"ERC223Transfer","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":"burner","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"targets","type":"address"}],"name":"FrozenAccount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"target","type":"address"}],"name":"UnfrozenAccount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"target","type":"address"},{"indexed":false,"name":"locked","type":"uint256"}],"name":"LockedAccount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"target","type":"address"}],"name":"UnlockedAccount","type":"event"}]

60c0604052600860808190527f433357616c6c657400000000000000000000000000000000000000000000000060a0908152620000409160019190620000da565b506040805180820190915260038082527f433357000000000000000000000000000000000000000000000000000000000060209092019182526200008791600291620000da565b506003805460ff19166008179055674563918244f40000600455348015620000ae57600080fd5b5060008054600160a060020a03191633908117825560045490825260076020526040909120556200017f565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200011d57805160ff19168380011785556200014d565b828001600101855582156200014d579182015b828111156200014d57825182559160200191906001019062000130565b506200015b9291506200015f565b5090565b6200017c91905b808211156200015b576000815560010162000166565b90565b611cd0806200018f6000396000f3006080604052600436106101325763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde038114610134578063095ea7b3146101be578063170e2070146101f657806318160ddd1461024b5780631e89d5451461027257806323b872dd1461030057806327e235e31461032a578063313ce5671461034b57806370a0823114610376578063715018a6146103975780638da5cb5b146103ac5780638f78b34a146103dd57806395d89b411461046b5780639dc29fac14610480578063a16a3179146104a4578063a9059cbb146104fb578063aad120291461051f578063b414d4b614610574578063be45fd6214610595578063cbbe974b146105fe578063dd62ed3e1461061f578063ebaddea714610646578063f2fde38b1461069b575b005b34801561014057600080fd5b506101496106bc565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561018357818101518382015260200161016b565b50505050905090810190601f1680156101b05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101ca57600080fd5b506101e2600160a060020a0360043516602435610751565b604080519115158252519081900360200190f35b34801561020257600080fd5b5060408051602060048035808201358381028086018501909652808552610132953695939460249493850192918291850190849080828437509497506107b79650505050505050565b34801561025757600080fd5b506102606108f3565b60408051918252519081900360200190f35b34801561027e57600080fd5b50604080516020600480358082013583810280860185019096528085526101e295369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a9989019892975090820195509350839250850190849080828437509497506108f99650505050505050565b34801561030c57600080fd5b506101e2600160a060020a0360043581169060243516604435610beb565b34801561033657600080fd5b50610260600160a060020a0360043516610def565b34801561035757600080fd5b50610360610e01565b6040805160ff9092168252519081900360200190f35b34801561038257600080fd5b50610260600160a060020a0360043516610e0a565b3480156103a357600080fd5b50610132610e25565b3480156103b857600080fd5b506103c1610e91565b60408051600160a060020a039092168252519081900360200190f35b3480156103e957600080fd5b506040805160206004803580820135838102808601850190965280855261013295369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750949750610ea09650505050505050565b34801561047757600080fd5b5061014961103d565b34801561048c57600080fd5b50610132600160a060020a036004351660243561109b565b3480156104b057600080fd5b50604080516020600480358082013583810280860185019096528085526101e29536959394602494938501929182918501908490808284375094975050933594506111809350505050565b34801561050757600080fd5b506101e2600160a060020a03600435166024356113a5565b34801561052b57600080fd5b5060408051602060048035808201358381028086018501909652808552610132953695939460249493850192918291850190849080828437509497506114939650505050505050565b34801561058057600080fd5b506101e2600160a060020a03600435166115cb565b3480156105a157600080fd5b50604080516020600460443581810135601f81018490048402850184019095528484526101e2948235600160a060020a03169460248035953695946064949201919081908401838280828437509497506115e09650505050505050565b34801561060a57600080fd5b50610260600160a060020a03600435166116ae565b34801561062b57600080fd5b50610260600160a060020a03600435811690602435166116c0565b34801561065257600080fd5b5060408051602060048035808201358381028086018501909652808552610132953695939460249493850192918291850190849080828437509497506116eb9650505050505050565b3480156106a757600080fd5b50610132600160a060020a03600435166117aa565b60018054604080516020601f600260001961010087891615020190951694909404938401819004810282018101909252828152606093909290918301828280156107475780601f1061071c57610100808354040283529160200191610747565b820191906000526020600020905b81548152906001019060200180831161072a57829003601f168201915b5050505050905090565b336000818152600860209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b60008054600160a060020a031633146107cf57600080fd5b81516000106107dd57600080fd5b5060005b81518110156108ef5781818151811015156107f857fe5b90602001906020020151600160a060020a031660001415801561084957506000548251600160a060020a039091169083908390811061083357fe5b90602001906020020151600160a060020a031614155b151561085457600080fd5b600060056000848481518110151561086857fe5b602090810291909101810151600160a060020a03168252810191909152604001600020805460ff191691151591909117905581518290829081106108a857fe5b90602001906020020151600160a060020a03167fad8c5167ea40034252f025cc63e5389848cdfec155aee766d091d7a57517c3ab60405160405180910390a26001016107e1565b5050565b60045490565b600080600080855111801561090f575083518551145b801561092b57503360009081526005602052604090205460ff16155b801561094557503360009081526006602052604090205442115b151561095057600080fd5b5060009050805b8451811015610a6d576000848281518110151561097057fe5b906020019060200201511180156109a85750848181518110151561099057fe5b90602001906020020151600160a060020a0316600014155b80156109e957506005600086838151811015156109c157fe5b6020908102909101810151600160a060020a031682528101919091526040016000205460ff16155b8015610a305750600660008683815181101515610a0257fe5b90602001906020020151600160a060020a0316600160a060020a031681526020019081526020016000205442115b1515610a3b57600080fd5b610a638482815181101515610a4c57fe5b60209081029091010151839063ffffffff6117cd16565b9150600101610957565b33600090815260076020526040902054821115610a8957600080fd5b5060005b8451811015610be057610acf8482815181101515610aa757fe5b602090810290910181015133600090815260079092526040909120549063ffffffff6117dc16565b336000908152600760205260409020558351610b3c90859083908110610af157fe5b90602001906020020151600760008885815181101515610b0d57fe5b6020908102909101810151600160a060020a03168252810191909152604001600020549063ffffffff6117cd16565b600760008784815181101515610b4e57fe5b6020908102909101810151600160a060020a03168252810191909152604001600020558451859082908110610b7f57fe5b90602001906020020151600160a060020a031633600160a060020a0316600080516020611c858339815191528684815181101515610bb957fe5b906020019060200201516040518082815260200191505060405180910390a3600101610a8d565b506001949350505050565b6000600160a060020a03831615801590610c055750600082115b8015610c295750600160a060020a0384166000908152600760205260409020548211155b8015610c585750600160a060020a03841660009081526008602090815260408083203384529091529020548211155b8015610c7d5750600160a060020a03841660009081526005602052604090205460ff16155b8015610ca25750600160a060020a03831660009081526005602052604090205460ff16155b8015610cc55750600160a060020a03841660009081526006602052604090205442115b8015610ce85750600160a060020a03831660009081526006602052604090205442115b1515610cf357600080fd5b600160a060020a038416600090815260076020526040902054610d1c908363ffffffff6117dc16565b600160a060020a038086166000908152600760205260408082209390935590851681522054610d51908363ffffffff6117cd16565b600160a060020a038085166000908152600760209081526040808320949094559187168152600882528281203382529091522054610d95908363ffffffff6117dc16565b600160a060020a0380861660008181526008602090815260408083203384528252918290209490945580518681529051928716939192600080516020611c85833981519152929181900390910190a35060015b9392505050565b60076020526000908152604090205481565b60035460ff1690565b600160a060020a031660009081526007602052604090205490565b600054600160a060020a03163314610e3c57600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600054600160a060020a031681565b60008054600160a060020a03163314610eb857600080fd5b60008351118015610eca575081518351145b1515610ed557600080fd5b5060005b8251811015611038576000548351600160a060020a0390911690849083908110610eff57fe5b60209081029091010151600160a060020a03161415610f1d57600080fd5b8181815181101515610f2b57fe5b90602001906020020151600660008584815181101515610f4757fe5b6020908102909101810151600160a060020a031682528101919091526040016000205410610f7457600080fd5b8181815181101515610f8257fe5b90602001906020020151600660008584815181101515610f9e57fe5b6020908102909101810151600160a060020a03168252810191909152604001600020558251839082908110610fcf57fe5b90602001906020020151600160a060020a03167f4d510e87e8b4a8ac8074d3ae995f797c869bc49b49c2cba7ecd752a5d1e6b043838381518110151561101157fe5b906020019060200201516040518082815260200191505060405180910390a2600101610ed9565b505050565b60028054604080516020601f60001961010060018716150201909416859004938401819004810282018101909252828152606093909290918301828280156107475780601f1061071c57610100808354040283529160200191610747565b600054600160a060020a031633146110b257600080fd5b6000811180156110da5750600160a060020a0382166000908152600760205260409020548111155b15156110e557600080fd5b600160a060020a03821660009081526007602052604090205461110e908263ffffffff6117dc16565b600160a060020a03831660009081526007602052604090205560045461113a908263ffffffff6117dc16565b600455604080518281529051600160a060020a038416917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a25050565b60008060008084118015611195575060008551115b80156111b157503360009081526005602052604090205460ff16155b80156111cb57503360009081526006602052604090205442115b15156111d657600080fd5b84516111e990859063ffffffff6117ee16565b3360009081526007602052604090205490925082111561120857600080fd5b5060005b8451811015610be057848181518110151561122357fe5b90602001906020020151600160a060020a031660001415801561127b575060056000868381518110151561125357fe5b6020908102909101810151600160a060020a031682528101919091526040016000205460ff16155b80156112c2575060066000868381518110151561129457fe5b90602001906020020151600160a060020a0316600160a060020a031681526020019081526020016000205442115b15156112cd57600080fd5b336000908152600760205260409020546112ed908563ffffffff6117dc16565b33600090815260076020819052604082209290925586516113189287929091899086908110610b0d57fe5b60076000878481518110151561132a57fe5b6020908102909101810151600160a060020a0316825281019190915260400160002055845185908290811061135b57fe5b90602001906020020151600160a060020a031633600160a060020a0316600080516020611c85833981519152866040518082815260200191505060405180910390a360010161120c565b600060606000831180156113c957503360009081526005602052604090205460ff16155b80156113ee5750600160a060020a03841660009081526005602052604090205460ff16155b801561140857503360009081526006602052604090205442115b801561142b5750600160a060020a03841660009081526006602052604090205442115b80156114405750600160a060020a0384163014155b151561144b57600080fd5b5060408051808201909152600481526000602082015261146a84611819565b156114815761147a848483611821565b915061148c565b61147a848483611a83565b5092915050565b60008054600160a060020a031633146114ab57600080fd5b81516000106114b957600080fd5b5060005b81518110156108ef5781818151811015156114d457fe5b90602001906020020151600160a060020a031660001415801561152557506000548251600160a060020a039091169083908390811061150f57fe5b90602001906020020151600160a060020a031614155b151561153057600080fd5b600160056000848481518110151561154457fe5b602090810291909101810151600160a060020a03168252810191909152604001600020805460ff1916911515919091179055815182908290811061158457fe5b90602001906020020151600160a060020a03167fab31471e2733e9405c1ac9092ad88ff15b9d83479c0db9acf8c3c688e7a8b4f760405160405180910390a26001016114bd565b60056020526000908152604090205460ff1681565b6000808311801561160157503360009081526005602052604090205460ff16155b80156116265750600160a060020a03841660009081526005602052604090205460ff16155b801561164057503360009081526006602052604090205442115b80156116635750600160a060020a03841660009081526006602052604090205442115b80156116785750600160a060020a0384163014155b151561168357600080fd5b61168c84611819565b156116a35761169c848484611821565b9050610de8565b61169c848484611a83565b60066020526000908152604090205481565b600160a060020a03918216600090815260086020908152604080832093909416825291909152205490565b60008054600160a060020a0316331461170357600080fd5b815160001061171157600080fd5b5060005b81518110156108ef57600060066000848481518110151561173257fe5b6020908102909101810151600160a060020a0316825281019190915260400160002055815182908290811061176357fe5b90602001906020020151600160a060020a03167f1284822c57612314b7d3043c01709311fd920cc6839d72dea5f90ffb504a268660405160405180910390a2600101611715565b600054600160a060020a031633146117c157600080fd5b6117ca81611c07565b50565b600082820183811015610de857fe5b6000828211156117e857fe5b50900390565b600080831515611801576000915061148c565b5082820282848281151561181157fe5b0414610de857fe5b6000903b1190565b33600090815260076020526040812054819084111561183f57600080fd5b3360009081526007602052604090205461185f908563ffffffff6117dc16565b3360009081526007602052604080822092909255600160a060020a03871681522054611891908563ffffffff6117cd16565b600160a060020a03861660008181526007602090815260408083209490945592517fc0ee0b8a0000000000000000000000000000000000000000000000000000000081523360048201818152602483018a90526060604484019081528951606485015289518c9850959663c0ee0b8a9693958c958c956084909101928601918190849084905b8381101561192f578181015183820152602001611917565b50505050905090810190601f16801561195c5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561197d57600080fd5b505af1158015611991573d6000803e3d6000fd5b5050505084600160a060020a031633600160a060020a03167f9bfafdc2ae8835972d7b64ef3f8f307165ac22ceffde4a742c52da5487f45fd186866040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611a0f5781810151838201526020016119f7565b50505050905090810190601f168015611a3c5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a3604080518581529051600160a060020a038716913391600080516020611c858339815191529181900360200190a3506001949350505050565b33600090815260076020526040812054831115611a9f57600080fd5b33600090815260076020526040902054611abf908463ffffffff6117dc16565b3360009081526007602052604080822092909255600160a060020a03861681522054611af1908463ffffffff6117cd16565b6007600086600160a060020a0316600160a060020a031681526020019081526020016000208190555083600160a060020a031633600160a060020a03167f9bfafdc2ae8835972d7b64ef3f8f307165ac22ceffde4a742c52da5487f45fd185856040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611b94578181015183820152602001611b7c565b50505050905090810190601f168015611bc15780820380516001836020036101000a031916815260200191505b50935050505060405180910390a3604080518481529051600160a060020a038616913391600080516020611c858339815191529181900360200190a35060019392505050565b600160a060020a0381161515611c1c57600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790555600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a7230582096aa17a1e6a17aecaa9ede53659dbb281dce5e5e40c770aa06f126ca52e8bfda0029

Deployed Bytecode

0x6080604052600436106101325763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde038114610134578063095ea7b3146101be578063170e2070146101f657806318160ddd1461024b5780631e89d5451461027257806323b872dd1461030057806327e235e31461032a578063313ce5671461034b57806370a0823114610376578063715018a6146103975780638da5cb5b146103ac5780638f78b34a146103dd57806395d89b411461046b5780639dc29fac14610480578063a16a3179146104a4578063a9059cbb146104fb578063aad120291461051f578063b414d4b614610574578063be45fd6214610595578063cbbe974b146105fe578063dd62ed3e1461061f578063ebaddea714610646578063f2fde38b1461069b575b005b34801561014057600080fd5b506101496106bc565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561018357818101518382015260200161016b565b50505050905090810190601f1680156101b05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101ca57600080fd5b506101e2600160a060020a0360043516602435610751565b604080519115158252519081900360200190f35b34801561020257600080fd5b5060408051602060048035808201358381028086018501909652808552610132953695939460249493850192918291850190849080828437509497506107b79650505050505050565b34801561025757600080fd5b506102606108f3565b60408051918252519081900360200190f35b34801561027e57600080fd5b50604080516020600480358082013583810280860185019096528085526101e295369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a9989019892975090820195509350839250850190849080828437509497506108f99650505050505050565b34801561030c57600080fd5b506101e2600160a060020a0360043581169060243516604435610beb565b34801561033657600080fd5b50610260600160a060020a0360043516610def565b34801561035757600080fd5b50610360610e01565b6040805160ff9092168252519081900360200190f35b34801561038257600080fd5b50610260600160a060020a0360043516610e0a565b3480156103a357600080fd5b50610132610e25565b3480156103b857600080fd5b506103c1610e91565b60408051600160a060020a039092168252519081900360200190f35b3480156103e957600080fd5b506040805160206004803580820135838102808601850190965280855261013295369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750949750610ea09650505050505050565b34801561047757600080fd5b5061014961103d565b34801561048c57600080fd5b50610132600160a060020a036004351660243561109b565b3480156104b057600080fd5b50604080516020600480358082013583810280860185019096528085526101e29536959394602494938501929182918501908490808284375094975050933594506111809350505050565b34801561050757600080fd5b506101e2600160a060020a03600435166024356113a5565b34801561052b57600080fd5b5060408051602060048035808201358381028086018501909652808552610132953695939460249493850192918291850190849080828437509497506114939650505050505050565b34801561058057600080fd5b506101e2600160a060020a03600435166115cb565b3480156105a157600080fd5b50604080516020600460443581810135601f81018490048402850184019095528484526101e2948235600160a060020a03169460248035953695946064949201919081908401838280828437509497506115e09650505050505050565b34801561060a57600080fd5b50610260600160a060020a03600435166116ae565b34801561062b57600080fd5b50610260600160a060020a03600435811690602435166116c0565b34801561065257600080fd5b5060408051602060048035808201358381028086018501909652808552610132953695939460249493850192918291850190849080828437509497506116eb9650505050505050565b3480156106a757600080fd5b50610132600160a060020a03600435166117aa565b60018054604080516020601f600260001961010087891615020190951694909404938401819004810282018101909252828152606093909290918301828280156107475780601f1061071c57610100808354040283529160200191610747565b820191906000526020600020905b81548152906001019060200180831161072a57829003601f168201915b5050505050905090565b336000818152600860209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b60008054600160a060020a031633146107cf57600080fd5b81516000106107dd57600080fd5b5060005b81518110156108ef5781818151811015156107f857fe5b90602001906020020151600160a060020a031660001415801561084957506000548251600160a060020a039091169083908390811061083357fe5b90602001906020020151600160a060020a031614155b151561085457600080fd5b600060056000848481518110151561086857fe5b602090810291909101810151600160a060020a03168252810191909152604001600020805460ff191691151591909117905581518290829081106108a857fe5b90602001906020020151600160a060020a03167fad8c5167ea40034252f025cc63e5389848cdfec155aee766d091d7a57517c3ab60405160405180910390a26001016107e1565b5050565b60045490565b600080600080855111801561090f575083518551145b801561092b57503360009081526005602052604090205460ff16155b801561094557503360009081526006602052604090205442115b151561095057600080fd5b5060009050805b8451811015610a6d576000848281518110151561097057fe5b906020019060200201511180156109a85750848181518110151561099057fe5b90602001906020020151600160a060020a0316600014155b80156109e957506005600086838151811015156109c157fe5b6020908102909101810151600160a060020a031682528101919091526040016000205460ff16155b8015610a305750600660008683815181101515610a0257fe5b90602001906020020151600160a060020a0316600160a060020a031681526020019081526020016000205442115b1515610a3b57600080fd5b610a638482815181101515610a4c57fe5b60209081029091010151839063ffffffff6117cd16565b9150600101610957565b33600090815260076020526040902054821115610a8957600080fd5b5060005b8451811015610be057610acf8482815181101515610aa757fe5b602090810290910181015133600090815260079092526040909120549063ffffffff6117dc16565b336000908152600760205260409020558351610b3c90859083908110610af157fe5b90602001906020020151600760008885815181101515610b0d57fe5b6020908102909101810151600160a060020a03168252810191909152604001600020549063ffffffff6117cd16565b600760008784815181101515610b4e57fe5b6020908102909101810151600160a060020a03168252810191909152604001600020558451859082908110610b7f57fe5b90602001906020020151600160a060020a031633600160a060020a0316600080516020611c858339815191528684815181101515610bb957fe5b906020019060200201516040518082815260200191505060405180910390a3600101610a8d565b506001949350505050565b6000600160a060020a03831615801590610c055750600082115b8015610c295750600160a060020a0384166000908152600760205260409020548211155b8015610c585750600160a060020a03841660009081526008602090815260408083203384529091529020548211155b8015610c7d5750600160a060020a03841660009081526005602052604090205460ff16155b8015610ca25750600160a060020a03831660009081526005602052604090205460ff16155b8015610cc55750600160a060020a03841660009081526006602052604090205442115b8015610ce85750600160a060020a03831660009081526006602052604090205442115b1515610cf357600080fd5b600160a060020a038416600090815260076020526040902054610d1c908363ffffffff6117dc16565b600160a060020a038086166000908152600760205260408082209390935590851681522054610d51908363ffffffff6117cd16565b600160a060020a038085166000908152600760209081526040808320949094559187168152600882528281203382529091522054610d95908363ffffffff6117dc16565b600160a060020a0380861660008181526008602090815260408083203384528252918290209490945580518681529051928716939192600080516020611c85833981519152929181900390910190a35060015b9392505050565b60076020526000908152604090205481565b60035460ff1690565b600160a060020a031660009081526007602052604090205490565b600054600160a060020a03163314610e3c57600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600054600160a060020a031681565b60008054600160a060020a03163314610eb857600080fd5b60008351118015610eca575081518351145b1515610ed557600080fd5b5060005b8251811015611038576000548351600160a060020a0390911690849083908110610eff57fe5b60209081029091010151600160a060020a03161415610f1d57600080fd5b8181815181101515610f2b57fe5b90602001906020020151600660008584815181101515610f4757fe5b6020908102909101810151600160a060020a031682528101919091526040016000205410610f7457600080fd5b8181815181101515610f8257fe5b90602001906020020151600660008584815181101515610f9e57fe5b6020908102909101810151600160a060020a03168252810191909152604001600020558251839082908110610fcf57fe5b90602001906020020151600160a060020a03167f4d510e87e8b4a8ac8074d3ae995f797c869bc49b49c2cba7ecd752a5d1e6b043838381518110151561101157fe5b906020019060200201516040518082815260200191505060405180910390a2600101610ed9565b505050565b60028054604080516020601f60001961010060018716150201909416859004938401819004810282018101909252828152606093909290918301828280156107475780601f1061071c57610100808354040283529160200191610747565b600054600160a060020a031633146110b257600080fd5b6000811180156110da5750600160a060020a0382166000908152600760205260409020548111155b15156110e557600080fd5b600160a060020a03821660009081526007602052604090205461110e908263ffffffff6117dc16565b600160a060020a03831660009081526007602052604090205560045461113a908263ffffffff6117dc16565b600455604080518281529051600160a060020a038416917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a25050565b60008060008084118015611195575060008551115b80156111b157503360009081526005602052604090205460ff16155b80156111cb57503360009081526006602052604090205442115b15156111d657600080fd5b84516111e990859063ffffffff6117ee16565b3360009081526007602052604090205490925082111561120857600080fd5b5060005b8451811015610be057848181518110151561122357fe5b90602001906020020151600160a060020a031660001415801561127b575060056000868381518110151561125357fe5b6020908102909101810151600160a060020a031682528101919091526040016000205460ff16155b80156112c2575060066000868381518110151561129457fe5b90602001906020020151600160a060020a0316600160a060020a031681526020019081526020016000205442115b15156112cd57600080fd5b336000908152600760205260409020546112ed908563ffffffff6117dc16565b33600090815260076020819052604082209290925586516113189287929091899086908110610b0d57fe5b60076000878481518110151561132a57fe5b6020908102909101810151600160a060020a0316825281019190915260400160002055845185908290811061135b57fe5b90602001906020020151600160a060020a031633600160a060020a0316600080516020611c85833981519152866040518082815260200191505060405180910390a360010161120c565b600060606000831180156113c957503360009081526005602052604090205460ff16155b80156113ee5750600160a060020a03841660009081526005602052604090205460ff16155b801561140857503360009081526006602052604090205442115b801561142b5750600160a060020a03841660009081526006602052604090205442115b80156114405750600160a060020a0384163014155b151561144b57600080fd5b5060408051808201909152600481526000602082015261146a84611819565b156114815761147a848483611821565b915061148c565b61147a848483611a83565b5092915050565b60008054600160a060020a031633146114ab57600080fd5b81516000106114b957600080fd5b5060005b81518110156108ef5781818151811015156114d457fe5b90602001906020020151600160a060020a031660001415801561152557506000548251600160a060020a039091169083908390811061150f57fe5b90602001906020020151600160a060020a031614155b151561153057600080fd5b600160056000848481518110151561154457fe5b602090810291909101810151600160a060020a03168252810191909152604001600020805460ff1916911515919091179055815182908290811061158457fe5b90602001906020020151600160a060020a03167fab31471e2733e9405c1ac9092ad88ff15b9d83479c0db9acf8c3c688e7a8b4f760405160405180910390a26001016114bd565b60056020526000908152604090205460ff1681565b6000808311801561160157503360009081526005602052604090205460ff16155b80156116265750600160a060020a03841660009081526005602052604090205460ff16155b801561164057503360009081526006602052604090205442115b80156116635750600160a060020a03841660009081526006602052604090205442115b80156116785750600160a060020a0384163014155b151561168357600080fd5b61168c84611819565b156116a35761169c848484611821565b9050610de8565b61169c848484611a83565b60066020526000908152604090205481565b600160a060020a03918216600090815260086020908152604080832093909416825291909152205490565b60008054600160a060020a0316331461170357600080fd5b815160001061171157600080fd5b5060005b81518110156108ef57600060066000848481518110151561173257fe5b6020908102909101810151600160a060020a0316825281019190915260400160002055815182908290811061176357fe5b90602001906020020151600160a060020a03167f1284822c57612314b7d3043c01709311fd920cc6839d72dea5f90ffb504a268660405160405180910390a2600101611715565b600054600160a060020a031633146117c157600080fd5b6117ca81611c07565b50565b600082820183811015610de857fe5b6000828211156117e857fe5b50900390565b600080831515611801576000915061148c565b5082820282848281151561181157fe5b0414610de857fe5b6000903b1190565b33600090815260076020526040812054819084111561183f57600080fd5b3360009081526007602052604090205461185f908563ffffffff6117dc16565b3360009081526007602052604080822092909255600160a060020a03871681522054611891908563ffffffff6117cd16565b600160a060020a03861660008181526007602090815260408083209490945592517fc0ee0b8a0000000000000000000000000000000000000000000000000000000081523360048201818152602483018a90526060604484019081528951606485015289518c9850959663c0ee0b8a9693958c958c956084909101928601918190849084905b8381101561192f578181015183820152602001611917565b50505050905090810190601f16801561195c5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561197d57600080fd5b505af1158015611991573d6000803e3d6000fd5b5050505084600160a060020a031633600160a060020a03167f9bfafdc2ae8835972d7b64ef3f8f307165ac22ceffde4a742c52da5487f45fd186866040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611a0f5781810151838201526020016119f7565b50505050905090810190601f168015611a3c5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a3604080518581529051600160a060020a038716913391600080516020611c858339815191529181900360200190a3506001949350505050565b33600090815260076020526040812054831115611a9f57600080fd5b33600090815260076020526040902054611abf908463ffffffff6117dc16565b3360009081526007602052604080822092909255600160a060020a03861681522054611af1908463ffffffff6117cd16565b6007600086600160a060020a0316600160a060020a031681526020019081526020016000208190555083600160a060020a031633600160a060020a03167f9bfafdc2ae8835972d7b64ef3f8f307165ac22ceffde4a742c52da5487f45fd185856040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611b94578181015183820152602001611b7c565b50505050905090810190601f168015611bc15780820380516001836020036101000a031916815260200191505b50935050505060405180910390a3604080518481529051600160a060020a038616913391600080516020611c858339815191529181900360200190a35060019392505050565b600160a060020a0381161515611c1c57600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790555600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a7230582096aa17a1e6a17aecaa9ede53659dbb281dce5e5e40c770aa06f126ca52e8bfda0029

Swarm Source

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