ETH Price: $2,489.10 (-0.85%)

Token

Papyrus Token (PPR)
 

Overview

Max Total Supply

970,501,601.336351496530788983 PPR

Holders

7,988

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
15 PPR

Value
$0.00
0x57a3e7088651b237cd363d7025554a63d47fc21f
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Papyrus is an open source public blockchain network that utilizes PoA consensus coupled with 'separation of powers' governance and compatible with Ethereum ecosystem. Provides highly scalable, reliable and cost-efficient decentralized solution.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
PapyrusToken

Compiler Version
v0.4.26+commit.4563c3fc

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2019-05-14
*/

pragma solidity ^0.4.24;


/// @title ERC-20 interface
/// @dev Full ERC-20 interface is described at https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md.
interface ERC20 {

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

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

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


/// @title ERC-677 (excluding ERC-20) interface
/// @dev Full ERC-677 interface is discussed at https://github.com/ethereum/EIPs/issues/677.
interface ERC677 {

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

    function transferAndCall(address to, uint256 value, bytes data) external returns (bool);
}


/// @title ERC-677 mint/burn/claim extension interface
/// @dev Extension of ERC-677 interface for allowing using a token in Token Bridge.
interface ERC677Bridgeable {

    event Mint(address indexed receiver, uint256 value);
    event Burn(address indexed burner, uint256 value);

