ETH Price: $3,483.02 (+0.33%)
Gas: 5 Gwei

Token

E2P (E2P)
 

Overview

Max Total Supply

5,000,000,000 E2P

Holders

563

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
ssick.eth
Balance
17,600 E2P

Value
$0.00
0xf2f5da9a4bc63f9aa77ac67f8ca2700e8218deb1
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

E2P Global will establish a consortium related to K-quarantinebrand through the participation of public trust companies.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
E2P

Compiler Version
v0.5.8+commit.23d335f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

pragma solidity 0.5.8;

// File: node_modules\openzeppelin-solidity\contracts\token\ERC20\IERC20.sol

/**
 * @dev Interface of the ERC20 standard as defined in the EIP. Does not include
 * the optional functions; to access them see `ERC20Detailed`.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a `Transfer` event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through `transferFrom`. This is
     * zero by default.
     *
     * This value changes when `approve` or `transferFrom` are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * > Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an `Approval` event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a `Transfer` event.
     */
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to `approve`. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

// File: node_modules\openzeppelin-solidity\contracts\math\SafeMath.sol

/**
 * @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) {
        require(b <= a, "SafeMath: subtraction overflow");
        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-solidity/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) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, "SafeMath: division by zero");
        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) {
        require(b != 0, "SafeMath: modulo by zero");
        return a % b;
    }
}

// File: node_modules\openzeppelin-solidity\contracts\token\ERC20\ERC20.sol

/**
 * @dev Implementation of the `IERC20` interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using `_mint`.
 * For a generic mechanism see `ERC20Mintable`.
 *
 * *For a detailed writeup see our guide [How to implement supply
 * mechanisms](https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226).*
 *
 * We have followed general OpenZeppelin guidelines: functions revert instead
 * of returning `false` on failure. This behavior is nonetheless conventional
 * and does not conflict with the expectations of ERC20 applications.
 *
 * Additionally, an `Approval` event is emitted on calls to `transferFrom`.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard `decreaseAllowance` and `increaseAllowance`
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See `IERC20.approve`.
 */
