ETH Price: $2,234.95 (-1.75%)
 

Overview

Max Total Supply

3,300,000 TIP

Holders

147

Transfers

-
0

Market

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
TIPToken

Compiler Version
v0.6.10+commit.00c0fcaf

Optimization Enabled:
No with 200 runs

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

// File: contracts\library\SafeMath.sol

pragma solidity 0.6.10;

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot overflow.
     *
     * _Available since v2.4.0._
     */
    function sub(uint256 a, uint256 b, string memory errorMessage)
        internal
        pure
        returns (uint256)
    {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     * - Multiplication cannot 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-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     *
     * _Available since v2.4.0._
     */
    function div(uint256 a, uint256 b, string memory errorMessage)
        internal
        pure
        returns (uint256)
    {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     *
     * _Available since v2.4.0._
     */
    function mod(uint256 a, uint256 b, string memory errorMessage)
        internal
        pure
        returns (uint256)
    {
        require(b != 0, errorMessage);
        return a % b;
    }
}

// File: contracts\erc20\ERC20.sol

pragma solidity 0.6.10;


abstract contract ERC20 {
    using SafeMath for uint256;

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

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

    /*
   * Internal Functions for ERC20 standard logics
   */

    function _transfer(address from, address to, uint256 amount)
        internal
        returns (bool success)
    {
        _balances[from] = _balances[from].sub(
            amount,
            "ERC20/transfer : cannot transfer more than token owner balance"
        );
        _balances[to] = _balances[to].add(amount);
        emit Transfer(from, to, amount);
        success = true;
    }

    function _approve(address owner, address spender, uint256 amount)
        internal
        returns (bool success)
    {
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
        success = true;
    }

    function _mint(address recipient, uint256 amount)
        internal
        returns (bool success)
    {
        _totalSupply = _totalSupply.add(amount);
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(address(0), recipient, amount);
        success = true;
    }

    function _burn(address burned, uint256 amount)
        internal
        returns (bool success)
    {
        _balances[burned] = _balances[burned].sub(
            amount,
            "ERC20Burnable/burn : Cannot burn more than user's balance"
        );
        _totalSupply = _totalSupply.sub(
            amount,
            "ERC20Burnable/burn : Cannot burn more than totalSupply"
        );
        emit Transfer(burned, address(0), amount);
        success = true;
    }

    /*
   * public view functions to view common data
   */

    function totalSupply() external view returns (uint256 total) {
        total = _totalSupply;
    }
    function balanceOf(address owner) external view returns (uint256 balance) {
        balance = _balances[owner];
    }

    function allowance(address owner, address spender)
        external
        view
        returns (uint256 remaining)
    {
        remaining = _allowances[owner][spender];
    }

    /*
   * External view Function Interface to implement on final contract
   */
    function name() virtual external view returns (string memory tokenName);
    function symbol() virtual external view returns (string memory tokenSymbol);
    function decimals() virtual external view returns (uint8 tokenDecimals);

    /*
   * External Function Interface to implement on final contract
   */
    function transfer(address to, uint256 amount)
        virtual
        external
        returns (bool success);
    function transferFrom(address from, address to, uint256 amount)
        virtual
        external
        returns (bool success);
    function approve(address spender, uint256 amount)
        virtual
        external
        returns (bool success);
}

// File: contracts\library\Ownable.sol

pragma solidity 0.6.10;

contract Ownable {
    address internal _owner;

    event OwnershipTransferred(
        address indexed currentOwner,
        address indexed newOwner
    );

    constructor() internal {
        _owner = msg.sender;
        emit OwnershipTransferred(address(0), msg.sender);
    }

    modifier onlyOwner() {
        require(
            msg.sender == _owner,
            "Ownable : Function called by unauthorized user."
        );
        _;
    }

    function owner() external view returns (address ownerAddress) {
        ownerAddress = _owner;
    }

    function transferOwnership(address newOwner)
        public
        onlyOwner
        returns (bool success)
    {
        require(newOwner != address(0), "Ownable/transferOwnership : cannot transfer ownership to zero address");
        success = _transferOwnership(newOwner);
    }

    function renounceOwnership() external onlyOwner returns (bool success) {
        success = _transferOwnership(address(0));
    }

    function _transferOwnership(address newOwner) internal returns (bool success) {
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
        success = true;
    }
}

// File: contracts\erc20\ERC20Lockable.sol

pragma solidity 0.6.10;



abstract contract ERC20Lockable is ERC20, Ownable {
    struct LockInfo {
        uint256 amount;
        uint256 due;
    }

    mapping(address => LockInfo[]) internal _locks;
    mapping(address => uint256) internal _totalLocked;

    event Lock(address indexed from, uint256 amount, uint256 due);
    event Unlock(address indexed from, uint256 amount);

    modifier checkLock(address from, uint256 amount) {
        require(_balances[from] >= _totalLocked[from].add(amount), "ERC20Lockable/Cannot send more than unlocked amount");
        _;
    }

    function _lock(address from, uint256 amount, uint256 due)
        internal
        returns (bool success)
    {
        require(due > now, "ERC20Lockable/lock : Cannot set due to past");
        require(
            _balances[from] >= amount.add(_totalLocked[from]),
            "ERC20Lockable/lock : locked total should be smaller than balance"
        );
        _totalLocked[from] = _totalLocked[from].add(amount);
        _locks[from].push(LockInfo(amount, due));
        emit Lock(from, amount, due);
        success = true;
    }

    function _unlock(address from, uint256 index) internal returns (bool success) {
        LockInfo storage lock = _locks[from][index];
        _totalLocked[from] = _totalLocked[from].sub(lock.amount);
        emit Unlock(from, lock.amount);
        _locks[from][index] = _locks[from][_locks[from].length - 1];
        _locks[from].pop();
        success = true;
    }

    function unlock(address from) external returns (bool success) {
        for(uint256 i = 0; i < _locks[from].length; i++){
            if(_locks[from][i].due < now){
                _unlock(from, i);
            }
        }
        success = true;
    }


    function transferWithLockUp(address recipient, uint256 amount, uint256 due)
        external
        onlyOwner
        returns (bool success)
    {
        require(
            recipient != address(0),
            "ERC20Lockable/transferWithLockUp : Cannot send to zero address"
        );
        _transfer(msg.sender, recipient, amount);
        _lock(recipient, amount, due);
        success = true;
    }

    function lockInfo(address locked, uint256 index)
        external
        view
        returns (uint256 amount, uint256 due)
    {
        LockInfo memory lock = _locks[locked][index];
        amount = lock.amount;
        due = lock.due;
    }

    function totalLocked(address locked) external view returns(uint256 amount, uint256 length){
        amount = _totalLocked[locked];
        length = _locks[locked].length;
    }
}

// File: contracts\library\Pausable.sol

pragma solidity 0.6.10;


contract Pausable is Ownable {
    bool internal _paused;

    event Paused();
    event Unpaused();

    modifier whenPaused() {
        require(_paused, "Paused : This function can only be called when paused");
        _;
    }

    modifier whenNotPaused() {
        require(!_paused, "Paused : This function can only be called when not paused");
        _;
    }

    function pause() external onlyOwner whenNotPaused returns (bool success) {
        _paused = true;
        emit Paused();
        success = true;
    }

    function unPause() external onlyOwner whenPaused returns (bool success) {
        _paused = false;
        emit Unpaused();
        success = true;
    }

    function paused() external view returns (bool) {
        return _paused;
    }
}

// File: contracts\library\Freezable.sol

pragma solidity 0.6.10;


contract Freezable is Ownable {
    mapping(address => bool) private _frozen;

    event Freeze(address indexed target);
    event Unfreeze(address indexed target);

    modifier whenNotFrozen(address target) {
        require(!_frozen[target], "Freezable : target is frozen");
        _;
    }

    function freeze(address target) external onlyOwner returns (bool success) {
        _frozen[target] = true;
        emit Freeze(target);
        success = true;
    }

    function unFreeze(address target)
        external
        onlyOwner
        returns (bool success)
    {
        _frozen[target] = false;
        emit Unfreeze(target);
        success = true;
    }

    function isFrozen(address target)
        external
        view
        returns (bool frozen)
    {
        return _frozen[target];
    }
}

// File: contracts\technology innovation projectToken.sol

pragma solidity 0.6.10;




contract TIPToken is
    ERC20Lockable,
    Pausable,
    Freezable
{
    string constant private _name = "technology innovation project";
    string constant private _symbol = "TIP";
    uint8 constant private _decimals = 18;
    uint256 constant private _initial_supply = 3300000;

    constructor() public Ownable() {
        _mint(msg.sender, _initial_supply * (10**uint256(_decimals)));
    }

    function transfer(address to, uint256 amount)
        override
        external
        whenNotFrozen(msg.sender)
        whenNotPaused
        checkLock(msg.sender, amount)
        returns (bool success)
    {
        require(
            to != address(0),
            "SAM/transfer : Should not send to zero address"
        );
        _transfer(msg.sender, to, amount);
        success = true;
    }

    function transferFrom(address from, address to, uint256 amount)
        override
        external
        whenNotFrozen(from)
        whenNotPaused
        checkLock(from, amount)
        returns (bool success)
    {
        require(
            to != address(0),
            "SAM/transferFrom : Should not send to zero address"
        );
        _transfer(from, to, amount);
        _approve(
            from,
            msg.sender,
            _allowances[from][msg.sender].sub(
                amount,
                "SAM/transferFrom : Cannot send more than allowance"
            )
        );
        success = true;
    }

    function approve(address spender, uint256 amount)
        override
        external
        returns (bool success)
    {
        require(
            spender != address(0),
            "SAM/approve : Should not approve zero address"
        );
        _approve(msg.sender, spender, amount);
        success = true;
    }

    function name() override external view returns (string memory tokenName) {
        tokenName = _name;
    }

    function symbol() override external view returns (string memory tokenSymbol) {
        tokenSymbol = _symbol;
    }

    function decimals() override external view returns (uint8 tokenDecimals) {
        tokenDecimals = _decimals;
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"target","type":"address"}],"name":"Freeze","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"due","type":"uint256"}],"name":"Lock","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"currentOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"target","type":"address"}],"name":"Unfreeze","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Unlock","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpaused","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"remaining","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"tokenDecimals","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"freeze","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"isFrozen","outputs":[{"internalType":"bool","name":"frozen","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"locked","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"lockInfo","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"due","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"tokenName","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"ownerAddress","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"tokenSymbol","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"locked","type":"address"}],"name":"totalLocked","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"length","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"total","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"due","type":"uint256"}],"name":"transferWithLockUp","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"unFreeze","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unPause","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"}],"name":"unlock","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b5033600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3620000cc33601260ff16600a0a62325aa002620000d360201b60201c565b506200028c565b6000620000f1826000546200020360201b62001bc81790919060201c565b6000819055506200015082600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200020360201b62001bc81790919060201c565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b60008082840190508381101562000282576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b612972806200029c6000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80638456cb59116100b8578063b2520a7c1161007c578063b2520a7c1461066d578063d8fb9337146106d6578063dd62ed3e14610735578063e5839836146107ad578063f2fde38b14610809578063f7b188a51461086557610142565b80638456cb59146104bc5780638d1fdf2f146104de5780638da5cb5b1461053a57806395d89b4114610584578063a9059cbb1461060757610142565b8063313ce5671161010a578063313ce5671461033057806338b82092146103545780635c975abb146103c457806370a08231146103e6578063715018a61461043e57806383cfab421461046057610142565b806306fdde0314610147578063095ea7b3146101ca57806318160ddd1461023057806323b872dd1461024e5780632f6c493c146102d4575b600080fd5b61014f610887565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561018f578082015181840152602081019050610174565b50505050905090810190601f1680156101bc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610216600480360360408110156101e057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108c4565b604051808215151515815260200191505060405180910390f35b610238610961565b6040518082815260200191505060405180910390f35b6102ba6004803603606081101561026457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061096a565b604051808215151515815260200191505060405180910390f35b610316600480360360208110156102ea57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610cd2565b604051808215151515815260200191505060405180910390f35b610338610daa565b604051808260ff1660ff16815260200191505060405180910390f35b6103aa6004803603606081101561036a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050610db3565b604051808215151515815260200191505060405180910390f35b6103cc610f04565b604051808215151515815260200191505060405180910390f35b610428600480360360208110156103fc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f1b565b6040518082815260200191505060405180910390f35b610446610f64565b604051808215151515815260200191505060405180910390f35b6104a26004803603602081101561047657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061101b565b604051808215151515815260200191505060405180910390f35b6104c4611167565b604051808215151515815260200191505060405180910390f35b610520600480360360208110156104f457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112c3565b604051808215151515815260200191505060405180910390f35b61054261140f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61058c611439565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105cc5780820151818401526020810190506105b1565b50505050905090810190601f1680156105f95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6106536004803603604081101561061d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611476565b604051808215151515815260200191505060405180910390f35b6106b96004803603604081101561068357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611729565b604051808381526020018281526020019250505060405180910390f35b610718600480360360208110156106ec57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117c3565b604051808381526020018281526020019250505060405180910390f35b6107976004803603604081101561074b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611852565b6040518082815260200191505060405180910390f35b6107ef600480360360208110156107c357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118d9565b604051808215151515815260200191505060405180910390f35b61084b6004803603602081101561081f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061192f565b604051808215151515815260200191505060405180910390f35b61086d611a6d565b604051808215151515815260200191505060405180910390f35b60606040518060400160405280601d81526020017f746563686e6f6c6f677920696e6e6f766174696f6e2070726f6a656374000000815250905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561094b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180612896602d913960400191505060405180910390fd5b610956338484611c50565b506001905092915050565b60008054905090565b600083600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610a2d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f467265657a61626c65203a207461726765742069732066726f7a656e0000000081525060200191505060405180910390fd5b600660009054906101000a900460ff1615610a93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603981526020018061275d6039913960400191505060405180910390fd5b8483610ae781600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bc890919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610b7e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806128636033913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415610c04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806127c46032913960400191505060405180910390fd5b610c0f878787611d43565b50610cc38733610cbe8860405180606001604052806032815260200161272b60329139600260008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ef99092919063ffffffff16565b611c50565b50600193505050509392505050565b600080600090505b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050811015610da05742600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110610d6f57fe5b9060005260206000209060020201600101541015610d9357610d918382611fb9565b505b8080600101915050610cda565b5060019050919050565b60006012905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e5b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180612834602f913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610ee1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603e815260200180612682603e913960400191505060405180910390fd5b610eec338585611d43565b50610ef8848484612289565b50600190509392505050565b6000600660009054906101000a900460ff16905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461100c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180612834602f913960400191505060405180910390fd5b6110166000612555565b905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180612834602f913960400191505060405180910390fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fca5069937e68fd197927055037f59d7c90bf75ac104e6e375539ef480c3ad6ee60405160405180910390a260019050919050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461120f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180612834602f913960400191505060405180910390fd5b600660009054906101000a900460ff1615611275576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603981526020018061275d6039913960400191505060405180910390fd5b6001600660006101000a81548160ff0219169083151502179055507f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75260405160405180910390a16001905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461136b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180612834602f913960400191505060405180910390fd5b6001600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167faf85b60d26151edd11443b704d424da6c43d0468f2235ebae3d1904dbc32304960405160405180910390a260019050919050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f5449500000000000000000000000000000000000000000000000000000000000815250905090565b600033600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611539576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f467265657a61626c65203a207461726765742069732066726f7a656e0000000081525060200191505060405180910390fd5b600660009054906101000a900460ff161561159f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603981526020018061275d6039913960400191505060405180910390fd5b33836115f381600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bc890919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561168a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806128636033913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415611710576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180612796602e913960400191505060405180910390fd5b61171b338787611d43565b506001935050505092915050565b600080611734612667565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020848154811061177e57fe5b90600052602060002090600202016040518060400160405290816000820154815260200160018201548152505090508060000151925080602001519150509250929050565b600080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549150600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050915091565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146119d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180612834602f913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a5d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260458152602001806128f86045913960600191505060405180910390fd5b611a6682612555565b9050919050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b15576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180612834602f913960400191505060405180910390fd5b600660009054906101000a900460ff16611b7a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001806128c36035913960400191505060405180910390fd5b6000600660006101000a81548160ff0219169083151502179055507fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d1693360405160405180910390a16001905090565b600080828401905083811015611c46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a3600190509392505050565b6000611db1826040518060600160405280603e81526020016127f6603e9139600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ef99092919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e4682600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bc890919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000838311158290611fa6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611f6b578082015181840152602081019050611f50565b50505050905090810190601f168015611f985780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020838154811061200657fe5b9060005260206000209060020201905061206c8160000154600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261d90919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff167f6381d9813cabeb57471b5a7e05078e64845ccdb563146a6911d536f24ce960f182600001546040518082815260200191505060405180910390a2600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050038154811061219057fe5b9060005260206000209060020201600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002084815481106121e857fe5b90600052602060002090600202016000820154816000015560018201548160010155905050600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548061225557fe5b6001900381819060005260206000209060020201600080820160009055600182016000905550509055600191505092915050565b60004282116122e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180612700602b913960400191505060405180910390fd5b612335600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484611bc890919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156123cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260408152602001806126c06040913960400191505060405180910390fd5b61241e83600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bc890919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405280858152602001848152509080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550508373ffffffffffffffffffffffffffffffffffffffff167f49eaf4942f1237055eb4cfa5f31c9dfe50d5b4ade01e021f7de8be2fbbde557b8484604051808381526020018281526020019250505060405180910390a2600190509392505050565b60008173ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a381600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b600061265f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ef9565b905092915050565b60405180604001604052806000815260200160008152509056fe45524332304c6f636b61626c652f7472616e73666572576974684c6f636b5570203a2043616e6e6f742073656e6420746f207a65726f206164647265737345524332304c6f636b61626c652f6c6f636b203a206c6f636b656420746f74616c2073686f756c6420626520736d616c6c6572207468616e2062616c616e636545524332304c6f636b61626c652f6c6f636b203a2043616e6e6f74207365742064756520746f207061737453414d2f7472616e7366657246726f6d203a2043616e6e6f742073656e64206d6f7265207468616e20616c6c6f77616e6365506175736564203a20546869732066756e6374696f6e2063616e206f6e6c792062652063616c6c6564207768656e206e6f742070617573656453414d2f7472616e73666572203a2053686f756c64206e6f742073656e6420746f207a65726f206164647265737353414d2f7472616e7366657246726f6d203a2053686f756c64206e6f742073656e6420746f207a65726f206164647265737345524332302f7472616e73666572203a2063616e6e6f74207472616e73666572206d6f7265207468616e20746f6b656e206f776e65722062616c616e63654f776e61626c65203a2046756e6374696f6e2063616c6c656420627920756e617574686f72697a656420757365722e45524332304c6f636b61626c652f43616e6e6f742073656e64206d6f7265207468616e20756e6c6f636b656420616d6f756e7453414d2f617070726f7665203a2053686f756c64206e6f7420617070726f7665207a65726f2061646472657373506175736564203a20546869732066756e6374696f6e2063616e206f6e6c792062652063616c6c6564207768656e207061757365644f776e61626c652f7472616e736665724f776e657273686970203a2063616e6e6f74207472616e73666572206f776e65727368697020746f207a65726f2061646472657373a26469706673582212202ce3e82ab62c0f10ebb11837381a354855405c912588998930a6fb9007264de864736f6c634300060a0033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101425760003560e01c80638456cb59116100b8578063b2520a7c1161007c578063b2520a7c1461066d578063d8fb9337146106d6578063dd62ed3e14610735578063e5839836146107ad578063f2fde38b14610809578063f7b188a51461086557610142565b80638456cb59146104bc5780638d1fdf2f146104de5780638da5cb5b1461053a57806395d89b4114610584578063a9059cbb1461060757610142565b8063313ce5671161010a578063313ce5671461033057806338b82092146103545780635c975abb146103c457806370a08231146103e6578063715018a61461043e57806383cfab421461046057610142565b806306fdde0314610147578063095ea7b3146101ca57806318160ddd1461023057806323b872dd1461024e5780632f6c493c146102d4575b600080fd5b61014f610887565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561018f578082015181840152602081019050610174565b50505050905090810190601f1680156101bc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610216600480360360408110156101e057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108c4565b604051808215151515815260200191505060405180910390f35b610238610961565b6040518082815260200191505060405180910390f35b6102ba6004803603606081101561026457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061096a565b604051808215151515815260200191505060405180910390f35b610316600480360360208110156102ea57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610cd2565b604051808215151515815260200191505060405180910390f35b610338610daa565b604051808260ff1660ff16815260200191505060405180910390f35b6103aa6004803603606081101561036a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050610db3565b604051808215151515815260200191505060405180910390f35b6103cc610f04565b604051808215151515815260200191505060405180910390f35b610428600480360360208110156103fc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f1b565b6040518082815260200191505060405180910390f35b610446610f64565b604051808215151515815260200191505060405180910390f35b6104a26004803603602081101561047657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061101b565b604051808215151515815260200191505060405180910390f35b6104c4611167565b604051808215151515815260200191505060405180910390f35b610520600480360360208110156104f457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112c3565b604051808215151515815260200191505060405180910390f35b61054261140f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61058c611439565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105cc5780820151818401526020810190506105b1565b50505050905090810190601f1680156105f95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6106536004803603604081101561061d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611476565b604051808215151515815260200191505060405180910390f35b6106b96004803603604081101561068357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611729565b604051808381526020018281526020019250505060405180910390f35b610718600480360360208110156106ec57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117c3565b604051808381526020018281526020019250505060405180910390f35b6107976004803603604081101561074b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611852565b6040518082815260200191505060405180910390f35b6107ef600480360360208110156107c357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118d9565b604051808215151515815260200191505060405180910390f35b61084b6004803603602081101561081f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061192f565b604051808215151515815260200191505060405180910390f35b61086d611a6d565b604051808215151515815260200191505060405180910390f35b60606040518060400160405280601d81526020017f746563686e6f6c6f677920696e6e6f766174696f6e2070726f6a656374000000815250905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561094b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180612896602d913960400191505060405180910390fd5b610956338484611c50565b506001905092915050565b60008054905090565b600083600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610a2d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f467265657a61626c65203a207461726765742069732066726f7a656e0000000081525060200191505060405180910390fd5b600660009054906101000a900460ff1615610a93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603981526020018061275d6039913960400191505060405180910390fd5b8483610ae781600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bc890919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610b7e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806128636033913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415610c04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806127c46032913960400191505060405180910390fd5b610c0f878787611d43565b50610cc38733610cbe8860405180606001604052806032815260200161272b60329139600260008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ef99092919063ffffffff16565b611c50565b50600193505050509392505050565b600080600090505b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050811015610da05742600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110610d6f57fe5b9060005260206000209060020201600101541015610d9357610d918382611fb9565b505b8080600101915050610cda565b5060019050919050565b60006012905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e5b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180612834602f913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610ee1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603e815260200180612682603e913960400191505060405180910390fd5b610eec338585611d43565b50610ef8848484612289565b50600190509392505050565b6000600660009054906101000a900460ff16905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461100c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180612834602f913960400191505060405180910390fd5b6110166000612555565b905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180612834602f913960400191505060405180910390fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fca5069937e68fd197927055037f59d7c90bf75ac104e6e375539ef480c3ad6ee60405160405180910390a260019050919050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461120f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180612834602f913960400191505060405180910390fd5b600660009054906101000a900460ff1615611275576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603981526020018061275d6039913960400191505060405180910390fd5b6001600660006101000a81548160ff0219169083151502179055507f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75260405160405180910390a16001905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461136b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180612834602f913960400191505060405180910390fd5b6001600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167faf85b60d26151edd11443b704d424da6c43d0468f2235ebae3d1904dbc32304960405160405180910390a260019050919050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f5449500000000000000000000000000000000000000000000000000000000000815250905090565b600033600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611539576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f467265657a61626c65203a207461726765742069732066726f7a656e0000000081525060200191505060405180910390fd5b600660009054906101000a900460ff161561159f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603981526020018061275d6039913960400191505060405180910390fd5b33836115f381600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bc890919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561168a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806128636033913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415611710576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180612796602e913960400191505060405180910390fd5b61171b338787611d43565b506001935050505092915050565b600080611734612667565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020848154811061177e57fe5b90600052602060002090600202016040518060400160405290816000820154815260200160018201548152505090508060000151925080602001519150509250929050565b600080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549150600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050915091565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146119d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180612834602f913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a5d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260458152602001806128f86045913960600191505060405180910390fd5b611a6682612555565b9050919050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b15576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180612834602f913960400191505060405180910390fd5b600660009054906101000a900460ff16611b7a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001806128c36035913960400191505060405180910390fd5b6000600660006101000a81548160ff0219169083151502179055507fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d1693360405160405180910390a16001905090565b600080828401905083811015611c46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a3600190509392505050565b6000611db1826040518060600160405280603e81526020016127f6603e9139600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ef99092919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e4682600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bc890919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000838311158290611fa6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611f6b578082015181840152602081019050611f50565b50505050905090810190601f168015611f985780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020838154811061200657fe5b9060005260206000209060020201905061206c8160000154600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261d90919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff167f6381d9813cabeb57471b5a7e05078e64845ccdb563146a6911d536f24ce960f182600001546040518082815260200191505060405180910390a2600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050038154811061219057fe5b9060005260206000209060020201600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002084815481106121e857fe5b90600052602060002090600202016000820154816000015560018201548160010155905050600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548061225557fe5b6001900381819060005260206000209060020201600080820160009055600182016000905550509055600191505092915050565b60004282116122e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180612700602b913960400191505060405180910390fd5b612335600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484611bc890919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156123cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260408152602001806126c06040913960400191505060405180910390fd5b61241e83600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bc890919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405280858152602001848152509080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550508373ffffffffffffffffffffffffffffffffffffffff167f49eaf4942f1237055eb4cfa5f31c9dfe50d5b4ade01e021f7de8be2fbbde557b8484604051808381526020018281526020019250505060405180910390a2600190509392505050565b60008173ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a381600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b600061265f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ef9565b905092915050565b60405180604001604052806000815260200160008152509056fe45524332304c6f636b61626c652f7472616e73666572576974684c6f636b5570203a2043616e6e6f742073656e6420746f207a65726f206164647265737345524332304c6f636b61626c652f6c6f636b203a206c6f636b656420746f74616c2073686f756c6420626520736d616c6c6572207468616e2062616c616e636545524332304c6f636b61626c652f6c6f636b203a2043616e6e6f74207365742064756520746f207061737453414d2f7472616e7366657246726f6d203a2043616e6e6f742073656e64206d6f7265207468616e20616c6c6f77616e6365506175736564203a20546869732066756e6374696f6e2063616e206f6e6c792062652063616c6c6564207768656e206e6f742070617573656453414d2f7472616e73666572203a2053686f756c64206e6f742073656e6420746f207a65726f206164647265737353414d2f7472616e7366657246726f6d203a2053686f756c64206e6f742073656e6420746f207a65726f206164647265737345524332302f7472616e73666572203a2063616e6e6f74207472616e73666572206d6f7265207468616e20746f6b656e206f776e65722062616c616e63654f776e61626c65203a2046756e6374696f6e2063616c6c656420627920756e617574686f72697a656420757365722e45524332304c6f636b61626c652f43616e6e6f742073656e64206d6f7265207468616e20756e6c6f636b656420616d6f756e7453414d2f617070726f7665203a2053686f756c64206e6f7420617070726f7665207a65726f2061646472657373506175736564203a20546869732066756e6374696f6e2063616e206f6e6c792062652063616c6c6564207768656e207061757365644f776e61626c652f7472616e736665724f776e657273686970203a2063616e6e6f74207472616e73666572206f776e65727368697020746f207a65726f2061646472657373a26469706673582212202ce3e82ab62c0f10ebb11837381a354855405c912588998930a6fb9007264de864736f6c634300060a0033