    function mint(address receiver, uint256 value) external returns (bool);
    function burn(uint256 value) external;
    function claimTokens(address token, address to) external;
}


/// @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 SafeOwnable
/// @dev The SafeOwnable contract has an owner address, and provides basic authorization control
/// functions, this simplifies the implementation of "user permissions".
contract SafeOwnable {

    // EVENTS

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

    // PUBLIC FUNCTIONS

    /// @dev The SafeOwnable constructor sets the original `owner` of the contract to the sender account.
    constructor() internal {
        _owner = msg.sender;
        emit OwnershipTransferred(address(0), _owner);
    }

    /// @dev Allows the current owner to propose control of the contract to a new owner.
    /// @param newOwner The address to propose ownership to.
    function proposeOwnership(address newOwner) public onlyOwner {
        require(newOwner != address(0) && newOwner != _owner);
        _ownerCandidate = newOwner;
        emit OwnershipProposed(_owner, _ownerCandidate);
    }

    /// @dev Allows the current owner candidate to accept proposed ownership and set actual owner of a contract.
    function acceptOwnership() public onlyOwnerCandidate {
        emit OwnershipTransferred(_owner, _ownerCandidate);
        _owner = _ownerCandidate;
        _ownerCandidate = address(0);
    }

    /// @dev Returns the address of the owner.
    function owner() public view returns (address) {
        return _owner;
    }

    /// @dev Returns the address of the owner candidate.
    function ownerCandidate() public view returns (address) {
        return _ownerCandidate;
    }

    // MODIFIERS

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

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

    // FIELDS

    address internal _owner;
    address internal _ownerCandidate;
}


/// @title Standard ERC-20 token
/// @dev Implementation of the basic ERC-20 token.
contract TokenERC20 is ERC20 {
    using SafeMath for uint256;

    // PUBLIC FUNCTIONS

    /// @dev Transfers tokens to a specified address.
    /// @param to The address to transfer tokens to.
    /// @param value The amount of tokens to be transferred.
    /// @return A boolean that indicates if the operation was successful.
    function transfer(address to, uint256 value) public returns (bool) {
        _transfer(msg.sender, to, value);
        return true;
    }

    /// @dev Transfers tokens from one address to another.
    /// @param from The address to transfer tokens from.
    /// @param to The address to transfer tokens to.
    /// @param value The amount of tokens to be transferred.
    /// @return A boolean that indicates if the operation was successful.
    function transferFrom(address from, address to, uint256 value) public returns (bool) {
        _decreaseAllowance(from, msg.sender, value);
        _transfer(from, to, value);
        return true;
    }

    /// @dev Approves a specified address to spend a 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 an unfortunate transaction ordering. One possible solution to mitigate this
    /// rare 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 Address which will be allowed to spend the tokens.
    /// @param value Amount of tokens to allow to be spent.
    /// @return A boolean that indicates if the operation was successful.
    function approve(address spender, uint256 value) public returns (bool) {
        _allowances[msg.sender][spender] = value;
        emit Approval(msg.sender, spender, value);
        return true;
    }

    /// @dev Increases the amount of tokens that an owner allowed to spent by the spender.
    /// Method approve() should be called when _allowances[spender] == 0. To decrement allowance
    /// is better to use this function to avoid 2 calls (and wait until the first transaction is mined).
    /// @param spender The address which will spend the tokens.
    /// @param value The amount of tokens to increase the allowance by.
    /// @return A boolean that indicates if the operation was successful.
    function increaseAllowance(address spender, uint256 value) public returns (bool) {
        require(spender != address(0));
        _increaseAllowance(msg.sender, spender, value);
        return true;
    }

    /// @dev Decreases the amount of tokens that an owner allowed to spent by the spender.
    /// Method approve() should be called when _allowances[spender] == 0. To decrement allowance
    /// is better to use this function to avoid 2 calls (and wait until the first transaction is mined).
    /// @param spender The address which will spend the tokens.
    /// @param value The amount of tokens to decrease the allowance by.
    /// @return A boolean that indicates if the operation was successful.
    function decreaseAllowance(address spender, uint256 value) public returns (bool) {
        require(spender != address(0));
        _decreaseAllowance(msg.sender, spender, value);
        return true;
    }

    /// @dev Returns total amount of tokens in existence.
    /// @return A uint256 representing the amount of tokens in existence.
    function totalSupply() public view returns (uint256) {
        return _totalSupply;
    }

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

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

    // INTERNAL FUNCTIONS

    /// @dev Transfers tokens from one address to another address.
    /// @param from The address to transfer from.
    /// @param to The address to transfer to.
    /// @param value The amount to be transferred.
    function _transfer(address from, address to, uint256 value) internal {
        require(to != address(0));
        require(value <= _balances[from]);
        _balances[from] = _balances[from].sub(value);
        _balances[to] = _balances[to].add(value);
        emit Transfer(from, to, value);
    }

    /// @dev Increases the amount of tokens that an owner allowed to spent by the spender.
    /// Method approve() should be called when _allowances[spender] == 0. To decrement allowance
    /// is better to use this function to avoid 2 calls (and wait until the first transaction is mined).
    /// @param owner The address which owns the tokens.
    /// @param spender The address which will spend the tokens.
    /// @param value The amount of tokens to increase the allowance by.
    function _increaseAllowance(address owner, address spender, uint256 value) internal {
        require(value > 0);
        _allowances[owner][spender] = _allowances[owner][spender].add(value);
        emit Approval(owner, spender, _allowances[owner][spender]);
    }

    /// @dev Decreases the amount of tokens that an owner allowed to spent by the spender.
    /// Method approve() should be called when _allowances[spender] == 0. To decrement allowance
    /// is better to use this function to avoid 2 calls (and wait until the first transaction is mined).
    /// @param owner The address which owns the tokens.
    /// @param spender The address which will spend the tokens.
    /// @param value The amount of tokens to decrease the allowance by.
    function _decreaseAllowance(address owner, address spender, uint256 value) internal {
        require(value > 0 && value <= _allowances[owner][spender]);
        _allowances[owner][spender] = _allowances[owner][spender].sub(value);
        emit Approval(owner, spender, _allowances[owner][spender]);
    }

    /// @dev Internal function that mints specified amount of tokens and assigns it to an address.
    /// This encapsulates the modification of balances such that the proper events are emitted.
    /// @param receiver The address that will receive the minted tokens.
    /// @param value The amount of tokens that will be minted.
    function _mint(address receiver, uint256 value) internal {
        require(receiver != address(0));
        require(value > 0);
        _balances[receiver] = _balances[receiver].add(value);
        _totalSupply = _totalSupply.add(value);
        //_totalMinted = _totalMinted.add(value);
        emit Transfer(address(0), receiver, value);
    }

    /// @dev Internal function that burns specified amount of tokens of a given address.
    /// @param burner The address from which tokens will be burnt.
    /// @param value The amount of tokens that will be burnt.
    function _burn(address burner, uint256 value) internal {
        require(burner != address(0));
        require(value > 0 && value <= _balances[burner]);
        _balances[burner] = _balances[burner].sub(value);
        _totalSupply = _totalSupply.sub(value);
        emit Transfer(burner, address(0), value);
    }

    /// @dev Internal function that burns specified amount of tokens of a given address,
    /// deducting from the sender's allowance for said account. Uses the internal burn function.
    /// @param burner The address from which tokens will be burnt.
    /// @param value The amount of tokens that will be burnt.
    function _burnFrom(address burner, uint256 value) internal {
        _decreaseAllowance(burner, msg.sender, value);
        _burn(burner, value);
    }

    // FIELDS

    uint256 internal _totalSupply;
    mapping (address => uint256) internal _balances;
    mapping (address => mapping(address => uint256)) internal _allowances;
}


/// @title Papyrus Token contract (PPR).
contract PapyrusToken is SafeOwnable, TokenERC20, ERC677, ERC677Bridgeable {

    // EVENTS

    event ControlByOwnerRevoked();
    event MintableChanged(bool mintable);
    event TransferableChanged(bool transferable);
    event ContractFallbackCallFailed(address from, address to, uint256 value);
    event BridgeContractChanged(address indexed previousBridgeContract, address indexed newBridgeContract);

    // PUBLIC FUNCTIONS

    constructor() public {
        _totalSupply = PPR_INITIAL_SUPPLY;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    /// @dev Transfers tokens to a specified address with additional data if the recipient is a contact.
    /// @param to The address to transfer tokens to.
    /// @param value The amount of tokens to be transferred.
    /// @param data The extra data to be passed to the receiving contract.
    /// @return A boolean that indicates if the operation was successful.
    function transferAndCall(address to, uint256 value, bytes data) external canTransfer returns (bool) {
        require(to != address(this));
        require(super.transfer(to, value));
        emit Transfer(msg.sender, to, value, data);
        if (isContract(to)) {
            require(contractFallback(msg.sender, to, value, data));
        }
        return true;
    }

    /// @dev Transfers tokens to a specified address.
    /// @param to The address to transfer tokens to.
    /// @param value The amount of tokens to be transferred.
    /// @return A boolean that indicates if the operation was successful.
    function transfer(address to, uint256 value) public canTransfer returns (bool) {
        require(super.transfer(to, value));
        if (isContract(to) && !contractFallback(msg.sender, to, value, new bytes(0))) {
            if (to == _bridgeContract) {
                revert();
            }
            emit ContractFallbackCallFailed(msg.sender, to, value);
        }
        return true;
    }

    /// @dev Transfers tokens from one address to another.
    /// @param from The address to transfer tokens from.
    /// @param to The address to transfer tokens to.
    /// @param value The amount of tokens to be transferred.
    /// @return A boolean that indicates if the operation was successful.
    function transferFrom(address from, address to, uint256 value) public canTransfer returns (bool) {
        require(super.transferFrom(from, to, value));
        if (isContract(to) && !contractFallback(from, to, value, new bytes(0))) {
            if (to == _bridgeContract) {
                revert();
            }
            emit ContractFallbackCallFailed(from, to, value);
        }
        return true;
    }

    /// @dev Transfers tokens to a specified addresses (optimized version for initial sending tokens).
    /// @param recipients Addresses to transfer tokens to.
    /// @param values Amounts of tokens to be transferred.
    /// @return A boolean that indicates if the operation was successful.
    function airdrop(address[] recipients, uint256[] values) public canTransfer returns (bool) {
        require(recipients.length == values.length);
        uint256 senderBalance = _balances[msg.sender];
        for (uint256 i = 0; i < values.length; i++) {
            uint256 value = values[i];
            address to = recipients[i];
            require(senderBalance >= value);
            if (msg.sender != recipients[i]) {
                senderBalance = senderBalance - value;
                _balances[to] += value;
            }
            emit Transfer(msg.sender, to, value);
        }
        _balances[msg.sender] = senderBalance;
        return true;
    }

    /// @dev Mints specified amount of tokens and assigns it to a specified address.
    /// @param receiver The address that will receive the minted tokens.
    /// @param value The amount of tokens that will be minted.
    function mint(address receiver, uint256 value) public canMint returns (bool) {
        _mint(receiver, value);
        _totalMinted = _totalMinted.add(value);
        emit Mint(receiver, value);
        return true;
    }

    /// @dev Burns specified amount of tokens of the sender.
    /// @param value The amount of token to be burnt.
    function burn(uint256 value) public canBurn {
        _burn(msg.sender, value);
        _totalBurnt = _totalBurnt.add(value);
        emit Burn(msg.sender, value);
    }

    /// @dev Burns specified amount of tokens of the specified account.
    /// @param burner The address from which tokens will be burnt.
    /// @param value The amount of token to be burnt.
    function burnByOwner(address burner, uint256 value) public canBurnByOwner {
        _burn(burner, value);
        _totalBurnt = _totalBurnt.add(value);
        emit Burn(burner, value);
    }

    /// @dev Transfers funds stored on the token contract to specified recipient (required by token bridge).
    function claimTokens(address token, address to) public onlyOwnerOrBridgeContract {
        require(to != address(0));
        if (token == address(0)) {
            to.transfer(address(this).balance);
        } else {
            ERC20 erc20 = ERC20(token);
            uint256 balance = erc20.balanceOf(address(this));
            require(erc20.transfer(to, balance));
        }
    }

    /// @dev Revokes control by owner so it is not possible to burn tokens from any account by contract owner.
    function revokeControlByOwner() public onlyOwner {
        require(_controllable);
        _controllable = false;
        emit ControlByOwnerRevoked();
    }

    /// @dev Changes ability to mint tokens by permissioned accounts.
    function setMintable(bool mintable) public onlyOwner {
        require(_mintable != mintable);
        _mintable = mintable;
        emit MintableChanged(_mintable);
    }

    /// @dev Changes ability to transfer tokens by token holders.
    function setTransferable(bool transferable) public onlyOwner {
        require(_transferable != transferable);
        _transferable = transferable;
        emit TransferableChanged(_transferable);
    }

    /// @dev Changes address of token bridge contract.
    function setBridgeContract(address bridgeContract) public onlyOwner {
        require(_controllable);
        require(bridgeContract != address(0) && bridgeContract != _bridgeContract && isContract(bridgeContract));
        emit BridgeContractChanged(_bridgeContract, bridgeContract);
        _bridgeContract = bridgeContract;
    }

    /// @dev Turn off renounceOwnership() method from Ownable contract.
    function renounceOwnership() public pure {
        revert();
    }

    /// @dev Returns a boolean flag representing ability to burn tokens from any account by contract owner.
    /// @return A boolean that indicates if tokens can be burnt from any account by contract owner.
    function controllableByOwner() public view returns (bool) {
        return _controllable;
    }

    /// @dev Returns a boolean flag representing token mint ability.
    /// @return A boolean that indicates if tokens can be mintable by permissioned accounts.
    function mintable() public view returns (bool) {
        return _mintable;
    }

    /// @dev Returns a boolean flag representing token transfer ability.
    /// @return A boolean that indicates if tokens can be transferred by token holders.
    function transferable() public view returns (bool) {
        return _transferable;
    }

    /// @dev Returns an address of token bridge contract.
    /// @return An address of token bridge contract.
    function bridgeContract() public view returns (address) {
        return _bridgeContract;
    }

    /// @dev Returns total amount of minted tokens.
    /// @return A uint256 representing the amount of tokens were mint during token lifetime.
    function totalMinted() public view returns (uint256) {
        return _totalMinted;
    }

    /// @dev Returns total amount of burnt tokens.
    /// @return A uint256 representing the amount of tokens were burnt during token lifetime.
    function totalBurnt() public view returns (uint256) {
        return _totalBurnt;
    }

    /// @dev Returns version of token interfaces (required by token bridge).
    function getTokenInterfacesVersion() public pure returns (uint64, uint64, uint64) {
        uint64 major = 2;
        uint64 minor = 0;
        uint64 patch = 0;
        return (major, minor, patch);
    }

    // PRIVATE FUNCTIONS

    /// @dev Calls method onTokenTransfer() on specified contract address `receiver`.
    /// @return A boolean that indicates if the operation was successful.
    function contractFallback(address from, address receiver, uint256 value, bytes data) private returns (bool) {
        return receiver.call(abi.encodeWithSignature("onTokenTransfer(address,uint256,bytes)", from, value, data));
    }

    /// @dev Determines if specified address is contract address.
    /// @return A boolean that indicates if specified address is contract address.
    function isContract(address account) private view returns (bool) {
        uint256 codeSize;
        assembly { codeSize := extcodesize(account) }
        return codeSize > 0;
    }

    // MODIFIERS

    modifier onlyOwnerOrBridgeContract() {
        require(msg.sender == _owner || msg.sender == _bridgeContract);
        _;
    }

    modifier canMint() {
        require(_mintable);
        require(msg.sender == _owner || msg.sender == _bridgeContract);
        _;
    }

    modifier canBurn() {
        require(msg.sender == _owner || msg.sender == _bridgeContract);
        _;
    }

    modifier canBurnByOwner() {
        require(msg.sender == _owner && _controllable);
        _;
    }

    modifier canTransfer() {
        require(_transferable || msg.sender == _owner);
        _;
    }

    // FIELDS

    // Standard fields used to describe the token
    string public constant name = "Papyrus Token";
    string public constant symbol = "PPR";
    uint8 public constant decimals = 18;

    // At the start of the token existence it is fully controllable by owner
    bool private _controllable = true;

    // At the start of the token existence it is mintable
    bool private _mintable = true;

    // At the start of the token existence it is not transferable
    bool private _transferable = false;

    // Address of token bridge contract
    address private _bridgeContract;

    // Total amount of tokens minted during token lifetime
    uint256 private _totalMinted;
    // Total amount of tokens burnt during token lifetime
    uint256 private _totalBurnt;

    // Amount of initially supplied tokens is constant and equals to 1,000,000,000 PPR
    uint256 private constant PPR_INITIAL_SUPPLY = 10**27;
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"bridgeContract","type":"address"}],"name":"setBridgeContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"burner","type":"address"},{"name":"value","type":"uint256"}],"name":"burnByOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"mintable","type":"bool"}],"name":"setMintable","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"value","type":"uint256"}],"name":"increaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"},{"name":"data","type":"bytes"}],"name":"transferAndCall","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"receiver","type":"address"},{"name":"value","type":"uint256"}],"name":"mint","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"value","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"mintable","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ownerCandidate","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"recipients","type":"address[]"},{"name":"values","type":"uint256[]"}],"name":"airdrop","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"to","type":"address"}],"name":"claimTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"proposeOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getTokenInterfacesVersion","outputs":[{"name":"","type":"uint64"},{"name":"","type":"uint64"},{"name":"","type":"uint64"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"transferable","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalBurnt","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"transferable","type":"bool"}],"name":"setTransferable","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalMinted","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"value","type":"uint256"}],"name":"decreaseAllowance","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":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"controllableByOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"bridgeContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"revokeControlByOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[],"name":"ControlByOwnerRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"mintable","type":"bool"}],"name":"MintableChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"transferable","type":"bool"}],"name":"TransferableChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"from","type":"address"},{"indexed":false,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"ContractFallbackCallFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousBridgeContract","type":"address"},{"indexed":true,"name":"newBridgeContract","type":"address"}],"name":"BridgeContractChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"receiver","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Mint","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":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"data","type":"bytes"}],"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"}],"name":"Transfer","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":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipProposed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