contract ERC20 is IERC20 {
    using SafeMath for uint256;

    mapping (address => uint256) internal _balances;

    mapping (address => mapping (address => uint256)) private _allowances;

    uint256 private _totalSupply;

    /**
     * @dev See `IERC20.totalSupply`.
     */
    function totalSupply() public view returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See `IERC20.balanceOf`.
     */
    function balanceOf(address account) public view returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See `IERC20.transfer`.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    /**
     * @dev See `IERC20.allowance`.
     */
    function allowance(address owner, address spender) public view returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See `IERC20.approve`.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 value) public returns (bool) {
        _approve(msg.sender, spender, value);
        return true;
    }

    /**
     * @dev See `IERC20.transferFrom`.
     *
     * Emits an `Approval` event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of `ERC20`;
     *
     * Requirements:
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `value`.
     * - the caller must have allowance for `sender`'s tokens of at least
     * `amount`.
     */
    function transferFrom(address sender, address recipient, uint256 amount) public returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount));
        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to `approve` that can be used as a mitigation for
     * problems described in `IERC20.approve`.
     *
     * Emits an `Approval` event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
        _approve(msg.sender, spender, _allowances[msg.sender][spender].add(addedValue));
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to `approve` that can be used as a mitigation for
     * problems described in `IERC20.approve`.
     *
     * Emits an `Approval` event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {
        _approve(msg.sender, spender, _allowances[msg.sender][spender].sub(subtractedValue));
        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to `transfer`, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a `Transfer` event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(address sender, address recipient, uint256 amount) internal {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _balances[sender] = _balances[sender].sub(amount);
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a `Transfer` event with `from` set to the zero address.
     *
     * Requirements
     *
     * - `to` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal {
        require(account != address(0), "ERC20: mint to the zero address");

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }

     /**
     * @dev Destoys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a `Transfer` event with `to` set to the zero address.
     *
     * Requirements
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 value) internal {
        require(account != address(0), "ERC20: burn from the zero address");

        _totalSupply = _totalSupply.sub(value);
        _balances[account] = _balances[account].sub(value);
        emit Transfer(account, address(0), value);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.
     *
     * This is internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an `Approval` event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(address owner, address spender, uint256 value) internal {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = value;
        emit Approval(owner, spender, value);
    }

    /**
     * @dev Destoys `amount` tokens from `account`.`amount` is then deducted
     * from the caller's allowance.
     *
     * See `_burn` and `_approve`.
     */
    function _burnFrom(address account, uint256 amount) internal {
        _burn(account, amount);
        _approve(account, msg.sender, _allowances[account][msg.sender].sub(amount));
    }
}

// File: J\contracts\E2P.sol

contract E2P is ERC20 {
    string public constant name = "E2P"; 
    string public constant symbol = "E2P"; 
    uint8 public constant decimals = 18; 
    uint256 public constant initialSupply = 5000000000 * (10 ** uint256(decimals));
    
    constructor() public {
        super._mint(msg.sender, initialSupply);
        owner = msg.sender;
    }

    //ownership
    address public owner;

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

    modifier onlyOwner() {
        require(msg.sender == owner, "Not owner");
        _;
    }

  /**
   * @dev Allows the current owner to relinquish control of the contract.
   * @notice Renouncing to ownership will leave the contract without an owner.
   * It will not be possible to call the functions with the `onlyOwner`
   * modifier anymore.
   */
    function renounceOwnership() public onlyOwner {
        emit OwnershipRenounced(owner);
        owner = address(0);
    }

  /**
   * @dev Allows the current owner to transfer control of the contract to a newOwner.
   * @param _newOwner The address to transfer ownership to.
   */
    function transferOwnership(address _newOwner) public onlyOwner {
        _transferOwnership(_newOwner);
    }

  /**
   * @dev Transfers control of the contract to a newOwner.
   * @param _newOwner The address to transfer ownership to.
   */
    function _transferOwnership(address _newOwner) internal {
        require(_newOwner != address(0), "Already owner");
        emit OwnershipTransferred(owner, _newOwner);
        owner = _newOwner;
    }

    //pausable
    event Pause();
    event Unpause();

    bool public paused = false;
    
    /**
    * @dev Modifier to make a function callable only when the contract is not paused.
    */
    modifier whenNotPaused() {
        require(!paused, "Paused by owner");
        _;
    }

    /**
    * @dev Modifier to make a function callable only when the contract is paused.
    */
    modifier whenPaused() {
        require(paused, "Not paused now");
        _;
    }

    /**
    * @dev called by the owner to pause, triggers stopped state
    */
    function pause() public onlyOwner whenNotPaused {
        paused = true;
        emit Pause();
    }

    /**
    * @dev called by the owner to unpause, returns to normal state
    */
    function unpause() public onlyOwner whenPaused {
        paused = false;
        emit Unpause();
    }

    //freezable
    event Frozen(address target);
    event Unfrozen(address target);

    mapping(address => bool) internal freezes;

    modifier whenNotFrozen() {
        require(!freezes[msg.sender], "Sender account is locked.");
        _;
    }

    function freeze(address _target) public onlyOwner {
        freezes[_target] = true;
        emit Frozen(_target);
    }

    function unfreeze(address _target) public onlyOwner {
        freezes[_target] = false;
        emit Unfrozen(_target);
    }

    function isFrozen(address _target) public view returns (bool) {
        return freezes[_target];
    }

    function transfer(
        address _to,
        uint256 _value
    )
      public
      whenNotFrozen
      whenNotPaused
      returns (bool)
    {
        releaseLock(msg.sender);
        return super.transfer(_to, _value);
    }

    function transferFrom(
        address _from,
        address _to,
        uint256 _value
    )
      public
      whenNotPaused
      returns (bool)
    {
        require(!freezes[_from], "From account is locked.");
        releaseLock(_from);
        return super.transferFrom(_from, _to, _value);
    }

    //mintable
    event Mint(address indexed to, uint256 amount);

    function mint(
        address _to,
        uint256 _amount
    )
      public
      onlyOwner
      returns (bool)
    {
        super._mint(_to, _amount);
        emit Mint(_to, _amount);
        return true;
    }

    //burnable
    event Burn(address indexed burner, uint256 value);

    function burn(address _who, uint256 _value) public onlyOwner {
        require(_value <= super.balanceOf(_who), "Balance is too small.");

        _burn(_who, _value);
        emit Burn(_who, _value);
    }

    //lockable
    struct LockInfo {
        uint256 releaseTime;
        uint256 balance;
    }
    mapping(address => LockInfo[]) internal lockInfo;

    event Lock(address indexed holder, uint256 value, uint256 releaseTime);
    event Unlock(address indexed holder, uint256 value);

    function balanceOf(address _holder) public view returns (uint256 balance) {
        uint256 lockedBalance = 0;
        for(uint256 i = 0; i < lockInfo[_holder].length ; i++ ) {
            lockedBalance = lockedBalance.add(lockInfo[_holder][i].balance);
        }
        return super.balanceOf(_holder).add(lockedBalance);
    }

    function releaseLock(address _holder) internal {

        for(uint256 i = 0; i < lockInfo[_holder].length ; i++ ) {
            if (lockInfo[_holder][i].releaseTime <= now) {
                _balances[_holder] = _balances[_holder].add(lockInfo[_holder][i].balance);
                emit Unlock(_holder, lockInfo[_holder][i].balance);
                lockInfo[_holder][i].balance = 0;

                if (i != lockInfo[_holder].length - 1) {
                    lockInfo[_holder][i] = lockInfo[_holder][lockInfo[_holder].length - 1];
                    i--;
                }
                lockInfo[_holder].length--;

            }
        }
    }
    function lockCount(address _holder) public view returns (uint256) {
        return lockInfo[_holder].length;
    }
    function lockState(address _holder, uint256 _idx) public view returns (uint256, uint256) {
        return (lockInfo[_holder][_idx].releaseTime, lockInfo[_holder][_idx].balance);
    }

    function lock(address _holder, uint256 _amount, uint256 _releaseTime) public onlyOwner {
        require(super.balanceOf(_holder) >= _amount, "Balance is too small.");
        _balances[_holder] = _balances[_holder].sub(_amount);
        lockInfo[_holder].push(
            LockInfo(_releaseTime, _amount)
        );
        emit Lock(_holder, _amount, _releaseTime);
    }

    function lockAfter(address _holder, uint256 _amount, uint256 _afterTime) public onlyOwner {
        require(super.balanceOf(_holder) >= _amount, "Balance is too small.");
        _balances[_holder] = _balances[_holder].sub(_amount);
        lockInfo[_holder].push(
            LockInfo(now + _afterTime, _amount)
        );
        emit Lock(_holder, _amount, now + _afterTime);
    }

    function unlock(address _holder, uint256 i) public onlyOwner {
        require(i < lockInfo[_holder].length, "No lock information.");

        _balances[_holder] = _balances[_holder].add(lockInfo[_holder][i].balance);
        emit Unlock(_holder, lockInfo[_holder][i].balance);
        lockInfo[_holder][i].balance = 0;

        if (i != lockInfo[_holder].length - 1) {
            lockInfo[_holder][i] = lockInfo[_holder][lockInfo[_holder].length - 1];
        }
        lockInfo[_holder].length--;
    }

    function transferWithLock(address _to, uint256 _value, uint256 _releaseTime) public onlyOwner returns (bool) {
        require(_to != address(0), "wrong address");
        require(_value <= super.balanceOf(owner), "Not enough balance");

        _balances[owner] = _balances[owner].sub(_value);
        lockInfo[_to].push(
            LockInfo(_releaseTime, _value)
        );
        emit Transfer(owner, _to, _value);
        emit Lock(_to, _value, _releaseTime);

        return true;
    }

    function transferWithLockAfter(address _to, uint256 _value, uint256 _afterTime) public onlyOwner returns (bool) {
        require(_to != address(0), "wrong address");
        require(_value <= super.balanceOf(owner), "Not enough balance");

        _balances[owner] = _balances[owner].sub(_value);
        lockInfo[_to].push(
            LockInfo(now + _afterTime, _value)
        );
        emit Transfer(owner, _to, _value);
        emit Lock(_to, _value, now + _afterTime);

        return true;
    }

    function currentTime() public view returns (uint256) {
        return now;
    }

    function afterTime(uint256 _value) public view returns (uint256) {
        return now + _value;
    }

    //airdrop
    mapping (address => uint256) public airDropHistory;
    event AirDrop(address _receiver, uint256 _amount);

    function dropToken(address[] memory receivers, uint256[] memory values) onlyOwner public {
    require(receivers.length != 0);
    require(receivers.length == values.length);

    for (uint256 i = 0; i < receivers.length; i++) {
      address receiver = receivers[i];
      uint256 amount = values[i];

      transfer(receiver, amount);
      airDropHistory[receiver] += amount;

      emit AirDrop(receiver, amount);
    }
  }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[{"name":"_value","type":"uint256"}],"name":"afterTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"initialSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"mint","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_target","type":"address"}],"name":"unfreeze","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_holder","type":"address"},{"name":"_idx","type":"uint256"}],"name":"lockState","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_holder","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_holder","type":"address"},{"name":"i","type":"uint256"}],"name":"unlock","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_holder","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_afterTime","type":"uint256"}],"name":"lockAfter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_target","type":"address"}],"name":"freeze","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_afterTime","type":"uint256"}],"name":"transferWithLockAfter","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_who","type":"address"},{"name":"_value","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"receivers","type":"address[]"},{"name":"values","type":"uint256[]"}],"name":"dropToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"airDropHistory","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"currentTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_releaseTime","type":"uint256"}],"name":"transferWithLock","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_holder","type":"address"}],"name":"lockCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_holder","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_releaseTime","type":"uint256"}],"name":"lock","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_target","type":"address"}],"name":"isFrozen","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"target","type":"address"}],"name":"Frozen","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"target","type":"address"}],"name":"Unfrozen","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"burner","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"holder","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"releaseTime","type":"uint256"}],"name":"Lock","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"holder","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Unlock","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_receiver","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"}],"name":"AirDrop","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"}]

