ETH Price: $2,600.84 (-2.15%)

Token

Xmpleforth (XAMPL)
 

Overview

Max Total Supply

2,100,000 XAMPL

Holders

17

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 8 Decimals)

Filtered by Token Holder
cdbtc.eth
Balance
1,905.63866078 XAMPL

Value
$0.00
0x951214038a220fbdf9803db3dffeb97b12d12314
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x2802dca7...6aEe745B1
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
GeneralToken

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2020-08-03
*/

pragma solidity ^0.4.24;

interface tokenRecipient { function receiveApproval(address _from, uint256 _value, address _token, bytes _extraData) external; }

/**
 * @title SafeMath
 * @dev Math operations with safety checks that revert on error
 */
library SafeMath {
    /**
    * @dev Multiplies two numbers, reverts on overflow.
    */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b);

        return c;
    }

    /**
    * @dev Integer division of two numbers truncating the quotient, reverts on division by zero.
    */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0); // Solidity only automatically asserts 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;
    }

    /**
    * @dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend).
    */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a);
        uint256 c = a - b;

        return c;
    }

    /**
    * @dev Adds two numbers, reverts on overflow.
    */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a);

        return c;
    }

    /**
    * @dev Divides two numbers and returns the remainder (unsigned integer modulo),
    * reverts when dividing by zero.
    */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b != 0);
        return a % b;
    }
}

/**
 * @title SafeMathInt
 * @dev Math operations for int256 with overflow safety checks.
 */
library SafeMathInt {
    int256 private constant MIN_INT256 = int256(1) << 255;
    int256 private constant MAX_INT256 = ~(int256(1) << 255);

    /**
     * @dev Multiplies two int256 variables and fails on overflow.
     */
    function mul(int256 a, int256 b)
        internal
        pure
        returns (int256)
    {
        int256 c = a * b;

        // Detect overflow when multiplying MIN_INT256 with -1
        require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));
        require((b == 0) || (c / b == a));
        return c;
    }

    /**
     * @dev Division of two int256 variables and fails on overflow.
     */
    function div(int256 a, int256 b)
        internal
        pure
        returns (int256)
    {
        // Prevent overflow when dividing MIN_INT256 by -1
        require(b != -1 || a != MIN_INT256);

        // Solidity already throws when dividing by 0.
        return a / b;
    }

    /**
     * @dev Subtracts two int256 variables and fails on overflow.
     */
    function sub(int256 a, int256 b)
        internal
        pure
        returns (int256)
    {
        int256 c = a - b;
        require((b >= 0 && c <= a) || (b < 0 && c > a));
        return c;
    }

    /**
     * @dev Adds two int256 variables and fails on overflow.
     */
    function add(int256 a, int256 b)
        internal
        pure
        returns (int256)
    {
        int256 c = a + b;
        require((b >= 0 && c >= a) || (b < 0 && c < a));
        return c;
    }

    /**
     * @dev Converts to absolute value, and fails on overflow.
     */
    function abs(int256 a)
        internal
        pure
        returns (int256)
    {
        require(a != MIN_INT256);
        return a < 0 ? -a : a;
    }
}