60806040526005805462ff00001961ff001960ff19909216600117919091166101001716905534801561003157600080fd5b5060008054600160a060020a0319163317808255604051600160a060020a039190911691907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36b033b2e3c9fd0803ce80000006002819055336000818152600360209081526040808320859055805194855251929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a36119a9806100e56000396000f3006080604052600436106101a05763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146101a5578063095ea7b31461022f5780630b26cf6614610267578063111a18d31461028a57806318160ddd146102ae57806323b872dd146102d5578063285d70d4146102ff578063313ce5671461031957806339509351146103445780634000aea01461036857806340c10f191461039957806342966c68146103bd5780634bf365df146103d55780635f504a82146103ea578063672434821461041b57806369ffa08a146104a957806370a08231146104d0578063710bf322146104f1578063715018a61461051257806379ba509714610527578063859ba28c1461053c5780638da5cb5b1461057d57806392ff0d311461059257806395d89b41146105a7578063966ff650146105bc5780639cd23707146105d1578063a2309ff8146105eb578063a457c2d714610600578063a9059cbb14610624578063c706775514610648578063cd5965831461065d578063ce793a2014610672578063dd62ed3e14610687575b600080fd5b3480156101b157600080fd5b506101ba6106ae565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101f45781810151838201526020016101dc565b50505050905090810190601f1680156102215780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561023b57600080fd5b50610253600160a060020a03600435166024356106e5565b604080519115158252519081900360200190f35b34801561027357600080fd5b50610288600160a060020a036004351661074b565b005b34801561029657600080fd5b50610288600160a060020a0360043516602435610835565b3480156102ba57600080fd5b506102c36108bf565b60408051918252519081900360200190f35b3480156102e157600080fd5b50610253600160a060020a03600435811690602435166044356108c5565b34801561030b57600080fd5b5061028860043515156109ba565b34801561032557600080fd5b5061032e610a47565b6040805160ff9092168252519081900360200190f35b34801561035057600080fd5b50610253600160a060020a0360043516602435610a4c565b34801561037457600080fd5b5061025360048035600160a060020a0316906024803591604435918201910135610a77565b3480156103a557600080fd5b50610253600160a060020a0360043516602435610b9d565b3480156103c957600080fd5b50610288600435610c53565b3480156103e157600080fd5b50610253610ce1565b3480156103f657600080fd5b506103ff610cef565b60408051600160a060020a039092168252519081900360200190f35b34801561042757600080fd5b506040805160206004803580820135838102808601850190965280855261025395369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750949750610cfe9650505050505050565b3480156104b557600080fd5b50610288600160a060020a0360043581169060243516610e47565b3480156104dc57600080fd5b506102c3600160a060020a036004351661101c565b3480156104fd57600080fd5b50610288600160a060020a0360043516611037565b34801561051e57600080fd5b506102886101a0565b34801561053357600080fd5b506102886110e2565b34801561054857600080fd5b5061055161116a565b6040805167ffffffffffffffff9485168152928416602084015292168183015290519081900360600190f35b34801561058957600080fd5b506103ff611174565b34801561059e57600080fd5b50610253611183565b3480156105b357600080fd5b506101ba611192565b3480156105c857600080fd5b506102c36111c9565b3480156105dd57600080fd5b5061028860043515156111cf565b3480156105f757600080fd5b506102c361125f565b34801561060c57600080fd5b50610253600160a060020a0360043516602435611265565b34801561063057600080fd5b50610253600160a060020a0360043516602435611287565b34801561065457600080fd5b50610253611375565b34801561066957600080fd5b506103ff61137e565b34801561067e57600080fd5b50610288611394565b34801561069357600080fd5b506102c3600160a060020a03600435811690602435166113f1565b60408051808201909152600d81527f5061707972757320546f6b656e00000000000000000000000000000000000000602082015281565b336000818152600460209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b600054600160a060020a0316331461076257600080fd5b60055460ff16151561077357600080fd5b600160a060020a038116158015906107a05750600554600160a060020a0382811663010000009092041614155b80156107b057506107b08161141c565b15156107bb57600080fd5b600554604051600160a060020a03808416926301000000900416907f6bc3d5f48e77b5ff80e5e6583401d7b5bc6f5b5023984f33ff6d04fed1e839e690600090a360058054600160a060020a0390921663010000000276ffffffffffffffffffffffffffffffffffffffff00000019909216919091179055565b600054600160a060020a031633148015610851575060055460ff165b151561085c57600080fd5b6108668282611424565b600754610879908263ffffffff6114f716565b600755604080518281529051600160a060020a038416917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a25050565b60025490565b60055460009062010000900460ff16806108e95750600054600160a060020a031633145b15156108f457600080fd5b6108ff84848461150d565b151561090a57600080fd5b6109138361141c565b801561093e57506040805160008082526020820190925261093c91869186918691905b50611525565b155b156109b057600554600160a060020a03848116630100000090920416141561096557600080fd5b60408051600160a060020a0380871682528516602082015280820184905290517f11249f0fc79fc134a15a10d1da8291b79515bf987e036ced05b9ec119614070b9181900360600190a15b5060019392505050565b600054600160a060020a031633146109d157600080fd5b60055460ff61010090910416151581151514156109ed57600080fd5b6005805482151561010090810261ff00199092169190911791829055604080519190920460ff161515815290517f46c335b7f4282279447634dab2ba206ffb5ac6ce9744a5957353fced8b6044dc9181900360200190a150565b601281565b6000600160a060020a0383161515610a6357600080fd5b610a6e338484611690565b50600192915050565b60055460009062010000900460ff1680610a9b5750600054600160a060020a031633145b1515610aa657600080fd5b600160a060020a038516301415610abc57600080fd5b610ac68585611739565b1515610ad157600080fd5b84600160a060020a031633600160a060020a03167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c16868686604051808481526020018060200182810382528484828181526020019250808284376040519201829003965090945050505050a3610b468561141c565b15610b9257610b8733868686868080601f01602080910402602001604051908101604052809392919081815260200183838082843750611525945050505050565b1515610b9257600080fd5b506001949350505050565b600554600090610100900460ff161515610bb657600080fd5b600054600160a060020a0316331480610be0575060055463010000009004600160a060020a031633145b1515610beb57600080fd5b610bf58383611746565b600654610c08908363ffffffff6114f716565b600655604080518381529051600160a060020a038516917f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885919081900360200190a250600192915050565b600054600160a060020a0316331480610c7d575060055463010000009004600160a060020a031633145b1515610c8857600080fd5b610c923382611424565b600754610ca5908263ffffffff6114f716565b60075560408051828152905133917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a250565b600554610100900460ff1690565b600154600160a060020a031690565b6000806000806000600560029054906101000a900460ff1680610d2b5750600054600160a060020a031633145b1515610d3657600080fd5b8551875114610d4457600080fd5b33600090815260036020526040812054945092505b8551831015610e28578583815181101515610d7057fe5b9060200190602002015191508683815181101515610d8a57fe5b60209081029091010151905081841015610da357600080fd5b8683815181101515610db157fe5b6020908102919091010151600160a060020a03163314610def57600160a060020a038116600090815260036020526040902080548301905592819003925b604080518381529051600160a060020a03831691339160008051602061195e8339815191529181900360200190a3600190920191610d59565b5050336000908152600360205260409020919091555060019392505050565b600080548190600160a060020a0316331480610e74575060055463010000009004600160a060020a031633145b1515610e7f57600080fd5b600160a060020a0383161515610e9457600080fd5b600160a060020a0384161515610ee057604051600160a060020a03841690303180156108fc02916000818181858888f19350505050158015610eda573d6000803e3d6000fd5b50611016565b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051859350600160a060020a038416916370a082319160248083019260209291908290030181600087803b158015610f4457600080fd5b505af1158015610f58573d6000803e3d6000fd5b505050506040513d6020811015610f6e57600080fd5b5051604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0386811660048301526024820184905291519293509084169163a9059cbb916044808201926020929091908290030181600087803b158015610fdf57600080fd5b505af1158015610ff3573d6000803e3d6000fd5b505050506040513d602081101561100957600080fd5b5051151561101657600080fd5b50505050565b600160a060020a031660009081526003602052604090205490565b600054600160a060020a0316331461104e57600080fd5b600160a060020a038116158015906110745750600054600160a060020a03828116911614155b151561107f57600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03838116919091179182905560008054604051938316939216917fb51454ce8c7f26becd312a46c4815553887f2ec876a0b8dc813b87f62edf6f809190a350565b600154600160a060020a031633146110f957600080fd5b60015460008054604051600160a060020a0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600180546000805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a03841617909155169055565b6002600080909192565b600054600160a060020a031690565b60055462010000900460ff1690565b60408051808201909152600381527f5050520000000000000000000000000000000000000000000000000000000000602082015281565b60075490565b600054600160a060020a031633146111e657600080fd5b60055460ff62010000909104161515811515141561120357600080fd5b600580548215156201000090810262ff0000199092169190911791829055604080519190920460ff161515815290517f6488c20eb299903c41aa1b53c3ad5a3140aca395935e57cc52c1cc8dae8d9e179181900360200190a150565b60065490565b6000600160a060020a038316151561127c57600080fd5b610a6e3384846117f3565b60055460009062010000900460ff16806112ab5750600054600160a060020a031633145b15156112b657600080fd5b6112c08383611739565b15156112cb57600080fd5b6112d48361141c565b80156112fd5750604080516000808252602082019092526112fb9133918691869190610936565b155b15610a6e57600554600160a060020a03848116630100000090920416141561132457600080fd5b60408051338152600160a060020a038516602082015280820184905290517f11249f0fc79fc134a15a10d1da8291b79515bf987e036ced05b9ec119614070b9181900360600190a150600192915050565b60055460ff1690565b60055463010000009004600160a060020a031690565b600054600160a060020a031633146113ab57600080fd5b60055460ff1615156113bc57600080fd5b6005805460ff191690556040517f8f985c5eed42f02e8b4264b5a49167ee86ef75b7c9439e5a09f2891543740c7e90600090a1565b600160a060020a03918216600090815260046020908152604080832093909416825291909152205490565b6000903b1190565b600160a060020a038216151561143957600080fd5b6000811180156114615750600160a060020a0382166000908152600360205260409020548111155b151561146c57600080fd5b600160a060020a038216600090815260036020526040902054611495908263ffffffff61186916565b600160a060020a0383166000908152600360205260409020556002546114c1908263ffffffff61186916565b600255604080518281529051600091600160a060020a0385169160008051602061195e8339815191529181900360200190a35050565b60008282018381101561150657fe5b9392505050565b600061151a8433846117f3565b6109b084848461187b565b600083600160a060020a03168584846040516024018084600160a060020a0316600160a060020a0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561159257818101518382015260200161157a565b50505050905090810190601f1680156115bf5780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa4c0ed36000000000000000000000000000000000000000000000000000000001781529051825192975095508594509250905080838360005b8381101561164657818101518382015260200161162e565b50505050905090810190601f1680156116735780820380516001836020036101000a031916815260200191505b509150506000604051808303816000865af1979650505050505050565b6000811161169d57600080fd5b600160a060020a038084166000908152600460209081526040808320938616835292905220546116d3908263ffffffff6114f716565b600160a060020a0384811660008181526004602090815260408083209488168084529482529182902085905581519485529051929391927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6000610a6e33848461187b565b600160a060020a038216151561175b57600080fd5b6000811161176857600080fd5b600160a060020a038216600090815260036020526040902054611791908263ffffffff6114f716565b600160a060020a0383166000908152600360205260409020556002546117bd908263ffffffff6114f716565b600255604080518281529051600160a060020a0384169160009160008051602061195e8339815191529181900360200190a35050565b6000811180156118285750600160a060020a038084166000908152600460209081526040808320938616835292905220548111155b151561183357600080fd5b600160a060020a038084166000908152600460209081526040808320938616835292905220546116d3908263ffffffff61186916565b60008282111561187557fe5b50900390565b600160a060020a038216151561189057600080fd5b600160a060020a0383166000908152600360205260409020548111156118b557600080fd5b600160a060020a0383166000908152600360205260409020546118de908263ffffffff61186916565b600160a060020a038085166000908152600360205260408082209390935590841681522054611913908263ffffffff6114f716565b600160a060020a03808416600081815260036020908152604091829020949094558051858152905191939287169260008051602061195e83398151915292918290030190a35050505600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a7230582080517aaa47a8ce9b8bcaeaf5823e5733ef1c3374a773b03d9d99c17b0fe48cf80029