60806040526000600360146101000a81548160ff0219169083151502179055503480156200002c57600080fd5b506200005233601260ff16600a0a64012a05f200026200009960201b62003d8d1760201c565b33600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620002ec565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200013d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b62000159816002546200026360201b62003d051790919060201c565b600281905550620001b7816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200026360201b62003d051790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600080828401905083811015620002e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b61470980620002fc6000396000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c80638a57af6b1161011a578063c77828d0116100ad578063de6baccb1161007c578063de6baccb14610ba8578063df03458614610c18578063e2ab691d14610c70578063e583983614610cc8578063f2fde38b14610d2457610206565b8063c77828d01461096e578063ccd28a4c14610aba578063d18e81b314610b12578063dd62ed3e14610b3057610206565b806395d89b41116100e957806395d89b41146107d15780639dc29fac14610854578063a457c2d7146108a2578063a9059cbb1461090857610206565b80638a57af6b1461067b5780638d1fdf2f146106d35780638da5cb5b14610717578063927a4a7b1461076157610206565b80633f4ba83a1161019d5780635c975abb1161016c5780635c975abb1461059f57806370a08231146105c1578063715018a6146106195780637eee288d146106235780638456cb591461067157610206565b80633f4ba83a1461048257806340c10f191461048c57806345c8b1a6146104f257806346cf1bb51461053657610206565b806323b872dd116101d957806323b872dd14610354578063313ce567146103da578063378dc3dc146103fe578063395093511461041c57610206565b806304859ceb1461020b57806306fdde031461024d578063095ea7b3146102d057806318160ddd14610336575b600080fd5b6102376004803603602081101561022157600080fd5b8101908080359060200190929190505050610d68565b6040518082815260200191505060405180910390f35b610255610d74565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561029557808201518184015260208101905061027a565b50505050905090810190601f1680156102c25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61031c600480360360408110156102e657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610dad565b604051808215151515815260200191505060405180910390f35b61033e610dc4565b6040518082815260200191505060405180910390f35b6103c06004803603606081101561036a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610dce565b604051808215151515815260200191505060405180910390f35b6103e2610f30565b604051808260ff1660ff16815260200191505060405180910390f35b610406610f35565b6040518082815260200191505060405180910390f35b6104686004803603604081101561043257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f47565b604051808215151515815260200191505060405180910390f35b61048a610fec565b005b6104d8600480360360408110156104a257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061117a565b604051808215151515815260200191505060405180910390f35b6105346004803603602081101561050857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112a1565b005b6105826004803603604081101561054c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611422565b604051808381526020018281526020019250505060405180910390f35b6105a76114e8565b604051808215151515815260200191505060405180910390f35b610603600480360360208110156105d757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114fb565b6040518082815260200191505060405180910390f35b6106216115f3565b005b61066f6004803603604081101561063957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061175f565b005b610679611c81565b005b6106d16004803603606081101561069157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050611e10565b005b610715600480360360208110156106e957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506120d9565b005b61071f61225a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6107b76004803603606081101561077757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050612280565b604051808215151515815260200191505060405180910390f35b6107d96126e1565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156108195780820151818401526020810190506107fe565b50505050905090810190601f1680156108465780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6108a06004803603604081101561086a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061271a565b005b6108ee600480360360408110156108b857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506128b7565b604051808215151515815260200191505060405180910390f35b6109546004803603604081101561091e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061295c565b604051808215151515815260200191505060405180910390f35b610ab86004803603604081101561098457600080fd5b81019080803590602001906401000000008111156109a157600080fd5b8201836020820111156109b357600080fd5b803590602001918460208302840111640100000000831117156109d557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610a3557600080fd5b820183602082011115610a4757600080fd5b80359060200191846020830284011164010000000083111715610a6957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050612abc565b005b610afc60048036036020811015610ad057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612cb2565b6040518082815260200191505060405180910390f35b610b1a612cca565b6040518082815260200191505060405180910390f35b610b9260048036036040811015610b4657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612cd2565b6040518082815260200191505060405180910390f35b610bfe60048036036060811015610bbe57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050612d59565b604051808215151515815260200191505060405180910390f35b610c5a60048036036020811015610c2e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506131b6565b6040518082815260200191505060405180910390f35b610cc660048036036060811015610c8657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050613202565b005b610d0a60048036036020811015610cde57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506134c7565b604051808215151515815260200191505060405180910390f35b610d6660048036036020811015610d3a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061351d565b005b60008142019050919050565b6040518060400160405280600381526020017f453250000000000000000000000000000000000000000000000000000000000081525081565b6000610dba3384846135ec565b6001905092915050565b6000600254905090565b6000600360149054906101000a900460ff1615610e53576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f506175736564206279206f776e6572000000000000000000000000000000000081525060200191505060405180910390fd5b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610f13576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f46726f6d206163636f756e74206973206c6f636b65642e00000000000000000081525060200191505060405180910390fd5b610f1c846137e3565b610f27848484613c54565b90509392505050565b601281565b601260ff16600a0a64012a05f2000281565b6000610fe23384610fdd85600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d0590919063ffffffff16565b6135ec565b6001905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600360149054906101000a900460ff16611131576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420706175736564206e6f7700000000000000000000000000000000000081525060200191505060405180910390fd5b6000600360146101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461123f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6112498383613d8d565b8273ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885836040518082815260200191505060405180910390a26001905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611364576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f4feb53e305297ab8fb8f3420c95ea04737addc254a7270d8fc4605d2b9c61dba81604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b600080600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020838154811061146f57fe5b906000526020600020906002020160000154600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002084815481106114cb57fe5b906000526020600020906002020160010154915091509250929050565b600360149054906101000a900460ff1681565b6000806000905060008090505b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490508110156115cf576115c0600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061159f57fe5b90600052602060002090600202016001015483613d0590919063ffffffff16565b91508080600101915050611508565b506115eb816115dd85613f48565b613d0590919063ffffffff16565b915050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a26000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611822576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905081106118d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4e6f206c6f636b20696e666f726d6174696f6e2e00000000000000000000000081525060200191505060405180910390fd5b611985600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061192657fe5b9060005260206000209060020201600101546000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d0590919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167f6381d9813cabeb57471b5a7e05078e64845ccdb563146a6911d536f24ce960f1600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208381548110611a4957fe5b9060005260206000209060020201600101546040518082815260200191505060405180910390a26000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110611abc57fe5b9060005260206000209060020201600101819055506001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050038114611c2a57600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490500381548110611bac57fe5b9060005260206000209060020201600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110611c0457fe5b906000526020600020906002020160008201548160000155600182015481600101559050505b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480919060019003611c7c91906145cd565b505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d44576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600360149054906101000a900460ff1615611dc7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f506175736564206279206f776e6572000000000000000000000000000000000081525060200191505060405180910390fd5b6001600360146101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ed3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b81611edd84613f48565b1015611f51576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f42616c616e636520697320746f6f20736d616c6c2e000000000000000000000081525060200191505060405180910390fd5b611fa2826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613f9090919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180604001604052808342018152602001848152509080600181540180825580915050906001820390600052602060002090600202016000909192909190915060008201518160000155602082015181600101555050508273ffffffffffffffffffffffffffffffffffffffff167f49eaf4942f1237055eb4cfa5f31c9dfe50d5b4ade01e021f7de8be2fbbde557b83834201604051808381526020018281526020019250505060405180910390a2505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461219c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f8a5c4736a33c7b7f29a2c34ea9ff9608afc5718d56f6fd6dcbd2d3711a1a491381604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612345576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156123e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f77726f6e6720616464726573730000000000000000000000000000000000000081525060200191505060405180910390fd5b612413600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613f48565b831115612488576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4e6f7420656e6f7567682062616c616e6365000000000000000000000000000081525060200191505060405180910390fd5b6124fb83600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613f9090919063ffffffff16565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180604001604052808442018152602001858152509080600181540180825580915050906001820390600052602060002090600202016000909192909190915060008201518160000155602082015181600101555050508373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a38373ffffffffffffffffffffffffffffffffffffffff167f49eaf4942f1237055eb4cfa5f31c9dfe50d5b4ade01e021f7de8be2fbbde557b84844201604051808381526020018281526020019250505060405180910390a2600190509392505050565b6040518060400160405280600381526020017f453250000000000000000000000000000000000000000000000000000000000081525081565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146127dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6127e682613f48565b81111561285b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f42616c616e636520697320746f6f20736d616c6c2e000000000000000000000081525060200191505060405180910390fd5b6128658282614019565b8173ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5826040518082815260200191505060405180910390a25050565b6000612952338461294d85600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613f9090919063ffffffff16565b6135ec565b6001905092915050565b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612a1e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f53656e646572206163636f756e74206973206c6f636b65642e0000000000000081525060200191505060405180910390fd5b600360149054906101000a900460ff1615612aa1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f506175736564206279206f776e6572000000000000000000000000000000000081525060200191505060405180910390fd5b612aaa336137e3565b612ab483836141b7565b905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612b7f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600082511415612b8e57600080fd5b8051825114612b9c57600080fd5b60008090505b8251811015612cad576000838281518110612bb957fe5b602002602001015190506000838381518110612bd157fe5b60200260200101519050612be5828261295c565b5080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055507f2a2f3a6f457f222229acc6b14376a5d3f4344fae935675150a096e2f1056bd988282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a150508080600101915050612ba2565b505050565b60066020528060005260406000206000915090505481565b600042905090565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612e1e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612ec1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f77726f6e6720616464726573730000000000000000000000000000000000000081525060200191505060405180910390fd5b612eec600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613f48565b831115612f61576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4e6f7420656e6f7567682062616c616e6365000000000000000000000000000081525060200191505060405180910390fd5b612fd483600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613f9090919063ffffffff16565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405280848152602001858152509080600181540180825580915050906001820390600052602060002090600202016000909192909190915060008201518160000155602082015181600101555050508373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a38373ffffffffffffffffffffffffffffffffffffffff167f49eaf4942f1237055eb4cfa5f31c9dfe50d5b4ade01e021f7de8be2fbbde557b8484604051808381526020018281526020019250505060405180910390a2600190509392505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146132c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b816132cf84613f48565b1015613343576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f42616c616e636520697320746f6f20736d616c6c2e000000000000000000000081525060200191505060405180910390fd5b613394826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613f9090919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405280838152602001848152509080600181540180825580915050906001820390600052602060002090600202016000909192909190915060008201518160000155602082015181600101555050508273ffffffffffffffffffffffffffffffffffffffff167f49eaf4942f1237055eb4cfa5f31c9dfe50d5b4ade01e021f7de8be2fbbde557b8383604051808381526020018281526020019250505060405180910390a2505050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146135e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6135e9816141ce565b50565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613672576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806146ba6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156136f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806146526022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b60008090505b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050811015613c505742600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061387e57fe5b90600052602060002090600202016000015411613c4357613941600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106138e257fe5b9060005260206000209060020201600101546000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d0590919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167f6381d9813cabeb57471b5a7e05078e64845ccdb563146a6911d536f24ce960f1600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208381548110613a0557fe5b9060005260206000209060020201600101546040518082815260200191505060405180910390a26000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110613a7857fe5b9060005260206000209060020201600101819055506001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050038114613bef57600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490500381548110613b6857fe5b9060005260206000209060020201600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110613bc057fe5b906000526020600020906002020160008201548160000155600182015481600101559050508080600190039150505b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480919060019003613c4191906145cd565b505b80806001019150506137e9565b5050565b6000613c61848484614331565b613cfa8433613cf585600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613f9090919063ffffffff16565b6135ec565b600190509392505050565b600080828401905083811015613d83576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613e30576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b613e4581600254613d0590919063ffffffff16565b600281905550613e9c816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d0590919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600082821115614008576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b600082840390508091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561409f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806146746021913960400191505060405180910390fd5b6140b481600254613f9090919063ffffffff16565b60028190555061410b816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613f9090919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60006141c4338484614331565b6001905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415614271576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f416c7265616479206f776e65720000000000000000000000000000000000000081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156143b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806146956025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561443d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061462f6023913960400191505060405180910390fd5b61448e816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613f9090919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614521816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d0590919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b8154818355818111156145fa576002028160020283600052602060002091820191016145f991906145ff565b5b505050565b61462b91905b8082111561462757600080820160009055600182016000905550600201614605565b5090565b9056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a165627a7a72305820cc6f5338d273867501993a8b8686b86d76439a0be52b24742dc43a8c02e9175c0029

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106102065760003560e01c80638a57af6b1161011a578063c77828d0116100ad578063de6baccb1161007c578063de6baccb14610ba8578063df03458614610c18578063e2ab691d14610c70578063e583983614610cc8578063f2fde38b14610d2457610206565b8063c77828d01461096e578063ccd28a4c14610aba578063d18e81b314610b12578063dd62ed3e14610b3057610206565b806395d89b41116100e957806395d89b41146107d15780639dc29fac14610854578063a457c2d7146108a2578063a9059cbb1461090857610206565b80638a57af6b1461067b5780638d1fdf2f146106d35780638da5cb5b14610717578063927a4a7b1461076157610206565b80633f4ba83a1161019d5780635c975abb1161016c5780635c975abb1461059f57806370a08231146105c1578063715018a6146106195780637eee288d146106235780638456cb591461067157610206565b80633f4ba83a1461048257806340c10f191461048c57806345c8b1a6146104f257806346cf1bb51461053657610206565b806323b872dd116101d957806323b872dd14610354578063313ce567146103da578063378dc3dc146103fe578063395093511461041c57610206565b806304859ceb1461020b57806306fdde031461024d578063095ea7b3146102d057806318160ddd14610336575b600080fd5b6102376004803603602081101561022157600080fd5b8101908080359060200190929190505050610d68565b6040518082815260200191505060405180910390f35b610255610d74565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561029557808201518184015260208101905061027a565b50505050905090810190601f1680156102c25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61031c600480360360408110156102e657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610dad565b604051808215151515815260200191505060405180910390f35b61033e610dc4565b6040518082815260200191505060405180910390f35b6103c06004803603606081101561036a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610dce565b604051808215151515815260200191505060405180910390f35b6103e2610f30565b604051808260ff1660ff16815260200191505060405180910390f35b610406610f35565b6040518082815260200191505060405180910390f35b6104686004803603604081101561043257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f47565b604051808215151515815260200191505060405180910390f35b61048a610fec565b005b6104d8600480360360408110156104a257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061117a565b604051808215151515815260200191505060405180910390f35b6105346004803603602081101561050857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112a1565b005b6105826004803603604081101561054c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611422565b604051808381526020018281526020019250505060405180910390f35b6105a76114e8565b604051808215151515815260200191505060405180910390f35b610603600480360360208110156105d757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114fb565b6040518082815260200191505060405180910390f35b6106216115f3565b005b61066f6004803603604081101561063957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061175f565b005b610679611c81565b005b6106d16004803603606081101561069157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050611e10565b005b610715600480360360208110156106e957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506120d9565b005b61071f61225a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6107b76004803603606081101561077757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050612280565b604051808215151515815260200191505060405180910390f35b6107d96126e1565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156108195780820151818401526020810190506107fe565b50505050905090810190601f1680156108465780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6108a06004803603604081101561086a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061271a565b005b6108ee600480360360408110156108b857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506128b7565b604051808215151515815260200191505060405180910390f35b6109546004803603604081101561091e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061295c565b604051808215151515815260200191505060405180910390f35b610ab86004803603604081101561098457600080fd5b81019080803590602001906401000000008111156109a157600080fd5b8201836020820111156109b357600080fd5b803590602001918460208302840111640100000000831117156109d557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610a3557600080fd5b820183602082011115610a4757600080fd5b80359060200191846020830284011164010000000083111715610a6957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050612abc565b005b610afc60048036036020811015610ad057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612cb2565b6040518082815260200191505060405180910390f35b610b1a612cca565b6040518082815260200191505060405180910390f35b610b9260048036036040811015610b4657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612cd2565b6040518082815260200191505060405180910390f35b610bfe60048036036060811015610bbe57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050612d59565b604051808215151515815260200191505060405180910390f35b610c5a60048036036020811015610c2e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506131b6565b6040518082815260200191505060405180910390f35b610cc660048036036060811015610c8657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050613202565b005b610d0a60048036036020811015610cde57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506134c7565b604051808215151515815260200191505060405180910390f35b610d6660048036036020811015610d3a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061351d565b005b60008142019050919050565b6040518060400160405280600381526020017f453250000000000000000000000000000000000000000000000000000000000081525081565b6000610dba3384846135ec565b6001905092915050565b6000600254905090565b6000600360149054906101000a900460ff1615610e53576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f506175736564206279206f776e6572000000000000000000000000000000000081525060200191505060405180910390fd5b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610f13576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f46726f6d206163636f756e74206973206c6f636b65642e00000000000000000081525060200191505060405180910390fd5b610f1c846137e3565b610f27848484613c54565b90509392505050565b601281565b601260ff16600a0a64012a05f2000281565b6000610fe23384610fdd85600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d0590919063ffffffff16565b6135ec565b6001905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600360149054906101000a900460ff16611131576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420706175736564206e6f7700000000000000000000000000000000000081525060200191505060405180910390fd5b6000600360146101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461123f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6112498383613d8d565b8273ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885836040518082815260200191505060405180910390a26001905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611364576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f4feb53e305297ab8fb8f3420c95ea04737addc254a7270d8fc4605d2b9c61dba81604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b600080600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020838154811061146f57fe5b906000526020600020906002020160000154600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002084815481106114cb57fe5b906000526020600020906002020160010154915091509250929050565b600360149054906101000a900460ff1681565b6000806000905060008090505b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490508110156115cf576115c0600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061159f57fe5b90600052602060002090600202016001015483613d0590919063ffffffff16565b91508080600101915050611508565b506115eb816115dd85613f48565b613d0590919063ffffffff16565b915050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a26000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611822576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905081106118d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4e6f206c6f636b20696e666f726d6174696f6e2e00000000000000000000000081525060200191505060405180910390fd5b611985600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061192657fe5b9060005260206000209060020201600101546000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d0590919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167f6381d9813cabeb57471b5a7e05078e64845ccdb563146a6911d536f24ce960f1600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208381548110611a4957fe5b9060005260206000209060020201600101546040518082815260200191505060405180910390a26000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110611abc57fe5b9060005260206000209060020201600101819055506001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050038114611c2a57600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490500381548110611bac57fe5b9060005260206000209060020201600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110611c0457fe5b906000526020600020906002020160008201548160000155600182015481600101559050505b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480919060019003611c7c91906145cd565b505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d44576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600360149054906101000a900460ff1615611dc7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f506175736564206279206f776e6572000000000000000000000000000000000081525060200191505060405180910390fd5b6001600360146101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ed3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b81611edd84613f48565b1015611f51576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f42616c616e636520697320746f6f20736d616c6c2e000000000000000000000081525060200191505060405180910390fd5b611fa2826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613f9090919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180604001604052808342018152602001848152509080600181540180825580915050906001820390600052602060002090600202016000909192909190915060008201518160000155602082015181600101555050508273ffffffffffffffffffffffffffffffffffffffff167f49eaf4942f1237055eb4cfa5f31c9dfe50d5b4ade01e021f7de8be2fbbde557b83834201604051808381526020018281526020019250505060405180910390a2505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461219c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f8a5c4736a33c7b7f29a2c34ea9ff9608afc5718d56f6fd6dcbd2d3711a1a491381604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612345576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156123e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f77726f6e6720616464726573730000000000000000000000000000000000000081525060200191505060405180910390fd5b612413600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613f48565b831115612488576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4e6f7420656e6f7567682062616c616e6365000000000000000000000000000081525060200191505060405180910390fd5b6124fb83600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613f9090919063ffffffff16565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180604001604052808442018152602001858152509080600181540180825580915050906001820390600052602060002090600202016000909192909190915060008201518160000155602082015181600101555050508373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a38373ffffffffffffffffffffffffffffffffffffffff167f49eaf4942f1237055eb4cfa5f31c9dfe50d5b4ade01e021f7de8be2fbbde557b84844201604051808381526020018281526020019250505060405180910390a2600190509392505050565b6040518060400160405280600381526020017f453250000000000000000000000000000000000000000000000000000000000081525081565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146127dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6127e682613f48565b81111561285b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f42616c616e636520697320746f6f20736d616c6c2e000000000000000000000081525060200191505060405180910390fd5b6128658282614019565b8173ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5826040518082815260200191505060405180910390a25050565b6000612952338461294d85600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613f9090919063ffffffff16565b6135ec565b6001905092915050565b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612a1e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f53656e646572206163636f756e74206973206c6f636b65642e0000000000000081525060200191505060405180910390fd5b600360149054906101000a900460ff1615612aa1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f506175736564206279206f776e6572000000000000000000000000000000000081525060200191505060405180910390fd5b612aaa336137e3565b612ab483836141b7565b905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612b7f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600082511415612b8e57600080fd5b8051825114612b9c57600080fd5b60008090505b8251811015612cad576000838281518110612bb957fe5b602002602001015190506000838381518110612bd157fe5b60200260200101519050612be5828261295c565b5080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055507f2a2f3a6f457f222229acc6b14376a5d3f4344fae935675150a096e2f1056bd988282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a150508080600101915050612ba2565b505050565b60066020528060005260406000206000915090505481565b600042905090565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612e1e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612ec1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f77726f6e6720616464726573730000000000000000000000000000000000000081525060200191505060405180910390fd5b612eec600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613f48565b831115612f61576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4e6f7420656e6f7567682062616c616e6365000000000000000000000000000081525060200191505060405180910390fd5b612fd483600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613f9090919063ffffffff16565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405280848152602001858152509080600181540180825580915050906001820390600052602060002090600202016000909192909190915060008201518160000155602082015181600101555050508373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a38373ffffffffffffffffffffffffffffffffffffffff167f49eaf4942f1237055eb4cfa5f31c9dfe50d5b4ade01e021f7de8be2fbbde557b8484604051808381526020018281526020019250505060405180910390a2600190509392505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146132c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b816132cf84613f48565b1015613343576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f42616c616e636520697320746f6f20736d616c6c2e000000000000000000000081525060200191505060405180910390fd5b613394826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613f9090919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405280838152602001848152509080600181540180825580915050906001820390600052602060002090600202016000909192909190915060008201518160000155602082015181600101555050508273ffffffffffffffffffffffffffffffffffffffff167f49eaf4942f1237055eb4cfa5f31c9dfe50d5b4ade01e021f7de8be2fbbde557b8383604051808381526020018281526020019250505060405180910390a2505050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146135e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f4e6f74206f776e6572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6135e9816141ce565b50565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613672576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806146ba6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156136f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806146526022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b60008090505b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050811015613c505742600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061387e57fe5b90600052602060002090600202016000015411613c4357613941600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106138e257fe5b9060005260206000209060020201600101546000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d0590919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167f6381d9813cabeb57471b5a7e05078e64845ccdb563146a6911d536f24ce960f1600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208381548110613a0557fe5b9060005260206000209060020201600101546040518082815260200191505060405180910390a26000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110613a7857fe5b9060005260206000209060020201600101819055506001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050038114613bef57600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490500381548110613b6857fe5b9060005260206000209060020201600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110613bc057fe5b906000526020600020906002020160008201548160000155600182015481600101559050508080600190039150505b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480919060019003613c4191906145cd565b505b80806001019150506137e9565b5050565b6000613c61848484614331565b613cfa8433613cf585600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613f9090919063ffffffff16565b6135ec565b600190509392505050565b600080828401905083811015613d83576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613e30576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b613e4581600254613d0590919063ffffffff16565b600281905550613e9c816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d0590919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600082821115614008576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b600082840390508091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561409f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806146746021913960400191505060405180910390fd5b6140b481600254613f9090919063ffffffff16565b60028190555061410b816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613f9090919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60006141c4338484614331565b6001905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415614271576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f416c7265616479206f776e65720000000000000000000000000000000000000081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156143b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806146956025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561443d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061462f6023913960400191505060405180910390fd5b61448e816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613f9090919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614521816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d0590919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b8154818355818111156145fa576002028160020283600052602060002091820191016145f991906145ff565b5b505050565b61462b91905b8082111561462757600080820160009055600182016000905550600201614605565b5090565b9056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a165627a7a72305820cc6f5338d273867501993a8b8686b86d76439a0be52b24742dc43a8c02e9175c0029

