ETH Price: $3,199.37 (+4.97%)

Token

UniBright (UBT)
 

Overview

Max Total Supply

150,000,000 UBT

Holders

22,191 ( -0.023%)

Market

Price

$0.05 @ 0.000014 ETH (+11.31%)

Onchain Market Cap

$6,752,407.50

Circulating Supply Market Cap

$6,757,532.00

Other Info

Token Contract (WITH 8 Decimals)

Balance
0 UBT

Value
$0.00
0x535848eda4a291ab53f9e15db14c06673725339c
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

The unified framework for blockchain based business integration

Profitability / Loss

Since Initial Offer Price
:$0.14 67.85%

Market

Volume (24H):$59,886.00
Market Capitalization:$6,757,532.00
Circulating Supply:150,000,000.00 UBT
Market Data Source: Coinmarketcap

ICO Information

ICO Start Date : Apr 21, 2018 
ICO End Date : May 02, 2018
Hard Cap : $13,542,375
Soft Cap : $2,200,000
Raised : $13,542,375
ICO Price  : $0.14
Country : Germany

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
UniBrightToken

Compiler Version
v0.4.15+commit.bbb8e64f

Optimization Enabled:
Yes with 10000 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

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

pragma solidity 0.4.15;

contract RegistryICAPInterface {
    function parse(bytes32 _icap) constant returns(address, bytes32, bool);
    function institutions(bytes32 _institution) constant returns(address);
}

contract EToken2Interface {
    function registryICAP() constant returns(RegistryICAPInterface);
    function baseUnit(bytes32 _symbol) constant returns(uint8);
    function description(bytes32 _symbol) constant returns(string);
    function owner(bytes32 _symbol) constant returns(address);
    function isOwner(address _owner, bytes32 _symbol) constant returns(bool);
    function totalSupply(bytes32 _symbol) constant returns(uint);
    function balanceOf(address _holder, bytes32 _symbol) constant returns(uint);
    function isLocked(bytes32 _symbol) constant returns(bool);
    function issueAsset(bytes32 _symbol, uint _value, string _name, string _description, uint8 _baseUnit, bool _isReissuable) returns(bool);
    function reissueAsset(bytes32 _symbol, uint _value) returns(bool);
    function revokeAsset(bytes32 _symbol, uint _value) returns(bool);
    function setProxy(address _address, bytes32 _symbol) returns(bool);
    function lockAsset(bytes32 _symbol) returns(bool);
    function proxyTransferFromToICAPWithReference(address _from, bytes32 _icap, uint _value, string _reference, address _sender) returns(bool);
    function proxyApprove(address _spender, uint _value, bytes32 _symbol, address _sender) returns(bool);
    function allowance(address _from, address _spender, bytes32 _symbol) constant returns(uint);
    function proxyTransferFromWithReference(address _from, address _to, uint _value, bytes32 _symbol, string _reference, address _sender) returns(bool);
}

contract AssetInterface {
    function _performTransferWithReference(address _to, uint _value, string _reference, address _sender) returns(bool);
    function _performTransferToICAPWithReference(bytes32 _icap, uint _value, string _reference, address _sender) returns(bool);
    function _performApprove(address _spender, uint _value, address _sender) returns(bool);    
    function _performTransferFromWithReference(address _from, address _to, uint _value, string _reference, address _sender) returns(bool);
    function _performTransferFromToICAPWithReference(address _from, bytes32 _icap, uint _value, string _reference, address _sender) returns(bool);
    function _performGeneric(bytes, address) payable {
        revert();
    }
}

contract ERC20Interface {
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed from, address indexed spender, uint256 value);

    function totalSupply() constant returns(uint256 supply);
    function balanceOf(address _owner) constant returns(uint256 balance);
    function transfer(address _to, uint256 _value) returns(bool success);
    function transferFrom(address _from, address _to, uint256 _value) returns(bool success);
    function approve(address _spender, uint256 _value) returns(bool success);
    function allowance(address _owner, address _spender) constant returns(uint256 remaining);

    // function symbol() constant returns(string);
    function decimals() constant returns(uint8);
    // function name() constant returns(string);
}

contract AssetProxyInterface {
    function _forwardApprove(address _spender, uint _value, address _sender) returns(bool);
    function _forwardTransferFromWithReference(address _from, address _to, uint _value, string _reference, address _sender) returns(bool);
    function _forwardTransferFromToICAPWithReference(address _from, bytes32 _icap, uint _value, string _reference, address _sender) returns(bool);
    function balanceOf(address _owner) constant returns(uint);
}

contract Bytes32 {
    function _bytes32(string _input) internal constant returns(bytes32 result) {
        assembly {
            result := mload(add(_input, 32))
        }
    }
}

contract ReturnData {
    function _returnReturnData(bool _success) internal {
        assembly {
            let returndatastart := msize()
            mstore(0x40, add(returndatastart, returndatasize))
            returndatacopy(returndatastart, 0, returndatasize)
            switch _success case 0 { revert(returndatastart, returndatasize) } default { return(returndatastart, returndatasize) }
        }
    }

    function _assemblyCall(address _destination, uint _value, bytes _data) internal returns(bool success) {
        assembly {
            success := call(div(mul(gas, 63), 64), _destination, _value, add(_data, 32), mload(_data), 0, 0)
        }
    }
}

/**
 * @title EToken2 Asset Proxy.
 *
 * Proxy implements ERC20 interface and acts as a gateway to a single EToken2 asset.
 * Proxy adds etoken2Symbol and caller(sender) when forwarding requests to EToken2.
 * Every request that is made by caller first sent to the specific asset implementation
 * contract, which then calls back to be forwarded onto EToken2.
 *
 * Calls flow: Caller ->
 *             Proxy.func(...) ->
 *             Asset._performFunc(..., Caller.address) ->
 *             Proxy._forwardFunc(..., Caller.address) ->
 *             Platform.proxyFunc(..., symbol, Caller.address)
 *
 * Generic call flow: Caller ->
 *             Proxy.unknownFunc(...) ->
 *             Asset._performGeneric(..., Caller.address) ->
 *             Asset.unknownFunc(...)
 *
 * Asset implementation contract is mutable, but each user have an option to stick with
 * old implementation, through explicit decision made in timely manner, if he doesn't agree
 * with new rules.
 * Each user have a possibility to upgrade to latest asset contract implementation, without the
 * possibility to rollback.
 *
 * Note: all the non constant functions return false instead of throwing in case if state change
 * didn't happen yet.
 */