contract GeneralToken {
    using SafeMath for uint256;
    using SafeMathInt for int256;

    address private _owner;

    string private _name;
    string private _symbol;
    uint8 private _decimals = 8;

    // Precautionary emergency controls.
    bool public rebasePaused;
    bool public tokenPaused;

    uint256 private constant MAX_UINT256 = ~uint256(0);
    uint256 private _initalSupply;

    // TOTAL_GONS is a multiple of INITIAL_FRAGMENTS_SUPPLY so that _gonsPerFragment is an integer.
    // Use the highest value that fits in a uint256 for max granularity.
    uint256 private _totalGons;

    // MAX_SUPPLY = maximum integer < (sqrt(4*TOTAL_GONS + 1) - 1) / 2
    uint256 private constant MAX_SUPPLY = ~uint128(0);  // (2^128) - 1

    uint256 private _totalSupply;
    uint256 private _gonsPerFragment;
    mapping(address => uint256) private _gonBalances;

    // This is denominated in Fragments, because the gons-fragments conversion might change before
    // it's fully paid.
    mapping (address => mapping (address => uint256)) private _allowedFragments;

    // This generates a public event on the blockchain that will notify clients
    event Transfer(address indexed from, address indexed to, uint256 value);

    // This notifies clients about the amount burnt
    // event Burn(address indexed from, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);

    event LogRebase(uint256 totalSupply);
    event LogRebasePaused(bool paused);
    event LogTokenPaused(bool paused);

    // rebase whether paused,default false
    modifier whenRebaseNotPaused() {
        require(!rebasePaused);
        _;
    }

    // token whether paused,default false
    modifier whenTokenNotPaused() {
        require(!tokenPaused);
        _;
    }

    // validate to address
    modifier validRecipient(address to) {
        require(to != address(0x0));
        require(to != address(this));
        _;
    }

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

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

    /**
     * @return true if `msg.sender` is the owner of the contract.
     */
    function isOwner() public view returns(bool) {
        return msg.sender == _owner;
    }

    /**
     * Constructor function
     *
     * Initializes contract with initial supply tokens to the creator of the contract
     */
    constructor (
        uint256 initialSupply,
        string tokenName,
        string tokenSymbol
    ) public {
        // Set owner
        _owner = msg.sender;

        // set name,symbol,decimals
        _name = tokenName;
        _symbol = tokenSymbol;

        _initalSupply = initialSupply * 10 ** uint256(_decimals);
        _totalGons = MAX_UINT256 - (MAX_UINT256 % _initalSupply);

        rebasePaused = false;
        tokenPaused = false;

        _totalSupply = _initalSupply;
        _gonBalances[_owner] = _totalGons;
        _gonsPerFragment = _totalGons.div(_totalSupply);

        emit Transfer(address(0x0), _owner, _totalSupply);
    }

    /**
     * @dev Notifies Fragments contract about a new rebase cycle.
     * @param supplyDelta The number of new fragment tokens to add into circulation via expansion.
     * @return The total number of fragments after the supply adjustment.
     */
    function rebase(uint256 supplyDelta)
        external
        onlyOwner
        whenRebaseNotPaused
        returns (uint256)
    {
        if (supplyDelta == 0) {
            emit LogRebase(_totalSupply);
            return _totalSupply;
        }

        _totalSupply = supplyDelta * 10 ** uint256(_decimals);

        if (_totalSupply > MAX_SUPPLY) {
            _totalSupply = MAX_SUPPLY;
        }

        _gonsPerFragment = _totalGons.div(_totalSupply);

        emit LogRebase(_totalSupply);
        return _totalSupply;
    }

    /**
     * @dev Pauses or unpauses the execution of rebase operations.
     * @param paused Pauses rebase operations if this is true.
     */
    function setRebasePaused(bool paused)
        external
        onlyOwner
    {
        rebasePaused = paused;
        emit LogRebasePaused(paused);
    }

    /**
     * @dev Pauses or unpauses execution of ERC-20 transactions.
     * @param paused Pauses ERC-20 transactions if this is true.
     */
    function setTokenPaused(bool paused)
        external
        onlyOwner
    {
        tokenPaused = paused;
        emit LogTokenPaused(paused);
    }

    /**
     * @return The total number of fragments.
     */
    function totalSupply()
        public
        view
        returns (uint256)
    {
        return _totalSupply;
    }

    /**
     * @param who The address to query.
     * @return The balance of the specified address.
     */
    function balanceOf(address who)
        public
        view
        returns (uint256)
    {
        return _gonBalances[who].div(_gonsPerFragment);
    }

    /**
     * @return the name of the token.
     */
    function name() public view returns(string) {
        return _name;
    }

    /**
     * @return the symbol of the token.
     */
    function symbol() public view returns(string) {
        return _symbol;
    }

    /**
     * @return the number of decimals of the token.
     */
    function decimals() public view returns(uint8) {
        return _decimals;
    }

    /**
     * Internal transfer, only can be called by this contract
     */
    function _transfer(address _from, address _to, uint256 _value) internal {
        // Prevent transfer to 0x0 address. Use burn() instead
        // require(_to != address(0));

        uint256 gonValue = _value.mul(_gonsPerFragment);
        // Check if the sender has enough
        require(_gonBalances[_from] >= gonValue);
        // Check for overflows
        require(_gonBalances[_to].add(gonValue) >= _gonBalances[_to]);

        // Save this for an assertion in the future
        uint256 previousBalances = _gonBalances[_from].add(_gonBalances[_to]);
        // Subtract from the sender
        _gonBalances[_from] = _gonBalances[_from].sub(gonValue);
        _gonBalances[_to] = _gonBalances[_to].add(gonValue);

        // Add transfer event
        emit Transfer(_from, _to, _value);
        // Asserts are used to use static analysis to find bugs in your code. They should never fail
        assert(_gonBalances[_from].add(_gonBalances[_to]) == previousBalances);
    }

    /**
     * Transfer tokens
     *
     * Send `_value` tokens to `_to` from your account
     *
     * @param _to The address of the recipient
     * @param _value the amount to send
     */
    function transfer(address _to, uint256 _value) public validRecipient(_to) whenTokenNotPaused returns (bool) {
        _transfer(msg.sender, _to, _value);
        return true;
    }

    /**
     * @dev Function to check the amount of tokens that an owner has allowed to a spender.
     * @param owner_ The address which owns the funds.
     * @param spender The address which will spend the funds.
     * @return The number of tokens still available for the spender.
     */
    function allowance(address owner_, address spender)
        public
        view
        returns (uint256)
    {
        return _allowedFragments[owner_][spender];
    }

    /**
     * Transfer tokens from other address
     *
     * Send `_value` tokens to `_to` on behalf of `_from`
     *
     * @param _from The address of the sender
     * @param _to The address of the recipient
     * @param _value the amount to send
     */
    function transferFrom(address _from, address _to, uint256 _value) public validRecipient(_to) whenTokenNotPaused returns (bool) {
        require(_value <= _allowedFragments[_from][msg.sender]);     // Check allowance

        _allowedFragments[_from][msg.sender] = _allowedFragments[_from][msg.sender].sub(_value);
        _transfer(_from, _to, _value);
        return true;
    }

    /**
     * Set allowance for other address
     *
     * Allows `_spender` to spend no more than `_value` tokens on your behalf
     *
     * @param _spender The address authorized to spend
     * @param _value the max amount they can spend
     */
    function approve(address _spender, uint256 _value) public whenTokenNotPaused returns (bool) {
        require(_spender != address(0));

        _allowedFragments[msg.sender][_spender] = _value;
        emit Approval(msg.sender, _spender, _value);

        return true;
    }

    /**
     * @dev Increase the amount of tokens that an owner has allowed to a spender.
     * This method should be used instead of approve() to avoid the double approval vulnerability
     * described above.
     * @param spender The address which will spend the funds.
     * @param addedValue The amount of tokens to increase the allowance by.
     */
    function increaseAllowance(address spender, uint256 addedValue)
        public
        whenTokenNotPaused
        returns (bool)
    {
        _allowedFragments[msg.sender][spender] =
            _allowedFragments[msg.sender][spender].add(addedValue);
        emit Approval(msg.sender, spender, _allowedFragments[msg.sender][spender]);
        return true;
    }

    /**
     * @dev Decrease the amount of tokens that an owner has allowed to a spender.
     *
     * @param spender The address which will spend the funds.
     * @param subtractedValue The amount of tokens to decrease the allowance by.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        whenTokenNotPaused
        returns (bool)
    {
        uint256 oldValue = _allowedFragments[msg.sender][spender];
        if (subtractedValue >= oldValue) {
            _allowedFragments[msg.sender][spender] = 0;
        } else {
            _allowedFragments[msg.sender][spender] = oldValue.sub(subtractedValue);
        }
        emit Approval(msg.sender, spender, _allowedFragments[msg.sender][spender]);
        return true;
    }

    /**
     * Set allowance for other address and notify
     *
     * Allows `_spender` to spend no more than `_value` tokens on your behalf, and then ping the contract about it
     *
     * @param _spender The address authorized to spend
     * @param _value the max amount they can spend
     * @param _extraData some extra information to send to the approved contract
     */
    function approveAndCall(address _spender, uint256 _value, bytes _extraData)
        public
        whenTokenNotPaused
        returns (bool) {
        tokenRecipient spender = tokenRecipient(_spender);
        if (approve(_spender, _value)) {
            spender.receiveApproval(msg.sender, _value, address(this), _extraData);
            return true;
        }
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"paused","type":"bool"}],"name":"setRebasePaused","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"paused","type":"bool"}],"name":"setTokenPaused","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":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"rebasePaused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"who","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenPaused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","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":false,"inputs":[{"name":"spender","type":"address"},{"name":"subtractedValue","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":false,"inputs":[{"name":"supplyDelta","type":"uint256"}],"name":"rebase","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"},{"name":"_extraData","type":"bytes"}],"name":"approveAndCall","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"owner_","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"initialSupply","type":"uint256"},{"name":"tokenName","type":"string"},{"name":"tokenSymbol","type":"string"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"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":false,"name":"totalSupply","type":"uint256"}],"name":"LogRebase","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"paused","type":"bool"}],"name":"LogRebasePaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"paused","type":"bool"}],"name":"LogTokenPaused","type":"event"}]