Deployed Bytecode Sourcemap

14641:9164:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14641:9164:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23121:103;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;23121:103:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14670:35;;;:::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;14670:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9099:148;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9099:148:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8122:91;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18132:317;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18132:317:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14758:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14801:78;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10383:206;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10383:206:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;17127:105;;;:::i;:::-;;18528:227;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18528:227:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;17634:128;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17634:128:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;20490:185;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20490:185:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;16413:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;19352:335;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19352:335:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15591:124;;;:::i;:::-;;21470:516;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;21470:516:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16931:103;;;:::i;:::-;;21071:391;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;21071:391:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17503:123;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17503:123:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;15024:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;22507:516;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;22507:516:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14713:37;;;:::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;14713:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18837:211;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18837:211:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11092:216;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11092:216:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;17882:242;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17882:242:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;23362:440;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;23362:440:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;23362:440:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;23362:440:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;23362:440:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;23362:440:0;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;23362:440:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;23362:440:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;23362:440:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;23362:440:0;;;;;;;;;;;;;;;:::i;:::-;;23247:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;23247:50:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23031:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8818:134;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8818:134:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21994:505;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;21994:505:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;20368:116;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20368:116:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20683:380;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20683:380:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17770:104;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17770:104:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;15885:111;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15885:111:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;23121:103;23177:7;23210:6;23204:3;:12;23197:19;;23121:103;;;:::o;14670:35::-;;;;;;;;;;;;;;;;;;;:::o;9099:148::-;9164:4;9181:36;9190:10;9202:7;9211:5;9181:8;:36::i;:::-;9235:4;9228:11;;9099:148;;;;:::o;8122:91::-;8166:7;8193:12;;8186:19;;8122:91;:::o;18132:317::-;18283:4;16601:6;;;;;;;;;;;16600:7;16592:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18314:7;:14;18322:5;18314:14;;;;;;;;;;;;;;;;;;;;;;;;;18313:15;18305:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18367:18;18379:5;18367:11;:18::i;:::-;18403:38;18422:5;18429:3;18434:6;18403:18;:38::i;:::-;18396:45;;18132:317;;;;;:::o;14758:35::-;14791:2;14758:35;:::o;14801:78::-;14791:2;14861:17;;14855:2;:23;14841:10;:38;14801:78;:::o;10383:206::-;10463:4;10480:79;10489:10;10501:7;10510:48;10547:10;10510:11;:23;10522:10;10510:23;;;;;;;;;;;;;;;:32;10534:7;10510:32;;;;;;;;;;;;;;;;:36;;:48;;;;:::i;:::-;10480:8;:79::i;:::-;10577:4;10570:11;;10383:206;;;;:::o;17127:105::-;15278:5;;;;;;;;;;;15264:19;;:10;:19;;;15256:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16796:6;;;;;;;;;;;16788:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17194:5;17185:6;;:14;;;;;;;;;;;;;;;;;;17215:9;;;;;;;;;;17127:105::o;18528:227::-;18644:4;15278:5;;;;;;;;;;;15264:19;;:10;:19;;;15256:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18666:25;18678:3;18683:7;18666:11;:25::i;:::-;18712:3;18707:18;;;18717:7;18707:18;;;;;;;;;;;;;;;;;;18743:4;18736:11;;18528:227;;;;:::o;17634:128::-;15278:5;;;;;;;;;;;15264:19;;:10;:19;;;15256:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17716:5;17697:7;:16;17705:7;17697:16;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;17737:17;17746:7;17737:17;;;;;;;;;;;;;;;;;;;;;;17634:128;:::o;20490:185::-;20561:7;20570;20598:8;:17;20607:7;20598:17;;;;;;;;;;;;;;;20616:4;20598:23;;;;;;;;;;;;;;;;;;:35;;;20635:8;:17;20644:7;20635:17;;;;;;;;;;;;;;;20653:4;20635:23;;;;;;;;;;;;;;;;;;:31;;;20590:77;;;;20490:185;;;;;:::o;16413:26::-;;;;;;;;;;;;;:::o;19352:335::-;19409:15;19437:21;19461:1;19437:25;;19477:9;19489:1;19477:13;;19473:146;19496:8;:17;19505:7;19496:17;;;;;;;;;;;;;;;:24;;;;19492:1;:28;19473:146;;;19560:47;19578:8;:17;19587:7;19578:17;;;;;;;;;;;;;;;19596:1;19578:20;;;;;;;;;;;;;;;;;;:28;;;19560:13;:17;;:47;;;;:::i;:::-;19544:63;;19523:3;;;;;;;19473:146;;;;19636:43;19665:13;19636:24;19652:7;19636:15;:24::i;:::-;:28;;:43;;;;:::i;:::-;19629:50;;;19352:335;;;:::o;15591:124::-;15278:5;;;;;;;;;;;15264:19;;:10;:19;;;15256:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15672:5;;;;;;;;;;;15653:25;;;;;;;;;;;;15705:1;15689:5;;:18;;;;;;;;;;;;;;;;;;15591:124::o;21470:516::-;15278:5;;;;;;;;;;;15264:19;;:10;:19;;;15256:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21554:8;:17;21563:7;21554:17;;;;;;;;;;;;;;;:24;;;;21550:1;:28;21542:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21637:52;21660:8;:17;21669:7;21660:17;;;;;;;;;;;;;;;21678:1;21660:20;;;;;;;;;;;;;;;;;;:28;;;21637:9;:18;21647:7;21637:18;;;;;;;;;;;;;;;;:22;;:52;;;;:::i;:::-;21616:9;:18;21626:7;21616:18;;;;;;;;;;;;;;;:73;;;;21712:7;21705:45;;;21721:8;:17;21730:7;21721:17;;;;;;;;;;;;;;;21739:1;21721:20;;;;;;;;;;;;;;;;;;:28;;;21705:45;;;;;;;;;;;;;;;;;;21792:1;21761:8;:17;21770:7;21761:17;;;;;;;;;;;;;;;21779:1;21761:20;;;;;;;;;;;;;;;;;;:28;;:32;;;;21842:1;21815:8;:17;21824:7;21815:17;;;;;;;;;;;;;;;:24;;;;:28;21810:1;:33;21806:136;;21883:8;:17;21892:7;21883:17;;;;;;;;;;;;;;;21928:1;21901:8;:17;21910:7;21901:17;;;;;;;;;;;;;;;:24;;;;:28;21883:47;;;;;;;;;;;;;;;;;;21860:8;:17;21869:7;21860:17;;;;;;;;;;;;;;;21878:1;21860:20;;;;;;;;;;;;;;;;;;:70;;;;;;;;;;;;;;;;;;;21806:136;21952:8;:17;21961:7;21952:17;;;;;;;;;;;;;;;:26;;;;;;;;;;;;:::i;:::-;;21470:516;;:::o;16931:103::-;15278:5;;;;;;;;;;;15264:19;;:10;:19;;;15256:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16601:6;;;;;;;;;;;16600:7;16592:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16999:4;16990:6;;:13;;;;;;;;;;;;;;;;;;17019:7;;;;;;;;;;16931:103::o;21071:391::-;15278:5;;;;;;;;;;;15264:19;;:10;:19;;;15256:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21208:7;21180:24;21196:7;21180:15;:24::i;:::-;:35;;21172:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21273:31;21296:7;21273:9;:18;21283:7;21273:18;;;;;;;;;;;;;;;;:22;;:31;;;;:::i;:::-;21252:9;:18;21262:7;21252:18;;;;;;;;;;;;;;;:52;;;;21315:8;:17;21324:7;21315:17;;;;;;;;;;;;;;;21352:35;;;;;;;;21367:10;21361:3;:16;21352:35;;;;21379:7;21352:35;;;21315:83;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;21315:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21419:7;21414:40;;;21428:7;21443:10;21437:3;:16;21414:40;;;;;;;;;;;;;;;;;;;;;;;;21071:391;;;:::o;17503:123::-;15278:5;;;;;;;;;;;15264:19;;:10;:19;;;15256:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17583:4;17564:7;:16;17572:7;17564:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;17603:15;17610:7;17603:15;;;;;;;;;;;;;;;;;;;;;;17503:123;:::o;15024:20::-;;;;;;;;;;;;;:::o;22507:516::-;22613:4;15278:5;;;;;;;;;;;15264:19;;:10;:19;;;15256:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22653:1;22638:17;;:3;:17;;;;22630:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22702:22;22718:5;;;;;;;;;;;22702:15;:22::i;:::-;22692:6;:32;;22684:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22779:28;22800:6;22779:9;:16;22789:5;;;;;;;;;;;22779:16;;;;;;;;;;;;;;;;:20;;:28;;;;:::i;:::-;22760:9;:16;22770:5;;;;;;;;;;;22760:16;;;;;;;;;;;;;;;:47;;;;22818:8;:13;22827:3;22818:13;;;;;;;;;;;;;;;22851:34;;;;;;;;22866:10;22860:3;:16;22851:34;;;;22878:6;22851:34;;;22818:78;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;22818:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22928:3;22912:28;;22921:5;;;;;;;;;;;22912:28;;;22933:6;22912:28;;;;;;;;;;;;;;;;;;22961:3;22956:35;;;22966:6;22980:10;22974:3;:16;22956:35;;;;;;;;;;;;;;;;;;;;;;;;23011:4;23004:11;;22507:516;;;;;:::o;14713:37::-;;;;;;;;;;;;;;;;;;;:::o;18837:211::-;15278:5;;;;;;;;;;;15264:19;;:10;:19;;;15256:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18927:21;18943:4;18927:15;:21::i;:::-;18917:6;:31;;18909:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18987:19;18993:4;18999:6;18987:5;:19::i;:::-;19027:4;19022:18;;;19033:6;19022:18;;;;;;;;;;;;;;;;;;18837:211;;:::o;11092:216::-;11177:4;11194:84;11203:10;11215:7;11224:53;11261:15;11224:11;:23;11236:10;11224:23;;;;;;;;;;;;;;;:32;11248:7;11224:32;;;;;;;;;;;;;;;;:36;;:53;;;;:::i;:::-;11194:8;:84::i;:::-;11296:4;11289:11;;11092:216;;;;:::o;17882:242::-;18026:4;17426:7;:19;17434:10;17426:19;;;;;;;;;;;;;;;;;;;;;;;;;17425:20;17417:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16601:6;;;;;;;;;;;16600:7;16592:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18048:23;18060:10;18048:11;:23::i;:::-;18089:27;18104:3;18109:6;18089:14;:27::i;:::-;18082:34;;17882:242;;;;:::o;23362:440::-;15278:5;;;;;;;;;;;15264:19;;:10;:19;;;15256:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23486:1;23466:9;:16;:21;;23458:30;;;;;;23523:6;:13;23503:9;:16;:33;23495:42;;;;;;23551:9;23563:1;23551:13;;23546:251;23570:9;:16;23566:1;:20;23546:251;;;23602:16;23621:9;23631:1;23621:12;;;;;;;;;;;;;;23602:31;;23642:14;23659:6;23666:1;23659:9;;;;;;;;;;;;;;23642:26;;23679;23688:8;23698:6;23679:8;:26::i;:::-;;23742:6;23714:14;:24;23729:8;23714:24;;;;;;;;;;;;;;;;:34;;;;;;;;;;;23764:25;23772:8;23782:6;23764:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;23546:251;;23588:3;;;;;;;23546:251;;;;23362:440;;:::o;23247:50::-;;;;;;;;;;;;;;;;;:::o;23031:82::-;23075:7;23102:3;23095:10;;23031:82;:::o;8818:134::-;8890:7;8917:11;:18;8929:5;8917:18;;;;;;;;;;;;;;;:27;8936:7;8917:27;;;;;;;;;;;;;;;;8910:34;;8818:134;;;;:::o;21994:505::-;22097:4;15278:5;;;;;;;;;;;15264:19;;:10;:19;;;15256:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22137:1;22122:17;;:3;:17;;;;22114:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22186:22;22202:5;;;;;;;;;;;22186:15;:22::i;:::-;22176:6;:32;;22168:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22263:28;22284:6;22263:9;:16;22273:5;;;;;;;;;;;22263:16;;;;;;;;;;;;;;;;:20;;:28;;;;:::i;:::-;22244:9;:16;22254:5;;;;;;;;;;;22244:16;;;;;;;;;;;;;;;:47;;;;22302:8;:13;22311:3;22302:13;;;;;;;;;;;;;;;22335:30;;;;;;;;22344:12;22335:30;;;;22358:6;22335:30;;;22302:74;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;22302:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22408:3;22392:28;;22401:5;;;;;;;;;;;22392:28;;;22413:6;22392:28;;;;;;;;;;;;;;;;;;22441:3;22436:31;;;22446:6;22454:12;22436:31;;;;;;;;;;;;;;;;;;;;;;;;22487:4;22480:11;;21994:505;;;;;:::o;20368:116::-;20425:7;20452:8;:17;20461:7;20452:17;;;;;;;;;;;;;;;:24;;;;20445:31;;20368:116;;;:::o;20683:380::-;15278:5;;;;;;;;;;;15264:19;;:10;:19;;;15256:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20817:7;20789:24;20805:7;20789:15;:24::i;:::-;:35;;20781:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20882:31;20905:7;20882:9;:18;20892:7;20882:18;;;;;;;;;;;;;;;;:22;;:31;;;;:::i;:::-;20861:9;:18;20871:7;20861:18;;;;;;;;;;;;;;;:52;;;;20924:8;:17;20933:7;20924:17;;;;;;;;;;;;;;;20961:31;;;;;;;;20970:12;20961:31;;;;20984:7;20961:31;;;20924:79;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;20924:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21024:7;21019:36;;;21033:7;21042:12;21019:36;;;;;;;;;;;;;;;;;;;;;;;;20683:380;;;:::o;17770:104::-;17826:4;17850:7;:16;17858:7;17850:16;;;;;;;;;;;;;;;;;;;;;;;;;17843:23;;17770:104;;;:::o;15885:111::-;15278:5;;;;;;;;;;;15264:19;;:10;:19;;;15256:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15959:29;15978:9;15959:18;:29::i;:::-;15885:111;:::o;13894:335::-;14004:1;13987:19;;:5;:19;;;;13979:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14085:1;14066:21;;:7;:21;;;;14058:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14169:5;14139:11;:18;14151:5;14139:18;;;;;;;;;;;;;;;:27;14158:7;14139:27;;;;;;;;;;;;;;;:35;;;;14206:7;14190:31;;14199:5;14190:31;;;14215:5;14190:31;;;;;;;;;;;;;;;;;;13894:335;;;:::o;19695:667::-;19759:9;19771:1;19759:13;;19755:600;19778:8;:17;19787:7;19778:17;;;;;;;;;;;;;;;:24;;;;19774:1;:28;19755:600;;;19866:3;19830:8;:17;19839:7;19830:17;;;;;;;;;;;;;;;19848:1;19830:20;;;;;;;;;;;;;;;;;;:32;;;:39;19826:518;;19911:52;19934:8;:17;19943:7;19934:17;;;;;;;;;;;;;;;19952:1;19934:20;;;;;;;;;;;;;;;;;;:28;;;19911:9;:18;19921:7;19911:18;;;;;;;;;;;;;;;;:22;;:52;;;;:::i;:::-;19890:9;:18;19900:7;19890:18;;;;;;;;;;;;;;;:73;;;;19994:7;19987:45;;;20003:8;:17;20012:7;20003:17;;;;;;;;;;;;;;;20021:1;20003:20;;;;;;;;;;;;;;;;;;:28;;;19987:45;;;;;;;;;;;;;;;;;;20082:1;20051:8;:17;20060:7;20051:17;;;;;;;;;;;;;;;20069:1;20051:20;;;;;;;;;;;;;;;;;;:28;;:32;;;;20140:1;20113:8;:17;20122:7;20113:17;;;;;;;;;;;;;;;:24;;;;:28;20108:1;:33;20104:178;;20189:8;:17;20198:7;20189:17;;;;;;;;;;;;;;;20234:1;20207:8;:17;20216:7;20207:17;;;;;;;;;;;;;;;:24;;;;:28;20189:47;;;;;;;;;;;;;;;;;;20166:8;:17;20175:7;20166:17;;;;;;;;;;;;;;;20184:1;20166:20;;;;;;;;;;;;;;;;;;:70;;;;;;;;;;;;;;;;;;;20259:3;;;;;;;;20104:178;20300:8;:17;20309:7;20300:17;;;;;;;;;;;;;;;:26;;;;;;;;;;;;:::i;:::-;;19826:518;19805:3;;;;;;;19755:600;;;;19695:667;:::o;9718:256::-;9807:4;9824:36;9834:6;9842:9;9853:6;9824:9;:36::i;:::-;9871:73;9880:6;9888:10;9900:43;9936:6;9900:11;:19;9912:6;9900:19;;;;;;;;;;;;;;;:31;9920:10;9900:31;;;;;;;;;;;;;;;;:35;;:43;;;;:::i;:::-;9871:8;:73::i;:::-;9962:4;9955:11;;9718:256;;;;;:::o;3798:181::-;3856:7;3876:9;3892:1;3888;:5;3876:17;;3917:1;3912;:6;;3904:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3970:1;3963:8;;;3798:181;;;;:::o;12508:308::-;12603:1;12584:21;;:7;:21;;;;12576:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12669:24;12686:6;12669:12;;:16;;:24;;;;:::i;:::-;12654:12;:39;;;;12725:30;12748:6;12725:9;:18;12735:7;12725:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;12704:9;:18;12714:7;12704:18;;;;;;;;;;;;;;;:51;;;;12792:7;12771:37;;12788:1;12771:37;;;12801:6;12771:37;;;;;;;;;;;;;;;;;;12508:308;;:::o;8276:110::-;8333:7;8360:9;:18;8370:7;8360:18;;;;;;;;;;;;;;;;8353:25;;8276:110;;;:::o;4254:184::-;4312:7;4345:1;4340;:6;;4332:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4392:9;4408:1;4404;:5;4392:17;;4429:1;4422:8;;;4254:184;;;;:::o;13148:306::-;13242:1;13223:21;;:7;:21;;;;13215:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13310:23;13327:5;13310:12;;:16;;:23;;;;:::i;:::-;13295:12;:38;;;;13365:29;13388:5;13365:9;:18;13375:7;13365:18;;;;;;;;;;;;;;;;:22;;:29;;;;:::i;:::-;13344:9;:18;13354:7;13344:18;;;;;;;;;;;;;;;:50;;;;13436:1;13410:36;;13419:7;13410:36;;;13440:5;13410:36;;;;;;;;;;;;;;;;;;13148:306;;:::o;8599:156::-;8668:4;8685:40;8695:10;8707:9;8718:6;8685:9;:40::i;:::-;8743:4;8736:11;;8599:156;;;;:::o;16139:206::-;16235:1;16214:23;;:9;:23;;;;16206:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16299:9;16271:38;;16292:5;;;;;;;;;;;16271:38;;;;;;;;;;;;16328:9;16320:5;;:17;;;;;;;;;;;;;;;;;;16139:206;:::o;11798:429::-;11914:1;11896:20;;:6;:20;;;;11888:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11998:1;11977:23;;:9;:23;;;;11969:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12073:29;12095:6;12073:9;:17;12083:6;12073:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;12053:9;:17;12063:6;12053:17;;;;;;;;;;;;;;;:49;;;;12136:32;12161:6;12136:9;:20;12146:9;12136:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;12113:9;:20;12123:9;12113:20;;;;;;;;;;;;;;;:55;;;;12201:9;12184:35;;12193:6;12184:35;;;12212:6;12184:35;;;;;;;;;;;;;;;;;;11798:429;;;:::o;14641:9164::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

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