contract AssetProxy is ERC20Interface, AssetProxyInterface, Bytes32, ReturnData {
    // Assigned EToken2, immutable.
    EToken2Interface public etoken2;

    // Assigned symbol, immutable.
    bytes32 public etoken2Symbol;

    // Assigned name, immutable. For UI.
    string public name;
    string public symbol;

    /**
     * Sets EToken2 address, assigns symbol and name.
     *
     * Can be set only once.
     *
     * @param _etoken2 EToken2 contract address.
     * @param _symbol assigned symbol.
     * @param _name assigned name.
     *
     * @return success.
     */
    function init(EToken2Interface _etoken2, string _symbol, string _name) returns(bool) {
        if (address(etoken2) != 0x0) {
            return false;
        }
        etoken2 = _etoken2;
        etoken2Symbol = _bytes32(_symbol);
        name = _name;
        symbol = _symbol;
        return true;
    }

    /**
     * Only EToken2 is allowed to call.
     */
    modifier onlyEToken2() {
        if (msg.sender == address(etoken2)) {
            _;
        }
    }

    /**
     * Only current asset owner is allowed to call.
     */
    modifier onlyAssetOwner() {
        if (etoken2.isOwner(msg.sender, etoken2Symbol)) {
            _;
        }
    }

    /**
     * Returns asset implementation contract for current caller.
     *
     * @return asset implementation contract.
     */
    function _getAsset() internal returns(AssetInterface) {
        return AssetInterface(getVersionFor(msg.sender));
    }

    function recoverTokens(uint _value) onlyAssetOwner() returns(bool) {
        return this.transferWithReference(msg.sender, _value, 'Tokens recovery');
    }

    /**
     * Returns asset total supply.
     *
     * @return asset total supply.
     */
    function totalSupply() constant returns(uint) {
        return etoken2.totalSupply(etoken2Symbol);
    }

    /**
     * Returns asset balance for a particular holder.
     *
     * @param _owner holder address.
     *
     * @return holder balance.
     */
    function balanceOf(address _owner) constant returns(uint) {
        return etoken2.balanceOf(_owner, etoken2Symbol);
    }

    /**
     * Returns asset allowance from one holder to another.
     *
     * @param _from holder that allowed spending.
     * @param _spender holder that is allowed to spend.
     *
     * @return holder to spender allowance.
     */
    function allowance(address _from, address _spender) constant returns(uint) {
        return etoken2.allowance(_from, _spender, etoken2Symbol);
    }

    /**
     * Returns asset decimals.
     *
     * @return asset decimals.
     */
    function decimals() constant returns(uint8) {
        return etoken2.baseUnit(etoken2Symbol);
    }

    /**
     * Transfers asset balance from the caller to specified receiver.
     *
     * @param _to holder address to give to.
     * @param _value amount to transfer.
     *
     * @return success.
     */
    function transfer(address _to, uint _value) returns(bool) {
        return transferWithReference(_to, _value, '');
    }

    /**
     * Transfers asset balance from the caller to specified receiver adding specified comment.
     * Resolves asset implementation contract for the caller and forwards there arguments along with
     * the caller address.
     *
     * @param _to holder address to give to.
     * @param _value amount to transfer.
     * @param _reference transfer comment to be included in a EToken2's Transfer event.
     *
     * @return success.
     */
    function transferWithReference(address _to, uint _value, string _reference) returns(bool) {
        return _getAsset()._performTransferWithReference(_to, _value, _reference, msg.sender);
    }

    /**
     * Transfers asset balance from the caller to specified ICAP.
     *
     * @param _icap recipient ICAP to give to.
     * @param _value amount to transfer.
     *
     * @return success.
     */
    function transferToICAP(bytes32 _icap, uint _value) returns(bool) {
        return transferToICAPWithReference(_icap, _value, '');
    }

    /**
     * Transfers asset balance from the caller to specified ICAP adding specified comment.
     * Resolves asset implementation contract for the caller and forwards there arguments along with
     * the caller address.
     *
     * @param _icap recipient ICAP to give to.
     * @param _value amount to transfer.
     * @param _reference transfer comment to be included in a EToken2's Transfer event.
     *
     * @return success.
     */
    function transferToICAPWithReference(bytes32 _icap, uint _value, string _reference) returns(bool) {
        return _getAsset()._performTransferToICAPWithReference(_icap, _value, _reference, msg.sender);
    }

    /**
     * Prforms allowance transfer of asset balance between holders.
     *
     * @param _from holder address to take from.
     * @param _to holder address to give to.
     * @param _value amount to transfer.
     *
     * @return success.
     */
    function transferFrom(address _from, address _to, uint _value) returns(bool) {
        return transferFromWithReference(_from, _to, _value, '');
    }

    /**
     * Prforms allowance transfer of asset balance between holders adding specified comment.
     * Resolves asset implementation contract for the caller and forwards there arguments along with
     * the caller address.
     *
     * @param _from holder address to take from.
     * @param _to holder address to give to.
     * @param _value amount to transfer.
     * @param _reference transfer comment to be included in a EToken2's Transfer event.
     *
     * @return success.
     */
    function transferFromWithReference(address _from, address _to, uint _value, string _reference) returns(bool) {
        return _getAsset()._performTransferFromWithReference(_from, _to, _value, _reference, msg.sender);
    }

    /**
     * Performs transfer call on the EToken2 by the name of specified sender.
     *
     * Can only be called by asset implementation contract assigned to sender.
     *
     * @param _from holder address to take from.
     * @param _to holder address to give to.
     * @param _value amount to transfer.
     * @param _reference transfer comment to be included in a EToken2's Transfer event.
     * @param _sender initial caller.
     *
     * @return success.
     */
    function _forwardTransferFromWithReference(address _from, address _to, uint _value, string _reference, address _sender) onlyImplementationFor(_sender) returns(bool) {
        return etoken2.proxyTransferFromWithReference(_from, _to, _value, etoken2Symbol, _reference, _sender);
    }

    /**
     * Prforms allowance transfer of asset balance between holders.
     *
     * @param _from holder address to take from.
     * @param _icap recipient ICAP address to give to.
     * @param _value amount to transfer.
     *
     * @return success.
     */
    function transferFromToICAP(address _from, bytes32 _icap, uint _value) returns(bool) {
        return transferFromToICAPWithReference(_from, _icap, _value, '');
    }

    /**
     * Prforms allowance transfer of asset balance between holders adding specified comment.
     * Resolves asset implementation contract for the caller and forwards there arguments along with
     * the caller address.
     *
     * @param _from holder address to take from.
     * @param _icap recipient ICAP address to give to.
     * @param _value amount to transfer.
     * @param _reference transfer comment to be included in a EToken2's Transfer event.
     *
     * @return success.
     */
    function transferFromToICAPWithReference(address _from, bytes32 _icap, uint _value, string _reference) returns(bool) {
        return _getAsset()._performTransferFromToICAPWithReference(_from, _icap, _value, _reference, msg.sender);
    }

    /**
     * Performs allowance transfer to ICAP call on the EToken2 by the name of specified sender.
     *
     * Can only be called by asset implementation contract assigned to sender.
     *
     * @param _from holder address to take from.
     * @param _icap recipient ICAP address to give to.
     * @param _value amount to transfer.
     * @param _reference transfer comment to be included in a EToken2's Transfer event.
     * @param _sender initial caller.
     *
     * @return success.
     */
    function _forwardTransferFromToICAPWithReference(address _from, bytes32 _icap, uint _value, string _reference, address _sender) onlyImplementationFor(_sender) returns(bool) {
        return etoken2.proxyTransferFromToICAPWithReference(_from, _icap, _value, _reference, _sender);
    }

    /**
     * Sets asset spending allowance for a specified spender.
     * Resolves asset implementation contract for the caller and forwards there arguments along with
     * the caller address.
     *
     * @param _spender holder address to set allowance to.
     * @param _value amount to allow.
     *
     * @return success.
     */
    function approve(address _spender, uint _value) returns(bool) {
        return _getAsset()._performApprove(_spender, _value, msg.sender);
    }

    /**
     * Performs allowance setting call on the EToken2 by the name of specified sender.
     *
     * Can only be called by asset implementation contract assigned to sender.
     *
     * @param _spender holder address to set allowance to.
     * @param _value amount to allow.
     * @param _sender initial caller.
     *
     * @return success.
     */
    function _forwardApprove(address _spender, uint _value, address _sender) onlyImplementationFor(_sender) returns(bool) {
        return etoken2.proxyApprove(_spender, _value, etoken2Symbol, _sender);
    }

    /**
     * Emits ERC20 Transfer event on this contract.
     *
     * Can only be, and, called by assigned EToken2 when asset transfer happens.
     */
    function emitTransfer(address _from, address _to, uint _value) onlyEToken2() {
        Transfer(_from, _to, _value);
    }

    /**
     * Emits ERC20 Approval event on this contract.
     *
     * Can only be, and, called by assigned EToken2 when asset allowance set happens.
     */
    function emitApprove(address _from, address _spender, uint _value) onlyEToken2() {
        Approval(_from, _spender, _value);
    }

    /**
     * Resolves asset implementation contract for the caller and forwards there transaction data,
     * along with the value. This allows for proxy interface growth.
     */
    function () payable {
        _getAsset()._performGeneric.value(msg.value)(msg.data, msg.sender);
        _returnReturnData(true);
    }

    // Interface functions to allow specifying ICAP addresses as strings.
    function transferToICAP(string _icap, uint _value) returns(bool) {
        return transferToICAPWithReference(_icap, _value, '');
    }

    function transferToICAPWithReference(string _icap, uint _value, string _reference) returns(bool) {
        return transferToICAPWithReference(_bytes32(_icap), _value, _reference);
    }

    function transferFromToICAP(address _from, string _icap, uint _value) returns(bool) {
        return transferFromToICAPWithReference(_from, _icap, _value, '');
    }

    function transferFromToICAPWithReference(address _from, string _icap, uint _value, string _reference) returns(bool) {
        return transferFromToICAPWithReference(_from, _bytes32(_icap), _value, _reference);
    }

    /**
     * Indicates an upgrade freeze-time start, and the next asset implementation contract.
     */
    event UpgradeProposal(address newVersion);

    // Current asset implementation contract address.
    address latestVersion;

    // Proposed next asset implementation contract address.
    address pendingVersion;

    // Upgrade freeze-time start.
    uint pendingVersionTimestamp;

    // Timespan for users to review the new implementation and make decision.
    uint constant UPGRADE_FREEZE_TIME = 3 days;

    // Asset implementation contract address that user decided to stick with.
    // 0x0 means that user uses latest version.
    mapping(address => address) userOptOutVersion;

    /**
     * Only asset implementation contract assigned to sender is allowed to call.
     */
    modifier onlyImplementationFor(address _sender) {
        if (getVersionFor(_sender) == msg.sender) {
            _;
        }
    }

    /**
     * Returns asset implementation contract address assigned to sender.
     *
     * @param _sender sender address.
     *
     * @return asset implementation contract address.
     */
    function getVersionFor(address _sender) constant returns(address) {
        return userOptOutVersion[_sender] == 0 ? latestVersion : userOptOutVersion[_sender];
    }

    /**
     * Returns current asset implementation contract address.
     *
     * @return asset implementation contract address.
     */
    function getLatestVersion() constant returns(address) {
        return latestVersion;
    }

    /**
     * Returns proposed next asset implementation contract address.
     *
     * @return asset implementation contract address.
     */
    function getPendingVersion() constant returns(address) {
        return pendingVersion;
    }

    /**
     * Returns upgrade freeze-time start.
     *
     * @return freeze-time start.
     */
    function getPendingVersionTimestamp() constant returns(uint) {
        return pendingVersionTimestamp;
    }

    /**
     * Propose next asset implementation contract address.
     *
     * Can only be called by current asset owner.
     *
     * Note: freeze-time should not be applied for the initial setup.
     *
     * @param _newVersion asset implementation contract address.
     *
     * @return success.
     */
    function proposeUpgrade(address _newVersion) onlyAssetOwner() returns(bool) {
        // Should not already be in the upgrading process.
        if (pendingVersion != 0x0) {
            return false;
        }
        // New version address should be other than 0x0.
        if (_newVersion == 0x0) {
            return false;
        }
        // Don't apply freeze-time for the initial setup.
        if (latestVersion == 0x0) {
            latestVersion = _newVersion;
            return true;
        }
        pendingVersion = _newVersion;
        pendingVersionTimestamp = now;
        UpgradeProposal(_newVersion);
        return true;
    }

    /**
     * Cancel the pending upgrade process.
     *
     * Can only be called by current asset owner.
     *
     * @return success.
     */
    function purgeUpgrade() onlyAssetOwner() returns(bool) {
        if (pendingVersion == 0x0) {
            return false;
        }
        delete pendingVersion;
        delete pendingVersionTimestamp;
        return true;
    }

    /**
     * Finalize an upgrade process setting new asset implementation contract address.
     *
     * Can only be called after an upgrade freeze-time.
     *
     * @return success.
     */
    function commitUpgrade() returns(bool) {
        if (pendingVersion == 0x0) {
            return false;
        }
        if (pendingVersionTimestamp + UPGRADE_FREEZE_TIME > now) {
            return false;
        }
        latestVersion = pendingVersion;
        delete pendingVersion;
        delete pendingVersionTimestamp;
        return true;
    }

    /**
     * Disagree with proposed upgrade, and stick with current asset implementation
     * until further explicit agreement to upgrade.
     *
     * @return success.
     */
    function optOut() returns(bool) {
        if (userOptOutVersion[msg.sender] != 0x0) {
            return false;
        }
        userOptOutVersion[msg.sender] = latestVersion;
        return true;
    }

    /**
     * Implicitly agree to upgrade to current and future asset implementation upgrades,
     * until further explicit disagreement.
     *
     * @return success.
     */
    function optIn() returns(bool) {
        delete userOptOutVersion[msg.sender];
        return true;
    }

    // Backwards compatibility.
    function multiAsset() constant returns(EToken2Interface) {
        return etoken2;
    }
}

