ETH Price: $3,352.17 (-2.83%)
Gas: 2 Gwei

Token

ShareToken (SHR)
 

Overview

Max Total Supply

3,107,667,729.99 SHR

Holders

6,039 ( 0.017%)

Market

Price

$0.00 @ 0.000001 ETH (-8.29%)

Onchain Market Cap

$6,571,960.06

Circulating Supply Market Cap

$5,012,549.41

Other Info

Token Contract (WITH 2 Decimals)

Balance
0 SHR

Value
$0.00
0xed50ed2a616348df090855b339ce516b5a29f68a
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

ShareRing – the global, blockchain powered marketplace that allows users to securely access, connect and pay for sharing goods or services anywhere in the world, at any time.

Market

Volume (24H):$235,376.70
Market Capitalization:$5,012,549.41
Circulating Supply:2,370,272,782.00 SHR
Market Data Source: Coinmarketcap

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
ShareTokenExtended

Compiler Version
v0.6.6+commit.6c089d02

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// File: @openzeppelin/contracts/token/ERC20/IERC20.sol

// SPDX-License-Identifier: MIT

pragma solidity ^0.6.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
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.
     *
     * IMPORTANT: 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: @openzeppelin/contracts/math/SafeMath.sol

// SPDX-License-Identifier: MIT

pragma solidity ^0.6.0;

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

        return c;
    }

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

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

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

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

        return c;
    }

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

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

        return c;
    }

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

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

// File: contracts/newVersion/ERC20TokenExtended.sol

pragma solidity 0.6.6;



contract ERC20TokenExtended is IERC20 {

    using SafeMath for uint256;

    // Total amount of tokens issued

    mapping(address => bool) public migratedBalances;
    mapping(address => mapping( address => bool)) public migratedAllowances;
    uint256 internal totalTokenIssued;
    mapping(address => uint256) internal balances;
    mapping(address => mapping (address => uint256)) internal allowed;
    IERC20 prevContract;

    modifier migrateBalance(address _owner) {
        if ( !migratedBalances[_owner] ) {
            migratedBalances[_owner] = true;
            balances[_owner] = balances[_owner].add(prevContract.balanceOf(_owner));
        }
        _;
    }

    modifier migrateAllowance(address _owner, address _spender) {
        if (!migratedAllowances[_owner][_spender]) {
            migratedAllowances[_owner][_spender] = true;
            allowed[_owner][_spender] = allowed[_owner][_spender].add(
                prevContract.allowance(_owner, _spender)
            );
        }
        _;
    }

    constructor(address _prevContract) public {
        prevContract = IERC20(_prevContract);
    }

    function totalSupply() public virtual override view returns (uint256) {
        return totalTokenIssued;
    }

    /* Get the account balance for an address */
    function balanceOf(address _owner)
    public
    override
    view
    returns (uint256) {

        if (!migratedBalances[_owner]) {
            return prevContract.balanceOf(_owner).add(balances[_owner]);
        }
        return balances[_owner];

    }

    /* Transfer the balance from owner's account to another account */
    function transfer(address _to, uint256 _amount)
        public
        override
        virtual
        migrateBalance(msg.sender)
        migrateBalance(_to)
        returns (bool)
    {

        require(_to != address(0x0));

        // amount sent cannot exceed balance
        require(balances[msg.sender] >= _amount);

        
        // update balances
        balances[msg.sender] = balances[msg.sender].sub(_amount);
        balances[_to]        = balances[_to].add(_amount);

        // log event
        emit Transfer(msg.sender, _to, _amount);
        return true;
    }
    

    /* Allow _spender to withdraw from your account up to _amount */
    function approve(address _spender, uint256 _amount)
        public
        override
        returns (bool)
    {

        require(_spender != address(0x0));

        // update allowed amount
        allowed[msg.sender][_spender] = _amount;

        // log event
        emit Approval(msg.sender, _spender, _amount);
        return true;
    }

    /* Spender of tokens transfers tokens from the owner's balance */
    /* Must be pre-approved by owner */
    function transferFrom(address _from, address _to, uint256 _amount)
        public
        override
        virtual
        migrateAllowance(_from, msg.sender)
        migrateBalance(msg.sender)
        migrateBalance(_from)
        migrateBalance(_to)
        returns (bool)
    {
        
        require(_to != address(0));
        
        // balance checks
        require(balances[_from] >= _amount);
        require(allowed[_from][msg.sender] >= _amount);

        // update balances and allowed amount
        balances[_from]            = balances[_from].sub(_amount);
        allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_amount);
        balances[_to]              = balances[_to].add(_amount);

        // log event
        emit Transfer(_from, _to, _amount);
        return true;
    }

    /* Returns the amount of tokens approved by the owner */
    /* that can be transferred by spender */
    function allowance(address _owner, address _spender)
    public
    override
    view
    returns (uint256) {

        if (!migratedAllowances[_owner][_spender]) {
            return prevContract.allowance(_owner, _spender).add(allowed[_owner][_spender]);
        }
        return allowed[_owner][_spender];

    }
}

// File: @openzeppelin/contracts/GSN/Context.sol

// SPDX-License-Identifier: MIT

pragma solidity ^0.6.0;

/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with GSN meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

// File: @openzeppelin/contracts/access/Ownable.sol

// SPDX-License-Identifier: MIT

pragma solidity ^0.6.0;

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

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

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

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

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

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

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

// File: contracts/newVersion/WhiteListManager.sol

pragma solidity 0.6.6;


contract WhiteListManager is Ownable {

    // The list here will be updated by multiple separate WhiteList contracts
    mapping (address => bool) public list;

    function unset(address addr) public onlyOwner {

        list[addr] = false;
    }

    function unsetMany(address[] memory addrList) public onlyOwner {

        for (uint256 i = 0; i < addrList.length; i++) {
            
            unset(addrList[i]);
        }
    }

    function set(address addr) public onlyOwner {

        list[addr] = true;
    }

    function setMany(address[] memory addrList) public onlyOwner {

        for (uint256 i = 0; i < addrList.length; i++) {
            
            set(addrList[i]);
        }
    }

    function isWhitelisted(address addr) public view returns (bool) {

        return list[addr];
    }
}

// File: contracts/ShareToken.sol

pragma solidity 0.6.6;


abstract contract ShareToken is IERC20{

    mapping(address => bool) public rewardTokenLocked;
    bool public mainSaleTokenLocked = true;
    uint256 public airDropTokenIssuedTotal;
    uint256 public bountyTokenIssuedTotal;

    uint256 public seedAndPresaleTokenIssuedTotal;


    function totalMainSaleTokenIssued() public returns (uint256) {

    }
}

// File: contracts/newVersion/ShareTokenExtended.sol

pragma solidity 0.6.6;




