ETH Price: $2,519.78 (+2.40%)

Token

HilkCoin (HILK)
 

Overview

Max Total Supply

2,000,000,000 HILK

Holders

13

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 16 Decimals)

Balance
45,279,260 HILK

Value
$0.00
0xa15d205337cc4c10cf00350eb92a5fb362b359d2
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:
HilkCoin

Compiler Version
v0.5.11+commit.c082d0b4

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-06-10
*/

pragma solidity ^0.5.11;

interface IERC20 {
    event Transfer(address indexed _from, address indexed _to, uint256 _value);
    event Approval(address indexed _owner, address indexed _spender, uint256 _value);

    function transfer(address _to, uint256 _value) external returns (bool);
    function transferFrom(address _from, address _to, uint256 _value) external returns (bool);
    function approve(address _spender, uint256 _value) external returns (bool);
    function balanceOf(address _target) external view returns (uint256);
    function allowance(address _target, address _spender) external view returns (uint256);
}

// File: contracts/Interface/IMint.sol

pragma solidity ^0.5.11;

interface IMint {
    function mint(uint256 _value) external returns (bool);
    function finishMint() external returns (bool);
}

// File: contracts/Interface/IBurn.sol

pragma solidity ^0.5.11;

interface IBurn {
    function burn(uint256 _value) external returns(bool);
}

// File: contracts/Library/Ownable.sol

pragma solidity ^0.5.11;

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
contract Ownable {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() internal {
        _owner = msg.sender;
        emit OwnershipTransferred(address(0), _owner);
    }

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(isOwner(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Returns true if the caller is the current owner.
     */
    function isOwner() public view returns (bool) {
        return msg.sender == _owner;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() external onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) external onlyOwner {
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     */
    function _transferOwnership(address newOwner) internal {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

// File: contracts/Library/SafeMath.sol

pragma solidity ^0.5.11;

/**
 * @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/Library/Freezer.sol

pragma solidity ^0.5.11;

contract Freezer is Ownable {
    event Freezed(address dsc);
    event Unfreezed(address dsc);

    mapping(address => bool) public freezing;

    modifier isFreezed(address src) {
        require(freezing[src] == false, "Freeze/Fronzen-Account");
        _;
    }

    /**
    * @notice The Freeze function sets the transfer limit
    * for a specific address.
    * @param dsc address The specify address want to limit the transfer.
    */
    function freeze(address dsc) external onlyOwner {
        require(dsc != address(0), "Freeze/Zero-Address");
        require(freezing[dsc] == false, "Freeze/Already-Freezed");

        freezing[dsc] = true;

        emit Freezed(dsc);
    }

    /**
    * @notice The Freeze function removes the transfer limit
    * for a specific address.
    * @param dsc address The specify address want to remove the transfer.
    */
    function unFreeze(address dsc) external onlyOwner {
        require(freezing[dsc] == true, "Freeze/Already-Unfreezed");

        delete freezing[dsc];

        emit Unfreezed(dsc);
    }
}

// File: contracts/Library/Pauser.sol

pragma solidity ^0.5.11;

contract Pauser is Ownable {
    event Pause(address pauser);
    event Resume(address resumer);

    bool public pausing;

    modifier isPause() {
        require(pausing == false, "Pause/Pause-Functionality");
        _;
    }

    function pause() external onlyOwner {
        require(pausing == false, "Pause/Already-Pausing");

        pausing = true;

        emit Pause(msg.sender);
    }

    function resume() external onlyOwner {
        require(pausing == true, "Pause/Already-Resuming");

        pausing = false;

        emit Resume(msg.sender);
    }
}

// File: contracts/Library/Locker.sol

pragma solidity ^0.5.11;




contract Locker is Ownable {
    event LockedUp(address target, uint256 value);

    using SafeMath for uint256;

    mapping(address => uint256) public lockup;

    modifier isLockup(address _target, uint256 _value) {
        uint256 balance = IERC20(address(this)).balanceOf(_target);
        require(
            balance.sub(_value, "Locker/Underflow-Value") >= lockup[_target],
            "Locker/Impossible-Over-Lockup"
        );
        _;
    }

    function lock(address target, uint256 value) internal onlyOwner returns (bool) {
        lockup[target] = lockup[target].add(value);
        emit LockedUp(target, lockup[target]);
    }

    function decreaseLockup(address target, uint256 value) external onlyOwner returns (bool) {
        require(lockup[target] > 0, "Locker/Not-Lockedup");

        lockup[target] = lockup[target].sub(value, "Locker/Impossible-Underflow");

        emit LockedUp(target, lockup[target]);
    }

    function deleteLockup(address target) external onlyOwner returns (bool) {
        require(lockup[target] > 0, "Locker/Not-Lockedup");

        delete lockup[target];

        emit LockedUp(target, 0);
    }
}

// File: contracts/Library/Minter.sol

pragma solidity ^0.5.11;



contract Minter is Ownable {
    event Finished();

    bool public minting;

    modifier isMinting() {
        require(minting == true, "Minter/Finish-Minting");
        _;
    }

    constructor() public {
        minting = true;
    }

    function finishMint() external onlyOwner returns (bool) {
        require(minting == true, "Minter/Already-Finish");

        minting = false;

        emit Finished();

        return true;
    }
}

// File: contracts/HilkCoin.sol

pragma solidity ^0.5.11;










/**
 * @title HilkCoin
 * @notice The contract implements the ERC20 specification of HilkCoin. It implements "Mint"
 * and "Burn" functions incidentally. "Mint" can only be called by the Owner of the
 * corresponding Contract, and "Burn" can be called by any Token owner. Owner of the
 * contract can use "Pauser" to stop working, "Freezer" to freeze accounts and "Locker"
 * to maintain Token minimum balance for some owners.
 */
contract HilkCoin is IERC20, IMint, IBurn, Ownable, Freezer, Pauser, Locker, Minter {
    using SafeMath for uint256;

    string public constant name = "HilkCoin";
    string public constant symbol = "HILK";
    uint8 public constant decimals = 16;
    uint256 public totalSupply = 2000000000;

    mapping(address => uint256) private balances;
    mapping(address => mapping(address => uint256)) private approved;

    constructor() public Minter() {
        totalSupply = totalSupply.mul(10**uint256(decimals));
        balances[msg.sender] = totalSupply;
    }

    function transfer(address to, uint256 value)
        external
        isFreezed(msg.sender)
        isLockup(msg.sender, value)
        isPause
        returns (bool)
    {
        require(to != address(0), "HilkCoin/Not-Allow-Zero-Address");

        balances[msg.sender] = balances[msg.sender].sub(value);
        balances[to] = balances[to].add(value);

        emit Transfer(msg.sender, to, value);

        return true;
    }

    function transferWithLockup(address to, uint256 value)
        external
        onlyOwner
        isLockup(msg.sender, value)
        isPause
        returns (bool)
    {
        require(to != address(0), "HilkCoin/Not-Allow-Zero-Address");

        balances[msg.sender] = balances[msg.sender].sub(value);
        balances[to] = balances[to].add(value);

        lock(to, value);

        emit Transfer(msg.sender, to, value);

        return true;
    }

    function transferFrom(address from, address to, uint256 value)
        external
        isFreezed(from)
        isLockup(from, value)
        isPause
        returns (bool)
    {
        require(from != address(0), "HilkCoin/Not-Allow-Zero-Address");
        require(to != address(0), "HilkCoin/Not-Allow-Zero-Address");

        balances[from] = balances[from].sub(value);
        balances[to] = balances[to].add(value);
        approved[from][msg.sender] = approved[from][msg.sender].sub(value);

        emit Transfer(from, to, value);

        return true;
    }

    function mint(uint256 value) external isMinting onlyOwner isPause returns (bool) {
        totalSupply = totalSupply.add(value);
        balances[msg.sender] = balances[msg.sender].add(value);

        emit Transfer(address(0), msg.sender, value);

        return true;
    }

    function burn(uint256 value) external isPause returns (bool) {
        require(value <= balances[msg.sender], "HilkCoin/Not-Allow-Unvalued-Burn");

        balances[msg.sender] = balances[msg.sender].sub(value);
        totalSupply = totalSupply.sub(value);

        emit Transfer(msg.sender, address(0), value);

        return true;
    }

    function approve(address spender, uint256 value) external isPause returns (bool) {
        require(spender != address(0), "HilkCoin/Not-Allow-Zero-Address");
        approved[msg.sender][spender] = value;
        emit Approval(msg.sender, spender, value);

        return true;
    }

    function balanceOf(address target) external view returns (uint256) {
        return balances[target];
    }

    function allowance(address target, address spender) external view returns (uint256) {
        return approved[target][spender];
    }
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[],"name":"resume","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lockup","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"freezing","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"pausing","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"decreaseLockup","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"minting","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"dsc","type":"address"}],"name":"unFreeze","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferWithLockup","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"dsc","type":"address"}],"name":"freeze","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"mint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"deleteLockup","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"finishMint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[],"name":"Finished","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"LockedUp","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"pauser","type":"address"}],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"resumer","type":"address"}],"name":"Resume","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"dsc","type":"address"}],"name":"Freezed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"dsc","type":"address"}],"name":"Unfreezed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Approval","type":"event"}]