contract UniBrightToken is AssetProxy {
    function change(string _symbol, string _name) onlyAssetOwner() returns(bool) {
        if (etoken2.isLocked(etoken2Symbol)) {
            return false;
        }
        name = _name;
        symbol = _symbol;
        return true;
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"multiAsset","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"commitUpgrade","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getLatestVersion","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_reference","type":"string"},{"name":"_sender","type":"address"}],"name":"_forwardTransferFromWithReference","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"emitApprove","outputs":[],"payable":false,"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,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"emitTransfer","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"recoverTokens","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"etoken2","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getPendingVersionTimestamp","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"purgeUpgrade","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"optIn","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_reference","type":"string"}],"name":"transferFromWithReference","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_icap","type":"bytes32"},{"name":"_value","type":"uint256"}],"name":"transferToICAP","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_icap","type":"string"},{"name":"_value","type":"uint256"}],"name":"transferFromToICAP","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_icap","type":"bytes32"},{"name":"_value","type":"uint256"},{"name":"_reference","type":"string"}],"name":"transferToICAPWithReference","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"},{"name":"_sender","type":"address"}],"name":"_forwardApprove","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_icap","type":"string"},{"name":"_value","type":"uint256"}],"name":"transferToICAP","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_symbol","type":"string"},{"name":"_name","type":"string"}],"name":"change","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_icap","type":"string"},{"name":"_value","type":"uint256"},{"name":"_reference","type":"string"}],"name":"transferFromToICAPWithReference","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_icap","type":"string"},{"name":"_value","type":"uint256"},{"name":"_reference","type":"string"}],"name":"transferToICAPWithReference","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_icap","type":"bytes32"},{"name":"_value","type":"uint256"},{"name":"_reference","type":"string"},{"name":"_sender","type":"address"}],"name":"_forwardTransferFromToICAPWithReference","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_icap","type":"bytes32"},{"name":"_value","type":"uint256"},{"name":"_reference","type":"string"}],"name":"transferFromToICAPWithReference","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_icap","type":"bytes32"},{"name":"_value","type":"uint256"}],"name":"transferFromToICAP","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"etoken2Symbol","outputs":[{"name":"","type":"bytes32"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getPendingVersion","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_reference","type":"string"}],"name":"transferWithReference","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_etoken2","type":"address"},{"name":"_symbol","type":"string"},{"name":"_name","type":"string"}],"name":"init","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_newVersion","type":"address"}],"name":"proposeUpgrade","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"optOut","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_from","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_sender","type":"address"}],"name":"getVersionFor","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"payable":true,"type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newVersion","type":"address"}],"name":"UpgradeProposal","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":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"}]