Deployed Bytecode

0x6080604052600436106101a05763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146101a5578063095ea7b31461022f5780630b26cf6614610267578063111a18d31461028a57806318160ddd146102ae57806323b872dd146102d5578063285d70d4146102ff578063313ce5671461031957806339509351146103445780634000aea01461036857806340c10f191461039957806342966c68146103bd5780634bf365df146103d55780635f504a82146103ea578063672434821461041b57806369ffa08a146104a957806370a08231146104d0578063710bf322146104f1578063715018a61461051257806379ba509714610527578063859ba28c1461053c5780638da5cb5b1461057d57806392ff0d311461059257806395d89b41146105a7578063966ff650146105bc5780639cd23707146105d1578063a2309ff8146105eb578063a457c2d714610600578063a9059cbb14610624578063c706775514610648578063cd5965831461065d578063ce793a2014610672578063dd62ed3e14610687575b600080fd5b3480156101b157600080fd5b506101ba6106ae565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101f45781810151838201526020016101dc565b50505050905090810190601f1680156102215780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561023b57600080fd5b50610253600160a060020a03600435166024356106e5565b604080519115158252519081900360200190f35b34801561027357600080fd5b50610288600160a060020a036004351661074b565b005b34801561029657600080fd5b50610288600160a060020a0360043516602435610835565b3480156102ba57600080fd5b506102c36108bf565b60408051918252519081900360200190f35b3480156102e157600080fd5b50610253600160a060020a03600435811690602435166044356108c5565b34801561030b57600080fd5b5061028860043515156109ba565b34801561032557600080fd5b5061032e610a47565b6040805160ff9092168252519081900360200190f35b34801561035057600080fd5b50610253600160a060020a0360043516602435610a4c565b34801561037457600080fd5b5061025360048035600160a060020a0316906024803591604435918201910135610a77565b3480156103a557600080fd5b50610253600160a060020a0360043516602435610b9d565b3480156103c957600080fd5b50610288600435610c53565b3480156103e157600080fd5b50610253610ce1565b3480156103f657600080fd5b506103ff610cef565b60408051600160a060020a039092168252519081900360200190f35b34801561042757600080fd5b506040805160206004803580820135838102808601850190965280855261025395369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750949750610cfe9650505050505050565b3480156104b557600080fd5b50610288600160a060020a0360043581169060243516610e47565b3480156104dc57600080fd5b506102c3600160a060020a036004351661101c565b3480156104fd57600080fd5b50610288600160a060020a0360043516611037565b34801561051e57600080fd5b506102886101a0565b34801561053357600080fd5b506102886110e2565b34801561054857600080fd5b5061055161116a565b6040805167ffffffffffffffff9485168152928416602084015292168183015290519081900360600190f35b34801561058957600080fd5b506103ff611174565b34801561059e57600080fd5b50610253611183565b3480156105b357600080fd5b506101ba611192565b3480156105c857600080fd5b506102c36111c9565b3480156105dd57600080fd5b5061028860043515156111cf565b3480156105f757600080fd5b506102c361125f565b34801561060c57600080fd5b50610253600160a060020a0360043516602435611265565b34801561063057600080fd5b50610253600160a060020a0360043516602435611287565b34801561065457600080fd5b50610253611375565b34801561066957600080fd5b506103ff61137e565b34801561067e57600080fd5b50610288611394565b34801561069357600080fd5b506102c3600160a060020a03600435811690602435166113f1565b60408051808201909152600d81527f5061707972757320546f6b656e00000000000000000000000000000000000000602082015281565b336000818152600460209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b600054600160a060020a0316331461076257600080fd5b60055460ff16151561077357600080fd5b600160a060020a038116158015906107a05750600554600160a060020a0382811663010000009092041614155b80156107b057506107b08161141c565b15156107bb57600080fd5b600554604051600160a060020a03808416926301000000900416907f6bc3d5f48e77b5ff80e5e6583401d7b5bc6f5b5023984f33ff6d04fed1e839e690600090a360058054600160a060020a0390921663010000000276ffffffffffffffffffffffffffffffffffffffff00000019909216919091179055565b600054600160a060020a031633148015610851575060055460ff165b151561085c57600080fd5b6108668282611424565b600754610879908263ffffffff6114f716565b600755604080518281529051600160a060020a038416917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a25050565b60025490565b60055460009062010000900460ff16806108e95750600054600160a060020a031633145b15156108f457600080fd5b6108ff84848461150d565b151561090a57600080fd5b6109138361141c565b801561093e57506040805160008082526020820190925261093c91869186918691905b50611525565b155b156109b057600554600160a060020a03848116630100000090920416141561096557600080fd5b60408051600160a060020a0380871682528516602082015280820184905290517f11249f0fc79fc134a15a10d1da8291b79515bf987e036ced05b9ec119614070b9181900360600190a15b5060019392505050565b600054600160a060020a031633146109d157600080fd5b60055460ff61010090910416151581151514156109ed57600080fd5b6005805482151561010090810261ff00199092169190911791829055604080519190920460ff161515815290517f46c335b7f4282279447634dab2ba206ffb5ac6ce9744a5957353fced8b6044dc9181900360200190a150565b601281565b6000600160a060020a0383161515610a6357600080fd5b610a6e338484611690565b50600192915050565b60055460009062010000900460ff1680610a9b5750600054600160a060020a031633145b1515610aa657600080fd5b600160a060020a038516301415610abc57600080fd5b610ac68585611739565b1515610ad157600080fd5b84600160a060020a031633600160a060020a03167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c16868686604051808481526020018060200182810382528484828181526020019250808284376040519201829003965090945050505050a3610b468561141c565b15610b9257610b8733868686868080601f01602080910402602001604051908101604052809392919081815260200183838082843750611525945050505050565b1515610b9257600080fd5b506001949350505050565b600554600090610100900460ff161515610bb657600080fd5b600054600160a060020a0316331480610be0575060055463010000009004600160a060020a031633145b1515610beb57600080fd5b610bf58383611746565b600654610c08908363ffffffff6114f716565b600655604080518381529051600160a060020a038516917f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885919081900360200190a250600192915050565b600054600160a060020a0316331480610c7d575060055463010000009004600160a060020a031633145b1515610c8857600080fd5b610c923382611424565b600754610ca5908263ffffffff6114f716565b60075560408051828152905133917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a250565b600554610100900460ff1690565b600154600160a060020a031690565b6000806000806000600560029054906101000a900460ff1680610d2b5750600054600160a060020a031633145b1515610d3657600080fd5b8551875114610d4457600080fd5b33600090815260036020526040812054945092505b8551831015610e28578583815181101515610d7057fe5b9060200190602002015191508683815181101515610d8a57fe5b60209081029091010151905081841015610da357600080fd5b8683815181101515610db157fe5b6020908102919091010151600160a060020a03163314610def57600160a060020a038116600090815260036020526040902080548301905592819003925b604080518381529051600160a060020a03831691339160008051602061195e8339815191529181900360200190a3600190920191610d59565b5050336000908152600360205260409020919091555060019392505050565b600080548190600160a060020a0316331480610e74575060055463010000009004600160a060020a031633145b1515610e7f57600080fd5b600160a060020a0383161515610e9457600080fd5b600160a060020a0384161515610ee057604051600160a060020a03841690303180156108fc02916000818181858888f19350505050158015610eda573d6000803e3d6000fd5b50611016565b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051859350600160a060020a038416916370a082319160248083019260209291908290030181600087803b158015610f4457600080fd5b505af1158015610f58573d6000803e3d6000fd5b505050506040513d6020811015610f6e57600080fd5b5051604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0386811660048301526024820184905291519293509084169163a9059cbb916044808201926020929091908290030181600087803b158015610fdf57600080fd5b505af1158015610ff3573d6000803e3d6000fd5b505050506040513d602081101561100957600080fd5b5051151561101657600080fd5b50505050565b600160a060020a031660009081526003602052604090205490565b600054600160a060020a0316331461104e57600080fd5b600160a060020a038116158015906110745750600054600160a060020a03828116911614155b151561107f57600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03838116919091179182905560008054604051938316939216917fb51454ce8c7f26becd312a46c4815553887f2ec876a0b8dc813b87f62edf6f809190a350565b600154600160a060020a031633146110f957600080fd5b60015460008054604051600160a060020a0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600180546000805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a03841617909155169055565b6002600080909192565b600054600160a060020a031690565b60055462010000900460ff1690565b60408051808201909152600381527f5050520000000000000000000000000000000000000000000000000000000000602082015281565b60075490565b600054600160a060020a031633146111e657600080fd5b60055460ff62010000909104161515811515141561120357600080fd5b600580548215156201000090810262ff0000199092169190911791829055604080519190920460ff161515815290517f6488c20eb299903c41aa1b53c3ad5a3140aca395935e57cc52c1cc8dae8d9e179181900360200190a150565b60065490565b6000600160a060020a038316151561127c57600080fd5b610a6e3384846117f3565b60055460009062010000900460ff16806112ab5750600054600160a060020a031633145b15156112b657600080fd5b6112c08383611739565b15156112cb57600080fd5b6112d48361141c565b80156112fd5750604080516000808252602082019092526112fb9133918691869190610936565b155b15610a6e57600554600160a060020a03848116630100000090920416141561132457600080fd5b60408051338152600160a060020a038516602082015280820184905290517f11249f0fc79fc134a15a10d1da8291b79515bf987e036ced05b9ec119614070b9181900360600190a150600192915050565b60055460ff1690565b60055463010000009004600160a060020a031690565b600054600160a060020a031633146113ab57600080fd5b60055460ff1615156113bc57600080fd5b6005805460ff191690556040517f8f985c5eed42f02e8b4264b5a49167ee86ef75b7c9439e5a09f2891543740c7e90600090a1565b600160a060020a03918216600090815260046020908152604080832093909416825291909152205490565b6000903b1190565b600160a060020a038216151561143957600080fd5b6000811180156114615750600160a060020a0382166000908152600360205260409020548111155b151561146c57600080fd5b600160a060020a038216600090815260036020526040902054611495908263ffffffff61186916565b600160a060020a0383166000908152600360205260409020556002546114c1908263ffffffff61186916565b600255604080518281529051600091600160a060020a0385169160008051602061195e8339815191529181900360200190a35050565b60008282018381101561150657fe5b9392505050565b600061151a8433846117f3565b6109b084848461187b565b600083600160a060020a03168584846040516024018084600160a060020a0316600160a060020a0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561159257818101518382015260200161157a565b50505050905090810190601f1680156115bf5780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa4c0ed36000000000000000000000000000000000000000000000000000000001781529051825192975095508594509250905080838360005b8381101561164657818101518382015260200161162e565b50505050905090810190601f1680156116735780820380516001836020036101000a031916815260200191505b509150506000604051808303816000865af1979650505050505050565b6000811161169d57600080fd5b600160a060020a038084166000908152600460209081526040808320938616835292905220546116d3908263ffffffff6114f716565b600160a060020a0384811660008181526004602090815260408083209488168084529482529182902085905581519485529051929391927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6000610a6e33848461187b565b600160a060020a038216151561175b57600080fd5b6000811161176857600080fd5b600160a060020a038216600090815260036020526040902054611791908263ffffffff6114f716565b600160a060020a0383166000908152600360205260409020556002546117bd908263ffffffff6114f716565b600255604080518281529051600160a060020a0384169160009160008051602061195e8339815191529181900360200190a35050565b6000811180156118285750600160a060020a038084166000908152600460209081526040808320938616835292905220548111155b151561183357600080fd5b600160a060020a038084166000908152600460209081526040808320938616835292905220546116d3908263ffffffff61186916565b60008282111561187557fe5b50900390565b600160a060020a038216151561189057600080fd5b600160a060020a0383166000908152600360205260409020548111156118b557600080fd5b600160a060020a0383166000908152600360205260409020546118de908263ffffffff61186916565b600160a060020a038085166000908152600360205260408082209390935590841681522054611913908263ffffffff6114f716565b600160a060020a03808416600081815260036020908152604091829020949094558051858152905191939287169260008051602061195e83398151915292918290030190a35050505600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a7230582080517aaa47a8ce9b8bcaeaf5823e5733ef1c3374a773b03d9d99c17b0fe48cf80029