608060405263773594006005553480156200001957600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36001600460006101000a81548160ff02191690831515021790555062000114601060ff16600a0a6005546200016660201b620037bf1790919060201c565b600581905550600554600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620001f1565b6000808314156200017b5760009050620001eb565b60008284029050828482816200018d57fe5b0414620001e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018062003ac26021913960400191505060405180910390fd5b809150505b92915050565b6138c180620002016000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c80637dc2268c116100f957806395d89b4111610097578063c0f75e3d11610071578063c0f75e3d14610802578063dd62ed3e1461085e578063e4cc18be146108d6578063f2fde38b146108f8576101a9565b806395d89b41146106d3578063a0712d6814610756578063a9059cbb1461079c576101a9565b80638ac41193116100d35780638ac41193146105bd5780638d1fdf2f146106235780638da5cb5b146106675780638f32d59b146106b1576101a9565b80637dc2268c1461054d57806383cfab421461056f5780638456cb59146105b3576101a9565b806323b872dd11610166578063313ce56711610140578063313ce5671461048157806342966c68146104a557806370a08231146104eb578063715018a614610543576101a9565b806323b872dd146103735780632a07a0bf146103f9578063305208a41461041b576101a9565b8063046f7da2146101ae57806306fdde03146101b8578063095ea7b31461023b5780630df19d35146102a15780631576c3d8146102f957806318160ddd14610355575b600080fd5b6101b661093c565b005b6101c0610abf565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102005780820151818401526020810190506101e5565b50505050905090810190601f16801561022d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102876004803603604081101561025157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610af8565b604051808215151515815260200191505060405180910390f35b6102e3600480360360208110156102b757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d15565b6040518082815260200191505060405180910390f35b61033b6004803603602081101561030f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d2d565b604051808215151515815260200191505060405180910390f35b61035d610d4d565b6040518082815260200191505060405180910390f35b6103df6004803603606081101561038957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d53565b604051808215151515815260200191505060405180910390f35b610401611454565b604051808215151515815260200191505060405180910390f35b6104676004803603604081101561043157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611467565b604051808215151515815260200191505060405180910390f35b610489611714565b604051808260ff1660ff16815260200191505060405180910390f35b6104d1600480360360208110156104bb57600080fd5b8101908080359060200190929190505050611719565b604051808215151515815260200191505060405180910390f35b61052d6004803603602081101561050157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611977565b6040518082815260200191505060405180910390f35b61054b6119c0565b005b610555611af9565b604051808215151515815260200191505060405180910390f35b6105b16004803603602081101561058557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b0c565b005b6105bb611d01565b005b610609600480360360408110156105d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e84565b604051808215151515815260200191505060405180910390f35b6106656004803603602081101561063957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061238f565b005b61066f61262f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106b9612658565b604051808215151515815260200191505060405180910390f35b6106db6126af565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561071b578082015181840152602081019050610700565b50505050905090810190601f1680156107485780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6107826004803603602081101561076c57600080fd5b81019080803590602001909291905050506126e8565b604051808215151515815260200191505060405180910390f35b6107e8600480360360408110156107b257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612995565b604051808215151515815260200191505060405180910390f35b6108446004803603602081101561081857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612ee3565b604051808215151515815260200191505060405180910390f35b6108c06004803603604081101561087457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506130c8565b6040518082815260200191505060405180910390f35b6108de61314f565b604051808215151515815260200191505060405180910390f35b61093a6004803603602081101561090e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506132a2565b005b610944612658565b6109b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60011515600260009054906101000a900460ff16151514610a3f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f50617573652f416c72656164792d526573756d696e670000000000000000000081525060200191505060405180910390fd5b6000600260006101000a81548160ff0219169083151502179055507fdc5393690c6579b944c67b47465cff82c4f93733768919fe80c29ef57717776333604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6040518060400160405280600881526020017f48696c6b436f696e00000000000000000000000000000000000000000000000081525081565b6000801515600260009054906101000a900460ff16151514610b82576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f50617573652f50617573652d46756e6374696f6e616c6974790000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f48696c6b436f696e2f4e6f742d416c6c6f772d5a65726f2d416464726573730081525060200191505060405180910390fd5b81600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60036020528060005260406000206000915090505481565b60016020528060005260406000206000915054906101000a900460ff1681565b60055481565b60008360001515600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610e1c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f467265657a652f46726f6e7a656e2d4163636f756e740000000000000000000081525060200191505060405180910390fd5b848360003073ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610e9d57600080fd5b505afa158015610eb1573d6000803e3d6000fd5b505050506040513d6020811015610ec757600080fd5b81019080805190602001909291905050509050600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f64836040518060400160405280601681526020017f4c6f636b65722f556e646572666c6f772d56616c756500000000000000000000815250846133289092919063ffffffff16565b1015610fd8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4c6f636b65722f496d706f737369626c652d4f7665722d4c6f636b757000000081525060200191505060405180910390fd5b60001515600260009054906101000a900460ff16151514611061576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f50617573652f50617573652d46756e6374696f6e616c6974790000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161415611104576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f48696c6b436f696e2f4e6f742d416c6c6f772d5a65726f2d416464726573730081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614156111a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f48696c6b436f696e2f4e6f742d416c6c6f772d5a65726f2d416464726573730081525060200191505060405180910390fd5b6111f986600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133e890919063ffffffff16565b600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061128e86600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461343290919063ffffffff16565b600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061136086600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133e890919063ffffffff16565b600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef886040518082815260200191505060405180910390a360019450505050509392505050565b600260009054906101000a900460ff1681565b6000611471612658565b6114e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411611598576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4c6f636b65722f4e6f742d4c6f636b656475700000000000000000000000000081525060200191505060405180910390fd5b611621826040518060400160405280601b81526020017f4c6f636b65722f496d706f737369626c652d556e646572666c6f770000000000815250600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133289092919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507fdf72d37adc3f256068f06daa37fec845a1b3b4dadc14a62dd3e89252387be0ef83600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a192915050565b601081565b6000801515600260009054906101000a900460ff161515146117a3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f50617573652f50617573652d46756e6374696f6e616c6974790000000000000081525060200191505060405180910390fd5b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115611858576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f48696c6b436f696e2f4e6f742d416c6c6f772d556e76616c7565642d4275726e81525060200191505060405180910390fd5b6118aa82600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133e890919063ffffffff16565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611902826005546133e890919063ffffffff16565b600581905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050919050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6119c8612658565b611a3a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600460009054906101000a900460ff1681565b611b14612658565b611b86576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60011515600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514611c4c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f467265657a652f416c72656164792d556e667265657a6564000000000000000081525060200191505060405180910390fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690557f4d1fe3cc0f516ce2cfc5e83d52ee28af7f55376b18f58e7081c5fd25d8eeb1df81604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b611d09612658565b611d7b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60001515600260009054906101000a900460ff16151514611e04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f50617573652f416c72656164792d50617573696e67000000000000000000000081525060200191505060405180910390fd5b6001600260006101000a81548160ff0219169083151502179055507f5ee71a369c8672edded508e624ffc9257fa1ae6886ef32905c18e60196bca39933604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6000611e8e612658565b611f00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b338260003073ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611f8157600080fd5b505afa158015611f95573d6000803e3d6000fd5b505050506040513d6020811015611fab57600080fd5b81019080805190602001909291905050509050600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612048836040518060400160405280601681526020017f4c6f636b65722f556e646572666c6f772d56616c756500000000000000000000815250846133289092919063ffffffff16565b10156120bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4c6f636b65722f496d706f737369626c652d4f7665722d4c6f636b757000000081525060200191505060405180910390fd5b60001515600260009054906101000a900460ff16151514612145576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f50617573652f50617573652d46756e6374696f6e616c6974790000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614156121e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f48696c6b436f696e2f4e6f742d416c6c6f772d5a65726f2d416464726573730081525060200191505060405180910390fd5b61223a85600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133e890919063ffffffff16565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122cf85600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461343290919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061231c86866134ba565b508573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a36001935050505092915050565b612397612658565b612409576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156124ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f467265657a652f5a65726f2d416464726573730000000000000000000000000081525060200191505060405180910390fd5b60001515600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514612572576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f467265657a652f416c72656164792d467265657a65640000000000000000000081525060200191505060405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f0de8364a528e5ca2869160b20c375fe85b4e98d24a9cb48b4dc49c5f76d05b2481604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b6040518060400160405280600481526020017f48494c4b0000000000000000000000000000000000000000000000000000000081525081565b600060011515600460009054906101000a900460ff16151514612773576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4d696e7465722f46696e6973682d4d696e74696e67000000000000000000000081525060200191505060405180910390fd5b61277b612658565b6127ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60001515600260009054906101000a900460ff16151514612876576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f50617573652f50617573652d46756e6374696f6e616c6974790000000000000081525060200191505060405180910390fd5b61288b8260055461343290919063ffffffff16565b6005819055506128e382600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461343290919063ffffffff16565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050919050565b60003360001515600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514612a5e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f467265657a652f46726f6e7a656e2d4163636f756e740000000000000000000081525060200191505060405180910390fd5b338360003073ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612adf57600080fd5b505afa158015612af3573d6000803e3d6000fd5b505050506040513d6020811015612b0957600080fd5b81019080805190602001909291905050509050600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ba6836040518060400160405280601681526020017f4c6f636b65722f556e646572666c6f772d56616c756500000000000000000000815250846133289092919063ffffffff16565b1015612c1a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4c6f636b65722f496d706f737369626c652d4f7665722d4c6f636b757000000081525060200191505060405180910390fd5b60001515600260009054906101000a900460ff16151514612ca3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f50617573652f50617573652d46756e6374696f6e616c6974790000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161415612d46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f48696c6b436f696e2f4e6f742d416c6c6f772d5a65726f2d416464726573730081525060200191505060405180910390fd5b612d9886600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133e890919063ffffffff16565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612e2d86600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461343290919063ffffffff16565b600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef886040518082815260200191505060405180910390a3600194505050505092915050565b6000612eed612658565b612f5f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411613014576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4c6f636b65722f4e6f742d4c6f636b656475700000000000000000000000000081525060200191505060405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600090557fdf72d37adc3f256068f06daa37fec845a1b3b4dadc14a62dd3e89252387be0ef826000604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1919050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000613159612658565b6131cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60011515600460009054906101000a900460ff16151514613254576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4d696e7465722f416c72656164792d46696e697368000000000000000000000081525060200191505060405180910390fd5b6000600460006101000a81548160ff0219169083151502179055507f1578538d7847a99e818f068c208cae026fdafea1610a44858adeff8dc70aeb2b60405160405180910390a16001905090565b6132aa612658565b61331c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6133258161367b565b50565b60008383111582906133d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561339a57808201518184015260208101905061337f565b50505050905090810190601f1680156133c75780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600061342a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613328565b905092915050565b6000808284019050838110156134b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60006134c4612658565b613536576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b61358882600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461343290919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507fdf72d37adc3f256068f06daa37fec845a1b3b4dadc14a62dd3e89252387be0ef83600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a192915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415613701576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806138466026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808314156137d2576000905061383f565b60008284029050828482816137e357fe5b041461383a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061386c6021913960400191505060405180910390fd5b809150505b9291505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a265627a7a72315820c272be5d04e32b7a62f7536dce29670cbdc4f51d909738b0fbb12a271ac8f3d164736f6c634300050b0032536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101a95760003560e01c80637dc2268c116100f957806395d89b4111610097578063c0f75e3d11610071578063c0f75e3d14610802578063dd62ed3e1461085e578063e4cc18be146108d6578063f2fde38b146108f8576101a9565b806395d89b41146106d3578063a0712d6814610756578063a9059cbb1461079c576101a9565b80638ac41193116100d35780638ac41193146105bd5780638d1fdf2f146106235780638da5cb5b146106675780638f32d59b146106b1576101a9565b80637dc2268c1461054d57806383cfab421461056f5780638456cb59146105b3576101a9565b806323b872dd11610166578063313ce56711610140578063313ce5671461048157806342966c68146104a557806370a08231146104eb578063715018a614610543576101a9565b806323b872dd146103735780632a07a0bf146103f9578063305208a41461041b576101a9565b8063046f7da2146101ae57806306fdde03146101b8578063095ea7b31461023b5780630df19d35146102a15780631576c3d8146102f957806318160ddd14610355575b600080fd5b6101b661093c565b005b6101c0610abf565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102005780820151818401526020810190506101e5565b50505050905090810190601f16801561022d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102876004803603604081101561025157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610af8565b604051808215151515815260200191505060405180910390f35b6102e3600480360360208110156102b757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d15565b6040518082815260200191505060405180910390f35b61033b6004803603602081101561030f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d2d565b604051808215151515815260200191505060405180910390f35b61035d610d4d565b6040518082815260200191505060405180910390f35b6103df6004803603606081101561038957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d53565b604051808215151515815260200191505060405180910390f35b610401611454565b604051808215151515815260200191505060405180910390f35b6104676004803603604081101561043157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611467565b604051808215151515815260200191505060405180910390f35b610489611714565b604051808260ff1660ff16815260200191505060405180910390f35b6104d1600480360360208110156104bb57600080fd5b8101908080359060200190929190505050611719565b604051808215151515815260200191505060405180910390f35b61052d6004803603602081101561050157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611977565b6040518082815260200191505060405180910390f35b61054b6119c0565b005b610555611af9565b604051808215151515815260200191505060405180910390f35b6105b16004803603602081101561058557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b0c565b005b6105bb611d01565b005b610609600480360360408110156105d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e84565b604051808215151515815260200191505060405180910390f35b6106656004803603602081101561063957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061238f565b005b61066f61262f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106b9612658565b604051808215151515815260200191505060405180910390f35b6106db6126af565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561071b578082015181840152602081019050610700565b50505050905090810190601f1680156107485780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6107826004803603602081101561076c57600080fd5b81019080803590602001909291905050506126e8565b604051808215151515815260200191505060405180910390f35b6107e8600480360360408110156107b257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612995565b604051808215151515815260200191505060405180910390f35b6108446004803603602081101561081857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612ee3565b604051808215151515815260200191505060405180910390f35b6108c06004803603604081101561087457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506130c8565b6040518082815260200191505060405180910390f35b6108de61314f565b604051808215151515815260200191505060405180910390f35b61093a6004803603602081101561090e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506132a2565b005b610944612658565b6109b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60011515600260009054906101000a900460ff16151514610a3f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f50617573652f416c72656164792d526573756d696e670000000000000000000081525060200191505060405180910390fd5b6000600260006101000a81548160ff0219169083151502179055507fdc5393690c6579b944c67b47465cff82c4f93733768919fe80c29ef57717776333604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6040518060400160405280600881526020017f48696c6b436f696e00000000000000000000000000000000000000000000000081525081565b6000801515600260009054906101000a900460ff16151514610b82576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f50617573652f50617573652d46756e6374696f6e616c6974790000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f48696c6b436f696e2f4e6f742d416c6c6f772d5a65726f2d416464726573730081525060200191505060405180910390fd5b81600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60036020528060005260406000206000915090505481565b60016020528060005260406000206000915054906101000a900460ff1681565b60055481565b60008360001515600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610e1c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f467265657a652f46726f6e7a656e2d4163636f756e740000000000000000000081525060200191505060405180910390fd5b848360003073ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610e9d57600080fd5b505afa158015610eb1573d6000803e3d6000fd5b505050506040513d6020811015610ec757600080fd5b81019080805190602001909291905050509050600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f64836040518060400160405280601681526020017f4c6f636b65722f556e646572666c6f772d56616c756500000000000000000000815250846133289092919063ffffffff16565b1015610fd8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4c6f636b65722f496d706f737369626c652d4f7665722d4c6f636b757000000081525060200191505060405180910390fd5b60001515600260009054906101000a900460ff16151514611061576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f50617573652f50617573652d46756e6374696f6e616c6974790000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161415611104576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f48696c6b436f696e2f4e6f742d416c6c6f772d5a65726f2d416464726573730081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614156111a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f48696c6b436f696e2f4e6f742d416c6c6f772d5a65726f2d416464726573730081525060200191505060405180910390fd5b6111f986600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133e890919063ffffffff16565b600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061128e86600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461343290919063ffffffff16565b600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061136086600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133e890919063ffffffff16565b600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef886040518082815260200191505060405180910390a360019450505050509392505050565b600260009054906101000a900460ff1681565b6000611471612658565b6114e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411611598576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4c6f636b65722f4e6f742d4c6f636b656475700000000000000000000000000081525060200191505060405180910390fd5b611621826040518060400160405280601b81526020017f4c6f636b65722f496d706f737369626c652d556e646572666c6f770000000000815250600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133289092919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507fdf72d37adc3f256068f06daa37fec845a1b3b4dadc14a62dd3e89252387be0ef83600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a192915050565b601081565b6000801515600260009054906101000a900460ff161515146117a3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f50617573652f50617573652d46756e6374696f6e616c6974790000000000000081525060200191505060405180910390fd5b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115611858576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f48696c6b436f696e2f4e6f742d416c6c6f772d556e76616c7565642d4275726e81525060200191505060405180910390fd5b6118aa82600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133e890919063ffffffff16565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611902826005546133e890919063ffffffff16565b600581905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050919050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6119c8612658565b611a3a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600460009054906101000a900460ff1681565b611b14612658565b611b86576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60011515600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514611c4c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f467265657a652f416c72656164792d556e667265657a6564000000000000000081525060200191505060405180910390fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690557f4d1fe3cc0f516ce2cfc5e83d52ee28af7f55376b18f58e7081c5fd25d8eeb1df81604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b611d09612658565b611d7b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60001515600260009054906101000a900460ff16151514611e04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f50617573652f416c72656164792d50617573696e67000000000000000000000081525060200191505060405180910390fd5b6001600260006101000a81548160ff0219169083151502179055507f5ee71a369c8672edded508e624ffc9257fa1ae6886ef32905c18e60196bca39933604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6000611e8e612658565b611f00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b338260003073ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611f8157600080fd5b505afa158015611f95573d6000803e3d6000fd5b505050506040513d6020811015611fab57600080fd5b81019080805190602001909291905050509050600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612048836040518060400160405280601681526020017f4c6f636b65722f556e646572666c6f772d56616c756500000000000000000000815250846133289092919063ffffffff16565b10156120bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4c6f636b65722f496d706f737369626c652d4f7665722d4c6f636b757000000081525060200191505060405180910390fd5b60001515600260009054906101000a900460ff16151514612145576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f50617573652f50617573652d46756e6374696f6e616c6974790000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614156121e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f48696c6b436f696e2f4e6f742d416c6c6f772d5a65726f2d416464726573730081525060200191505060405180910390fd5b61223a85600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133e890919063ffffffff16565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122cf85600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461343290919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061231c86866134ba565b508573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a36001935050505092915050565b612397612658565b612409576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156124ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f467265657a652f5a65726f2d416464726573730000000000000000000000000081525060200191505060405180910390fd5b60001515600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514612572576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f467265657a652f416c72656164792d467265657a65640000000000000000000081525060200191505060405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f0de8364a528e5ca2869160b20c375fe85b4e98d24a9cb48b4dc49c5f76d05b2481604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b6040518060400160405280600481526020017f48494c4b0000000000000000000000000000000000000000000000000000000081525081565b600060011515600460009054906101000a900460ff16151514612773576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4d696e7465722f46696e6973682d4d696e74696e67000000000000000000000081525060200191505060405180910390fd5b61277b612658565b6127ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60001515600260009054906101000a900460ff16151514612876576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f50617573652f50617573652d46756e6374696f6e616c6974790000000000000081525060200191505060405180910390fd5b61288b8260055461343290919063ffffffff16565b6005819055506128e382600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461343290919063ffffffff16565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050919050565b60003360001515600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514612a5e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f467265657a652f46726f6e7a656e2d4163636f756e740000000000000000000081525060200191505060405180910390fd5b338360003073ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612adf57600080fd5b505afa158015612af3573d6000803e3d6000fd5b505050506040513d6020811015612b0957600080fd5b81019080805190602001909291905050509050600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ba6836040518060400160405280601681526020017f4c6f636b65722f556e646572666c6f772d56616c756500000000000000000000815250846133289092919063ffffffff16565b1015612c1a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4c6f636b65722f496d706f737369626c652d4f7665722d4c6f636b757000000081525060200191505060405180910390fd5b60001515600260009054906101000a900460ff16151514612ca3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f50617573652f50617573652d46756e6374696f6e616c6974790000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161415612d46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f48696c6b436f696e2f4e6f742d416c6c6f772d5a65726f2d416464726573730081525060200191505060405180910390fd5b612d9886600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133e890919063ffffffff16565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612e2d86600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461343290919063ffffffff16565b600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef886040518082815260200191505060405180910390a3600194505050505092915050565b6000612eed612658565b612f5f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411613014576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4c6f636b65722f4e6f742d4c6f636b656475700000000000000000000000000081525060200191505060405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600090557fdf72d37adc3f256068f06daa37fec845a1b3b4dadc14a62dd3e89252387be0ef826000604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1919050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000613159612658565b6131cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60011515600460009054906101000a900460ff16151514613254576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4d696e7465722f416c72656164792d46696e697368000000000000000000000081525060200191505060405180910390fd5b6000600460006101000a81548160ff0219169083151502179055507f1578538d7847a99e818f068c208cae026fdafea1610a44858adeff8dc70aeb2b60405160405180910390a16001905090565b6132aa612658565b61331c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6133258161367b565b50565b60008383111582906133d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561339a57808201518184015260208101905061337f565b50505050905090810190601f1680156133c75780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600061342a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613328565b905092915050565b6000808284019050838110156134b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60006134c4612658565b613536576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b61358882600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461343290919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507fdf72d37adc3f256068f06daa37fec845a1b3b4dadc14a62dd3e89252387be0ef83600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a192915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415613701576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806138466026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808314156137d2576000905061383f565b60008284029050828482816137e357fe5b041461383a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061386c6021913960400191505060405180910390fd5b809150505b9291505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a265627a7a72315820c272be5d04e32b7a62f7536dce29670cbdc4f51d909738b0fbb12a271ac8f3d164736f6c634300050b0032