6060604052341561000f57600080fd5b5b612b428061001f6000396000f300606060405236156101e05763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663029a8bf781146102b157806306fdde03146102ed578063095ea7b3146103785780630ba12c83146103bb5780630e6d1de9146103e257806314cba0021461041e57806318160ddd146104c357806323385089146104e857806323b872dd1461051f57806323de66511461056857806330599fc51461059f578063313ce567146105c9578063406838b3146105f25780634bfaf2e81461062e5780634dfe950d146106535780635b48684e1461067a5780636461fe39146106a157806370a082311461072e578063733480b71461076c5780637609c5a91461079957806377fe38a41461081b5780637bcdc2f01461088b57806381d434e9146108d557806383841e0c1461093c57806384c5c34d146109e357806395d89b4114610aae5780639ab253cc14610b395780639b487f3f14610be9578063a48a663c14610c8a578063a525f42c14610d13578063a66e6e5c14610d59578063a883fb9014610d7e578063a9059cbb14610dba578063ac35caee14610dfd578063b2b45df514610e83578063c915fc9314610f45578063d4eec5a614610f85578063dd62ed3e14610fac578063fe8beb7114610ff0575b5b6101e9611045565b73ffffffffffffffffffffffffffffffffffffffff1663db00b84834600036336040517c010000000000000000000000000000000000000000000000000000000063ffffffff871602815273ffffffffffffffffffffffffffffffffffffffff821660248201526040600482019081526044820184905290819060640185858082843782019150509450505050506000604051808303818588803b151561028f57600080fd5b6125ee5a03f115156102a057600080fd5b505050506102ae6001611056565b5b005b34156102bc57600080fd5b6102c4611077565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b34156102f857600080fd5b610300611094565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561033d5780820151818401525b602001610324565b50505050905090810190601f16801561036a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561038357600080fd5b6103a773ffffffffffffffffffffffffffffffffffffffff60043516602435611132565b604051901515815260200160405180910390f35b34156103c657600080fd5b6103a76111fa565b604051901515815260200160405180910390f35b34156103ed57600080fd5b6102c4611291565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b341561042957600080fd5b6103a773ffffffffffffffffffffffffffffffffffffffff6004803582169160248035909116916044359160849060643590810190830135806020601f820181900481020160405190810160405281815292919060208401838380828437509496505050923573ffffffffffffffffffffffffffffffffffffffff1692506112ae915050565b604051901515815260200160405180910390f35b34156104ce57600080fd5b6104d661145b565b60405190815260200160405180910390f35b34156104f357600080fd5b6102ae73ffffffffffffffffffffffffffffffffffffffff600435811690602435166044356114f8565b005b341561052a57600080fd5b6103a773ffffffffffffffffffffffffffffffffffffffff60043581169060243516604435611585565b604051901515815260200160405180910390f35b341561057357600080fd5b6102ae73ffffffffffffffffffffffffffffffffffffffff600435811690602435166044356115ab565b005b34156105aa57600080fd5b6103a7600435611638565b604051901515815260200160405180910390f35b34156105d457600080fd5b6105dc6117d9565b60405160ff909116815260200160405180910390f35b34156105fd57600080fd5b6102c4611876565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b341561063957600080fd5b6104d6611892565b60405190815260200160405180910390f35b341561065e57600080fd5b6103a7611899565b604051901515815260200160405180910390f35b341561068557600080fd5b6103a76119af565b604051901515815260200160405180910390f35b34156106ac57600080fd5b6103a773ffffffffffffffffffffffffffffffffffffffff6004803582169160248035909116916044359160849060643590810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650611a0095505050505050565b604051901515815260200160405180910390f35b341561073957600080fd5b6104d673ffffffffffffffffffffffffffffffffffffffff60043516611b47565b60405190815260200160405180910390f35b341561077757600080fd5b6103a7600435602435611c02565b604051901515815260200160405180910390f35b34156107a457600080fd5b6103a76004803573ffffffffffffffffffffffffffffffffffffffff169060446024803590810190830135806020601f820181900481020160405190810160405281815292919060208401838380828437509496505093359350611c2692505050565b604051901515815260200160405180910390f35b341561082657600080fd5b6103a7600480359060248035919060649060443590810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650611c4c95505050505050565b604051901515815260200160405180910390f35b341561089657600080fd5b6103a773ffffffffffffffffffffffffffffffffffffffff6004358116906024359060443516611d84565b604051901515815260200160405180910390f35b34156108e057600080fd5b6103a760046024813581810190830135806020601f820181900481020160405190810160405281815292919060208401838380828437509496505093359350611e9a92505050565b604051901515815260200160405180910390f35b341561094757600080fd5b6103a760046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528181529291906020840183838082843750949650611ebe95505050505050565b604051901515815260200160405180910390f35b34156109ee57600080fd5b6103a76004803573ffffffffffffffffffffffffffffffffffffffff169060446024803590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052818152929190602084018383808284375094965061205195505050505050565b604051901515815260200160405180910390f35b3415610ab957600080fd5b610300612072565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561033d5780820151818401525b602001610324565b50505050905090810190601f16801561036a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3415610b4457600080fd5b6103a760046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052818152929190602084018383808284375094965061211095505050505050565b604051901515815260200160405180910390f35b3415610bf457600080fd5b6103a76004803573ffffffffffffffffffffffffffffffffffffffff169060248035916044359160849060643590810190830135806020601f820181900481020160405190810160405281815292919060208401838380828437509496505050923573ffffffffffffffffffffffffffffffffffffffff16925061212f915050565b604051901515815260200160405180910390f35b3415610c9557600080fd5b6103a76004803573ffffffffffffffffffffffffffffffffffffffff169060248035916044359160849060643590810190830135806020601f820181900481020160405190810160405281815292919060208401838380828437509496506122b795505050505050565b604051901515815260200160405180910390f35b3415610d1e57600080fd5b6103a773ffffffffffffffffffffffffffffffffffffffff600435166024356044356123fd565b604051901515815260200160405180910390f35b3415610d6457600080fd5b6104d6612423565b60405190815260200160405180910390f35b3415610d8957600080fd5b6102c4612429565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3415610dc557600080fd5b6103a773ffffffffffffffffffffffffffffffffffffffff60043516602435612446565b604051901515815260200160405180910390f35b3415610e0857600080fd5b6103a76004803573ffffffffffffffffffffffffffffffffffffffff169060248035919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061246a95505050505050565b604051901515815260200160405180910390f35b3415610e8e57600080fd5b6103a76004803573ffffffffffffffffffffffffffffffffffffffff169060446024803590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405281815292919060208401838380828437509496506125e195505050505050565b604051901515815260200160405180910390f35b3415610f5057600080fd5b6103a773ffffffffffffffffffffffffffffffffffffffff60043516612688565b604051901515815260200160405180910390f35b3415610f9057600080fd5b6103a761288c565b604051901515815260200160405180910390f35b3415610fb757600080fd5b6104d673ffffffffffffffffffffffffffffffffffffffff6004358116906024351661291f565b60405190815260200160405180910390f35b3415610ffb57600080fd5b6102c473ffffffffffffffffffffffffffffffffffffffff600435166129e9565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6000611050336129e9565b90505b90565b593d81016040523d6000823e81801561106d573d82f35b3d82fd5b50505b50565b60005473ffffffffffffffffffffffffffffffffffffffff165b90565b60028054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561112a5780601f106110ff5761010080835404028352916020019161112a565b820191906000526020600020905b81548152906001019060200180831161110d57829003601f168201915b505050505081565b600061113c611045565b73ffffffffffffffffffffffffffffffffffffffff1663e34f71378484336000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff861602815273ffffffffffffffffffffffffffffffffffffffff938416600482015260248101929092529091166044820152606401602060405180830381600087803b15156111d757600080fd5b6102c65a03f115156111e857600080fd5b50505060405180519150505b92915050565b60055460009073ffffffffffffffffffffffffffffffffffffffff16151561122457506000611053565b426203f48060065401111561123b57506000611053565b5060058054600480547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff841617909155169055600060065560015b90565b60045473ffffffffffffffffffffffffffffffffffffffff165b90565b6000813373ffffffffffffffffffffffffffffffffffffffff166112d1826129e9565b73ffffffffffffffffffffffffffffffffffffffff16141561144f576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663161ff66288888860015489896000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff891602815273ffffffffffffffffffffffffffffffffffffffff808816600483019081528782166024840152604483018790526064830186905290831660a483015260c060848301908152909160c40184818151815260200191508051906020019080838360005b838110156113e25780820151818401525b6020016113c9565b50505050905090810190601f16801561140f5780820380516001836020036101000a031916815260200191505b50975050505050505050602060405180830381600087803b151561143257600080fd5b6102c65a03f1151561144357600080fd5b50505060405180519250505b5b5b5095945050505050565b6000805460015473ffffffffffffffffffffffffffffffffffffffff9091169063b524abcf9083604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff84160281526004810191909152602401602060405180830381600087803b15156114d857600080fd5b6102c65a03f115156114e957600080fd5b50505060405180519150505b90565b6000543373ffffffffffffffffffffffffffffffffffffffff90811691161415611071578173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405190815260200160405180910390a35b5b5b505050565b60006115a1848484602060405190810160405260008152611a00565b90505b9392505050565b6000543373ffffffffffffffffffffffffffffffffffffffff90811691161415611071578173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405190815260200160405180910390a35b5b5b505050565b6000805460015473ffffffffffffffffffffffffffffffffffffffff9091169063e96b462a90339084604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff851602815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401602060405180830381600087803b15156116d157600080fd5b6102c65a03f115156116e257600080fd5b50505060405180519050156117d2573073ffffffffffffffffffffffffffffffffffffffff1663ac35caee33846000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff851602815273ffffffffffffffffffffffffffffffffffffffff9092166004830152602482015260606044820152600f60648201527f546f6b656e73207265636f766572790000000000000000000000000000000000608482015260a401602060405180830381600087803b15156117b557600080fd5b6102c65a03f115156117c657600080fd5b50505060405180519150505b5b5b919050565b6000805460015473ffffffffffffffffffffffffffffffffffffffff9091169063dc86e6f09083604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff84160281526004810191909152602401602060405180830381600087803b15156114d857600080fd5b6102c65a03f115156114e957600080fd5b50505060405180519150505b90565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b6006545b90565b6000805460015473ffffffffffffffffffffffffffffffffffffffff9091169063e96b462a90339084604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff851602815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401602060405180830381600087803b151561193257600080fd5b6102c65a03f1151561194357600080fd5b50505060405180519050156110535760055473ffffffffffffffffffffffffffffffffffffffff16151561197957506000611053565b50600580547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055600060065560015b5b5b90565b73ffffffffffffffffffffffffffffffffffffffff3316600090815260076020526040902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905560015b90565b6000611a0a611045565b73ffffffffffffffffffffffffffffffffffffffff1663cca9702586868686336000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff881602815273ffffffffffffffffffffffffffffffffffffffff80871660048301908152868216602484015260448301869052908316608483015260a060648301908152909160a40184818151815260200191508051906020019080838360005b83811015611ad35780820151818401525b602001611aba565b50505050905090810190601f168015611b005780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b1515611b2257600080fd5b6102c65a03f11515611b3357600080fd5b50505060405180519150505b949350505050565b6000805460015473ffffffffffffffffffffffffffffffffffffffff90911690634d30b6be90849084604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff851602815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401602060405180830381600087803b15156117b557600080fd5b6102c65a03f115156117c657600080fd5b50505060405180519150505b919050565b6000611c1d8383602060405190810160405260008152611c4c565b90505b92915050565b60006115a1848484602060405190810160405260008152612051565b90505b9392505050565b6000611c56611045565b73ffffffffffffffffffffffffffffffffffffffff1663c10796df858585336000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff8716028152600481018581526024820185905273ffffffffffffffffffffffffffffffffffffffff83166064830152608060448301908152909160840184818151815260200191508051906020019080838360005b83811015611d125780820151818401525b602001611cf9565b50505050905090810190601f168015611d3f5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1515611d6057600080fd5b6102c65a03f11515611d7157600080fd5b50505060405180519150505b9392505050565b6000813373ffffffffffffffffffffffffffffffffffffffff16611da7826129e9565b73ffffffffffffffffffffffffffffffffffffffff161415611e90576000805460015473ffffffffffffffffffffffffffffffffffffffff909116916314712e2f9188918891908890604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff871602815273ffffffffffffffffffffffffffffffffffffffff9485166004820152602481019390935260448301919091529091166064820152608401602060405180830381600087803b1515611e7357600080fd5b6102c65a03f11515611e8457600080fd5b50505060405180519250505b5b5b509392505050565b6000611c1d8383602060405190810160405260008152612110565b90505b92915050565b6000805460015473ffffffffffffffffffffffffffffffffffffffff9091169063e96b462a90339084604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff851602815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401602060405180830381600087803b1515611f5757600080fd5b6102c65a03f11515611f6857600080fd5b50505060405180519050156111f4576000805460015473ffffffffffffffffffffffffffffffffffffffff909116916332a16f4e9190604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff84160281526004810191909152602401602060405180830381600087803b1515611ff457600080fd5b6102c65a03f1151561200557600080fd5b505050604051805190501561201c575060006111f4565b600282805161202f929160200190612a76565b506003838051612043929160200190612a76565b50600190505b5b5b92915050565b60006120678561206086612a67565b85856122b7565b90505b949350505050565b60038054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561112a5780601f106110ff5761010080835404028352916020019161112a565b820191906000526020600020905b81548152906001019060200180831161110d57829003601f168201915b505050505081565b60006115a161211e85612a67565b8484611c4c565b90505b9392505050565b6000813373ffffffffffffffffffffffffffffffffffffffff16612152826129e9565b73ffffffffffffffffffffffffffffffffffffffff16141561144f576000805473ffffffffffffffffffffffffffffffffffffffff169063a69032ee9089908990899089908990604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff881602815273ffffffffffffffffffffffffffffffffffffffff808716600483019081526024830187905260448301869052908316608483015260a060648301908152909160a40184818151815260200191508051906020019080838360005b8381101561223f5780820151818401525b602001612226565b50505050905090810190601f16801561226c5780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b151561143257600080fd5b6102c65a03f1151561144357600080fd5b50505060405180519250505b5b5b5095945050505050565b60006122c1611045565b73ffffffffffffffffffffffffffffffffffffffff1663eb58705b86868686336000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff881602815273ffffffffffffffffffffffffffffffffffffffff808716600483019081526024830187905260448301869052908316608483015260a060648301908152909160a40184818151815260200191508051906020019080838360005b83811015611ad35780820151818401525b602001611aba565b50505050905090810190601f168015611b005780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b1515611b2257600080fd5b6102c65a03f11515611b3357600080fd5b50505060405180519150505b949350505050565b60006115a18484846020604051908101604052600081526122b7565b90505b9392505050565b60015481565b60055473ffffffffffffffffffffffffffffffffffffffff165b90565b6000611c1d838360206040519081016040526000815261246a565b90505b92915050565b6000612474611045565b73ffffffffffffffffffffffffffffffffffffffff16631962df71858585336000604051602001526040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825284818151815260200191508051906020019080838360005b83811015611d125780820151818401525b602001611cf9565b50505050905090810190601f168015611d3f5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1515611d6057600080fd5b6102c65a03f11515611d7157600080fd5b50505060405180519150505b9392505050565b6000805473ffffffffffffffffffffffffffffffffffffffff1615612608575060006115a4565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861617905561265183612a67565b6001556002828051612667929160200190612a76565b50600383805161267b929160200190612a76565b50600190505b9392505050565b6000805460015473ffffffffffffffffffffffffffffffffffffffff9091169063e96b462a90339084604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff851602815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401602060405180830381600087803b151561272157600080fd5b6102c65a03f1151561273257600080fd5b50505060405180519050156117d25760055473ffffffffffffffffffffffffffffffffffffffff1615612767575060006117d2565b73ffffffffffffffffffffffffffffffffffffffff8216151561278c575060006117d2565b60045473ffffffffffffffffffffffffffffffffffffffff1615156127f35750600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831617905560016117d2565b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416179055426006557faf574319215a31df9b528258f1bdeef2b12b169dc85ff443a49373248c77493a8260405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a15060015b5b5b919050565b73ffffffffffffffffffffffffffffffffffffffff338116600090815260076020526040812054909116156128c357506000611053565b506004543373ffffffffffffffffffffffffffffffffffffffff908116600090815260076020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169190921617905560015b90565b6000805460015473ffffffffffffffffffffffffffffffffffffffff90911690631c8d5d38908590859085604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff861602815273ffffffffffffffffffffffffffffffffffffffff93841660048201529190921660248201526044810191909152606401602060405180830381600087803b15156111d757600080fd5b6102c65a03f115156111e857600080fd5b50505060405180519150505b92915050565b73ffffffffffffffffffffffffffffffffffffffff80821660009081526007602052604081205490911615612a455773ffffffffffffffffffffffffffffffffffffffff80831660009081526007602052604090205416612a5f565b60045473ffffffffffffffffffffffffffffffffffffffff165b90505b919050565b6000602082015190505b919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612ab757805160ff1916838001178555612ae4565b82800160010185558215612ae4579182015b82811115612ae4578251825591602001919060010190612ac9565b5b50612af1929150612af5565b5090565b61105391905b80821115612af15760008155600101612afb565b5090565b905600a165627a7a723058201b3565aca8ba7bf32fcc7d4cee78cd9e0f699da21898253f0acefb787aebb47e0029