60806040526008600360006101000a81548160ff021916908360ff1602179055503480156200002d57600080fd5b5060405162001f3c38038062001f3c833981018060405281019080805190602001909291908051820192919060200180518201929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160019080519060200190620000be929190620002a2565b508060029080519060200190620000d7929190620002a2565b50600360009054906101000a900460ff1660ff16600a0a83026004819055506004546000198115156200010657fe5b06600019036005819055506000600360016101000a81548160ff0219169083151502179055506000600360026101000a81548160ff021916908315150217905550600454600681905550600554600860008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620001de600654600554620002766401000000000262001b47179091906401000000009004565b6007819055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6006546040518082815260200191505060405180910390a350505062000351565b6000806000831115156200028957600080fd5b82848115156200029557fe5b0490508091505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002e557805160ff191683800117855562000316565b8280016001018555821562000316579182015b8281111562000315578251825591602001919060010190620002f8565b5b50905062000325919062000329565b5090565b6200034e91905b808211156200034a57600081600090555060010162000330565b5090565b90565b611bdb80620003616000396000f300608060405260043610610107576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461010c578063095ea7b31461019c57806318160ddd1461020157806322872e0b1461022c57806323b872dd1461025b57806329519457146102e0578063313ce5671461030f578063395093511461034057806353ca9f24146103a557806370a08231146103d457806386c75e741461042b5780638da5cb5b1461045a5780638f32d59b146104b157806395d89b41146104e0578063a457c2d714610570578063a9059cbb146105d5578063bc4f2d6d1461063a578063cae9ca511461067b578063dd62ed3e14610726575b600080fd5b34801561011857600080fd5b5061012161079d565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610161578082015181840152602081019050610146565b50505050905090810190601f16801561018e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101a857600080fd5b506101e7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061083f565b604051808215151515815260200191505060405180910390f35b34801561020d57600080fd5b50610216610989565b6040518082815260200191505060405180910390f35b34801561023857600080fd5b50610259600480360381019080803515159060200190929190505050610993565b005b34801561026757600080fd5b506102c6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506109fe565b604051808215151515815260200191505060405180910390f35b3480156102ec57600080fd5b5061030d600480360381019080803515159060200190929190505050610c45565b005b34801561031b57600080fd5b50610324610cb0565b604051808260ff1660ff16815260200191505060405180910390f35b34801561034c57600080fd5b5061038b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610cc7565b604051808215151515815260200191505060405180910390f35b3480156103b157600080fd5b506103ba610edf565b604051808215151515815260200191505060405180910390f35b3480156103e057600080fd5b50610415600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ef2565b6040518082815260200191505060405180910390f35b34801561043757600080fd5b50610440610f4f565b604051808215151515815260200191505060405180910390f35b34801561046657600080fd5b5061046f610f62565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104bd57600080fd5b506104c6610f8b565b604051808215151515815260200191505060405180910390f35b3480156104ec57600080fd5b506104f5610fe2565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561053557808201518184015260208101905061051a565b50505050905090810190601f1680156105625780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561057c57600080fd5b506105bb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611084565b604051808215151515815260200191505060405180910390f35b3480156105e157600080fd5b50610620600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611332565b604051808215151515815260200191505060405180910390f35b34801561064657600080fd5b50610665600480360381019080803590602001909291905050506113de565b6040518082815260200191505060405180910390f35b34801561068757600080fd5b5061070c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611514565b604051808215151515815260200191505060405180910390f35b34801561073257600080fd5b50610787600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116b3565b6040518082815260200191505060405180910390f35b606060018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108355780601f1061080a57610100808354040283529160200191610835565b820191906000526020600020905b81548152906001019060200180831161081857829003601f168201915b5050505050905090565b6000600360029054906101000a900460ff1615151561085d57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561089957600080fd5b81600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600654905090565b61099b610f8b565b15156109a657600080fd5b80600360016101000a81548160ff0219169083151502179055507fb36927c68760751ec71d827eb30be804be612d87c7c6b6a1f255258c6a1bea6681604051808215151515815260200191505060405180910390a150565b600082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610a3d57600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610a7857600080fd5b600360029054906101000a900460ff16151515610a9457600080fd5b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548311151515610b1f57600080fd5b610bae83600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461173a90919063ffffffff16565b600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c3985858561175b565b60019150509392505050565b610c4d610f8b565b1515610c5857600080fd5b80600360026101000a81548160ff0219169083151502179055507f398c4e18c8ef7f11eb3921fe2d01d3b469329a5f01febf5ba17f2462f27f439c81604051808215151515815260200191505060405180910390a150565b6000600360009054906101000a900460ff16905090565b6000600360029054906101000a900460ff16151515610ce557600080fd5b610d7482600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b2690919063ffffffff16565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b600360019054906101000a900460ff1681565b6000610f48600754600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b4790919063ffffffff16565b9050919050565b600360029054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b606060028054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561107a5780601f1061104f5761010080835404028352916020019161107a565b820191906000526020600020905b81548152906001019060200180831161105d57829003601f168201915b5050505050905090565b600080600360029054906101000a900460ff161515156110a357600080fd5b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080831015156111b2576000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611246565b6111c5838261173a90919063ffffffff16565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b600082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561137157600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156113ac57600080fd5b600360029054906101000a900460ff161515156113c857600080fd5b6113d333858561175b565b600191505092915050565b60006113e8610f8b565b15156113f357600080fd5b600360019054906101000a900460ff1615151561140f57600080fd5b600082141561145b577f60633057fb2c2558942a126acc1dc7c639b6fdee660a0171f7500e2ac5918b2e6006546040518082815260200191505060405180910390a1600654905061150f565b600360009054906101000a900460ff1660ff16600a0a82026006819055506000196fffffffffffffffffffffffffffffffff1660065411156114b3576000196fffffffffffffffffffffffffffffffff166006819055505b6114ca600654600554611b4790919063ffffffff16565b6007819055507f60633057fb2c2558942a126acc1dc7c639b6fdee660a0171f7500e2ac5918b2e6006546040518082815260200191505060405180910390a160065490505b919050565b600080600360029054906101000a900460ff1615151561153357600080fd5b849050611540858561083f565b156116aa578073ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338630876040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561163a57808201518184015260208101905061161f565b50505050905090810190601f1680156116675780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561168957600080fd5b505af115801561169d573d6000803e3d6000fd5b50505050600191506116ab565b5b509392505050565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008083831115151561174c57600080fd5b82840390508091505092915050565b60008061177360075484611b7190919063ffffffff16565b915081600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156117c357600080fd5b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461185583600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b2690919063ffffffff16565b1015151561186257600080fd5b6118f3600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b2690919063ffffffff16565b905061194782600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461173a90919063ffffffff16565b600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506119dc82600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b2690919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a380611b16600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b2690919063ffffffff16565b141515611b1f57fe5b5050505050565b6000808284019050838110151515611b3d57600080fd5b8091505092915050565b600080600083111515611b5957600080fd5b8284811515611b6457fe5b0490508091505092915050565b6000806000841415611b865760009150611ba8565b8284029050828482811515611b9757fe5b04141515611ba457600080fd5b8091505b50929150505600a165627a7a723058205de10f5ae88e7b04878d1c8cc7ced94eb15f1601b280dbb43c7ace150206573100290000000000000000000000000000000000000000000000000000000005f5e100000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000a466c6f7720436861696e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004464c4f5700000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405260043610610107576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461010c578063095ea7b31461019c57806318160ddd1461020157806322872e0b1461022c57806323b872dd1461025b57806329519457146102e0578063313ce5671461030f578063395093511461034057806353ca9f24146103a557806370a08231146103d457806386c75e741461042b5780638da5cb5b1461045a5780638f32d59b146104b157806395d89b41146104e0578063a457c2d714610570578063a9059cbb146105d5578063bc4f2d6d1461063a578063cae9ca511461067b578063dd62ed3e14610726575b600080fd5b34801561011857600080fd5b5061012161079d565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610161578082015181840152602081019050610146565b50505050905090810190601f16801561018e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101a857600080fd5b506101e7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061083f565b604051808215151515815260200191505060405180910390f35b34801561020d57600080fd5b50610216610989565b6040518082815260200191505060405180910390f35b34801561023857600080fd5b50610259600480360381019080803515159060200190929190505050610993565b005b34801561026757600080fd5b506102c6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506109fe565b604051808215151515815260200191505060405180910390f35b3480156102ec57600080fd5b5061030d600480360381019080803515159060200190929190505050610c45565b005b34801561031b57600080fd5b50610324610cb0565b604051808260ff1660ff16815260200191505060405180910390f35b34801561034c57600080fd5b5061038b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610cc7565b604051808215151515815260200191505060405180910390f35b3480156103b157600080fd5b506103ba610edf565b604051808215151515815260200191505060405180910390f35b3480156103e057600080fd5b50610415600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ef2565b6040518082815260200191505060405180910390f35b34801561043757600080fd5b50610440610f4f565b604051808215151515815260200191505060405180910390f35b34801561046657600080fd5b5061046f610f62565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104bd57600080fd5b506104c6610f8b565b604051808215151515815260200191505060405180910390f35b3480156104ec57600080fd5b506104f5610fe2565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561053557808201518184015260208101905061051a565b50505050905090810190601f1680156105625780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561057c57600080fd5b506105bb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611084565b604051808215151515815260200191505060405180910390f35b3480156105e157600080fd5b50610620600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611332565b604051808215151515815260200191505060405180910390f35b34801561064657600080fd5b50610665600480360381019080803590602001909291905050506113de565b6040518082815260200191505060405180910390f35b34801561068757600080fd5b5061070c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611514565b604051808215151515815260200191505060405180910390f35b34801561073257600080fd5b50610787600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116b3565b6040518082815260200191505060405180910390f35b606060018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108355780601f1061080a57610100808354040283529160200191610835565b820191906000526020600020905b81548152906001019060200180831161081857829003601f168201915b5050505050905090565b6000600360029054906101000a900460ff1615151561085d57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561089957600080fd5b81600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600654905090565b61099b610f8b565b15156109a657600080fd5b80600360016101000a81548160ff0219169083151502179055507fb36927c68760751ec71d827eb30be804be612d87c7c6b6a1f255258c6a1bea6681604051808215151515815260200191505060405180910390a150565b600082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610a3d57600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610a7857600080fd5b600360029054906101000a900460ff16151515610a9457600080fd5b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548311151515610b1f57600080fd5b610bae83600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461173a90919063ffffffff16565b600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c3985858561175b565b60019150509392505050565b610c4d610f8b565b1515610c5857600080fd5b80600360026101000a81548160ff0219169083151502179055507f398c4e18c8ef7f11eb3921fe2d01d3b469329a5f01febf5ba17f2462f27f439c81604051808215151515815260200191505060405180910390a150565b6000600360009054906101000a900460ff16905090565b6000600360029054906101000a900460ff16151515610ce557600080fd5b610d7482600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b2690919063ffffffff16565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b600360019054906101000a900460ff1681565b6000610f48600754600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b4790919063ffffffff16565b9050919050565b600360029054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b606060028054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561107a5780601f1061104f5761010080835404028352916020019161107a565b820191906000526020600020905b81548152906001019060200180831161105d57829003601f168201915b5050505050905090565b600080600360029054906101000a900460ff161515156110a357600080fd5b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080831015156111b2576000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611246565b6111c5838261173a90919063ffffffff16565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b600082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561137157600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156113ac57600080fd5b600360029054906101000a900460ff161515156113c857600080fd5b6113d333858561175b565b600191505092915050565b60006113e8610f8b565b15156113f357600080fd5b600360019054906101000a900460ff1615151561140f57600080fd5b600082141561145b577f60633057fb2c2558942a126acc1dc7c639b6fdee660a0171f7500e2ac5918b2e6006546040518082815260200191505060405180910390a1600654905061150f565b600360009054906101000a900460ff1660ff16600a0a82026006819055506000196fffffffffffffffffffffffffffffffff1660065411156114b3576000196fffffffffffffffffffffffffffffffff166006819055505b6114ca600654600554611b4790919063ffffffff16565b6007819055507f60633057fb2c2558942a126acc1dc7c639b6fdee660a0171f7500e2ac5918b2e6006546040518082815260200191505060405180910390a160065490505b919050565b600080600360029054906101000a900460ff1615151561153357600080fd5b849050611540858561083f565b156116aa578073ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338630876040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561163a57808201518184015260208101905061161f565b50505050905090810190601f1680156116675780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561168957600080fd5b505af115801561169d573d6000803e3d6000fd5b50505050600191506116ab565b5b509392505050565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008083831115151561174c57600080fd5b82840390508091505092915050565b60008061177360075484611b7190919063ffffffff16565b915081600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156117c357600080fd5b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461185583600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b2690919063ffffffff16565b1015151561186257600080fd5b6118f3600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b2690919063ffffffff16565b905061194782600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461173a90919063ffffffff16565b600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506119dc82600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b2690919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a380611b16600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b2690919063ffffffff16565b141515611b1f57fe5b5050505050565b6000808284019050838110151515611b3d57600080fd5b8091505092915050565b600080600083111515611b5957600080fd5b8284811515611b6457fe5b0490508091505092915050565b6000806000841415611b865760009150611ba8565b8284029050828482811515611b9757fe5b04141515611ba457600080fd5b8091505b50929150505600a165627a7a723058205de10f5ae88e7b04878d1c8cc7ced94eb15f1601b280dbb43c7ace15020657310029