contract ShareTokenExtended is ERC20TokenExtended, WhiteListManager {


    string public constant name = "ShareToken";
    string public constant symbol = "SHR";
    uint8  public constant decimals = 2;
    ShareToken public prevShareToken;

    address public icoContract;

    // Any token amount must be multiplied by this const to reflect decimals
    uint256 constant E2 = 10 ** 2;

    mapping(address => bool) public rewardTokenLocked;
    mapping(address => bool) public migratedRewardTokenLocked;
    bool public mainSaleTokenLocked = true;

    uint256 public constant TOKEN_SUPPLY_MAINSALE_LIMIT = 1000000000 * E2; // 1,000,000,000 tokens (1 billion)
    uint256 public constant TOKEN_SUPPLY_AIRDROP_LIMIT = 6666666667; // 66,666,666.67 tokens (0.066 billion)
    uint256 public constant TOKEN_SUPPLY_BOUNTY_LIMIT = 33333333333; // 333,333,333.33 tokens (0.333 billion)

    uint256 public airDropTokenIssuedTotal;
    uint256 public bountyTokenIssuedTotal;

    uint256 public constant TOKEN_SUPPLY_SEED_LIMIT = 500000000 * E2; // 500,000,000 tokens (0.5 billion)
    uint256 public constant TOKEN_SUPPLY_PRESALE_LIMIT = 2500000000 * E2; // 2,500,000,000.00 tokens (2.5 billion)
    uint256 public constant TOKEN_SUPPLY_SEED_PRESALE_LIMIT = TOKEN_SUPPLY_SEED_LIMIT + TOKEN_SUPPLY_PRESALE_LIMIT;

    uint256 public seedAndPresaleTokenIssuedTotal;

    uint8 private constant PRESALE_EVENT = 0;
    uint8 private constant MAINSALE_EVENT = 1;
    uint8 private constant BOUNTY_EVENT = 2;
    uint8 private constant AIRDROP_EVENT = 3;

    modifier migrateRewardTokenLocked(address _addr) {
        // This requires the legacy ShareToken is completely locked
        // no change made on *rewardTokenLocked* variable
        if (!migratedRewardTokenLocked[_addr]) {
            migratedRewardTokenLocked[_addr] = true;
            rewardTokenLocked[_addr] = prevShareToken.rewardTokenLocked(_addr);
        }
        _;
    }

    //0xee5fe244406f35d9b4ddb488a64d51456630befc
    constructor(address _prevContract)
        public
        ERC20TokenExtended(_prevContract)
    {
        prevShareToken = ShareToken(_prevContract);
        totalTokenIssued = prevShareToken.totalMainSaleTokenIssued();
        airDropTokenIssuedTotal = prevShareToken.airDropTokenIssuedTotal();
        bountyTokenIssuedTotal = prevShareToken.bountyTokenIssuedTotal();
        seedAndPresaleTokenIssuedTotal = prevShareToken.seedAndPresaleTokenIssuedTotal();
        mainSaleTokenLocked = true;
    }

    function unlockMainSaleToken() public onlyOwner {

        mainSaleTokenLocked = false;
    }

    function lockMainSaleToken() public onlyOwner {

        mainSaleTokenLocked = true;
    }

    function unlockRewardToken(address addr) public onlyOwner {
        rewardTokenLocked[addr] = false;
        migratedRewardTokenLocked[addr] = true;
    }

    function unlockRewardTokenMany(address[] memory addrList) public onlyOwner {

        for (uint256 i = 0; i < addrList.length; i++) {

            unlockRewardToken(addrList[i]);
        }
    }

    function lockRewardToken(address addr) public onlyOwner {
        rewardTokenLocked[addr] = true;
        migratedRewardTokenLocked[addr] = true;
    }

    function lockRewardTokenMany(address[] memory addrList) public onlyOwner {

        for (uint256 i = 0; i < addrList.length; i++) {

            lockRewardToken(addrList[i]);
        }
    }

    // Check if a given address is locked. The address can be in the whitelist or in the reward
    function isLocked(address addr)
    public
    view
    returns (bool)
    {
        // Main sale is running, any addr is locked
        if (mainSaleTokenLocked) {
            return true;
        }
        // Main sale is ended and thus any whitelist addr is unlocked
        if (isWhitelisted(addr)) {
            return false;
        }
        // If the addr is in the reward, it must be checked if locked
        // If the addr is not in the reward, it is considered unlocked
        if (!migratedRewardTokenLocked[addr]) {
            return prevShareToken.rewardTokenLocked(addr);
        }
        return rewardTokenLocked[addr];

    }

    function totalSupply() public override view returns (uint256) {

        return totalTokenIssued.add(seedAndPresaleTokenIssuedTotal).add(airDropTokenIssuedTotal).add(bountyTokenIssuedTotal);
    }

    function totalMainSaleTokenIssued() public view returns (uint256) {

        return totalTokenIssued;
    }

    function totalMainSaleTokenLimit() public pure returns (uint256) {

        return TOKEN_SUPPLY_MAINSALE_LIMIT;
    }

    function totalPreSaleTokenIssued() public view returns (uint256) {

        return seedAndPresaleTokenIssuedTotal;
    }

    function transfer(address _to, uint256 _amount)
        public
        override
        migrateRewardTokenLocked(msg.sender)
        migrateRewardTokenLocked(_to)
        returns (bool success)
    {

        require(isLocked(msg.sender) == false);
        require(isLocked(_to) == false);

        return super.transfer(_to, _amount);
    }

    function transferFrom(address _from, address _to, uint256 _amount)
        public
        override
        migrateRewardTokenLocked(msg.sender)
        migrateRewardTokenLocked(_from)
        migrateRewardTokenLocked(_to)
        returns (bool success)
    {

        require(isLocked(_from) == false);
        require(isLocked(_to) == false);

        return super.transferFrom(_from, _to, _amount);
    }

    function setIcoContract(address _icoContract) public onlyOwner {

        // Allow to set the ICO contract only once
        require(icoContract == address(0));
        require(_icoContract != address(0));

        icoContract = _icoContract;
    }

    function sell(address buyer, uint256 tokens) public returns (bool success) {

        require(icoContract != address(0));
        // The sell() method can only be called by the fixedly-set ICO contract
        require(msg.sender == icoContract);
        require(tokens > 0);
        require(buyer != address(0));

        // Only whitelisted address can buy tokens. Otherwise, refund
        require(isWhitelisted(buyer));

        require(totalTokenIssued.add(tokens) <= TOKEN_SUPPLY_MAINSALE_LIMIT);

        // Register tokens issued to the buyer
        balances[buyer] = balances[buyer].add(tokens);

        // Update total amount of tokens issued
        totalTokenIssued = totalTokenIssued.add(tokens);

        emit Transfer(address(MAINSALE_EVENT), buyer, tokens);

        return true;
    }

    function rewardAirdrop(address _to, uint256 _amount) public onlyOwner {

        // this check also ascertains _amount is positive
        require(_amount <= TOKEN_SUPPLY_AIRDROP_LIMIT);

        require(airDropTokenIssuedTotal < TOKEN_SUPPLY_AIRDROP_LIMIT);

        uint256 remainingTokens = TOKEN_SUPPLY_AIRDROP_LIMIT.sub(airDropTokenIssuedTotal);
        if (_amount > remainingTokens) {
            _amount = remainingTokens;
        }

        // Register tokens to the receiver
        balances[_to] = balances[_to].add(_amount);

        // Update total amount of tokens issued
        airDropTokenIssuedTotal = airDropTokenIssuedTotal.add(_amount);

        // Lock the receiver
        migratedRewardTokenLocked[_to] = true;
        rewardTokenLocked[_to] = true;

        emit Transfer(address(AIRDROP_EVENT), _to, _amount);
    }

    function rewardBounty(address _to, uint256 _amount) public onlyOwner {
        // this check also ascertains _amount is positive
        require(_amount <= TOKEN_SUPPLY_BOUNTY_LIMIT);

        require(bountyTokenIssuedTotal < TOKEN_SUPPLY_BOUNTY_LIMIT);

        uint256 remainingTokens = TOKEN_SUPPLY_BOUNTY_LIMIT.sub(bountyTokenIssuedTotal);
        if (_amount > remainingTokens) {
            _amount = remainingTokens;
        }

        // Register tokens to the receiver
        balances[_to] = balances[_to].add(_amount);

        // Update total amount of tokens issued
        bountyTokenIssuedTotal = bountyTokenIssuedTotal.add(_amount);

        // Lock the receiver
        migratedRewardTokenLocked[_to] = true;
        rewardTokenLocked[_to] = true;

        emit Transfer(address(BOUNTY_EVENT), _to, _amount);
    }

    function rewardBountyMany(address[] memory addrList, uint256[] memory amountList) public onlyOwner {

        require(addrList.length == amountList.length);

        for (uint256 i = 0; i < addrList.length; i++) {

            rewardBounty(addrList[i], amountList[i]);
        }
    }

    function rewardAirdropMany(address[] memory addrList, uint256[] memory amountList) public onlyOwner {

        require(addrList.length == amountList.length);

        for (uint256 i = 0; i < addrList.length; i++) {

            rewardAirdrop(addrList[i], amountList[i]);
        }
    }

    function handlePresaleToken(address _to, uint256 _amount) public onlyOwner {

        require(_amount <= TOKEN_SUPPLY_SEED_PRESALE_LIMIT);

        require(seedAndPresaleTokenIssuedTotal < TOKEN_SUPPLY_SEED_PRESALE_LIMIT);

        uint256 remainingTokens = TOKEN_SUPPLY_SEED_PRESALE_LIMIT.sub(seedAndPresaleTokenIssuedTotal);
        require(_amount <= remainingTokens);

        // Register tokens to the receiver
        balances[_to] = balances[_to].add(_amount);

        // Update total amount of tokens issued
        seedAndPresaleTokenIssuedTotal = seedAndPresaleTokenIssuedTotal.add(_amount);

        emit Transfer(address(PRESALE_EVENT), _to, _amount);

        // Also add to whitelist
        set(_to);
    }

    function handlePresaleTokenMany(address[] memory addrList, uint256[] memory amountList) public onlyOwner {

        require(addrList.length == amountList.length);

        for (uint256 i = 0; i < addrList.length; i++) {

            handlePresaleToken(addrList[i], amountList[i]);
        }
    }

    // add a selfdestruct function
    function kill() public onlyOwner {
        selfdestruct(msg.sender);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_prevContract","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"TOKEN_SUPPLY_AIRDROP_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TOKEN_SUPPLY_BOUNTY_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TOKEN_SUPPLY_MAINSALE_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TOKEN_SUPPLY_PRESALE_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TOKEN_SUPPLY_SEED_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TOKEN_SUPPLY_SEED_PRESALE_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"airDropTokenIssuedTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bountyTokenIssuedTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"handlePresaleToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addrList","type":"address[]"},{"internalType":"uint256[]","name":"amountList","type":"uint256[]"}],"name":"handlePresaleTokenMany","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"icoContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"isLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"isWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"kill","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"list","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockMainSaleToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"lockRewardToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addrList","type":"address[]"}],"name":"lockRewardTokenMany","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"mainSaleTokenLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"migratedAllowances","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"migratedBalances","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"migratedRewardTokenLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"prevShareToken","outputs":[{"internalType":"contract ShareToken","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rewardAirdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addrList","type":"address[]"},{"internalType":"uint256[]","name":"amountList","type":"uint256[]"}],"name":"rewardAirdropMany","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rewardBounty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addrList","type":"address[]"},{"internalType":"uint256[]","name":"amountList","type":"uint256[]"}],"name":"rewardBountyMany","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"rewardTokenLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"seedAndPresaleTokenIssuedTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"buyer","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"sell","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"set","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_icoContract","type":"address"}],"name":"setIcoContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addrList","type":"address[]"}],"name":"setMany","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalMainSaleTokenIssued","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalMainSaleTokenLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalPreSaleTokenIssued","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unlockMainSaleToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"unlockRewardToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addrList","type":"address[]"}],"name":"unlockRewardTokenMany","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"unset","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addrList","type":"address[]"}],"name":"unsetMany","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526001600c60006101000a81548160ff0219169083151502179055503480156200002c57600080fd5b50604051620062e6380380620062e6833981810160405260208110156200005257600080fd5b81019080805190602001909291905050508080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506000620000b86200046c60201b60201c565b905080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35080600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663eb8eea156040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156200020357600080fd5b505af115801562000218573d6000803e3d6000fd5b505050506040513d60208110156200022f57600080fd5b8101908080519060200190929190505050600281905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166357f94c826040518163ffffffff1660e01b815260040160206040518083038186803b158015620002af57600080fd5b505afa158015620002c4573d6000803e3d6000fd5b505050506040513d6020811015620002db57600080fd5b8101908080519060200190929190505050600d81905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663088ee7ec6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200035b57600080fd5b505afa15801562000370573d6000803e3d6000fd5b505050506040513d60208110156200038757600080fd5b8101908080519060200190929190505050600e81905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636269420e6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200040757600080fd5b505afa1580156200041c573d6000803e3d6000fd5b505050506040513d60208110156200043357600080fd5b8101908080519060200190929190505050600f819055506001600c60006101000a81548160ff0219169083151502179055505062000474565b600033905090565b615e6280620004846000396000f3fe608060405234801561001057600080fd5b50600436106103275760003560e01c8063715018a6116101b8578063c66e409511610104578063e09678fd116100a2578063e78dd6f11161007c578063e78dd6f114611496578063eb8eea15146114b8578063f2fde38b146114d6578063fc978b991461151a57610327565b8063e09678fd1461124e578063e1a2c44614611292578063e701a6d31461134a57610327565b8063d1206a29116100de578063d1206a2914611048578063d3484c1c14611100578063d86123e11461111e578063dd62ed3e146111d657610327565b8063c66e409514610f34578063c8a90f7614610f7e578063c96a0b2c14610fcc57610327565b8063a0437f6311610171578063aabe7dc41161014b578063aabe7dc414610e58578063b1e834b014610e9c578063bb032a6614610eba578063bf71670814610f1657610327565b8063a0437f6314610d9a578063a78085ef14610de8578063a9059cbb14610df257610327565b8063715018a614610afd578063743521c614610b075780637a9aa4c814610c535780638da5cb5b14610caf57806395d89b4114610cf95780639baeac7814610d7c57610327565b80633af32abf116102775780635266640311610230578063655b36671161020a578063655b366714610a175780636bc6147e14610a355780636c197ff514610a3f57806370a0823114610aa557610327565b8063526664031461099757806357f94c82146109db5780636269420e146109f957610327565b80633af32abf1461081f5780633c7b3d901461087b5780633e857d78146108c957806341c0e1b5146109135780634a4fbeec1461091d5780634b1146ca1461097957610327565b806314b77798116102e45780632801617e116102be5780632801617e146107555780632966d1b91461079957806329d24cbe146107dd578063313ce567146107fb57610327565b806314b77798146105f957806318160ddd146106b157806323b872dd146106cf57610327565b806306fdde031461032c57806307bee472146103af5780630830e833146103cd578063088ee7ec14610429578063095ea7b314610447578063129f80fb146104ad575b600080fd5b610334611576565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610374578082015181840152602081019050610359565b50505050905090810190601f1680156103a15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103b76115af565b6040518082815260200191505060405180910390f35b61040f600480360360208110156103e357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115be565b604051808215151515815260200191505060405180910390f35b6104316115de565b6040518082815260200191505060405180910390f35b6104936004803603604081101561045d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506115e4565b604051808215151515815260200191505060405180910390f35b6105f7600480360360408110156104c357600080fd5b81019080803590602001906401000000008111156104e057600080fd5b8201836020820111156104f257600080fd5b8035906020019184602083028401116401000000008311171561051457600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561057457600080fd5b82018360208201111561058657600080fd5b803590602001918460208302840111640100000000831117156105a857600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929050505061170f565b005b6106af6004803603602081101561060f57600080fd5b810190808035906020019064010000000081111561062c57600080fd5b82018360208201111561063e57600080fd5b8035906020019184602083028401116401000000008311171561066057600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050611838565b005b6106b961193e565b6040518082815260200191505060405180910390f35b61073b600480360360608110156106e557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611984565b604051808215151515815260200191505060405180910390f35b6107976004803603602081101561076b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f60565b005b6107db600480360360208110156107af57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612085565b005b6107e56121aa565b6040518082815260200191505060405180910390f35b6108036121b5565b604051808260ff1660ff16815260200191505060405180910390f35b6108616004803603602081101561083557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506121ba565b604051808215151515815260200191505060405180910390f35b6108c76004803603604081101561089157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612210565b005b6108d16124f7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61091b61251d565b005b61095f6004803603602081101561093357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612600565b604051808215151515815260200191505060405180910390f35b6109816127be565b6040518082815260200191505060405180910390f35b6109d9600480360360208110156109ad57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506127c7565b005b6109e3612944565b6040518082815260200191505060405180910390f35b610a0161294a565b6040518082815260200191505060405180910390f35b610a1f612950565b6040518082815260200191505060405180910390f35b610a3d612959565b005b610a8b60048036036040811015610a5557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612a40565b604051808215151515815260200191505060405180910390f35b610ae760048036036020811015610abb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612c9b565b6040518082815260200191505060405180910390f35b610b05612e67565b005b610c5160048036036040811015610b1d57600080fd5b8101908080359060200190640100000000811115610b3a57600080fd5b820183602082011115610b4c57600080fd5b80359060200191846020830284011164010000000083111715610b6e57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610bce57600080fd5b820183602082011115610be057600080fd5b80359060200191846020830284011164010000000083111715610c0257600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050612ff2565b005b610c9560048036036020811015610c6957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061311b565b604051808215151515815260200191505060405180910390f35b610cb761313b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610d01613165565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610d41578082015181840152602081019050610d26565b50505050905090810190601f168015610d6e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610d8461319e565b6040518082815260200191505060405180910390f35b610de660048036036040811015610db057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506131a9565b005b610df0613490565b005b610e3e60048036036040811015610e0857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613577565b604051808215151515815260200191505060405180910390f35b610e9a60048036036020811015610e6e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613975565b005b610ea4613af2565b6040518082815260200191505060405180910390f35b610efc60048036036020811015610ed057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613afc565b604051808215151515815260200191505060405180910390f35b610f1e613b1c565b6040518082815260200191505060405180910390f35b610f3c613b30565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610fca60048036036040811015610f9457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613b56565b005b61102e60048036036040811015610fe257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613db8565b604051808215151515815260200191505060405180910390f35b6110fe6004803603602081101561105e57600080fd5b810190808035906020019064010000000081111561107b57600080fd5b82018360208201111561108d57600080fd5b803590602001918460208302840111640100000000831117156110af57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050613de7565b005b611108613eed565b6040518082815260200191505060405180910390f35b6111d46004803603602081101561113457600080fd5b810190808035906020019064010000000081111561115157600080fd5b82018360208201111561116357600080fd5b8035906020019184602083028401116401000000008311171561118557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050613ef8565b005b611238600480360360408110156111ec57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613ffe565b6040518082815260200191505060405180910390f35b6112906004803603602081101561126457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506142b7565b005b611348600480360360208110156112a857600080fd5b81019080803590602001906401000000008111156112c557600080fd5b8201836020820111156112d757600080fd5b803590602001918460208302840111640100000000831117156112f957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929050505061445a565b005b6114946004803603604081101561136057600080fd5b810190808035906020019064010000000081111561137d57600080fd5b82018360208201111561138f57600080fd5b803590602001918460208302840111640100000000831117156113b157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561141157600080fd5b82018360208201111561142357600080fd5b8035906020019184602083028401116401000000008311171561144557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050614560565b005b61149e614689565b604051808215151515815260200191505060405180910390f35b6114c061469c565b6040518082815260200191505060405180910390f35b611518600480360360208110156114ec57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506146a6565b005b61155c6004803603602081101561153057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506148b6565b604051808215151515815260200191505060405180910390f35b6040518060400160405280600a81526020017f5368617265546f6b656e0000000000000000000000000000000000000000000081525081565b60006064633b9aca0002905090565b600a6020528060005260406000206000915054906101000a900460ff1681565b600e5481565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561161f57600080fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6117176148d6565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80518251146117e757600080fd5b60008090505b82518110156118335761182683828151811061180557fe5b602002602001015183838151811061181957fe5b6020026020010151612210565b80806001019150506117ed565b505050565b6118406148d6565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611902576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008090505b815181101561193a5761192d82828151811061192057fe5b6020026020010151612085565b8080600101915050611908565b5050565b600061197f600e54611971600d54611963600f546002546148de90919063ffffffff16565b6148de90919063ffffffff16565b6148de90919063ffffffff16565b905090565b600033600b60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611b61576001600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630830e833826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611acf57600080fd5b505afa158015611ae3573d6000803e3d6000fd5b505050506040513d6020811015611af957600080fd5b8101908080519060200190929190505050600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b84600b60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611d3c576001600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630830e833826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611caa57600080fd5b505afa158015611cbe573d6000803e3d6000fd5b505050506040513d6020811015611cd457600080fd5b8101908080519060200190929190505050600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b84600b60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611f17576001600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630830e833826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611e8557600080fd5b505afa158015611e99573d6000803e3d6000fd5b505050506040513d6020811015611eaf57600080fd5b8101908080519060200190929190505050600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b60001515611f2488612600565b151514611f3057600080fd5b60001515611f3d87612600565b151514611f4957600080fd5b611f54878787614966565b93505050509392505050565b611f686148d6565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461202a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61208d6148d6565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461214f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6064631dcd65000281565b600281565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6122186148d6565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b64018d5d42ab8111156122ec57600080fd5b64018d5d42ab600d54106122ff57600080fd5b600061231b600d5464018d5d42ab6156ab90919063ffffffff16565b905080821115612329578091505b61237b82600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148de90919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123d382600d546148de90919063ffffffff16565b600d819055506001600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508273ffffffffffffffffffffffffffffffffffffffff16600360ff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6125256148d6565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16ff5b6000600c60009054906101000a900460ff161561262057600190506127b9565b612629826121ba565b1561263757600090506127b9565b600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661276957600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630830e833836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561272757600080fd5b505afa15801561273b573d6000803e3d6000fd5b505050506040513d602081101561275157600080fd5b810190808051906020019092919050505090506127b9565b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690505b919050565b6407c2d24d5581565b6127cf6148d6565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612891576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600d5481565b600f5481565b64018d5d42ab81565b6129616148d6565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a23576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600c60006101000a81548160ff021916908315150217905550565b60008073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612a9d57600080fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612af757600080fd5b60008211612b0457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612b3e57600080fd5b612b47836121ba565b612b5057600080fd5b6064633b9aca0002612b6d836002546148de90919063ffffffff16565b1115612b7857600080fd5b612bca82600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148de90919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612c22826002546148de90919063ffffffff16565b6002819055508273ffffffffffffffffffffffffffffffffffffffff16600160ff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612e1f57612e18600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612dcf57600080fd5b505afa158015612de3573d6000803e3d6000fd5b505050506040513d6020811015612df957600080fd5b81019080805190602001909291905050506148de90919063ffffffff16565b9050612e62565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b919050565b612e6f6148d6565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612f31576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b612ffa6148d6565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146130bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80518251146130ca57600080fd5b60008090505b8251811015613116576131098382815181106130e857fe5b60200260200101518383815181106130fc57fe5b60200260200101516131a9565b80806001019150506130d0565b505050565b600b6020528060005260406000206000915054906101000a900460ff1681565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6040518060400160405280600381526020017f534852000000000000000000000000000000000000000000000000000000000081525081565b6064639502f9000281565b6131b16148d6565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613273576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6407c2d24d5581111561328557600080fd5b6407c2d24d55600e541061329857600080fd5b60006132b4600e546407c2d24d556156ab90919063ffffffff16565b9050808211156132c2578091505b61331482600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148de90919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061336c82600e546148de90919063ffffffff16565b600e819055506001600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508273ffffffffffffffffffffffffffffffffffffffff16600260ff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3505050565b6134986148d6565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461355a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600c60006101000a81548160ff021916908315150217905550565b600033600b60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613754576001600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630830e833826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156136c257600080fd5b505afa1580156136d6573d6000803e3d6000fd5b505050506040513d60208110156136ec57600080fd5b8101908080519060200190929190505050600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b83600b60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661392f576001600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630830e833826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561389d57600080fd5b505afa1580156138b1573d6000803e3d6000fd5b505050506040513d60208110156138c757600080fd5b8101908080519060200190929190505050600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b6000151561393c33612600565b15151461394857600080fd5b6000151561395586612600565b15151461396157600080fd5b61396b85856156f5565b9250505092915050565b61397d6148d6565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613a3f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600f54905090565b60076020528060005260406000206000915054906101000a900460ff1681565b6064639502f900026064631dcd6500020181565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b613b5e6148d6565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613c20576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6064639502f900026064631dcd65000201811115613c3d57600080fd5b6064639502f900026064631dcd65000201600f5410613c5b57600080fd5b6000613c82600f546064639502f900026064631dcd650002016156ab90919063ffffffff16565b905080821115613c9157600080fd5b613ce382600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148de90919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d3b82600f546148de90919063ffffffff16565b600f819055508273ffffffffffffffffffffffffffffffffffffffff16600060ff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3613db383611f60565b505050565b60016020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b613def6148d6565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613eb1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008090505b8151811015613ee957613edc828281518110613ecf57fe5b6020026020010151613975565b8080600101915050613eb7565b5050565b6064633b9aca000281565b613f006148d6565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613fc2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008090505b8151811015613ffa57613fed828281518110613fe057fe5b6020026020010151611f60565b8080600101915050613fc8565b5050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166142315761422a600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e86866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b1580156141e157600080fd5b505afa1580156141f5573d6000803e3d6000fd5b505050506040513d602081101561420b57600080fd5b81019080805190602001909291905050506148de90919063ffffffff16565b90506142b1565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b92915050565b6142bf6148d6565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614614381576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146143dc57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561441657600080fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6144626148d6565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614614524576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008090505b815181101561455c5761454f82828151811061454257fe5b60200260200101516127c7565b808060010191505061452a565b5050565b6145686148d6565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461462a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b805182511461463857600080fd5b60008090505b82518110156146845761467783828151811061465657fe5b602002602001015183838151811061466a57fe5b6020026020010151613b56565b808060010191505061463e565b505050565b600c60009054906101000a900460ff1681565b6000600254905090565b6146ae6148d6565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614614770576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156147f6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180615e076026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006020528060005260406000206000915054906101000a900460ff1681565b600033905090565b60008082840190508381101561495c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008333600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16614ca95760018060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550614c28600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e84846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015614b6257600080fd5b505afa158015614b76573d6000803e3d6000fd5b505050506040513d6020811015614b8c57600080fd5b8101908080519060200190929190505050600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148de90919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b336000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16614ec05760016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550614e7c600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015614df357600080fd5b505afa158015614e07573d6000803e3d6000fd5b505050506040513d6020811015614e1d57600080fd5b8101908080519060200190929190505050600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148de90919063ffffffff16565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b866000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166150d75760016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550615093600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561500a57600080fd5b505afa15801561501e573d6000803e3d6000fd5b505050506040513d602081101561503457600080fd5b8101908080519060200190929190505050600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148de90919063ffffffff16565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b866000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166152ee5760016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506152aa600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561522157600080fd5b505afa158015615235573d6000803e3d6000fd5b505050506040513d602081101561524b57600080fd5b8101908080519060200190929190505050600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148de90919063ffffffff16565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16141561532857600080fd5b86600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561537457600080fd5b86600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156153fd57600080fd5b61544f87600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546156ab90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061552187600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546156ab90919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506155f387600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148de90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef896040518082815260200191505060405180910390a36001955050505050509392505050565b60006156ed83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250615d46565b905092915050565b6000336000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661590e5760016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506158ca600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561584157600080fd5b505afa158015615855573d6000803e3d6000fd5b505050506040513d602081101561586b57600080fd5b8101908080519060200190929190505050600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148de90919063ffffffff16565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b836000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16615b255760016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550615ae1600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015615a5857600080fd5b505afa158015615a6c573d6000803e3d6000fd5b505050506040513d6020811015615a8257600080fd5b8101908080519060200190929190505050600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148de90919063ffffffff16565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415615b5f57600080fd5b83600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015615bab57600080fd5b615bfd84600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546156ab90919063ffffffff16565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550615c9284600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148de90919063ffffffff16565b600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a360019250505092915050565b6000838311158290615df3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015615db8578082015181840152602081019050615d9d565b50505050905090810190601f168015615de55780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838503905080915050939250505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a264697066735822122006dbeaf6b55c99013da18dd9ca32831748e51edc778acbb3f0e8aa154a69368664736f6c63430006060033000000000000000000000000ee5fe244406f35d9b4ddb488a64d51456630befc

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106103275760003560e01c8063715018a6116101b8578063c66e409511610104578063e09678fd116100a2578063e78dd6f11161007c578063e78dd6f114611496578063eb8eea15146114b8578063f2fde38b146114d6578063fc978b991461151a57610327565b8063e09678fd1461124e578063e1a2c44614611292578063e701a6d31461134a57610327565b8063d1206a29116100de578063d1206a2914611048578063d3484c1c14611100578063d86123e11461111e578063dd62ed3e146111d657610327565b8063c66e409514610f34578063c8a90f7614610f7e578063c96a0b2c14610fcc57610327565b8063a0437f6311610171578063aabe7dc41161014b578063aabe7dc414610e58578063b1e834b014610e9c578063bb032a6614610eba578063bf71670814610f1657610327565b8063a0437f6314610d9a578063a78085ef14610de8578063a9059cbb14610df257610327565b8063715018a614610afd578063743521c614610b075780637a9aa4c814610c535780638da5cb5b14610caf57806395d89b4114610cf95780639baeac7814610d7c57610327565b80633af32abf116102775780635266640311610230578063655b36671161020a578063655b366714610a175780636bc6147e14610a355780636c197ff514610a3f57806370a0823114610aa557610327565b8063526664031461099757806357f94c82146109db5780636269420e146109f957610327565b80633af32abf1461081f5780633c7b3d901461087b5780633e857d78146108c957806341c0e1b5146109135780634a4fbeec1461091d5780634b1146ca1461097957610327565b806314b77798116102e45780632801617e116102be5780632801617e146107555780632966d1b91461079957806329d24cbe146107dd578063313ce567146107fb57610327565b806314b77798146105f957806318160ddd146106b157806323b872dd146106cf57610327565b806306fdde031461032c57806307bee472146103af5780630830e833146103cd578063088ee7ec14610429578063095ea7b314610447578063129f80fb146104ad575b600080fd5b610334611576565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610374578082015181840152602081019050610359565b50505050905090810190601f1680156103a15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103b76115af565b6040518082815260200191505060405180910390f35b61040f600480360360208110156103e357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115be565b604051808215151515815260200191505060405180910390f35b6104316115de565b6040518082815260200191505060405180910390f35b6104936004803603604081101561045d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506115e4565b604051808215151515815260200191505060405180910390f35b6105f7600480360360408110156104c357600080fd5b81019080803590602001906401000000008111156104e057600080fd5b8201836020820111156104f257600080fd5b8035906020019184602083028401116401000000008311171561051457600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561057457600080fd5b82018360208201111561058657600080fd5b803590602001918460208302840111640100000000831117156105a857600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929050505061170f565b005b6106af6004803603602081101561060f57600080fd5b810190808035906020019064010000000081111561062c57600080fd5b82018360208201111561063e57600080fd5b8035906020019184602083028401116401000000008311171561066057600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050611838565b005b6106b961193e565b6040518082815260200191505060405180910390f35b61073b600480360360608110156106e557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611984565b604051808215151515815260200191505060405180910390f35b6107976004803603602081101561076b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f60565b005b6107db600480360360208110156107af57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612085565b005b6107e56121aa565b6040518082815260200191505060405180910390f35b6108036121b5565b604051808260ff1660ff16815260200191505060405180910390f35b6108616004803603602081101561083557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506121ba565b604051808215151515815260200191505060405180910390f35b6108c76004803603604081101561089157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612210565b005b6108d16124f7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61091b61251d565b005b61095f6004803603602081101561093357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612600565b604051808215151515815260200191505060405180910390f35b6109816127be565b6040518082815260200191505060405180910390f35b6109d9600480360360208110156109ad57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506127c7565b005b6109e3612944565b6040518082815260200191505060405180910390f35b610a0161294a565b6040518082815260200191505060405180910390f35b610a1f612950565b6040518082815260200191505060405180910390f35b610a3d612959565b005b610a8b60048036036040811015610a5557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612a40565b604051808215151515815260200191505060405180910390f35b610ae760048036036020811015610abb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612c9b565b6040518082815260200191505060405180910390f35b610b05612e67565b005b610c5160048036036040811015610b1d57600080fd5b8101908080359060200190640100000000811115610b3a57600080fd5b820183602082011115610b4c57600080fd5b80359060200191846020830284011164010000000083111715610b6e57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610bce57600080fd5b820183602082011115610be057600080fd5b80359060200191846020830284011164010000000083111715610c0257600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050612ff2565b005b610c9560048036036020811015610c6957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061311b565b604051808215151515815260200191505060405180910390f35b610cb761313b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610d01613165565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610d41578082015181840152602081019050610d26565b50505050905090810190601f168015610d6e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610d8461319e565b6040518082815260200191505060405180910390f35b610de660048036036040811015610db057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506131a9565b005b610df0613490565b005b610e3e60048036036040811015610e0857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613577565b604051808215151515815260200191505060405180910390f35b610e9a60048036036020811015610e6e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613975565b005b610ea4613af2565b6040518082815260200191505060405180910390f35b610efc60048036036020811015610ed057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613afc565b604051808215151515815260200191505060405180910390f35b610f1e613b1c565b6040518082815260200191505060405180910390f35b610f3c613b30565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610fca60048036036040811015610f9457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613b56565b005b61102e60048036036040811015610fe257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613db8565b604051808215151515815260200191505060405180910390f35b6110fe6004803603602081101561105e57600080fd5b810190808035906020019064010000000081111561107b57600080fd5b82018360208201111561108d57600080fd5b803590602001918460208302840111640100000000831117156110af57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050613de7565b005b611108613eed565b6040518082815260200191505060405180910390f35b6111d46004803603602081101561113457600080fd5b810190808035906020019064010000000081111561115157600080fd5b82018360208201111561116357600080fd5b8035906020019184602083028401116401000000008311171561118557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050613ef8565b005b611238600480360360408110156111ec57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613ffe565b6040518082815260200191505060405180910390f35b6112906004803603602081101561126457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506142b7565b005b611348600480360360208110156112a857600080fd5b81019080803590602001906401000000008111156112c557600080fd5b8201836020820111156112d757600080fd5b803590602001918460208302840111640100000000831117156112f957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929050505061445a565b005b6114946004803603604081101561136057600080fd5b810190808035906020019064010000000081111561137d57600080fd5b82018360208201111561138f57600080fd5b803590602001918460208302840111640100000000831117156113b157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561141157600080fd5b82018360208201111561142357600080fd5b8035906020019184602083028401116401000000008311171561144557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050614560565b005b61149e614689565b604051808215151515815260200191505060405180910390f35b6114c061469c565b6040518082815260200191505060405180910390f35b611518600480360360208110156114ec57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506146a6565b005b61155c6004803603602081101561153057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506148b6565b604051808215151515815260200191505060405180910390f35b6040518060400160405280600a81526020017f5368617265546f6b656e0000000000000000000000000000000000000000000081525081565b60006064633b9aca0002905090565b600a6020528060005260406000206000915054906101000a900460ff1681565b600e5481565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561161f57600080fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6117176148d6565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80518251146117e757600080fd5b60008090505b82518110156118335761182683828151811061180557fe5b602002602001015183838151811061181957fe5b6020026020010151612210565b80806001019150506117ed565b505050565b6118406148d6565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611902576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008090505b815181101561193a5761192d82828151811061192057fe5b6020026020010151612085565b8080600101915050611908565b5050565b600061197f600e54611971600d54611963600f546002546148de90919063ffffffff16565b6148de90919063ffffffff16565b6148de90919063ffffffff16565b905090565b600033600b60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611b61576001600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630830e833826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611acf57600080fd5b505afa158015611ae3573d6000803e3d6000fd5b505050506040513d6020811015611af957600080fd5b8101908080519060200190929190505050600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b84600b60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611d3c576001600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630830e833826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611caa57600080fd5b505afa158015611cbe573d6000803e3d6000fd5b505050506040513d6020811015611cd457600080fd5b8101908080519060200190929190505050600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b84600b60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611f17576001600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630830e833826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611e8557600080fd5b505afa158015611e99573d6000803e3d6000fd5b505050506040513d6020811015611eaf57600080fd5b8101908080519060200190929190505050600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b60001515611f2488612600565b151514611f3057600080fd5b60001515611f3d87612600565b151514611f4957600080fd5b611f54878787614966565b93505050509392505050565b611f686148d6565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461202a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61208d6148d6565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461214f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6064631dcd65000281565b600281565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6122186148d6565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b64018d5d42ab8111156122ec57600080fd5b64018d5d42ab600d54106122ff57600080fd5b600061231b600d5464018d5d42ab6156ab90919063ffffffff16565b905080821115612329578091505b61237b82600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148de90919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123d382600d546148de90919063ffffffff16565b600d819055506001600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508273ffffffffffffffffffffffffffffffffffffffff16600360ff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6125256148d6565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16ff5b6000600c60009054906101000a900460ff161561262057600190506127b9565b612629826121ba565b1561263757600090506127b9565b600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661276957600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630830e833836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561272757600080fd5b505afa15801561273b573d6000803e3d6000fd5b505050506040513d602081101561275157600080fd5b810190808051906020019092919050505090506127b9565b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690505b919050565b6407c2d24d5581565b6127cf6148d6565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612891576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600d5481565b600f5481565b64018d5d42ab81565b6129616148d6565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a23576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600c60006101000a81548160ff021916908315150217905550565b60008073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612a9d57600080fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612af757600080fd5b60008211612b0457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612b3e57600080fd5b612b47836121ba565b612b5057600080fd5b6064633b9aca0002612b6d836002546148de90919063ffffffff16565b1115612b7857600080fd5b612bca82600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148de90919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612c22826002546148de90919063ffffffff16565b6002819055508273ffffffffffffffffffffffffffffffffffffffff16600160ff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612e1f57612e18600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612dcf57600080fd5b505afa158015612de3573d6000803e3d6000fd5b505050506040513d6020811015612df957600080fd5b81019080805190602001909291905050506148de90919063ffffffff16565b9050612e62565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b919050565b612e6f6148d6565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612f31576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b612ffa6148d6565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146130bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80518251146130ca57600080fd5b60008090505b8251811015613116576131098382815181106130e857fe5b60200260200101518383815181106130fc57fe5b60200260200101516131a9565b80806001019150506130d0565b505050565b600b6020528060005260406000206000915054906101000a900460ff1681565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6040518060400160405280600381526020017f534852000000000000000000000000000000000000000000000000000000000081525081565b6064639502f9000281565b6131b16148d6565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613273576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6407c2d24d5581111561328557600080fd5b6407c2d24d55600e541061329857600080fd5b60006132b4600e546407c2d24d556156ab90919063ffffffff16565b9050808211156132c2578091505b61331482600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148de90919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061336c82600e546148de90919063ffffffff16565b600e819055506001600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508273ffffffffffffffffffffffffffffffffffffffff16600260ff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3505050565b6134986148d6565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461355a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600c60006101000a81548160ff021916908315150217905550565b600033600b60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613754576001600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630830e833826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156136c257600080fd5b505afa1580156136d6573d6000803e3d6000fd5b505050506040513d60208110156136ec57600080fd5b8101908080519060200190929190505050600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b83600b60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661392f576001600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630830e833826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561389d57600080fd5b505afa1580156138b1573d6000803e3d6000fd5b505050506040513d60208110156138c757600080fd5b8101908080519060200190929190505050600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b6000151561393c33612600565b15151461394857600080fd5b6000151561395586612600565b15151461396157600080fd5b61396b85856156f5565b9250505092915050565b61397d6148d6565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613a3f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600f54905090565b60076020528060005260406000206000915054906101000a900460ff1681565b6064639502f900026064631dcd6500020181565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b613b5e6148d6565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613c20576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6064639502f900026064631dcd65000201811115613c3d57600080fd5b6064639502f900026064631dcd65000201600f5410613c5b57600080fd5b6000613c82600f546064639502f900026064631dcd650002016156ab90919063ffffffff16565b905080821115613c9157600080fd5b613ce382600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148de90919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d3b82600f546148de90919063ffffffff16565b600f819055508273ffffffffffffffffffffffffffffffffffffffff16600060ff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3613db383611f60565b505050565b60016020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b613def6148d6565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613eb1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008090505b8151811015613ee957613edc828281518110613ecf57fe5b6020026020010151613975565b8080600101915050613eb7565b5050565b6064633b9aca000281565b613f006148d6565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613fc2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008090505b8151811015613ffa57613fed828281518110613fe057fe5b6020026020010151611f60565b8080600101915050613fc8565b5050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166142315761422a600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e86866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b1580156141e157600080fd5b505afa1580156141f5573d6000803e3d6000fd5b505050506040513d602081101561420b57600080fd5b81019080805190602001909291905050506148de90919063ffffffff16565b90506142b1565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b92915050565b6142bf6148d6565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614614381576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146143dc57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561441657600080fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6144626148d6565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614614524576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008090505b815181101561455c5761454f82828151811061454257fe5b60200260200101516127c7565b808060010191505061452a565b5050565b6145686148d6565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461462a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b805182511461463857600080fd5b60008090505b82518110156146845761467783828151811061465657fe5b602002602001015183838151811061466a57fe5b6020026020010151613b56565b808060010191505061463e565b505050565b600c60009054906101000a900460ff1681565b6000600254905090565b6146ae6148d6565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614614770576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156147f6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180615e076026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006020528060005260406000206000915054906101000a900460ff1681565b600033905090565b60008082840190508381101561495c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008333600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16614ca95760018060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550614c28600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e84846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015614b6257600080fd5b505afa158015614b76573d6000803e3d6000fd5b505050506040513d6020811015614b8c57600080fd5b8101908080519060200190929190505050600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148de90919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b336000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16614ec05760016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550614e7c600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015614df357600080fd5b505afa158015614e07573d6000803e3d6000fd5b505050506040513d6020811015614e1d57600080fd5b8101908080519060200190929190505050600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148de90919063ffffffff16565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b866000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166150d75760016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550615093600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561500a57600080fd5b505afa15801561501e573d6000803e3d6000fd5b505050506040513d602081101561503457600080fd5b8101908080519060200190929190505050600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148de90919063ffffffff16565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b866000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166152ee5760016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506152aa600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561522157600080fd5b505afa158015615235573d6000803e3d6000fd5b505050506040513d602081101561524b57600080fd5b8101908080519060200190929190505050600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148de90919063ffffffff16565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16141561532857600080fd5b86600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561537457600080fd5b86600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156153fd57600080fd5b61544f87600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546156ab90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061552187600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546156ab90919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506155f387600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148de90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef896040518082815260200191505060405180910390a36001955050505050509392505050565b60006156ed83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250615d46565b905092915050565b6000336000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661590e5760016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506158ca600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561584157600080fd5b505afa158015615855573d6000803e3d6000fd5b505050506040513d602081101561586b57600080fd5b8101908080519060200190929190505050600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148de90919063ffffffff16565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b836000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16615b255760016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550615ae1600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015615a5857600080fd5b505afa158015615a6c573d6000803e3d6000fd5b505050506040513d6020811015615a8257600080fd5b8101908080519060200190929190505050600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148de90919063ffffffff16565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415615b5f57600080fd5b83600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015615bab57600080fd5b615bfd84600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546156ab90919063ffffffff16565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550615c9284600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148de90919063ffffffff16565b600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a360019250505092915050565b6000838311158290615df3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015615db8578082015181840152602081019050615d9d565b50505050905090810190601f168015615de55780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838503905080915050939250505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a264697066735822122006dbeaf6b55c99013da18dd9ca32831748e51edc778acbb3f0e8aa154a69368664736f6c63430006060033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000ee5fe244406f35d9b4ddb488a64d51456630befc