Deployed Bytecode

0x606060405236156101e05763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663029a8bf781146102b157806306fdde03146102ed578063095ea7b3146103785780630ba12c83146103bb5780630e6d1de9146103e257806314cba0021461041e57806318160ddd146104c357806323385089146104e857806323b872dd1461051f57806323de66511461056857806330599fc51461059f578063313ce567146105c9578063406838b3146105f25780634bfaf2e81461062e5780634dfe950d146106535780635b48684e1461067a5780636461fe39146106a157806370a082311461072e578063733480b71461076c5780637609c5a91461079957806377fe38a41461081b5780637bcdc2f01461088b57806381d434e9146108d557806383841e0c1461093c57806384c5c34d146109e357806395d89b4114610aae5780639ab253cc14610b395780639b487f3f14610be9578063a48a663c14610c8a578063a525f42c14610d13578063a66e6e5c14610d59578063a883fb9014610d7e578063a9059cbb14610dba578063ac35caee14610dfd578063b2b45df514610e83578063c915fc9314610f45578063d4eec5a614610f85578063dd62ed3e14610fac578063fe8beb7114610ff0575b5b6101e9611045565b73ffffffffffffffffffffffffffffffffffffffff1663db00b84834600036336040517c010000000000000000000000000000000000000000000000000000000063ffffffff871602815273ffffffffffffffffffffffffffffffffffffffff821660248201526040600482019081526044820184905290819060640185858082843782019150509450505050506000604051808303818588803b151561028f57600080fd5b6125ee5a03f115156102a057600080fd5b505050506102ae6001611056565b5b005b34156102bc57600080fd5b6102c4611077565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b34156102f857600080fd5b610300611094565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561033d5780820151818401525b602001610324565b50505050905090810190601f16801561036a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561038357600080fd5b6103a773ffffffffffffffffffffffffffffffffffffffff60043516602435611132565b604051901515815260200160405180910390f35b34156103c657600080fd5b6103a76111fa565b604051901515815260200160405180910390f35b34156103ed57600080fd5b6102c4611291565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b341561042957600080fd5b6103a773ffffffffffffffffffffffffffffffffffffffff6004803582169160248035909116916044359160849060643590810190830135806020601f820181900481020160405190810160405281815292919060208401838380828437509496505050923573ffffffffffffffffffffffffffffffffffffffff1692506112ae915050565b604051901515815260200160405180910390f35b34156104ce57600080fd5b6104d661145b565b60405190815260200160405180910390f35b34156104f357600080fd5b6102ae73ffffffffffffffffffffffffffffffffffffffff600435811690602435166044356114f8565b005b341561052a57600080fd5b6103a773ffffffffffffffffffffffffffffffffffffffff60043581169060243516604435611585565b604051901515815260200160405180910390f35b341561057357600080fd5b6102ae73ffffffffffffffffffffffffffffffffffffffff600435811690602435166044356115ab565b005b34156105aa57600080fd5b6103a7600435611638565b604051901515815260200160405180910390f35b34156105d457600080fd5b6105dc6117d9565b60405160ff909116815260200160405180910390f35b34156105fd57600080fd5b6102c4611876565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b341561063957600080fd5b6104d6611892565b60405190815260200160405180910390f35b341561065e57600080fd5b6103a7611899565b604051901515815260200160405180910390f35b341561068557600080fd5b6103a76119af565b604051901515815260200160405180910390f35b34156106ac57600080fd5b6103a773ffffffffffffffffffffffffffffffffffffffff6004803582169160248035909116916044359160849060643590810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650611a0095505050505050565b604051901515815260200160405180910390f35b341561073957600080fd5b6104d673ffffffffffffffffffffffffffffffffffffffff60043516611b47565b60405190815260200160405180910390f35b341561077757600080fd5b6103a7600435602435611c02565b604051901515815260200160405180910390f35b34156107a457600080fd5b6103a76004803573ffffffffffffffffffffffffffffffffffffffff169060446024803590810190830135806020601f820181900481020160405190810160405281815292919060208401838380828437509496505093359350611c2692505050565b604051901515815260200160405180910390f35b341561082657600080fd5b6103a7600480359060248035919060649060443590810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650611c4c95505050505050565b604051901515815260200160405180910390f35b341561089657600080fd5b6103a773ffffffffffffffffffffffffffffffffffffffff6004358116906024359060443516611d84565b604051901515815260200160405180910390f35b34156108e057600080fd5b6103a760046024813581810190830135806020601f820181900481020160405190810160405281815292919060208401838380828437509496505093359350611e9a92505050565b604051901515815260200160405180910390f35b341561094757600080fd5b6103a760046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528181529291906020840183838082843750949650611ebe95505050505050565b604051901515815260200160405180910390f35b34156109ee57600080fd5b6103a76004803573ffffffffffffffffffffffffffffffffffffffff169060446024803590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052818152929190602084018383808284375094965061205195505050505050565b604051901515815260200160405180910390f35b3415610ab957600080fd5b610300612072565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561033d5780820151818401525b602001610324565b50505050905090810190601f16801561036a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3415610b4457600080fd5b6103a760046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052818152929190602084018383808284375094965061211095505050505050565b604051901515815260200160405180910390f35b3415610bf457600080fd5b6103a76004803573ffffffffffffffffffffffffffffffffffffffff169060248035916044359160849060643590810190830135806020601f820181900481020160405190810160405281815292919060208401838380828437509496505050923573ffffffffffffffffffffffffffffffffffffffff16925061212f915050565b604051901515815260200160405180910390f35b3415610c9557600080fd5b6103a76004803573ffffffffffffffffffffffffffffffffffffffff169060248035916044359160849060643590810190830135806020601f820181900481020160405190810160405281815292919060208401838380828437509496506122b795505050505050565b604051901515815260200160405180910390f35b3415610d1e57600080fd5b6103a773ffffffffffffffffffffffffffffffffffffffff600435166024356044356123fd565b604051901515815260200160405180910390f35b3415610d6457600080fd5b6104d6612423565b60405190815260200160405180910390f35b3415610d8957600080fd5b6102c4612429565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3415610dc557600080fd5b6103a773ffffffffffffffffffffffffffffffffffffffff60043516602435612446565b604051901515815260200160405180910390f35b3415610e0857600080fd5b6103a76004803573ffffffffffffffffffffffffffffffffffffffff169060248035919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061246a95505050505050565b604051901515815260200160405180910390f35b3415610e8e57600080fd5b6103a76004803573ffffffffffffffffffffffffffffffffffffffff169060446024803590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405281815292919060208401838380828437509496506125e195505050505050565b604051901515815260200160405180910390f35b3415610f5057600080fd5b6103a773ffffffffffffffffffffffffffffffffffffffff60043516612688565b604051901515815260200160405180910390f35b3415610f9057600080fd5b6103a761288c565b604051901515815260200160405180910390f35b3415610fb757600080fd5b6104d673ffffffffffffffffffffffffffffffffffffffff6004358116906024351661291f565b60405190815260200160405180910390f35b3415610ffb57600080fd5b6102c473ffffffffffffffffffffffffffffffffffffffff600435166129e9565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6000611050336129e9565b90505b90565b593d81016040523d6000823e81801561106d573d82f35b3d82fd5b50505b50565b60005473ffffffffffffffffffffffffffffffffffffffff165b90565b60028054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561112a5780601f106110ff5761010080835404028352916020019161112a565b820191906000526020600020905b81548152906001019060200180831161110d57829003601f168201915b505050505081565b600061113c611045565b73ffffffffffffffffffffffffffffffffffffffff1663e34f71378484336000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff861602815273ffffffffffffffffffffffffffffffffffffffff938416600482015260248101929092529091166044820152606401602060405180830381600087803b15156111d757600080fd5b6102c65a03f115156111e857600080fd5b50505060405180519150505b92915050565b60055460009073ffffffffffffffffffffffffffffffffffffffff16151561122457506000611053565b426203f48060065401111561123b57506000611053565b5060058054600480547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff841617909155169055600060065560015b90565b60045473ffffffffffffffffffffffffffffffffffffffff165b90565b6000813373ffffffffffffffffffffffffffffffffffffffff166112d1826129e9565b73ffffffffffffffffffffffffffffffffffffffff16141561144f576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663161ff66288888860015489896000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff891602815273ffffffffffffffffffffffffffffffffffffffff808816600483019081528782166024840152604483018790526064830186905290831660a483015260c060848301908152909160c40184818151815260200191508051906020019080838360005b838110156113e25780820151818401525b6020016113c9565b50505050905090810190601f16801561140f5780820380516001836020036101000a031916815260200191505b50975050505050505050602060405180830381600087803b151561143257600080fd5b6102c65a03f1151561144357600080fd5b50505060405180519250505b5b5b5095945050505050565b6000805460015473ffffffffffffffffffffffffffffffffffffffff9091169063b524abcf9083604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff84160281526004810191909152602401602060405180830381600087803b15156114d857600080fd5b6102c65a03f115156114e957600080fd5b50505060405180519150505b90565b6000543373ffffffffffffffffffffffffffffffffffffffff90811691161415611071578173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405190815260200160405180910390a35b5b5b505050565b60006115a1848484602060405190810160405260008152611a00565b90505b9392505050565b6000543373ffffffffffffffffffffffffffffffffffffffff90811691161415611071578173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405190815260200160405180910390a35b5b5b505050565b6000805460015473ffffffffffffffffffffffffffffffffffffffff9091169063e96b462a90339084604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff851602815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401602060405180830381600087803b15156116d157600080fd5b6102c65a03f115156116e257600080fd5b50505060405180519050156117d2573073ffffffffffffffffffffffffffffffffffffffff1663ac35caee33846000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff851602815273ffffffffffffffffffffffffffffffffffffffff9092166004830152602482015260606044820152600f60648201527f546f6b656e73207265636f766572790000000000000000000000000000000000608482015260a401602060405180830381600087803b15156117b557600080fd5b6102c65a03f115156117c657600080fd5b50505060405180519150505b5b5b919050565b6000805460015473ffffffffffffffffffffffffffffffffffffffff9091169063dc86e6f09083604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff84160281526004810191909152602401602060405180830381600087803b15156114d857600080fd5b6102c65a03f115156114e957600080fd5b50505060405180519150505b90565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b6006545b90565b6000805460015473ffffffffffffffffffffffffffffffffffffffff9091169063e96b462a90339084604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff851602815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401602060405180830381600087803b151561193257600080fd5b6102c65a03f1151561194357600080fd5b50505060405180519050156110535760055473ffffffffffffffffffffffffffffffffffffffff16151561197957506000611053565b50600580547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055600060065560015b5b5b90565b73ffffffffffffffffffffffffffffffffffffffff3316600090815260076020526040902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905560015b90565b6000611a0a611045565b73ffffffffffffffffffffffffffffffffffffffff1663cca9702586868686336000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff881602815273ffffffffffffffffffffffffffffffffffffffff80871660048301908152868216602484015260448301869052908316608483015260a060648301908152909160a40184818151815260200191508051906020019080838360005b83811015611ad35780820151818401525b602001611aba565b50505050905090810190601f168015611b005780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b1515611b2257600080fd5b6102c65a03f11515611b3357600080fd5b50505060405180519150505b949350505050565b6000805460015473ffffffffffffffffffffffffffffffffffffffff90911690634d30b6be90849084604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff851602815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401602060405180830381600087803b15156117b557600080fd5b6102c65a03f115156117c657600080fd5b50505060405180519150505b919050565b6000611c1d8383602060405190810160405260008152611c4c565b90505b92915050565b60006115a1848484602060405190810160405260008152612051565b90505b9392505050565b6000611c56611045565b73ffffffffffffffffffffffffffffffffffffffff1663c10796df858585336000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff8716028152600481018581526024820185905273ffffffffffffffffffffffffffffffffffffffff83166064830152608060448301908152909160840184818151815260200191508051906020019080838360005b83811015611d125780820151818401525b602001611cf9565b50505050905090810190601f168015611d3f5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1515611d6057600080fd5b6102c65a03f11515611d7157600080fd5b50505060405180519150505b9392505050565b6000813373ffffffffffffffffffffffffffffffffffffffff16611da7826129e9565b73ffffffffffffffffffffffffffffffffffffffff161415611e90576000805460015473ffffffffffffffffffffffffffffffffffffffff909116916314712e2f9188918891908890604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff871602815273ffffffffffffffffffffffffffffffffffffffff9485166004820152602481019390935260448301919091529091166064820152608401602060405180830381600087803b1515611e7357600080fd5b6102c65a03f11515611e8457600080fd5b50505060405180519250505b5b5b509392505050565b6000611c1d8383602060405190810160405260008152612110565b90505b92915050565b6000805460015473ffffffffffffffffffffffffffffffffffffffff9091169063e96b462a90339084604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff851602815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401602060405180830381600087803b1515611f5757600080fd5b6102c65a03f11515611f6857600080fd5b50505060405180519050156111f4576000805460015473ffffffffffffffffffffffffffffffffffffffff909116916332a16f4e9190604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff84160281526004810191909152602401602060405180830381600087803b1515611ff457600080fd5b6102c65a03f1151561200557600080fd5b505050604051805190501561201c575060006111f4565b600282805161202f929160200190612a76565b506003838051612043929160200190612a76565b50600190505b5b5b92915050565b60006120678561206086612a67565b85856122b7565b90505b949350505050565b60038054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561112a5780601f106110ff5761010080835404028352916020019161112a565b820191906000526020600020905b81548152906001019060200180831161110d57829003601f168201915b505050505081565b60006115a161211e85612a67565b8484611c4c565b90505b9392505050565b6000813373ffffffffffffffffffffffffffffffffffffffff16612152826129e9565b73ffffffffffffffffffffffffffffffffffffffff16141561144f576000805473ffffffffffffffffffffffffffffffffffffffff169063a69032ee9089908990899089908990604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff881602815273ffffffffffffffffffffffffffffffffffffffff808716600483019081526024830187905260448301869052908316608483015260a060648301908152909160a40184818151815260200191508051906020019080838360005b8381101561223f5780820151818401525b602001612226565b50505050905090810190601f16801561226c5780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b151561143257600080fd5b6102c65a03f1151561144357600080fd5b50505060405180519250505b5b5b5095945050505050565b60006122c1611045565b73ffffffffffffffffffffffffffffffffffffffff1663eb58705b86868686336000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff881602815273ffffffffffffffffffffffffffffffffffffffff808716600483019081526024830187905260448301869052908316608483015260a060648301908152909160a40184818151815260200191508051906020019080838360005b83811015611ad35780820151818401525b602001611aba565b50505050905090810190601f168015611b005780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b1515611b2257600080fd5b6102c65a03f11515611b3357600080fd5b50505060405180519150505b949350505050565b60006115a18484846020604051908101604052600081526122b7565b90505b9392505050565b60015481565b60055473ffffffffffffffffffffffffffffffffffffffff165b90565b6000611c1d838360206040519081016040526000815261246a565b90505b92915050565b6000612474611045565b73ffffffffffffffffffffffffffffffffffffffff16631962df71858585336000604051602001526040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825284818151815260200191508051906020019080838360005b83811015611d125780820151818401525b602001611cf9565b50505050905090810190601f168015611d3f5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1515611d6057600080fd5b6102c65a03f11515611d7157600080fd5b50505060405180519150505b9392505050565b6000805473ffffffffffffffffffffffffffffffffffffffff1615612608575060006115a4565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861617905561265183612a67565b6001556002828051612667929160200190612a76565b50600383805161267b929160200190612a76565b50600190505b9392505050565b6000805460015473ffffffffffffffffffffffffffffffffffffffff9091169063e96b462a90339084604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff851602815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401602060405180830381600087803b151561272157600080fd5b6102c65a03f1151561273257600080fd5b50505060405180519050156117d25760055473ffffffffffffffffffffffffffffffffffffffff1615612767575060006117d2565b73ffffffffffffffffffffffffffffffffffffffff8216151561278c575060006117d2565b60045473ffffffffffffffffffffffffffffffffffffffff1615156127f35750600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831617905560016117d2565b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416179055426006557faf574319215a31df9b528258f1bdeef2b12b169dc85ff443a49373248c77493a8260405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a15060015b5b5b919050565b73ffffffffffffffffffffffffffffffffffffffff338116600090815260076020526040812054909116156128c357506000611053565b506004543373ffffffffffffffffffffffffffffffffffffffff908116600090815260076020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169190921617905560015b90565b6000805460015473ffffffffffffffffffffffffffffffffffffffff90911690631c8d5d38908590859085604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff861602815273ffffffffffffffffffffffffffffffffffffffff93841660048201529190921660248201526044810191909152606401602060405180830381600087803b15156111d757600080fd5b6102c65a03f115156111e857600080fd5b50505060405180519150505b92915050565b73ffffffffffffffffffffffffffffffffffffffff80821660009081526007602052604081205490911615612a455773ffffffffffffffffffffffffffffffffffffffff80831660009081526007602052604090205416612a5f565b60045473ffffffffffffffffffffffffffffffffffffffff165b90505b919050565b6000602082015190505b919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612ab757805160ff1916838001178555612ae4565b82800160010185558215612ae4579182015b82811115612ae4578251825591602001919060010190612ac9565b5b50612af1929150612af5565b5090565b61105391905b80821115612af15760008155600101612afb565b5090565b905600a165627a7a723058201b3565aca8ba7bf32fcc7d4cee78cd9e0f699da21898253f0acefb787aebb47e0029

Swarm Source

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