Deployed Bytecode Sourcemap

13211:3308:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13211:3308:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10705:170;;;:::i;:::-;;13337:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;13337:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15967:289;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15967:289:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11080:41;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11080:41:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9218:40;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9218:40:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13471:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14729:583;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14729:583:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10390:19;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11628:294;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11628:294:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13429:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;15610:349;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15610:349:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;16264:109;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16264:109:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2697:142;;;:::i;:::-;;12281:19;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10016:192;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10016:192:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;10530:167;;;:::i;:::-;;14250:471;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14250:471:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9576:247;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9576:247:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;1886:81;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2254:92;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13384:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;13384:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15320:282;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15320:282:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13797:445;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13797:445:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11930:212;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11930:212:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;16381:135;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16381:135:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12480:204;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2994:111;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2994:111:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;10705:170;2100:9;:7;:9::i;:::-;2092:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10772:4;10761:15;;:7;;;;;;;;;;;:15;;;10753:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10826:5;10816:7;;:15;;;;;;;;;;;;;;;;;;10849:18;10856:10;10849:18;;;;;;;;;;;;;;;;;;;;;;10705:170::o;13337:40::-;;;;;;;;;;;;;;;;;;;:::o;15967:289::-;16042:4;10467:5;10456:16;;:7;;;;;;;;;;;:16;;;10448:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16086:1;16067:21;;:7;:21;;;;16059:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16167:5;16135:8;:20;16144:10;16135:20;;;;;;;;;;;;;;;:29;16156:7;16135:29;;;;;;;;;;;;;;;:37;;;;16209:7;16188:36;;16197:10;16188:36;;;16218:5;16188:36;;;;;;;;;;;;;;;;;;16244:4;16237:11;;15967:289;;;;:::o;11080:41::-;;;;;;;;;;;;;;;;;:::o;9218:40::-;;;;;;;;;;;;;;;;;;;;;;:::o;13471:39::-;;;;:::o;14729:583::-;14901:4;14829;9335:5;9318:22;;:8;:13;9327:3;9318:13;;;;;;;;;;;;;;;;;;;;;;;;;:22;;;9310:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14853:4;14859:5;11192:15;11225:4;11210:31;;;11242:7;11210:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11210:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11210:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11210:40:0;;;;;;;;;;;;;;;;11192:58;;11332:6;:15;11339:7;11332:15;;;;;;;;;;;;;;;;11283:45;11295:6;11283:45;;;;;;;;;;;;;;;;;:7;:11;;:45;;;;;:::i;:::-;:64;;11261:143;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10467:5;10456:16;;:7;;;;;;;;;;;:16;;;10448:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14947:1;14931:18;;:4;:18;;;;14923:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15018:1;15004:16;;:2;:16;;;;14996:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15086:25;15105:5;15086:8;:14;15095:4;15086:14;;;;;;;;;;;;;;;;:18;;:25;;;;:::i;:::-;15069:8;:14;15078:4;15069:14;;;;;;;;;;;;;;;:42;;;;15137:23;15154:5;15137:8;:12;15146:2;15137:12;;;;;;;;;;;;;;;;:16;;:23;;;;:::i;:::-;15122:8;:12;15131:2;15122:12;;;;;;;;;;;;;;;:38;;;;15200:37;15231:5;15200:8;:14;15209:4;15200:14;;;;;;;;;;;;;;;:26;15215:10;15200:26;;;;;;;;;;;;;;;;:30;;:37;;;;:::i;:::-;15171:8;:14;15180:4;15171:14;;;;;;;;;;;;;;;:26;15186:10;15171:26;;;;;;;;;;;;;;;:66;;;;15270:2;15255:25;;15264:4;15255:25;;;15274:5;15255:25;;;;;;;;;;;;;;;;;;15300:4;15293:11;;9378:1;;;14729:583;;;;;;:::o;10390:19::-;;;;;;;;;;;;;:::o;11628:294::-;11711:4;2100:9;:7;:9::i;:::-;2092:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11753:1;11736:6;:14;11743:6;11736:14;;;;;;;;;;;;;;;;:18;11728:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11808:56;11827:5;11808:56;;;;;;;;;;;;;;;;;:6;:14;11815:6;11808:14;;;;;;;;;;;;;;;;:18;;:56;;;;;:::i;:::-;11791:6;:14;11798:6;11791:14;;;;;;;;;;;;;;;:73;;;;11882:32;11891:6;11899;:14;11906:6;11899:14;;;;;;;;;;;;;;;;11882:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;11628:294;;;;:::o;13429:35::-;13462:2;13429:35;:::o;15610:349::-;15665:4;10467:5;10456:16;;:7;;;;;;;;;;;:16;;;10448:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15699:8;:20;15708:10;15699:20;;;;;;;;;;;;;;;;15690:5;:29;;15682:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15792:31;15817:5;15792:8;:20;15801:10;15792:20;;;;;;;;;;;;;;;;:24;;:31;;;;:::i;:::-;15769:8;:20;15778:10;15769:20;;;;;;;;;;;;;;;:54;;;;15848:22;15864:5;15848:11;;:15;;:22;;;;:::i;:::-;15834:11;:36;;;;15917:1;15888:39;;15897:10;15888:39;;;15921:5;15888:39;;;;;;;;;;;;;;;;;;15947:4;15940:11;;15610:349;;;:::o;16264:109::-;16322:7;16349:8;:16;16358:6;16349:16;;;;;;;;;;;;;;;;16342:23;;16264:109;;;:::o;2697:142::-;2100:9;:7;:9::i;:::-;2092:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2798:1;2761:40;;2782:6;;;;;;;;;;;2761:40;;;;;;;;;;;;2829:1;2812:6;;:19;;;;;;;;;;;;;;;;;;2697:142::o;12281:19::-;;;;;;;;;;;;;:::o;10016:192::-;2100:9;:7;:9::i;:::-;2092:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10102:4;10085:21;;:8;:13;10094:3;10085:13;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;10077:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10155:8;:13;10164:3;10155:13;;;;;;;;;;;;;;;;10148:20;;;;;;;;;;;10186:14;10196:3;10186:14;;;;;;;;;;;;;;;;;;;;;;10016:192;:::o;10530:167::-;2100:9;:7;:9::i;:::-;2092:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10596:5;10585:16;;:7;;;;;;;;;;;:16;;;10577:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10650:4;10640:7;;:14;;;;;;;;;;;;;;;;;;10672:17;10678:10;10672:17;;;;;;;;;;;;;;;;;;;;;;10530:167::o;14250:471::-;14414:4;2100:9;:7;:9::i;:::-;2092:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14360:10;14372:5;11192:15;11225:4;11210:31;;;11242:7;11210:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11210:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11210:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11210:40:0;;;;;;;;;;;;;;;;11192:58;;11332:6;:15;11339:7;11332:15;;;;;;;;;;;;;;;;11283:45;11295:6;11283:45;;;;;;;;;;;;;;;;;:7;:11;;:45;;;;;:::i;:::-;:64;;11261:143;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10467:5;10456:16;;:7;;;;;;;;;;;:16;;;10448:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14458:1;14444:16;;:2;:16;;;;14436:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14532:31;14557:5;14532:8;:20;14541:10;14532:20;;;;;;;;;;;;;;;;:24;;:31;;;;:::i;:::-;14509:8;:20;14518:10;14509:20;;;;;;;;;;;;;;;:54;;;;14589:23;14606:5;14589:8;:12;14598:2;14589:12;;;;;;;;;;;;;;;;:16;;:23;;;;:::i;:::-;14574:8;:12;14583:2;14574:12;;;;;;;;;;;;;;;:38;;;;14625:15;14630:2;14634:5;14625:4;:15::i;:::-;;14679:2;14658:31;;14667:10;14658:31;;;14683:5;14658:31;;;;;;;;;;;;;;;;;;14709:4;14702:11;;2157:1;;;14250:471;;;;:::o;9576:247::-;2100:9;:7;:9::i;:::-;2092:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9658:1;9643:17;;:3;:17;;;;9635:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9720:5;9703:22;;:8;:13;9712:3;9703:13;;;;;;;;;;;;;;;;;;;;;;;;;:22;;;9695:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9781:4;9765:8;:13;9774:3;9765:13;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;9803:12;9811:3;9803:12;;;;;;;;;;;;;;;;;;;;;;9576:247;:::o;1886:81::-;1926:7;1953:6;;;;;;;;;;;1946:13;;1886:81;:::o;2254:92::-;2294:4;2332:6;;;;;;;;;;;2318:20;;:10;:20;;;2311:27;;2254:92;:::o;13384:38::-;;;;;;;;;;;;;;;;;;;:::o;15320:282::-;15395:4;12360;12349:15;;:7;;;;;;;;;;;:15;;;12341:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2100:9;:7;:9::i;:::-;2092:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10467:5;10456:16;;:7;;;;;;;;;;;:16;;;10448:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15426:22;15442:5;15426:11;;:15;;:22;;;;:::i;:::-;15412:11;:36;;;;15482:31;15507:5;15482:8;:20;15491:10;15482:20;;;;;;;;;;;;;;;;:24;;:31;;;;:::i;:::-;15459:8;:20;15468:10;15459:20;;;;;;;;;;;;;;;:54;;;;15552:10;15531:39;;15548:1;15531:39;;;15564:5;15531:39;;;;;;;;;;;;;;;;;;15590:4;15583:11;;15320:282;;;:::o;13797:445::-;13963:4;13879:10;9335:5;9318:22;;:8;:13;9327:3;9318:13;;;;;;;;;;;;;;;;;;;;;;;;;:22;;;9310:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13909:10;13921:5;11192:15;11225:4;11210:31;;;11242:7;11210:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11210:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11210:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11210:40:0;;;;;;;;;;;;;;;;11192:58;;11332:6;:15;11339:7;11332:15;;;;;;;;;;;;;;;;11283:45;11295:6;11283:45;;;;;;;;;;;;;;;;;:7;:11;;:45;;;;;:::i;:::-;:64;;11261:143;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10467:5;10456:16;;:7;;;;;;;;;;;:16;;;10448:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14007:1;13993:16;;:2;:16;;;;13985:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14081:31;14106:5;14081:8;:20;14090:10;14081:20;;;;;;;;;;;;;;;;:24;;:31;;;;:::i;:::-;14058:8;:20;14067:10;14058:20;;;;;;;;;;;;;;;:54;;;;14138:23;14155:5;14138:8;:12;14147:2;14138:12;;;;;;;;;;;;;;;;:16;;:23;;;;:::i;:::-;14123:8;:12;14132:2;14123:12;;;;;;;;;;;;;;;:38;;;;14200:2;14179:31;;14188:10;14179:31;;;14204:5;14179:31;;;;;;;;;;;;;;;;;;14230:4;14223:11;;9378:1;;;13797:445;;;;;:::o;11930:212::-;11996:4;2100:9;:7;:9::i;:::-;2092:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12038:1;12021:6;:14;12028:6;12021:14;;;;;;;;;;;;;;;;:18;12013:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12083:6;:14;12090:6;12083:14;;;;;;;;;;;;;;;12076:21;;;12115:19;12124:6;12132:1;12115:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;11930:212;;;:::o;16381:135::-;16456:7;16483:8;:16;16492:6;16483:16;;;;;;;;;;;;;;;:25;16500:7;16483:25;;;;;;;;;;;;;;;;16476:32;;16381:135;;;;:::o;12480:204::-;12530:4;2100:9;:7;:9::i;:::-;2092:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12566:4;12555:15;;:7;;;;;;;;;;;:15;;;12547:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12619:5;12609:7;;:15;;;;;;;;;;;;;;;;;;12642:10;;;;;;;;;;12672:4;12665:11;;12480:204;:::o;2994:111::-;2100:9;:7;:9::i;:::-;2092:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3069:28;3088:8;3069:18;:28::i;:::-;2994:111;:::o;5279:224::-;5392:7;5430:1;5425;:6;;5433:12;5417:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;5417:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5457:9;5473:1;5469;:5;5457:17;;5494:1;5487:8;;;5279:224;;;;;:::o;4806:136::-;4864:7;4891:43;4895:1;4898;4891:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;4884:50;;4806:136;;;;:::o;4350:181::-;4408:7;4428:9;4444:1;4440;:5;4428:17;;4469:1;4464;:6;;4456:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4522:1;4515:8;;;4350:181;;;;:::o;11432:188::-;11505:4;2100:9;:7;:9::i;:::-;2092:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11539:25;11558:5;11539:6;:14;11546:6;11539:14;;;;;;;;;;;;;;;;:18;;:25;;;;:::i;:::-;11522:6;:14;11529:6;11522:14;;;;;;;;;;;;;;;:42;;;;11580:32;11589:6;11597;:14;11604:6;11597:14;;;;;;;;;;;;;;;;11580:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;11432:188;;;;:::o;3211:229::-;3305:1;3285:22;;:8;:22;;;;3277:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3395:8;3366:38;;3387:6;;;;;;;;;;;3366:38;;;;;;;;;;;;3424:8;3415:6;;:17;;;;;;;;;;;;;;;;;;3211:229;:::o;5754:471::-;5812:7;6062:1;6057;:6;6053:47;;;6087:1;6080:8;;;;6053:47;6112:9;6128:1;6124;:5;6112:17;;6157:1;6152;6148;:5;;;;;;:10;6140:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6216:1;6209:8;;;5754:471;;;;;:::o

Swarm Source

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