-----Decoded View---------------
Arg [0] : _prevContract (address): 0xEE5fE244406F35d9B4dDb488a64D51456630beFC

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000ee5fe244406f35d9b4ddb488a64d51456630befc


Deployed Bytecode Sourcemap

17256:10246:0:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;17256:10246:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;17335:42:0;;;:::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;17335:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21849:120;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17662:49;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;17662:49:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;18209:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10705:356;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;10705:356:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;26024:294;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;26024:294:0;;;;;;;;;;27:11:-1;14;11:28;8:2;;;52:1;49;42:12;8:2;26024:294:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;26024:294: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;26024:294: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;;26024:294:0;;;;;;;;;;;;;;;;;27:11:-1;14;11:28;8:2;;;52:1;49;42:12;8:2;26024:294:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;26024:294: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;26024:294: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;;26024:294:0;;;;;;;;;;;;;;;:::i;:::-;;16143:188;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;16143:188:0;;;;;;;;;;27:11:-1;14;11:28;8:2;;;52:1;49;42:12;8:2;16143:188:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;16143:188: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;16143:188: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;;16143:188:0;;;;;;;;;;;;;;;:::i;:::-;;21524:199;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22469:419;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;22469:419:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;16339:82;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;16339:82:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;16050:85;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;16050:85:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;18255:64;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17428:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;16621:102;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;16621:102:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;23991:864;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;23991:864:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17470:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;27423:76;;;:::i;:::-;;20852:664;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;20852:664:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;18051:63;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20389:154;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;20389:154:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;18164:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18597:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17941:63;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19811:96;;;:::i;:::-;;23159:824;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;23159:824:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9670:267;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;9670:267:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15243:148;;;:::i;:::-;;25724:292;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;25724:292:0;;;;;;;;;;27:11:-1;14;11:28;8:2;;;52:1;49;42:12;8:2;25724:292:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;25724:292: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;25724:292: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;;25724:292:0;;;;;;;;;;;;;;;;;27:11:-1;14;11:28;8:2;;;52:1;49;42:12;8:2;25724:292:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;25724:292: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;25724:292: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;;25724:292:0;;;;;;;;;;;;;;;:::i;:::-;;17718:57;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;17718:57:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14601:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;17384: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;17384:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18362:68;;;:::i;:::-;;;;;;;;;;;;;;;;;;;24863:853;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;24863:853:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19915:93;;;:::i;:::-;;22108:353;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;22108:353:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;20016:157;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;20016:157:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;21977:123;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16004:37;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;16004:37:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;18478:110;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17511:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;26326:741;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;26326:741:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8513:71;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;8513:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;20181:200;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;20181:200:0;;;;;;;;;;27:11:-1;14;11:28;8:2;;;52:1;49;42:12;8:2;20181:200:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;20181:200: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;20181:200: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;;20181:200:0;;;;;;;;;;;;;;;:::i;:::-;;17829:69;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16429:184;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;16429:184:0;;;;;;;;;;27:11:-1;14;11:28;8:2;;;52:1;49;42:12;8:2;16429:184:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;16429:184: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;16429:184: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;;16429:184:0;;;;;;;;;;;;;;;:::i;:::-;;12133:325;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;12133:325:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22896:255;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;22896:255:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;20551:196;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;20551:196:0;;;;;;;;;;27:11:-1;14;11:28;8:2;;;52:1;49;42:12;8:2;20551:196:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;20551:196: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;20551:196: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;;20551:196:0;;;;;;;;;;;;;;;:::i;:::-;;27075:304;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;27075:304:0;;;;;;;;;;27:11:-1;14;11:28;8:2;;;52:1;49;42:12;8:2;27075:304:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;27075:304: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;27075:304: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;;27075:304:0;;;;;;;;;;;;;;;;;27:11:-1;14;11:28;8:2;;;52:1;49;42:12;8:2;27075:304:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;27075:304: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;27075:304: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;;27075:304:0;;;;;;;;;;;;;;;:::i;:::-;;17782:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;21731:110;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15546:244;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;15546:244:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;8458:48;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;8458:48:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;17335:42;;;;;;;;;;;;;;;;;;;:::o;21849:120::-;21905:7;17646;17883:10;:15;21927:34;;21849:120;:::o;17662:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;18209:37::-;;;;:::o;10705:356::-;10809:4;10861:3;10841:24;;:8;:24;;;;10833:33;;12:1:-1;9;2:12;10833:33:0;10945:7;10913;:19;10921:10;10913:19;;;;;;;;;;;;;;;:29;10933:8;10913:29;;;;;;;;;;;;;;;:39;;;;11013:8;10992:39;;11001:10;10992:39;;;11023:7;10992:39;;;;;;;;;;;;;;;;;;11049:4;11042:11;;10705:356;;;;:::o;26024:294::-;14823:12;:10;:12::i;:::-;14813:22;;:6;;;;;;;;;;;:22;;;14805:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26164:10:::1;:17;26145:8;:15;:36;26137:45;;12:1:-1;9::::0;2:12:::1;26137:45:0;26200:9;26212:1:::0;26200:13:::1;;26195:116;26219:8;:15;26215:1;:19;26195:116;;;26258:41;26272:8;26281:1;26272:11;;;;;;;;;;;;;;26285:10;26296:1;26285:13;;;;;;;;;;;;;;26258;:41::i;:::-;26236:3;;;;;;;26195:116;;;;26024:294:::0;;:::o;16143:188::-;14823:12;:10;:12::i;:::-;14813:22;;:6;;;;;;;;;;;:22;;;14805:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16224:9:::1;16236:1:::0;16224:13:::1;;16219:105;16243:8;:15;16239:1;:19;16219:105;;;16294:18;16300:8;16309:1;16300:11;;;;;;;;;;;;;;16294:5;:18::i;:::-;16260:3;;;;;;;16219:105;;;;16143:188:::0;:::o;21524:199::-;21577:7;21606:109;21692:22;;21606:81;21663:23;;21606:52;21627:30;;21606:16;;:20;;:52;;;;:::i;:::-;:56;;:81;;;;:::i;:::-;:85;;:109;;;;:::i;:::-;21599:116;;21524:199;:::o;22469:419::-;22714:12;22604:10;19034:25;:32;19060:5;19034:32;;;;;;;;;;;;;;;;;;;;;;;;;19029:186;;19118:4;19083:25;:32;19109:5;19083:32;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;19164:14;;;;;;;;;;;:32;;;19197:5;19164:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;19164:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19164:39:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;19164:39:0;;;;;;;;;;;;;;;;19137:17;:24;19155:5;19137:24;;;;;;;;;;;;;;;;:66;;;;;;;;;;;;;;;;;;19029:186;22650:5:::1;19034:25;:32;19060:5;19034:32;;;;;;;;;;;;;;;;;;;;;;;;;19029:186;;19118:4;19083:25;:32;19109:5;19083:32;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;19164:14;;;;;;;;;;;:32;;;19197:5;19164:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;19164:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;19164:39:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;19164:39:0;;;;;;;;;;;;;;;;19137:17;:24;19155:5;19137:24;;;;;;;;;;;;;;;;:66;;;;;;;;;;;;;;;;;;19029:186;22691:3:::2;19034:25;:32;19060:5;19034:32;;;;;;;;;;;;;;;;;;;;;;;;;19029:186;;19118:4;19083:25;:32;19109:5;19083:32;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;19164:14;;;;;;;;;;;:32;;;19197:5;19164:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::2;2:2;19164:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::2;77:16;74:1;67:27;5:2;19164:39:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::2;4:2;19164:39:0;;;;;;;;;;;;;;;;19137:17;:24;19155:5;19137:24;;;;;;;;;;;;;;;;:66;;;;;;;;;;;;;;;;;;19029:186;22773:5:::3;22754:24;;:15;22763:5;22754:8;:15::i;:::-;:24;;;22746:33;;12:1:-1;9::::0;2:12:::3;22746:33:0;22815:5;22798:22;;:13;22807:3;22798:8;:13::i;:::-;:22;;;22790:31;;12:1:-1;9::::0;2:12:::3;22790:31:0;22841:39;22860:5;22867:3;22872:7;22841:18;:39::i;:::-;22834:46;;19225:1:::2;::::1;22469:419:::0;;;;;;:::o;16339:82::-;14823:12;:10;:12::i;:::-;14813:22;;:6;;;;;;;;;;;:22;;;14805:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16409:4:::1;16396;:10;16401:4;16396:10;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;16339:82:::0;:::o;16050:85::-;14823:12;:10;:12::i;:::-;14813:22;;:6;;;;;;;;;;;:22;;;14805:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16122:5:::1;16109:4;:10;16114:4;16109:10;;;;;;;;;;;;;;;;:18;;;;;;;;;;;;;;;;;;16050:85:::0;:::o;18255:64::-;17646:7;18305:9;:14;18255:64;:::o;17428:35::-;17462:1;17428:35;:::o;16621:102::-;16679:4;16705;:10;16710:4;16705:10;;;;;;;;;;;;;;;;;;;;;;;;;16698:17;;16621:102;;;:::o;23991:864::-;14823:12;:10;:12::i;:::-;14813:22;;:6;;;;;;;;;;;:22;;;14805:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17994:10:::1;24141:7;:37;;24133:46;;12:1:-1;9::::0;2:12:::1;24133:46:0;17994:10;24200:23;;:52;24192:61;;12:1:-1;9::::0;2:12:::1;24192:61:0;24266:23;24292:55;24323:23;;17994:10;24292:30;;:55;;;;:::i;:::-;24266:81;;24372:15;24362:7;:25;24358:83;;;24414:15;24404:25;;24358:83;24513:26;24531:7;24513:8;:13;24522:3;24513:13;;;;;;;;;;;;;;;;:17;;:26;;;;:::i;:::-;24497:8;:13;24506:3;24497:13;;;;;;;;;;;;;;;:42;;;;24627:36;24655:7;24627:23;;:27;;:36;;;;:::i;:::-;24601:23;:62;;;;24739:4;24706:25;:30;24732:3;24706:30;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;24779:4;24754:17;:22;24772:3;24754:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;24834:3;24801:46;;18831:1;24810:22;;24801:46;;;24839:7;24801:46;;;;;;;;;;;;;;;;;;14883:1;23991:864:::0;;:::o;17470:32::-;;;;;;;;;;;;;:::o;27423:76::-;14823:12;:10;:12::i;:::-;14813:22;;:6;;;;;;;;;;;:22;;;14805:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27480:10:::1;27467:24;;;20852:664:::0;20920:4;20999:19;;;;;;;;;;;20995:63;;;21042:4;21035:11;;;;20995:63;21143:19;21157:4;21143:13;:19::i;:::-;21139:64;;;21186:5;21179:12;;;;21139:64;21361:25;:31;21387:4;21361:31;;;;;;;;;;;;;;;;;;;;;;;;;21356:110;;21416:14;;;;;;;;;;;:32;;;21449:4;21416:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;21416:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21416:38:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;21416:38:0;;;;;;;;;;;;;;;;21409:45;;;;21356:110;21483:17;:23;21501:4;21483:23;;;;;;;;;;;;;;;;;;;;;;;;;21476:30;;20852:664;;;;:::o;18051:63::-;18103:11;18051:63;:::o;20389:154::-;14823:12;:10;:12::i;:::-;14813:22;;:6;;;;;;;;;;;:22;;;14805:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20482:4:::1;20456:17;:23;20474:4;20456:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;20531:4;20497:25;:31;20523:4;20497:31;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;20389:154:::0;:::o;18164:38::-;;;;:::o;18597:45::-;;;;:::o;17941:63::-;17994:10;17941:63;:::o;19811:96::-;14823:12;:10;:12::i;:::-;14813:22;;:6;;;;;;;;;;;:22;;;14805:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19894:5:::1;19872:19;;:27;;;;;;;;;;;;;;;;;;19811:96::o:0;23159:824::-;23220:12;23278:1;23255:25;;:11;;;;;;;;;;;:25;;;;23247:34;;12:1:-1;9;2:12;23247:34:0;23395:11;;;;;;;;;;;23381:25;;:10;:25;;;23373:34;;12:1:-1;9;2:12;23373:34:0;23435:1;23426:6;:10;23418:19;;12:1:-1;9;2:12;23418:19:0;23473:1;23456:19;;:5;:19;;;;23448:28;;12:1:-1;9;2:12;23448:28:0;23568:20;23582:5;23568:13;:20::i;:::-;23560:29;;12:1:-1;9;2:12;23560:29:0;17646:7;17883:10;:15;23610:28;23631:6;23610:16;;:20;;:28;;;;:::i;:::-;:59;;23602:68;;12:1:-1;9;2:12;23602:68:0;23749:27;23769:6;23749:8;:15;23758:5;23749:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;23731:8;:15;23740:5;23731:15;;;;;;;;;;;;;;;:45;;;;23857:28;23878:6;23857:16;;:20;;:28;;;;:::i;:::-;23838:16;:47;;;;23937:5;23903:48;;18738:1;23912:23;;23903:48;;;23944:6;23903:48;;;;;;;;;;;;;;;;;;23971:4;23964:11;;23159:824;;;;:::o;9670:267::-;9755:7;9782:16;:24;9799:6;9782:24;;;;;;;;;;;;;;;;;;;;;;;;;9777:117;;9830:52;9865:8;:16;9874:6;9865:16;;;;;;;;;;;;;;;;9830:12;;;;;;;;;;;:22;;;9853:6;9830:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;9830:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9830:30:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;9830:30:0;;;;;;;;;;;;;;;;:34;;:52;;;;:::i;:::-;9823:59;;;;9777:117;9911:8;:16;9920:6;9911:16;;;;;;;;;;;;;;;;9904:23;;9670:267;;;;:::o;15243:148::-;14823:12;:10;:12::i;:::-;14813:22;;:6;;;;;;;;;;;:22;;;14805:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15350:1:::1;15313:40;;15334:6;;;;;;;;;;;15313:40;;;;;;;;;;;;15381:1;15364:6;;:19;;;;;;;;;;;;;;;;;;15243:148::o:0;25724:292::-;14823:12;:10;:12::i;:::-;14813:22;;:6;;;;;;;;;;;:22;;;14805:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25863:10:::1;:17;25844:8;:15;:36;25836:45;;12:1:-1;9::::0;2:12:::1;25836:45:0;25899:9;25911:1:::0;25899:13:::1;;25894:115;25918:8;:15;25914:1;:19;25894:115;;;25957:40;25970:8;25979:1;25970:11;;;;;;;;;;;;;;25983:10;25994:1;25983:13;;;;;;;;;;;;;;25957:12;:40::i;:::-;25935:3;;;;;;;25894:115;;;;25724:292:::0;;:::o;17718:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;14601:79::-;14639:7;14666:6;;;;;;;;;;;14659:13;;14601:79;:::o;17384:37::-;;;;;;;;;;;;;;;;;;;:::o;18362:68::-;17646:7;18415:10;:15;18362:68;:::o;24863:853::-;14823:12;:10;:12::i;:::-;14813:22;;:6;;;;;;;;;;;:22;;;14805:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18103:11:::1;25010:7;:36;;25002:45;;12:1:-1;9::::0;2:12:::1;25002:45:0;18103:11;25068:22;;:50;25060:59;;12:1:-1;9::::0;2:12:::1;25060:59:0;25132:23;25158:53;25188:22;;18103:11;25158:29;;:53;;;;:::i;:::-;25132:79;;25236:15;25226:7;:25;25222:83;;;25278:15;25268:25;;25222:83;25377:26;25395:7;25377:8;:13;25386:3;25377:13;;;;;;;;;;;;;;;;:17;;:26;;;;:::i;:::-;25361:8;:13;25370:3;25361:13;;;;;;;;;;;;;;;:42;;;;25490:35;25517:7;25490:22;;:26;;:35;;;;:::i;:::-;25465:22;:60;;;;25601:4;25568:25;:30;25594:3;25568:30;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;25641:4;25616:17;:22;25634:3;25616:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;25695:3;25663:45;;18784:1;25672:21;;25663:45;;;25700:7;25663:45;;;;;;;;;;;;;;;;;;14883:1;24863:853:::0;;:::o;19915:93::-;14823:12;:10;:12::i;:::-;14813:22;;:6;;;;;;;;;;;:22;;;14805:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19996:4:::1;19974:19;;:26;;;;;;;;;;;;;;;;;;19915:93::o:0;22108:353::-;22293:12;22224:10;19034:25;:32;19060:5;19034:32;;;;;;;;;;;;;;;;;;;;;;;;;19029:186;;19118:4;19083:25;:32;19109:5;19083:32;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;19164:14;;;;;;;;;;;:32;;;19197:5;19164:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;19164:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19164:39:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;19164:39:0;;;;;;;;;;;;;;;;19137:17;:24;19155:5;19137:24;;;;;;;;;;;;;;;;:66;;;;;;;;;;;;;;;;;;19029:186;22270:3:::1;19034:25;:32;19060:5;19034:32;;;;;;;;;;;;;;;;;;;;;;;;;19029:186;;19118:4;19083:25;:32;19109:5;19083:32;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;19164:14;;;;;;;;;;;:32;;;19197:5;19164:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;19164:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;19164:39:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;19164:39:0;;;;;;;;;;;;;;;;19137:17;:24;19155:5;19137:24;;;;;;;;;;;;;;;;:66;;;;;;;;;;;;;;;;;;19029:186;22357:5:::2;22333:29;;:20;22342:10;22333:8;:20::i;:::-;:29;;;22325:38;;12:1:-1;9::::0;2:12:::2;22325:38:0;22399:5;22382:22;;:13;22391:3;22382:8;:13::i;:::-;:22;;;22374:31;;12:1:-1;9::::0;2:12:::2;22374:31:0;22425:28;22440:3;22445:7;22425:14;:28::i;:::-;22418:35;;19225:1:::1;22108:353:::0;;;;;:::o;20016:157::-;14823:12;:10;:12::i;:::-;14813:22;;:6;;;;;;;;;;;:22;;;14805:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20111:5:::1;20085:17;:23;20103:4;20085:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;20161:4;20127:25;:31;20153:4;20127:31;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;20016:157:::0;:::o;21977:123::-;22033:7;22062:30;;22055:37;;21977:123;:::o;16004:37::-;;;;;;;;;;;;;;;;;;;;;;:::o;18478:110::-;17646:7;18415:10;:15;17646:7;18305:9;:14;18536:52;18478:110;:::o;17511:26::-;;;;;;;;;;;;;:::o;26326:741::-;14823:12;:10;:12::i;:::-;14813:22;;:6;;;;;;;;;;;:22;;;14805:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17646:7:::1;18415:10;:15;17646:7;18305:9;:14;18536:52;26422:7;:42;;26414:51;;12:1:-1;9::::0;2:12:::1;26414:51:0;17646:7;18415:10;:15;17646:7;18305:9;:14;18536:52;26486:30;;:64;26478:73;;12:1:-1;9::::0;2:12:::1;26478:73:0;26564:23;26590:67;26626:30;;17646:7;18415:10;:15;17646:7;18305:9;:14;18536:52;26590:35;;:67;;;;:::i;:::-;26564:93;;26687:15;26676:7;:26;;26668:35;;12:1:-1;9::::0;2:12:::1;26668:35:0;26776:26;26794:7;26776:8;:13;26785:3;26776:13;;;;;;;;;;;;;;;;:17;;:26;;;;:::i;:::-;26760:8;:13;26769:3;26760:13;;;;;;;;;;;;;;;:42;;;;26897:43;26932:7;26897:30;;:34;;:43;;;;:::i;:::-;26864:30;:76;;;;26991:3;26958:46;;18690:1;26967:22;;26958:46;;;26996:7;26958:46;;;;;;;;;;;;;;;;;;27051:8;27055:3;27051;:8::i;:::-;14883:1;26326:741:::0;;:::o;8513:71::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;20181:200::-;14823:12;:10;:12::i;:::-;14813:22;;:6;;;;;;;;;;;:22;;;14805:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20274:9:::1;20286:1:::0;20274:13:::1;;20269:105;20293:8;:15;20289:1;:19;20269:105;;;20332:30;20350:8;20359:1;20350:11;;;;;;;;;;;;;;20332:17;:30::i;:::-;20310:3;;;;;;;20269:105;;;;20181:200:::0;:::o;17829:69::-;17646:7;17883:10;:15;17829:69;:::o;16429:184::-;14823:12;:10;:12::i;:::-;14813:22;;:6;;;;;;;;;;;:22;;;14805:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16508:9:::1;16520:1:::0;16508:13:::1;;16503:103;16527:8;:15;16523:1;:19;16503:103;;;16578:16;16582:8;16591:1;16582:11;;;;;;;;;;;;;;16578:3;:16::i;:::-;16544:3;;;;;;;16503:103;;;;16429:184:::0;:::o;12133:325::-;12236:7;12263:18;:26;12282:6;12263:26;;;;;;;;;;;;;;;:36;12290:8;12263:36;;;;;;;;;;;;;;;;;;;;;;;;;12258:148;;12323:71;12368:7;:15;12376:6;12368:15;;;;;;;;;;;;;;;:25;12384:8;12368:25;;;;;;;;;;;;;;;;12323:12;;;;;;;;;;;:22;;;12346:6;12354:8;12323:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;12323:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12323:40:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;12323:40:0;;;;;;;;;;;;;;;;:44;;:71;;;;:::i;:::-;12316:78;;;;12258:148;12423:7;:15;12431:6;12423:15;;;;;;;;;;;;;;;:25;12439:8;12423:25;;;;;;;;;;;;;;;;12416:32;;12133:325;;;;;:::o;22896:255::-;14823:12;:10;:12::i;:::-;14813:22;;:6;;;;;;;;;;;:22;;;14805:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23055:1:::1;23032:25;;:11;;;;;;;;;;;:25;;;23024:34;;12:1:-1;9::::0;2:12:::1;23024:34:0;23101:1;23077:26;;:12;:26;;;;23069:35;;12:1:-1;9::::0;2:12:::1;23069:35:0;23131:12;23117:11;;:26;;;;;;;;;;;;;;;;;;22896:255:::0;:::o;20551:196::-;14823:12;:10;:12::i;:::-;14813:22;;:6;;;;;;;;;;;:22;;;14805:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20642:9:::1;20654:1:::0;20642:13:::1;;20637:103;20661:8;:15;20657:1;:19;20637:103;;;20700:28;20716:8;20725:1;20716:11;;;;;;;;;;;;;;20700:15;:28::i;:::-;20678:3;;;;;;;20637:103;;;;20551:196:::0;:::o;27075:304::-;14823:12;:10;:12::i;:::-;14813:22;;:6;;;;;;;;;;;:22;;;14805:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27220:10:::1;:17;27201:8;:15;:36;27193:45;;12:1:-1;9::::0;2:12:::1;27193:45:0;27256:9;27268:1:::0;27256:13:::1;;27251:121;27275:8;:15;27271:1;:19;27251:121;;;27314:46;27333:8;27342:1;27333:11;;;;;;;;;;;;;;27346:10;27357:1;27346:13;;;;;;;;;;;;;;27314:18;:46::i;:::-;27292:3;;;;;;;27251:121;;;;27075:304:::0;;:::o;17782:38::-;;;;;;;;;;;;;:::o;21731:110::-;21788:7;21817:16;;21810:23;;21731:110;:::o;15546:244::-;14823:12;:10;:12::i;:::-;14813:22;;:6;;;;;;;;;;;:22;;;14805:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15655:1:::1;15635:22;;:8;:22;;;;15627:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15745:8;15716:38;;15737:6;;;;;;;;;;;15716:38;;;;;;;;;;;;15774:8;15765:6;;:17;;;;;;;;;;;;;;;;;;15546:244:::0;:::o;8458:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;13122:106::-;13175:15;13210:10;13203:17;;13122:106;:::o;3790:181::-;3848:7;3868:9;3884:1;3880;:5;3868:17;;3909:1;3904;:6;;3896:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3962:1;3955:8;;;3790:181;;;;:::o;11181:836::-;11458:4;11325:5;11332:10;9114:18;:26;9133:6;9114:26;;;;;;;;;;;;;;;:36;9141:8;9114:36;;;;;;;;;;;;;;;;;;;;;;;;;9109:259;;9206:4;9167:18;:26;9186:6;9167:26;;;;;;;;;;;;;;;:36;9194:8;9167:36;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;9253:103;9301:12;;;;;;;;;;;:22;;;9324:6;9332:8;9301:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;9301:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9301:40:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;9301:40:0;;;;;;;;;;;;;;;;9253:7;:15;9261:6;9253:15;;;;;;;;;;;;;;;:25;9269:8;9253:25;;;;;;;;;;;;;;;;:29;;:103;;;;:::i;:::-;9225:7;:15;9233:6;9225:15;;;;;;;;;;;;;;;:25;9241:8;9225:25;;;;;;;;;;;;;;;:131;;;;9109:259;11368:10:::1;8840:16;:24:::0;8857:6:::1;8840:24;;;;;;;;;;;;;;;;;;;;;;;;;8834:177;;8909:4;8882:16;:24:::0;8899:6:::1;8882:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;8947:52;8968:12;;;;;;;;;;;:22;;;8991:6;8968:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;8968:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;8968:30:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;8968:30:0;;;;;;;;;;;;;;;;8947:8;:16;8956:6;8947:16;;;;;;;;;;;;;;;;:20;;:52;;;;:::i;:::-;8928:8;:16;8937:6;8928:16;;;;;;;;;;;;;;;:71;;;;8834:177;11404:5:::2;8840:16;:24:::0;8857:6:::2;8840:24;;;;;;;;;;;;;;;;;;;;;;;;;8834:177;;8909:4;8882:16;:24:::0;8899:6:::2;8882:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;8947:52;8968:12;;;;;;;;;;;:22;;;8991:6;8968:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::2;2:2;8968:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::2;77:16;74:1;67:27;5:2;8968:30:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::2;4:2;8968:30:0;;;;;;;;;;;;;;;;8947:8;:16;8956:6;8947:16;;;;;;;;;;;;;;;;:20;;:52;;;;:::i;:::-;8928:8;:16;8937:6;8928:16;;;;;;;;;;;;;;;:71;;;;8834:177;11435:3:::3;8840:16;:24:::0;8857:6:::3;8840:24;;;;;;;;;;;;;;;;;;;;;;;;;8834:177;;8909:4;8882:16;:24:::0;8899:6:::3;8882:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;8947:52;8968:12;;;;;;;;;;;:22;;;8991:6;8968:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::3;2:2;8968:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::3;77:16;74:1;67:27;5:2;8968:30:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::3;4:2;8968:30:0;;;;;;;;;;;;;;;;8947:8;:16;8956:6;8947:16;;;;;;;;;;;;;;;;:20;;:52;;;;:::i;:::-;8928:8;:16;8937:6;8928:16;;;;;;;;;;;;;;;:71;;;;8834:177;11513:1:::4;11498:17;;:3;:17;;;;11490:26;;12:1:-1;9::::0;2:12:::4;11490:26:0;11591:7;11572:8;:15;11581:5;11572:15;;;;;;;;;;;;;;;;:26;;11564:35;;12:1:-1;9::::0;2:12:::4;11564:35:0;11648:7;11618;:14;11626:5;11618:14;;;;;;;;;;;;;;;:26;11633:10;11618:26;;;;;;;;;;;;;;;;:37;;11610:46;;12:1:-1;9::::0;2:12:::4;11610:46:0;11745:28;11765:7;11745:8;:15;11754:5;11745:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;11716:8;:15;11725:5;11716:15;;;;;;;;;;;;;;;:57;;;;11813:39;11844:7;11813;:14;11821:5;11813:14;;;;;;;;;;;;;;;:26;11828:10;11813:26;;;;;;;;;;;;;;;;:30;;:39;;;;:::i;:::-;11784:7;:14;11792:5;11784:14;;;;;;;;;;;;;;;:26;11799:10;11784:26;;;;;;;;;;;;;;;:68;;;;11892:26;11910:7;11892:8;:13;11901:3;11892:13;;;;;;;;;;;;;;;;:17;;:26;;;;:::i;:::-;11863:8;:13;11872:3;11863:13;;;;;;;;;;;;;;;:55;;;;11974:3;11958:29;;11967:5;11958:29;;;11979:7;11958:29;;;;;;;;;;;;;;;;;;12005:4;11998:11;;9021:1:::3;::::2;9378::::1;11181:836:::0;;;;;;;:::o;4254:136::-;4312:7;4339:43;4343:1;4346;4339:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;4332:50;;4254:136;;;;:::o;10017:604::-;10199:4;10140:10;8840:16;:24;8857:6;8840:24;;;;;;;;;;;;;;;;;;;;;;;;;8834:177;;8909:4;8882:16;:24;8899:6;8882:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;8947:52;8968:12;;;;;;;;;;;:22;;;8991:6;8968:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;8968:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8968:30:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;8968:30:0;;;;;;;;;;;;;;;;8947:8;:16;8956:6;8947:16;;;;;;;;;;;;;;;;:20;;:52;;;;:::i;:::-;8928:8;:16;8937:6;8928:16;;;;;;;;;;;;;;;:71;;;;8834:177;10176:3:::1;8840:16;:24:::0;8857:6:::1;8840:24;;;;;;;;;;;;;;;;;;;;;;;;;8834:177;;8909:4;8882:16;:24:::0;8899:6:::1;8882:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;8947:52;8968:12;;;;;;;;;;;:22;;;8991:6;8968:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;8968:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;8968:30:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;8968:30:0;;;;;;;;;;;;;;;;8947:8;:16;8956:6;8947:16;;;;;;;;;;;;;;;;:20;;:52;;;;:::i;:::-;8928:8;:16;8937:6;8928:16;;;;;;;;;;;;;;;:71;;;;8834:177;10246:3:::2;10231:19;;:3;:19;;;;10223:28;;12:1:-1;9::::0;2:12:::2;10223:28:0;10342:7;10318:8;:20;10327:10;10318:20;;;;;;;;;;;;;;;;:31;;10310:40;;12:1:-1;9::::0;2:12:::2;10310:40:0;10424:33;10449:7;10424:8;:20;10433:10;10424:20;;;;;;;;;;;;;;;;:24;;:33;;;;:::i;:::-;10401:8;:20;10410:10;10401:20;;;;;;;;;;;;;;;:56;;;;10491:26;10509:7;10491:8;:13;10500:3;10491:13;;;;;;;;;;;;;;;;:17;;:26;;;;:::i;:::-;10468:8;:13;10477:3;10468:13;;;;;;;;;;;;;;;:49;;;;10578:3;10557:34;;10566:10;10557:34;;;10583:7;10557:34;;;;;;;;;;;;;;;;;;10609:4;10602:11;;9021:1:::1;10017:604:::0;;;;;:::o;4693:192::-;4779:7;4812:1;4807;:6;;4815:12;4799:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4799:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4839:9;4855:1;4851;:5;4839:17;;4876:1;4869:8;;;4693:192;;;;;:::o

Swarm Source

ipfs://06dbeaf6b55c99013da18dd9ca32831748e51edc778acbb3f0e8aa154a693686
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.