Deployed Bytecode Sourcemap

3896:11236:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9244:75;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9244:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;9244:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12527:281;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12527:281:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8776:123;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8776:123:0;;;;;;;;;;;;;;;;;;;;;;;8230:159;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8230:159:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;11872:386;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11872:386:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8547:156;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8547:156:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;9544:82;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9544:82:0;;;;;;;;;;;;;;;;;;;;;;;;;;;13181:371;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13181:371:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4160:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4160:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;9020:159;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9020:159:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4191:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4191:23:0;;;;;;;;;;;;;;;;;;;;;;;;;;;5995:78;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5995:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;6329:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6329:91:0;;;;;;;;;;;;;;;;;;;;;;;;;;;9386:79;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9386:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;9386:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13814:540;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13814:540:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10928:183;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10928:183:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7516:556;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7516:556:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14753:376;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14753:376:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11418:174;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11418:174:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9244:75;9280:6;9306:5;9299:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9244:75;:::o;12527:281::-;12613:4;5726:11;;;;;;;;;;;5725:12;5717:21;;;;;;;;12658:1;12638:22;;:8;:22;;;;12630:31;;;;;;;;12716:6;12674:17;:29;12692:10;12674:29;;;;;;;;;;;;;;;:39;12704:8;12674:39;;;;;;;;;;;;;;;:48;;;;12759:8;12738:38;;12747:10;12738:38;;;12769:6;12738:38;;;;;;;;;;;;;;;;;;12796:4;12789:11;;12527:281;;;;:::o;8776:123::-;8847:7;8879:12;;8872:19;;8776:123;:::o;8230:159::-;6206:9;:7;:9::i;:::-;6198:18;;;;;;;;8336:6;8321:12;;:21;;;;;;;;;;;;;;;;;;8358:23;8374:6;8358:23;;;;;;;;;;;;;;;;;;;;;;8230:159;:::o;11872:386::-;11993:4;11960:3;5863;5849:18;;:2;:18;;;;5841:27;;;;;;;;5901:4;5887:19;;:2;:19;;;;5879:28;;;;;;;;5726:11;;;;;;;;;;;5725:12;5717:21;;;;;;;;12028:17;:24;12046:5;12028:24;;;;;;;;;;;;;;;:36;12053:10;12028:36;;;;;;;;;;;;;;;;12018:6;:46;;12010:55;;;;;;;;12140:48;12181:6;12140:17;:24;12158:5;12140:24;;;;;;;;;;;;;;;:36;12165:10;12140:36;;;;;;;;;;;;;;;;:40;;:48;;;;:::i;:::-;12101:17;:24;12119:5;12101:24;;;;;;;;;;;;;;;:36;12126:10;12101:36;;;;;;;;;;;;;;;:87;;;;12199:29;12209:5;12216:3;12221:6;12199:9;:29::i;:::-;12246:4;12239:11;;11872:386;;;;;;:::o;8547:156::-;6206:9;:7;:9::i;:::-;6198:18;;;;;;;;8651:6;8637:11;;:20;;;;;;;;;;;;;;;;;;8673:22;8688:6;8673:22;;;;;;;;;;;;;;;;;;;;;;8547:156;:::o;9544:82::-;9584:5;9609:9;;;;;;;;;;;9602:16;;9544:82;:::o;13181:371::-;13307:4;5726:11;;;;;;;;;;;5725:12;5717:21;;;;;;;;13383:54;13426:10;13383:17;:29;13401:10;13383:29;;;;;;;;;;;;;;;:38;13413:7;13383:38;;;;;;;;;;;;;;;;:42;;:54;;;;:::i;:::-;13329:17;:29;13347:10;13329:29;;;;;;;;;;;;;;;:38;13359:7;13329:38;;;;;;;;;;;;;;;:108;;;;13474:7;13453:69;;13462:10;13453:69;;;13483:17;:29;13501:10;13483:29;;;;;;;;;;;;;;;:38;13513:7;13483:38;;;;;;;;;;;;;;;;13453:69;;;;;;;;;;;;;;;;;;13540:4;13533:11;;13181:371;;;;:::o;4160:24::-;;;;;;;;;;;;;:::o;9020:159::-;9100:7;9132:39;9154:16;;9132:12;:17;9145:3;9132:17;;;;;;;;;;;;;;;;:21;;:39;;;;:::i;:::-;9125:46;;9020:159;;;:::o;4191:23::-;;;;;;;;;;;;;:::o;5995:78::-;6032:7;6059:6;;;;;;;;;;;6052:13;;5995:78;:::o;6329:91::-;6368:4;6406:6;;;;;;;;;;;6392:20;;:10;:20;;;6385:27;;6329:91;:::o;9386:79::-;9424:6;9450:7;9443:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9386:79;:::o;13814:540::-;13945:4;13967:16;5726:11;;;;;;;;;;;5725:12;5717:21;;;;;;;;13986:17;:29;14004:10;13986:29;;;;;;;;;;;;;;;:38;14016:7;13986:38;;;;;;;;;;;;;;;;13967:57;;14058:8;14039:15;:27;;14035:205;;;14124:1;14083:17;:29;14101:10;14083:29;;;;;;;;;;;;;;;:38;14113:7;14083:38;;;;;;;;;;;;;;;:42;;;;14035:205;;;14199:29;14212:15;14199:8;:12;;:29;;;;:::i;:::-;14158:17;:29;14176:10;14158:29;;;;;;;;;;;;;;;:38;14188:7;14158:38;;;;;;;;;;;;;;;:70;;;;14035:205;14276:7;14255:69;;14264:10;14255:69;;;14285:17;:29;14303:10;14285:29;;;;;;;;;;;;;;;:38;14315:7;14285:38;;;;;;;;;;;;;;;;14255:69;;;;;;;;;;;;;;;;;;14342:4;14335:11;;13814:540;;;;;:::o;10928:183::-;11030:4;10997:3;5863;5849:18;;:2;:18;;;;5841:27;;;;;;;;5901:4;5887:19;;:2;:19;;;;5879:28;;;;;;;;5726:11;;;;;;;;;;;5725:12;5717:21;;;;;;;;11047:34;11057:10;11069:3;11074:6;11047:9;:34::i;:::-;11099:4;11092:11;;10928:183;;;;;:::o;7516:556::-;7637:7;6206:9;:7;:9::i;:::-;6198:18;;;;;;;;5592:12;;;;;;;;;;;5591:13;5583:22;;;;;;;;7681:1;7666:11;:16;7662:111;;;7704:23;7714:12;;7704:23;;;;;;;;;;;;;;;;;;7749:12;;7742:19;;;;7662:111;7828:9;;;;;;;;;;;7820:18;;7814:2;:24;7800:11;:38;7785:12;:53;;;;4647:1;4638:11;7870:10;;7855:12;;:25;7851:83;;;4647:1;4638:11;7912:10;;7897:12;:25;;;;7851:83;7965:28;7980:12;;7965:10;;:14;;:28;;;;:::i;:::-;7946:16;:47;;;;8011:23;8021:12;;8011:23;;;;;;;;;;;;;;;;;;8052:12;;8045:19;;5616:1;7516:556;;;:::o;14753:376::-;14891:4;14908:22;5726:11;;;;;;;;;;;5725:12;5717:21;;;;;;;;14948:8;14908:49;;14972:25;14980:8;14990:6;14972:7;:25::i;:::-;14968:154;;;15014:7;:23;;;15038:10;15050:6;15066:4;15073:10;15014:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;15014:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15014:70:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15014:70:0;;;;15106:4;15099:11;;;;14968:154;5749:1;14753:376;;;;;;:::o;11418:174::-;11518:7;11550:17;:25;11568:6;11550:25;;;;;;;;;;;;;;;:34;11576:7;11550:34;;;;;;;;;;;;;;;;11543:41;;11418:174;;;;:::o;1329:150::-;1387:7;1433:9;1420:1;1415;:6;;1407:15;;;;;;;;1449:1;1445;:5;1433:17;;1470:1;1463:8;;1329:150;;;;;:::o;9715:1002::-;9904:16;10215:24;9923:28;9934:16;;9923:6;:10;;:28;;;;:::i;:::-;9904:47;;10036:8;10013:12;:19;10026:5;10013:19;;;;;;;;;;;;;;;;:31;;10005:40;;;;;;;;10131:12;:17;10144:3;10131:17;;;;;;;;;;;;;;;;10096:31;10118:8;10096:12;:17;10109:3;10096:17;;;;;;;;;;;;;;;;:21;;:31;;;;:::i;:::-;:52;;10088:61;;;;;;;;10242:42;10266:12;:17;10279:3;10266:17;;;;;;;;;;;;;;;;10242:12;:19;10255:5;10242:19;;;;;;;;;;;;;;;;:23;;:42;;;;:::i;:::-;10215:69;;10354:33;10378:8;10354:12;:19;10367:5;10354:19;;;;;;;;;;;;;;;;:23;;:33;;;;:::i;:::-;10332:12;:19;10345:5;10332:19;;;;;;;;;;;;;;;:55;;;;10418:31;10440:8;10418:12;:17;10431:3;10418:17;;;;;;;;;;;;;;;;:21;;:31;;;;:::i;:::-;10398:12;:17;10411:3;10398:17;;;;;;;;;;;;;;;:51;;;;10514:3;10498:28;;10507:5;10498:28;;;10519:6;10498:28;;;;;;;;;;;;;;;;;;10692:16;10646:42;10670:12;:17;10683:3;10670:17;;;;;;;;;;;;;;;;10646:12;:19;10659:5;10646:19;;;;;;;;;;;;;;;;:23;;:42;;;;:::i;:::-;:62;10639:70;;;;;;9715:1002;;;;;:::o;1555:150::-;1613:7;1633:9;1649:1;1645;:5;1633:17;;1674:1;1669;:6;;1661:15;;;;;;;;1696:1;1689:8;;1555:150;;;;;:::o;909:294::-;967:7;1070:9;999:1;995;:5;987:14;;;;;;;;1086:1;1082;:5;;;;;;;;1070:17;;1194:1;1187:8;;909:294;;;;;:::o;353:433::-;411:7;710:9;660:1;655;:6;651:47;;;685:1;678:8;;;;651:47;726:1;722;:5;710:17;;755:1;750;746;:5;;;;;;;;:10;738:19;;;;;;;;777:1;770:8;;353:433;;;;;;:::o

Swarm Source

bzzr://5de10f5ae88e7b04878d1c8cc7ced94eb15f1601b280dbb43c7ace1502065731
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.