Deployed Bytecode Sourcemap

14836:2203:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16677:109;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16338:331;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7708:100;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15677:653;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11797:259;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;16919:117;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;12066:420;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13728:80;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7814:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9871:130;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14377:207;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13400:155;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14199:170;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9464:102;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;16794:117;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15253:416;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;12494:252;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;12754:179;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;7941:183;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14592:143;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9574:289;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13563:157;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;16677:109;16725:23;16773:5;;;;;;;;;;;;;;;;;16761:17;;16677:109;:::o;16338:331::-;16442:12;16513:1;16494:21;;:7;:21;;;;16472:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16599:37;16608:10;16620:7;16629:6;16599:8;:37::i;:::-;;16657:4;16647:14;;16338:331;;;;:::o;7708:100::-;7754:13;7788:12;;7780:20;;7708:100;:::o;15677:653::-;15880:12;15800:4;14123:7;:15;14131:6;14123:15;;;;;;;;;;;;;;;;;;;;;;;;;14122:16;14114:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13303:7:::1;;;;;;;;;;;13302:8;13294:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15848:4:::2;15854:6;10747:30;10770:6;10747:12;:18;10760:4;10747:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;10728:9;:15;10738:4;10728:15;;;;;;;;;;;;;;;;:49;;10720:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15946:1:::3;15932:16;;:2;:16;;;;15910:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16037:27;16047:4;16053:2;16057:6;16037:9;:27::i;:::-;;16075:222;16098:4;16117:10;16142:144;16194:6;16142:144;;;;;;;;;;;;;;;;;:11;:17;16154:4;16142:17;;;;;;;;;;;;;;;:29;16160:10;16142:29;;;;;;;;;;;;;;;;:33;;:144;;;;;:::i;:::-;16075:8;:222::i;:::-;;16318:4;16308:14;;13383:1:::2;;15677:653:::0;;;;;;:::o;11797:259::-;11845:12;11874:9;11886:1;11874:13;;11870:154;11893:6;:12;11900:4;11893:12;;;;;;;;;;;;;;;:19;;;;11889:1;:23;11870:154;;;11958:3;11936:6;:12;11943:4;11936:12;;;;;;;;;;;;;;;11949:1;11936:15;;;;;;;;;;;;;;;;;;:19;;;:25;11933:80;;;11981:16;11989:4;11995:1;11981:7;:16::i;:::-;;11933:80;11914:3;;;;;;;11870:154;;;;12044:4;12034:14;;11797:259;;;:::o;16919:117::-;16971:19;15066:2;17003:25;;16919:117;:::o;12066:420::-;12197:12;9355:6;;;;;;;;;;;9341:20;;:10;:20;;;9319:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12270:1:::1;12249:23;;:9;:23;;;;12227:135;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12373:40;12383:10;12395:9;12406:6;12373:9;:40::i;:::-;;12424:29;12430:9;12441:6;12449:3;12424:5;:29::i;:::-;;12474:4;12464:14;;12066:420:::0;;;;;:::o;13728:80::-;13769:4;13793:7;;;;;;;;;;;13786:14;;13728:80;:::o;7814:119::-;7871:15;7909:9;:16;7919:5;7909:16;;;;;;;;;;;;;;;;7899:26;;7814:119;;;:::o;9871:130::-;9928:12;9355:6;;;;;;;;;;;9341:20;;:10;:20;;;9319:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9963:30:::1;9990:1;9963:18;:30::i;:::-;9953:40;;9871:130:::0;:::o;14377:207::-;14466:12;9355:6;;;;;;;;;;;9341:20;;:10;:20;;;9319:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14514:5:::1;14496:7;:15;14504:6;14496:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;14544:6;14535:16;;;;;;;;;;;;14572:4;14562:14;;14377:207:::0;;;:::o;13400:155::-;13459:12;9355:6;;;;;;;;;;;9341:20;;:10;:20;;;9319:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13303:7:::1;;;;;;;;;;;13302:8;13294:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13494:4:::2;13484:7;;:14;;;;;;;;;;;;;;;;;;13514:8;;;;;;;;;;13543:4;13533:14;;13400:155:::0;:::o;14199:170::-;14259:12;9355:6;;;;;;;;;;;9341:20;;:10;:20;;;9319:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14302:4:::1;14284:7;:15;14292:6;14284:15;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;14329:6;14322:14;;;;;;;;;;;;14357:4;14347:14;;14199:170:::0;;;:::o;9464:102::-;9504:20;9552:6;;;;;;;;;;;9537:21;;9464:102;:::o;16794:117::-;16844:25;16896:7;;;;;;;;;;;;;;;;;16882:21;;16794:117;:::o;15253:416::-;15450:12;15358:10;14123:7;:15;14131:6;14123:15;;;;;;;;;;;;;;;;;;;;;;;;;14122:16;14114:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13303:7:::1;;;;;;;;;;;13302:8;13294:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15412:10:::2;15424:6;10747:30;10770:6;10747:12;:18;10760:4;10747:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;10728:9;:15;10738:4;10728:15;;;;;;;;;;;;;;;;:49;;10720:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15516:1:::3;15502:16;;:2;:16;;;;15480:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15603:33;15613:10;15625:2;15629:6;15603:9;:33::i;:::-;;15657:4;15647:14;;13383:1:::2;;15253:416:::0;;;;;:::o;12494:252::-;12593:14;12609:11;12638:20;;:::i;:::-;12661:6;:14;12668:6;12661:14;;;;;;;;;;;;;;;12676:5;12661:21;;;;;;;;;;;;;;;;;;12638:44;;;;;;;;;;;;;;;;;;;;;;;;;;;12702:4;:11;;;12693:20;;12730:4;:8;;;12724:14;;12494:252;;;;;;:::o;12754:179::-;12813:14;12829;12864:12;:20;12877:6;12864:20;;;;;;;;;;;;;;;;12855:29;;12904:6;:14;12911:6;12904:14;;;;;;;;;;;;;;;:21;;;;12895:30;;12754:179;;;:::o;7941:183::-;8042:17;8089:11;:18;8101:5;8089:18;;;;;;;;;;;;;;;:27;8108:7;8089:27;;;;;;;;;;;;;;;;8077:39;;7941:183;;;;:::o;14592:143::-;14676:11;14712:7;:15;14720:6;14712:15;;;;;;;;;;;;;;;;;;;;;;;;;14705:22;;14592:143;;;:::o;9574:289::-;9672:12;9355:6;;;;;;;;;;;9341:20;;:10;:20;;;9319:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9730:1:::1;9710:22;;:8;:22;;;;9702:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9827:28;9846:8;9827:18;:28::i;:::-;9817:38;;9574:289:::0;;;:::o;13563:157::-;13621:12;9355:6;;;;;;;;;;;9341:20;;:10;:20;;;9319:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13165:7:::1;;;;;;;;;;;13157:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13656:5:::2;13646:7;;:15;;;;;;;;;;;;;;;;;;13677:10;;;;;;;;;;13708:4;13698:14;;13563:157:::0;:::o;902:181::-;960:7;980:9;996:1;992;:5;980:17;;1021:1;1016;:6;;1008:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1074:1;1067:8;;;902:181;;;;:::o;6571:249::-;6673:12;6733:6;6703:11;:18;6715:5;6703:18;;;;;;;;;;;;;;;:27;6722:7;6703:27;;;;;;;;;;;;;;;:36;;;;6771:7;6755:32;;6764:5;6755:32;;;6780:6;6755:32;;;;;;;;;;;;;;;;;;6808:4;6798:14;;6571:249;;;;;:::o;6161:402::-;6258:12;6306:130;6340:6;6306:130;;;;;;;;;;;;;;;;;:9;:15;6316:4;6306:15;;;;;;;;;;;;;;;;:19;;:130;;;;;:::i;:::-;6288:9;:15;6298:4;6288:15;;;;;;;;;;;;;;;:148;;;;6463:25;6481:6;6463:9;:13;6473:2;6463:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;6447:9;:13;6457:2;6447:13;;;;;;;;;;;;;;;:41;;;;6519:2;6504:26;;6513:4;6504:26;;;6523:6;6504:26;;;;;;;;;;;;;;;;;;6551:4;6541:14;;6161:402;;;;;:::o;1831:224::-;1944:7;1982:1;1977;:6;;1985:12;1969:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2009:9;2025:1;2021;:5;2009:17;;2046:1;2039:8;;;1831:224;;;;;:::o;11417:372::-;11481:12;11506:21;11530:6;:12;11537:4;11530:12;;;;;;;;;;;;;;;11543:5;11530:19;;;;;;;;;;;;;;;;;;11506:43;;11581:35;11604:4;:11;;;11581:12;:18;11594:4;11581:18;;;;;;;;;;;;;;;;:22;;:35;;;;:::i;:::-;11560:12;:18;11573:4;11560:18;;;;;;;;;;;;;;;:56;;;;11639:4;11632:25;;;11645:4;:11;;;11632:25;;;;;;;;;;;;;;;;;;11690:6;:12;11697:4;11690:12;;;;;;;;;;;;;;;11725:1;11703:6;:12;11710:4;11703:12;;;;;;;;;;;;;;;:19;;;;:23;11690:37;;;;;;;;;;;;;;;;;;11668:6;:12;11675:4;11668:12;;;;;;;;;;;;;;;11681:5;11668:19;;;;;;;;;;;;;;;;;;:59;;;;;;;;;;;;;;;;;;;11738:6;:12;11745:4;11738:12;;;;;;;;;;;;;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11777:4;11767:14;;11417:372;;;;;:::o;10861:548::-;10955:12;10999:3;10993;:9;10985:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11102:30;11113:12;:18;11126:4;11113:18;;;;;;;;;;;;;;;;11102:6;:10;;:30;;;;:::i;:::-;11083:9;:15;11093:4;11083:15;;;;;;;;;;;;;;;;:49;;11061:163;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11256:30;11279:6;11256:12;:18;11269:4;11256:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;11235:12;:18;11248:4;11235:18;;;;;;;;;;;;;;;:51;;;;11297:6;:12;11304:4;11297:12;;;;;;;;;;;;;;;11315:21;;;;;;;;11324:6;11315:21;;;;11332:3;11315:21;;;11297:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11358:4;11353:23;;;11364:6;11372:3;11353:23;;;;;;;;;;;;;;;;;;;;;;;;11397:4;11387:14;;10861:548;;;;;:::o;10009:193::-;10073:12;10132:8;10103:38;;10124:6;;;;;;;;;;;10103:38;;;;;;;;;;;;10161:8;10152:6;;:17;;;;;;;;;;;;;;;;;;10190:4;10180:14;;10009:193;;;:::o;1358:136::-;1416:7;1443:43;1447:1;1450;1443:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1436:50;;1358:136;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

ipfs://2ce3e82ab62c0f10ebb11837381a354855405c912588998930a6fb9007264de8
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.