Deployed Bytecode Sourcemap

13313:11028:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23459:45;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23459:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;23459:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6540:204;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6540:204:0;-1:-1:-1;;;;;6540:204:0;;;;;;;;;;;;;;;;;;;;;;;;;19642:337;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;19642:337:0;-1:-1:-1;;;;;19642:337:0;;;;;;;18054:195;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;18054:195:0;-1:-1:-1;;;;;18054:195:0;;;;;;;8338:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8338:91:0;;;;;;;;;;;;;;;;;;;;15681:423;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;15681:423:0;-1:-1:-1;;;;;15681:423:0;;;;;;;;;;;;19121:175;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;19121:175:0;;;;;;;23555:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23555:35:0;;;;;;;;;;;;;;;;;;;;;;;7261:209;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;7261:209:0;-1:-1:-1;;;;;7261:209:0;;;;;;;14325:378;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;14325:378:0;;;;-1:-1:-1;;;;;14325:378:0;;;;;;;;;;;;;;;;17326:226;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;17326:226:0;-1:-1:-1;;;;;17326:226:0;;;;;;;17677:173;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;17677:173:0;;;;;20615:82;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20615:82:0;;;;4161:97;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4161:97:0;;;;;;;;-1:-1:-1;;;;;4161:97:0;;;;;;;;;;;;;;16411:683;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;16411:683:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16411:683:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16411:683:0;;;;-1:-1:-1;16411:683:0;-1:-1:-1;16411:683:0;;-1:-1:-1;16411:683:0;;;;;;;;;-1:-1:-1;16411:683:0;;-1:-1:-1;16411:683:0;;-1:-1:-1;;;;;;;16411:683:0;18367:394;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;18367:394:0;-1:-1:-1;;;;;18367:394:0;;;;;;;;;;8644:106;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;8644:106:0;-1:-1:-1;;;;;8644:106:0;;;;;3414:228;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3414:228:0;-1:-1:-1;;;;;3414:228:0;;;;;20060:68;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20060:68:0;;;;3764:196;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3764:196:0;;;;21752:210;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21752:210:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4016:79;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4016:79:0;;;;20868:90;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20868:90:0;;;;23511:37;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23511:37:0;;;;21577:89;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21577:89:0;;;;19371:207;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;19371:207:0;;;;;;;21331:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21331:91:0;;;;7987:209;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;7987:209:0;-1:-1:-1;;;;;7987:209:0;;;;;;;14957:407;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;14957:407:0;-1:-1:-1;;;;;14957:407:0;;;;;;;20346:97;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20346:97:0;;;;21079;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21079:97:0;;;;18881:161;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18881:161:0;;;;9082:134;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;9082:134:0;-1:-1:-1;;;;;9082:134:0;;;;;;;;;;23459:45;;;;;;;;;;;;;;;;;;;:::o;6540:204::-;6634:10;6605:4;6622:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;6622:32:0;;;;;;;;;;;:40;;;6678:36;;;;;;;6605:4;;6622:32;;6634:10;;6678:36;;;;;;;;-1:-1:-1;6732:4:0;6540:204;;;;:::o;19642:337::-;4408:6;;-1:-1:-1;;;;;4408:6:0;4394:10;:20;4386:29;;;;;;19729:13;;;;19721:22;;;;;;;;-1:-1:-1;;;;;19762:28:0;;;;;;:65;;-1:-1:-1;19812:15:0;;-1:-1:-1;;;;;19794:33:0;;;19812:15;;;;;19794:33;;19762:65;:95;;;;;19831:26;19842:14;19831:10;:26::i;:::-;19754:104;;;;;;;;19896:15;;19874:54;;-1:-1:-1;;;;;19874:54:0;;;;19896:15;;;;;19874:54;;;;;19939:15;:32;;-1:-1:-1;;;;;19939:32:0;;;;;-1:-1:-1;;19939:32:0;;;;;;;;;19642:337::o;18054:195::-;23231:6;;-1:-1:-1;;;;;23231:6:0;23217:10;:20;:37;;;;-1:-1:-1;23241:13:0;;;;23217:37;23209:46;;;;;;;;18139:20;18145:6;18153:5;18139;:20::i;:::-;18184:11;;:22;;18200:5;18184:22;:15;:22;:::i;:::-;18170:11;:36;18222:19;;;;;;;;-1:-1:-1;;;;;18222:19:0;;;;;;;;;;;;;18054:195;;:::o;8338:91::-;8409:12;;8338:91;:::o;15681:423::-;23325:13;;15772:4;;23325:13;;;;;;:37;;-1:-1:-1;23356:6:0;;-1:-1:-1;;;;;23356:6:0;23342:10;:20;23325:37;23317:46;;;;;;;;15797:35;15816:4;15822:2;15826:5;15797:18;:35::i;:::-;15789:44;;;;;;;;15848:14;15859:2;15848:10;:14::i;:::-;:66;;;;-1:-1:-1;15901:12:0;;;15911:1;15901:12;;;;;;;;;15867:47;;15884:4;;15890:2;;15894:5;;15901:12;;;15867:16;:47::i;:::-;15866:48;15848:66;15844:231;;;15941:15;;-1:-1:-1;;;;;15935:21:0;;;15941:15;;;;;15935:21;15931:70;;;15977:8;;;15931:70;16020:43;;;-1:-1:-1;;;;;16020:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;15844:231;-1:-1:-1;16092:4:0;15681:423;;;;;:::o;19121:175::-;4408:6;;-1:-1:-1;;;;;4408:6:0;4394:10;:20;4386:29;;;;;;19193:9;;;;;;;;:21;;;;;;;19185:30;;;;;;19226:9;:20;;;;;;;;;-1:-1:-1;;19226:20:0;;;;;;;;;;;19262:26;;;19278:9;;;;19226:20;19278:9;19262:26;;;;;;;;;;;;;;;19121:175;:::o;23555:35::-;23588:2;23555:35;:::o;7261:209::-;7336:4;-1:-1:-1;;;;;7361:21:0;;;;7353:30;;;;;;7394:46;7413:10;7425:7;7434:5;7394:18;:46::i;:::-;-1:-1:-1;7458:4:0;7261:209;;;;:::o;14325:378::-;23325:13;;14419:4;;23325:13;;;;;;:37;;-1:-1:-1;23356:6:0;;-1:-1:-1;;;;;23356:6:0;23342:10;:20;23325:37;23317:46;;;;;;;;-1:-1:-1;;;;;14444:19:0;;14458:4;14444:19;;14436:28;;;;;;14483:25;14498:2;14502:5;14483:14;:25::i;:::-;14475:34;;;;;;;;14546:2;-1:-1:-1;;;;;14525:37:0;14534:10;-1:-1:-1;;;;;14525:37:0;;14550:5;14557:4;;14525:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14525:37:0;;-1:-1:-1;;;;;14525:37:0;14577:14;14588:2;14577:10;:14::i;:::-;14573:101;;;14616:45;14633:10;14645:2;14649:5;14656:4;;14616:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14616:16:0;;-1:-1:-1;;;;;14616:45:0:i;:::-;14608:54;;;;;;;;-1:-1:-1;14691:4:0;14325:378;;;;;;:::o;17326:226::-;22941:9;;17397:4;;22941:9;;;;;22933:18;;;;;;;;22984:6;;-1:-1:-1;;;;;22984:6:0;22970:10;:20;;:53;;-1:-1:-1;23008:15:0;;;;;-1:-1:-1;;;;;23008:15:0;22994:10;:29;22970:53;22962:62;;;;;;;;17414:22;17420:8;17430:5;17414;:22::i;:::-;17462:12;;:23;;17479:5;17462:23;:16;:23;:::i;:::-;17447:12;:38;17501:21;;;;;;;;-1:-1:-1;;;;;17501:21:0;;;;;;;;;;;;;-1:-1:-1;17540:4:0;17326:226;;;;:::o;17677:173::-;23104:6;;-1:-1:-1;;;;;23104:6:0;23090:10;:20;;:53;;-1:-1:-1;23128:15:0;;;;;-1:-1:-1;;;;;23128:15:0;23114:10;:29;23090:53;23082:62;;;;;;;;17732:24;17738:10;17750:5;17732;:24::i;:::-;17781:11;;:22;;17797:5;17781:22;:15;:22;:::i;:::-;17767:11;:36;17819:23;;;;;;;;17824:10;;17819:23;;;;;;;;;;17677:173;:::o;20615:82::-;20680:9;;;;;;;;20615:82::o;4161:97::-;4235:15;;-1:-1:-1;;;;;4235:15:0;4161:97;:::o;16411:683::-;16496:4;16567:21;16628:9;16682:13;16722:10;23325:13;;;;;;;;;;;:37;;;-1:-1:-1;23356:6:0;;-1:-1:-1;;;;;23356:6:0;23342:10;:20;23325:37;23317:46;;;;;;;;16542:13;;16521:17;;:34;16513:43;;;;;;16601:10;16591:21;;;;:9;:21;;;;;;;-1:-1:-1;16591:21:0;-1:-1:-1;16623:394:0;16647:6;:13;16643:1;:17;16623:394;;;16698:6;16705:1;16698:9;;;;;;;;;;;;;;;;;;16682:25;;16735:10;16746:1;16735:13;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16771:22:0;;;;16763:31;;;;;;16827:10;16838:1;16827:13;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16813:27:0;:10;:27;16809:146;;-1:-1:-1;;;;;16917:13:0;;;;;;:9;:13;;;;;:22;;;;;;16877:21;;;;;16809:146;16974:31;;;;;;;;-1:-1:-1;;;;;16974:31:0;;;16983:10;;-1:-1:-1;;;;;;;;;;;16974:31:0;;;;;;;;16662:3;;;;;16623:394;;;-1:-1:-1;;17037:10:0;17027:21;;;;:9;:21;;;;;:37;;;;-1:-1:-1;17082:4:0;;16411:683;-1:-1:-1;;;16411:683:0:o;18367:394::-;18602:11;22835:6;;18602:11;;-1:-1:-1;;;;;22835:6:0;22821:10;:20;;:53;;-1:-1:-1;22859:15:0;;;;;-1:-1:-1;;;;;22859:15:0;22845:10;:29;22821:53;22813:62;;;;;;;;-1:-1:-1;;;;;18467:16:0;;;;18459:25;;;;;;-1:-1:-1;;;;;18499:19:0;;;18495:259;;;18535:34;;-1:-1:-1;;;;;18535:11:0;;;18555:4;18547:21;18535:34;;;;;;;;;18547:21;18535:11;:34;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18535:34:0;18495:259;;;18661:30;;;;;;18685:4;18661:30;;;;;;18622:5;;-1:-1:-1;;;;;;18661:15:0;;;;;:30;;;;;;;;;;;;;;-1:-1:-1;18661:15:0;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;18661:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18661:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18661:30:0;18714:27;;;;;;-1:-1:-1;;;;;18714:27:0;;;;;;;;;;;;;;;18661:30;;-1:-1:-1;18714:14:0;;;;;;:27;;;;;18661:30;;18714:27;;;;;;;;-1:-1:-1;18714:14:0;:27;;;5:2:-1;;;;30:1;27;20:12;5:2;18714:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18714:27:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18714:27:0;18706:36;;;;;;;;18367:394;;;;:::o;8644:106::-;-1:-1:-1;;;;;8726:16:0;8699:7;8726:16;;;:9;:16;;;;;;;8644:106::o;3414:228::-;4408:6;;-1:-1:-1;;;;;4408:6:0;4394:10;:20;4386:29;;;;;;-1:-1:-1;;;;;3494:22:0;;;;;;:44;;-1:-1:-1;3532:6:0;;-1:-1:-1;;;;;3520:18:0;;;3532:6;;3520:18;;3494:44;3486:53;;;;;;;;3550:15;:26;;-1:-1:-1;;3550:26:0;-1:-1:-1;;;;;3550:26:0;;;;;;;;;;;-1:-1:-1;3610:6:0;;3592:42;;3618:15;;;;3610:6;;;3592:42;;-1:-1:-1;3592:42:0;3414:228;:::o;3764:196::-;4584:15;;-1:-1:-1;;;;;4584:15:0;4570:10;:29;4562:38;;;;;;3862:15;;;3854:6;;3833:45;;-1:-1:-1;;;;;3862:15:0;;;;3854:6;;;;3833:45;;;3898:15;;;;3889:24;;-1:-1:-1;;3889:24:0;;;-1:-1:-1;;;;;3898:15:0;;3889:24;;;;3924:28;;;3764:196::o;21752:210::-;21860:1;21810:6;;21752:210;;;:::o;4016:79::-;4054:7;4081:6;-1:-1:-1;;;;;4081:6:0;4016:79;:::o;20868:90::-;20937:13;;;;;;;;20868:90::o;23511:37::-;;;;;;;;;;;;;;;;;;;:::o;21577:89::-;21647:11;;21577:89;:::o;19371:207::-;4408:6;;-1:-1:-1;;;;;4408:6:0;4394:10;:20;4386:29;;;;;;19451:13;;;;;;;;:29;;;;;;;19443:38;;;;;;19492:13;:28;;;;;;;;;-1:-1:-1;;19492:28:0;;;;;;;;;;;19536:34;;;19556:13;;;;19492:28;19556:13;19536:34;;;;;;;;;;;;;;;19371:207;:::o;21331:91::-;21402:12;;21331:91;:::o;7987:209::-;8062:4;-1:-1:-1;;;;;8087:21:0;;;;8079:30;;;;;;8120:46;8139:10;8151:7;8160:5;8120:18;:46::i;14957:407::-;23325:13;;15030:4;;23325:13;;;;;;:37;;-1:-1:-1;23356:6:0;;-1:-1:-1;;;;;23356:6:0;23342:10;:20;23325:37;23317:46;;;;;;;;15055:25;15070:2;15074:5;15055:14;:25::i;:::-;15047:34;;;;;;;;15096:14;15107:2;15096:10;:14::i;:::-;:72;;;;-1:-1:-1;15155:12:0;;;15165:1;15155:12;;;;;;;;;15115:53;;15132:10;;15144:2;;15148:5;;15155:12;;;15115:53;15114:54;15096:72;15092:243;;;15195:15;;-1:-1:-1;;;;;15189:21:0;;;15195:15;;;;;15189:21;15185:70;;;15231:8;;;15185:70;15274:49;;;15301:10;15274:49;;-1:-1:-1;;;;;15274:49:0;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15352:4:0;14957:407;;;;:::o;20346:97::-;20422:13;;;;20346:97;:::o;21079:::-;21153:15;;;;;-1:-1:-1;;;;;21153:15:0;;21079:97::o;18881:161::-;4408:6;;-1:-1:-1;;;;;4408:6:0;4394:10;:20;4386:29;;;;;;18949:13;;;;18941:22;;;;;;;;18974:13;:21;;-1:-1:-1;;18974:21:0;;;19011:23;;;;18990:5;;19011:23;18881:161::o;9082:134::-;-1:-1:-1;;;;;9181:18:0;;;9154:7;9181:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;9082:134::o;22552:185::-;22611:4;22678:20;;22717:12;;22552:185::o;12275:321::-;-1:-1:-1;;;;;12349:20:0;;;;12341:29;;;;;;12397:1;12389:5;:9;:39;;;;-1:-1:-1;;;;;;12411:17:0;;;;;;:9;:17;;;;;;12402:26;;;12389:39;12381:48;;;;;;;;-1:-1:-1;;;;;12460:17:0;;;;;;:9;:17;;;;;;:28;;12482:5;12460:28;:21;:28;:::i;:::-;-1:-1:-1;;;;;12440:17:0;;;;;;:9;:17;;;;;:48;12514:12;;:23;;12531:5;12514:23;:16;:23;:::i;:::-;12499:12;:38;12553:35;;;;;;;;12578:1;;-1:-1:-1;;;;;12553:35:0;;;-1:-1:-1;;;;;;;;;;;12553:35:0;;;;;;;;12275:321;;:::o;2425:147::-;2483:7;2515:5;;;2538:6;;;;2531:14;;;;2563:1;2425:147;-1:-1:-1;;;2425:147:0:o;5604:206::-;5683:4;5700:43;5719:4;5725:10;5737:5;5700:18;:43::i;:::-;5754:26;5764:4;5770:2;5774:5;5754:9;:26::i;22160:233::-;22262:4;22286:8;-1:-1:-1;;;;;22286:13:0;22366:4;22372:5;22379:4;22300:84;;;;;;-1:-1:-1;;;;;22300:84:0;-1:-1:-1;;;;;22300:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;22300:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22300:84:0;;;-1:-1:-1;;26:21;;;22:32;6:49;;22300:84:0;;;49:4:-1;25:18;;61:17;;22300:84:0;182:15:-1;22300:84:0;179:29:-1;160:49;;22286:99:0;;;;22300:84;;-1:-1:-1;22286:99:0;-1:-1:-1;22286:99:0;;-1:-1:-1;25:18;-1:-1;22286:99:0;-1:-1:-1;22286:99:0;;25:18:-1;-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;22286:99:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22160:233;-1:-1:-1;;;;;;;22160:233:0:o;10274:269::-;10385:1;10377:9;;10369:18;;;;;;-1:-1:-1;;;;;10428:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;:38;;10460:5;10428:38;:31;:38;:::i;:::-;-1:-1:-1;;;;;10398:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:68;;;10482:53;;;;;;;10398:27;;:18;;10482:53;;;;;;;;;;10274:269;;;:::o;5147:140::-;5208:4;5225:32;5235:10;5247:2;5251:5;5225:9;:32::i;11694:352::-;-1:-1:-1;;;;;11770:22:0;;;;11762:31;;;;;;11820:1;11812:9;;11804:18;;;;;;-1:-1:-1;;;;;11855:19:0;;;;;;:9;:19;;;;;;:30;;11879:5;11855:30;:23;:30;:::i;:::-;-1:-1:-1;;;;;11833:19:0;;;;;;:9;:19;;;;;:52;11911:12;;:23;;11928:5;11911:23;:16;:23;:::i;:::-;11896:12;:38;12001:37;;;;;;;;-1:-1:-1;;;;;12001:37:0;;;12018:1;;-1:-1:-1;;;;;;;;;;;12001:37:0;;;;;;;;11694:352;;:::o;11042:309::-;11153:1;11145:5;:9;:49;;;;-1:-1:-1;;;;;;11167:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;11158:36;;;11145:49;11137:58;;;;;;;;-1:-1:-1;;;;;11236:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;:38;;11268:5;11236:38;:31;:38;:::i;2294:123::-;2352:7;2379:6;;;;2372:14;;;;-1:-1:-1;2404:5:0;;;2294:123::o;9471:304::-;-1:-1:-1;;;;;9559:16:0;;;;9551:25;;;;;;-1:-1:-1;;;;;9604:15:0;;;;;;:9;:15;;;;;;9595:24;;;9587:33;;;;;;-1:-1:-1;;;;;9649:15:0;;;;;;:9;:15;;;;;;:26;;9669:5;9649:26;:19;:26;:::i;:::-;-1:-1:-1;;;;;9631:15:0;;;;;;;:9;:15;;;;;;:44;;;;9702:13;;;;;;;:24;;9720:5;9702:24;:17;:24;:::i;:::-;-1:-1:-1;;;;;9686:13:0;;;;;;;:9;:13;;;;;;;;;:40;;;;9742:25;;;;;;;9686:13;;9742:25;;;;-1:-1:-1;;;;;;;;;;;9742:25:0;;;;;;;;9471:304;;;:::o

Swarm Source

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